summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2020-09-21 09:24:44 -0400
committerJoel Fischer <joeljfischer@gmail.com>2020-09-21 09:24:44 -0400
commit3aeb251a4ed4d1e90e0a9cbe69041d00f0632221 (patch)
tree22c9e28c89b78e447eb602d36b8412c41bfed3b3
parentba06f247c43c1b6d01ac2f81c9dc261fa5e11243 (diff)
parentc70cfcca62ec61938344fd139e6fb7c43763877f (diff)
downloadsdl_ios-3aeb251a4ed4d1e90e0a9cbe69041d00f0632221.tar.gz
Merge branch 'develop'
-rw-r--r--Example Apps/Example ObjC/AlertManager.h24
-rw-r--r--Example Apps/Example ObjC/AlertManager.m43
-rw-r--r--Example Apps/Example ObjC/AudioManager.m5
-rw-r--r--Example Apps/Example ObjC/ButtonManager.h2
-rw-r--r--Example Apps/Example ObjC/ButtonManager.m94
-rw-r--r--Example Apps/Example ObjC/ConnectionTransitionContext.m2
-rw-r--r--Example Apps/Example ObjC/MenuManager.m26
-rw-r--r--Example Apps/Example ObjC/RPCPermissionsManager.m2
-rw-r--r--Example Apps/Example ObjC/SubscribeButtonManager.h (renamed from SmartDeviceLink_Example/SubscribeButtonManager.h)0
-rw-r--r--Example Apps/Example ObjC/SubscribeButtonManager.m68
-rw-r--r--Example Apps/Example ObjC/VehicleDataManager.m23
-rw-r--r--Example Apps/Example Swift/AlertManager.swift60
-rw-r--r--Example Apps/Example Swift/AudioManager.swift13
-rw-r--r--Example Apps/Example Swift/ButtonManager.swift107
-rw-r--r--Example Apps/Example Swift/MenuManager.swift38
-rw-r--r--Example Apps/Example Swift/ProxyManager.swift2
-rw-r--r--Example Apps/Example Swift/SubscribeButtonManager.swift50
-rw-r--r--Example Apps/Example Swift/VehicleDataManager.swift22
-rw-r--r--Example Apps/Shared/AppConstants.h32
-rw-r--r--Example Apps/Shared/AppConstants.m34
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json55
-rw-r--r--Example Apps/Shared/Images.xcassets/AppIcon.appiconset/iTunesArtwork.pngbin0 -> 317272 bytes
-rw-r--r--SmartDeviceLink-iOS.podspec447
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj8810
-rw-r--r--SmartDeviceLink.podspec445
-rw-r--r--SmartDeviceLink/NSMutableDictionary+Store.h41
-rw-r--r--SmartDeviceLink/SDLAddCommand.h161
-rw-r--r--SmartDeviceLink/SDLAddCommand.m150
-rw-r--r--SmartDeviceLink/SDLAddSubMenu.h109
-rw-r--r--SmartDeviceLink/SDLAddSubMenu.m98
-rw-r--r--SmartDeviceLink/SDLAlert.h264
-rw-r--r--SmartDeviceLink/SDLAlert.m179
-rw-r--r--SmartDeviceLink/SDLAmbientLightStatus.h52
-rw-r--r--SmartDeviceLink/SDLAppHMIType.h71
-rw-r--r--SmartDeviceLink/SDLAppHMIType.m18
-rw-r--r--SmartDeviceLink/SDLAppInterfaceUnregisteredReason.h75
-rw-r--r--SmartDeviceLink/SDLAppInterfaceUnregisteredReason.m18
-rw-r--r--SmartDeviceLink/SDLAppServiceManifest.h219
-rw-r--r--SmartDeviceLink/SDLAppServiceManifest.m205
-rw-r--r--SmartDeviceLink/SDLAppServiceType.h29
-rw-r--r--SmartDeviceLink/SDLArtwork.h154
-rw-r--r--SmartDeviceLink/SDLArtwork.m186
-rw-r--r--SmartDeviceLink/SDLAudioControlCapabilities.h111
-rw-r--r--SmartDeviceLink/SDLAudioControlCapabilities.m126
-rwxr-xr-xSmartDeviceLink/SDLAudioStreamManager.m181
-rw-r--r--SmartDeviceLink/SDLAudioStreamingIndicator.h36
-rw-r--r--SmartDeviceLink/SDLAudioStreamingState.h29
-rw-r--r--SmartDeviceLink/SDLAudioType.h18
-rw-r--r--SmartDeviceLink/SDLBitsPerSample.h22
-rw-r--r--SmartDeviceLink/SDLButtonEventMode.h22
-rw-r--r--SmartDeviceLink/SDLButtonName.h286
-rw-r--r--SmartDeviceLink/SDLButtonPress.h79
-rw-r--r--SmartDeviceLink/SDLButtonPress.m99
-rw-r--r--SmartDeviceLink/SDLButtonPressMode.h22
-rw-r--r--SmartDeviceLink/SDLCancelInteraction.h115
-rw-r--r--SmartDeviceLink/SDLCancelInteraction.m103
-rw-r--r--SmartDeviceLink/SDLCarModeStatus.h32
-rw-r--r--SmartDeviceLink/SDLCharacterSet.h33
-rw-r--r--SmartDeviceLink/SDLCharacterSet.m10
-rw-r--r--SmartDeviceLink/SDLChoiceSetManager.m610
-rw-r--r--SmartDeviceLink/SDLClimateControlCapabilities.h239
-rw-r--r--SmartDeviceLink/SDLClimateControlCapabilities.m197
-rw-r--r--SmartDeviceLink/SDLClimateControlData.h176
-rw-r--r--SmartDeviceLink/SDLClimateControlData.m187
-rw-r--r--SmartDeviceLink/SDLCompassDirection.h52
-rw-r--r--SmartDeviceLink/SDLComponentVolumeStatus.h42
-rw-r--r--SmartDeviceLink/SDLConfiguration.h171
-rw-r--r--SmartDeviceLink/SDLConfiguration.m116
-rw-r--r--SmartDeviceLink/SDLControlFramePayloadNak.h25
-rw-r--r--SmartDeviceLink/SDLControlFramePayloadNak.m105
-rw-r--r--SmartDeviceLink/SDLDefrostZone.h32
-rw-r--r--SmartDeviceLink/SDLDeleteSubMenu.m46
-rw-r--r--SmartDeviceLink/SDLDeliveryMode.h24
-rw-r--r--SmartDeviceLink/SDLDeviceLevelStatus.h42
-rw-r--r--SmartDeviceLink/SDLDimension.h27
-rw-r--r--SmartDeviceLink/SDLDirection.h26
-rw-r--r--SmartDeviceLink/SDLDisplayCapability.h66
-rw-r--r--SmartDeviceLink/SDLDisplayCapability.m72
-rw-r--r--SmartDeviceLink/SDLDisplayMode.h26
-rw-r--r--SmartDeviceLink/SDLDisplayType.h69
-rw-r--r--SmartDeviceLink/SDLDistanceUnit.h19
-rw-r--r--SmartDeviceLink/SDLDriverDistractionState.h23
-rw-r--r--SmartDeviceLink/SDLECallConfirmationStatus.h47
-rw-r--r--SmartDeviceLink/SDLElectronicParkBrakeStatus.h35
-rw-r--r--SmartDeviceLink/SDLElectronicParkBrakeStatus.m18
-rw-r--r--SmartDeviceLink/SDLEmergencyEventType.h47
-rw-r--r--SmartDeviceLink/SDLEncryptionLifecycleManager.m327
-rw-r--r--SmartDeviceLink/SDLEnum.h26
-rw-r--r--SmartDeviceLink/SDLError.h124
-rw-r--r--SmartDeviceLink/SDLError.m466
-rw-r--r--SmartDeviceLink/SDLErrorConstants.h223
-rw-r--r--SmartDeviceLink/SDLFileManager.h186
-rw-r--r--SmartDeviceLink/SDLFileManager.m606
-rw-r--r--SmartDeviceLink/SDLFileType.h52
-rw-r--r--SmartDeviceLink/SDLFocusableItemLocator.m194
-rw-r--r--SmartDeviceLink/SDLFuelCutoffStatus.h27
-rw-r--r--SmartDeviceLink/SDLFuelRange.h35
-rw-r--r--SmartDeviceLink/SDLFuelRange.m37
-rw-r--r--SmartDeviceLink/SDLFuelType.h52
-rw-r--r--SmartDeviceLink/SDLFunctionID.m140
-rw-r--r--SmartDeviceLink/SDLGetFile.m107
-rw-r--r--SmartDeviceLink/SDLGetInteriorVehicleData.h84
-rwxr-xr-xSmartDeviceLink/SDLGetInteriorVehicleData.m124
-rw-r--r--SmartDeviceLink/SDLGetVehicleData.h297
-rw-r--r--SmartDeviceLink/SDLGetVehicleData.m322
-rw-r--r--SmartDeviceLink/SDLGetVehicleDataResponse.h211
-rw-r--r--SmartDeviceLink/SDLGetVehicleDataResponse.m286
-rw-r--r--SmartDeviceLink/SDLGlobalProperty.h52
-rw-r--r--SmartDeviceLink/SDLGlobals.h48
-rw-r--r--SmartDeviceLink/SDLGlobals.m129
-rw-r--r--SmartDeviceLink/SDLH264VideoEncoder.h76
-rw-r--r--SmartDeviceLink/SDLHMICapabilities.h83
-rw-r--r--SmartDeviceLink/SDLHMICapabilities.m72
-rw-r--r--SmartDeviceLink/SDLHMILevel.h36
-rw-r--r--SmartDeviceLink/SDLHMISettingsControlCapabilities.h96
-rw-r--r--SmartDeviceLink/SDLHMISettingsControlCapabilities.m104
-rw-r--r--SmartDeviceLink/SDLHMIZoneCapabilities.h22
-rw-r--r--SmartDeviceLink/SDLHybridAppPreference.h29
-rw-r--r--SmartDeviceLink/SDLIgnitionStableStatus.h27
-rw-r--r--SmartDeviceLink/SDLIgnitionStatus.h42
-rw-r--r--SmartDeviceLink/SDLImage.h92
-rw-r--r--SmartDeviceLink/SDLImage.m87
-rw-r--r--SmartDeviceLink/SDLImageFieldName.h84
-rw-r--r--SmartDeviceLink/SDLImageFieldName.m20
-rw-r--r--SmartDeviceLink/SDLImageType.h24
-rw-r--r--SmartDeviceLink/SDLInteractionMode.h37
-rw-r--r--SmartDeviceLink/SDLKeyboardDelegate.h106
-rw-r--r--SmartDeviceLink/SDLKeyboardEvent.h39
-rw-r--r--SmartDeviceLink/SDLKeyboardLayout.h27
-rw-r--r--SmartDeviceLink/SDLKeyboardProperties.h88
-rw-r--r--SmartDeviceLink/SDLKeyboardProperties.m83
-rw-r--r--SmartDeviceLink/SDLKeypressMode.h31
-rw-r--r--SmartDeviceLink/SDLLanguage.h207
-rw-r--r--SmartDeviceLink/SDLLayoutMode.h37
-rw-r--r--SmartDeviceLink/SDLLifecycleConfiguration.h202
-rw-r--r--SmartDeviceLink/SDLLifecycleConfiguration.m167
-rw-r--r--SmartDeviceLink/SDLLifecycleManager.m993
-rw-r--r--SmartDeviceLink/SDLLifecycleProtocolHandler.m215
-rw-r--r--SmartDeviceLink/SDLLifecycleSystemRequestHandler.m336
-rw-r--r--SmartDeviceLink/SDLLightControlCapabilities.h61
-rw-r--r--SmartDeviceLink/SDLLightControlCapabilities.m66
-rw-r--r--SmartDeviceLink/SDLLightName.h259
-rw-r--r--SmartDeviceLink/SDLLightStatus.h40
-rw-r--r--SmartDeviceLink/SDLLockScreenConfiguration.h124
-rw-r--r--SmartDeviceLink/SDLLockScreenConfiguration.m101
-rw-r--r--SmartDeviceLink/SDLLockScreenManager.m272
-rw-r--r--SmartDeviceLink/SDLLockScreenStatus.h29
-rw-r--r--SmartDeviceLink/SDLLockScreenStatus.m10
-rw-r--r--SmartDeviceLink/SDLLockScreenStatusManager.h32
-rw-r--r--SmartDeviceLink/SDLLockScreenStatusManager.m169
-rw-r--r--SmartDeviceLink/SDLLogConfiguration.h81
-rw-r--r--SmartDeviceLink/SDLLogConfiguration.m92
-rw-r--r--SmartDeviceLink/SDLLogFileModuleMap.m147
-rw-r--r--SmartDeviceLink/SDLLogManager.m355
-rw-r--r--SmartDeviceLink/SDLLogTargetAppleSystemLog.h23
-rw-r--r--SmartDeviceLink/SDLLogTargetAppleSystemLog.m77
-rw-r--r--SmartDeviceLink/SDLLogTargetOSLog.m88
-rw-r--r--SmartDeviceLink/SDLMacros.h29
-rw-r--r--SmartDeviceLink/SDLMaintenanceModeStatus.h30
-rw-r--r--SmartDeviceLink/SDLManagerDelegate.h80
-rw-r--r--SmartDeviceLink/SDLMassageCushion.h35
-rw-r--r--SmartDeviceLink/SDLMassageMode.h25
-rw-r--r--SmartDeviceLink/SDLMassageZone.h20
-rw-r--r--SmartDeviceLink/SDLMediaClockFormat.h115
-rw-r--r--SmartDeviceLink/SDLMediaServiceData.h177
-rw-r--r--SmartDeviceLink/SDLMediaServiceData.m153
-rw-r--r--SmartDeviceLink/SDLMediaType.h35
-rw-r--r--SmartDeviceLink/SDLMenuCell.h102
-rw-r--r--SmartDeviceLink/SDLMenuCell.m96
-rw-r--r--SmartDeviceLink/SDLMenuLayout.h25
-rw-r--r--SmartDeviceLink/SDLMenuManager.m738
-rw-r--r--SmartDeviceLink/SDLMenuParams.m63
-rw-r--r--SmartDeviceLink/SDLMetadataType.h76
-rw-r--r--SmartDeviceLink/SDLModuleType.h41
-rw-r--r--SmartDeviceLink/SDLNavigationAction.h49
-rw-r--r--SmartDeviceLink/SDLNavigationJunction.h54
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.h629
-rw-r--r--SmartDeviceLink/SDLNotificationConstants.m266
-rw-r--r--SmartDeviceLink/SDLOnLockScreenStatus.h52
-rw-r--r--SmartDeviceLink/SDLOnLockScreenStatus.m68
-rw-r--r--SmartDeviceLink/SDLOnVehicleData.h211
-rw-r--r--SmartDeviceLink/SDLOnVehicleData.m285
-rw-r--r--SmartDeviceLink/SDLPRNDL.h92
-rw-r--r--SmartDeviceLink/SDLPRNDL.m22
-rw-r--r--SmartDeviceLink/SDLPerformInteraction.h251
-rw-r--r--SmartDeviceLink/SDLPerformInteraction.m197
-rw-r--r--SmartDeviceLink/SDLPermissionConstants.h80
-rw-r--r--SmartDeviceLink/SDLPermissionFilter.h89
-rw-r--r--SmartDeviceLink/SDLPermissionFilter.m94
-rw-r--r--SmartDeviceLink/SDLPermissionManager.h158
-rw-r--r--SmartDeviceLink/SDLPermissionManager.m493
-rw-r--r--SmartDeviceLink/SDLPermissionStatus.h32
-rw-r--r--SmartDeviceLink/SDLPowerModeQualificationStatus.h30
-rw-r--r--SmartDeviceLink/SDLPowerModeStatus.h55
-rw-r--r--SmartDeviceLink/SDLPredefinedLayout.h110
-rw-r--r--SmartDeviceLink/SDLPredefinedLayout.m26
-rw-r--r--SmartDeviceLink/SDLPrerecordedSpeech.h35
-rw-r--r--SmartDeviceLink/SDLPresentChoiceSetOperation.m343
-rw-r--r--SmartDeviceLink/SDLPresentKeyboardOperation.m252
-rw-r--r--SmartDeviceLink/SDLPrimaryAudioSource.h72
-rw-r--r--SmartDeviceLink/SDLProtocol.m784
-rw-r--r--SmartDeviceLink/SDLPutFile.h144
-rw-r--r--SmartDeviceLink/SDLPutFile.m168
-rw-r--r--SmartDeviceLink/SDLRPCFunctionNames.h280
-rw-r--r--SmartDeviceLink/SDLRPCFunctionNames.m98
-rw-r--r--SmartDeviceLink/SDLRPCMessage.h75
-rw-r--r--SmartDeviceLink/SDLRPCMessage.m102
-rw-r--r--SmartDeviceLink/SDLRPCMessageType.h32
-rw-r--r--SmartDeviceLink/SDLRPCParameterNames.h728
-rw-r--r--SmartDeviceLink/SDLRPCParameterNames.m723
-rw-r--r--SmartDeviceLink/SDLRadioBand.h25
-rw-r--r--SmartDeviceLink/SDLRadioControlCapabilities.h225
-rw-r--r--SmartDeviceLink/SDLRadioControlCapabilities.m210
-rw-r--r--SmartDeviceLink/SDLRadioControlData.h172
-rw-r--r--SmartDeviceLink/SDLRadioControlData.m191
-rw-r--r--SmartDeviceLink/SDLRadioState.h30
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterface.h276
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterface.m271
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterfaceResponse.h215
-rw-r--r--SmartDeviceLink/SDLRegisterAppInterfaceResponse.m208
-rw-r--r--SmartDeviceLink/SDLRemoteControlCapabilities.h97
-rw-r--r--SmartDeviceLink/SDLRemoteControlCapabilities.m122
-rw-r--r--SmartDeviceLink/SDLRequestType.h121
-rw-r--r--SmartDeviceLink/SDLResponseDispatcher.m413
-rw-r--r--SmartDeviceLink/SDLResult.h215
-rw-r--r--SmartDeviceLink/SDLSamplingRate.h32
-rw-r--r--SmartDeviceLink/SDLScreenManager.h374
-rw-r--r--SmartDeviceLink/SDLScreenManager.m321
-rw-r--r--SmartDeviceLink/SDLScrollableMessage.h88
-rw-r--r--SmartDeviceLink/SDLScrollableMessage.m86
-rw-r--r--SmartDeviceLink/SDLSeatControlCapabilities.h195
-rw-r--r--SmartDeviceLink/SDLSeatControlCapabilities.m249
-rw-r--r--SmartDeviceLink/SDLSeatControlData.h177
-rw-r--r--SmartDeviceLink/SDLSeatControlData.m200
-rw-r--r--SmartDeviceLink/SDLSeatMemoryActionType.h27
-rw-r--r--SmartDeviceLink/SDLServiceUpdateReason.h39
-rw-r--r--SmartDeviceLink/SDLServiceUpdateReason.m15
-rw-r--r--SmartDeviceLink/SDLSetDisplayLayout.h66
-rw-r--r--SmartDeviceLink/SDLSetDisplayLayout.m77
-rw-r--r--SmartDeviceLink/SDLSetGlobalProperties.h139
-rw-r--r--SmartDeviceLink/SDLSetGlobalProperties.m133
-rw-r--r--SmartDeviceLink/SDLSetMediaClockTimer.h199
-rw-r--r--SmartDeviceLink/SDLSetMediaClockTimer.m150
-rw-r--r--SmartDeviceLink/SDLShowAppMenu.m48
-rw-r--r--SmartDeviceLink/SDLSoftButtonType.h25
-rw-r--r--SmartDeviceLink/SDLSpeechCapabilities.h42
-rw-r--r--SmartDeviceLink/SDLStaticIconName.h900
-rw-r--r--SmartDeviceLink/SDLStreamingAudioLifecycleManager.m316
-rw-r--r--SmartDeviceLink/SDLStreamingMediaConfiguration.h175
-rw-r--r--SmartDeviceLink/SDLStreamingMediaConfiguration.m114
-rw-r--r--SmartDeviceLink/SDLStreamingMediaManager.h204
-rw-r--r--SmartDeviceLink/SDLStreamingMediaManager.m310
-rw-r--r--SmartDeviceLink/SDLStreamingVideoLifecycleManager.m865
-rw-r--r--SmartDeviceLink/SDLSubscribeButtonManager.m311
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleData.h293
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleData.m313
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleDataResponse.h244
-rw-r--r--SmartDeviceLink/SDLSubscribeVehicleDataResponse.m267
-rw-r--r--SmartDeviceLink/SDLSupportedSeat.h26
-rw-r--r--SmartDeviceLink/SDLSupportedSeat.m10
-rw-r--r--SmartDeviceLink/SDLSyncMsgVersion.h47
-rw-r--r--SmartDeviceLink/SDLSyncMsgVersion.m61
-rw-r--r--SmartDeviceLink/SDLSystemAction.h25
-rwxr-xr-xSmartDeviceLink/SDLSystemCapability.h143
-rwxr-xr-xSmartDeviceLink/SDLSystemCapability.m177
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityManager.h334
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityManager.m838
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityObserver.h71
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityObserver.m55
-rwxr-xr-xSmartDeviceLink/SDLSystemCapabilityType.h51
-rwxr-xr-xSmartDeviceLink/SDLSystemCapabilityType.m17
-rw-r--r--SmartDeviceLink/SDLSystemContext.h41
-rw-r--r--SmartDeviceLink/SDLSystemRequest.m74
-rw-r--r--SmartDeviceLink/SDLTBTState.h60
-rw-r--r--SmartDeviceLink/SDLTPMS.h50
-rw-r--r--SmartDeviceLink/SDLTemperatureUnit.h21
-rw-r--r--SmartDeviceLink/SDLTextAlignment.h27
-rw-r--r--SmartDeviceLink/SDLTextAndGraphicManager.h97
-rw-r--r--SmartDeviceLink/SDLTextAndGraphicManager.m748
-rw-r--r--SmartDeviceLink/SDLTextField+ScreenManagerExtensions.m26
-rw-r--r--SmartDeviceLink/SDLTextField.h60
-rw-r--r--SmartDeviceLink/SDLTextFieldName.h201
-rw-r--r--SmartDeviceLink/SDLTextFieldName.m35
-rw-r--r--SmartDeviceLink/SDLTimerMode.h25
-rw-r--r--SmartDeviceLink/SDLTouchManager.h114
-rw-r--r--SmartDeviceLink/SDLTouchManager.m511
-rw-r--r--SmartDeviceLink/SDLTouchType.h30
-rw-r--r--SmartDeviceLink/SDLTriggerSource.h27
-rw-r--r--SmartDeviceLink/SDLTurnSignal.h34
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleData.h293
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleData.m313
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h243
-rw-r--r--SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m267
-rw-r--r--SmartDeviceLink/SDLUpdateMode.h37
-rw-r--r--SmartDeviceLink/SDLVehicleDataActiveStatus.h35
-rw-r--r--SmartDeviceLink/SDLVehicleDataEventStatus.h37
-rw-r--r--SmartDeviceLink/SDLVehicleDataNotificationStatus.h32
-rw-r--r--SmartDeviceLink/SDLVehicleDataResultCode.h55
-rw-r--r--SmartDeviceLink/SDLVehicleDataStatus.h27
-rw-r--r--SmartDeviceLink/SDLVehicleDataType.h172
-rw-r--r--SmartDeviceLink/SDLVehicleDataType.m39
-rw-r--r--SmartDeviceLink/SDLVentilationMode.h31
-rw-r--r--SmartDeviceLink/SDLVersion.h121
-rw-r--r--SmartDeviceLink/SDLVersion.m160
-rw-r--r--SmartDeviceLink/SDLVideoStreamingCapability.h100
-rw-r--r--SmartDeviceLink/SDLVideoStreamingCapability.m103
-rw-r--r--SmartDeviceLink/SDLVideoStreamingCodec.h36
-rw-r--r--SmartDeviceLink/SDLVideoStreamingProtocol.h36
-rw-r--r--SmartDeviceLink/SDLVideoStreamingState.h24
-rw-r--r--SmartDeviceLink/SDLVrCapabilities.h17
-rw-r--r--SmartDeviceLink/SDLWarningLightStatus.h32
-rw-r--r--SmartDeviceLink/SDLWayPointType.h19
-rw-r--r--SmartDeviceLink/SDLWindowCapability.h89
-rw-r--r--SmartDeviceLink/SDLWindowCapability.m89
-rw-r--r--SmartDeviceLink/SDLWindowType.h21
-rw-r--r--SmartDeviceLink/SDLWiperStatus.h85
-rw-r--r--SmartDeviceLink/SmartDeviceLink.h61
-rw-r--r--SmartDeviceLink/private/CGPoint_Util.h (renamed from SmartDeviceLink/CGPoint_Util.h)0
-rw-r--r--SmartDeviceLink/private/CGPoint_Util.m (renamed from SmartDeviceLink/CGPoint_Util.m)0
-rw-r--r--SmartDeviceLink/private/CVPixelBufferRef+SDLUtil.h (renamed from SmartDeviceLink/CVPixelBufferRef+SDLUtil.h)0
-rw-r--r--SmartDeviceLink/private/CVPixelBufferRef+SDLUtil.m (renamed from SmartDeviceLink/CVPixelBufferRef+SDLUtil.m)0
-rw-r--r--SmartDeviceLink/private/EAAccessory+SDLProtocols.h (renamed from SmartDeviceLink/EAAccessory+SDLProtocols.h)0
-rw-r--r--SmartDeviceLink/private/EAAccessory+SDLProtocols.m (renamed from SmartDeviceLink/EAAccessory+SDLProtocols.m)0
-rw-r--r--SmartDeviceLink/private/EAAccessoryManager+SDLProtocols.h (renamed from SmartDeviceLink/EAAccessoryManager+SDLProtocols.h)0
-rw-r--r--SmartDeviceLink/private/EAAccessoryManager+SDLProtocols.m (renamed from SmartDeviceLink/EAAccessoryManager+SDLProtocols.m)0
-rw-r--r--SmartDeviceLink/private/NSBundle+SDLBundle.h (renamed from SmartDeviceLink/NSBundle+SDLBundle.h)0
-rw-r--r--SmartDeviceLink/private/NSBundle+SDLBundle.m (renamed from SmartDeviceLink/NSBundle+SDLBundle.m)0
-rw-r--r--SmartDeviceLink/private/NSMapTable+Subscripting.h (renamed from SmartDeviceLink/NSMapTable+Subscripting.h)0
-rw-r--r--SmartDeviceLink/private/NSMapTable+Subscripting.m (renamed from SmartDeviceLink/NSMapTable+Subscripting.m)0
-rw-r--r--SmartDeviceLink/private/NSMutableArray+Safe.h (renamed from SmartDeviceLink/NSMutableArray+Safe.h)0
-rw-r--r--SmartDeviceLink/private/NSMutableArray+Safe.m (renamed from SmartDeviceLink/NSMutableArray+Safe.m)0
-rw-r--r--SmartDeviceLink/private/NSMutableDictionary+SafeRemove.h (renamed from SmartDeviceLink/NSMutableDictionary+SafeRemove.h)0
-rw-r--r--SmartDeviceLink/private/NSMutableDictionary+SafeRemove.m (renamed from SmartDeviceLink/NSMutableDictionary+SafeRemove.m)0
-rw-r--r--SmartDeviceLink/private/NSMutableDictionary+Store.h40
-rw-r--r--SmartDeviceLink/private/NSMutableDictionary+Store.m (renamed from SmartDeviceLink/NSMutableDictionary+Store.m)0
-rw-r--r--SmartDeviceLink/private/SDLAsynchronousOperation.h (renamed from SmartDeviceLink/SDLAsynchronousOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLAsynchronousOperation.m (renamed from SmartDeviceLink/SDLAsynchronousOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLAsynchronousRPCOperation.h (renamed from SmartDeviceLink/SDLAsynchronousRPCOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLAsynchronousRPCOperation.m (renamed from SmartDeviceLink/SDLAsynchronousRPCOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLAsynchronousRPCRequestOperation.h (renamed from SmartDeviceLink/SDLAsynchronousRPCRequestOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLAsynchronousRPCRequestOperation.m (renamed from SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLBackgroundTaskManager.h (renamed from SmartDeviceLink/SDLBackgroundTaskManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLBackgroundTaskManager.m (renamed from SmartDeviceLink/SDLBackgroundTaskManager.m)0
-rw-r--r--SmartDeviceLink/private/SDLCacheFileManager.h (renamed from SmartDeviceLink/SDLCacheFileManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLCacheFileManager.m (renamed from SmartDeviceLink/SDLCacheFileManager.m)0
-rwxr-xr-xSmartDeviceLink/private/SDLCarWindow.h (renamed from SmartDeviceLink/SDLCarWindow.h)0
-rw-r--r--SmartDeviceLink/private/SDLCarWindow.m (renamed from SmartDeviceLink/SDLCarWindow.m)0
-rw-r--r--SmartDeviceLink/private/SDLCheckChoiceVROptionalOperation.h (renamed from SmartDeviceLink/SDLCheckChoiceVROptionalOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLCheckChoiceVROptionalOperation.m (renamed from SmartDeviceLink/SDLCheckChoiceVROptionalOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLChoiceSetManager.h (renamed from SmartDeviceLink/SDLChoiceSetManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLChoiceSetManager.m593
-rw-r--r--SmartDeviceLink/private/SDLConnectionManagerType.h (renamed from SmartDeviceLink/SDLConnectionManagerType.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadAudioStartServiceAck.h (renamed from SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadAudioStartServiceAck.m (renamed from SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadConstants.h (renamed from SmartDeviceLink/SDLControlFramePayloadConstants.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadConstants.m (renamed from SmartDeviceLink/SDLControlFramePayloadConstants.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadEndService.h (renamed from SmartDeviceLink/SDLControlFramePayloadEndService.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadEndService.m (renamed from SmartDeviceLink/SDLControlFramePayloadEndService.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadNak.h28
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadNak.m118
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadRPCStartService.h (renamed from SmartDeviceLink/SDLControlFramePayloadRPCStartService.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadRPCStartService.m (renamed from SmartDeviceLink/SDLControlFramePayloadRPCStartService.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadRPCStartServiceAck.h (renamed from SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadRPCStartServiceAck.m (renamed from SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadRegisterSecondaryTransportNak.h (renamed from SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadRegisterSecondaryTransportNak.m (renamed from SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadTransportEventUpdate.h (renamed from SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadTransportEventUpdate.m (renamed from SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadType.h (renamed from SmartDeviceLink/SDLControlFramePayloadType.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadVideoStartService.h (renamed from SmartDeviceLink/SDLControlFramePayloadVideoStartService.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadVideoStartService.m (renamed from SmartDeviceLink/SDLControlFramePayloadVideoStartService.m)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadVideoStartServiceAck.h (renamed from SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.h)0
-rw-r--r--SmartDeviceLink/private/SDLControlFramePayloadVideoStartServiceAck.m (renamed from SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.m)0
-rw-r--r--SmartDeviceLink/private/SDLDeleteChoicesOperation.h (renamed from SmartDeviceLink/SDLDeleteChoicesOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLDeleteChoicesOperation.m (renamed from SmartDeviceLink/SDLDeleteChoicesOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLDeleteFileOperation.h (renamed from SmartDeviceLink/SDLDeleteFileOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLDeleteFileOperation.m (renamed from SmartDeviceLink/SDLDeleteFileOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLDynamicMenuUpdateAlgorithm.h (renamed from SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.h)0
-rw-r--r--SmartDeviceLink/private/SDLDynamicMenuUpdateAlgorithm.m (renamed from SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.m)0
-rw-r--r--SmartDeviceLink/private/SDLDynamicMenuUpdateRunScore.h (renamed from SmartDeviceLink/SDLDynamicMenuUpdateRunScore.h)0
-rw-r--r--SmartDeviceLink/private/SDLDynamicMenuUpdateRunScore.m (renamed from SmartDeviceLink/SDLDynamicMenuUpdateRunScore.m)0
-rw-r--r--SmartDeviceLink/private/SDLEncryptionLifecycleManager.h (renamed from SmartDeviceLink/SDLEncryptionLifecycleManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLEncryptionLifecycleManager.m327
-rw-r--r--SmartDeviceLink/private/SDLEncryptionManagerConstants.h (renamed from SmartDeviceLink/SDLEncryptionManagerConstants.h)0
-rw-r--r--SmartDeviceLink/private/SDLEncryptionManagerConstants.m (renamed from SmartDeviceLink/SDLEncryptionManagerConstants.m)0
-rw-r--r--SmartDeviceLink/private/SDLError.h108
-rw-r--r--SmartDeviceLink/private/SDLError.m454
-rw-r--r--SmartDeviceLink/private/SDLFileWrapper.h (renamed from SmartDeviceLink/SDLFileWrapper.h)0
-rw-r--r--SmartDeviceLink/private/SDLFileWrapper.m (renamed from SmartDeviceLink/SDLFileWrapper.m)0
-rw-r--r--SmartDeviceLink/private/SDLFocusableItemHitTester.h (renamed from SmartDeviceLink/SDLFocusableItemHitTester.h)0
-rw-r--r--SmartDeviceLink/private/SDLFocusableItemLocator.h (renamed from SmartDeviceLink/SDLFocusableItemLocator.h)0
-rw-r--r--SmartDeviceLink/private/SDLFocusableItemLocator.m189
-rw-r--r--SmartDeviceLink/private/SDLFocusableItemLocatorType.h (renamed from SmartDeviceLink/SDLFocusableItemLocatorType.h)0
-rw-r--r--SmartDeviceLink/private/SDLGlobals.h53
-rw-r--r--SmartDeviceLink/private/SDLGlobals.m136
-rw-r--r--SmartDeviceLink/private/SDLH264Packetizer.h (renamed from SmartDeviceLink/SDLH264Packetizer.h)0
-rw-r--r--SmartDeviceLink/private/SDLH264VideoEncoder.h71
-rw-r--r--SmartDeviceLink/private/SDLH264VideoEncoder.m (renamed from SmartDeviceLink/SDLH264VideoEncoder.m)0
-rw-r--r--SmartDeviceLink/private/SDLHexUtility.h (renamed from SmartDeviceLink/SDLHexUtility.h)0
-rw-r--r--SmartDeviceLink/private/SDLHexUtility.m (renamed from SmartDeviceLink/SDLHexUtility.m)0
-rw-r--r--SmartDeviceLink/private/SDLIAPConstants.h (renamed from SmartDeviceLink/SDLIAPConstants.h)0
-rw-r--r--SmartDeviceLink/private/SDLIAPConstants.m (renamed from SmartDeviceLink/SDLIAPConstants.m)0
-rw-r--r--SmartDeviceLink/private/SDLIAPControlSession.h (renamed from SmartDeviceLink/SDLIAPControlSession.h)0
-rw-r--r--SmartDeviceLink/private/SDLIAPControlSession.m (renamed from SmartDeviceLink/SDLIAPControlSession.m)0
-rw-r--r--SmartDeviceLink/private/SDLIAPControlSessionDelegate.h (renamed from SmartDeviceLink/SDLIAPControlSessionDelegate.h)0
-rw-r--r--SmartDeviceLink/private/SDLIAPDataSession.h (renamed from SmartDeviceLink/SDLIAPDataSession.h)0
-rw-r--r--SmartDeviceLink/private/SDLIAPDataSession.m (renamed from SmartDeviceLink/SDLIAPDataSession.m)0
-rw-r--r--SmartDeviceLink/private/SDLIAPDataSessionDelegate.h (renamed from SmartDeviceLink/SDLIAPDataSessionDelegate.h)0
-rw-r--r--SmartDeviceLink/private/SDLIAPSession.h (renamed from SmartDeviceLink/SDLIAPSession.h)0
-rw-r--r--SmartDeviceLink/private/SDLIAPSession.m (renamed from SmartDeviceLink/SDLIAPSession.m)0
-rw-r--r--SmartDeviceLink/private/SDLIAPTransport.h (renamed from SmartDeviceLink/SDLIAPTransport.h)0
-rw-r--r--SmartDeviceLink/private/SDLIAPTransport.m (renamed from SmartDeviceLink/SDLIAPTransport.m)0
-rw-r--r--SmartDeviceLink/private/SDLIconArchiveFile.h (renamed from SmartDeviceLink/SDLIconArchiveFile.h)0
-rw-r--r--SmartDeviceLink/private/SDLIconArchiveFile.m (renamed from SmartDeviceLink/SDLIconArchiveFile.m)0
-rw-r--r--SmartDeviceLink/private/SDLImageField+ScreenManagerExtensions.h (renamed from SmartDeviceLink/SDLImageField+ScreenManagerExtensions.h)0
-rw-r--r--SmartDeviceLink/private/SDLImageField+ScreenManagerExtensions.m (renamed from SmartDeviceLink/SDLImageField+ScreenManagerExtensions.m)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleManager.h (renamed from SmartDeviceLink/SDLLifecycleManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleManager.m969
-rw-r--r--SmartDeviceLink/private/SDLLifecycleMobileHMIStateHandler.h (renamed from SmartDeviceLink/SDLLifecycleMobileHMIStateHandler.h)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleMobileHMIStateHandler.m (renamed from SmartDeviceLink/SDLLifecycleMobileHMIStateHandler.m)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleProtocolHandler.h (renamed from SmartDeviceLink/SDLLifecycleProtocolHandler.h)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleProtocolHandler.m218
-rw-r--r--SmartDeviceLink/private/SDLLifecycleRPCAdapter.h (renamed from SmartDeviceLink/SDLLifecycleRPCAdapter.h)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleRPCAdapter.m (renamed from SmartDeviceLink/SDLLifecycleRPCAdapter.m)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleSyncPDataHandler.h (renamed from SmartDeviceLink/SDLLifecycleSyncPDataHandler.h)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleSyncPDataHandler.m (renamed from SmartDeviceLink/SDLLifecycleSyncPDataHandler.m)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleSystemRequestHandler.h (renamed from SmartDeviceLink/SDLLifecycleSystemRequestHandler.h)0
-rw-r--r--SmartDeviceLink/private/SDLLifecycleSystemRequestHandler.m336
-rw-r--r--SmartDeviceLink/private/SDLListFilesOperation.h (renamed from SmartDeviceLink/SDLListFilesOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLListFilesOperation.m (renamed from SmartDeviceLink/SDLListFilesOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLLockScreenConstants.h18
-rw-r--r--SmartDeviceLink/private/SDLLockScreenManager.h (renamed from SmartDeviceLink/SDLLockScreenManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLLockScreenManager.m251
-rw-r--r--SmartDeviceLink/private/SDLLockScreenPresenter.h (renamed from SmartDeviceLink/SDLLockScreenPresenter.h)0
-rw-r--r--SmartDeviceLink/private/SDLLockScreenPresenter.m (renamed from SmartDeviceLink/SDLLockScreenPresenter.m)0
-rw-r--r--SmartDeviceLink/private/SDLLockScreenRootViewController.h (renamed from SmartDeviceLink/SDLLockScreenRootViewController.h)0
-rw-r--r--SmartDeviceLink/private/SDLLockScreenRootViewController.m (renamed from SmartDeviceLink/SDLLockScreenRootViewController.m)0
-rw-r--r--SmartDeviceLink/private/SDLLockScreenStatusInfo.h51
-rw-r--r--SmartDeviceLink/private/SDLLockScreenStatusInfo.m45
-rw-r--r--SmartDeviceLink/private/SDLLockScreenStatusManager.h32
-rw-r--r--SmartDeviceLink/private/SDLLockScreenStatusManager.m133
-rw-r--r--SmartDeviceLink/private/SDLLogFileModuleMap.h (renamed from SmartDeviceLink/SDLLogFileModuleMap.h)0
-rw-r--r--SmartDeviceLink/private/SDLLogFileModuleMap.m147
-rw-r--r--SmartDeviceLink/private/SDLLogModel.h (renamed from SmartDeviceLink/SDLLogModel.h)0
-rw-r--r--SmartDeviceLink/private/SDLLogModel.m (renamed from SmartDeviceLink/SDLLogModel.m)0
-rw-r--r--SmartDeviceLink/private/SDLMenuManager.h (renamed from SmartDeviceLink/SDLMenuManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLMenuManager.m737
-rw-r--r--SmartDeviceLink/private/SDLMutableDataQueue.h (renamed from SmartDeviceLink/SDLMutableDataQueue.h)0
-rw-r--r--SmartDeviceLink/private/SDLMutableDataQueue.m (renamed from SmartDeviceLink/SDLMutableDataQueue.m)0
-rw-r--r--SmartDeviceLink/private/SDLNotificationDispatcher.h (renamed from SmartDeviceLink/SDLNotificationDispatcher.h)0
-rw-r--r--SmartDeviceLink/private/SDLNotificationDispatcher.m (renamed from SmartDeviceLink/SDLNotificationDispatcher.m)0
-rw-r--r--SmartDeviceLink/private/SDLObjectWithPriority.h (renamed from SmartDeviceLink/SDLObjectWithPriority.h)0
-rw-r--r--SmartDeviceLink/private/SDLObjectWithPriority.m (renamed from SmartDeviceLink/SDLObjectWithPriority.m)0
-rwxr-xr-xSmartDeviceLink/private/SDLPCMAudioConverter.h (renamed from SmartDeviceLink/SDLPCMAudioConverter.h)0
-rwxr-xr-xSmartDeviceLink/private/SDLPCMAudioConverter.m (renamed from SmartDeviceLink/SDLPCMAudioConverter.m)0
-rw-r--r--SmartDeviceLink/private/SDLPermissionFilter.h73
-rw-r--r--SmartDeviceLink/private/SDLPermissionFilter.m79
-rw-r--r--SmartDeviceLink/private/SDLPreloadChoicesOperation.h (renamed from SmartDeviceLink/SDLPreloadChoicesOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLPreloadChoicesOperation.m (renamed from SmartDeviceLink/SDLPreloadChoicesOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLPresentChoiceSetOperation.h (renamed from SmartDeviceLink/SDLPresentChoiceSetOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLPresentChoiceSetOperation.m335
-rw-r--r--SmartDeviceLink/private/SDLPresentKeyboardOperation.h (renamed from SmartDeviceLink/SDLPresentKeyboardOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLPresentKeyboardOperation.m244
-rw-r--r--SmartDeviceLink/private/SDLPrioritizedObjectCollection.h (renamed from SmartDeviceLink/SDLPrioritizedObjectCollection.h)0
-rw-r--r--SmartDeviceLink/private/SDLPrioritizedObjectCollection.m (renamed from SmartDeviceLink/SDLPrioritizedObjectCollection.m)0
-rw-r--r--SmartDeviceLink/private/SDLProtocol.h (renamed from SmartDeviceLink/SDLProtocol.h)0
-rw-r--r--SmartDeviceLink/private/SDLProtocol.m797
-rw-r--r--SmartDeviceLink/private/SDLProtocolDelegate.h (renamed from SmartDeviceLink/SDLProtocolDelegate.h)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolHeader.h (renamed from SmartDeviceLink/SDLProtocolHeader.h)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolHeader.m (renamed from SmartDeviceLink/SDLProtocolHeader.m)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolMessage.h (renamed from SmartDeviceLink/SDLProtocolMessage.h)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolMessage.m (renamed from SmartDeviceLink/SDLProtocolMessage.m)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolMessageAssembler.h (renamed from SmartDeviceLink/SDLProtocolMessageAssembler.h)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolMessageAssembler.m (renamed from SmartDeviceLink/SDLProtocolMessageAssembler.m)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolMessageDisassembler.h (renamed from SmartDeviceLink/SDLProtocolMessageDisassembler.h)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolMessageDisassembler.m (renamed from SmartDeviceLink/SDLProtocolMessageDisassembler.m)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolReceivedMessageRouter.h (renamed from SmartDeviceLink/SDLProtocolReceivedMessageRouter.h)0
-rw-r--r--SmartDeviceLink/private/SDLProtocolReceivedMessageRouter.m (renamed from SmartDeviceLink/SDLProtocolReceivedMessageRouter.m)0
-rw-r--r--SmartDeviceLink/private/SDLRAWH264Packetizer.h (renamed from SmartDeviceLink/SDLRAWH264Packetizer.h)0
-rw-r--r--SmartDeviceLink/private/SDLRAWH264Packetizer.m (renamed from SmartDeviceLink/SDLRAWH264Packetizer.m)0
-rw-r--r--SmartDeviceLink/private/SDLRPCParameterNames.h779
-rw-r--r--SmartDeviceLink/private/SDLRPCParameterNames.m775
-rw-r--r--SmartDeviceLink/private/SDLRPCPayload.h (renamed from SmartDeviceLink/SDLRPCPayload.h)0
-rw-r--r--SmartDeviceLink/private/SDLRPCPayload.m (renamed from SmartDeviceLink/SDLRPCPayload.m)0
-rw-r--r--SmartDeviceLink/private/SDLRTPH264Packetizer.h (renamed from SmartDeviceLink/SDLRTPH264Packetizer.h)0
-rw-r--r--SmartDeviceLink/private/SDLRTPH264Packetizer.m (renamed from SmartDeviceLink/SDLRTPH264Packetizer.m)0
-rw-r--r--SmartDeviceLink/private/SDLResponseDispatcher.h (renamed from SmartDeviceLink/SDLResponseDispatcher.h)0
-rw-r--r--SmartDeviceLink/private/SDLResponseDispatcher.m399
-rw-r--r--SmartDeviceLink/private/SDLSecondaryTransportManager.h (renamed from SmartDeviceLink/SDLSecondaryTransportManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLSecondaryTransportManager.m (renamed from SmartDeviceLink/SDLSecondaryTransportManager.m)0
-rw-r--r--SmartDeviceLink/private/SDLSequentialRPCRequestOperation.h (renamed from SmartDeviceLink/SDLSequentialRPCRequestOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLSequentialRPCRequestOperation.m (renamed from SmartDeviceLink/SDLSequentialRPCRequestOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonManager.h (renamed from SmartDeviceLink/SDLSoftButtonManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonManager.m (renamed from SmartDeviceLink/SDLSoftButtonManager.m)0
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonReplaceOperation.h (renamed from SmartDeviceLink/SDLSoftButtonReplaceOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m (renamed from SmartDeviceLink/SDLSoftButtonReplaceOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonTransitionOperation.h (renamed from SmartDeviceLink/SDLSoftButtonTransitionOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m (renamed from SmartDeviceLink/SDLSoftButtonTransitionOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLStateMachine.h (renamed from SmartDeviceLink/SDLStateMachine.h)0
-rw-r--r--SmartDeviceLink/private/SDLStateMachine.m (renamed from SmartDeviceLink/SDLStateMachine.m)0
-rw-r--r--SmartDeviceLink/private/SDLStreamingAudioLifecycleManager.h (renamed from SmartDeviceLink/SDLStreamingAudioLifecycleManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLStreamingAudioLifecycleManager.m306
-rw-r--r--SmartDeviceLink/private/SDLStreamingProtocolDelegate.h (renamed from SmartDeviceLink/SDLStreamingProtocolDelegate.h)0
-rw-r--r--SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.h (renamed from SmartDeviceLink/SDLStreamingVideoLifecycleManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m846
-rw-r--r--SmartDeviceLink/private/SDLSubscribeButtonManager.h (renamed from SmartDeviceLink/SDLSubscribeButtonManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLSubscribeButtonManager.m294
-rw-r--r--SmartDeviceLink/private/SDLSubscribeButtonObserver.h (renamed from SmartDeviceLink/SDLSubscribeButtonObserver.h)0
-rw-r--r--SmartDeviceLink/private/SDLSubscribeButtonObserver.m (renamed from SmartDeviceLink/SDLSubscribeButtonObserver.m)0
-rw-r--r--SmartDeviceLink/private/SDLSystemCapabilityObserver.h57
-rw-r--r--SmartDeviceLink/private/SDLSystemCapabilityObserver.m45
-rw-r--r--SmartDeviceLink/private/SDLTCPTransport.h (renamed from SmartDeviceLink/SDLTCPTransport.h)0
-rw-r--r--SmartDeviceLink/private/SDLTCPTransport.m (renamed from SmartDeviceLink/SDLTCPTransport.m)0
-rw-r--r--SmartDeviceLink/private/SDLTextAndGraphicManager.h105
-rw-r--r--SmartDeviceLink/private/SDLTextAndGraphicManager.m416
-rw-r--r--SmartDeviceLink/private/SDLTextAndGraphicState.h42
-rw-r--r--SmartDeviceLink/private/SDLTextAndGraphicState.m61
-rw-r--r--SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.h43
-rw-r--r--SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.m597
-rw-r--r--SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.h (renamed from SmartDeviceLink/SDLTextField+ScreenManagerExtensions.h)0
-rw-r--r--SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m26
-rw-r--r--SmartDeviceLink/private/SDLTimer.h (renamed from SmartDeviceLink/SDLTimer.h)0
-rw-r--r--SmartDeviceLink/private/SDLTimer.m (renamed from SmartDeviceLink/SDLTimer.m)0
-rw-r--r--SmartDeviceLink/private/SDLTransportDelegate.h (renamed from SmartDeviceLink/SDLTransportDelegate.h)0
-rw-r--r--SmartDeviceLink/private/SDLTransportType.h (renamed from SmartDeviceLink/SDLTransportType.h)0
-rw-r--r--SmartDeviceLink/private/SDLUploadFileOperation.h (renamed from SmartDeviceLink/SDLUploadFileOperation.h)0
-rw-r--r--SmartDeviceLink/private/SDLUploadFileOperation.m (renamed from SmartDeviceLink/SDLUploadFileOperation.m)0
-rw-r--r--SmartDeviceLink/private/SDLV1ProtocolHeader.h (renamed from SmartDeviceLink/SDLV1ProtocolHeader.h)0
-rw-r--r--SmartDeviceLink/private/SDLV1ProtocolHeader.m (renamed from SmartDeviceLink/SDLV1ProtocolHeader.m)0
-rw-r--r--SmartDeviceLink/private/SDLV1ProtocolMessage.h (renamed from SmartDeviceLink/SDLV1ProtocolMessage.h)0
-rw-r--r--SmartDeviceLink/private/SDLV1ProtocolMessage.m (renamed from SmartDeviceLink/SDLV1ProtocolMessage.m)0
-rw-r--r--SmartDeviceLink/private/SDLV2ProtocolHeader.h (renamed from SmartDeviceLink/SDLV2ProtocolHeader.h)0
-rw-r--r--SmartDeviceLink/private/SDLV2ProtocolHeader.m (renamed from SmartDeviceLink/SDLV2ProtocolHeader.m)0
-rw-r--r--SmartDeviceLink/private/SDLV2ProtocolMessage.h (renamed from SmartDeviceLink/SDLV2ProtocolMessage.h)0
-rw-r--r--SmartDeviceLink/private/SDLV2ProtocolMessage.m (renamed from SmartDeviceLink/SDLV2ProtocolMessage.m)0
-rw-r--r--SmartDeviceLink/private/SDLVideoEncoderDelegate.h (renamed from SmartDeviceLink/SDLVideoEncoderDelegate.h)0
-rw-r--r--SmartDeviceLink/private/SDLViewControllerPresentable.h (renamed from SmartDeviceLink/SDLViewControllerPresentable.h)0
-rw-r--r--SmartDeviceLink/private/SDLVoiceCommandManager.h (renamed from SmartDeviceLink/SDLVoiceCommandManager.h)0
-rw-r--r--SmartDeviceLink/private/SDLVoiceCommandManager.m (renamed from SmartDeviceLink/SDLVoiceCommandManager.m)0
-rw-r--r--SmartDeviceLink/private/SDLWindowCapability+ScreenManagerExtensions.h (renamed from SmartDeviceLink/SDLWindowCapability+ScreenManagerExtensions.h)0
-rw-r--r--SmartDeviceLink/private/SDLWindowCapability+ScreenManagerExtensions.m (renamed from SmartDeviceLink/SDLWindowCapability+ScreenManagerExtensions.m)0
-rw-r--r--SmartDeviceLink/public/NSNumber+NumberType.h (renamed from SmartDeviceLink/NSNumber+NumberType.h)0
-rw-r--r--SmartDeviceLink/public/SDLAddCommand.h144
-rw-r--r--SmartDeviceLink/public/SDLAddCommand.m134
-rw-r--r--SmartDeviceLink/public/SDLAddCommandResponse.h (renamed from SmartDeviceLink/SDLAddCommandResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLAddCommandResponse.m (renamed from SmartDeviceLink/SDLAddCommandResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLAddSubMenu.h130
-rw-r--r--SmartDeviceLink/public/SDLAddSubMenu.m127
-rw-r--r--SmartDeviceLink/public/SDLAddSubMenuResponse.h (renamed from SmartDeviceLink/SDLAddSubMenuResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLAddSubMenuResponse.m (renamed from SmartDeviceLink/SDLAddSubMenuResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLAirbagStatus.h (renamed from SmartDeviceLink/SDLAirbagStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLAirbagStatus.m (renamed from SmartDeviceLink/SDLAirbagStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLAlert.h160
-rw-r--r--SmartDeviceLink/public/SDLAlert.m141
-rw-r--r--SmartDeviceLink/public/SDLAlertManeuver.h (renamed from SmartDeviceLink/SDLAlertManeuver.h)0
-rw-r--r--SmartDeviceLink/public/SDLAlertManeuver.m (renamed from SmartDeviceLink/SDLAlertManeuver.m)0
-rw-r--r--SmartDeviceLink/public/SDLAlertManeuverResponse.h (renamed from SmartDeviceLink/SDLAlertManeuverResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLAlertManeuverResponse.m (renamed from SmartDeviceLink/SDLAlertManeuverResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLAlertResponse.h (renamed from SmartDeviceLink/SDLAlertResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLAlertResponse.m (renamed from SmartDeviceLink/SDLAlertResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLAmbientLightStatus.h52
-rw-r--r--SmartDeviceLink/public/SDLAmbientLightStatus.m (renamed from SmartDeviceLink/SDLAmbientLightStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLAppHMIType.h79
-rw-r--r--SmartDeviceLink/public/SDLAppHMIType.m19
-rw-r--r--SmartDeviceLink/public/SDLAppInfo.h (renamed from SmartDeviceLink/SDLAppInfo.h)0
-rw-r--r--SmartDeviceLink/public/SDLAppInfo.m (renamed from SmartDeviceLink/SDLAppInfo.m)0
-rw-r--r--SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.h81
-rw-r--r--SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.m19
-rw-r--r--SmartDeviceLink/public/SDLAppServiceCapability.h (renamed from SmartDeviceLink/SDLAppServiceCapability.h)0
-rw-r--r--SmartDeviceLink/public/SDLAppServiceCapability.m (renamed from SmartDeviceLink/SDLAppServiceCapability.m)0
-rw-r--r--SmartDeviceLink/public/SDLAppServiceData.h (renamed from SmartDeviceLink/SDLAppServiceData.h)0
-rw-r--r--SmartDeviceLink/public/SDLAppServiceData.m (renamed from SmartDeviceLink/SDLAppServiceData.m)0
-rw-r--r--SmartDeviceLink/public/SDLAppServiceManifest.h156
-rw-r--r--SmartDeviceLink/public/SDLAppServiceManifest.m140
-rw-r--r--SmartDeviceLink/public/SDLAppServiceRecord.h (renamed from SmartDeviceLink/SDLAppServiceRecord.h)0
-rw-r--r--SmartDeviceLink/public/SDLAppServiceRecord.m (renamed from SmartDeviceLink/SDLAppServiceRecord.m)0
-rw-r--r--SmartDeviceLink/public/SDLAppServiceType.h29
-rw-r--r--SmartDeviceLink/public/SDLAppServiceType.m (renamed from SmartDeviceLink/SDLAppServiceType.m)0
-rw-r--r--SmartDeviceLink/public/SDLAppServicesCapabilities.h (renamed from SmartDeviceLink/SDLAppServicesCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLAppServicesCapabilities.m (renamed from SmartDeviceLink/SDLAppServicesCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLArtwork.h154
-rw-r--r--SmartDeviceLink/public/SDLArtwork.m192
-rw-r--r--SmartDeviceLink/public/SDLAudioControlCapabilities.h91
-rw-r--r--SmartDeviceLink/public/SDLAudioControlCapabilities.m99
-rw-r--r--SmartDeviceLink/public/SDLAudioControlData.h (renamed from SmartDeviceLink/SDLAudioControlData.h)0
-rw-r--r--SmartDeviceLink/public/SDLAudioControlData.m (renamed from SmartDeviceLink/SDLAudioControlData.m)0
-rwxr-xr-xSmartDeviceLink/public/SDLAudioFile.h (renamed from SmartDeviceLink/SDLAudioFile.h)0
-rwxr-xr-xSmartDeviceLink/public/SDLAudioFile.m (renamed from SmartDeviceLink/SDLAudioFile.m)0
-rw-r--r--SmartDeviceLink/public/SDLAudioPassThruCapabilities.h (renamed from SmartDeviceLink/SDLAudioPassThruCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLAudioPassThruCapabilities.m (renamed from SmartDeviceLink/SDLAudioPassThruCapabilities.m)0
-rwxr-xr-xSmartDeviceLink/public/SDLAudioStreamManager.h (renamed from SmartDeviceLink/SDLAudioStreamManager.h)0
-rwxr-xr-xSmartDeviceLink/public/SDLAudioStreamManager.m175
-rwxr-xr-xSmartDeviceLink/public/SDLAudioStreamManagerDelegate.h (renamed from SmartDeviceLink/SDLAudioStreamManagerDelegate.h)0
-rw-r--r--SmartDeviceLink/public/SDLAudioStreamingIndicator.h36
-rw-r--r--SmartDeviceLink/public/SDLAudioStreamingIndicator.m (renamed from SmartDeviceLink/SDLAudioStreamingIndicator.m)0
-rw-r--r--SmartDeviceLink/public/SDLAudioStreamingState.h29
-rw-r--r--SmartDeviceLink/public/SDLAudioStreamingState.m (renamed from SmartDeviceLink/SDLAudioStreamingState.m)0
-rw-r--r--SmartDeviceLink/public/SDLAudioType.h18
-rw-r--r--SmartDeviceLink/public/SDLAudioType.m (renamed from SmartDeviceLink/SDLAudioType.m)0
-rw-r--r--SmartDeviceLink/public/SDLBeltStatus.h (renamed from SmartDeviceLink/SDLBeltStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLBeltStatus.m (renamed from SmartDeviceLink/SDLBeltStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLBitsPerSample.h22
-rw-r--r--SmartDeviceLink/public/SDLBitsPerSample.m (renamed from SmartDeviceLink/SDLBitsPerSample.m)0
-rw-r--r--SmartDeviceLink/public/SDLBodyInformation.h (renamed from SmartDeviceLink/SDLBodyInformation.h)0
-rw-r--r--SmartDeviceLink/public/SDLBodyInformation.m (renamed from SmartDeviceLink/SDLBodyInformation.m)0
-rw-r--r--SmartDeviceLink/public/SDLButtonCapabilities.h (renamed from SmartDeviceLink/SDLButtonCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLButtonCapabilities.m (renamed from SmartDeviceLink/SDLButtonCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLButtonEventMode.h22
-rw-r--r--SmartDeviceLink/public/SDLButtonEventMode.m (renamed from SmartDeviceLink/SDLButtonEventMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLButtonName.h286
-rw-r--r--SmartDeviceLink/public/SDLButtonName.m (renamed from SmartDeviceLink/SDLButtonName.m)0
-rw-r--r--SmartDeviceLink/public/SDLButtonPress.h58
-rw-r--r--SmartDeviceLink/public/SDLButtonPress.m74
-rw-r--r--SmartDeviceLink/public/SDLButtonPressMode.h22
-rw-r--r--SmartDeviceLink/public/SDLButtonPressMode.m (renamed from SmartDeviceLink/SDLButtonPressMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLButtonPressResponse.h (renamed from SmartDeviceLink/SDLButtonPressResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLButtonPressResponse.m (renamed from SmartDeviceLink/SDLButtonPressResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLCancelInteraction.h154
-rw-r--r--SmartDeviceLink/public/SDLCancelInteraction.m135
-rw-r--r--SmartDeviceLink/public/SDLCancelInteractionResponse.h (renamed from SmartDeviceLink/SDLCancelInteractionResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLCancelInteractionResponse.m (renamed from SmartDeviceLink/SDLCancelInteractionResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLCapacityUnit.h48
-rw-r--r--SmartDeviceLink/public/SDLCapacityUnit.m37
-rw-r--r--SmartDeviceLink/public/SDLCarModeStatus.h32
-rw-r--r--SmartDeviceLink/public/SDLCarModeStatus.m (renamed from SmartDeviceLink/SDLCarModeStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLCarWindowViewController.h (renamed from SmartDeviceLink/SDLCarWindowViewController.h)0
-rw-r--r--SmartDeviceLink/public/SDLCarWindowViewController.m (renamed from SmartDeviceLink/SDLCarWindowViewController.m)0
-rw-r--r--SmartDeviceLink/public/SDLChangeRegistration.h (renamed from SmartDeviceLink/SDLChangeRegistration.h)0
-rw-r--r--SmartDeviceLink/public/SDLChangeRegistration.m (renamed from SmartDeviceLink/SDLChangeRegistration.m)0
-rw-r--r--SmartDeviceLink/public/SDLChangeRegistrationResponse.h (renamed from SmartDeviceLink/SDLChangeRegistrationResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLChangeRegistrationResponse.m (renamed from SmartDeviceLink/SDLChangeRegistrationResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLCharacterSet.h86
-rw-r--r--SmartDeviceLink/public/SDLCharacterSet.m41
-rw-r--r--SmartDeviceLink/public/SDLChoice.h (renamed from SmartDeviceLink/SDLChoice.h)0
-rw-r--r--SmartDeviceLink/public/SDLChoice.m (renamed from SmartDeviceLink/SDLChoice.m)0
-rw-r--r--SmartDeviceLink/public/SDLChoiceCell.h (renamed from SmartDeviceLink/SDLChoiceCell.h)0
-rw-r--r--SmartDeviceLink/public/SDLChoiceCell.m (renamed from SmartDeviceLink/SDLChoiceCell.m)0
-rw-r--r--SmartDeviceLink/public/SDLChoiceSet.h (renamed from SmartDeviceLink/SDLChoiceSet.h)0
-rw-r--r--SmartDeviceLink/public/SDLChoiceSet.m (renamed from SmartDeviceLink/SDLChoiceSet.m)0
-rw-r--r--SmartDeviceLink/public/SDLChoiceSetDelegate.h (renamed from SmartDeviceLink/SDLChoiceSetDelegate.h)0
-rw-r--r--SmartDeviceLink/public/SDLClimateControlCapabilities.h184
-rw-r--r--SmartDeviceLink/public/SDLClimateControlCapabilities.m185
-rw-r--r--SmartDeviceLink/public/SDLClimateControlData.h146
-rw-r--r--SmartDeviceLink/public/SDLClimateControlData.m160
-rw-r--r--SmartDeviceLink/public/SDLCloseApplication.h (renamed from SmartDeviceLink/SDLCloseApplication.h)0
-rw-r--r--SmartDeviceLink/public/SDLCloseApplication.m (renamed from SmartDeviceLink/SDLCloseApplication.m)0
-rw-r--r--SmartDeviceLink/public/SDLCloseApplicationResponse.h (renamed from SmartDeviceLink/SDLCloseApplicationResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLCloseApplicationResponse.m (renamed from SmartDeviceLink/SDLCloseApplicationResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLCloudAppProperties.h (renamed from SmartDeviceLink/SDLCloudAppProperties.h)0
-rw-r--r--SmartDeviceLink/public/SDLCloudAppProperties.m (renamed from SmartDeviceLink/SDLCloudAppProperties.m)0
-rw-r--r--SmartDeviceLink/public/SDLClusterModeStatus.h (renamed from SmartDeviceLink/SDLClusterModeStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLClusterModeStatus.m (renamed from SmartDeviceLink/SDLClusterModeStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLCompassDirection.h52
-rw-r--r--SmartDeviceLink/public/SDLCompassDirection.m (renamed from SmartDeviceLink/SDLCompassDirection.m)0
-rw-r--r--SmartDeviceLink/public/SDLComponentVolumeStatus.h42
-rw-r--r--SmartDeviceLink/public/SDLComponentVolumeStatus.m (renamed from SmartDeviceLink/SDLComponentVolumeStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLConfiguration.h80
-rw-r--r--SmartDeviceLink/public/SDLConfiguration.m77
-rw-r--r--SmartDeviceLink/public/SDLCreateInteractionChoiceSet.h (renamed from SmartDeviceLink/SDLCreateInteractionChoiceSet.h)0
-rw-r--r--SmartDeviceLink/public/SDLCreateInteractionChoiceSet.m (renamed from SmartDeviceLink/SDLCreateInteractionChoiceSet.m)0
-rw-r--r--SmartDeviceLink/public/SDLCreateInteractionChoiceSetResponse.h (renamed from SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLCreateInteractionChoiceSetResponse.m (renamed from SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLCreateWindow.h (renamed from SmartDeviceLink/SDLCreateWindow.h)0
-rw-r--r--SmartDeviceLink/public/SDLCreateWindow.m (renamed from SmartDeviceLink/SDLCreateWindow.m)0
-rw-r--r--SmartDeviceLink/public/SDLCreateWindowResponse.h (renamed from SmartDeviceLink/SDLCreateWindowResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLCreateWindowResponse.m (renamed from SmartDeviceLink/SDLCreateWindowResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDIDResult.h (renamed from SmartDeviceLink/SDLDIDResult.h)0
-rw-r--r--SmartDeviceLink/public/SDLDIDResult.m (renamed from SmartDeviceLink/SDLDIDResult.m)0
-rw-r--r--SmartDeviceLink/public/SDLDateTime.h (renamed from SmartDeviceLink/SDLDateTime.h)0
-rw-r--r--SmartDeviceLink/public/SDLDateTime.m (renamed from SmartDeviceLink/SDLDateTime.m)0
-rw-r--r--SmartDeviceLink/public/SDLDefrostZone.h32
-rw-r--r--SmartDeviceLink/public/SDLDefrostZone.m (renamed from SmartDeviceLink/SDLDefrostZone.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteCommand.h (renamed from SmartDeviceLink/SDLDeleteCommand.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteCommand.m (renamed from SmartDeviceLink/SDLDeleteCommand.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteCommandResponse.h (renamed from SmartDeviceLink/SDLDeleteCommandResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteCommandResponse.m (renamed from SmartDeviceLink/SDLDeleteCommandResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteFile.h (renamed from SmartDeviceLink/SDLDeleteFile.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteFile.m (renamed from SmartDeviceLink/SDLDeleteFile.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteFileResponse.h (renamed from SmartDeviceLink/SDLDeleteFileResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteFileResponse.m (renamed from SmartDeviceLink/SDLDeleteFileResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteInteractionChoiceSet.h (renamed from SmartDeviceLink/SDLDeleteInteractionChoiceSet.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteInteractionChoiceSet.m (renamed from SmartDeviceLink/SDLDeleteInteractionChoiceSet.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteInteractionChoiceSetResponse.h (renamed from SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteInteractionChoiceSetResponse.m (renamed from SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteSubMenu.h (renamed from SmartDeviceLink/SDLDeleteSubMenu.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteSubMenu.m46
-rw-r--r--SmartDeviceLink/public/SDLDeleteSubMenuResponse.h (renamed from SmartDeviceLink/SDLDeleteSubMenuResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteSubMenuResponse.m (renamed from SmartDeviceLink/SDLDeleteSubMenuResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteWindow.h (renamed from SmartDeviceLink/SDLDeleteWindow.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteWindow.m (renamed from SmartDeviceLink/SDLDeleteWindow.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteWindowResponse.h (renamed from SmartDeviceLink/SDLDeleteWindowResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeleteWindowResponse.m (renamed from SmartDeviceLink/SDLDeleteWindowResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeliveryMode.h24
-rw-r--r--SmartDeviceLink/public/SDLDeliveryMode.m (renamed from SmartDeviceLink/SDLDeliveryMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeviceInfo.h (renamed from SmartDeviceLink/SDLDeviceInfo.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeviceInfo.m (renamed from SmartDeviceLink/SDLDeviceInfo.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeviceLevelStatus.h42
-rw-r--r--SmartDeviceLink/public/SDLDeviceLevelStatus.m (renamed from SmartDeviceLink/SDLDeviceLevelStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLDeviceStatus.h (renamed from SmartDeviceLink/SDLDeviceStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLDeviceStatus.m (renamed from SmartDeviceLink/SDLDeviceStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLDiagnosticMessage.h (renamed from SmartDeviceLink/SDLDiagnosticMessage.h)0
-rw-r--r--SmartDeviceLink/public/SDLDiagnosticMessage.m (renamed from SmartDeviceLink/SDLDiagnosticMessage.m)0
-rw-r--r--SmartDeviceLink/public/SDLDiagnosticMessageResponse.h (renamed from SmartDeviceLink/SDLDiagnosticMessageResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLDiagnosticMessageResponse.m (renamed from SmartDeviceLink/SDLDiagnosticMessageResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDialNumber.h (renamed from SmartDeviceLink/SDLDialNumber.h)0
-rw-r--r--SmartDeviceLink/public/SDLDialNumber.m (renamed from SmartDeviceLink/SDLDialNumber.m)0
-rw-r--r--SmartDeviceLink/public/SDLDialNumberResponse.h (renamed from SmartDeviceLink/SDLDialNumberResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLDialNumberResponse.m (renamed from SmartDeviceLink/SDLDialNumberResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLDimension.h27
-rw-r--r--SmartDeviceLink/public/SDLDimension.m (renamed from SmartDeviceLink/SDLDimension.m)0
-rw-r--r--SmartDeviceLink/public/SDLDirection.h26
-rw-r--r--SmartDeviceLink/public/SDLDirection.m (renamed from SmartDeviceLink/SDLDirection.m)0
-rw-r--r--SmartDeviceLink/public/SDLDisplayCapabilities.h (renamed from SmartDeviceLink/SDLDisplayCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLDisplayCapabilities.m (renamed from SmartDeviceLink/SDLDisplayCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLDisplayCapability.h63
-rw-r--r--SmartDeviceLink/public/SDLDisplayCapability.m66
-rw-r--r--SmartDeviceLink/public/SDLDisplayMode.h26
-rw-r--r--SmartDeviceLink/public/SDLDisplayMode.m (renamed from SmartDeviceLink/SDLDisplayMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLDisplayType.h71
-rw-r--r--SmartDeviceLink/public/SDLDisplayType.m (renamed from SmartDeviceLink/SDLDisplayType.m)0
-rw-r--r--SmartDeviceLink/public/SDLDistanceUnit.h19
-rw-r--r--SmartDeviceLink/public/SDLDistanceUnit.m (renamed from SmartDeviceLink/SDLDistanceUnit.m)0
-rw-r--r--SmartDeviceLink/public/SDLDriverDistractionCapability.h63
-rw-r--r--SmartDeviceLink/public/SDLDriverDistractionCapability.m69
-rw-r--r--SmartDeviceLink/public/SDLDriverDistractionState.h23
-rw-r--r--SmartDeviceLink/public/SDLDriverDistractionState.m (renamed from SmartDeviceLink/SDLDriverDistractionState.m)0
-rw-r--r--SmartDeviceLink/public/SDLDynamicUpdateCapabilities.h63
-rw-r--r--SmartDeviceLink/public/SDLDynamicUpdateCapabilities.m71
-rw-r--r--SmartDeviceLink/public/SDLECallConfirmationStatus.h47
-rw-r--r--SmartDeviceLink/public/SDLECallConfirmationStatus.m (renamed from SmartDeviceLink/SDLECallConfirmationStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLECallInfo.h (renamed from SmartDeviceLink/SDLECallInfo.h)0
-rw-r--r--SmartDeviceLink/public/SDLECallInfo.m (renamed from SmartDeviceLink/SDLECallInfo.m)0
-rw-r--r--SmartDeviceLink/public/SDLElectronicParkBrakeStatus.h35
-rw-r--r--SmartDeviceLink/public/SDLElectronicParkBrakeStatus.m18
-rw-r--r--SmartDeviceLink/public/SDLEmergencyEvent.h (renamed from SmartDeviceLink/SDLEmergencyEvent.h)0
-rw-r--r--SmartDeviceLink/public/SDLEmergencyEvent.m (renamed from SmartDeviceLink/SDLEmergencyEvent.m)0
-rw-r--r--SmartDeviceLink/public/SDLEmergencyEventType.h47
-rw-r--r--SmartDeviceLink/public/SDLEmergencyEventType.m (renamed from SmartDeviceLink/SDLEmergencyEventType.m)0
-rw-r--r--SmartDeviceLink/public/SDLEncodedSyncPData.h (renamed from SmartDeviceLink/SDLEncodedSyncPData.h)0
-rw-r--r--SmartDeviceLink/public/SDLEncodedSyncPData.m (renamed from SmartDeviceLink/SDLEncodedSyncPData.m)0
-rw-r--r--SmartDeviceLink/public/SDLEncodedSyncPDataResponse.h (renamed from SmartDeviceLink/SDLEncodedSyncPDataResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLEncodedSyncPDataResponse.m (renamed from SmartDeviceLink/SDLEncodedSyncPDataResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLEncryptionConfiguration.h (renamed from SmartDeviceLink/SDLEncryptionConfiguration.h)0
-rw-r--r--SmartDeviceLink/public/SDLEncryptionConfiguration.m (renamed from SmartDeviceLink/SDLEncryptionConfiguration.m)0
-rw-r--r--SmartDeviceLink/public/SDLEndAudioPassThru.h (renamed from SmartDeviceLink/SDLEndAudioPassThru.h)0
-rw-r--r--SmartDeviceLink/public/SDLEndAudioPassThru.m (renamed from SmartDeviceLink/SDLEndAudioPassThru.m)0
-rw-r--r--SmartDeviceLink/public/SDLEndAudioPassThruResponse.h (renamed from SmartDeviceLink/SDLEndAudioPassThruResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLEndAudioPassThruResponse.m (renamed from SmartDeviceLink/SDLEndAudioPassThruResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLEnum.h25
-rw-r--r--SmartDeviceLink/public/SDLEnum.m (renamed from SmartDeviceLink/SDLEnum.m)0
-rw-r--r--SmartDeviceLink/public/SDLEqualizerSettings.h (renamed from SmartDeviceLink/SDLEqualizerSettings.h)0
-rw-r--r--SmartDeviceLink/public/SDLEqualizerSettings.m (renamed from SmartDeviceLink/SDLEqualizerSettings.m)0
-rw-r--r--SmartDeviceLink/public/SDLErrorConstants.h243
-rw-r--r--SmartDeviceLink/public/SDLErrorConstants.m25
-rw-r--r--SmartDeviceLink/public/SDLFile.h (renamed from SmartDeviceLink/SDLFile.h)0
-rw-r--r--SmartDeviceLink/public/SDLFile.m (renamed from SmartDeviceLink/SDLFile.m)0
-rw-r--r--SmartDeviceLink/public/SDLFileManager.h177
-rw-r--r--SmartDeviceLink/public/SDLFileManager.m602
-rw-r--r--SmartDeviceLink/public/SDLFileManagerConfiguration.h (renamed from SmartDeviceLink/SDLFileManagerConfiguration.h)0
-rw-r--r--SmartDeviceLink/public/SDLFileManagerConfiguration.m (renamed from SmartDeviceLink/SDLFileManagerConfiguration.m)0
-rw-r--r--SmartDeviceLink/public/SDLFileManagerConstants.h (renamed from SmartDeviceLink/SDLFileManagerConstants.h)0
-rw-r--r--SmartDeviceLink/public/SDLFileType.h52
-rw-r--r--SmartDeviceLink/public/SDLFileType.m (renamed from SmartDeviceLink/SDLFileType.m)0
-rw-r--r--SmartDeviceLink/public/SDLFuelCutoffStatus.h27
-rw-r--r--SmartDeviceLink/public/SDLFuelCutoffStatus.m (renamed from SmartDeviceLink/SDLFuelCutoffStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLFuelRange.h72
-rw-r--r--SmartDeviceLink/public/SDLFuelRange.m86
-rw-r--r--SmartDeviceLink/public/SDLFuelType.h52
-rw-r--r--SmartDeviceLink/public/SDLFuelType.m (renamed from SmartDeviceLink/SDLFuelType.m)0
-rw-r--r--SmartDeviceLink/public/SDLFunctionID.h (renamed from SmartDeviceLink/SDLFunctionID.h)0
-rw-r--r--SmartDeviceLink/public/SDLFunctionID.m144
-rw-r--r--SmartDeviceLink/public/SDLGPSData.h (renamed from SmartDeviceLink/SDLGPSData.h)0
-rw-r--r--SmartDeviceLink/public/SDLGPSData.m (renamed from SmartDeviceLink/SDLGPSData.m)0
-rw-r--r--SmartDeviceLink/public/SDLGearStatus.h71
-rw-r--r--SmartDeviceLink/public/SDLGearStatus.m83
-rw-r--r--SmartDeviceLink/public/SDLGenericResponse.h (renamed from SmartDeviceLink/SDLGenericResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGenericResponse.m (renamed from SmartDeviceLink/SDLGenericResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetAppServiceData.h (renamed from SmartDeviceLink/SDLGetAppServiceData.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetAppServiceData.m (renamed from SmartDeviceLink/SDLGetAppServiceData.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetAppServiceDataResponse.h (renamed from SmartDeviceLink/SDLGetAppServiceDataResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetAppServiceDataResponse.m (renamed from SmartDeviceLink/SDLGetAppServiceDataResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetCloudAppProperties.h (renamed from SmartDeviceLink/SDLGetCloudAppProperties.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetCloudAppProperties.m (renamed from SmartDeviceLink/SDLGetCloudAppProperties.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetCloudAppPropertiesResponse.h (renamed from SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetCloudAppPropertiesResponse.m (renamed from SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetDTCs.h (renamed from SmartDeviceLink/SDLGetDTCs.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetDTCs.m (renamed from SmartDeviceLink/SDLGetDTCs.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetDTCsResponse.h (renamed from SmartDeviceLink/SDLGetDTCsResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetDTCsResponse.m (renamed from SmartDeviceLink/SDLGetDTCsResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetFile.h (renamed from SmartDeviceLink/SDLGetFile.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetFile.m107
-rw-r--r--SmartDeviceLink/public/SDLGetFileResponse.h (renamed from SmartDeviceLink/SDLGetFileResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetFileResponse.m (renamed from SmartDeviceLink/SDLGetFileResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetInteriorVehicleData.h66
-rwxr-xr-xSmartDeviceLink/public/SDLGetInteriorVehicleData.m89
-rw-r--r--SmartDeviceLink/public/SDLGetInteriorVehicleDataConsent.h (renamed from SmartDeviceLink/SDLGetInteriorVehicleDataConsent.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetInteriorVehicleDataConsent.m (renamed from SmartDeviceLink/SDLGetInteriorVehicleDataConsent.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetInteriorVehicleDataConsentResponse.h (renamed from SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetInteriorVehicleDataConsentResponse.m (renamed from SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetInteriorVehicleDataResponse.h (renamed from SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetInteriorVehicleDataResponse.m (renamed from SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetSystemCapability.h (renamed from SmartDeviceLink/SDLGetSystemCapability.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetSystemCapability.m (renamed from SmartDeviceLink/SDLGetSystemCapability.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetSystemCapabilityResponse.h (renamed from SmartDeviceLink/SDLGetSystemCapabilityResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetSystemCapabilityResponse.m (renamed from SmartDeviceLink/SDLGetSystemCapabilityResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetVehicleData.h294
-rw-r--r--SmartDeviceLink/public/SDLGetVehicleData.m361
-rw-r--r--SmartDeviceLink/public/SDLGetVehicleDataResponse.h280
-rw-r--r--SmartDeviceLink/public/SDLGetVehicleDataResponse.m365
-rw-r--r--SmartDeviceLink/public/SDLGetWayPoints.h (renamed from SmartDeviceLink/SDLGetWayPoints.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetWayPoints.m (renamed from SmartDeviceLink/SDLGetWayPoints.m)0
-rw-r--r--SmartDeviceLink/public/SDLGetWayPointsResponse.h (renamed from SmartDeviceLink/SDLGetWayPointsResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLGetWayPointsResponse.m (renamed from SmartDeviceLink/SDLGetWayPointsResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLGlobalProperty.h52
-rw-r--r--SmartDeviceLink/public/SDLGlobalProperty.m (renamed from SmartDeviceLink/SDLGlobalProperty.m)0
-rw-r--r--SmartDeviceLink/public/SDLGrid.h (renamed from SmartDeviceLink/SDLGrid.h)0
-rw-r--r--SmartDeviceLink/public/SDLGrid.m (renamed from SmartDeviceLink/SDLGrid.m)0
-rw-r--r--SmartDeviceLink/public/SDLHMICapabilities.h131
-rw-r--r--SmartDeviceLink/public/SDLHMICapabilities.m124
-rw-r--r--SmartDeviceLink/public/SDLHMILevel.h36
-rw-r--r--SmartDeviceLink/public/SDLHMILevel.m (renamed from SmartDeviceLink/SDLHMILevel.m)0
-rw-r--r--SmartDeviceLink/public/SDLHMIPermissions.h (renamed from SmartDeviceLink/SDLHMIPermissions.h)0
-rw-r--r--SmartDeviceLink/public/SDLHMIPermissions.m (renamed from SmartDeviceLink/SDLHMIPermissions.m)0
-rw-r--r--SmartDeviceLink/public/SDLHMISettingsControlCapabilities.h75
-rw-r--r--SmartDeviceLink/public/SDLHMISettingsControlCapabilities.m81
-rw-r--r--SmartDeviceLink/public/SDLHMISettingsControlData.h (renamed from SmartDeviceLink/SDLHMISettingsControlData.h)0
-rw-r--r--SmartDeviceLink/public/SDLHMISettingsControlData.m (renamed from SmartDeviceLink/SDLHMISettingsControlData.m)0
-rw-r--r--SmartDeviceLink/public/SDLHMIZoneCapabilities.h22
-rw-r--r--SmartDeviceLink/public/SDLHMIZoneCapabilities.m (renamed from SmartDeviceLink/SDLHMIZoneCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLHapticRect.h (renamed from SmartDeviceLink/SDLHapticRect.h)0
-rw-r--r--SmartDeviceLink/public/SDLHapticRect.m (renamed from SmartDeviceLink/SDLHapticRect.m)0
-rw-r--r--SmartDeviceLink/public/SDLHeadLampStatus.h (renamed from SmartDeviceLink/SDLHeadLampStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLHeadLampStatus.m (renamed from SmartDeviceLink/SDLHeadLampStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLHybridAppPreference.h29
-rw-r--r--SmartDeviceLink/public/SDLHybridAppPreference.m (renamed from SmartDeviceLink/SDLHybridAppPreference.m)0
-rw-r--r--SmartDeviceLink/public/SDLIgnitionStableStatus.h27
-rw-r--r--SmartDeviceLink/public/SDLIgnitionStableStatus.m (renamed from SmartDeviceLink/SDLIgnitionStableStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLIgnitionStatus.h42
-rw-r--r--SmartDeviceLink/public/SDLIgnitionStatus.m (renamed from SmartDeviceLink/SDLIgnitionStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLImage.h75
-rw-r--r--SmartDeviceLink/public/SDLImage.m70
-rw-r--r--SmartDeviceLink/public/SDLImageField.h (renamed from SmartDeviceLink/SDLImageField.h)0
-rw-r--r--SmartDeviceLink/public/SDLImageField.m (renamed from SmartDeviceLink/SDLImageField.m)0
-rw-r--r--SmartDeviceLink/public/SDLImageFieldName.h127
-rw-r--r--SmartDeviceLink/public/SDLImageFieldName.m51
-rw-r--r--SmartDeviceLink/public/SDLImageResolution.h (renamed from SmartDeviceLink/SDLImageResolution.h)0
-rw-r--r--SmartDeviceLink/public/SDLImageResolution.m (renamed from SmartDeviceLink/SDLImageResolution.m)0
-rw-r--r--SmartDeviceLink/public/SDLImageType.h24
-rw-r--r--SmartDeviceLink/public/SDLImageType.m (renamed from SmartDeviceLink/SDLImageType.m)0
-rw-r--r--SmartDeviceLink/public/SDLInteractionMode.h37
-rw-r--r--SmartDeviceLink/public/SDLInteractionMode.m (renamed from SmartDeviceLink/SDLInteractionMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLKeyboardDelegate.h98
-rw-r--r--SmartDeviceLink/public/SDLKeyboardEvent.h39
-rw-r--r--SmartDeviceLink/public/SDLKeyboardEvent.m (renamed from SmartDeviceLink/SDLKeyboardEvent.m)0
-rw-r--r--SmartDeviceLink/public/SDLKeyboardLayout.h27
-rw-r--r--SmartDeviceLink/public/SDLKeyboardLayout.m (renamed from SmartDeviceLink/SDLKeyboardLayout.m)0
-rw-r--r--SmartDeviceLink/public/SDLKeyboardProperties.h76
-rw-r--r--SmartDeviceLink/public/SDLKeyboardProperties.m79
-rw-r--r--SmartDeviceLink/public/SDLKeypressMode.h31
-rw-r--r--SmartDeviceLink/public/SDLKeypressMode.m (renamed from SmartDeviceLink/SDLKeypressMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLLanguage.h207
-rw-r--r--SmartDeviceLink/public/SDLLanguage.m (renamed from SmartDeviceLink/SDLLanguage.m)0
-rw-r--r--SmartDeviceLink/public/SDLLayoutMode.h37
-rw-r--r--SmartDeviceLink/public/SDLLayoutMode.m (renamed from SmartDeviceLink/SDLLayoutMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLLifecycleConfiguration.h180
-rw-r--r--SmartDeviceLink/public/SDLLifecycleConfiguration.m163
-rw-r--r--SmartDeviceLink/public/SDLLifecycleConfigurationUpdate.h (renamed from SmartDeviceLink/SDLLifecycleConfigurationUpdate.h)0
-rw-r--r--SmartDeviceLink/public/SDLLifecycleConfigurationUpdate.m (renamed from SmartDeviceLink/SDLLifecycleConfigurationUpdate.m)0
-rw-r--r--SmartDeviceLink/public/SDLLightCapabilities.h (renamed from SmartDeviceLink/SDLLightCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLLightCapabilities.m (renamed from SmartDeviceLink/SDLLightCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLLightControlCapabilities.h51
-rw-r--r--SmartDeviceLink/public/SDLLightControlCapabilities.m54
-rw-r--r--SmartDeviceLink/public/SDLLightControlData.h (renamed from SmartDeviceLink/SDLLightControlData.h)0
-rw-r--r--SmartDeviceLink/public/SDLLightControlData.m (renamed from SmartDeviceLink/SDLLightControlData.m)0
-rw-r--r--SmartDeviceLink/public/SDLLightName.h259
-rw-r--r--SmartDeviceLink/public/SDLLightName.m (renamed from SmartDeviceLink/SDLLightName.m)0
-rw-r--r--SmartDeviceLink/public/SDLLightState.h (renamed from SmartDeviceLink/SDLLightState.h)0
-rw-r--r--SmartDeviceLink/public/SDLLightState.m (renamed from SmartDeviceLink/SDLLightState.m)0
-rw-r--r--SmartDeviceLink/public/SDLLightStatus.h40
-rw-r--r--SmartDeviceLink/public/SDLLightStatus.m (renamed from SmartDeviceLink/SDLLightStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLListFiles.h (renamed from SmartDeviceLink/SDLListFiles.h)0
-rw-r--r--SmartDeviceLink/public/SDLListFiles.m (renamed from SmartDeviceLink/SDLListFiles.m)0
-rw-r--r--SmartDeviceLink/public/SDLListFilesResponse.h (renamed from SmartDeviceLink/SDLListFilesResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLListFilesResponse.m (renamed from SmartDeviceLink/SDLListFilesResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLLocationCoordinate.h (renamed from SmartDeviceLink/SDLLocationCoordinate.h)0
-rw-r--r--SmartDeviceLink/public/SDLLocationCoordinate.m (renamed from SmartDeviceLink/SDLLocationCoordinate.m)0
-rw-r--r--SmartDeviceLink/public/SDLLocationDetails.h (renamed from SmartDeviceLink/SDLLocationDetails.h)0
-rw-r--r--SmartDeviceLink/public/SDLLocationDetails.m (renamed from SmartDeviceLink/SDLLocationDetails.m)0
-rw-r--r--SmartDeviceLink/public/SDLLockScreenConfiguration.h104
-rw-r--r--SmartDeviceLink/public/SDLLockScreenConfiguration.m72
-rw-r--r--SmartDeviceLink/public/SDLLockScreenViewController.h (renamed from SmartDeviceLink/SDLLockScreenViewController.h)0
-rw-r--r--SmartDeviceLink/public/SDLLockScreenViewController.m (renamed from SmartDeviceLink/SDLLockScreenViewController.m)0
-rw-r--r--SmartDeviceLink/public/SDLLogConfiguration.h81
-rw-r--r--SmartDeviceLink/public/SDLLogConfiguration.m85
-rw-r--r--SmartDeviceLink/public/SDLLogConstants.h (renamed from SmartDeviceLink/SDLLogConstants.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogFileModule.h (renamed from SmartDeviceLink/SDLLogFileModule.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogFileModule.m (renamed from SmartDeviceLink/SDLLogFileModule.m)0
-rw-r--r--SmartDeviceLink/public/SDLLogFilter.h (renamed from SmartDeviceLink/SDLLogFilter.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogFilter.m (renamed from SmartDeviceLink/SDLLogFilter.m)0
-rw-r--r--SmartDeviceLink/public/SDLLogMacros.h (renamed from SmartDeviceLink/SDLLogMacros.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogManager.h (renamed from SmartDeviceLink/SDLLogManager.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogManager.m351
-rw-r--r--SmartDeviceLink/public/SDLLogTarget.h (renamed from SmartDeviceLink/SDLLogTarget.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogTargetAppleSystemLog.h26
-rw-r--r--SmartDeviceLink/public/SDLLogTargetAppleSystemLog.m80
-rw-r--r--SmartDeviceLink/public/SDLLogTargetFile.h (renamed from SmartDeviceLink/SDLLogTargetFile.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogTargetFile.m (renamed from SmartDeviceLink/SDLLogTargetFile.m)0
-rw-r--r--SmartDeviceLink/public/SDLLogTargetOSLog.h (renamed from SmartDeviceLink/SDLLogTargetOSLog.h)0
-rw-r--r--SmartDeviceLink/public/SDLLogTargetOSLog.m83
-rw-r--r--SmartDeviceLink/public/SDLMaintenanceModeStatus.h30
-rw-r--r--SmartDeviceLink/public/SDLMaintenanceModeStatus.m (renamed from SmartDeviceLink/SDLMaintenanceModeStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLManager.h (renamed from SmartDeviceLink/SDLManager.h)0
-rw-r--r--SmartDeviceLink/public/SDLManager.m (renamed from SmartDeviceLink/SDLManager.m)0
-rw-r--r--SmartDeviceLink/public/SDLManagerDelegate.h72
-rw-r--r--SmartDeviceLink/public/SDLMassageCushion.h35
-rw-r--r--SmartDeviceLink/public/SDLMassageCushion.m (renamed from SmartDeviceLink/SDLMassageCushion.m)0
-rw-r--r--SmartDeviceLink/public/SDLMassageCushionFirmness.h (renamed from SmartDeviceLink/SDLMassageCushionFirmness.h)0
-rw-r--r--SmartDeviceLink/public/SDLMassageCushionFirmness.m (renamed from SmartDeviceLink/SDLMassageCushionFirmness.m)0
-rw-r--r--SmartDeviceLink/public/SDLMassageMode.h25
-rw-r--r--SmartDeviceLink/public/SDLMassageMode.m (renamed from SmartDeviceLink/SDLMassageMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLMassageModeData.h (renamed from SmartDeviceLink/SDLMassageModeData.h)0
-rw-r--r--SmartDeviceLink/public/SDLMassageModeData.m (renamed from SmartDeviceLink/SDLMassageModeData.m)0
-rw-r--r--SmartDeviceLink/public/SDLMassageZone.h20
-rw-r--r--SmartDeviceLink/public/SDLMassageZone.m (renamed from SmartDeviceLink/SDLMassageZone.m)0
-rw-r--r--SmartDeviceLink/public/SDLMediaClockFormat.h115
-rw-r--r--SmartDeviceLink/public/SDLMediaClockFormat.m (renamed from SmartDeviceLink/SDLMediaClockFormat.m)0
-rw-r--r--SmartDeviceLink/public/SDLMediaServiceData.h158
-rw-r--r--SmartDeviceLink/public/SDLMediaServiceData.m148
-rw-r--r--SmartDeviceLink/public/SDLMediaServiceManifest.h (renamed from SmartDeviceLink/SDLMediaServiceManifest.h)0
-rw-r--r--SmartDeviceLink/public/SDLMediaServiceManifest.m (renamed from SmartDeviceLink/SDLMediaServiceManifest.m)0
-rw-r--r--SmartDeviceLink/public/SDLMediaType.h35
-rw-r--r--SmartDeviceLink/public/SDLMediaType.m (renamed from SmartDeviceLink/SDLMediaType.m)0
-rw-r--r--SmartDeviceLink/public/SDLMenuCell.h83
-rw-r--r--SmartDeviceLink/public/SDLMenuCell.m88
-rw-r--r--SmartDeviceLink/public/SDLMenuConfiguration.h (renamed from SmartDeviceLink/SDLMenuConfiguration.h)0
-rw-r--r--SmartDeviceLink/public/SDLMenuConfiguration.m (renamed from SmartDeviceLink/SDLMenuConfiguration.m)0
-rw-r--r--SmartDeviceLink/public/SDLMenuLayout.h25
-rw-r--r--SmartDeviceLink/public/SDLMenuLayout.m (renamed from SmartDeviceLink/SDLMenuLayout.m)0
-rw-r--r--SmartDeviceLink/public/SDLMenuManagerConstants.h (renamed from SmartDeviceLink/SDLMenuManagerConstants.h)0
-rw-r--r--SmartDeviceLink/public/SDLMenuParams.h (renamed from SmartDeviceLink/SDLMenuParams.h)0
-rw-r--r--SmartDeviceLink/public/SDLMenuParams.m63
-rw-r--r--SmartDeviceLink/public/SDLMetadataTags.h (renamed from SmartDeviceLink/SDLMetadataTags.h)0
-rw-r--r--SmartDeviceLink/public/SDLMetadataTags.m (renamed from SmartDeviceLink/SDLMetadataTags.m)0
-rw-r--r--SmartDeviceLink/public/SDLMetadataType.h76
-rw-r--r--SmartDeviceLink/public/SDLMetadataType.m (renamed from SmartDeviceLink/SDLMetadataType.m)0
-rw-r--r--SmartDeviceLink/public/SDLModuleData.h (renamed from SmartDeviceLink/SDLModuleData.h)0
-rw-r--r--SmartDeviceLink/public/SDLModuleData.m (renamed from SmartDeviceLink/SDLModuleData.m)0
-rw-r--r--SmartDeviceLink/public/SDLModuleInfo.h (renamed from SmartDeviceLink/SDLModuleInfo.h)0
-rw-r--r--SmartDeviceLink/public/SDLModuleInfo.m (renamed from SmartDeviceLink/SDLModuleInfo.m)0
-rw-r--r--SmartDeviceLink/public/SDLModuleType.h41
-rw-r--r--SmartDeviceLink/public/SDLModuleType.m (renamed from SmartDeviceLink/SDLModuleType.m)0
-rw-r--r--SmartDeviceLink/public/SDLMsgVersion.h (renamed from SmartDeviceLink/SDLMsgVersion.h)0
-rw-r--r--SmartDeviceLink/public/SDLMsgVersion.m (renamed from SmartDeviceLink/SDLMsgVersion.m)0
-rw-r--r--SmartDeviceLink/public/SDLMyKey.h (renamed from SmartDeviceLink/SDLMyKey.h)0
-rw-r--r--SmartDeviceLink/public/SDLMyKey.m (renamed from SmartDeviceLink/SDLMyKey.m)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationAction.h49
-rw-r--r--SmartDeviceLink/public/SDLNavigationAction.m (renamed from SmartDeviceLink/SDLNavigationAction.m)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationCapability.h (renamed from SmartDeviceLink/SDLNavigationCapability.h)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationCapability.m (renamed from SmartDeviceLink/SDLNavigationCapability.m)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationInstruction.h (renamed from SmartDeviceLink/SDLNavigationInstruction.h)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationInstruction.m (renamed from SmartDeviceLink/SDLNavigationInstruction.m)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationJunction.h54
-rw-r--r--SmartDeviceLink/public/SDLNavigationJunction.m (renamed from SmartDeviceLink/SDLNavigationJunction.m)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationServiceData.h (renamed from SmartDeviceLink/SDLNavigationServiceData.h)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationServiceData.m (renamed from SmartDeviceLink/SDLNavigationServiceData.m)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationServiceManifest.h (renamed from SmartDeviceLink/SDLNavigationServiceManifest.h)0
-rw-r--r--SmartDeviceLink/public/SDLNavigationServiceManifest.m (renamed from SmartDeviceLink/SDLNavigationServiceManifest.m)0
-rw-r--r--SmartDeviceLink/public/SDLNotificationConstants.h635
-rw-r--r--SmartDeviceLink/public/SDLNotificationConstants.m271
-rw-r--r--SmartDeviceLink/public/SDLOasisAddress.h (renamed from SmartDeviceLink/SDLOasisAddress.h)0
-rw-r--r--SmartDeviceLink/public/SDLOasisAddress.m (renamed from SmartDeviceLink/SDLOasisAddress.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnAppInterfaceUnregistered.h (renamed from SmartDeviceLink/SDLOnAppInterfaceUnregistered.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnAppInterfaceUnregistered.m (renamed from SmartDeviceLink/SDLOnAppInterfaceUnregistered.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnAppServiceData.h (renamed from SmartDeviceLink/SDLOnAppServiceData.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnAppServiceData.m (renamed from SmartDeviceLink/SDLOnAppServiceData.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnAudioPassThru.h (renamed from SmartDeviceLink/SDLOnAudioPassThru.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnAudioPassThru.m (renamed from SmartDeviceLink/SDLOnAudioPassThru.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnButtonEvent.h (renamed from SmartDeviceLink/SDLOnButtonEvent.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnButtonEvent.m (renamed from SmartDeviceLink/SDLOnButtonEvent.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnButtonPress.h (renamed from SmartDeviceLink/SDLOnButtonPress.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnButtonPress.m (renamed from SmartDeviceLink/SDLOnButtonPress.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnCommand.h (renamed from SmartDeviceLink/SDLOnCommand.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnCommand.m (renamed from SmartDeviceLink/SDLOnCommand.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnDriverDistraction.h (renamed from SmartDeviceLink/SDLOnDriverDistraction.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnDriverDistraction.m (renamed from SmartDeviceLink/SDLOnDriverDistraction.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnEncodedSyncPData.h (renamed from SmartDeviceLink/SDLOnEncodedSyncPData.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnEncodedSyncPData.m (renamed from SmartDeviceLink/SDLOnEncodedSyncPData.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnHMIStatus.h (renamed from SmartDeviceLink/SDLOnHMIStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnHMIStatus.m (renamed from SmartDeviceLink/SDLOnHMIStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnHashChange.h (renamed from SmartDeviceLink/SDLOnHashChange.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnHashChange.m (renamed from SmartDeviceLink/SDLOnHashChange.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnInteriorVehicleData.h (renamed from SmartDeviceLink/SDLOnInteriorVehicleData.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnInteriorVehicleData.m (renamed from SmartDeviceLink/SDLOnInteriorVehicleData.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnKeyboardInput.h (renamed from SmartDeviceLink/SDLOnKeyboardInput.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnKeyboardInput.m (renamed from SmartDeviceLink/SDLOnKeyboardInput.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnLanguageChange.h (renamed from SmartDeviceLink/SDLOnLanguageChange.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnLanguageChange.m (renamed from SmartDeviceLink/SDLOnLanguageChange.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnPermissionsChange.h (renamed from SmartDeviceLink/SDLOnPermissionsChange.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnPermissionsChange.m (renamed from SmartDeviceLink/SDLOnPermissionsChange.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnRCStatus.h (renamed from SmartDeviceLink/SDLOnRCStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnRCStatus.m (renamed from SmartDeviceLink/SDLOnRCStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnSubtleAlertPressed.h46
-rw-r--r--SmartDeviceLink/public/SDLOnSubtleAlertPressed.m56
-rw-r--r--SmartDeviceLink/public/SDLOnSyncPData.h (renamed from SmartDeviceLink/SDLOnSyncPData.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnSyncPData.m (renamed from SmartDeviceLink/SDLOnSyncPData.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnSystemCapabilityUpdated.h (renamed from SmartDeviceLink/SDLOnSystemCapabilityUpdated.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnSystemCapabilityUpdated.m (renamed from SmartDeviceLink/SDLOnSystemCapabilityUpdated.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnSystemRequest.h (renamed from SmartDeviceLink/SDLOnSystemRequest.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnSystemRequest.m (renamed from SmartDeviceLink/SDLOnSystemRequest.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnTBTClientState.h (renamed from SmartDeviceLink/SDLOnTBTClientState.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnTBTClientState.m (renamed from SmartDeviceLink/SDLOnTBTClientState.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnTouchEvent.h (renamed from SmartDeviceLink/SDLOnTouchEvent.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnTouchEvent.m (renamed from SmartDeviceLink/SDLOnTouchEvent.m)0
-rw-r--r--SmartDeviceLink/public/SDLOnUpdateFile.h58
-rw-r--r--SmartDeviceLink/public/SDLOnUpdateFile.m74
-rw-r--r--SmartDeviceLink/public/SDLOnUpdateSubMenu.h70
-rw-r--r--SmartDeviceLink/public/SDLOnUpdateSubMenu.m91
-rw-r--r--SmartDeviceLink/public/SDLOnVehicleData.h280
-rw-r--r--SmartDeviceLink/public/SDLOnVehicleData.m363
-rw-r--r--SmartDeviceLink/public/SDLOnWayPointChange.h (renamed from SmartDeviceLink/SDLOnWayPointChange.h)0
-rw-r--r--SmartDeviceLink/public/SDLOnWayPointChange.m (renamed from SmartDeviceLink/SDLOnWayPointChange.m)0
-rw-r--r--SmartDeviceLink/public/SDLPRNDL.h104
-rw-r--r--SmartDeviceLink/public/SDLPRNDL.m24
-rw-r--r--SmartDeviceLink/public/SDLParameterPermissions.h (renamed from SmartDeviceLink/SDLParameterPermissions.h)0
-rw-r--r--SmartDeviceLink/public/SDLParameterPermissions.m (renamed from SmartDeviceLink/SDLParameterPermissions.m)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAppServiceInteraction.h (renamed from SmartDeviceLink/SDLPerformAppServiceInteraction.h)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAppServiceInteraction.m (renamed from SmartDeviceLink/SDLPerformAppServiceInteraction.m)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAppServiceInteractionResponse.h (renamed from SmartDeviceLink/SDLPerformAppServiceInteractionResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAppServiceInteractionResponse.m (renamed from SmartDeviceLink/SDLPerformAppServiceInteractionResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAudioPassThru.h (renamed from SmartDeviceLink/SDLPerformAudioPassThru.h)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAudioPassThru.m (renamed from SmartDeviceLink/SDLPerformAudioPassThru.m)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAudioPassThruResponse.h (renamed from SmartDeviceLink/SDLPerformAudioPassThruResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLPerformAudioPassThruResponse.m (renamed from SmartDeviceLink/SDLPerformAudioPassThruResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLPerformInteraction.h154
-rw-r--r--SmartDeviceLink/public/SDLPerformInteraction.m139
-rw-r--r--SmartDeviceLink/public/SDLPerformInteractionResponse.h (renamed from SmartDeviceLink/SDLPerformInteractionResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLPerformInteractionResponse.m (renamed from SmartDeviceLink/SDLPerformInteractionResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLPermissionConstants.h83
-rw-r--r--SmartDeviceLink/public/SDLPermissionElement.h (renamed from SmartDeviceLink/SDLPermissionElement.h)0
-rw-r--r--SmartDeviceLink/public/SDLPermissionElement.m (renamed from SmartDeviceLink/SDLPermissionElement.m)0
-rw-r--r--SmartDeviceLink/public/SDLPermissionItem.h (renamed from SmartDeviceLink/SDLPermissionItem.h)0
-rw-r--r--SmartDeviceLink/public/SDLPermissionItem.m (renamed from SmartDeviceLink/SDLPermissionItem.m)0
-rw-r--r--SmartDeviceLink/public/SDLPermissionManager.h110
-rw-r--r--SmartDeviceLink/public/SDLPermissionManager.m426
-rw-r--r--SmartDeviceLink/public/SDLPermissionStatus.h32
-rw-r--r--SmartDeviceLink/public/SDLPermissionStatus.m (renamed from SmartDeviceLink/SDLPermissionStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLPhoneCapability.h (renamed from SmartDeviceLink/SDLPhoneCapability.h)0
-rw-r--r--SmartDeviceLink/public/SDLPhoneCapability.m (renamed from SmartDeviceLink/SDLPhoneCapability.m)0
-rw-r--r--SmartDeviceLink/public/SDLPinchGesture.h (renamed from SmartDeviceLink/SDLPinchGesture.h)0
-rw-r--r--SmartDeviceLink/public/SDLPinchGesture.m (renamed from SmartDeviceLink/SDLPinchGesture.m)0
-rw-r--r--SmartDeviceLink/public/SDLPowerModeQualificationStatus.h30
-rw-r--r--SmartDeviceLink/public/SDLPowerModeQualificationStatus.m (renamed from SmartDeviceLink/SDLPowerModeQualificationStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLPowerModeStatus.h55
-rw-r--r--SmartDeviceLink/public/SDLPowerModeStatus.m (renamed from SmartDeviceLink/SDLPowerModeStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLPredefinedLayout.h119
-rw-r--r--SmartDeviceLink/public/SDLPredefinedLayout.m27
-rw-r--r--SmartDeviceLink/public/SDLPredefinedWindows.h (renamed from SmartDeviceLink/SDLPredefinedWindows.h)0
-rw-r--r--SmartDeviceLink/public/SDLPrerecordedSpeech.h35
-rw-r--r--SmartDeviceLink/public/SDLPrerecordedSpeech.m (renamed from SmartDeviceLink/SDLPrerecordedSpeech.m)0
-rw-r--r--SmartDeviceLink/public/SDLPresetBankCapabilities.h (renamed from SmartDeviceLink/SDLPresetBankCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLPresetBankCapabilities.m (renamed from SmartDeviceLink/SDLPresetBankCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLPrimaryAudioSource.h72
-rw-r--r--SmartDeviceLink/public/SDLPrimaryAudioSource.m (renamed from SmartDeviceLink/SDLPrimaryAudioSource.m)0
-rw-r--r--SmartDeviceLink/public/SDLProtocolConstants.h (renamed from SmartDeviceLink/SDLProtocolConstants.h)0
-rw-r--r--SmartDeviceLink/public/SDLProtocolConstants.m (renamed from SmartDeviceLink/SDLProtocolConstants.m)0
-rw-r--r--SmartDeviceLink/public/SDLPublishAppService.h (renamed from SmartDeviceLink/SDLPublishAppService.h)0
-rw-r--r--SmartDeviceLink/public/SDLPublishAppService.m (renamed from SmartDeviceLink/SDLPublishAppService.m)0
-rw-r--r--SmartDeviceLink/public/SDLPublishAppServiceResponse.h (renamed from SmartDeviceLink/SDLPublishAppServiceResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLPublishAppServiceResponse.m (renamed from SmartDeviceLink/SDLPublishAppServiceResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLPutFile.h124
-rw-r--r--SmartDeviceLink/public/SDLPutFile.m146
-rw-r--r--SmartDeviceLink/public/SDLPutFileResponse.h (renamed from SmartDeviceLink/SDLPutFileResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLPutFileResponse.m (renamed from SmartDeviceLink/SDLPutFileResponse.m)0
-rwxr-xr-xSmartDeviceLink/public/SDLRDSData.h (renamed from SmartDeviceLink/SDLRDSData.h)0
-rwxr-xr-xSmartDeviceLink/public/SDLRDSData.m (renamed from SmartDeviceLink/SDLRDSData.m)0
-rw-r--r--SmartDeviceLink/public/SDLRGBColor.h (renamed from SmartDeviceLink/SDLRGBColor.h)0
-rw-r--r--SmartDeviceLink/public/SDLRGBColor.m (renamed from SmartDeviceLink/SDLRGBColor.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCFunctionNames.h292
-rw-r--r--SmartDeviceLink/public/SDLRPCFunctionNames.m102
-rw-r--r--SmartDeviceLink/public/SDLRPCMessage.h60
-rw-r--r--SmartDeviceLink/public/SDLRPCMessage.m94
-rw-r--r--SmartDeviceLink/public/SDLRPCMessageType.h32
-rw-r--r--SmartDeviceLink/public/SDLRPCMessageType.m (renamed from SmartDeviceLink/SDLRPCMessageType.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCNotification.h (renamed from SmartDeviceLink/SDLRPCNotification.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCNotification.m (renamed from SmartDeviceLink/SDLRPCNotification.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCNotificationNotification.h (renamed from SmartDeviceLink/SDLRPCNotificationNotification.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCNotificationNotification.m (renamed from SmartDeviceLink/SDLRPCNotificationNotification.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCPermissionStatus.h (renamed from SmartDeviceLink/SDLRPCPermissionStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCPermissionStatus.m (renamed from SmartDeviceLink/SDLRPCPermissionStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCRequest.h (renamed from SmartDeviceLink/SDLRPCRequest.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCRequest.m (renamed from SmartDeviceLink/SDLRPCRequest.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCRequestNotification.h (renamed from SmartDeviceLink/SDLRPCRequestNotification.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCRequestNotification.m (renamed from SmartDeviceLink/SDLRPCRequestNotification.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCResponse.h (renamed from SmartDeviceLink/SDLRPCResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCResponse.m (renamed from SmartDeviceLink/SDLRPCResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCResponseNotification.h (renamed from SmartDeviceLink/SDLRPCResponseNotification.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCResponseNotification.m (renamed from SmartDeviceLink/SDLRPCResponseNotification.m)0
-rw-r--r--SmartDeviceLink/public/SDLRPCStruct.h (renamed from SmartDeviceLink/SDLRPCStruct.h)0
-rw-r--r--SmartDeviceLink/public/SDLRPCStruct.m (renamed from SmartDeviceLink/SDLRPCStruct.m)0
-rw-r--r--SmartDeviceLink/public/SDLRadioBand.h25
-rw-r--r--SmartDeviceLink/public/SDLRadioBand.m (renamed from SmartDeviceLink/SDLRadioBand.m)0
-rw-r--r--SmartDeviceLink/public/SDLRadioControlCapabilities.h168
-rw-r--r--SmartDeviceLink/public/SDLRadioControlCapabilities.m160
-rw-r--r--SmartDeviceLink/public/SDLRadioControlData.h160
-rw-r--r--SmartDeviceLink/public/SDLRadioControlData.m176
-rw-r--r--SmartDeviceLink/public/SDLRadioState.h30
-rw-r--r--SmartDeviceLink/public/SDLRadioState.m (renamed from SmartDeviceLink/SDLRadioState.m)0
-rw-r--r--SmartDeviceLink/public/SDLReadDID.h (renamed from SmartDeviceLink/SDLReadDID.h)0
-rw-r--r--SmartDeviceLink/public/SDLReadDID.m (renamed from SmartDeviceLink/SDLReadDID.m)0
-rw-r--r--SmartDeviceLink/public/SDLReadDIDResponse.h (renamed from SmartDeviceLink/SDLReadDIDResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLReadDIDResponse.m (renamed from SmartDeviceLink/SDLReadDIDResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLRectangle.h (renamed from SmartDeviceLink/SDLRectangle.h)0
-rw-r--r--SmartDeviceLink/public/SDLRectangle.m (renamed from SmartDeviceLink/SDLRectangle.m)0
-rw-r--r--SmartDeviceLink/public/SDLRegisterAppInterface.h236
-rw-r--r--SmartDeviceLink/public/SDLRegisterAppInterface.m232
-rw-r--r--SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.h205
-rw-r--r--SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.m187
-rw-r--r--SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModule.h (renamed from SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.h)0
-rw-r--r--SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModule.m (renamed from SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.m)0
-rw-r--r--SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModuleResponse.h (renamed from SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModuleResponse.m (renamed from SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLRemoteControlCapabilities.h89
-rw-r--r--SmartDeviceLink/public/SDLRemoteControlCapabilities.m117
-rw-r--r--SmartDeviceLink/public/SDLRequestType.h121
-rw-r--r--SmartDeviceLink/public/SDLRequestType.m (renamed from SmartDeviceLink/SDLRequestType.m)0
-rw-r--r--SmartDeviceLink/public/SDLResetGlobalProperties.h (renamed from SmartDeviceLink/SDLResetGlobalProperties.h)0
-rw-r--r--SmartDeviceLink/public/SDLResetGlobalProperties.m (renamed from SmartDeviceLink/SDLResetGlobalProperties.m)0
-rw-r--r--SmartDeviceLink/public/SDLResetGlobalPropertiesResponse.h (renamed from SmartDeviceLink/SDLResetGlobalPropertiesResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLResetGlobalPropertiesResponse.m (renamed from SmartDeviceLink/SDLResetGlobalPropertiesResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLResult.h215
-rw-r--r--SmartDeviceLink/public/SDLResult.m (renamed from SmartDeviceLink/SDLResult.m)0
-rw-r--r--SmartDeviceLink/public/SDLSISData.h (renamed from SmartDeviceLink/SDLSISData.h)0
-rw-r--r--SmartDeviceLink/public/SDLSISData.m (renamed from SmartDeviceLink/SDLSISData.m)0
-rw-r--r--SmartDeviceLink/public/SDLSamplingRate.h32
-rw-r--r--SmartDeviceLink/public/SDLSamplingRate.m (renamed from SmartDeviceLink/SDLSamplingRate.m)0
-rw-r--r--SmartDeviceLink/public/SDLScreenManager.h407
-rw-r--r--SmartDeviceLink/public/SDLScreenManager.m331
-rw-r--r--SmartDeviceLink/public/SDLScreenParams.h (renamed from SmartDeviceLink/SDLScreenParams.h)0
-rw-r--r--SmartDeviceLink/public/SDLScreenParams.m (renamed from SmartDeviceLink/SDLScreenParams.m)0
-rw-r--r--SmartDeviceLink/public/SDLScrollableMessage.h78
-rw-r--r--SmartDeviceLink/public/SDLScrollableMessage.m82
-rw-r--r--SmartDeviceLink/public/SDLScrollableMessageResponse.h (renamed from SmartDeviceLink/SDLScrollableMessageResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLScrollableMessageResponse.m (renamed from SmartDeviceLink/SDLScrollableMessageResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSeatControlCapabilities.h167
-rw-r--r--SmartDeviceLink/public/SDLSeatControlCapabilities.m215
-rw-r--r--SmartDeviceLink/public/SDLSeatControlData.h195
-rw-r--r--SmartDeviceLink/public/SDLSeatControlData.m210
-rw-r--r--SmartDeviceLink/public/SDLSeatLocation.h (renamed from SmartDeviceLink/SDLSeatLocation.h)0
-rw-r--r--SmartDeviceLink/public/SDLSeatLocation.m (renamed from SmartDeviceLink/SDLSeatLocation.m)0
-rw-r--r--SmartDeviceLink/public/SDLSeatLocationCapability.h (renamed from SmartDeviceLink/SDLSeatLocationCapability.h)0
-rw-r--r--SmartDeviceLink/public/SDLSeatLocationCapability.m (renamed from SmartDeviceLink/SDLSeatLocationCapability.m)0
-rw-r--r--SmartDeviceLink/public/SDLSeatMemoryAction.h (renamed from SmartDeviceLink/SDLSeatMemoryAction.h)0
-rw-r--r--SmartDeviceLink/public/SDLSeatMemoryAction.m (renamed from SmartDeviceLink/SDLSeatMemoryAction.m)0
-rw-r--r--SmartDeviceLink/public/SDLSeatMemoryActionType.h27
-rw-r--r--SmartDeviceLink/public/SDLSeatMemoryActionType.m (renamed from SmartDeviceLink/SDLSeatMemoryActionType.m)0
-rw-r--r--SmartDeviceLink/public/SDLSecurityType.h (renamed from SmartDeviceLink/SDLSecurityType.h)0
-rw-r--r--SmartDeviceLink/public/SDLSendHapticData.h (renamed from SmartDeviceLink/SDLSendHapticData.h)0
-rw-r--r--SmartDeviceLink/public/SDLSendHapticData.m (renamed from SmartDeviceLink/SDLSendHapticData.m)0
-rw-r--r--SmartDeviceLink/public/SDLSendHapticDataResponse.h (renamed from SmartDeviceLink/SDLSendHapticDataResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSendHapticDataResponse.m (renamed from SmartDeviceLink/SDLSendHapticDataResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSendLocation.h (renamed from SmartDeviceLink/SDLSendLocation.h)0
-rw-r--r--SmartDeviceLink/public/SDLSendLocation.m (renamed from SmartDeviceLink/SDLSendLocation.m)0
-rw-r--r--SmartDeviceLink/public/SDLSendLocationResponse.h (renamed from SmartDeviceLink/SDLSendLocationResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSendLocationResponse.m (renamed from SmartDeviceLink/SDLSendLocationResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLServiceEncryptionDelegate.h (renamed from SmartDeviceLink/SDLServiceEncryptionDelegate.h)0
-rw-r--r--SmartDeviceLink/public/SDLServiceUpdateReason.h64
-rw-r--r--SmartDeviceLink/public/SDLServiceUpdateReason.m21
-rw-r--r--SmartDeviceLink/public/SDLSetAppIcon.h (renamed from SmartDeviceLink/SDLSetAppIcon.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetAppIcon.m (renamed from SmartDeviceLink/SDLSetAppIcon.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetAppIconResponse.h (renamed from SmartDeviceLink/SDLSetAppIconResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetAppIconResponse.m (renamed from SmartDeviceLink/SDLSetAppIconResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetCloudAppProperties.h (renamed from SmartDeviceLink/SDLSetCloudAppProperties.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetCloudAppProperties.m (renamed from SmartDeviceLink/SDLSetCloudAppProperties.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetCloudAppPropertiesResponse.h (renamed from SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetCloudAppPropertiesResponse.m (renamed from SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetDisplayLayout.h73
-rw-r--r--SmartDeviceLink/public/SDLSetDisplayLayout.m81
-rw-r--r--SmartDeviceLink/public/SDLSetDisplayLayoutResponse.h (renamed from SmartDeviceLink/SDLSetDisplayLayoutResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetDisplayLayoutResponse.m (renamed from SmartDeviceLink/SDLSetDisplayLayoutResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetGlobalProperties.h121
-rw-r--r--SmartDeviceLink/public/SDLSetGlobalProperties.m126
-rw-r--r--SmartDeviceLink/public/SDLSetGlobalPropertiesResponse.h (renamed from SmartDeviceLink/SDLSetGlobalPropertiesResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetGlobalPropertiesResponse.m (renamed from SmartDeviceLink/SDLSetGlobalPropertiesResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetInteriorVehicleData.h (renamed from SmartDeviceLink/SDLSetInteriorVehicleData.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetInteriorVehicleData.m (renamed from SmartDeviceLink/SDLSetInteriorVehicleData.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetInteriorVehicleDataResponse.h (renamed from SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetInteriorVehicleDataResponse.m (renamed from SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSetMediaClockTimer.h174
-rw-r--r--SmartDeviceLink/public/SDLSetMediaClockTimer.m117
-rw-r--r--SmartDeviceLink/public/SDLSetMediaClockTimerResponse.h (renamed from SmartDeviceLink/SDLSetMediaClockTimerResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSetMediaClockTimerResponse.m (renamed from SmartDeviceLink/SDLSetMediaClockTimerResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLShow.h (renamed from SmartDeviceLink/SDLShow.h)0
-rw-r--r--SmartDeviceLink/public/SDLShow.m (renamed from SmartDeviceLink/SDLShow.m)0
-rw-r--r--SmartDeviceLink/public/SDLShowAppMenu.h (renamed from SmartDeviceLink/SDLShowAppMenu.h)0
-rw-r--r--SmartDeviceLink/public/SDLShowAppMenu.m48
-rw-r--r--SmartDeviceLink/public/SDLShowAppMenuResponse.h (renamed from SmartDeviceLink/SDLShowAppMenuResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLShowAppMenuResponse.m (renamed from SmartDeviceLink/SDLShowAppMenuResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLShowConstantTBT.h (renamed from SmartDeviceLink/SDLShowConstantTBT.h)0
-rw-r--r--SmartDeviceLink/public/SDLShowConstantTBT.m (renamed from SmartDeviceLink/SDLShowConstantTBT.m)0
-rw-r--r--SmartDeviceLink/public/SDLShowConstantTBTResponse.h (renamed from SmartDeviceLink/SDLShowConstantTBTResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLShowConstantTBTResponse.m (renamed from SmartDeviceLink/SDLShowConstantTBTResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLShowResponse.h (renamed from SmartDeviceLink/SDLShowResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLShowResponse.m (renamed from SmartDeviceLink/SDLShowResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSingleTireStatus.h (renamed from SmartDeviceLink/SDLSingleTireStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLSingleTireStatus.m (renamed from SmartDeviceLink/SDLSingleTireStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLSlider.h (renamed from SmartDeviceLink/SDLSlider.h)0
-rw-r--r--SmartDeviceLink/public/SDLSlider.m (renamed from SmartDeviceLink/SDLSlider.m)0
-rw-r--r--SmartDeviceLink/public/SDLSliderResponse.h (renamed from SmartDeviceLink/SDLSliderResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSliderResponse.m (renamed from SmartDeviceLink/SDLSliderResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButton.h (renamed from SmartDeviceLink/SDLSoftButton.h)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButton.m (renamed from SmartDeviceLink/SDLSoftButton.m)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonCapabilities.h (renamed from SmartDeviceLink/SDLSoftButtonCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonCapabilities.m (renamed from SmartDeviceLink/SDLSoftButtonCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonObject.h (renamed from SmartDeviceLink/SDLSoftButtonObject.h)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonObject.m (renamed from SmartDeviceLink/SDLSoftButtonObject.m)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonState.h (renamed from SmartDeviceLink/SDLSoftButtonState.h)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonState.m (renamed from SmartDeviceLink/SDLSoftButtonState.m)0
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonType.h25
-rw-r--r--SmartDeviceLink/public/SDLSoftButtonType.m (renamed from SmartDeviceLink/SDLSoftButtonType.m)0
-rw-r--r--SmartDeviceLink/public/SDLSpeak.h (renamed from SmartDeviceLink/SDLSpeak.h)0
-rw-r--r--SmartDeviceLink/public/SDLSpeak.m (renamed from SmartDeviceLink/SDLSpeak.m)0
-rw-r--r--SmartDeviceLink/public/SDLSpeakResponse.h (renamed from SmartDeviceLink/SDLSpeakResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSpeakResponse.m (renamed from SmartDeviceLink/SDLSpeakResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSpeechCapabilities.h42
-rw-r--r--SmartDeviceLink/public/SDLSpeechCapabilities.m (renamed from SmartDeviceLink/SDLSpeechCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLStabilityControlsStatus.h62
-rw-r--r--SmartDeviceLink/public/SDLStabilityControlsStatus.m70
-rw-r--r--SmartDeviceLink/public/SDLStartTime.h (renamed from SmartDeviceLink/SDLStartTime.h)0
-rw-r--r--SmartDeviceLink/public/SDLStartTime.m (renamed from SmartDeviceLink/SDLStartTime.m)0
-rw-r--r--SmartDeviceLink/public/SDLStaticIconName.h900
-rw-r--r--SmartDeviceLink/public/SDLStaticIconName.m (renamed from SmartDeviceLink/SDLStaticIconName.m)0
-rw-r--r--SmartDeviceLink/public/SDLStationIDNumber.h (renamed from SmartDeviceLink/SDLStationIDNumber.h)0
-rw-r--r--SmartDeviceLink/public/SDLStationIDNumber.m (renamed from SmartDeviceLink/SDLStationIDNumber.m)0
-rw-r--r--SmartDeviceLink/public/SDLStreamingAudioManagerType.h (renamed from SmartDeviceLink/SDLStreamingAudioManagerType.h)0
-rw-r--r--SmartDeviceLink/public/SDLStreamingMediaConfiguration.h134
-rw-r--r--SmartDeviceLink/public/SDLStreamingMediaConfiguration.m68
-rw-r--r--SmartDeviceLink/public/SDLStreamingMediaManager.h186
-rw-r--r--SmartDeviceLink/public/SDLStreamingMediaManager.m291
-rw-r--r--SmartDeviceLink/public/SDLStreamingMediaManagerConstants.h (renamed from SmartDeviceLink/SDLStreamingMediaManagerConstants.h)0
-rw-r--r--SmartDeviceLink/public/SDLStreamingMediaManagerConstants.m (renamed from SmartDeviceLink/SDLStreamingMediaManagerConstants.m)0
-rw-r--r--SmartDeviceLink/public/SDLStreamingMediaManagerDataSource.h (renamed from SmartDeviceLink/SDLStreamingMediaManagerDataSource.h)0
-rw-r--r--SmartDeviceLink/public/SDLStreamingVideoScaleManager.h (renamed from SmartDeviceLink/SDLStreamingVideoScaleManager.h)0
-rw-r--r--SmartDeviceLink/public/SDLStreamingVideoScaleManager.m (renamed from SmartDeviceLink/SDLStreamingVideoScaleManager.m)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeButton.h (renamed from SmartDeviceLink/SDLSubscribeButton.h)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeButton.m (renamed from SmartDeviceLink/SDLSubscribeButton.m)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeButtonResponse.h (renamed from SmartDeviceLink/SDLSubscribeButtonResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeButtonResponse.m (renamed from SmartDeviceLink/SDLSubscribeButtonResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleData.h289
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleData.m353
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h306
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m341
-rw-r--r--SmartDeviceLink/public/SDLSubscribeWayPoints.h (renamed from SmartDeviceLink/SDLSubscribeWayPoints.h)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeWayPoints.m (renamed from SmartDeviceLink/SDLSubscribeWayPoints.m)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeWayPointsResponse.h (renamed from SmartDeviceLink/SDLSubscribeWayPointsResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSubscribeWayPointsResponse.m (renamed from SmartDeviceLink/SDLSubscribeWayPointsResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSubtleAlert.h103
-rw-r--r--SmartDeviceLink/public/SDLSubtleAlert.m130
-rw-r--r--SmartDeviceLink/public/SDLSubtleAlertResponse.h56
-rw-r--r--SmartDeviceLink/public/SDLSubtleAlertResponse.m73
-rw-r--r--SmartDeviceLink/public/SDLSupportedSeat.h23
-rw-r--r--SmartDeviceLink/public/SDLSupportedSeat.m7
-rw-r--r--SmartDeviceLink/public/SDLSyncPData.h (renamed from SmartDeviceLink/SDLSyncPData.h)0
-rw-r--r--SmartDeviceLink/public/SDLSyncPData.m (renamed from SmartDeviceLink/SDLSyncPData.m)0
-rw-r--r--SmartDeviceLink/public/SDLSyncPDataResponse.h (renamed from SmartDeviceLink/SDLSyncPDataResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSyncPDataResponse.m (renamed from SmartDeviceLink/SDLSyncPDataResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLSystemAction.h25
-rw-r--r--SmartDeviceLink/public/SDLSystemAction.m (renamed from SmartDeviceLink/SDLSystemAction.m)0
-rwxr-xr-xSmartDeviceLink/public/SDLSystemCapability.h180
-rwxr-xr-xSmartDeviceLink/public/SDLSystemCapability.m222
-rw-r--r--SmartDeviceLink/public/SDLSystemCapabilityManager.h300
-rw-r--r--SmartDeviceLink/public/SDLSystemCapabilityManager.m821
-rwxr-xr-xSmartDeviceLink/public/SDLSystemCapabilityType.h80
-rwxr-xr-xSmartDeviceLink/public/SDLSystemCapabilityType.m18
-rw-r--r--SmartDeviceLink/public/SDLSystemContext.h41
-rw-r--r--SmartDeviceLink/public/SDLSystemContext.m (renamed from SmartDeviceLink/SDLSystemContext.m)0
-rw-r--r--SmartDeviceLink/public/SDLSystemRequest.h (renamed from SmartDeviceLink/SDLSystemRequest.h)0
-rw-r--r--SmartDeviceLink/public/SDLSystemRequest.m74
-rw-r--r--SmartDeviceLink/public/SDLSystemRequestResponse.h (renamed from SmartDeviceLink/SDLSystemRequestResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLSystemRequestResponse.m (renamed from SmartDeviceLink/SDLSystemRequestResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLTBTState.h60
-rw-r--r--SmartDeviceLink/public/SDLTBTState.m (renamed from SmartDeviceLink/SDLTBTState.m)0
-rw-r--r--SmartDeviceLink/public/SDLTPMS.h50
-rw-r--r--SmartDeviceLink/public/SDLTPMS.m (renamed from SmartDeviceLink/SDLTPMS.m)0
-rw-r--r--SmartDeviceLink/public/SDLTTSChunk.h (renamed from SmartDeviceLink/SDLTTSChunk.h)0
-rw-r--r--SmartDeviceLink/public/SDLTTSChunk.m (renamed from SmartDeviceLink/SDLTTSChunk.m)0
-rw-r--r--SmartDeviceLink/public/SDLTemperature.h (renamed from SmartDeviceLink/SDLTemperature.h)0
-rw-r--r--SmartDeviceLink/public/SDLTemperature.m (renamed from SmartDeviceLink/SDLTemperature.m)0
-rw-r--r--SmartDeviceLink/public/SDLTemperatureUnit.h21
-rw-r--r--SmartDeviceLink/public/SDLTemperatureUnit.m (renamed from SmartDeviceLink/SDLTemperatureUnit.m)0
-rw-r--r--SmartDeviceLink/public/SDLTemplateColorScheme.h (renamed from SmartDeviceLink/SDLTemplateColorScheme.h)0
-rw-r--r--SmartDeviceLink/public/SDLTemplateColorScheme.m (renamed from SmartDeviceLink/SDLTemplateColorScheme.m)0
-rw-r--r--SmartDeviceLink/public/SDLTemplateConfiguration.h (renamed from SmartDeviceLink/SDLTemplateConfiguration.h)0
-rw-r--r--SmartDeviceLink/public/SDLTemplateConfiguration.m (renamed from SmartDeviceLink/SDLTemplateConfiguration.m)0
-rw-r--r--SmartDeviceLink/public/SDLTextAlignment.h27
-rw-r--r--SmartDeviceLink/public/SDLTextAlignment.m (renamed from SmartDeviceLink/SDLTextAlignment.m)0
-rw-r--r--SmartDeviceLink/public/SDLTextField.h56
-rw-r--r--SmartDeviceLink/public/SDLTextField.m (renamed from SmartDeviceLink/SDLTextField.m)0
-rw-r--r--SmartDeviceLink/public/SDLTextFieldName.h250
-rw-r--r--SmartDeviceLink/public/SDLTextFieldName.m66
-rw-r--r--SmartDeviceLink/public/SDLTimerMode.h25
-rw-r--r--SmartDeviceLink/public/SDLTimerMode.m (renamed from SmartDeviceLink/SDLTimerMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLTireStatus.h (renamed from SmartDeviceLink/SDLTireStatus.h)0
-rw-r--r--SmartDeviceLink/public/SDLTireStatus.m (renamed from SmartDeviceLink/SDLTireStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLTouch.h (renamed from SmartDeviceLink/SDLTouch.h)0
-rw-r--r--SmartDeviceLink/public/SDLTouch.m (renamed from SmartDeviceLink/SDLTouch.m)0
-rw-r--r--SmartDeviceLink/public/SDLTouchCoord.h (renamed from SmartDeviceLink/SDLTouchCoord.h)0
-rw-r--r--SmartDeviceLink/public/SDLTouchCoord.m (renamed from SmartDeviceLink/SDLTouchCoord.m)0
-rw-r--r--SmartDeviceLink/public/SDLTouchEvent.h (renamed from SmartDeviceLink/SDLTouchEvent.h)0
-rw-r--r--SmartDeviceLink/public/SDLTouchEvent.m (renamed from SmartDeviceLink/SDLTouchEvent.m)0
-rw-r--r--SmartDeviceLink/public/SDLTouchEventCapabilities.h (renamed from SmartDeviceLink/SDLTouchEventCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLTouchEventCapabilities.m (renamed from SmartDeviceLink/SDLTouchEventCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLTouchManager.h99
-rw-r--r--SmartDeviceLink/public/SDLTouchManager.m498
-rw-r--r--SmartDeviceLink/public/SDLTouchManagerDelegate.h (renamed from SmartDeviceLink/SDLTouchManagerDelegate.h)0
-rw-r--r--SmartDeviceLink/public/SDLTouchType.h30
-rw-r--r--SmartDeviceLink/public/SDLTouchType.m (renamed from SmartDeviceLink/SDLTouchType.m)0
-rw-r--r--SmartDeviceLink/public/SDLTransmissionType.h80
-rw-r--r--SmartDeviceLink/public/SDLTransmissionType.m42
-rw-r--r--SmartDeviceLink/public/SDLTriggerSource.h27
-rw-r--r--SmartDeviceLink/public/SDLTriggerSource.m (renamed from SmartDeviceLink/SDLTriggerSource.m)0
-rw-r--r--SmartDeviceLink/public/SDLTurn.h (renamed from SmartDeviceLink/SDLTurn.h)0
-rw-r--r--SmartDeviceLink/public/SDLTurn.m (renamed from SmartDeviceLink/SDLTurn.m)0
-rw-r--r--SmartDeviceLink/public/SDLTurnSignal.h34
-rw-r--r--SmartDeviceLink/public/SDLTurnSignal.m (renamed from SmartDeviceLink/SDLTurnSignal.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnpublishAppService.h (renamed from SmartDeviceLink/SDLUnpublishAppService.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnpublishAppService.m (renamed from SmartDeviceLink/SDLUnpublishAppService.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnpublishAppServiceResponse.h (renamed from SmartDeviceLink/SDLUnpublishAppServiceResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnpublishAppServiceResponse.m (renamed from SmartDeviceLink/SDLUnpublishAppServiceResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnregisterAppInterface.h (renamed from SmartDeviceLink/SDLUnregisterAppInterface.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnregisterAppInterface.m (renamed from SmartDeviceLink/SDLUnregisterAppInterface.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnregisterAppInterfaceResponse.h (renamed from SmartDeviceLink/SDLUnregisterAppInterfaceResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnregisterAppInterfaceResponse.m (renamed from SmartDeviceLink/SDLUnregisterAppInterfaceResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeButton.h (renamed from SmartDeviceLink/SDLUnsubscribeButton.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeButton.m (renamed from SmartDeviceLink/SDLUnsubscribeButton.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeButtonResponse.h (renamed from SmartDeviceLink/SDLUnsubscribeButtonResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeButtonResponse.m (renamed from SmartDeviceLink/SDLUnsubscribeButtonResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleData.h291
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleData.m353
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h305
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m342
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeWayPoints.h (renamed from SmartDeviceLink/SDLUnsubscribeWayPoints.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeWayPoints.m (renamed from SmartDeviceLink/SDLUnsubscribeWayPoints.m)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeWayPointsResponse.h (renamed from SmartDeviceLink/SDLUnsubscribeWayPointsResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeWayPointsResponse.m (renamed from SmartDeviceLink/SDLUnsubscribeWayPointsResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLUpdateMode.h37
-rw-r--r--SmartDeviceLink/public/SDLUpdateMode.m (renamed from SmartDeviceLink/SDLUpdateMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLUpdateTurnList.h (renamed from SmartDeviceLink/SDLUpdateTurnList.h)0
-rw-r--r--SmartDeviceLink/public/SDLUpdateTurnList.m (renamed from SmartDeviceLink/SDLUpdateTurnList.m)0
-rw-r--r--SmartDeviceLink/public/SDLUpdateTurnListResponse.h (renamed from SmartDeviceLink/SDLUpdateTurnListResponse.h)0
-rw-r--r--SmartDeviceLink/public/SDLUpdateTurnListResponse.m (renamed from SmartDeviceLink/SDLUpdateTurnListResponse.m)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataActiveStatus.h35
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataActiveStatus.m (renamed from SmartDeviceLink/SDLVehicleDataActiveStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataEventStatus.h37
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataEventStatus.m (renamed from SmartDeviceLink/SDLVehicleDataEventStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataNotificationStatus.h32
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataNotificationStatus.m (renamed from SmartDeviceLink/SDLVehicleDataNotificationStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataResult.h (renamed from SmartDeviceLink/SDLVehicleDataResult.h)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataResult.m (renamed from SmartDeviceLink/SDLVehicleDataResult.m)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataResultCode.h55
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataResultCode.m (renamed from SmartDeviceLink/SDLVehicleDataResultCode.m)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataStatus.h27
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataStatus.m (renamed from SmartDeviceLink/SDLVehicleDataStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataType.h196
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataType.m42
-rw-r--r--SmartDeviceLink/public/SDLVehicleType.h (renamed from SmartDeviceLink/SDLVehicleType.h)0
-rw-r--r--SmartDeviceLink/public/SDLVehicleType.m (renamed from SmartDeviceLink/SDLVehicleType.m)0
-rw-r--r--SmartDeviceLink/public/SDLVentilationMode.h31
-rw-r--r--SmartDeviceLink/public/SDLVentilationMode.m (renamed from SmartDeviceLink/SDLVentilationMode.m)0
-rw-r--r--SmartDeviceLink/public/SDLVersion.h105
-rw-r--r--SmartDeviceLink/public/SDLVersion.m144
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingCapability.h89
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingCapability.m95
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingCodec.h36
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingCodec.m (renamed from SmartDeviceLink/SDLVideoStreamingCodec.m)0
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingFormat.h (renamed from SmartDeviceLink/SDLVideoStreamingFormat.h)0
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingFormat.m (renamed from SmartDeviceLink/SDLVideoStreamingFormat.m)0
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingProtocol.h36
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingProtocol.m (renamed from SmartDeviceLink/SDLVideoStreamingProtocol.m)0
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingState.h24
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingState.m (renamed from SmartDeviceLink/SDLVideoStreamingState.m)0
-rw-r--r--SmartDeviceLink/public/SDLVoiceCommand.h (renamed from SmartDeviceLink/SDLVoiceCommand.h)0
-rw-r--r--SmartDeviceLink/public/SDLVoiceCommand.m (renamed from SmartDeviceLink/SDLVoiceCommand.m)0
-rw-r--r--SmartDeviceLink/public/SDLVrCapabilities.h17
-rw-r--r--SmartDeviceLink/public/SDLVrCapabilities.m (renamed from SmartDeviceLink/SDLVrCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLVrHelpItem.h (renamed from SmartDeviceLink/SDLVrHelpItem.h)0
-rw-r--r--SmartDeviceLink/public/SDLVrHelpItem.m (renamed from SmartDeviceLink/SDLVrHelpItem.m)0
-rw-r--r--SmartDeviceLink/public/SDLWarningLightStatus.h32
-rw-r--r--SmartDeviceLink/public/SDLWarningLightStatus.m (renamed from SmartDeviceLink/SDLWarningLightStatus.m)0
-rw-r--r--SmartDeviceLink/public/SDLWayPointType.h19
-rw-r--r--SmartDeviceLink/public/SDLWayPointType.m (renamed from SmartDeviceLink/SDLWayPointType.m)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherAlert.h (renamed from SmartDeviceLink/SDLWeatherAlert.h)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherAlert.m (renamed from SmartDeviceLink/SDLWeatherAlert.m)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherData.h (renamed from SmartDeviceLink/SDLWeatherData.h)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherData.m (renamed from SmartDeviceLink/SDLWeatherData.m)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherServiceData.h (renamed from SmartDeviceLink/SDLWeatherServiceData.h)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherServiceData.m (renamed from SmartDeviceLink/SDLWeatherServiceData.m)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherServiceManifest.h (renamed from SmartDeviceLink/SDLWeatherServiceManifest.h)0
-rw-r--r--SmartDeviceLink/public/SDLWeatherServiceManifest.m (renamed from SmartDeviceLink/SDLWeatherServiceManifest.m)0
-rw-r--r--SmartDeviceLink/public/SDLWindowCapability.h141
-rw-r--r--SmartDeviceLink/public/SDLWindowCapability.m144
-rw-r--r--SmartDeviceLink/public/SDLWindowState.h65
-rw-r--r--SmartDeviceLink/public/SDLWindowState.m71
-rw-r--r--SmartDeviceLink/public/SDLWindowStatus.h70
-rw-r--r--SmartDeviceLink/public/SDLWindowStatus.m73
-rw-r--r--SmartDeviceLink/public/SDLWindowType.h21
-rw-r--r--SmartDeviceLink/public/SDLWindowType.m (renamed from SmartDeviceLink/SDLWindowType.m)0
-rw-r--r--SmartDeviceLink/public/SDLWindowTypeCapabilities.h (renamed from SmartDeviceLink/SDLWindowTypeCapabilities.h)0
-rw-r--r--SmartDeviceLink/public/SDLWindowTypeCapabilities.m (renamed from SmartDeviceLink/SDLWindowTypeCapabilities.m)0
-rw-r--r--SmartDeviceLink/public/SDLWiperStatus.h85
-rw-r--r--SmartDeviceLink/public/SDLWiperStatus.m (renamed from SmartDeviceLink/SDLWiperStatus.m)0
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetManagerSpec.m2
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m78
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m75
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m225
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleSystemRequestHandlerSpec.m2
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m20
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m316
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m26
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m122
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m1070
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLPreloadChoicesOperationSpec.m23
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m1
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLStreamingMediaConfigurationSpec.m127
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m9
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicManagerSpec.m860
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicStateSpec.m72
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicUpdateOperationSpec.m1267
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m17
-rw-r--r--SmartDeviceLinkTests/LoggingSpecs/SDLLogConfigurationSpec.m14
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/ControlFramePayloadSpecs/SDLControlFramePayloadNakSpec.m9
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m124
-rw-r--r--SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m2
-rw-r--r--SmartDeviceLinkTests/ProxySpecs/SDLHapticManagerSpec.m78
-rw-r--r--SmartDeviceLinkTests/ProxySpecs/SDLLockScreenStatusManagerSpec.m118
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m1
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppInterfaceUnregisteredReasonSpec.m1
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCapacityUnitSpec.m21
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCharacterSetSpec.m6
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDisplayTypeSpec.m3
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLImageFieldNameSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLockScreenStatusSpec.m26
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPRNDLSpec.m6
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedLayoutSpec.m1
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLServiceUpdateReasonSpec.m9
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSupportedSeatSpec.m3
-rwxr-xr-xSmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m3
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m3
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTransmissionTypeSpec.m25
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m63
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m80
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSubtleAlertPressedSpec.m29
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m68
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateFileSpec.m74
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateSubMenuSpec.m88
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m506
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m36
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m65
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m196
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m41
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCancelInteractionSpec.m14
-rwxr-xr-xSmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m2
-rwxr-xr-xSmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m49
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m530
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m174
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m79
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m149
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m29
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m112
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m22
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowAppMenuSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m481
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubtleAlertSpec.m107
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m503
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m495
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m81
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m363
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubtleAlertResponseSpec.m54
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m407
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m9
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m153
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m11
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m73
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m135
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m32
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m52
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDriverDistractionCapabilitySpec.m60
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDynamicUpdateCapabilitiesSpec.m75
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m76
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGearStatusSpec.m48
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m69
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m46
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m27
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m18
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m21
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m26
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m4
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m68
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m66
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m12
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m54
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m96
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStabilityControlsStatusSpec.m66
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m59
-rwxr-xr-xSmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m45
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m15
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m84
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStateSpec.m50
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStatusSpec.m56
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m172
-rw-r--r--SmartDeviceLinkTests/SDLCacheFileManagerSpec.m4
-rw-r--r--SmartDeviceLinkTests/SDLOnLockScreenStatusSpec.m53
-rw-r--r--SmartDeviceLinkTests/SDLScreenManagerSpec.m33
-rw-r--r--SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m40
-rw-r--r--SmartDeviceLinkTests/TestHapticRectViewController.h18
-rw-r--r--SmartDeviceLinkTests/TestHapticRectViewController.m38
-rw-r--r--SmartDeviceLinkTests/TestSubscribeButtonObserver.h (renamed from SmartDeviceLink/TestSubscribeButtonObserver.h)0
-rw-r--r--SmartDeviceLinkTests/TestSubscribeButtonObserver.m (renamed from SmartDeviceLink/TestSubscribeButtonObserver.m)0
-rw-r--r--SmartDeviceLinkTests/UtilitiesSpecs/Touches/SDLTouchManagerSpec.m13
-rw-r--r--SmartDeviceLink_Example/SubscribeButtonManager.m69
-rw-r--r--SmartDeviceLink_Example/SubscribeButtonManager.swift53
-rw-r--r--generator/templates/base_struct_function.m.jinja24
-rw-r--r--generator/templates/description.jinja215
-rw-r--r--generator/templates/description_param.jinja215
-rw-r--r--generator/templates/functions/template.m.jinja22
-rw-r--r--generator/templates/structs/template.m.jinja21
-rw-r--r--generator/transformers/common_producer.py102
-rw-r--r--generator/transformers/enums_producer.py4
-rw-r--r--generator/transformers/functions_producer.py1
-rw-r--r--generator/transformers/structs_producer.py1
1532 files changed, 53686 insertions, 52075 deletions
diff --git a/Example Apps/Example ObjC/AlertManager.h b/Example Apps/Example ObjC/AlertManager.h
index 10508261a..d7b42b655 100644
--- a/Example Apps/Example ObjC/AlertManager.h
+++ b/Example Apps/Example ObjC/AlertManager.h
@@ -9,20 +9,26 @@
#import <Foundation/Foundation.h>
@class SDLAlert;
+@class SDLManager;
+@class SDLSubtleAlert;
NS_ASSUME_NONNULL_BEGIN
@interface AlertManager : NSObject
-/**
- Creates an alert with up to two lines of text, an image, and a close button that will dismiss the alert when tapped.
-
- @param textField1 The first line of the message to display in the alert
- @param textField2 The second line of the message to display in the alert
- @param iconName An image to show in the alert.
- @return An SDLAlert object
- */
-+ (SDLAlert *)alertWithMessageAndCloseButton:(NSString *)textField1 textField2:(nullable NSString *)textField2 iconName:(nullable NSString *)iconName;
+/// Sends an alert with up to two lines of text, an image, and a close button that will dismiss the alert when tapped.
+/// @param imageName The name of the image to upload
+/// @param textField1 The first line of text in the alert
+/// @param textField2 The second line of text in the alert
+/// @param sdlManager The SDLManager
++ (void)sendAlertWithManager:(SDLManager *)sdlManager image:(nullable NSString *)imageName textField1:(NSString *)textField1 textField2:(nullable NSString *)textField2;
+
+/// Sends a subtle alert with up to two lines of text, and an image.
+/// @param imageName The name of the image to upload
+/// @param textField1 The first line of text in the alert
+/// @param textField2 The second line of text in the alert
+/// @param sdlManager The SDLManager
++ (void)sendSubtleAlertWithManager:(SDLManager *)sdlManager image:(nullable NSString *)imageName textField1:(NSString *)textField1 textField2:(nullable NSString *)textField2;
@end
diff --git a/Example Apps/Example ObjC/AlertManager.m b/Example Apps/Example ObjC/AlertManager.m
index 3efbba544..9ee13fcdd 100644
--- a/Example Apps/Example ObjC/AlertManager.m
+++ b/Example Apps/Example ObjC/AlertManager.m
@@ -14,12 +14,47 @@ NS_ASSUME_NONNULL_BEGIN
@implementation AlertManager
-+ (SDLSoftButton *)sdlex_okSoftButton {
- return [[SDLSoftButton alloc] initWithType:SDLSoftButtonTypeText text:AlertOKButtonText image:nil highlighted:YES buttonId:1 systemAction:nil handler:nil];
++ (void)sendAlertWithManager:(SDLManager *)sdlManager image:(nullable NSString *)imageName textField1:(NSString *)textField1 textField2:(nullable NSString *)textField2 {
+ SDLSoftButton *okSoftButton = [[SDLSoftButton alloc] initWithType:SDLSoftButtonTypeText text:AlertOKButtonText image:nil highlighted:YES buttonId:1 systemAction:nil handler:nil];
+ SDLAlert *alert = [[SDLAlert alloc] initWithAlertText1:textField1 alertText2:textField2 alertText3:nil softButtons:@[okSoftButton] playTone:YES ttsChunks:nil duration:5000 progressIndicator:NO alertIcon:nil cancelID:0];
+
+ if (imageName == nil) {
+ [sdlManager sendRequest:alert];
+ } else {
+ [self sdlex_sendImageWithName:imageName sdlManager:sdlManager completionHandler:^(BOOL success, NSString * _Nullable artworkName) {
+ if (success) {
+ alert.alertIcon = [[SDLImage alloc] initWithName:artworkName isTemplate:YES];
+ }
+ [sdlManager sendRequest:alert];
+ }];
+ }
}
-+ (SDLAlert *)alertWithMessageAndCloseButton:(NSString *)textField1 textField2:(nullable NSString *)textField2 iconName:(nullable NSString *)iconName {
- return [[SDLAlert alloc] initWithAlertText1:textField1 alertText2:textField2 alertText3:nil softButtons:@[[self.class sdlex_okSoftButton]] playTone:YES ttsChunks:nil duration:5000 progressIndicator:NO alertIcon:((iconName != nil) ? [[SDLImage alloc] initWithName:iconName isTemplate:YES] : nil) cancelID:0];
++ (void)sendSubtleAlertWithManager:(SDLManager *)sdlManager image:(nullable NSString *)imageName textField1:(NSString *)textField1 textField2:(nullable NSString *)textField2 {
+ SDLSubtleAlert *subtleAlert = [[SDLSubtleAlert alloc] initWithAlertText1:textField1 alertText2:textField2 alertIcon:nil ttsChunks:nil duration:nil softButtons:nil cancelID:0];
+
+ if (imageName == nil) {
+ [sdlManager sendRequest:subtleAlert];
+ } else {
+ [self sdlex_sendImageWithName:imageName sdlManager:sdlManager completionHandler:^(BOOL success, NSString * _Nullable artworkName) {
+ if (success) {
+ subtleAlert.alertIcon = [[SDLImage alloc] initWithName:artworkName isTemplate:YES];
+ }
+ [sdlManager sendRequest:subtleAlert];
+ }];
+ }
+}
+
+/// Helper method for uploading an image before it is shown in an alert
+/// @param imageName The name of the image to upload
+/// @param sdlManager The SDLManager
+/// @param completionHandler Handler called when the artwork has finished uploading with the success of the upload and the name of the uploaded image.
++ (void)sdlex_sendImageWithName:(NSString *)imageName sdlManager:(SDLManager *)sdlManager completionHandler:(void (^)(BOOL success, NSString * _Nonnull artworkName))completionHandler {
+ SDLArtwork *artwork = [SDLArtwork artworkWithImage:[[UIImage imageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] asImageFormat:SDLArtworkImageFormatPNG];
+
+ [sdlManager.fileManager uploadArtwork:artwork completionHandler:^(BOOL success, NSString * _Nonnull artworkName, NSUInteger bytesAvailable, NSError * _Nullable error) {
+ return completionHandler(success, artworkName);
+ }];
}
@end
diff --git a/Example Apps/Example ObjC/AudioManager.m b/Example Apps/Example ObjC/AudioManager.m
index cd6ec4ecf..dc1c77e41 100644
--- a/Example Apps/Example ObjC/AudioManager.m
+++ b/Example Apps/Example ObjC/AudioManager.m
@@ -7,6 +7,7 @@
//
#import "AlertManager.h"
+#import "AppConstants.h"
#import "AudioManager.h"
#import <AVFoundation/AVFoundation.h>
#import "SDLLogMacros.h"
@@ -86,7 +87,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)startRecording {
if (self.speechRecognitionAuthState != SpeechRecognitionAuthStateAuthorized) {
SDLLogW(@"This app does not have permission to access the Speech Recognition API");
- [self.sdlManager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"You must give this app permission to access Speech Recognition" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:self.sdlManager image:nil textField1:AlertSpeechPermissionsWarningText textField2:nil];
return;
}
@@ -155,7 +156,7 @@ NS_ASSUME_NONNULL_BEGIN
// The `PerformAudioPassThru` timed out or the "Done" button was pressed in the pop-up.
SDLLogD(@"Audio Pass Thru ended successfully");
NSString *alertMessage = [NSString stringWithFormat:@"You said: %@", weakSelf.speechTranscription.length == 0 ? @"No speech detected" : weakSelf.speechTranscription];
- [weakSelf.sdlManager sendRequest:[AlertManager alertWithMessageAndCloseButton:alertMessage textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:weakSelf.sdlManager image:nil textField1:alertMessage textField2:nil];
} else if ([resultCode isEqualToEnum:SDLResultAborted]) {
// The "Cancel" button was pressed in the pop-up. Ignore this audio pass thru.
SDLLogD(@"Audio recording canceled");
diff --git a/Example Apps/Example ObjC/ButtonManager.h b/Example Apps/Example ObjC/ButtonManager.h
index 867f50c7c..256ea8ee4 100644
--- a/Example Apps/Example ObjC/ButtonManager.h
+++ b/Example Apps/Example ObjC/ButtonManager.h
@@ -18,12 +18,12 @@ typedef void(^RefreshUIHandler)(void);
@interface ButtonManager : NSObject
@property (assign, nonatomic, getter=isTextEnabled, readonly) BOOL textEnabled;
-@property (assign, nonatomic, getter=isHexagonEnabled, readonly) BOOL toggleEnabled;
@property (assign, nonatomic, getter=areImagesEnabled, readonly) BOOL imagesEnabled;
- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithManager:(SDLManager *)manager refreshUIHandler:(RefreshUIHandler)refreshUIHandler;
+/// An array of all the soft buttons
- (NSArray<SDLSoftButtonObject *> *)allScreenSoftButtons;
@end
diff --git a/Example Apps/Example ObjC/ButtonManager.m b/Example Apps/Example ObjC/ButtonManager.m
index 1809249db..4ca86be0a 100644
--- a/Example Apps/Example ObjC/ButtonManager.m
+++ b/Example Apps/Example ObjC/ButtonManager.m
@@ -19,7 +19,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic) SDLManager *sdlManager;
@property (assign, nonatomic, getter=isTextEnabled, readwrite) BOOL textEnabled;
-@property (assign, nonatomic, getter=isHexagonEnabled, readwrite) BOOL toggleEnabled;
@property (assign, nonatomic, getter=areImagesEnabled, readwrite) BOOL imagesEnabled;
@end
@@ -37,7 +36,6 @@ NS_ASSUME_NONNULL_BEGIN
_textEnabled = YES;
_imagesEnabled = YES;
- _toggleEnabled = YES;
return self;
}
@@ -52,61 +50,73 @@ NS_ASSUME_NONNULL_BEGIN
- (void)setImagesEnabled:(BOOL)imagesEnabled {
_imagesEnabled = imagesEnabled;
-
- SDLSoftButtonObject *object = [self.sdlManager.screenManager softButtonObjectNamed:AlertSoftButton];
- [object transitionToNextState];
-
if (self.refreshUIHandler == nil) { return; }
self.refreshUIHandler();
}
-- (void)setToggleEnabled:(BOOL)toggleEnabled {
- _toggleEnabled = toggleEnabled;
- SDLSoftButtonObject *object = [self.sdlManager.screenManager softButtonObjectNamed:ToggleSoftButton];
- [object transitionToStateNamed:(toggleEnabled ? ToggleSoftButtonImageOnState : ToggleSoftButtonImageOffState)];
+#pragma mark - Getters
+
+- (BOOL)sdlex_isSubtleAlertAllowed {
+ return [self.sdlManager.permissionManager isRPCNameAllowed:SDLRPCFunctionNameSubtleAlert];
+}
+
+- (BOOL)sdlex_isAlertAllowed {
+ return [self.sdlManager.permissionManager isRPCNameAllowed:SDLRPCFunctionNameAlert];
}
#pragma mark - Custom Soft Buttons
- (NSArray<SDLSoftButtonObject *> *)allScreenSoftButtons {
- return @[[self sdlex_softButtonAlertWithManager:self.sdlManager], [self sdlex_softButtonToggleWithManager:self.sdlManager], [self sdlex_softButtonTextVisibleWithManager:self.sdlManager], [self sdlex_softButtonImagesVisibleWithManager:self.sdlManager]];
+ return @[[self sdlex_softButtonAlert], [self sdlex_softButtonSubtleAlert], [self sdlex_softButtonTextVisible], [self sdlex_softButtonImagesVisible]];
}
-- (SDLSoftButtonObject *)sdlex_softButtonAlertWithManager:(SDLManager *)manager {
- SDLSoftButtonState *alertImageAndTextState = [[SDLSoftButtonState alloc] initWithStateName:AlertSoftButtonImageState text:AlertSoftButtonText artwork:[SDLArtwork artworkWithImage:[[UIImage imageNamed:CarBWIconImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] name:CarBWIconImageName asImageFormat:SDLArtworkImageFormatPNG]];
- SDLSoftButtonState *alertTextState = [[SDLSoftButtonState alloc] initWithStateName:AlertSoftButtonTextState text:AlertSoftButtonText image:nil];
+/// Returns a soft button that shows an alert when tapped.
+/// @returns A SDLSoftButtonObject object
+- (SDLSoftButtonObject *)sdlex_softButtonAlert {
+ SDLSoftButtonState *imageAndTextState = [[SDLSoftButtonState alloc] initWithStateName:AlertSoftButtonImageAndTextState text:AlertSoftButtonText artwork:[SDLArtwork artworkWithImage:[[UIImage imageNamed:AlertBWIconName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] asImageFormat:SDLArtworkImageFormatPNG]];
+ SDLSoftButtonState *textState = [[SDLSoftButtonState alloc] initWithStateName:AlertSoftButtonTextState text:AlertSoftButtonText image:nil];
__weak typeof(self) weakself = self;
- SDLSoftButtonObject *alertSoftButton = [[SDLSoftButtonObject alloc] initWithName:AlertSoftButton states:@[alertImageAndTextState, alertTextState] initialStateName:alertImageAndTextState.name handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {
+ SDLSoftButtonObject *alertSoftButton = [[SDLSoftButtonObject alloc] initWithName:AlertSoftButton states:@[imageAndTextState, textState] initialStateName:imageAndTextState.name handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {
if (buttonPress == nil) { return; }
- [weakself.sdlManager.fileManager uploadArtwork:[SDLArtwork artworkWithImage:[UIImage imageNamed:CarBWIconImageName] asImageFormat:SDLArtworkImageFormatPNG] completionHandler:^(BOOL success, NSString * _Nonnull artworkName, NSUInteger bytesAvailable, NSError * _Nullable error) {
- [weakself.sdlManager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"You pushed the soft button!" textField2:nil iconName:artworkName] withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- NSLog(@"ALERT req: %@, res: %@, err: %@", request, response, error);
- }];
- }];
-
- SDLLogD(@"Star icon soft button press fired");
+ if (self.sdlex_isAlertAllowed) {
+ [AlertManager sendAlertWithManager:weakself.sdlManager image:CarBWIconImageName textField1:AlertMessageText textField2:nil];
+ } else if (self.sdlex_isSubtleAlertAllowed) {
+ [AlertManager sendSubtleAlertWithManager:weakself.sdlManager image:CarBWIconImageName textField1:AlertMessageText textField2:nil];
+ } else {
+ SDLLogW(@"The module does not support the Alert request or the Subtle Alert request");
+ }
}];
return alertSoftButton;
}
-- (SDLSoftButtonObject *)sdlex_softButtonToggleWithManager:(SDLManager *)manager {
- SDLSoftButtonState *toggleImageOnState = [[SDLSoftButtonState alloc] initWithStateName:ToggleSoftButtonImageOnState text:nil image:[[UIImage imageNamed:ToggleOnBWIconName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
- SDLSoftButtonState *toggleImageOffState = [[SDLSoftButtonState alloc] initWithStateName:ToggleSoftButtonImageOffState text:nil image:[[UIImage imageNamed:ToggleOffBWIconName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
+/// Returns a soft button that shows a subtle alert when tapped. If the subtle alert is not supported, then a regular alert is shown.
+/// @returns A SDLSoftButtonObject object
+- (SDLSoftButtonObject *)sdlex_softButtonSubtleAlert {
+ SDLSoftButtonState *imageAndTextState = [[SDLSoftButtonState alloc] initWithStateName:SubtleAlertSoftButtonImageAndTextState text:SubtleAlertSoftButtonText artwork:[SDLArtwork artworkWithImage:[[UIImage imageNamed:BatteryFullBWIconName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] asImageFormat:SDLArtworkImageFormatPNG]];
+ SDLSoftButtonState *textState = [[SDLSoftButtonState alloc] initWithStateName:SubtleAlertSoftButtonTextState text:SubtleAlertSoftButtonText image:nil];
__weak typeof(self) weakself = self;
- SDLSoftButtonObject *toggleButton = [[SDLSoftButtonObject alloc] initWithName:ToggleSoftButton states:@[toggleImageOnState, toggleImageOffState] initialStateName:toggleImageOnState.name handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {
+ SDLSoftButtonObject *subtleAlertSoftButton = [[SDLSoftButtonObject alloc] initWithName:SubtleAlertSoftButton states:@[imageAndTextState, textState] initialStateName:imageAndTextState.name handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {
if (buttonPress == nil) { return; }
- weakself.toggleEnabled = !weakself.toggleEnabled;
- SDLLogD(@"Toggle icon button press fired %d", self.toggleEnabled);
+
+ if (self.sdlex_isSubtleAlertAllowed) {
+ [AlertManager sendSubtleAlertWithManager:weakself.sdlManager image:BatteryEmptyBWIconName textField1:SubtleAlertHeaderText textField2:SubtleAlertSubheaderText];
+ } else if (self.sdlex_isAlertAllowed) {
+ [AlertManager sendAlertWithManager:weakself.sdlManager image:BatteryEmptyBWIconName textField1:SubtleAlertHeaderText textField2:SubtleAlertSubheaderText];
+ } else {
+ SDLLogW(@"The module does not support the Alert request or the Subtle Alert request");
+ }
}];
- return toggleButton;
+ return subtleAlertSoftButton;
}
-- (SDLSoftButtonObject *)sdlex_softButtonTextVisibleWithManager:(SDLManager *)manager {
+/// Returns a soft button that toggles the textfield visibility state.
+/// @returns A SDLSoftButtonObject object
+- (SDLSoftButtonObject *)sdlex_softButtonTextVisible {
SDLSoftButtonState *textOnState = [[SDLSoftButtonState alloc] initWithStateName:TextVisibleSoftButtonTextOnState text:TextVisibleSoftButtonTextOnText image:nil];
SDLSoftButtonState *textOffState = [[SDLSoftButtonState alloc] initWithStateName:TextVisibleSoftButtonTextOffState text:TextVisibleSoftButtonTextOffText image:nil];
@@ -115,34 +125,34 @@ NS_ASSUME_NONNULL_BEGIN
if (buttonPress == nil) { return; }
weakself.textEnabled = !weakself.textEnabled;
- SDLSoftButtonObject *object = [weakself.sdlManager.screenManager softButtonObjectNamed:TextVisibleSoftButton];
- [object transitionToNextState];
- SDLLogD(@"Text visibility soft button press fired %d", weakself.textEnabled);
+ SDLSoftButtonObject *textVisibleSoftButton = [weakself.sdlManager.screenManager softButtonObjectNamed:TextVisibleSoftButton];
+ [textVisibleSoftButton transitionToNextState];
}];
return textButton;
}
-- (SDLSoftButtonObject *)sdlex_softButtonImagesVisibleWithManager:(SDLManager *)manager {
+/// Returns a soft button that toggles the image visibility state.
+/// @returns A SDLSoftButtonObject object
+- (SDLSoftButtonObject *)sdlex_softButtonImagesVisible {
SDLSoftButtonState *imagesOnState = [[SDLSoftButtonState alloc] initWithStateName:ImagesVisibleSoftButtonImageOnState text:ImagesVisibleSoftButtonImageOnText image:nil];
SDLSoftButtonState *imagesOffState = [[SDLSoftButtonState alloc] initWithStateName:ImagesVisibleSoftButtonImageOffState text:ImagesVisibleSoftButtonImageOffText image:nil];
__weak typeof(self) weakself = self;
SDLSoftButtonObject *imagesButton = [[SDLSoftButtonObject alloc] initWithName:ImagesVisibleSoftButton states:@[imagesOnState, imagesOffState] initialStateName:imagesOnState.name handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {
- if (buttonPress == nil) {
- return;
- }
+ if (buttonPress == nil) { return; }
weakself.imagesEnabled = !weakself.imagesEnabled;
- SDLSoftButtonObject *object = [weakself.sdlManager.screenManager softButtonObjectNamed:ImagesVisibleSoftButton];
- [object transitionToNextState];
+ SDLSoftButtonObject *imagesVisibleSoftButton = [weakself.sdlManager.screenManager softButtonObjectNamed:ImagesVisibleSoftButton];
+ [imagesVisibleSoftButton transitionToNextState];
- SDLSoftButtonObject *textButton = [weakself.sdlManager.screenManager softButtonObjectNamed:TextVisibleSoftButton];
- [textButton transitionToNextState];
+ SDLSoftButtonObject *alertSoftButton = [weakself.sdlManager.screenManager softButtonObjectNamed:AlertSoftButton];
+ [alertSoftButton transitionToNextState];
- SDLLogD(@"Image visibility soft button press fired %d", weakself.imagesEnabled);
+ SDLSoftButtonObject *subtleAlertSoftButton = [weakself.sdlManager.screenManager softButtonObjectNamed:SubtleAlertSoftButton];
+ [subtleAlertSoftButton transitionToNextState];
}];
return imagesButton;
diff --git a/Example Apps/Example ObjC/ConnectionTransitionContext.m b/Example Apps/Example ObjC/ConnectionTransitionContext.m
index e46e19a10..7275952c3 100644
--- a/Example Apps/Example ObjC/ConnectionTransitionContext.m
+++ b/Example Apps/Example ObjC/ConnectionTransitionContext.m
@@ -105,6 +105,8 @@
- (void)updateInteractiveTransition:(CGFloat)percentComplete {}
- (void)finishInteractiveTransition {}
- (void)cancelInteractiveTransition {}
+- (void)pauseInteractiveTransition {}
+
@end
diff --git a/Example Apps/Example ObjC/MenuManager.m b/Example Apps/Example ObjC/MenuManager.m
index 00a05b377..7d572a658 100644
--- a/Example Apps/Example ObjC/MenuManager.m
+++ b/Example Apps/Example ObjC/MenuManager.m
@@ -62,7 +62,7 @@ NS_ASSUME_NONNULL_BEGIN
}
+ (NSArray<NSString *> *)sdlex_allVehicleDataTypes {
- return @[ACAccelerationPedalPositionMenuName, ACAirbagStatusMenuName, ACBeltStatusMenuName, ACBodyInformationMenuName, ACClusterModeStatusMenuName, ACDeviceStatusMenuName, ACDriverBrakingMenuName, ACECallInfoMenuName, ACElectronicParkBrakeStatus, ACEmergencyEventMenuName, ACEngineOilLifeMenuName, ACEngineTorqueMenuName, ACExternalTemperatureMenuName, ACFuelLevelMenuName, ACFuelLevelStateMenuName, ACFuelRangeMenuName, ACGPSMenuName, ACHeadLampStatusMenuName, ACInstantFuelConsumptionMenuName, ACMyKeyMenuName, ACOdometerMenuName, ACPRNDLMenuName, ACRPMMenuName, ACSpeedMenuName, ACSteeringWheelAngleMenuName, ACTirePressureMenuName, ACTurnSignalMenuName, ACVINMenuName, ACWiperStatusMenuName];
+ return @[ACAccelerationPedalPositionMenuName, ACAirbagStatusMenuName, ACBeltStatusMenuName, ACBodyInformationMenuName, ACClusterModeStatusMenuName, ACDeviceStatusMenuName, ACDriverBrakingMenuName, ACECallInfoMenuName, ACElectronicParkBrakeStatus, ACEmergencyEventMenuName, ACEngineOilLifeMenuName, ACEngineTorqueMenuName, ACExternalTemperatureMenuName, ACFuelLevelMenuName, ACFuelLevelStateMenuName, ACFuelRangeMenuName, ACGearStatusMenuName, ACGPSMenuName, ACHeadLampStatusMenuName, ACInstantFuelConsumptionMenuName, ACMyKeyMenuName, ACOdometerMenuName, ACPRNDLMenuName, ACRPMMenuName, ACSpeedMenuName, ACSteeringWheelAngleMenuName, ACTirePressureMenuName, ACTurnSignalMenuName, ACVINMenuName, ACWiperStatusMenuName];
}
+ (SDLMenuCell *)sdlex_menuCellShowPerformInteractionWithManager:(SDLManager *)manager performManager:(PerformInteractionManager *)performManager {
@@ -81,7 +81,7 @@ NS_ASSUME_NONNULL_BEGIN
+ (SDLMenuCell *)sdlex_menuCellDialNumberWithManager:(SDLManager *)manager {
return [[SDLMenuCell alloc] initWithTitle:ACDialPhoneNumberMenuName icon:[SDLArtwork artworkWithImage:[[UIImage imageNamed:PhoneBWIconImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] asImageFormat:SDLArtworkImageFormatPNG] voiceCommands:@[ACDialPhoneNumberMenuName] handler:^(SDLTriggerSource _Nonnull triggerSource) {
if (![RPCPermissionsManager isDialNumberRPCAllowedWithManager:manager]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"This app does not have the required permissions to dial a number" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertDialNumberPermissionsWarningText textField2:nil];
return;
}
@@ -100,7 +100,7 @@ NS_ASSUME_NONNULL_BEGIN
SDLSetDisplayLayout* display = [[SDLSetDisplayLayout alloc] initWithPredefinedLayout:SDLPredefinedLayoutNonMedia];
[manager sendRequest:display withResponseHandler:^(SDLRPCRequest *request, SDLRPCResponse *response, NSError *error) {
if (!response.success) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:errorMessage textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:errorMessage textField2:nil];
}
}];
}];
@@ -111,7 +111,7 @@ NS_ASSUME_NONNULL_BEGIN
SDLSetDisplayLayout* display = [[SDLSetDisplayLayout alloc] initWithPredefinedLayout:SDLPredefinedLayoutGraphicWithText];
[manager sendRequest:display withResponseHandler:^(SDLRPCRequest *request, SDLRPCResponse *response, NSError *error) {
if (!response.success) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:errorMessage textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:errorMessage textField2:nil];
}
}];
}];
@@ -124,7 +124,7 @@ NS_ASSUME_NONNULL_BEGIN
NSMutableArray *submenuItems = [NSMutableArray array];
for (int i = 0; i < 75; i++) {
SDLMenuCell *cell = [[SDLMenuCell alloc] initWithTitle:[NSString stringWithFormat:@"%@ %i", ACSubmenuItemMenuName, i] icon:[SDLArtwork artworkWithImage:[[UIImage imageNamed:MenuBWIconImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] asImageFormat:SDLArtworkImageFormatPNG] voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:[NSString stringWithFormat:@"You selected %@ %i", ACSubmenuItemMenuName, i] textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:[NSString stringWithFormat:@"You selected %@ %i", ACSubmenuItemMenuName, i] textField2:nil];
}];
[submenuItems addObject:cell];
}
@@ -138,11 +138,11 @@ NS_ASSUME_NONNULL_BEGIN
[manager sendRequest:sliderRPC withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
if(![response.resultCode isEqualToEnum:SDLResultSuccess]) {
if ([response.resultCode isEqualToEnum:SDLResultTimedOut]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Slider timed out" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertSliderTimedOutWarningText textField2:nil];
} else if ([response.resultCode isEqualToEnum:SDLResultAborted]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Slider cancelled" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertSliderCancelledWarningText textField2:nil];
} else {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Slider could not be displayed" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertSliderGeneralWarningText textField2:nil];
}
}
}];
@@ -155,11 +155,11 @@ NS_ASSUME_NONNULL_BEGIN
[manager sendRequest:messageRPC withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
if(![response.resultCode isEqualToEnum:SDLResultSuccess]) {
if ([response.resultCode isEqualToEnum:SDLResultTimedOut]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Scrollable Message timed out" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertScrollableMessageTimedOutWarningText textField2:nil];
} else if ([response.resultCode isEqualToEnum:SDLResultAborted]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Scrollable Message cancelled" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertScrollableMessageCancelledWarningText textField2:nil];
} else {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Scrollable Message could not be displayed" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertScrollableMessageGeneralWarningText textField2:nil];
}
}
}];
@@ -170,13 +170,13 @@ NS_ASSUME_NONNULL_BEGIN
+ (SDLVoiceCommand *)sdlex_voiceCommandStartWithManager:(SDLManager *)manager {
return [[SDLVoiceCommand alloc] initWithVoiceCommands:@[VCStop] handler:^{
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:[NSString stringWithFormat:@"%@ voice command selected!", VCStop] textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:[NSString stringWithFormat:@"%@ voice command selected!", VCStop] textField2:nil];
}];
}
+ (SDLVoiceCommand *)sdlex_voiceCommandStopWithManager:(SDLManager *)manager {
return [[SDLVoiceCommand alloc] initWithVoiceCommands:@[VCStart] handler:^{
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:[NSString stringWithFormat:@"%@ voice command selected!", VCStart] textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:[NSString stringWithFormat:@"%@ voice command selected!", VCStart] textField2:nil];
}];
}
diff --git a/Example Apps/Example ObjC/RPCPermissionsManager.m b/Example Apps/Example ObjC/RPCPermissionsManager.m
index 93d2755e6..3370f18c2 100644
--- a/Example Apps/Example ObjC/RPCPermissionsManager.m
+++ b/Example Apps/Example ObjC/RPCPermissionsManager.m
@@ -96,7 +96,7 @@ NS_ASSUME_NONNULL_BEGIN
* @return A unique identifier for the subscription. This can be used to later to unsubscribe from the notifications.
*/
+ (SDLPermissionObserverIdentifier)sdlex_subscribeGroupPermissionsWithManager:(SDLManager *)manager permissionElements:(NSArray<SDLPermissionElement *> *)permissionElements groupType:(SDLPermissionGroupType)groupType {
- SDLPermissionObserverIdentifier observerId = [manager.permissionManager subscribeToRPCPermissions:permissionElements groupType:groupType withHandler:^(NSDictionary<SDLPermissionRPCName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ SDLPermissionObserverIdentifier observerId = [manager.permissionManager subscribeToRPCPermissions:permissionElements groupType:groupType withHandler:^(NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) {
[self sdlex_logRPCGroupPermissions:permissionElements groupPermissionStatus:status individualPermissionStatuses:change];
}];
return observerId;
diff --git a/SmartDeviceLink_Example/SubscribeButtonManager.h b/Example Apps/Example ObjC/SubscribeButtonManager.h
index 07ecc4c87..07ecc4c87 100644
--- a/SmartDeviceLink_Example/SubscribeButtonManager.h
+++ b/Example Apps/Example ObjC/SubscribeButtonManager.h
diff --git a/Example Apps/Example ObjC/SubscribeButtonManager.m b/Example Apps/Example ObjC/SubscribeButtonManager.m
new file mode 100644
index 000000000..cbe819288
--- /dev/null
+++ b/Example Apps/Example ObjC/SubscribeButtonManager.m
@@ -0,0 +1,68 @@
+//
+// SubscribeButtonManager.m
+// SmartDeviceLink-Example-ObjC
+//
+// Created by Nicole on 6/19/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SubscribeButtonManager.h"
+
+#import "AlertManager.h"
+#import "SmartDeviceLink.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SubscribeButtonManager()
+
+@property (strong, nonatomic) SDLManager *sdlManager;
+
+@end
+
+@implementation SubscribeButtonManager
+
+- (instancetype)initWithManager:(SDLManager *)manager {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _sdlManager = manager;
+
+ return self;
+}
+
+- (void)subscribeToAllPresetButtons {
+ if (self.sdlManager.systemCapabilityManager.defaultMainWindowCapability.numCustomPresetsAvailable.intValue == 0) {
+ SDLLogW(@"The module does not support preset buttons");
+ return;
+ }
+
+ for (SDLButtonName buttonName in [self.class sdlex_allPresetButtons]) {
+ [self.sdlManager.screenManager subscribeButton:buttonName withObserver:self selector:@selector(sdlex_buttonPressEventWithButtonName:error:buttonPress:)];
+ }
+}
+
+- (void)sdlex_buttonPressEventWithButtonName:(SDLButtonName)buttonName error:(NSError *)error buttonPress:(SDLOnButtonPress *)buttonPress {
+ if (error != nil) {
+ SDLLogE(@"There was an error subscribing to the preset button: %@", error.localizedDescription);
+ return;
+ }
+
+ NSString *alertMessage = nil;
+ if ([buttonPress.buttonPressMode isEqualToEnum:SDLButtonPressModeShort]) {
+ alertMessage = [NSString stringWithFormat:@"%@ short pressed", buttonName];
+ } else {
+ alertMessage = [NSString stringWithFormat:@"%@ long pressed", buttonName];
+ }
+
+ [AlertManager sendAlertWithManager:self.sdlManager image:nil textField1:alertMessage textField2:nil];
+}
+
++ (NSArray<SDLButtonName> *)sdlex_allPresetButtons {
+ return @[SDLButtonNamePreset0, SDLButtonNamePreset1, SDLButtonNamePreset2, SDLButtonNamePreset3, SDLButtonNamePreset4, SDLButtonNamePreset5, SDLButtonNamePreset6, SDLButtonNamePreset7];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/VehicleDataManager.m b/Example Apps/Example ObjC/VehicleDataManager.m
index 5c2d3bac2..f6192777a 100644
--- a/Example Apps/Example ObjC/VehicleDataManager.m
+++ b/Example Apps/Example ObjC/VehicleDataManager.m
@@ -138,20 +138,17 @@ NS_ASSUME_NONNULL_BEGIN
+ (void)getAllVehicleDataWithManager:(SDLManager *)manager triggerSource:(SDLTriggerSource)triggerSource vehicleDataType:(NSString *)vehicleDataType {
SDLLogD(@"Checking if app has permission to access vehicle data...");
if (![manager.permissionManager isRPCNameAllowed:SDLRPCFunctionNameGetVehicleData]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"This app does not have the required permissions to access vehicle data" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertVehicleDataPermissionsWarningText textField2:nil];
return;
}
SDLLogD(@"App has permission to access vehicle data. Requesting vehicle data...");
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetVehicleData *getAllVehicleData = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES vin:YES wiperStatus:YES];
-#pragma clang diagnostic pop
+ SDLGetVehicleData *getAllVehicleData = [[SDLGetVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES vin:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
[manager sendRequest:getAllVehicleData withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
if (error || ![response isKindOfClass:SDLGetVehicleDataResponse.class]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Something went wrong while getting vehicle data" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertVehicleDataGeneralWarningText textField2:nil];
return;
}
@@ -181,7 +178,7 @@ NS_ASSUME_NONNULL_BEGIN
alertMessage = [TextValidator validateText:alertMessage length:200];
if ([triggerSource isEqualToEnum:SDLTriggerSourceMenu]) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:alertTitle textField2:alertMessage iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:alertTitle textField2:alertMessage];
} else {
NSString *spokenAlert = alertMessage ?: alertTitle;
[manager sendRequest:[[SDLSpeak alloc] initWithTTS:spokenAlert]];
@@ -219,11 +216,13 @@ NS_ASSUME_NONNULL_BEGIN
} else if ([vehicleDataType isEqualToString:ACExternalTemperatureMenuName]) {
vehicleDataDescription = vehicleData.externalTemperature.description;
} else if ([vehicleDataType isEqualToString:ACFuelLevelMenuName]) {
- vehicleDataDescription = vehicleData.fuelLevel.description;
+ vehicleDataDescription = vehicleData.fuelRange.firstObject.level.description;
} else if ([vehicleDataType isEqualToString:ACFuelLevelStateMenuName]) {
- vehicleDataDescription = vehicleData.fuelLevel_State.description;
+ vehicleDataDescription = vehicleData.fuelRange.firstObject.levelState.description;
} else if ([vehicleDataType isEqualToString:ACFuelRangeMenuName]) {
vehicleDataDescription = vehicleData.fuelRange.description;
+ } else if ([vehicleDataType isEqualToString:ACGearStatusMenuName]) {
+ vehicleDataDescription = vehicleData.gearStatus.description;
} else if ([vehicleDataType isEqualToString:ACGPSMenuName]) {
vehicleDataDescription = vehicleData.gps.description;
} else if ([vehicleDataType isEqualToString:ACHeadLampStatusMenuName]) {
@@ -235,7 +234,7 @@ NS_ASSUME_NONNULL_BEGIN
} else if ([vehicleDataType isEqualToString:ACOdometerMenuName]) {
vehicleDataDescription = vehicleData.odometer.description;
} else if ([vehicleDataType isEqualToString:ACPRNDLMenuName]) {
- vehicleDataDescription = vehicleData.prndl.description;
+ vehicleDataDescription = vehicleData.gearStatus.actualGear.description;
} else if ([vehicleDataType isEqualToString:ACSpeedMenuName]) {
vehicleDataDescription = vehicleData.speed.description;
} else if ([vehicleDataType isEqualToString:ACSteeringWheelAngleMenuName]) {
@@ -263,7 +262,7 @@ NS_ASSUME_NONNULL_BEGIN
SDLLogD(@"Checking phone call capability");
[manager.systemCapabilityManager updateCapabilityType:SDLSystemCapabilityTypePhoneCall completionHandler:^(NSError * _Nullable error, SDLSystemCapabilityManager * _Nonnull systemCapabilityManager) {
if (!systemCapabilityManager.phoneCapability) {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"The head unit does not support the phone call capability" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertDialNumberPermissionsWarningText textField2:nil];
return;
}
@@ -271,7 +270,7 @@ NS_ASSUME_NONNULL_BEGIN
SDLLogD(@"Dialing phone number %@", phoneNumber);
[self sdlex_dialPhoneNumber:phoneNumber manager:manager];
} else {
- [manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"The dial number feature is unavailable for this head unit" textField2:nil iconName:nil]];
+ [AlertManager sendAlertWithManager:manager image:nil textField1:AlertDialNumberUnavailableWarningText textField2:nil];
}
}];
}
diff --git a/Example Apps/Example Swift/AlertManager.swift b/Example Apps/Example Swift/AlertManager.swift
index 718210777..9e37dd1c5 100644
--- a/Example Apps/Example Swift/AlertManager.swift
+++ b/Example Apps/Example Swift/AlertManager.swift
@@ -10,18 +10,58 @@ import Foundation
import SmartDeviceLink
class AlertManager {
- private class var okSoftButton: SDLSoftButton {
- return SDLSoftButton(type: .text, text: AlertOKButtonText, image: nil, highlighted: true, buttonId: 1, systemAction: nil, handler: nil)
+ /// Sends an alert with up to two lines of text, an image, and a close button that will dismiss the alert when tapped.
+ /// - Parameters:
+ /// - imageName: The name of the image to upload
+ /// - textField1: The first line of text in the alert
+ /// - textField2: The second line of text in the alert
+ /// - sdlManager: The SDLManager
+ class func sendAlert(imageName: String? = nil, textField1: String, textField2: String? = nil, sdlManager: SDLManager) {
+ let okSoftButton = SDLSoftButton(type: .text, text: AlertOKButtonText, image: nil, highlighted: true, buttonId: 1, systemAction: nil, handler: nil)
+ let alert = SDLAlert(alertText1: textField1, alertText2: textField2, alertText3: nil, softButtons: [okSoftButton], playTone: true, ttsChunks: nil, duration: 5000, progressIndicator: false, alertIcon: nil, cancelID: 0)
+
+ if let imageName = imageName {
+ sendImage(imageName, sdlManager: sdlManager) { (success, artworkName) in
+ if success {
+ alert.alertIcon = SDLImage(name: artworkName, isTemplate: true)
+ }
+ sdlManager.send(alert)
+ }
+ } else {
+ sdlManager.send(alert)
+ }
+ }
+
+ /// Sends a subtle alert with up to two lines of text, and an image.
+ /// - Parameters:
+ /// - imageName: The name of the image to upload
+ /// - textField1: The first line of text in the alert
+ /// - textField2: The second line of text in the alert
+ /// - sdlManager: The SDLManager
+ class func sendSubtleAlert(imageName: String? = nil, textField1: String, textField2: String? = nil, sdlManager: SDLManager) {
+ let subtleAlert = SDLSubtleAlert(alertText1: textField1, alertText2: textField2, alertIcon: nil, ttsChunks: nil, duration: nil, softButtons: nil, cancelID: NSNumber(0))
+
+ if let imageName = imageName {
+ sendImage(imageName, sdlManager: sdlManager) { (success, artworkName) in
+ if success {
+ subtleAlert.alertIcon = SDLImage(name: artworkName, isTemplate: true)
+ }
+ sdlManager.send(subtleAlert)
+ }
+ } else {
+ sdlManager.send(subtleAlert)
+ }
}
- /// Creates an alert with up to two lines of text, an image, and a close button that will dismiss the alert when tapped.
- ///
+ /// Helper method for uploading an image before it is shown in an alert
/// - Parameters:
- /// - textField1: The first line of a message to display in the alert
- /// - textField2: The second line of a message to display in the alert
- /// - iconName: The name of the uploaded icon artwork
- /// - Returns: An SDLAlert object
- class func alertWithMessageAndCloseButton(_ textField1: String, textField2: String? = nil, iconName: String? = nil) -> SDLAlert {
- return SDLAlert(alertText1: textField1, alertText2: textField2, alertText3: nil, softButtons: [okSoftButton], playTone: true, ttsChunks: nil, duration: 5000, progressIndicator: false, alertIcon: (iconName != nil) ? SDLImage(name: iconName!, isTemplate: true) : nil, cancelID: 0)
+ /// - imageName: The name of the image to upload
+ /// - sdlManager: The SDLManager
+ /// - completionHandler: Handler called when the artwork has finished uploading with the success of the upload and the name of the uploaded image.
+ private class func sendImage(_ imageName: String, sdlManager: SDLManager, completionHandler: @escaping ((_ success: Bool, _ artwork: String) -> ())) {
+ let artwork = SDLArtwork(image: UIImage(named: imageName)!.withRenderingMode(.alwaysTemplate), persistent: false, as: .PNG)
+ sdlManager.fileManager.upload(artwork: artwork) { (success, artworkName, bytesAvailable, error) in
+ return completionHandler(success, artworkName)
+ }
}
}
diff --git a/Example Apps/Example Swift/AudioManager.swift b/Example Apps/Example Swift/AudioManager.swift
index 6ea7e8813..8300bcb18 100644
--- a/Example Apps/Example Swift/AudioManager.swift
+++ b/Example Apps/Example Swift/AudioManager.swift
@@ -19,7 +19,6 @@ fileprivate enum SpeechRecognitionAuthState {
case authorized, notAuthorized, badRegion
}
-@available(iOS 10.0, *)
class AudioManager: NSObject {
fileprivate let sdlManager: SDLManager
fileprivate var audioData: Data?
@@ -60,7 +59,7 @@ class AudioManager: NSObject {
func startRecording() {
guard speechRecognitionAuthState == .authorized else {
SDLLog.w("This app does not have permission to access the Speech Recognition API")
- sdlManager.send(AlertManager.alertWithMessageAndCloseButton("You must give this app permission to access Speech Recognition"))
+ AlertManager.sendAlert(textField1: AlertSpeechPermissionsWarningText, sdlManager: sdlManager)
return
}
@@ -88,7 +87,6 @@ class AudioManager: NSObject {
// MARK: - Audio Pass Thru Notifications
-@available(iOS 10.0, *)
private extension AudioManager {
/// SDL streams the audio data as it is collected.
var audioDataReceivedHandler: SDLAudioPassThruHandler? {
@@ -106,20 +104,19 @@ private extension AudioManager {
/// Called when `PerformAudioPassThru` request times out or when a `EndAudioPassThru` request is sent
var audioPassThruEndedHandler: SDLResponseHandler? {
return { [weak self] (request, response, error) in
- guard let response = response else { return }
+ guard let self = self, let response = response else { return }
switch response.resultCode {
case .success: // The `PerformAudioPassThru` timed out or the "Done" button was pressed in the pop-up.
SDLLog.d("Audio Pass Thru ended successfully")
- guard let speechTranscription = self?.speechTranscription else { return }
- self?.sdlManager.send(AlertManager.alertWithMessageAndCloseButton("You said: \(speechTranscription.isEmpty ? "No speech detected" : speechTranscription)"))
+ AlertManager.sendAlert(textField1: "You said: \(self.speechTranscription.isEmpty ? "No speech detected" : self.speechTranscription)", sdlManager: self.sdlManager)
case .aborted: // The "Cancel" button was pressed in the pop-up. Ignore this audio pass thru.
SDLLog.d("Audio recording canceled")
default:
SDLLog.d("Audio recording not successful: \(response.resultCode)")
}
- self?.stopSpeechRecognitionTask()
+ self.stopSpeechRecognitionTask()
}
}
@@ -145,7 +142,6 @@ private extension AudioManager {
// MARK: - Speech Recognition
-@available(iOS 10.0, *)
private extension AudioManager {
/// Configures speech recognition
func startSpeechRecognitionTask() {
@@ -187,7 +183,6 @@ private extension AudioManager {
// MARK: - Speech Recognition Authorization
-@available(iOS 10.0, *)
extension AudioManager: SFSpeechRecognizerDelegate {
func speechRecognizer(_ speechRecognizer: SFSpeechRecognizer, availabilityDidChange available: Bool) {
speechRecognitionAuthState = AudioManager.checkAuthorization(speechRecognizer: speechRecognizer)
diff --git a/Example Apps/Example Swift/ButtonManager.swift b/Example Apps/Example Swift/ButtonManager.swift
index e0953accc..02d3f7962 100644
--- a/Example Apps/Example Swift/ButtonManager.swift
+++ b/Example Apps/Example Swift/ButtonManager.swift
@@ -16,7 +16,7 @@ class ButtonManager: NSObject {
fileprivate let sdlManager: SDLManager!
fileprivate var refreshUIHandler: RefreshUIHandler?
- /// SDL UI textfields are visible if true; hidden if false
+ /// Textfields are visible if true; hidden if false
public fileprivate(set) var textEnabled: Bool {
didSet {
guard let refreshUIHandler = refreshUIHandler else { return }
@@ -24,20 +24,20 @@ class ButtonManager: NSObject {
}
}
- /// SDL UI images are visible if true; hidden if false
+ /// UI images are visible if true; hidden if false
public fileprivate(set) var imagesEnabled: Bool {
didSet {
- guard let refreshUIHandler = refreshUIHandler, let alertSoftButton = sdlManager.screenManager.softButtonObjectNamed(AlertSoftButton) else { return }
- alertSoftButton.transitionToNextState()
+ guard let refreshUIHandler = refreshUIHandler else { return }
refreshUIHandler()
}
}
- /// Keeps track of the toggle soft button current state. The image or text changes when the button is selected
- fileprivate var toggleEnabled: Bool {
- didSet {
- guard let hexagonSoftButton = sdlManager.screenManager.softButtonObjectNamed(ToggleSoftButton), hexagonSoftButton.transition(toState: toggleEnabled ? ToggleSoftButtonImageOnState : ToggleSoftButtonImageOffState) else { return }
- }
+ private var isSubtleAlertAllowed: Bool {
+ return sdlManager.permissionManager.isRPCNameAllowed(.subtleAlert)
+ }
+
+ private var isAlertAllowed: Bool {
+ return sdlManager.permissionManager.isRPCNameAllowed(.alert)
}
init(sdlManager: SDLManager, updateScreenHandler: RefreshUIHandler? = nil) {
@@ -45,54 +45,56 @@ class ButtonManager: NSObject {
self.refreshUIHandler = updateScreenHandler
textEnabled = true
imagesEnabled = true
- toggleEnabled = true
- super.init()
}
- /// Creates and returns an array of all soft buttons for the UI
+ /// An array of all the soft buttons
///
/// - Parameter manager: The SDL Manager
/// - Returns: An array of all soft buttons for the UI
- func allScreenSoftButtons(with manager: SDLManager) -> [SDLSoftButtonObject] {
- return [softButtonAlert(with: manager), softButtonToggle(), softButtonTextVisible(), softButtonImagesVisible()]
+ func allScreenSoftButtons() -> [SDLSoftButtonObject] {
+ return [softButtonAlert, softButtonSubtleAlert, softButtonTextVisible, softButtonImagesVisible]
}
}
// MARK: - Custom Soft Buttons
-private extension ButtonManager {
+extension ButtonManager {
/// Returns a soft button that shows an alert when tapped.
- ///
- /// - Parameter manager: The SDL Manager for showing the alert
- /// - Returns: A soft button
- func softButtonAlert(with manager: SDLManager) -> SDLSoftButtonObject {
- let imageSoftButtonState = SDLSoftButtonState(stateName: AlertSoftButtonImageState, text: nil, image: UIImage(named: AlertBWIconName)?.withRenderingMode(.alwaysTemplate))
- let textSoftButtonState = SDLSoftButtonState(stateName: AlertSoftButtonTextState, text: AlertSoftButtonText, image: nil)
- return SDLSoftButtonObject(name: AlertSoftButton, states: [imageSoftButtonState, textSoftButtonState], initialStateName: imageSoftButtonState.name) { (buttonPress, buttonEvent) in
- guard buttonPress != nil else { return }
- manager.fileManager.upload(artwork: SDLArtwork(image: UIImage(named: CarBWIconImageName)!, persistent: false, as: .PNG), completionHandler: { (success, artworkName, bytesAvailable, err) in
- let alert = AlertManager.alertWithMessageAndCloseButton("You pressed the button!", iconName: artworkName)
- manager.send(alert)
- })
+ private var softButtonAlert: SDLSoftButtonObject {
+ let imageAndTextState = SDLSoftButtonState(stateName: AlertSoftButtonImageAndTextState, text: AlertSoftButtonText, image: UIImage(named: AlertBWIconName)?.withRenderingMode(.alwaysTemplate))
+ let textState = SDLSoftButtonState(stateName: AlertSoftButtonTextState, text: AlertSoftButtonText, image: nil)
+ return SDLSoftButtonObject(name: AlertSoftButton, states: [imageAndTextState, textState], initialStateName: imageAndTextState.name) { [weak self] (buttonPress, buttonEvent) in
+ guard let self = self, buttonPress != nil else { return }
+
+ if (self.isAlertAllowed) {
+ AlertManager.sendAlert(imageName: CarBWIconImageName, textField1: AlertMessageText, sdlManager: self.sdlManager)
+ } else if (self.isSubtleAlertAllowed) {
+ AlertManager.sendSubtleAlert(imageName: CarBWIconImageName, textField1: AlertMessageText, sdlManager: self.sdlManager)
+ } else {
+ SDLLog.w("The module does not support the Alert request or the Subtle Alert request")
+ }
}
}
- /// Returns a soft button that toggles between two states: on and off. If images are currently visible, the button image toggles; if images aren't visible, the button text toggles.
- ///
- /// - Returns: A soft button
- func softButtonToggle() -> SDLSoftButtonObject {
- let imageOnState = SDLSoftButtonState(stateName: ToggleSoftButtonImageOnState, text: nil, image: UIImage(named: ToggleOnBWIconName)?.withRenderingMode(.alwaysTemplate))
- let imageOffState = SDLSoftButtonState(stateName: ToggleSoftButtonImageOffState, text: nil, image: UIImage(named: ToggleOffBWIconName)?.withRenderingMode(.alwaysTemplate))
- return SDLSoftButtonObject(name: ToggleSoftButton, states: [imageOnState, imageOffState], initialStateName: imageOnState.name) { [unowned self] (buttonPress, buttonEvent) in
- guard buttonPress != nil else { return }
- self.toggleEnabled = !self.toggleEnabled
+ /// Returns a soft button that shows a subtle alert when tapped. If the subtle alert is not supported, then a regular alert is shown.
+ private var softButtonSubtleAlert: SDLSoftButtonObject {
+ let imageAndTextState = SDLSoftButtonState(stateName: SubtleAlertSoftButtonImageAndTextState, text: SubtleAlertSoftButtonText, image: UIImage(named: BatteryFullBWIconName)?.withRenderingMode(.alwaysTemplate))
+ let textState = SDLSoftButtonState(stateName: SubtleAlertSoftButtonTextState, text: SubtleAlertSoftButtonText, image: nil)
+ return SDLSoftButtonObject(name: SubtleAlertSoftButton, states: [imageAndTextState, textState], initialStateName: imageAndTextState.name) { [weak self] (buttonPress, buttonEvent) in
+ guard let self = self, buttonPress != nil else { return }
+
+ if (self.isSubtleAlertAllowed) {
+ AlertManager.sendSubtleAlert(imageName: BatteryEmptyBWIconName, textField1: SubtleAlertHeaderText, textField2: SubtleAlertSubheaderText, sdlManager: self.sdlManager)
+ } else if (self.isAlertAllowed) {
+ AlertManager.sendAlert(imageName: BatteryEmptyBWIconName, textField1: SubtleAlertHeaderText, textField2: SubtleAlertSubheaderText, sdlManager: self.sdlManager)
+ } else {
+ SDLLog.w("The module does not support the Alert request or the Subtle Alert request")
+ }
}
}
- /// Returns a soft button that toggles the textfield visibility state for the SDL UI. The button's text toggles based on the current text visibility.
- ///
- /// - Returns: A soft button
- func softButtonTextVisible() -> SDLSoftButtonObject {
+ /// Returns a soft button that toggles the textfield visibility state.
+ private var softButtonTextVisible: SDLSoftButtonObject {
let textVisibleState = SDLSoftButtonState(stateName: TextVisibleSoftButtonTextOnState, text: TextVisibleSoftButtonTextOnText, artwork: nil)
let textNotVisibleState = SDLSoftButtonState(stateName: TextVisibleSoftButtonTextOffState, text: TextVisibleSoftButtonTextOffText, image: nil)
return SDLSoftButtonObject(name: TextVisibleSoftButton, states: [textVisibleState, textNotVisibleState], initialStateName: textVisibleState.name) { [unowned self] (buttonPress, buttonEvent) in
@@ -105,19 +107,26 @@ private extension ButtonManager {
}
}
- /// Returns a soft button that toggles the image visibility state for the SDL UI. The button's text toggles based on the current image visibility.
- ///
- /// - Returns: A soft button
- func softButtonImagesVisible() -> SDLSoftButtonObject {
+ /// Returns a soft button that toggles the image visibility state.
+ private var softButtonImagesVisible: SDLSoftButtonObject {
let imagesVisibleState = SDLSoftButtonState(stateName: ImagesVisibleSoftButtonImageOnState, text: ImagesVisibleSoftButtonImageOnText, image: nil)
let imagesNotVisibleState = SDLSoftButtonState(stateName: ImagesVisibleSoftButtonImageOffState, text: ImagesVisibleSoftButtonImageOffText, image: nil)
- return SDLSoftButtonObject(name: ImagesVisibleSoftButton, states: [imagesVisibleState, imagesNotVisibleState], initialStateName: imagesVisibleState.name) { [unowned self] (buttonPress, buttonEvent) in
- guard buttonPress != nil else { return }
+ return SDLSoftButtonObject(name: ImagesVisibleSoftButton, states: [imagesVisibleState, imagesNotVisibleState], initialStateName: imagesVisibleState.name) { [weak self] (buttonPress, buttonEvent) in
+ guard let self = self, let sdlManager = self.sdlManager, buttonPress != nil else { return }
+
self.imagesEnabled = !self.imagesEnabled
- // Update the button state
- let softButton = self.sdlManager.screenManager.softButtonObjectNamed(ImagesVisibleSoftButton)
- softButton?.transitionToNextState()
+ if let imagesVisibleSoftButton = sdlManager.screenManager.softButtonObjectNamed(ImagesVisibleSoftButton) {
+ imagesVisibleSoftButton.transitionToNextState()
+ }
+
+ if let alertSoftButton = sdlManager.screenManager.softButtonObjectNamed(AlertSoftButton) {
+ alertSoftButton.transitionToNextState()
+ }
+
+ if let subtleAlertSoftButton = sdlManager.screenManager.softButtonObjectNamed(SubtleAlertSoftButton) {
+ subtleAlertSoftButton.transitionToNextState()
+ }
}
}
}
diff --git a/Example Apps/Example Swift/MenuManager.swift b/Example Apps/Example Swift/MenuManager.swift
index cdf478149..1b0830f48 100644
--- a/Example Apps/Example Swift/MenuManager.swift
+++ b/Example Apps/Example Swift/MenuManager.swift
@@ -72,7 +72,7 @@ private extension MenuManager {
/// A list of all possible vehicle data types
static var allVehicleDataTypes: [String] {
- return [ACAccelerationPedalPositionMenuName, ACAirbagStatusMenuName, ACBeltStatusMenuName, ACBodyInformationMenuName, ACClusterModeStatusMenuName, ACDeviceStatusMenuName, ACDriverBrakingMenuName, ACECallInfoMenuName, ACElectronicParkBrakeStatus, ACEmergencyEventMenuName, ACEngineOilLifeMenuName, ACEngineTorqueMenuName, ACExternalTemperatureMenuName, ACFuelLevelMenuName, ACFuelLevelStateMenuName, ACFuelRangeMenuName, ACGPSMenuName, ACHeadLampStatusMenuName, ACInstantFuelConsumptionMenuName, ACMyKeyMenuName, ACOdometerMenuName, ACPRNDLMenuName, ACRPMMenuName, ACSpeedMenuName, ACSteeringWheelAngleMenuName, ACTirePressureMenuName, ACTurnSignalMenuName, ACVINMenuName, ACWiperStatusMenuName]
+ return [ACAccelerationPedalPositionMenuName, ACAirbagStatusMenuName, ACBeltStatusMenuName, ACBodyInformationMenuName, ACClusterModeStatusMenuName, ACDeviceStatusMenuName, ACDriverBrakingMenuName, ACECallInfoMenuName, ACElectronicParkBrakeStatus, ACEmergencyEventMenuName, ACEngineOilLifeMenuName, ACEngineTorqueMenuName, ACExternalTemperatureMenuName, ACFuelLevelMenuName, ACFuelLevelStateMenuName, ACFuelRangeMenuName, ACGearStatusMenuName, ACGPSMenuName, ACHeadLampStatusMenuName, ACInstantFuelConsumptionMenuName, ACMyKeyMenuName, ACOdometerMenuName, ACPRNDLMenuName, ACRPMMenuName, ACSpeedMenuName, ACSteeringWheelAngleMenuName, ACTirePressureMenuName, ACTurnSignalMenuName, ACVINMenuName, ACWiperStatusMenuName]
}
/// Menu item that shows a custom menu (i.e. a Perform Interaction Choice Set) when selected
@@ -90,15 +90,9 @@ private extension MenuManager {
/// - Parameter manager: The SDL Manager
/// - Returns: A SDLMenuCell object
class func menuCellRecordInCarMicrophoneAudio(with manager: SDLManager) -> SDLMenuCell {
- if #available(iOS 10.0, *) {
- let audioManager = AudioManager(sdlManager: manager)
- return SDLMenuCell(title: ACRecordInCarMicrophoneAudioMenuName, icon: SDLArtwork(image: UIImage(named: MicrophoneBWIconImageName)!.withRenderingMode(.alwaysTemplate), persistent: true, as: .PNG), voiceCommands: [ACRecordInCarMicrophoneAudioMenuName], handler: { _ in
- audioManager.startRecording()
- })
- }
-
- return SDLMenuCell(title: ACRecordInCarMicrophoneAudioMenuName, icon: SDLArtwork(image: UIImage(named: SpeakBWIconImageName)!.withRenderingMode(.alwaysTemplate), persistent: true, as: .PNG), voiceCommands: [ACRecordInCarMicrophoneAudioMenuName], handler: { _ in
- manager.send(AlertManager.alertWithMessageAndCloseButton("Speech recognition feature only available on iOS 10+"))
+ let audioManager = AudioManager(sdlManager: manager)
+ return SDLMenuCell(title: ACRecordInCarMicrophoneAudioMenuName, icon: SDLArtwork(image: UIImage(named: MicrophoneBWIconImageName)!.withRenderingMode(.alwaysTemplate), persistent: true, as: .PNG), voiceCommands: [ACRecordInCarMicrophoneAudioMenuName], handler: { _ in
+ audioManager.startRecording()
})
}
@@ -109,7 +103,7 @@ private extension MenuManager {
class func menuCellDialNumber(with manager: SDLManager) -> SDLMenuCell {
return SDLMenuCell(title: ACDialPhoneNumberMenuName, icon: SDLArtwork(image: UIImage(named: PhoneBWIconImageName)!.withRenderingMode(.alwaysTemplate), persistent: true, as: .PNG), voiceCommands: [ACDialPhoneNumberMenuName], handler: { _ in
guard RPCPermissionsManager.isDialNumberRPCAllowed(with: manager) else {
- manager.send(AlertManager.alertWithMessageAndCloseButton("This app does not have the required permissions to dial a number"))
+ AlertManager.sendAlert(textField1: AlertDialNumberPermissionsWarningText, sdlManager: manager)
return
}
@@ -133,7 +127,7 @@ private extension MenuManager {
let display = SDLSetDisplayLayout(predefinedLayout: .nonMedia)
manager.send(request: display) { (request, response, error) in
guard response?.success.boolValue == .some(true) else {
- manager.send(AlertManager.alertWithMessageAndCloseButton(errorMessage))
+ AlertManager.sendAlert(textField1: errorMessage, sdlManager: manager)
return
}
}
@@ -145,7 +139,7 @@ private extension MenuManager {
let display = SDLSetDisplayLayout(predefinedLayout: .graphicWithText)
manager.send(request: display) { (request, response, error) in
guard response?.success.boolValue == .some(true) else {
- manager.send(AlertManager.alertWithMessageAndCloseButton(errorMessage))
+ AlertManager.sendAlert(textField1: errorMessage, sdlManager: manager)
return
}
}
@@ -166,7 +160,7 @@ private extension MenuManager {
let message = "\(submenuTitle) selected!"
switch triggerSource {
case .menu:
- manager.send(AlertManager.alertWithMessageAndCloseButton(message))
+ AlertManager.sendAlert(textField1: message, sdlManager: manager)
case .voiceRecognition:
manager.send(SDLSpeak(tts: message))
default: break
@@ -184,11 +178,11 @@ private extension MenuManager {
guard let response = response else { return }
guard response.resultCode == .success else {
if response.resultCode == .timedOut {
- manager.send(AlertManager.alertWithMessageAndCloseButton("Slider timed out"))
+ AlertManager.sendAlert(textField1: AlertSliderTimedOutWarningText, sdlManager: manager)
} else if response.resultCode == .aborted {
- manager.send(AlertManager.alertWithMessageAndCloseButton("Slider cancelled"))
+ AlertManager.sendAlert(textField1: AlertSliderCancelledWarningText, sdlManager: manager)
} else {
- manager.send(AlertManager.alertWithMessageAndCloseButton("Slider could not be displayed"))
+ AlertManager.sendAlert(textField1: AlertSliderGeneralWarningText, sdlManager: manager)
}
return
}
@@ -203,11 +197,11 @@ private extension MenuManager {
guard let response = response else { return }
guard response.resultCode == .success else {
if response.resultCode == .timedOut {
- manager.send(AlertManager.alertWithMessageAndCloseButton("Scrollable Message timed out"))
+ AlertManager.sendAlert(textField1: AlertScrollableMessageTimedOutWarningText, sdlManager: manager)
} else if response.resultCode == .aborted {
- manager.send(AlertManager.alertWithMessageAndCloseButton("Scrollable Message cancelled"))
+ AlertManager.sendAlert(textField1: AlertScrollableMessageCancelledWarningText, sdlManager: manager)
} else {
- manager.send(AlertManager.alertWithMessageAndCloseButton("Scrollable Message could not be displayed"))
+ AlertManager.sendAlert(textField1: AlertScrollableMessageGeneralWarningText, sdlManager: manager)
}
return
}
@@ -225,7 +219,7 @@ private extension MenuManager {
/// - Returns: A SDLVoiceCommand object
class func voiceCommandStart(with manager: SDLManager) -> SDLVoiceCommand {
return SDLVoiceCommand(voiceCommands: [VCStart], handler: {
- manager.send(AlertManager.alertWithMessageAndCloseButton("\(VCStart) voice command selected!"))
+ AlertManager.sendAlert(textField1: "\(VCStart) voice command selected!", sdlManager: manager)
})
}
@@ -235,7 +229,7 @@ private extension MenuManager {
/// - Returns: A SDLVoiceCommand object
class func voiceCommandStop(with manager: SDLManager) -> SDLVoiceCommand {
return SDLVoiceCommand(voiceCommands: [VCStop], handler: {
- manager.send(AlertManager.alertWithMessageAndCloseButton("\(VCStop) voice command selected!"))
+ AlertManager.sendAlert(textField1: "\(VCStop) voice command selected!", sdlManager: manager)
})
}
}
diff --git a/Example Apps/Example Swift/ProxyManager.swift b/Example Apps/Example Swift/ProxyManager.swift
index fdad60360..ab6f656d9 100644
--- a/Example Apps/Example Swift/ProxyManager.swift
+++ b/Example Apps/Example Swift/ProxyManager.swift
@@ -255,7 +255,7 @@ private extension ProxyManager {
sdlManager.send(setDisplayLayout)
updateScreen()
- sdlManager.screenManager.softButtonObjects = buttonManager.allScreenSoftButtons(with: sdlManager)
+ sdlManager.screenManager.softButtonObjects = buttonManager.allScreenSoftButtons()
}
/// Update the UI's textfields, images and soft buttons
diff --git a/Example Apps/Example Swift/SubscribeButtonManager.swift b/Example Apps/Example Swift/SubscribeButtonManager.swift
new file mode 100644
index 000000000..1bf128c1d
--- /dev/null
+++ b/Example Apps/Example Swift/SubscribeButtonManager.swift
@@ -0,0 +1,50 @@
+//
+// SubscribeButtonManager.swift
+// SmartDeviceLink
+//
+// Created by Nicole on 6/19/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+import Foundation
+import SmartDeviceLink
+import SmartDeviceLinkSwift
+
+class SubscribeButtonManager: NSObject {
+ private let sdlManager: SDLManager!
+ private let presetButtons: [SDLButtonName] = [.preset0, .preset1, .preset2, .preset3, .preset4, .preset5, .preset6, .preset7]
+
+ init(sdlManager: SDLManager) {
+ self.sdlManager = sdlManager
+ }
+
+ /// Subscribe to all available preset buttons. An alert will be shown when a preset button is short pressed or long pressed.
+ func subscribeToPresetButtons() {
+ guard (sdlManager.systemCapabilityManager.defaultMainWindowCapability?.numCustomPresetsAvailable?.intValue ?? 0) > 0 else {
+ SDLLog.w("The module does not support preset buttons")
+ return
+ }
+
+ presetButtons.forEach { buttonName in
+ sdlManager.screenManager.subscribeButton(buttonName, withObserver: self, selector: #selector(buttonPressEvent(buttonName:error:buttonPress:)))
+ }
+ }
+
+ @objc private func buttonPressEvent(buttonName: SDLButtonName, error: Error?, buttonPress: SDLOnButtonPress?) {
+ if let error = error {
+ SDLLog.e("There was an error subscribing to the preset button: \(error)")
+ return
+ }
+
+ guard let buttonPress = buttonPress else { return }
+
+ let buttonNameString = buttonName.rawValue.rawValue
+ switch buttonPress.buttonPressMode {
+ case .short:
+ AlertManager.sendAlert(textField1: "\(buttonNameString) short pressed", sdlManager: sdlManager)
+ case .long:
+ AlertManager.sendAlert(textField1: "\(buttonNameString) long pressed", sdlManager: sdlManager)
+ default: fatalError()
+ }
+ }
+}
diff --git a/Example Apps/Example Swift/VehicleDataManager.swift b/Example Apps/Example Swift/VehicleDataManager.swift
index c0f6e59dc..87176a883 100644
--- a/Example Apps/Example Swift/VehicleDataManager.swift
+++ b/Example Apps/Example Swift/VehicleDataManager.swift
@@ -111,7 +111,7 @@ extension VehicleDataManager {
guard hasPermissionToAccessVehicleData(with: manager) else { return }
SDLLog.d("App has permission to access vehicle data. Requesting all vehicle data...")
- let getAllVehicleData = SDLGetVehicleData(accelerationPedalPosition: true, airbagStatus: true, beltStatus: true, bodyInformation: true, cloudAppVehicleID: true, clusterModeStatus: true, deviceStatus: true, driverBraking: true, eCallInfo: true, electronicParkBrakeStatus: true, emergencyEvent: true, engineOilLife: true, engineTorque: true, externalTemperature: true, fuelLevel: true, fuelLevelState: true, fuelRange: true, gps: true, headLampStatus: true, instantFuelConsumption: true, myKey: true, odometer: true, prndl: true, rpm: true, speed: true, steeringWheelAngle: true, tirePressure: true, turnSignal: true, vin: true, wiperStatus: true)
+ let getAllVehicleData = SDLGetVehicleData(gps: NSNumber(true), speed: NSNumber(true), rpm: NSNumber(true), instantFuelConsumption: NSNumber(true), fuelRange: NSNumber(true), externalTemperature: NSNumber(true), turnSignal: NSNumber(true), vin: NSNumber(true), gearStatus: NSNumber(true), tirePressure: NSNumber(true), odometer: NSNumber(true), beltStatus: NSNumber(true), bodyInformation: NSNumber(true), deviceStatus: NSNumber(true), driverBraking: NSNumber(true), wiperStatus: NSNumber(true), headLampStatus: NSNumber(true), engineTorque: NSNumber(true), accPedalPosition: NSNumber(true), steeringWheelAngle: NSNumber(true), engineOilLife: NSNumber(true), electronicParkBrakeStatus: NSNumber(true), cloudAppVehicleID: NSNumber(true), stabilityControlsStatus: NSNumber(true), eCallInfo: NSNumber(true), airbagStatus: NSNumber(true), emergencyEvent: NSNumber(true), clusterModeStatus: NSNumber(true), myKey: NSNumber(true), handsOffSteering: NSNumber(true), windowStatus: NSNumber(true))
manager.send(request: getAllVehicleData) { (request, response, error) in
guard didAccessVehicleDataSuccessfully(with: manager, response: response, error: error) else { return }
@@ -144,9 +144,7 @@ extension VehicleDataManager {
if triggerSource == .menu {
let title = !alertTitle.isEmpty ? alertTitle : "No Vehicle Data Available"
let detailMessage = !alertMessage.isEmpty ? alertMessage : nil
- let alert = AlertManager.alertWithMessageAndCloseButton(title,
- textField2: detailMessage)
- manager.send(alert)
+ AlertManager.sendAlert(textField1: title, textField2: detailMessage, sdlManager: manager)
} else {
let spokenAlert = !alertMessage.isEmpty ? alertMessage : alertTitle
manager.send(SDLSpeak(tts: spokenAlert))
@@ -192,9 +190,9 @@ extension VehicleDataManager {
case ACExternalTemperatureMenuName:
vehicleDataDescription = vehicleData.externalTemperature?.description ?? notAvailable
case ACFuelLevelMenuName:
- vehicleDataDescription = vehicleData.fuelLevel?.description ?? notAvailable
+ vehicleDataDescription = vehicleData.fuelRange?.first?.level?.description ?? notAvailable
case ACFuelLevelStateMenuName:
- vehicleDataDescription = vehicleData.fuelLevel_State?.rawValue.rawValue ?? notAvailable
+ vehicleDataDescription = vehicleData.fuelRange?.first?.levelState?.rawValue.rawValue ?? notAvailable
case ACFuelRangeMenuName:
vehicleDataDescription = vehicleData.fuelRange?.description ?? notAvailable
case ACGPSMenuName:
@@ -208,7 +206,7 @@ extension VehicleDataManager {
case ACOdometerMenuName:
vehicleDataDescription = vehicleData.odometer?.description ?? notAvailable
case ACPRNDLMenuName:
- vehicleDataDescription = vehicleData.prndl?.rawValue.rawValue ?? notAvailable
+ vehicleDataDescription = vehicleData.gearStatus?.actualGear?.rawValue.rawValue ?? notAvailable
case ACSpeedMenuName:
vehicleDataDescription = vehicleData.speed?.description ?? notAvailable
case ACSteeringWheelAngleMenuName:
@@ -233,8 +231,7 @@ extension VehicleDataManager {
SDLLog.d("Checking if app has permission to access vehicle data...")
guard manager.permissionManager.isRPCNameAllowed(SDLRPCFunctionName.getVehicleData) else {
- let alert = AlertManager.alertWithMessageAndCloseButton("This app does not have the required permissions to access vehicle data")
- manager.send(request: alert)
+ AlertManager.sendAlert(textField1: AlertVehicleDataPermissionsWarningText, sdlManager: manager)
return false
}
@@ -252,8 +249,7 @@ extension VehicleDataManager {
SDLLog.d("Checking if Core returned vehicle data")
guard response != nil, error == nil else {
- let alert = AlertManager.alertWithMessageAndCloseButton("Something went wrong while getting vehicle data")
- manager.send(request: alert)
+ AlertManager.sendAlert(textField1: AlertVehicleDataGeneralWarningText, sdlManager: manager)
return false
}
@@ -272,14 +268,14 @@ extension VehicleDataManager {
SDLLog.d("Checking phone call capability")
manager.systemCapabilityManager.updateCapabilityType(.phoneCall, completionHandler: { (error, systemCapabilityManager) in
guard let phoneCapability = systemCapabilityManager.phoneCapability else {
- manager.send(AlertManager.alertWithMessageAndCloseButton("The head unit does not support the phone call capability"))
+ AlertManager.sendAlert(textField1: AlertDialNumberPermissionsWarningText, sdlManager: manager)
return
}
if phoneCapability.dialNumberEnabled?.boolValue ?? false {
SDLLog.d("Dialing phone number \(phoneNumber)...")
dialPhoneNumber(phoneNumber, manager: manager)
} else {
- manager.send(AlertManager.alertWithMessageAndCloseButton("A phone call can not be made"))
+ AlertManager.sendAlert(textField1: AlertDialNumberUnavailableWarningText, sdlManager: manager)
}
})
}
diff --git a/Example Apps/Shared/AppConstants.h b/Example Apps/Shared/AppConstants.h
index 5fb4b25b0..b06009fa7 100644
--- a/Example Apps/Shared/AppConstants.h
+++ b/Example Apps/Shared/AppConstants.h
@@ -22,16 +22,13 @@ extern NSString * const SmartDeviceLinkText;
extern NSString * const ExampleAppText;
#pragma mark - SDL Soft Buttons
-extern NSString * const ToggleSoftButton;
-extern NSString * const ToggleSoftButtonImageOnState;
-extern NSString * const ToggleSoftButtonImageOffState;
-extern NSString * const ToggleSoftButtonTextOnState;
-extern NSString * const ToggleSoftButtonTextOffState;
-extern NSString * const ToggleSoftButtonTextTextOnText;
-extern NSString * const ToggleSoftButtonTextTextOffText;
+extern NSString * const SubtleAlertSoftButton;
+extern NSString * const SubtleAlertSoftButtonImageAndTextState;
+extern NSString * const SubtleAlertSoftButtonTextState;
+extern NSString * const SubtleAlertSoftButtonText;
extern NSString * const AlertSoftButton;
-extern NSString * const AlertSoftButtonImageState;
+extern NSString * const AlertSoftButtonImageAndTextState;
extern NSString * const AlertSoftButtonTextState;
extern NSString * const AlertSoftButtonText;
@@ -48,7 +45,21 @@ extern NSString * const ImagesVisibleSoftButtonImageOnText;
extern NSString * const ImagesVisibleSoftButtonImageOffText;
#pragma mark - Alert
+extern NSString * const AlertMessageText;
extern NSString * const AlertOKButtonText;
+extern NSString * const SubtleAlertHeaderText;
+extern NSString * const SubtleAlertSubheaderText;
+extern NSString * const AlertDialNumberPermissionsWarningText;
+extern NSString * const AlertDialNumberUnavailableWarningText;
+extern NSString * const AlertSliderTimedOutWarningText;
+extern NSString * const AlertSliderCancelledWarningText;
+extern NSString * const AlertSliderGeneralWarningText;
+extern NSString * const AlertScrollableMessageTimedOutWarningText;
+extern NSString * const AlertScrollableMessageCancelledWarningText;
+extern NSString * const AlertScrollableMessageGeneralWarningText;
+extern NSString * const AlertVehicleDataPermissionsWarningText;
+extern NSString * const AlertVehicleDataGeneralWarningText;
+extern NSString * const AlertSpeechPermissionsWarningText;
#pragma mark - SDL Text-To-Speech
extern NSString * const TTSGoodJob;
@@ -101,6 +112,7 @@ extern NSString * const ACExternalTemperatureMenuName;
extern NSString * const ACFuelLevelMenuName;
extern NSString * const ACFuelLevelStateMenuName;
extern NSString * const ACFuelRangeMenuName;
+extern NSString * const ACGearStatusMenuName;
extern NSString * const ACGPSMenuName;
extern NSString * const ACHeadLampStatusMenuName;
extern NSString * const ACInstantFuelConsumptionMenuName;
@@ -123,8 +135,8 @@ extern NSString * const MenuBWIconImageName;
extern NSString * const MicrophoneBWIconImageName;
extern NSString * const PhoneBWIconImageName;
extern NSString * const SpeakBWIconImageName;
-extern NSString * const ToggleOffBWIconName;
-extern NSString * const ToggleOnBWIconName;
+extern NSString * const BatteryEmptyBWIconName;
+extern NSString * const BatteryFullBWIconName;
#pragma mark - SDL App Name in Different Languages
extern NSString * const ExampleAppNameSpanish;
diff --git a/Example Apps/Shared/AppConstants.m b/Example Apps/Shared/AppConstants.m
index ffe4762d1..69447b16d 100644
--- a/Example Apps/Shared/AppConstants.m
+++ b/Example Apps/Shared/AppConstants.m
@@ -19,18 +19,15 @@ NSString * const SmartDeviceLinkText = @"SmartDeviceLink (SDL)";
NSString * const ExampleAppText = @"Example App";
#pragma mark - SDL Soft Buttons
-NSString * const ToggleSoftButton = @"ToggleSoftButton";
-NSString * const ToggleSoftButtonImageOnState = @"ToggleSoftButtonImageOnState";
-NSString * const ToggleSoftButtonImageOffState = @"ToggleSoftButtonImageOffState";
-NSString * const ToggleSoftButtonTextOnState = @"ToggleSoftButtonTextOnState";
-NSString * const ToggleSoftButtonTextOffState = @"ToggleSoftButtonTextOffState";
-NSString * const ToggleSoftButtonTextTextOnText = @"➖";
-NSString * const ToggleSoftButtonTextTextOffText = @"➕";
+NSString * const SubtleAlertSoftButton = @"SubtleAlertSoftButton";
+NSString * const SubtleAlertSoftButtonImageAndTextState = @"SubtleAlertSoftButtonImageAndTextState";
+NSString * const SubtleAlertSoftButtonTextState = @"SubtleAlertSoftButtonTextState";
+NSString * const SubtleAlertSoftButtonText = @"Check Battery";
NSString * const AlertSoftButton = @"AlertSoftButton";
-NSString * const AlertSoftButtonImageState = @"AlertSoftButtonImageState";
+NSString * const AlertSoftButtonImageAndTextState = @"AlertSoftButtonImageAndTextState";
NSString * const AlertSoftButtonTextState = @"AlertSoftButtonTextState";
-NSString * const AlertSoftButtonText = @"Tap Me";
+NSString * const AlertSoftButtonText = @"Show Alert";
NSString * const TextVisibleSoftButton = @"TextVisibleSoftButton";
NSString * const TextVisibleSoftButtonTextOnState = @"TextVisibleSoftButtonTextOnState";
@@ -45,7 +42,21 @@ NSString * const ImagesVisibleSoftButtonImageOnText = @"➖Icons";
NSString * const ImagesVisibleSoftButtonImageOffText = @"➕Icons";
#pragma mark - Alert
+NSString * const AlertMessageText = @"You pressed the button!";
NSString * const AlertOKButtonText = @"OK";
+NSString * const SubtleAlertHeaderText = @"Battery Level";
+NSString * const SubtleAlertSubheaderText = @"Almost empty";
+NSString * const AlertDialNumberPermissionsWarningText = @"This app does not have the required permissions to dial a number";
+NSString * const AlertDialNumberUnavailableWarningText = @"The dial number feature is unavailable for this head unit";
+NSString * const AlertSliderTimedOutWarningText = @"Slider timed out";
+NSString * const AlertSliderCancelledWarningText = @"Slider cancelled";
+NSString * const AlertSliderGeneralWarningText = @"Slider could not be displayed";
+NSString * const AlertScrollableMessageTimedOutWarningText = @"Scrollable Message timed out";
+NSString * const AlertScrollableMessageCancelledWarningText = @"Scrollable Message cancelled";
+NSString * const AlertScrollableMessageGeneralWarningText = @"Scrollable Message could not be displayed";
+NSString * const AlertVehicleDataPermissionsWarningText = @"This app does not have the required permissions to access vehicle data";
+NSString * const AlertVehicleDataGeneralWarningText = @"Something went wrong while getting vehicle data";
+NSString * const AlertSpeechPermissionsWarningText = @"You must give this app permission to access Speech Recognition";
#pragma mark - SDL Text-To-Speech
NSString * const TTSGoodJob = @"Good Job";
@@ -98,6 +109,7 @@ NSString * const ACExternalTemperatureMenuName = @"External Temperature";
NSString * const ACFuelLevelMenuName = @"Fuel Level";
NSString * const ACFuelLevelStateMenuName = @"Fuel Level State";
NSString * const ACFuelRangeMenuName = @"Fuel Range";
+NSString * const ACGearStatusMenuName = @"Gear Status";
NSString * const ACGPSMenuName = @"GPS";
NSString * const ACHeadLampStatusMenuName = @"Head Lamp Status";
NSString * const ACInstantFuelConsumptionMenuName = @"Instant Fuel Consumption";
@@ -120,8 +132,8 @@ NSString * const MenuBWIconImageName = @"choice_set";
NSString * const MicrophoneBWIconImageName = @"microphone";
NSString * const PhoneBWIconImageName = @"phone";
NSString * const SpeakBWIconImageName = @"speak";
-NSString * const ToggleOffBWIconName = @"toggle_off";
-NSString * const ToggleOnBWIconName = @"toggle_on";
+NSString * const BatteryEmptyBWIconName = @"toggle_off";
+NSString * const BatteryFullBWIconName = @"toggle_on";
#pragma mark - SDL App Name in Different Languages
NSString * const ExampleAppNameSpanish = @"SDL Aplicación de ejemplo";
diff --git a/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json
index 997a0f138..5e692a4d1 100644
--- a/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -2,58 +2,59 @@
"images" : [
{
"idiom" : "iphone",
- "size" : "20x20",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "20x20"
},
{
"idiom" : "iphone",
- "size" : "20x20",
- "scale" : "3x"
+ "scale" : "3x",
+ "size" : "20x20"
},
{
- "size" : "29x29",
- "idiom" : "iphone",
"filename" : "Icon-Small@2x.png",
- "scale" : "2x"
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
},
{
- "size" : "29x29",
- "idiom" : "iphone",
"filename" : "Icon-Small@3x.png",
- "scale" : "3x"
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
},
{
- "size" : "40x40",
- "idiom" : "iphone",
"filename" : "Icon-Small-40@2x.png",
- "scale" : "2x"
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
},
{
- "size" : "40x40",
- "idiom" : "iphone",
"filename" : "Icon-60@2x-1.png",
- "scale" : "3x"
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
},
{
- "size" : "60x60",
- "idiom" : "iphone",
"filename" : "Icon-60@2x.png",
- "scale" : "2x"
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
},
{
- "size" : "60x60",
- "idiom" : "iphone",
"filename" : "Icon-60@3x.png",
- "scale" : "3x"
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
},
{
+ "filename" : "iTunesArtwork.png",
"idiom" : "ios-marketing",
- "size" : "1024x1024",
- "scale" : "1x"
+ "scale" : "1x",
+ "size" : "1024x1024"
}
],
"info" : {
- "version" : 1,
- "author" : "xcode"
+ "author" : "xcode",
+ "version" : 1
}
-} \ No newline at end of file
+}
diff --git a/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png
new file mode 100644
index 000000000..0d8007ea2
--- /dev/null
+++ b/Example Apps/Shared/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png
Binary files differ
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec
index a5a56f91c..60c7c3551 100644
--- a/SmartDeviceLink-iOS.podspec
+++ b/SmartDeviceLink-iOS.podspec
@@ -1,455 +1,20 @@
Pod::Spec.new do |s|
s.name = "SmartDeviceLink-iOS"
-s.version = "6.7.0"
+s.version = "7.0.0-rc.1"
s.summary = "Connect your app with cars!"
s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS"
s.license = { :type => "New BSD", :file => "LICENSE" }
s.author = { "SmartDeviceLink Team" => "developer@smartdevicelink.com" }
-s.platform = :ios, "8.0"
+s.platform = :ios, "10.0"
s.dependency 'BiSON', '~> 1.2.0'
s.source = { :git => "https://github.com/smartdevicelink/sdl_ios.git", :tag => s.version.to_s }
s.requires_arc = true
-s.resource_bundles = { 'SmartDeviceLink' => ['SmartDeviceLink/Assets/**/*'] }
-s.source_files = 'SmartDeviceLink/*.{h,m}'
+s.source_files = 'SmartDeviceLink/public/*.{h,m}', 'SmartDeviceLink/private/*.{h,m}'
+s.resource_bundles = { 'SmartDeviceLink' => ['SmartDeviceLink/Assets/**/*'] }
-s.public_header_files = [
-'SmartDeviceLink/NSNumber+NumberType.h',
-'SmartDeviceLink/SDLAddCommand.h',
-'SmartDeviceLink/SDLAddCommandResponse.h',
-'SmartDeviceLink/SDLAddSubMenu.h',
-'SmartDeviceLink/SDLAddSubMenuResponse.h',
-'SmartDeviceLink/SDLAirbagStatus.h',
-'SmartDeviceLink/SDLAlert.h',
-'SmartDeviceLink/SDLAlertManeuver.h',
-'SmartDeviceLink/SDLAlertManeuverResponse.h',
-'SmartDeviceLink/SDLAlertResponse.h',
-'SmartDeviceLink/SDLAppServiceCapability.h',
-'SmartDeviceLink/SDLAppServiceData.h',
-'SmartDeviceLink/SDLAppServiceManifest.h',
-'SmartDeviceLink/SDLAppServiceRecord.h',
-'SmartDeviceLink/SDLAppServicesCapabilities.h',
-'SmartDeviceLink/SDLAppServiceType.h',
-'SmartDeviceLink/SDLButtonPressResponse.h',
-'SmartDeviceLink/SDLAmbientLightStatus.h',
-'SmartDeviceLink/SDLAppHMIType.h',
-'SmartDeviceLink/SDLAppInfo.h',
-'SmartDeviceLink/SDLAppInterfaceUnregisteredReason.h',
-'SmartDeviceLink/SDLArtwork.h',
-'SmartDeviceLink/SDLAudioControlData.h',
-'SmartDeviceLink/SDLAudioControlCapabilities.h',
-'SmartDeviceLink/SDLAudioPassThruCapabilities.h',
-'SmartDeviceLink/SDLAudioFile.h',
-'SmartDeviceLink/SDLAudioStreamingState.h',
-'SmartDeviceLink/SDLAudioStreamingIndicator.h',
-'SmartDeviceLink/SDLAudioStreamManager.h',
-'SmartDeviceLink/SDLAudioStreamManagerDelegate.h',
-'SmartDeviceLink/SDLStreamingAudioManagerType.h',
-'SmartDeviceLink/SDLAudioType.h',
-'SmartDeviceLink/SDLBeltStatus.h',
-'SmartDeviceLink/SDLBitsPerSample.h',
-'SmartDeviceLink/SDLBodyInformation.h',
-'SmartDeviceLink/SDLButtonCapabilities.h',
-'SmartDeviceLink/SDLButtonEventMode.h',
-'SmartDeviceLink/SDLButtonName.h',
-'SmartDeviceLink/SDLButtonPress.h',
-'SmartDeviceLink/SDLButtonPressMode.h',
-'SmartDeviceLink/SDLCancelInteraction.h',
-'SmartDeviceLink/SDLCancelInteractionResponse.h',
-'SmartDeviceLink/SDLCarModeStatus.h',
-'SmartDeviceLink/SDLCarWindowViewController.h',
-'SmartDeviceLink/SDLChangeRegistration.h',
-'SmartDeviceLink/SDLChangeRegistrationResponse.h',
-'SmartDeviceLink/SDLCharacterSet.h',
-'SmartDeviceLink/SDLChoice.h',
-'SmartDeviceLink/SDLChoiceCell.h',
-'SmartDeviceLink/SDLChoiceSet.h',
-'SmartDeviceLink/SDLChoiceSetDelegate.h',
-'SmartDeviceLink/SDLClimateControlCapabilities.h',
-'SmartDeviceLink/SDLClimateControlData.h',
-'SmartDeviceLink/SDLCloseApplication.h',
-'SmartDeviceLink/SDLCloseApplicationResponse.h',
-'SmartDeviceLink/SDLCloudAppProperties.h',
-'SmartDeviceLink/SDLClusterModeStatus.h',
-'SmartDeviceLink/SDLCompassDirection.h',
-'SmartDeviceLink/SDLComponentVolumeStatus.h',
-'SmartDeviceLink/SDLConfiguration.h',
-'SmartDeviceLink/SDLCreateInteractionChoiceSet.h',
-'SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h',
-'SmartDeviceLink/SDLCreateWindow.h',
-'SmartDeviceLink/SDLCreateWindowResponse.h',
-'SmartDeviceLink/SDLDateTime.h',
-'SmartDeviceLink/SDLDefrostZone.h',
-'SmartDeviceLink/SDLDeleteCommand.h',
-'SmartDeviceLink/SDLDeleteCommandResponse.h',
-'SmartDeviceLink/SDLDeleteFile.h',
-'SmartDeviceLink/SDLDeleteFileResponse.h',
-'SmartDeviceLink/SDLDeleteInteractionChoiceSet.h',
-'SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.h',
-'SmartDeviceLink/SDLDeleteSubMenu.h',
-'SmartDeviceLink/SDLDeleteSubMenuResponse.h',
-'SmartDeviceLink/SDLDeleteWindow.h',
-'SmartDeviceLink/SDLDeleteWindowResponse.h',
-'SmartDeviceLink/SDLDeliveryMode.h',
-'SmartDeviceLink/SDLDeviceInfo.h',
-'SmartDeviceLink/SDLDeviceLevelStatus.h',
-'SmartDeviceLink/SDLDeviceStatus.h',
-'SmartDeviceLink/SDLDiagnosticMessage.h',
-'SmartDeviceLink/SDLDiagnosticMessageResponse.h',
-'SmartDeviceLink/SDLDialNumber.h',
-'SmartDeviceLink/SDLDialNumberResponse.h',
-'SmartDeviceLink/SDLDIDResult.h',
-'SmartDeviceLink/SDLDimension.h',
-'SmartDeviceLink/SDLDirection.h',
-'SmartDeviceLink/SDLDisplayCapability.h',
-'SmartDeviceLink/SDLDisplayCapabilities.h',
-'SmartDeviceLink/SDLDisplayMode.h',
-'SmartDeviceLink/SDLDisplayType.h',
-'SmartDeviceLink/SDLDistanceUnit.h',
-'SmartDeviceLink/SDLDriverDistractionState.h',
-'SmartDeviceLink/SDLECallConfirmationStatus.h',
-'SmartDeviceLink/SDLECallInfo.h',
-'SmartDeviceLink/SDLElectronicParkBrakeStatus.h',
-'SmartDeviceLink/SDLEncryptionConfiguration.h',
-'SmartDeviceLink/SDLEmergencyEvent.h',
-'SmartDeviceLink/SDLEmergencyEventType.h',
-'SmartDeviceLink/SDLEncodedSyncPData.h',
-'SmartDeviceLink/SDLEncodedSyncPDataResponse.h',
-'SmartDeviceLink/SDLEndAudioPassThru.h',
-'SmartDeviceLink/SDLEndAudioPassThruResponse.h',
-'SmartDeviceLink/SDLEqualizerSettings.h',
-'SmartDeviceLink/SDLEnum.h',
-'SmartDeviceLink/SDLErrorConstants.h',
-'SmartDeviceLink/SDLFile.h',
-'SmartDeviceLink/SDLFileManager.h',
-'SmartDeviceLink/SDLFileManagerConfiguration.h',
-'SmartDeviceLink/SDLFileManagerConstants.h',
-'SmartDeviceLink/SDLFileType.h',
-'SmartDeviceLink/SDLFuelCutoffStatus.h',
-'SmartDeviceLink/SDLFuelRange.h',
-'SmartDeviceLink/SDLFuelType.h',
-'SmartDeviceLink/SDLFunctionID.h',
-'SmartDeviceLink/SDLGenericResponse.h',
-'SmartDeviceLink/SDLGetAppServiceData.h',
-'SmartDeviceLink/SDLGetAppServiceDataResponse.h',
-'SmartDeviceLink/SDLGetDTCs.h',
-'SmartDeviceLink/SDLGetCloudAppProperties.h',
-'SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h',
-'SmartDeviceLink/SDLGetDTCsResponse.h',
-'SmartDeviceLink/SDLGetFile.h',
-'SmartDeviceLink/SDLGetFileResponse.h',
-'SmartDeviceLink/SDLGetInteriorVehicleData.h',
-'SmartDeviceLink/SDLGetInteriorVehicleDataConsent.h',
-'SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h',
-'SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h',
-'SmartDeviceLink/SDLGetSystemCapability.h',
-'SmartDeviceLink/SDLGetSystemCapabilityResponse.h',
-'SmartDeviceLink/SDLGetVehicleData.h',
-'SmartDeviceLink/SDLGetVehicleDataResponse.h',
-'SmartDeviceLink/SDLGetWaypoints.h',
-'SmartDeviceLink/SDLGetWaypointsResponse.h',
-'SmartDeviceLink/SDLGlobalProperty.h',
-'SmartDeviceLink/SDLGPSData.h',
-'SmartDeviceLink/SDLGrid.h',
-'SmartDeviceLink/SDLHapticRect.h',
-'SmartDeviceLink/SDLHeadLampStatus.h',
-'SmartDeviceLink/SDLHMICapabilities.h',
-'SmartDeviceLink/SDLHMILevel.h',
-'SmartDeviceLink/SDLHMIPermissions.h',
-'SmartDeviceLink/SDLHMISettingsControlCapabilities.h',
-'SmartDeviceLink/SDLHMISettingsControlData.h',
-'SmartDeviceLink/SDLHMIZoneCapabilities.h',
-'SmartDeviceLink/SDLHybridAppPreference.h',
-'SmartDeviceLink/SDLIgnitionStableStatus.h',
-'SmartDeviceLink/SDLIgnitionStatus.h',
-'SmartDeviceLink/SDLImage.h',
-'SmartDeviceLink/SDLImageField.h',
-'SmartDeviceLink/SDLImageFieldName.h',
-'SmartDeviceLink/SDLImageResolution.h',
-'SmartDeviceLink/SDLImageType.h',
-'SmartDeviceLink/SDLInteractionMode.h',
-'SmartDeviceLink/SDLKeyboardDelegate.h',
-'SmartDeviceLink/SDLKeyboardEvent.h',
-'SmartDeviceLink/SDLKeyboardLayout.h',
-'SmartDeviceLink/SDLKeyboardProperties.h',
-'SmartDeviceLink/SDLKeypressMode.h',
-'SmartDeviceLink/SDLLanguage.h',
-'SmartDeviceLink/SDLLayoutMode.h',
-'SmartDeviceLink/SDLLifecycleConfiguration.h',
-'SmartDeviceLink/SDLLifecycleConfigurationUpdate.h',
-'SmartDeviceLink/SDLLightCapabilities.h',
-'SmartDeviceLink/SDLLightControlCapabilities.h',
-'SmartDeviceLink/SDLLightControlData.h',
-'SmartDeviceLink/SDLLightName.h',
-'SmartDeviceLink/SDLLightState.h',
-'SmartDeviceLink/SDLLightStatus.h',
-'SmartDeviceLink/SDLListFiles.h',
-'SmartDeviceLink/SDLListFilesResponse.h',
-'SmartDeviceLink/SDLLocationCoordinate.h',
-'SmartDeviceLink/SDLLocationDetails.h',
-'SmartDeviceLink/SDLLockScreenConfiguration.h',
-'SmartDeviceLink/SDLLockScreenStatus.h',
-'SmartDeviceLink/SDLLockScreenViewController.h',
-'SmartDeviceLink/SDLLogConfiguration.h',
-'SmartDeviceLink/SDLLogConstants.h',
-'SmartDeviceLink/SDLLogFileModule.h',
-'SmartDeviceLink/SDLLogFilter.h',
-'SmartDeviceLink/SDLLogMacros.h',
-'SmartDeviceLink/SDLLogManager.h',
-'SmartDeviceLink/SDLLogTarget.h',
-'SmartDeviceLink/SDLLogTargetAppleSystemLog.h',
-'SmartDeviceLink/SDLLogTargetFile.h',
-'SmartDeviceLink/SDLLogTargetOSLog.h',
-'SmartDeviceLink/SDLMacros.h',
-'SmartDeviceLink/SDLMaintenanceModeStatus.h',
-'SmartDeviceLink/SDLManager.h',
-'SmartDeviceLink/SDLManagerDelegate.h',
-'SmartDeviceLink/SDLMassageCushionFirmness.h',
-'SmartDeviceLink/SDLMassageModeData.h',
-'SmartDeviceLink/SDLMassageCushion.h',
-'SmartDeviceLink/SDLMassageMode.h',
-'SmartDeviceLink/SDLMassageZone.h',
-'SmartDeviceLink/SDLMediaClockFormat.h',
-'SmartDeviceLink/SDLMediaServiceData.h',
-'SmartDeviceLink/SDLMediaServiceManifest.h',
-'SmartDeviceLink/SDLMediaType.h',
-'SmartDeviceLink/SDLMenuCell.h',
-'SmartDeviceLink/SDLMenuConfiguration.h',
-'SmartDeviceLink/SDLMenuLayout.h',
-'SmartDeviceLink/SDLMenuManagerConstants.h',
-'SmartDeviceLink/SDLMenuParams.h',
-'SmartDeviceLink/SDLMetadataTags.h',
-'SmartDeviceLink/SDLMetadataType.h',
-'SmartDeviceLink/SDLModuleData.h',
-'SmartDeviceLink/SDLModuleInfo.h',
-'SmartDeviceLink/SDLModuleType.h',
-'SmartDeviceLink/SDLMyKey.h',
-'SmartDeviceLink/SDLNavigationAction.h',
-'SmartDeviceLink/SDLNavigationCapability.h',
-'SmartDeviceLink/SDLNavigationInstruction.h',
-'SmartDeviceLink/SDLNavigationJunction.h',
-'SmartDeviceLink/SDLNavigationServiceData.h',
-'SmartDeviceLink/SDLNavigationServiceManifest.h',
-'SmartDeviceLink/SDLNotificationConstants.h',
-'SmartDeviceLink/SDLOasisAddress.h',
-'SmartDeviceLink/SDLOnAppInterfaceUnregistered.h',
-'SmartDeviceLink/SDLOnAppServiceData.h',
-'SmartDeviceLink/SDLOnAudioPassThru.h',
-'SmartDeviceLink/SDLOnButtonEvent.h',
-'SmartDeviceLink/SDLOnButtonPress.h',
-'SmartDeviceLink/SDLOnCommand.h',
-'SmartDeviceLink/SDLOnDriverDistraction.h',
-'SmartDeviceLink/SDLOnEncodedSyncPData.h',
-'SmartDeviceLink/SDLOnHashChange.h',
-'SmartDeviceLink/SDLOnInteriorVehicleData.h',
-'SmartDeviceLink/SDLOnHMIStatus.h',
-'SmartDeviceLink/SDLOnKeyboardInput.h',
-'SmartDeviceLink/SDLOnLanguageChange.h',
-'SmartDeviceLink/SDLOnLockScreenStatus.h',
-'SmartDeviceLink/SDLOnPermissionsChange.h',
-'SmartDeviceLink/SDLOnRCStatus.h',
-'SmartDeviceLink/SDLOnSyncPData.h',
-'SmartDeviceLink/SDLOnSystemCapabilityUpdated.h',
-'SmartDeviceLink/SDLOnSystemRequest.h',
-'SmartDeviceLink/SDLOnTBTClientState.h',
-'SmartDeviceLink/SDLOnTouchEvent.h',
-'SmartDeviceLink/SDLOnVehicleData.h',
-'SmartDeviceLink/SDLOnWayPointChange.h',
-'SmartDeviceLink/SDLParameterPermissions.h',
-'SmartDeviceLink/SDLPerformAppServiceInteraction.h',
-'SmartDeviceLink/SDLPerformAppServiceInteractionResponse.h',
-'SmartDeviceLink/SDLPerformAudioPassThru.h',
-'SmartDeviceLink/SDLPerformAudioPassThruResponse.h',
-'SmartDeviceLink/SDLPerformInteraction.h',
-'SmartDeviceLink/SDLPerformInteractionResponse.h',
-'SmartDeviceLink/SDLPermissionConstants.h',
-'SmartDeviceLink/SDLPermissionElement.h',
-'SmartDeviceLink/SDLPermissionItem.h',
-'SmartDeviceLink/SDLPermissionManager.h',
-'SmartDeviceLink/SDLPermissionStatus.h',
-'SmartDeviceLink/SDLPhoneCapability.h',
-'SmartDeviceLink/SDLPinchGesture.h',
-'SmartDeviceLink/SDLPowerModeQualificationStatus.h',
-'SmartDeviceLink/SDLPowerModeStatus.h',
-'SmartDeviceLink/SDLPredefinedLayout.h',
-'SmartDeviceLink/SDLPredefinedWindows.h',
-'SmartDeviceLink/SDLPrerecordedSpeech.h',
-'SmartDeviceLink/SDLPresetBankCapabilities.h',
-'SmartDeviceLink/SDLPrimaryAudioSource.h',
-'SmartDeviceLink/SDLPRNDL.h',
-'SmartDeviceLink/SDLProtocolConstants.h',
-'SmartDeviceLink/SDLPublishAppService.h',
-'SmartDeviceLink/SDLPublishAppServiceResponse.h',
-'SmartDeviceLink/SDLPutFile.h',
-'SmartDeviceLink/SDLPutFileResponse.h',
-'SmartDeviceLink/SDLRadioBand.h',
-'SmartDeviceLink/SDLRadioControlCapabilities.h',
-'SmartDeviceLink/SDLRadioControlData.h',
-'SmartDeviceLink/SDLRadioState.h',
-'SmartDeviceLink/SDLRDSData.h',
-'SmartDeviceLink/SDLReadDID.h',
-'SmartDeviceLink/SDLRectangle.h',
-'SmartDeviceLink/SDLReadDIDResponse.h',
-'SmartDeviceLink/SDLRectangle.h',
-'SmartDeviceLink/SDLRegisterAppInterface.h',
-'SmartDeviceLink/SDLRegisterAppInterfaceResponse.h',
-'SmartDeviceLink/SDLRemoteControlCapabilities.h',
-'SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.h',
-'SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.h',
-'SmartDeviceLink/SDLRequestType.h',
-'SmartDeviceLink/SDLResetGlobalProperties.h',
-'SmartDeviceLink/SDLResetGlobalPropertiesResponse.h',
-'SmartDeviceLink/SDLResult.h',
-'SmartDeviceLink/SDLRGBColor.h',
-'SmartDeviceLink/SDLRPCFunctionNames.h',
-'SmartDeviceLink/SDLRPCMessage.h',
-'SmartDeviceLink/SDLRPCMessageType.h',
-'SmartDeviceLink/SDLRPCNotification.h',
-'SmartDeviceLink/SDLRPCNotificationNotification.h',
-'SmartDeviceLink/SDLRPCPermissionStatus.h',
-'SmartDeviceLink/SDLRPCRequest.h',
-'SmartDeviceLink/SDLRPCRequestNotification.h',
-'SmartDeviceLink/SDLRPCResponse.h',
-'SmartDeviceLink/SDLRPCResponseNotification.h',
-'SmartDeviceLink/SDLRPCStruct.h',
-'SmartDeviceLink/SDLSamplingRate.h',
-'SmartDeviceLink/SDLScreenParams.h',
-'SmartDeviceLink/SDLScreenManager.h',
-'SmartDeviceLink/SDLScrollableMessage.h',
-'SmartDeviceLink/SDLScrollableMessageResponse.h',
-'SmartDeviceLink/SDLSeatControlCapabilities.h',
-'SmartDeviceLink/SDLSeatControlData.h',
-'SmartDeviceLink/SDLSeatLocation.h',
-'SmartDeviceLink/SDLSeatLocationCapability.h',
-'SmartDeviceLink/SDLSeatMemoryAction.h',
-'SmartDeviceLink/SDLSeatMemoryActionType.h',
-'SmartDeviceLink/SDLSecurityType.h',
-'SmartDeviceLink/SDLSendHapticData.h',
-'SmartDeviceLink/SDLSendHapticDataResponse.h',
-'SmartDeviceLink/SDLSendLocation.h',
-'SmartDeviceLink/SDLSendLocationResponse.h',
-'SmartDeviceLink/SDLServiceEncryptionDelegate.h',
-'SmartDeviceLink/SDLServiceUpdateReason.h',
-'SmartDeviceLink/SDLSetAppIcon.h',
-'SmartDeviceLink/SDLSetAppIconResponse.h',
-'SmartDeviceLink/SDLSetCloudAppProperties.h',
-'SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h',
-'SmartDeviceLink/SDLSetDisplayLayout.h',
-'SmartDeviceLink/SDLSetDisplayLayoutResponse.h',
-'SmartDeviceLink/SDLSetGlobalProperties.h',
-'SmartDeviceLink/SDLSetInteriorVehicleData.h',
-'SmartDeviceLink/SDLSetGlobalPropertiesResponse.h',
-'SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h',
-'SmartDeviceLink/SDLSetMediaClockTimer.h',
-'SmartDeviceLink/SDLSetMediaClockTimerResponse.h',
-'SmartDeviceLink/SDLShow.h',
-'SmartDeviceLink/SDLShowAppMenu.h',
-'SmartDeviceLink/SDLShowAppMenuResponse.h',
-'SmartDeviceLink/SDLShowConstantTBT.h',
-'SmartDeviceLink/SDLShowConstantTBTResponse.h',
-'SmartDeviceLink/SDLShowResponse.h',
-'SmartDeviceLink/SDLSingleTireStatus.h',
-'SmartDeviceLink/SDLSISData.h',
-'SmartDeviceLink/SDLSlider.h',
-'SmartDeviceLink/SDLSliderResponse.h',
-'SmartDeviceLink/SDLSoftButton.h',
-'SmartDeviceLink/SDLSoftButtonCapabilities.h',
-'SmartDeviceLink/SDLSoftButtonObject.h',
-'SmartDeviceLink/SDLSoftButtonState.h',
-'SmartDeviceLink/SDLSoftButtonType.h',
-'SmartDeviceLink/SDLSpeak.h',
-'SmartDeviceLink/SDLSpeakResponse.h',
-'SmartDeviceLink/SDLSpeechCapabilities.h',
-'SmartDeviceLink/SDLStartTime.h',
-'SmartDeviceLink/SDLStaticIconName.h',
-'SmartDeviceLink/SDLStationIDNumber.h',
-'SmartDeviceLink/SDLStreamingMediaConfiguration.h',
-'SmartDeviceLink/SDLStreamingMediaManager.h',
-'SmartDeviceLink/SDLStreamingMediaManagerConstants.h',
-'SmartDeviceLink/SDLStreamingMediaManagerDataSource.h',
-'SmartDeviceLink/SDLStreamingVideoScaleManager.h',
-'SmartDeviceLink/SDLSubscribeButton.h',
-'SmartDeviceLink/SDLSubscribeButtonResponse.h',
-'SmartDeviceLink/SDLSubscribeVehicleData.h',
-'SmartDeviceLink/SDLSubscribeVehicleDataResponse.h',
-'SmartDeviceLink/SDLSubscribeWaypoints.h',
-'SmartDeviceLink/SDLSubscribeWaypointsResponse.h',
-'SmartDeviceLink/SDLSupportedSeat.h',
-'SmartDeviceLink/SDLSyncMsgVersion.h',
-'SmartDeviceLink/SDLMsgVersion.h',
-'SmartDeviceLink/SDLSyncPData.h',
-'SmartDeviceLink/SDLSyncPDataResponse.h',
-'SmartDeviceLink/SDLSystemAction.h',
-'SmartDeviceLink/SDLSystemCapability.h',
-'SmartDeviceLink/SDLSystemCapabilityManager.h',
-'SmartDeviceLink/SDLSystemCapabilityType.h',
-'SmartDeviceLink/SDLSystemContext.h',
-'SmartDeviceLink/SDLSystemRequest.h',
-'SmartDeviceLink/SDLTBTState.h',
-'SmartDeviceLink/SDLTemperature.h',
-'SmartDeviceLink/SDLTemperatureUnit.h',
-'SmartDeviceLink/SDLTemplateConfiguration.h',
-'SmartDeviceLink/SDLTemplateColorScheme.h',
-'SmartDeviceLink/SDLTextAlignment.h',
-'SmartDeviceLink/SDLTextField.h',
-'SmartDeviceLink/SDLTextFieldName.h',
-'SmartDeviceLink/SDLTimerMode.h',
-'SmartDeviceLink/SDLTireStatus.h',
-'SmartDeviceLink/SDLTouch.h',
-'SmartDeviceLink/SDLTouchCoord.h',
-'SmartDeviceLink/SDLTouchEvent.h',
-'SmartDeviceLink/SDLTouchEventCapabilities.h',
-'SmartDeviceLink/SDLTouchManager.h',
-'SmartDeviceLink/SDLTouchManagerDelegate.h',
-'SmartDeviceLink/SDLTouchType.h',
-'SmartDeviceLink/SDLTPMS.h',
-'SmartDeviceLink/SDLTriggerSource.h',
-'SmartDeviceLink/SDLTTSChunk.h',
-'SmartDeviceLink/SDLTurn.h',
-'SmartDeviceLink/SDLTurnSignal.h',
-'SmartDeviceLink/SDLUnpublishAppService.h',
-'SmartDeviceLink/SDLUnpublishAppServiceResponse.h',
-'SmartDeviceLink/SDLUnregisterAppInterface.h',
-'SmartDeviceLink/SDLUnregisterAppInterfaceResponse.h',
-'SmartDeviceLink/SDLUnsubscribeButton.h',
-'SmartDeviceLink/SDLUnsubscribeButtonResponse.h',
-'SmartDeviceLink/SDLUnsubscribeVehicleData.h',
-'SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h',
-'SmartDeviceLink/SDLUnsubscribeWaypoints.h',
-'SmartDeviceLink/SDLUnsubscribeWaypointsResponse.h',
-'SmartDeviceLink/SDLUpdateMode.h',
-'SmartDeviceLink/SDLUpdateTurnList.h',
-'SmartDeviceLink/SDLUpdateTurnListResponse.h',
-'SmartDeviceLink/SDLVehicleDataActiveStatus.h',
-'SmartDeviceLink/SDLVehicleDataEventStatus.h',
-'SmartDeviceLink/SDLVehicleDataNotificationStatus.h',
-'SmartDeviceLink/SDLVehicleDataResult.h',
-'SmartDeviceLink/SDLVehicleDataResultCode.h',
-'SmartDeviceLink/SDLVehicleDataStatus.h',
-'SmartDeviceLink/SDLVehicleDataType.h',
-'SmartDeviceLink/SDLVentilationMode.h',
-'SmartDeviceLink/SDLVehicleType.h',
-'SmartDeviceLink/SDLVersion.h',
-'SmartDeviceLink/SDLVideoStreamingCapability.h',
-'SmartDeviceLink/SDLVideoStreamingCodec.h',
-'SmartDeviceLink/SDLVideoStreamingFormat.h',
-'SmartDeviceLink/SDLVideoStreamingProtocol.h',
-'SmartDeviceLink/SDLVideoStreamingState.h',
-'SmartDeviceLink/SDLVoiceCommand.h',
-'SmartDeviceLink/SDLVrCapabilities.h',
-'SmartDeviceLink/SDLVrHelpItem.h',
-'SmartDeviceLink/SDLWarningLightStatus.h',
-'SmartDeviceLink/SDLWayPointType.h',
-'SmartDeviceLink/SDLWeatherAlert.h',
-'SmartDeviceLink/SDLWeatherData.h',
-'SmartDeviceLink/SDLWeatherServiceData.h',
-'SmartDeviceLink/SDLWeatherServiceManifest.h',
-'SmartDeviceLink/SDLWiperStatus.h',
-'SmartDeviceLink/SDLWindowCapability.h',
-'SmartDeviceLink/SDLWindowType.h',
-'SmartDeviceLink/SDLWindowTypeCapabilities.h',
-'SmartDeviceLink/SmartDeviceLink.h',
-]
+s.public_header_files = 'SmartDeviceLink/public/*.h'
+s.private_header_files = 'SmartDeviceLink/private/*.h'
end
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index 435b4e720..3c9a2d310 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -13,41 +13,9 @@
000DD57222EF063F005AB7A7 /* SDLGetInteriorVehicleDataConsentResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 000DD57122EF063F005AB7A7 /* SDLGetInteriorVehicleDataConsentResponseSpec.m */; };
000DD57422EF0957005AB7A7 /* SDLReleaseInteriorVehicleDataModuleSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 000DD57322EF0957005AB7A7 /* SDLReleaseInteriorVehicleDataModuleSpec.m */; };
000DD57622EF0971005AB7A7 /* SDLReleaseInteriorVehicleDataModuleResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 000DD57522EF0971005AB7A7 /* SDLReleaseInteriorVehicleDataModuleResponseSpec.m */; };
- 001A08B52321ADD30078A31E /* SDLServiceEncryptionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 001A08B32321ADD30078A31E /* SDLServiceEncryptionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0055412622D40DAB003194D3 /* SDLModuleInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0055412422D40DAB003194D3 /* SDLModuleInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0055412722D40DAB003194D3 /* SDLModuleInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0055412522D40DAB003194D3 /* SDLModuleInfo.m */; };
- 0055412A22D5DC0B003194D3 /* SDLGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = 0055412822D5DC0B003194D3 /* SDLGrid.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0055412B22D5DC0B003194D3 /* SDLGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 0055412922D5DC0B003194D3 /* SDLGrid.m */; };
- 0055412E22D759BD003194D3 /* SDLSeatLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0055412C22D759BC003194D3 /* SDLSeatLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0055412F22D759BD003194D3 /* SDLSeatLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0055412D22D759BC003194D3 /* SDLSeatLocation.m */; };
- 0055413222D75A7B003194D3 /* SDLSeatLocationCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 0055413022D75A7A003194D3 /* SDLSeatLocationCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0055413322D75A7B003194D3 /* SDLSeatLocationCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 0055413122D75A7B003194D3 /* SDLSeatLocationCapability.m */; };
- 005DF3C522C59191006E01A9 /* SDLEncryptionLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 005DF3C322C59191006E01A9 /* SDLEncryptionLifecycleManager.h */; };
- 005DF3C622C59191006E01A9 /* SDLEncryptionLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 005DF3C422C59191006E01A9 /* SDLEncryptionLifecycleManager.m */; };
- 005DF3CA22C62E00006E01A9 /* SDLEncryptionManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 005DF3C822C62E00006E01A9 /* SDLEncryptionManagerConstants.h */; };
- 005DF3CB22C62E00006E01A9 /* SDLEncryptionManagerConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 005DF3C922C62E00006E01A9 /* SDLEncryptionManagerConstants.m */; };
- 008DB36122EA7482003F458C /* SDLGetInteriorVehicleDataConsent.h in Headers */ = {isa = PBXBuildFile; fileRef = 008DB35F22EA7481003F458C /* SDLGetInteriorVehicleDataConsent.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 008DB36222EA7482003F458C /* SDLGetInteriorVehicleDataConsent.m in Sources */ = {isa = PBXBuildFile; fileRef = 008DB36022EA7481003F458C /* SDLGetInteriorVehicleDataConsent.m */; };
- 008DB36522EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 008DB36322EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 008DB36622EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 008DB36422EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.m */; };
- 008DB36922EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 008DB36722EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 008DB36A22EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 008DB36822EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.m */; };
- 008DB36D22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 008DB36B22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 008DB36E22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 008DB36C22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.m */; };
- 00E22CEC22C2F1B300BC6B08 /* SDLEncryptionConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E22CEA22C2F1B200BC6B08 /* SDLEncryptionConfiguration.m */; };
- 00E22CED22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 00E22CEB22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
00EADD3322DFE54B0088B608 /* SDLEncryptionLifecycleManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EADD3222DFE54B0088B608 /* SDLEncryptionLifecycleManagerSpec.m */; };
00EADD3522DFE5670088B608 /* SDLEncryptionConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EADD3422DFE5670088B608 /* SDLEncryptionConfigurationSpec.m */; };
106187B924AA75540045C4EC /* SDLRPCPermissionStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 106187B824AA75540045C4EC /* SDLRPCPermissionStatusSpec.m */; };
- 106187BA24AA76550045C4EC /* SDLRPCPermissionStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 106982A824AA3B4700B1F649 /* SDLRPCPermissionStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 106412C6249FB80B0069A97A /* SDLPermissionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 106412C4249FB80B0069A97A /* SDLPermissionElement.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 106412C7249FB80B0069A97A /* SDLPermissionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 106412C5249FB80B0069A97A /* SDLPermissionElement.m */; };
- 106412C824A13F160069A97A /* SDLPermissionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8204241BCEA8A600D0A41B /* SDLPermissionManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 106982AB24AA3B4700B1F649 /* SDLRPCPermissionStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 106982A924AA3B4700B1F649 /* SDLRPCPermissionStatus.m */; };
- 10893C162417D78300BA347E /* SDLIconArchiveFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 10893C142417D78300BA347E /* SDLIconArchiveFile.h */; };
- 10893C172417D78300BA347E /* SDLIconArchiveFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 10893C152417D78300BA347E /* SDLIconArchiveFile.m */; };
- 10893C1A2418188600BA347E /* SDLCacheFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 10893C182418188600BA347E /* SDLCacheFileManager.h */; };
- 10893C1B2418188600BA347E /* SDLCacheFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 10893C192418188600BA347E /* SDLCacheFileManager.m */; };
109566F6242986F300E24F66 /* SDLCacheFileManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 109566F5242986F300E24F66 /* SDLCacheFileManagerSpec.m */; };
1098F03824A39699004F53CC /* SDLPermissionElementSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1098F03724A39699004F53CC /* SDLPermissionElementSpec.m */; };
162E82CA1A9BDE8A00906325 /* SDLAmbientLightStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E81E21A9BDE8A00906325 /* SDLAmbientLightStatusSpec.m */; };
@@ -84,7 +52,6 @@
162E82E91A9BDE8B00906325 /* SDLKeypressModeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82011A9BDE8A00906325 /* SDLKeypressModeSpec.m */; };
162E82EA1A9BDE8B00906325 /* SDLLanguageSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82021A9BDE8A00906325 /* SDLLanguageSpec.m */; };
162E82EB1A9BDE8B00906325 /* SDLLayoutModeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82031A9BDE8A00906325 /* SDLLayoutModeSpec.m */; };
- 162E82EC1A9BDE8B00906325 /* SDLLockScreenStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82041A9BDE8A00906325 /* SDLLockScreenStatusSpec.m */; };
162E82ED1A9BDE8B00906325 /* SDLMaintenanceModeStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82051A9BDE8A00906325 /* SDLMaintenanceModeStatusSpec.m */; };
162E82EE1A9BDE8B00906325 /* SDLMediaClockFormatSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82061A9BDE8A00906325 /* SDLMediaClockFormatSpec.m */; };
162E82EF1A9BDE8B00906325 /* SDLPermissionStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82071A9BDE8A00906325 /* SDLPermissionStatusSpec.m */; };
@@ -128,7 +95,6 @@
162E83171A9BDE8B00906325 /* SDLOnHMIStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82311A9BDE8A00906325 /* SDLOnHMIStatusSpec.m */; };
162E83181A9BDE8B00906325 /* SDLOnKeyboardInputSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82321A9BDE8A00906325 /* SDLOnKeyboardInputSpec.m */; };
162E83191A9BDE8B00906325 /* SDLOnLanguageChangeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82331A9BDE8A00906325 /* SDLOnLanguageChangeSpec.m */; };
- 162E831A1A9BDE8B00906325 /* SDLOnLockScreenStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82341A9BDE8A00906325 /* SDLOnLockScreenStatusSpec.m */; };
162E831B1A9BDE8B00906325 /* SDLOnPermissionsChangeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82351A9BDE8A00906325 /* SDLOnPermissionsChangeSpec.m */; };
162E831C1A9BDE8B00906325 /* SDLOnSyncPDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82361A9BDE8A00906325 /* SDLOnSyncPDataSpec.m */; };
162E831D1A9BDE8B00906325 /* SDLOnSystemRequestSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82371A9BDE8A00906325 /* SDLOnSystemRequestSpec.m */; };
@@ -149,7 +115,6 @@
162E832C1A9BDE8B00906325 /* SDLDiagnosticMessageSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82481A9BDE8A00906325 /* SDLDiagnosticMessageSpec.m */; };
162E832D1A9BDE8B00906325 /* SDLEncodedSyncPDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82491A9BDE8A00906325 /* SDLEncodedSyncPDataSpec.m */; };
162E832E1A9BDE8B00906325 /* SDLEndAudioPassThruSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824A1A9BDE8A00906325 /* SDLEndAudioPassThruSpec.m */; };
- 162E83301A9BDE8B00906325 /* SDLGetVehicleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824C1A9BDE8A00906325 /* SDLGetVehicleDataSpec.m */; };
162E83311A9BDE8B00906325 /* SDLListFilesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824D1A9BDE8A00906325 /* SDLListFilesSpec.m */; };
162E83321A9BDE8B00906325 /* SDLPerformAudioPassThruSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824E1A9BDE8A00906325 /* SDLPerformAudioPassThruSpec.m */; };
162E83331A9BDE8B00906325 /* SDLPerformInteractionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824F1A9BDE8A00906325 /* SDLPerformInteractionSpec.m */; };
@@ -243,7 +208,6 @@
162E838B1A9BDE8B00906325 /* SDLSoftButtonCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82A91A9BDE8A00906325 /* SDLSoftButtonCapabilitiesSpec.m */; };
162E838C1A9BDE8B00906325 /* SDLSoftButtonSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82AA1A9BDE8A00906325 /* SDLSoftButtonSpec.m */; };
162E838D1A9BDE8B00906325 /* SDLStartTimeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82AB1A9BDE8A00906325 /* SDLStartTimeSpec.m */; };
- 162E838E1A9BDE8B00906325 /* SDLSyncMsgVersionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */; };
162E838F1A9BDE8B00906325 /* SDLTextFieldSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82AD1A9BDE8A00906325 /* SDLTextFieldSpec.m */; };
162E83901A9BDE8B00906325 /* SDLTireStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82AE1A9BDE8A00906325 /* SDLTireStatusSpec.m */; };
162E83911A9BDE8B00906325 /* SDLTouchCoordSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E82AF1A9BDE8A00906325 /* SDLTouchCoordSpec.m */; };
@@ -272,81 +236,9 @@
1680B11C1A9CD7AD00DBD79E /* SDLProtocolMessageAssemblerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1680B1101A9CD7AD00DBD79E /* SDLProtocolMessageAssemblerSpec.m */; };
1680B11D1A9CD7AD00DBD79E /* SDLProtocolMessageDisassemblerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1680B1111A9CD7AD00DBD79E /* SDLProtocolMessageDisassemblerSpec.m */; };
1680B11E1A9CD7AD00DBD79E /* SDLProtocolReceivedMessageRouterSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1680B1121A9CD7AD00DBD79E /* SDLProtocolReceivedMessageRouterSpec.m */; };
- 1E4920B11F6A6443008F2CC3 /* SDLRadioState.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD05F1F207AB10029B8AF /* SDLRadioState.m */; };
- 1E4920B21F6A6455008F2CC3 /* SDLGetInteriorVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD08B1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.m */; };
- 1E4920B31F6A6463008F2CC3 /* SDLOnInteriorVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0971F20C0FB0029B8AF /* SDLOnInteriorVehicleData.m */; };
- 1E5AD0341F1F3AA30029B8AF /* SDLRemoteControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0321F1F3AA30029B8AF /* SDLRemoteControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0351F1F3AA30029B8AF /* SDLRemoteControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0331F1F3AA30029B8AF /* SDLRemoteControlCapabilities.m */; };
- 1E5AD0381F1F4E390029B8AF /* SDLClimateControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0361F1F4E390029B8AF /* SDLClimateControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0391F1F4E390029B8AF /* SDLClimateControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0371F1F4E390029B8AF /* SDLClimateControlCapabilities.m */; };
- 1E5AD0401F1F58480029B8AF /* SDLVentilationMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD03E1F1F58480029B8AF /* SDLVentilationMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0411F1F58480029B8AF /* SDLVentilationMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD03F1F1F58480029B8AF /* SDLVentilationMode.m */; };
- 1E5AD0441F1F5A1F0029B8AF /* SDLRadioControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0421F1F5A1F0029B8AF /* SDLRadioControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0451F1F5A1F0029B8AF /* SDLRadioControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0431F1F5A1F0029B8AF /* SDLRadioControlCapabilities.m */; };
- 1E5AD0481F1F773E0029B8AF /* SDLModuleType.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0461F1F773E0029B8AF /* SDLModuleType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0491F1F773E0029B8AF /* SDLModuleType.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0471F1F773E0029B8AF /* SDLModuleType.m */; };
- 1E5AD04C1F1F79640029B8AF /* SDLDefrostZone.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD04A1F1F79640029B8AF /* SDLDefrostZone.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD04D1F1F79640029B8AF /* SDLDefrostZone.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD04B1F1F79640029B8AF /* SDLDefrostZone.m */; };
- 1E5AD0501F1F7BF10029B8AF /* SDLRadioBand.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD04E1F1F7BF10029B8AF /* SDLRadioBand.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0511F1F7BF10029B8AF /* SDLRadioBand.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD04F1F1F7BF10029B8AF /* SDLRadioBand.m */; };
- 1E5AD05C1F2064A80029B8AF /* SDLRDSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD05A1F2064A80029B8AF /* SDLRDSData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD05D1F2064A80029B8AF /* SDLRDSData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD05B1F2064A80029B8AF /* SDLRDSData.m */; };
- 1E5AD0601F207AB10029B8AF /* SDLRadioState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD05E1F207AB10029B8AF /* SDLRadioState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0641F207DD50029B8AF /* SDLTemperature.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0621F207DD50029B8AF /* SDLTemperature.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0651F207DD50029B8AF /* SDLTemperature.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0631F207DD50029B8AF /* SDLTemperature.m */; };
- 1E5AD0681F2080B50029B8AF /* SDLRadioControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0661F2080B50029B8AF /* SDLRadioControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0691F2080B50029B8AF /* SDLRadioControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0671F2080B50029B8AF /* SDLRadioControlData.m */; };
- 1E5AD06C1F208BAB0029B8AF /* SDLClimateControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD06A1F208BAB0029B8AF /* SDLClimateControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD06D1F208BAB0029B8AF /* SDLClimateControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD06B1F208BAB0029B8AF /* SDLClimateControlData.m */; };
- 1E5AD0701F209C880029B8AF /* SDLModuleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD06E1F209C880029B8AF /* SDLModuleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0711F209C880029B8AF /* SDLModuleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD06F1F209C880029B8AF /* SDLModuleData.m */; };
- 1E5AD0801F20B73E0029B8AF /* SDLButtonPress.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD07E1F20B73E0029B8AF /* SDLButtonPress.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0811F20B73E0029B8AF /* SDLButtonPress.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD07F1F20B73E0029B8AF /* SDLButtonPress.m */; };
- 1E5AD0841F20B9290029B8AF /* SDLButtonPressResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0821F20B9290029B8AF /* SDLButtonPressResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0851F20B9290029B8AF /* SDLButtonPressResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0831F20B9290029B8AF /* SDLButtonPressResponse.m */; };
- 1E5AD0881F20B9AA0029B8AF /* SDLGetInteriorVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0861F20B9AA0029B8AF /* SDLGetInteriorVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0891F20B9AA0029B8AF /* SDLGetInteriorVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0871F20B9AA0029B8AF /* SDLGetInteriorVehicleData.m */; };
- 1E5AD08C1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD08A1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0901F20BE820029B8AF /* SDLSetInteriorVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD08E1F20BE820029B8AF /* SDLSetInteriorVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0911F20BE820029B8AF /* SDLSetInteriorVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD08F1F20BE820029B8AF /* SDLSetInteriorVehicleData.m */; };
- 1E5AD0941F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0921F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1E5AD0951F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5AD0931F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m */; };
- 1E5AD0981F20C0FB0029B8AF /* SDLOnInteriorVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E5AD0961F20C0FB0029B8AF /* SDLOnInteriorVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
1E89B0DE2031636000A47992 /* SDLSeatControlDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E89B0DD2031636000A47992 /* SDLSeatControlDataSpec.m */; };
1E89B0E2203196B800A47992 /* SDLSeatControlCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E89B0E1203196B800A47992 /* SDLSeatControlCapabilitiesSpec.m */; };
- 1EAA470B2032BAE5000FE74B /* SDLOnRCStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA47092032BAE5000FE74B /* SDLOnRCStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA470C2032BAE5000FE74B /* SDLOnRCStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA470A2032BAE5000FE74B /* SDLOnRCStatus.m */; };
1EAA470E2032BF1D000FE74B /* SDLOnRCStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA470D2032BF1D000FE74B /* SDLOnRCStatusSpec.m */; };
- 1EAA47112033FE80000FE74B /* SDLStationIDNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA470F2033FE80000FE74B /* SDLStationIDNumber.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA47122033FE80000FE74B /* SDLStationIDNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47102033FE80000FE74B /* SDLStationIDNumber.m */; };
- 1EAA4719203406B2000FE74B /* SDLSISData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA4717203406B1000FE74B /* SDLSISData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA471A203406B2000FE74B /* SDLSISData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4718203406B1000FE74B /* SDLSISData.m */; };
- 1EAA471D203410BB000FE74B /* SDLAudioControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA471B203410BB000FE74B /* SDLAudioControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA471E203410BB000FE74B /* SDLAudioControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA471C203410BB000FE74B /* SDLAudioControlCapabilities.m */; };
- 1EAA4725203416D3000FE74B /* SDLEqualizerSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA4723203416D3000FE74B /* SDLEqualizerSettings.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA4726203416D3000FE74B /* SDLEqualizerSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4724203416D3000FE74B /* SDLEqualizerSettings.m */; };
- 1EAA47292034388D000FE74B /* SDLAudioControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA47272034388D000FE74B /* SDLAudioControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA472A2034388D000FE74B /* SDLAudioControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47282034388D000FE74B /* SDLAudioControlData.m */; };
- 1EAA472D20344108000FE74B /* SDLLightStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA472B20344108000FE74B /* SDLLightStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA472E20344108000FE74B /* SDLLightStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA472C20344108000FE74B /* SDLLightStatus.m */; };
- 1EAA4731203442C0000FE74B /* SDLLightName.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA472F203442C0000FE74B /* SDLLightName.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA4732203442C0000FE74B /* SDLLightName.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4730203442C0000FE74B /* SDLLightName.m */; };
- 1EAA473920345B7A000FE74B /* SDLLightCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA473720345B7A000FE74B /* SDLLightCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA473A20345B7A000FE74B /* SDLLightCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA473820345B7A000FE74B /* SDLLightCapabilities.m */; };
- 1EAA473D203554B5000FE74B /* SDLLightState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA473B203554B5000FE74B /* SDLLightState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA473E203554B5000FE74B /* SDLLightState.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA473C203554B5000FE74B /* SDLLightState.m */; };
- 1EAA474120355FF3000FE74B /* SDLLightControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA473F20355FF3000FE74B /* SDLLightControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA474220355FF3000FE74B /* SDLLightControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA474020355FF3000FE74B /* SDLLightControlCapabilities.m */; };
- 1EAA47452035623B000FE74B /* SDLLightControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA47432035623B000FE74B /* SDLLightControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA47462035623B000FE74B /* SDLLightControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47442035623B000FE74B /* SDLLightControlData.m */; };
- 1EAA4749203567FA000FE74B /* SDLHMISettingsControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA4747203567FA000FE74B /* SDLHMISettingsControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA474A203567FA000FE74B /* SDLHMISettingsControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4748203567FA000FE74B /* SDLHMISettingsControlCapabilities.m */; };
- 1EAA474D20356B2D000FE74B /* SDLDisplayMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA474B20356B2D000FE74B /* SDLDisplayMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA474E20356B2D000FE74B /* SDLDisplayMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA474C20356B2D000FE74B /* SDLDisplayMode.m */; };
- 1EAA475120356CD2000FE74B /* SDLDistanceUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA474F20356CD2000FE74B /* SDLDistanceUnit.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA475220356CD2000FE74B /* SDLDistanceUnit.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA475020356CD2000FE74B /* SDLDistanceUnit.m */; };
- 1EAA4755203583BC000FE74B /* SDLHMISettingsControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EAA4753203583BC000FE74B /* SDLHMISettingsControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EAA4756203583BC000FE74B /* SDLHMISettingsControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA4754203583BC000FE74B /* SDLHMISettingsControlData.m */; };
1EAA47582035AFD9000FE74B /* SDLHMISettingsControlDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47572035AFD9000FE74B /* SDLHMISettingsControlDataSpec.m */; };
1EAA475E2035B177000FE74B /* SDLDisplayModeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA475D2035B177000FE74B /* SDLDisplayModeSpec.m */; };
1EAA47622035B1AE000FE74B /* SDLDistanceUnitSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47612035B1AE000FE74B /* SDLDistanceUnitSpec.m */; };
@@ -362,26 +254,6 @@
1EAA47782036BA74000FE74B /* SDLAudioControlCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47772036BA74000FE74B /* SDLAudioControlCapabilitiesSpec.m */; };
1EAA477A2036BD46000FE74B /* SDLSISDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA47792036BD46000FE74B /* SDLSISDataSpec.m */; };
1EAA47802036C2C9000FE74B /* SDLStationIDNumberSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EAA477F2036C2C9000FE74B /* SDLStationIDNumberSpec.m */; };
- 1EB59C9F202D925500343A61 /* SDLMassageZone.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59C9D202D925500343A61 /* SDLMassageZone.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CA0202D925500343A61 /* SDLMassageZone.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59C9E202D925500343A61 /* SDLMassageZone.m */; };
- 1EB59CA3202D92F600343A61 /* SDLMassageMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CA1202D92F600343A61 /* SDLMassageMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CA4202D92F600343A61 /* SDLMassageMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CA2202D92F600343A61 /* SDLMassageMode.m */; };
- 1EB59CA7202D946500343A61 /* SDLMassageModeData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CA5202D946500343A61 /* SDLMassageModeData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CA8202D946500343A61 /* SDLMassageModeData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CA6202D946500343A61 /* SDLMassageModeData.m */; };
- 1EB59CAB202D96A200343A61 /* SDLMassageCushion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CA9202D96A200343A61 /* SDLMassageCushion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CAC202D96A200343A61 /* SDLMassageCushion.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CAA202D96A200343A61 /* SDLMassageCushion.m */; };
- 1EB59CAF202D97AC00343A61 /* SDLMassageCushionFirmness.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CAD202D97AC00343A61 /* SDLMassageCushionFirmness.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CB0202D97AC00343A61 /* SDLMassageCushionFirmness.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CAE202D97AC00343A61 /* SDLMassageCushionFirmness.m */; };
- 1EB59CB3202D9B5F00343A61 /* SDLSeatMemoryActionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CB1202D9B5F00343A61 /* SDLSeatMemoryActionType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CB4202D9B5F00343A61 /* SDLSeatMemoryActionType.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CB2202D9B5F00343A61 /* SDLSeatMemoryActionType.m */; };
- 1EB59CB7202D9C8100343A61 /* SDLSeatMemoryAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CB5202D9C8100343A61 /* SDLSeatMemoryAction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CB8202D9C8100343A61 /* SDLSeatMemoryAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CB6202D9C8100343A61 /* SDLSeatMemoryAction.m */; };
- 1EB59CBB202DA1B400343A61 /* SDLSupportedSeat.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CB9202DA1B400343A61 /* SDLSupportedSeat.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CBC202DA1B400343A61 /* SDLSupportedSeat.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CBA202DA1B400343A61 /* SDLSupportedSeat.m */; };
- 1EB59CBF202DA26000343A61 /* SDLSeatControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CBD202DA26000343A61 /* SDLSeatControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CC0202DA26000343A61 /* SDLSeatControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CBE202DA26000343A61 /* SDLSeatControlData.m */; };
- 1EB59CC3202DB40400343A61 /* SDLSeatControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB59CC1202DB40400343A61 /* SDLSeatControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EB59CC4202DB40400343A61 /* SDLSeatControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CC2202DB40400343A61 /* SDLSeatControlCapabilities.m */; };
1EB59CC8202DC86A00343A61 /* SDLModuleTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CC7202DC86A00343A61 /* SDLModuleTypeSpec.m */; };
1EB59CCA202DC8E300343A61 /* SDLMassageZoneSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CC9202DC8E300343A61 /* SDLMassageZoneSpec.m */; };
1EB59CCE202DC97900343A61 /* SDLMassageCushionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CCD202DC97900343A61 /* SDLMassageCushionSpec.m */; };
@@ -390,8 +262,6 @@
1EB59CD4202DCAE900343A61 /* SDLMassageModeDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CD3202DCAE900343A61 /* SDLMassageModeDataSpec.m */; };
1EB59CD8202DCCD500343A61 /* SDLMassageCushionFirmnessSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CD7202DCCD500343A61 /* SDLMassageCushionFirmnessSpec.m */; };
1EB59CDA202DCEEC00343A61 /* SDLSeatMemoryActionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB59CD9202DCEEC00343A61 /* SDLSeatMemoryActionSpec.m */; };
- 1EE48E901F2F0EE700B98D08 /* SDLTemperatureUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EE48E8E1F2F0EE700B98D08 /* SDLTemperatureUnit.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1EE48E911F2F0EE700B98D08 /* SDLTemperatureUnit.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE48E8F1F2F0EE700B98D08 /* SDLTemperatureUnit.m */; };
1EE8C4381F347C7300FDC2CF /* SDLRadioBandSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4371F347C7300FDC2CF /* SDLRadioBandSpec.m */; };
1EE8C43A1F347D4D00FDC2CF /* SDLRadioStateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4391F347D4D00FDC2CF /* SDLRadioStateSpec.m */; };
1EE8C43C1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C43B1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m */; };
@@ -411,27 +281,20 @@
1EE8C45D1F387D1C00FDC2CF /* SDLGetInteriorVehicleDataResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C45C1F387D1C00FDC2CF /* SDLGetInteriorVehicleDataResponseSpec.m */; };
1EE8C45F1F3884FF00FDC2CF /* SDLSetInteriorVehicleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C45E1F3884FF00FDC2CF /* SDLSetInteriorVehicleDataSpec.m */; };
1EE8C4611F38865B00FDC2CF /* SDLSetInteriorVehicleDataResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4601F38865B00FDC2CF /* SDLSetInteriorVehicleDataResponseSpec.m */; };
- 1FF7DAB61F75B27300B46C30 /* SDLFocusableItemLocatorType.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF7DAB51F75B27300B46C30 /* SDLFocusableItemLocatorType.h */; };
- 1FF7DAB81F75B28E00B46C30 /* SDLFocusableItemHitTester.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF7DAB71F75B28E00B46C30 /* SDLFocusableItemHitTester.h */; };
- 1FF7DABA1F75B2A800B46C30 /* SDLFocusableItemLocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF7DAB91F75B2A800B46C30 /* SDLFocusableItemLocator.h */; };
- 1FF7DABC1F75B2BF00B46C30 /* SDLFocusableItemLocator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF7DABB1F75B2BF00B46C30 /* SDLFocusableItemLocator.m */; };
1FF7DAC01F75CF6C00B46C30 /* SDLHapticManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF7DABF1F75CF6C00B46C30 /* SDLHapticManagerSpec.m */; };
- 2B233530232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B23352E232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.h */; };
- 2B233531232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B23352F232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.m */; };
- 2BF2F84F20ED004000A26EF2 /* SDLAudioStreamingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BF2F84D20ED004000A26EF2 /* SDLAudioStreamingIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 2BF2F85020ED004000A26EF2 /* SDLAudioStreamingIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BF2F84E20ED004000A26EF2 /* SDLAudioStreamingIndicator.m */; };
2BF2F85220ED068200A26EF2 /* SDLAudioStreamingIndicatorSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BF2F85120ED068200A26EF2 /* SDLAudioStreamingIndicatorSpec.m */; };
- 332A914F1CED9CC60043824C /* SDLAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 332A913D1CED87F80043824C /* SDLAppInfo.m */; };
- 332A91501CED9CF10043824C /* SDLAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 332A913C1CED87F80043824C /* SDLAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4A26370C2493F0CF00278BE3 /* SDLRPCMessageType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A26370B2493F0CE00278BE3 /* SDLRPCMessageType.m */; };
- 4A3BA4DC248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A3BA4DA248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.h */; };
- 4A3BA4DD248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A3BA4DB248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.m */; };
- 4A3BA4E1248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A3BA4DF248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.h */; };
- 4A3BA4E2248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A3BA4E0248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.m */; };
- 4A3BA4E724901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A3BA4E524901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.h */; };
- 4A3BA4E824901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A3BA4E624901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.m */; };
- 4A3BA4EC24914801003E56B8 /* SDLLifecycleProtocolHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A3BA4EA24914801003E56B8 /* SDLLifecycleProtocolHandler.h */; };
- 4A3BA4ED24914801003E56B8 /* SDLLifecycleProtocolHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A3BA4EB24914801003E56B8 /* SDLLifecycleProtocolHandler.m */; };
+ 4A1B036F24CF484E008C6B13 /* SDLDriverDistractionCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A1B036E24CF484E008C6B13 /* SDLDriverDistractionCapabilitySpec.m */; };
+ 4A1FA09B25114833006B7851 /* SDLErrorConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A1FA09A25114833006B7851 /* SDLErrorConstants.m */; };
+ 4A40254124FFDA660080E159 /* SDLTextAndGraphicState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A40253D24FFDA660080E159 /* SDLTextAndGraphicState.m */; };
+ 4A40254224FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A40253E24FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.h */; };
+ 4A40254324FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A40253F24FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.m */; };
+ 4A40254424FFDA660080E159 /* SDLTextAndGraphicState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A40254024FFDA660080E159 /* SDLTextAndGraphicState.h */; };
+ 4A402559250026430080E159 /* SubscribeButtonManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A402558250026430080E159 /* SubscribeButtonManager.swift */; };
+ 4A40255D250026830080E159 /* SubscribeButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A40255B250026620080E159 /* SubscribeButtonManager.m */; };
+ 4A402560250134CB0080E159 /* SDLStabilityControlsStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A40255E250134CA0080E159 /* SDLStabilityControlsStatus.m */; };
+ 4A402561250134CB0080E159 /* SDLStabilityControlsStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A40255F250134CA0080E159 /* SDLStabilityControlsStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A404C66250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A404C65250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m */; };
+ 4A404C68250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A404C67250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m */; };
4A457DC324A2933E00386CBA /* SDLLifecycleRPCAdapterSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A457DC224A2933E00386CBA /* SDLLifecycleRPCAdapterSpec.m */; };
4A457DD324A3886700386CBA /* SDLLifecycleSyncPDataHandlerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A457DD224A3886700386CBA /* SDLLifecycleSyncPDataHandlerSpec.m */; };
4A457DD524A3C16E00386CBA /* SDLLifecycleMobileHMIStateHandlerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A457DD424A3C16E00386CBA /* SDLLifecycleMobileHMIStateHandlerSpec.m */; };
@@ -439,59 +302,1097 @@
4A457DD924A5137100386CBA /* SDLLifecycleProtocolHandlerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A457DD824A5137100386CBA /* SDLLifecycleProtocolHandlerSpec.m */; };
4A4AD8A424894260008FC414 /* TestOldConfigurationUpdateManagerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A4AD8A324894260008FC414 /* TestOldConfigurationUpdateManagerDelegate.m */; };
4A4AD8A724894270008FC414 /* TestNewConfigurationUpdateManagerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A4AD8A624894270008FC414 /* TestNewConfigurationUpdateManagerDelegate.m */; };
- 4A99D00E247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A99D00C247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.h */; };
- 4A99D00F247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A99D00D247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.m */; };
- 4A99D0122475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A99D0102475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.h */; };
- 4A99D0132475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A99D0112475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.m */; };
- 4A9D02BE2497EED400FBE99B /* SDLLifecycleRPCAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9D02BC2497EED400FBE99B /* SDLLifecycleRPCAdapter.h */; };
- 4A9D02BF2497EED400FBE99B /* SDLLifecycleRPCAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A9D02BD2497EED400FBE99B /* SDLLifecycleRPCAdapter.m */; };
- 5D00AC671F140F0A004000D9 /* SDLSystemCapabilityType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D00AC681F140F0A004000D9 /* SDLSystemCapabilityType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC661F140F0A004000D9 /* SDLSystemCapabilityType.m */; };
- 5D00AC6B1F141339004000D9 /* SDLSystemCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC691F141339004000D9 /* SDLSystemCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D00AC6C1F141339004000D9 /* SDLSystemCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC6A1F141339004000D9 /* SDLSystemCapability.m */; };
- 5D00AC6F1F1511B9004000D9 /* SDLGetSystemCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC6D1F1511B9004000D9 /* SDLGetSystemCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D00AC701F1511B9004000D9 /* SDLGetSystemCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC6E1F1511B9004000D9 /* SDLGetSystemCapability.m */; };
- 5D00AC731F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC711F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D00AC741F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC721F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m */; };
- 5D00AC771F15283E004000D9 /* SDLNavigationCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC751F15283E004000D9 /* SDLNavigationCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D00AC781F15283E004000D9 /* SDLNavigationCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */; };
- 5D00AC7B1F15287E004000D9 /* SDLPhoneCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D00AC7C1F15287E004000D9 /* SDLPhoneCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */; };
- 5D019276214994AC003500F6 /* NSMutableArray+Safe.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D019274214994AC003500F6 /* NSMutableArray+Safe.h */; };
- 5D019277214994AC003500F6 /* NSMutableArray+Safe.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D019275214994AC003500F6 /* NSMutableArray+Safe.m */; };
- 5D07C02D2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D07C02B2044AC9000D1ECDC /* SDLSequentialRPCRequestOperation.h */; };
- 5D07C02E2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D07C02C2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m */; };
- 5D07C0312044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D07C02F2044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h */; };
- 5D07C0322044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D07C0302044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.m */; };
- 5D0A7374203F0C730001595D /* SDLTextAndGraphicManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0A7372203F0C730001595D /* SDLTextAndGraphicManager.h */; };
- 5D0A7375203F0C730001595D /* SDLTextAndGraphicManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A7373203F0C730001595D /* SDLTextAndGraphicManager.m */; };
- 5D0A7382203F23F30001595D /* SDLSoftButtonManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0A7380203F23F30001595D /* SDLSoftButtonManager.h */; };
- 5D0A7383203F23F30001595D /* SDLSoftButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A7381203F23F30001595D /* SDLSoftButtonManager.m */; };
- 5D0A7386203F24060001595D /* SDLSoftButtonState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0A7384203F24060001595D /* SDLSoftButtonState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D0A7387203F24060001595D /* SDLSoftButtonState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A7385203F24060001595D /* SDLSoftButtonState.m */; };
- 5D0A738A203F24320001595D /* SDLSoftButtonObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0A7388203F24320001595D /* SDLSoftButtonObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D0A738B203F24320001595D /* SDLSoftButtonObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A7389203F24320001595D /* SDLSoftButtonObject.m */; };
+ 4A8BD23B24F93135000945E3 /* SDLMassageCushionFirmness.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD22324F93131000945E3 /* SDLMassageCushionFirmness.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD23C24F93135000945E3 /* SDLMediaServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD22424F93131000945E3 /* SDLMediaServiceData.m */; };
+ 4A8BD23D24F93135000945E3 /* SDLMsgVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD22524F93132000945E3 /* SDLMsgVersion.m */; };
+ 4A8BD23E24F93135000945E3 /* SDLMassageModeData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD22624F93132000945E3 /* SDLMassageModeData.m */; };
+ 4A8BD23F24F93135000945E3 /* SDLKeyboardProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD22724F93132000945E3 /* SDLKeyboardProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24024F93135000945E3 /* SDLLocationCoordinate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD22824F93132000945E3 /* SDLLocationCoordinate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24124F93135000945E3 /* SDLMenuParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD22924F93132000945E3 /* SDLMenuParams.m */; };
+ 4A8BD24224F93135000945E3 /* SDLMassageModeData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD22A24F93132000945E3 /* SDLMassageModeData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24324F93135000945E3 /* SDLMetadataTags.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD22B24F93132000945E3 /* SDLMetadataTags.m */; };
+ 4A8BD24424F93135000945E3 /* SDLMediaServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD22C24F93133000945E3 /* SDLMediaServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24524F93135000945E3 /* SDLModuleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD22D24F93133000945E3 /* SDLModuleData.m */; };
+ 4A8BD24624F93135000945E3 /* SDLLocationDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD22E24F93133000945E3 /* SDLLocationDetails.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24724F93135000945E3 /* SDLLocationCoordinate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD22F24F93133000945E3 /* SDLLocationCoordinate.m */; };
+ 4A8BD24824F93135000945E3 /* SDLMassageCushionFirmness.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD23024F93133000945E3 /* SDLMassageCushionFirmness.m */; };
+ 4A8BD24924F93135000945E3 /* SDLMenuParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD23124F93133000945E3 /* SDLMenuParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24A24F93135000945E3 /* SDLMyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD23224F93133000945E3 /* SDLMyKey.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24B24F93135000945E3 /* SDLMediaServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD23324F93134000945E3 /* SDLMediaServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24C24F93135000945E3 /* SDLLocationDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD23424F93134000945E3 /* SDLLocationDetails.m */; };
+ 4A8BD24D24F93135000945E3 /* SDLMsgVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD23524F93134000945E3 /* SDLMsgVersion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD24E24F93135000945E3 /* SDLMediaServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD23624F93134000945E3 /* SDLMediaServiceManifest.m */; };
+ 4A8BD24F24F93135000945E3 /* SDLMyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD23724F93134000945E3 /* SDLMyKey.m */; };
+ 4A8BD25024F93135000945E3 /* SDLMetadataTags.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD23824F93134000945E3 /* SDLMetadataTags.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD25124F93135000945E3 /* SDLModuleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD23924F93134000945E3 /* SDLModuleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD25224F93135000945E3 /* SDLKeyboardProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD23A24F93135000945E3 /* SDLKeyboardProperties.m */; };
+ 4A8BD25F24F933C7000945E3 /* SDLNavigationServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD25324F933C6000945E3 /* SDLNavigationServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD26024F933C7000945E3 /* SDLNavigationCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD25424F933C6000945E3 /* SDLNavigationCapability.m */; };
+ 4A8BD26124F933C7000945E3 /* SDLNavigationInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD25524F933C6000945E3 /* SDLNavigationInstruction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD26224F933C7000945E3 /* SDLNavigationInstruction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD25624F933C6000945E3 /* SDLNavigationInstruction.m */; };
+ 4A8BD26324F933C7000945E3 /* SDLNavigationServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD25724F933C6000945E3 /* SDLNavigationServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD26424F933C7000945E3 /* SDLNavigationServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD25824F933C6000945E3 /* SDLNavigationServiceManifest.m */; };
+ 4A8BD26524F933C7000945E3 /* SDLOasisAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD25924F933C6000945E3 /* SDLOasisAddress.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD26624F933C7000945E3 /* SDLOasisAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD25A24F933C6000945E3 /* SDLOasisAddress.m */; };
+ 4A8BD26724F933C7000945E3 /* SDLNavigationCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD25B24F933C7000945E3 /* SDLNavigationCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD26824F933C7000945E3 /* SDLNavigationServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD25C24F933C7000945E3 /* SDLNavigationServiceData.m */; };
+ 4A8BD26924F933C7000945E3 /* SDLParameterPermissions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD25D24F933C7000945E3 /* SDLParameterPermissions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD26A24F933C7000945E3 /* SDLParameterPermissions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD25E24F933C7000945E3 /* SDLParameterPermissions.m */; };
+ 4A8BD27924F9343F000945E3 /* SDLPermissionItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD26B24F9343D000945E3 /* SDLPermissionItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD27A24F9343F000945E3 /* SDLRemoteControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD26C24F9343D000945E3 /* SDLRemoteControlCapabilities.m */; };
+ 4A8BD27B24F9343F000945E3 /* SDLRDSData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD26D24F9343E000945E3 /* SDLRDSData.m */; };
+ 4A8BD27C24F9343F000945E3 /* SDLPhoneCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD26E24F9343E000945E3 /* SDLPhoneCapability.m */; };
+ 4A8BD27D24F9343F000945E3 /* SDLPresetBankCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD26F24F9343E000945E3 /* SDLPresetBankCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD27E24F9343F000945E3 /* SDLPresetBankCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD27024F9343E000945E3 /* SDLPresetBankCapabilities.m */; };
+ 4A8BD27F24F9343F000945E3 /* SDLRadioControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD27124F9343E000945E3 /* SDLRadioControlCapabilities.m */; };
+ 4A8BD28024F9343F000945E3 /* SDLRadioControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD27224F9343E000945E3 /* SDLRadioControlData.m */; };
+ 4A8BD28124F9343F000945E3 /* SDLRemoteControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD27324F9343F000945E3 /* SDLRemoteControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD28224F9343F000945E3 /* SDLPermissionItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD27424F9343F000945E3 /* SDLPermissionItem.m */; };
+ 4A8BD28324F9343F000945E3 /* SDLRadioControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD27524F9343F000945E3 /* SDLRadioControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD28424F9343F000945E3 /* SDLRDSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD27624F9343F000945E3 /* SDLRDSData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD28524F9343F000945E3 /* SDLPhoneCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD27724F9343F000945E3 /* SDLPhoneCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD28624F9343F000945E3 /* SDLRadioControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD27824F9343F000945E3 /* SDLRadioControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD28B24F934F3000945E3 /* SDLRGBColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD28724F934F2000945E3 /* SDLRGBColor.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD28C24F934F3000945E3 /* SDLRectangle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD28824F934F2000945E3 /* SDLRectangle.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD28D24F934F3000945E3 /* SDLRectangle.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD28924F934F2000945E3 /* SDLRectangle.m */; };
+ 4A8BD28E24F934F3000945E3 /* SDLRGBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD28A24F934F3000945E3 /* SDLRGBColor.m */; };
+ 4A8BD29924F93534000945E3 /* SDLScreenParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD28F24F93533000945E3 /* SDLScreenParams.m */; };
+ 4A8BD29A24F93534000945E3 /* SDLSeatControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD29024F93533000945E3 /* SDLSeatControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD29B24F93534000945E3 /* SDLScreenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD29124F93533000945E3 /* SDLScreenParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD29C24F93534000945E3 /* SDLSingleTireStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD29224F93533000945E3 /* SDLSingleTireStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD29D24F93534000945E3 /* SDLSeatControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD29324F93533000945E3 /* SDLSeatControlData.m */; };
+ 4A8BD29E24F93534000945E3 /* SDLSeatControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD29424F93533000945E3 /* SDLSeatControlCapabilities.m */; };
+ 4A8BD29F24F93534000945E3 /* SDLSeatMemoryAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD29524F93534000945E3 /* SDLSeatMemoryAction.m */; };
+ 4A8BD2A024F93534000945E3 /* SDLSingleTireStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD29624F93534000945E3 /* SDLSingleTireStatus.m */; };
+ 4A8BD2A124F93534000945E3 /* SDLSeatMemoryAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD29724F93534000945E3 /* SDLSeatMemoryAction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2A224F93534000945E3 /* SDLSeatControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD29824F93534000945E3 /* SDLSeatControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2B124F935BC000945E3 /* SDLSoftButtonCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2A324F935BB000945E3 /* SDLSoftButtonCapabilities.m */; };
+ 4A8BD2B224F935BC000945E3 /* SDLStartTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2A424F935BB000945E3 /* SDLStartTime.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2B324F935BC000945E3 /* SDLSoftButtonCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2A524F935BB000945E3 /* SDLSoftButtonCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2B424F935BC000945E3 /* SDLSISData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2A624F935BB000945E3 /* SDLSISData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2B524F935BC000945E3 /* SDLStationIDNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2A724F935BB000945E3 /* SDLStationIDNumber.m */; };
+ 4A8BD2B624F935BC000945E3 /* SDLSystemCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2A824F935BB000945E3 /* SDLSystemCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2B724F935BC000945E3 /* SDLSoftButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2A924F935BB000945E3 /* SDLSoftButton.m */; };
+ 4A8BD2B924F935BC000945E3 /* SDLSoftButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2AB24F935BC000945E3 /* SDLSoftButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2BB24F935BC000945E3 /* SDLStationIDNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2AD24F935BC000945E3 /* SDLStationIDNumber.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2BC24F935BC000945E3 /* SDLSISData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2AE24F935BC000945E3 /* SDLSISData.m */; };
+ 4A8BD2BD24F935BC000945E3 /* SDLStartTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2AF24F935BC000945E3 /* SDLStartTime.m */; };
+ 4A8BD2BE24F935BC000945E3 /* SDLSystemCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2B024F935BC000945E3 /* SDLSystemCapability.m */; };
+ 4A8BD2CF24F93803000945E3 /* SDLTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2BF24F93800000945E3 /* SDLTouchEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2D024F93803000945E3 /* SDLTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2C024F93801000945E3 /* SDLTextField.m */; };
+ 4A8BD2D124F93803000945E3 /* SDLTemperature.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2C124F93801000945E3 /* SDLTemperature.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2D224F93803000945E3 /* SDLTemplateColorScheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2C224F93801000945E3 /* SDLTemplateColorScheme.m */; };
+ 4A8BD2D324F93803000945E3 /* SDLTireStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2C324F93801000945E3 /* SDLTireStatus.m */; };
+ 4A8BD2D424F93803000945E3 /* SDLTouchCoord.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2C424F93801000945E3 /* SDLTouchCoord.m */; };
+ 4A8BD2D524F93803000945E3 /* SDLTouchEventCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2C524F93801000945E3 /* SDLTouchEventCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2D624F93803000945E3 /* SDLTemperature.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2C624F93801000945E3 /* SDLTemperature.m */; };
+ 4A8BD2D724F93803000945E3 /* SDLTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2C724F93802000945E3 /* SDLTextField.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2D824F93803000945E3 /* SDLTireStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2C824F93802000945E3 /* SDLTireStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2D924F93803000945E3 /* SDLTemplateConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2C924F93802000945E3 /* SDLTemplateConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2DA24F93803000945E3 /* SDLTouchEventCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2CA24F93802000945E3 /* SDLTouchEventCapabilities.m */; };
+ 4A8BD2DB24F93803000945E3 /* SDLTemplateConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2CB24F93802000945E3 /* SDLTemplateConfiguration.m */; };
+ 4A8BD2DC24F93803000945E3 /* SDLTouchCoord.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2CC24F93802000945E3 /* SDLTouchCoord.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2DD24F93803000945E3 /* SDLTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2CD24F93803000945E3 /* SDLTouchEvent.m */; };
+ 4A8BD2DE24F93803000945E3 /* SDLTemplateColorScheme.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2CE24F93803000945E3 /* SDLTemplateColorScheme.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2EE24F93872000945E3 /* SDLTurn.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2E024F93871000945E3 /* SDLTurn.m */; };
+ 4A8BD2EF24F93872000945E3 /* SDLTurn.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2E124F93871000945E3 /* SDLTurn.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2F024F93872000945E3 /* SDLVideoStreamingFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2E224F93871000945E3 /* SDLVideoStreamingFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2F124F93872000945E3 /* SDLVrHelpItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2E324F93871000945E3 /* SDLVrHelpItem.m */; };
+ 4A8BD2F224F93872000945E3 /* SDLVideoStreamingCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2E424F93871000945E3 /* SDLVideoStreamingCapability.m */; };
+ 4A8BD2F324F93872000945E3 /* SDLVehicleDataResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2E524F93872000945E3 /* SDLVehicleDataResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2F424F93872000945E3 /* SDLTTSChunk.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2E624F93872000945E3 /* SDLTTSChunk.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2F524F93872000945E3 /* SDLTTSChunk.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2E724F93872000945E3 /* SDLTTSChunk.m */; };
+ 4A8BD2F624F93872000945E3 /* SDLVehicleDataResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2E824F93872000945E3 /* SDLVehicleDataResult.m */; };
+ 4A8BD2F724F93872000945E3 /* SDLVrHelpItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2E924F93872000945E3 /* SDLVrHelpItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2F924F93872000945E3 /* SDLVehicleDataType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2EB24F93872000945E3 /* SDLVehicleDataType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2FA24F93872000945E3 /* SDLVideoStreamingCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2EC24F93872000945E3 /* SDLVideoStreamingCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD2FD24F938A4000945E3 /* SDLVehicleType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2FB24F938A4000945E3 /* SDLVehicleType.m */; };
+ 4A8BD2FE24F938A4000945E3 /* SDLVehicleType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD2FC24F938A4000945E3 /* SDLVehicleType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD30B24F938D6000945E3 /* SDLWeatherData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD2FF24F938D5000945E3 /* SDLWeatherData.m */; };
+ 4A8BD30C24F938D6000945E3 /* SDLWeatherAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD30024F938D5000945E3 /* SDLWeatherAlert.m */; };
+ 4A8BD30D24F938D6000945E3 /* SDLWeatherServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD30124F938D5000945E3 /* SDLWeatherServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD30E24F938D6000945E3 /* SDLWeatherServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD30224F938D5000945E3 /* SDLWeatherServiceData.m */; };
+ 4A8BD30F24F938D6000945E3 /* SDLWindowTypeCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD30324F938D6000945E3 /* SDLWindowTypeCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD31024F938D6000945E3 /* SDLWeatherAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD30424F938D6000945E3 /* SDLWeatherAlert.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD31124F938D6000945E3 /* SDLWeatherServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD30524F938D6000945E3 /* SDLWeatherServiceManifest.m */; };
+ 4A8BD31224F938D6000945E3 /* SDLWeatherData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD30624F938D6000945E3 /* SDLWeatherData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD31324F938D6000945E3 /* SDLWindowCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD30724F938D6000945E3 /* SDLWindowCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD31424F938D6000945E3 /* SDLWindowCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD30824F938D6000945E3 /* SDLWindowCapability.m */; };
+ 4A8BD31524F938D6000945E3 /* SDLWeatherServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD30924F938D6000945E3 /* SDLWeatherServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD31624F938D6000945E3 /* SDLWindowTypeCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD30A24F938D6000945E3 /* SDLWindowTypeCapabilities.m */; };
+ 4A8BD31924F93941000945E3 /* SDLModuleInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD31724F93941000945E3 /* SDLModuleInfo.m */; };
+ 4A8BD31A24F93941000945E3 /* SDLModuleInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD31824F93941000945E3 /* SDLModuleInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD31F24F93964000945E3 /* SDLSeatLocationCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD31B24F93964000945E3 /* SDLSeatLocationCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD32024F93964000945E3 /* SDLSeatLocationCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD31C24F93964000945E3 /* SDLSeatLocationCapability.m */; };
+ 4A8BD32124F93964000945E3 /* SDLSeatLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD31D24F93964000945E3 /* SDLSeatLocation.m */; };
+ 4A8BD32224F93964000945E3 /* SDLSeatLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD31E24F93964000945E3 /* SDLSeatLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD32424F94302000945E3 /* SDLProtocolDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD32324F94302000945E3 /* SDLProtocolDelegate.h */; };
+ 4A8BD32B24F9431B000945E3 /* SDLV1ProtocolHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD32524F9431B000945E3 /* SDLV1ProtocolHeader.m */; };
+ 4A8BD32C24F9431B000945E3 /* SDLV2ProtocolHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD32624F9431B000945E3 /* SDLV2ProtocolHeader.m */; };
+ 4A8BD32D24F9431B000945E3 /* SDLV1ProtocolHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD32724F9431B000945E3 /* SDLV1ProtocolHeader.h */; };
+ 4A8BD32E24F9431B000945E3 /* SDLProtocolHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD32824F9431B000945E3 /* SDLProtocolHeader.h */; };
+ 4A8BD32F24F9431B000945E3 /* SDLProtocolHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD32924F9431B000945E3 /* SDLProtocolHeader.m */; };
+ 4A8BD33024F9431B000945E3 /* SDLV2ProtocolHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD32A24F9431B000945E3 /* SDLV2ProtocolHeader.h */; };
+ 4A8BD33324F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD33124F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.m */; };
+ 4A8BD33424F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD33224F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.h */; };
+ 4A8BD33724F945B4000945E3 /* SDLControlFramePayloadConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD33524F945B4000945E3 /* SDLControlFramePayloadConstants.m */; };
+ 4A8BD33824F945B4000945E3 /* SDLControlFramePayloadConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD33624F945B4000945E3 /* SDLControlFramePayloadConstants.h */; };
+ 4A8BD34124F945CC000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD33924F945CB000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.h */; };
+ 4A8BD34224F945CC000945E3 /* SDLControlFramePayloadNak.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD33A24F945CB000945E3 /* SDLControlFramePayloadNak.m */; };
+ 4A8BD34324F945CC000945E3 /* SDLControlFramePayloadEndService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD33B24F945CC000945E3 /* SDLControlFramePayloadEndService.m */; };
+ 4A8BD34424F945CC000945E3 /* SDLControlFramePayloadNak.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD33C24F945CC000945E3 /* SDLControlFramePayloadNak.h */; };
+ 4A8BD34524F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD33D24F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.h */; };
+ 4A8BD34624F945CC000945E3 /* SDLControlFramePayloadEndService.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD33E24F945CC000945E3 /* SDLControlFramePayloadEndService.h */; };
+ 4A8BD34724F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD33F24F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.m */; };
+ 4A8BD34824F945CC000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD34024F945CC000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.m */; };
+ 4A8BD34D24F945E8000945E3 /* SDLControlFramePayloadRPCStartService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD34924F945E8000945E3 /* SDLControlFramePayloadRPCStartService.m */; };
+ 4A8BD34E24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD34A24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.m */; };
+ 4A8BD34F24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD34B24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.h */; };
+ 4A8BD35024F945E8000945E3 /* SDLControlFramePayloadRPCStartService.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD34C24F945E8000945E3 /* SDLControlFramePayloadRPCStartService.h */; };
+ 4A8BD35524F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD35124F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.h */; };
+ 4A8BD35624F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD35224F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.m */; };
+ 4A8BD35724F945F6000945E3 /* SDLControlFramePayloadVideoStartService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD35324F945F6000945E3 /* SDLControlFramePayloadVideoStartService.m */; };
+ 4A8BD35824F945F6000945E3 /* SDLControlFramePayloadVideoStartService.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD35424F945F6000945E3 /* SDLControlFramePayloadVideoStartService.h */; };
+ 4A8BD35A24F94603000945E3 /* SDLControlFramePayloadType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD35924F94603000945E3 /* SDLControlFramePayloadType.h */; };
+ 4A8BD36124F9461A000945E3 /* SDLProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD35B24F9461A000945E3 /* SDLProtocolMessage.m */; };
+ 4A8BD36224F9461A000945E3 /* SDLV1ProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD35C24F9461A000945E3 /* SDLV1ProtocolMessage.h */; };
+ 4A8BD36324F9461A000945E3 /* SDLV1ProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD35D24F9461A000945E3 /* SDLV1ProtocolMessage.m */; };
+ 4A8BD36424F9461A000945E3 /* SDLV2ProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD35E24F9461A000945E3 /* SDLV2ProtocolMessage.h */; };
+ 4A8BD36524F9461A000945E3 /* SDLV2ProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD35F24F9461A000945E3 /* SDLV2ProtocolMessage.m */; };
+ 4A8BD36624F9461A000945E3 /* SDLProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD36024F9461A000945E3 /* SDLProtocolMessage.h */; };
+ 4A8BD36B24F94636000945E3 /* SDLProtocolMessageDisassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD36724F94636000945E3 /* SDLProtocolMessageDisassembler.h */; };
+ 4A8BD36C24F94636000945E3 /* SDLProtocolMessageDisassembler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD36824F94636000945E3 /* SDLProtocolMessageDisassembler.m */; };
+ 4A8BD36D24F94636000945E3 /* SDLProtocolMessageAssembler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD36924F94636000945E3 /* SDLProtocolMessageAssembler.m */; };
+ 4A8BD36E24F94636000945E3 /* SDLProtocolMessageAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD36A24F94636000945E3 /* SDLProtocolMessageAssembler.h */; };
+ 4A8BD37324F9465E000945E3 /* SDLProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD36F24F9465E000945E3 /* SDLProtocol.h */; };
+ 4A8BD37424F9465E000945E3 /* SDLProtocolReceivedMessageRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD37024F9465E000945E3 /* SDLProtocolReceivedMessageRouter.m */; };
+ 4A8BD37524F9465E000945E3 /* SDLProtocolReceivedMessageRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD37124F9465E000945E3 /* SDLProtocolReceivedMessageRouter.h */; };
+ 4A8BD37624F9465E000945E3 /* SDLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD37224F9465E000945E3 /* SDLProtocol.m */; };
+ 4A8BD37924F9468B000945E3 /* SDLProtocolConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD37724F9468B000945E3 /* SDLProtocolConstants.m */; };
+ 4A8BD37A24F9468B000945E3 /* SDLProtocolConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD37824F9468B000945E3 /* SDLProtocolConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD37D24F94697000945E3 /* SDLFunctionID.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD37B24F94697000945E3 /* SDLFunctionID.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD37E24F94697000945E3 /* SDLFunctionID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD37C24F94697000945E3 /* SDLFunctionID.m */; };
+ 4A8BD38124F946D4000945E3 /* SDLTransportType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD37F24F946D4000945E3 /* SDLTransportType.h */; };
+ 4A8BD38224F946D4000945E3 /* SDLTransportDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD38024F946D4000945E3 /* SDLTransportDelegate.h */; };
+ 4A8BD38524F94702000945E3 /* SDLTCPTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD38324F94702000945E3 /* SDLTCPTransport.h */; };
+ 4A8BD38624F94702000945E3 /* SDLTCPTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD38424F94702000945E3 /* SDLTCPTransport.m */; };
+ 4A8BD38924F94712000945E3 /* SDLSecondaryTransportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD38724F94711000945E3 /* SDLSecondaryTransportManager.h */; };
+ 4A8BD38A24F94712000945E3 /* SDLSecondaryTransportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD38824F94712000945E3 /* SDLSecondaryTransportManager.m */; };
+ 4A8BD39124F94731000945E3 /* SDLIAPConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD38B24F94730000945E3 /* SDLIAPConstants.h */; };
+ 4A8BD39224F94731000945E3 /* SDLIAPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD38C24F94730000945E3 /* SDLIAPSession.h */; };
+ 4A8BD39324F94731000945E3 /* SDLIAPTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD38D24F94730000945E3 /* SDLIAPTransport.h */; };
+ 4A8BD39424F94731000945E3 /* SDLIAPSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD38E24F94730000945E3 /* SDLIAPSession.m */; };
+ 4A8BD39524F94731000945E3 /* SDLIAPConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD38F24F94731000945E3 /* SDLIAPConstants.m */; };
+ 4A8BD39624F94731000945E3 /* SDLIAPTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD39024F94731000945E3 /* SDLIAPTransport.m */; };
+ 4A8BD39A24F94741000945E3 /* SDLIAPControlSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD39724F94740000945E3 /* SDLIAPControlSessionDelegate.h */; };
+ 4A8BD39B24F94741000945E3 /* SDLIAPControlSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD39824F94740000945E3 /* SDLIAPControlSession.m */; };
+ 4A8BD39C24F94741000945E3 /* SDLIAPControlSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD39924F94740000945E3 /* SDLIAPControlSession.h */; };
+ 4A8BD3A024F9474B000945E3 /* SDLIAPDataSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD39D24F9474B000945E3 /* SDLIAPDataSessionDelegate.h */; };
+ 4A8BD3A124F9474B000945E3 /* SDLIAPDataSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD39E24F9474B000945E3 /* SDLIAPDataSession.h */; };
+ 4A8BD3A224F9474B000945E3 /* SDLIAPDataSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD39F24F9474B000945E3 /* SDLIAPDataSession.m */; };
+ 4A8BD3A524F9485B000945E3 /* SDLVideoStreamingState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3A324F9485A000945E3 /* SDLVideoStreamingState.m */; };
+ 4A8BD3A624F9485B000945E3 /* SDLVideoStreamingState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3A424F9485A000945E3 /* SDLVideoStreamingState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3A924F948CF000945E3 /* SDLDeleteFileOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3A724F948CE000945E3 /* SDLDeleteFileOperation.h */; };
+ 4A8BD3AA24F948CF000945E3 /* SDLDeleteFileOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3A824F948CF000945E3 /* SDLDeleteFileOperation.m */; };
+ 4A8BD3AC24F98602000945E3 /* NSNumber+NumberType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3AB24F98602000945E3 /* NSNumber+NumberType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3AF24F98ACE000945E3 /* SDLLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3AD24F98ACE000945E3 /* SDLLogManager.m */; };
+ 4A8BD3B024F98ACE000945E3 /* SDLLogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3AE24F98ACE000945E3 /* SDLLogManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3B524F98F64000945E3 /* SDLOnUpdateFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3B124F98F63000945E3 /* SDLOnUpdateFile.m */; };
+ 4A8BD3B624F98F64000945E3 /* SDLOnUpdateSubMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3B224F98F63000945E3 /* SDLOnUpdateSubMenu.m */; };
+ 4A8BD3B724F98F64000945E3 /* SDLOnUpdateFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3B324F98F64000945E3 /* SDLOnUpdateFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3B824F98F64000945E3 /* SDLOnUpdateSubMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3B424F98F64000945E3 /* SDLOnUpdateSubMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3BB24F98F89000945E3 /* SDLDynamicUpdateCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3B924F98F89000945E3 /* SDLDynamicUpdateCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3BC24F98F89000945E3 /* SDLDynamicUpdateCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3BA24F98F89000945E3 /* SDLDynamicUpdateCapabilities.m */; };
+ 4A8BD3BE24F99470000945E3 /* SDLSecurityType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3BD24F99470000945E3 /* SDLSecurityType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3C124F994D5000945E3 /* SDLFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3BF24F994D5000945E3 /* SDLFileManager.m */; };
+ 4A8BD3C224F994D5000945E3 /* SDLFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3C024F994D5000945E3 /* SDLFileManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3C724F998A8000945E3 /* SDLWindowState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3C324F998A7000945E3 /* SDLWindowState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3C824F998A8000945E3 /* SDLWindowStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3C424F998A8000945E3 /* SDLWindowStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3C924F998A8000945E3 /* SDLWindowStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3C524F998A8000945E3 /* SDLWindowStatus.m */; };
+ 4A8BD3CA24F998A8000945E3 /* SDLWindowState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3C624F998A8000945E3 /* SDLWindowState.m */; };
+ 4A8BD3CD24F999BE000945E3 /* TestSubscribeButtonObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3CC24F999BE000945E3 /* TestSubscribeButtonObserver.m */; };
+ 4A8BD3D024FE7CF1000945E3 /* SDLPermissionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A8BD3CE24FE7CF1000945E3 /* SDLPermissionManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4A8BD3D124FE7CF1000945E3 /* SDLPermissionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8BD3CF24FE7CF1000945E3 /* SDLPermissionManager.m */; };
+ 4ABB24BA24F592620061BF55 /* NSMutableArray+Safe.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24B224F592620061BF55 /* NSMutableArray+Safe.h */; };
+ 4ABB24BB24F592620061BF55 /* NSMutableArray+Safe.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24B324F592620061BF55 /* NSMutableArray+Safe.m */; };
+ 4ABB24BC24F592620061BF55 /* NSBundle+SDLBundle.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24B424F592620061BF55 /* NSBundle+SDLBundle.m */; };
+ 4ABB24BD24F592620061BF55 /* NSMutableDictionary+SafeRemove.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24B524F592620061BF55 /* NSMutableDictionary+SafeRemove.m */; };
+ 4ABB24BE24F592620061BF55 /* NSBundle+SDLBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24B624F592620061BF55 /* NSBundle+SDLBundle.h */; };
+ 4ABB24BF24F592620061BF55 /* NSMapTable+Subscripting.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24B724F592620061BF55 /* NSMapTable+Subscripting.m */; };
+ 4ABB24C024F592620061BF55 /* NSMutableDictionary+SafeRemove.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24B824F592620061BF55 /* NSMutableDictionary+SafeRemove.h */; };
+ 4ABB24C124F592620061BF55 /* NSMapTable+Subscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24B924F592620061BF55 /* NSMapTable+Subscripting.h */; };
+ 4ABB24C624F592900061BF55 /* SDLError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24C424F592900061BF55 /* SDLError.h */; };
+ 4ABB24C724F592900061BF55 /* SDLError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24C524F592900061BF55 /* SDLError.m */; };
+ 4ABB24C924F593090061BF55 /* SDLStreamingProtocolDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24C824F593090061BF55 /* SDLStreamingProtocolDelegate.h */; };
+ 4ABB24CC24F5931B0061BF55 /* SDLStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24CA24F5931B0061BF55 /* SDLStateMachine.h */; };
+ 4ABB24CD24F5931B0061BF55 /* SDLStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24CB24F5931B0061BF55 /* SDLStateMachine.m */; };
+ 4ABB24CF24F593C70061BF55 /* SDLErrorConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24CE24F593C70061BF55 /* SDLErrorConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24D224F593E00061BF55 /* SDLNotificationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24D024F593E00061BF55 /* SDLNotificationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24D324F593E00061BF55 /* SDLNotificationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24D124F593E00061BF55 /* SDLNotificationConstants.m */; };
+ 4ABB24D624F593ED0061BF55 /* SDLVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24D424F593EC0061BF55 /* SDLVersion.m */; };
+ 4ABB24D724F593ED0061BF55 /* SDLVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24D524F593ED0061BF55 /* SDLVersion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24D924F594190061BF55 /* SDLConnectionManagerType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24D824F594190061BF55 /* SDLConnectionManagerType.h */; };
+ 4ABB24DC24F594560061BF55 /* SDLEncryptionLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24DA24F594560061BF55 /* SDLEncryptionLifecycleManager.m */; };
+ 4ABB24DD24F594560061BF55 /* SDLEncryptionLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24DB24F594560061BF55 /* SDLEncryptionLifecycleManager.h */; };
+ 4ABB24E224F5948D0061BF55 /* SDLEncryptionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24E024F5948D0061BF55 /* SDLEncryptionConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24E324F5948D0061BF55 /* SDLEncryptionConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24E124F5948D0061BF55 /* SDLEncryptionConfiguration.m */; };
+ 4ABB24E524F594A20061BF55 /* SDLServiceEncryptionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24E424F594A10061BF55 /* SDLServiceEncryptionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24E824F594CD0061BF55 /* SDLEncryptionManagerConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24E624F594CD0061BF55 /* SDLEncryptionManagerConstants.m */; };
+ 4ABB24E924F594CD0061BF55 /* SDLEncryptionManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24E724F594CD0061BF55 /* SDLEncryptionManagerConstants.h */; };
+ 4ABB24EC24F594F30061BF55 /* SDLFileManagerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24EA24F594F30061BF55 /* SDLFileManagerConfiguration.m */; };
+ 4ABB24ED24F594F30061BF55 /* SDLFileManagerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24EB24F594F30061BF55 /* SDLFileManagerConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24F224F595120061BF55 /* SDLArtwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24EE24F595120061BF55 /* SDLArtwork.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24F324F595120061BF55 /* SDLFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24EF24F595120061BF55 /* SDLFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB24F424F595120061BF55 /* SDLFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24F024F595120061BF55 /* SDLFile.m */; };
+ 4ABB24F524F595120061BF55 /* SDLArtwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24F124F595120061BF55 /* SDLArtwork.m */; };
+ 4ABB24F824F5959E0061BF55 /* SDLAsynchronousOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24F624F5959E0061BF55 /* SDLAsynchronousOperation.m */; };
+ 4ABB24F924F5959E0061BF55 /* SDLAsynchronousOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24F724F5959E0061BF55 /* SDLAsynchronousOperation.h */; };
+ 4ABB250124F596450061BF55 /* SDLUploadFileOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24FB24F596440061BF55 /* SDLUploadFileOperation.m */; };
+ 4ABB250224F596450061BF55 /* SDLListFilesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB24FC24F596450061BF55 /* SDLListFilesOperation.m */; };
+ 4ABB250424F596450061BF55 /* SDLUploadFileOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24FE24F596450061BF55 /* SDLUploadFileOperation.h */; };
+ 4ABB250524F596450061BF55 /* SDLListFilesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB24FF24F596450061BF55 /* SDLListFilesOperation.h */; };
+ 4ABB250824F596920061BF55 /* SDLFileWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB250624F596920061BF55 /* SDLFileWrapper.h */; };
+ 4ABB250924F596920061BF55 /* SDLFileWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB250724F596920061BF55 /* SDLFileWrapper.m */; };
+ 4ABB250F24F596C00061BF55 /* SDLFileManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB250E24F596C00061BF55 /* SDLFileManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB251224F7E3A30061BF55 /* SDLLifecycleConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB251024F7E3A30061BF55 /* SDLLifecycleConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB251324F7E3A30061BF55 /* SDLLifecycleConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB251124F7E3A30061BF55 /* SDLLifecycleConfiguration.m */; };
+ 4ABB251624F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB251424F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB251724F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB251524F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.m */; };
+ 4ABB251A24F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB251824F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.m */; };
+ 4ABB251B24F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB251924F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.h */; };
+ 4ABB251E24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB251C24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.h */; };
+ 4ABB251F24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB251D24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.m */; };
+ 4ABB252224F7E3FC0061BF55 /* SDLLifecycleSyncPDataHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB252024F7E3FB0061BF55 /* SDLLifecycleSyncPDataHandler.h */; };
+ 4ABB252324F7E3FC0061BF55 /* SDLLifecycleSyncPDataHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB252124F7E3FB0061BF55 /* SDLLifecycleSyncPDataHandler.m */; };
+ 4ABB252624F7E40D0061BF55 /* SDLLifecycleSystemRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB252424F7E40C0061BF55 /* SDLLifecycleSystemRequestHandler.h */; };
+ 4ABB252724F7E40D0061BF55 /* SDLLifecycleSystemRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB252524F7E40D0061BF55 /* SDLLifecycleSystemRequestHandler.m */; };
+ 4ABB252A24F7E41D0061BF55 /* SDLLifecycleProtocolHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB252824F7E41D0061BF55 /* SDLLifecycleProtocolHandler.h */; };
+ 4ABB252B24F7E41D0061BF55 /* SDLLifecycleProtocolHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB252924F7E41D0061BF55 /* SDLLifecycleProtocolHandler.m */; };
+ 4ABB253024F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB252C24F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.h */; };
+ 4ABB253124F7E43A0061BF55 /* SDLAsynchronousRPCOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB252D24F7E43A0061BF55 /* SDLAsynchronousRPCOperation.m */; };
+ 4ABB253224F7E43A0061BF55 /* SDLAsynchronousRPCOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB252E24F7E43A0061BF55 /* SDLAsynchronousRPCOperation.h */; };
+ 4ABB253324F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB252F24F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.m */; };
+ 4ABB253624F7E4540061BF55 /* SDLSequentialRPCRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB253424F7E4540061BF55 /* SDLSequentialRPCRequestOperation.h */; };
+ 4ABB253724F7E4540061BF55 /* SDLSequentialRPCRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB253524F7E4540061BF55 /* SDLSequentialRPCRequestOperation.m */; };
+ 4ABB253A24F7E46A0061BF55 /* SDLLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB253824F7E46A0061BF55 /* SDLLifecycleManager.m */; };
+ 4ABB253B24F7E46A0061BF55 /* SDLLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB253924F7E46A0061BF55 /* SDLLifecycleManager.h */; };
+ 4ABB254124F7E48D0061BF55 /* SDLLockScreenRootViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB253C24F7E48D0061BF55 /* SDLLockScreenRootViewController.h */; };
+ 4ABB254224F7E48D0061BF55 /* SDLViewControllerPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB253D24F7E48D0061BF55 /* SDLViewControllerPresentable.h */; };
+ 4ABB254324F7E48D0061BF55 /* SDLLockScreenPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB253E24F7E48D0061BF55 /* SDLLockScreenPresenter.h */; };
+ 4ABB254424F7E48D0061BF55 /* SDLLockScreenRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB253F24F7E48D0061BF55 /* SDLLockScreenRootViewController.m */; };
+ 4ABB254524F7E48D0061BF55 /* SDLLockScreenPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB254024F7E48D0061BF55 /* SDLLockScreenPresenter.m */; };
+ 4ABB254824F7E49D0061BF55 /* SDLLockScreenStatusManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB254624F7E49D0061BF55 /* SDLLockScreenStatusManager.m */; };
+ 4ABB254924F7E49D0061BF55 /* SDLLockScreenStatusManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB254724F7E49D0061BF55 /* SDLLockScreenStatusManager.h */; };
+ 4ABB254C24F7E4C60061BF55 /* SDLLockScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB254A24F7E4C60061BF55 /* SDLLockScreenViewController.m */; };
+ 4ABB254D24F7E4C60061BF55 /* SDLLockScreenViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB254B24F7E4C60061BF55 /* SDLLockScreenViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB255024F7E52B0061BF55 /* SDLLockScreenConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB254E24F7E52B0061BF55 /* SDLLockScreenConfiguration.m */; };
+ 4ABB255124F7E52B0061BF55 /* SDLLockScreenConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB254F24F7E52B0061BF55 /* SDLLockScreenConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB255424F7E5460061BF55 /* SDLLockScreenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB255224F7E5460061BF55 /* SDLLockScreenManager.m */; };
+ 4ABB255524F7E5460061BF55 /* SDLLockScreenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB255324F7E5460061BF55 /* SDLLockScreenManager.h */; };
+ 4ABB255C24F7E5880061BF55 /* SDLPermissionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB255A24F7E5880061BF55 /* SDLPermissionFilter.m */; };
+ 4ABB255D24F7E5880061BF55 /* SDLPermissionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB255B24F7E5880061BF55 /* SDLPermissionFilter.h */; };
+ 4ABB255F24F7E59E0061BF55 /* SDLPermissionConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB255E24F7E59E0061BF55 /* SDLPermissionConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB256224F7E5AA0061BF55 /* SDLPermissionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB256024F7E5AA0061BF55 /* SDLPermissionElement.m */; };
+ 4ABB256324F7E5AA0061BF55 /* SDLPermissionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB256124F7E5AA0061BF55 /* SDLPermissionElement.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB256624F7E5B80061BF55 /* SDLRPCPermissionStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB256424F7E5B70061BF55 /* SDLRPCPermissionStatus.m */; };
+ 4ABB256724F7E5B80061BF55 /* SDLRPCPermissionStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB256524F7E5B80061BF55 /* SDLRPCPermissionStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB257024F7E5E80061BF55 /* SDLPreloadChoicesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB256824F7E5E70061BF55 /* SDLPreloadChoicesOperation.m */; };
+ 4ABB257124F7E5E80061BF55 /* SDLPresentChoiceSetOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB256924F7E5E70061BF55 /* SDLPresentChoiceSetOperation.m */; };
+ 4ABB257224F7E5E80061BF55 /* SDLCheckChoiceVROptionalOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB256A24F7E5E70061BF55 /* SDLCheckChoiceVROptionalOperation.m */; };
+ 4ABB257324F7E5E80061BF55 /* SDLCheckChoiceVROptionalOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB256B24F7E5E70061BF55 /* SDLCheckChoiceVROptionalOperation.h */; };
+ 4ABB257424F7E5E80061BF55 /* SDLPresentChoiceSetOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB256C24F7E5E70061BF55 /* SDLPresentChoiceSetOperation.h */; };
+ 4ABB257524F7E5E80061BF55 /* SDLDeleteChoicesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB256D24F7E5E70061BF55 /* SDLDeleteChoicesOperation.m */; };
+ 4ABB257624F7E5E80061BF55 /* SDLPreloadChoicesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB256E24F7E5E80061BF55 /* SDLPreloadChoicesOperation.h */; };
+ 4ABB257724F7E5E80061BF55 /* SDLDeleteChoicesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB256F24F7E5E80061BF55 /* SDLDeleteChoicesOperation.h */; };
+ 4ABB257A24F7E5FF0061BF55 /* SDLPresentKeyboardOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB257824F7E5FF0061BF55 /* SDLPresentKeyboardOperation.m */; };
+ 4ABB257B24F7E5FF0061BF55 /* SDLPresentKeyboardOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB257924F7E5FF0061BF55 /* SDLPresentKeyboardOperation.h */; };
+ 4ABB258024F7E61E0061BF55 /* SDLChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB257C24F7E61E0061BF55 /* SDLChoiceSet.m */; };
+ 4ABB258124F7E61E0061BF55 /* SDLChoiceCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB257D24F7E61E0061BF55 /* SDLChoiceCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB258224F7E61E0061BF55 /* SDLChoiceCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB257E24F7E61E0061BF55 /* SDLChoiceCell.m */; };
+ 4ABB258324F7E61E0061BF55 /* SDLChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB257F24F7E61E0061BF55 /* SDLChoiceSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB258524F7E62D0061BF55 /* SDLChoiceSetDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB258424F7E62D0061BF55 /* SDLChoiceSetDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB258C24F7E65C0061BF55 /* SDLChoiceSetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB258A24F7E65C0061BF55 /* SDLChoiceSetManager.h */; };
+ 4ABB258D24F7E65C0061BF55 /* SDLChoiceSetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB258B24F7E65C0061BF55 /* SDLChoiceSetManager.m */; };
+ 4ABB258F24F7E66C0061BF55 /* SDLKeyboardDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB258E24F7E66C0061BF55 /* SDLKeyboardDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB259224F7E6820061BF55 /* SDLVoiceCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB259024F7E6820061BF55 /* SDLVoiceCommand.m */; };
+ 4ABB259324F7E6820061BF55 /* SDLVoiceCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB259124F7E6820061BF55 /* SDLVoiceCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB259624F7E6880061BF55 /* SDLMenuCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB259424F7E6880061BF55 /* SDLMenuCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB259724F7E6880061BF55 /* SDLMenuCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB259524F7E6880061BF55 /* SDLMenuCell.m */; };
+ 4ABB259924F7E6A60061BF55 /* SDLMenuManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB259824F7E6A60061BF55 /* SDLMenuManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB259C24F7E6B90061BF55 /* SDLMenuConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB259A24F7E6B90061BF55 /* SDLMenuConfiguration.m */; };
+ 4ABB259D24F7E6B90061BF55 /* SDLMenuConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB259B24F7E6B90061BF55 /* SDLMenuConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25A224F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB259E24F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.h */; };
+ 4ABB25A324F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB259F24F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.m */; };
+ 4ABB25A424F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25A024F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.m */; };
+ 4ABB25A524F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25A124F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.h */; };
+ 4ABB25AA24F7E6E10061BF55 /* SDLMenuManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25A624F7E6E10061BF55 /* SDLMenuManager.m */; };
+ 4ABB25AB24F7E6E10061BF55 /* SDLVoiceCommandManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25A724F7E6E10061BF55 /* SDLVoiceCommandManager.m */; };
+ 4ABB25AC24F7E6E10061BF55 /* SDLVoiceCommandManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25A824F7E6E10061BF55 /* SDLVoiceCommandManager.h */; };
+ 4ABB25AD24F7E6E10061BF55 /* SDLMenuManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25A924F7E6E10061BF55 /* SDLMenuManager.h */; };
+ 4ABB25B224F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25AE24F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.m */; };
+ 4ABB25B324F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25AF24F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.h */; };
+ 4ABB25B424F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25B024F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.h */; };
+ 4ABB25B524F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25B124F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.m */; };
+ 4ABB25BA24F7E70E0061BF55 /* SDLSoftButtonState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25B624F7E70E0061BF55 /* SDLSoftButtonState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25BB24F7E70E0061BF55 /* SDLSoftButtonObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25B724F7E70E0061BF55 /* SDLSoftButtonObject.m */; };
+ 4ABB25BC24F7E70E0061BF55 /* SDLSoftButtonObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25B824F7E70E0061BF55 /* SDLSoftButtonObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25BD24F7E70E0061BF55 /* SDLSoftButtonState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25B924F7E70E0061BF55 /* SDLSoftButtonState.m */; };
+ 4ABB25C024F7E7280061BF55 /* SDLSoftButtonManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25BE24F7E7270061BF55 /* SDLSoftButtonManager.h */; };
+ 4ABB25C124F7E7280061BF55 /* SDLSoftButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25BF24F7E7270061BF55 /* SDLSoftButtonManager.m */; };
+ 4ABB25C624F7E73C0061BF55 /* SDLSubscribeButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25C224F7E73C0061BF55 /* SDLSubscribeButtonManager.m */; };
+ 4ABB25C724F7E73C0061BF55 /* SDLSubscribeButtonObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25C324F7E73C0061BF55 /* SDLSubscribeButtonObserver.m */; };
+ 4ABB25C824F7E73C0061BF55 /* SDLSubscribeButtonManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25C424F7E73C0061BF55 /* SDLSubscribeButtonManager.h */; };
+ 4ABB25C924F7E73C0061BF55 /* SDLSubscribeButtonObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25C524F7E73C0061BF55 /* SDLSubscribeButtonObserver.h */; };
+ 4ABB25CC24F7E74F0061BF55 /* SDLTextAndGraphicManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25CA24F7E74E0061BF55 /* SDLTextAndGraphicManager.h */; };
+ 4ABB25CD24F7E74F0061BF55 /* SDLTextAndGraphicManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25CB24F7E74E0061BF55 /* SDLTextAndGraphicManager.m */; };
+ 4ABB25D424F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25CE24F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.m */; };
+ 4ABB25D524F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25CF24F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.m */; };
+ 4ABB25D624F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25D024F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.h */; };
+ 4ABB25D724F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25D124F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.m */; };
+ 4ABB25D824F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25D224F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.h */; };
+ 4ABB25D924F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25D324F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.h */; };
+ 4ABB25DC24F7E77C0061BF55 /* SDLScreenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25DA24F7E77C0061BF55 /* SDLScreenManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25DD24F7E77C0061BF55 /* SDLScreenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25DB24F7E77C0061BF55 /* SDLScreenManager.m */; };
+ 4ABB25E024F7E7980061BF55 /* SDLStreamingMediaConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25DE24F7E7980061BF55 /* SDLStreamingMediaConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25E124F7E7980061BF55 /* SDLStreamingMediaConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25DF24F7E7980061BF55 /* SDLStreamingMediaConfiguration.m */; };
+ 4ABB25E524F7E7A90061BF55 /* SDLAudioStreamManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25E224F7E7A90061BF55 /* SDLAudioStreamManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25E624F7E7A90061BF55 /* SDLAudioStreamManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25E324F7E7A90061BF55 /* SDLAudioStreamManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25E724F7E7A90061BF55 /* SDLAudioStreamManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25E424F7E7A90061BF55 /* SDLAudioStreamManager.m */; };
+ 4ABB25EA24F7E7C20061BF55 /* SDLCarWindowViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25E824F7E7C20061BF55 /* SDLCarWindowViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25EB24F7E7C20061BF55 /* SDLCarWindowViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25E924F7E7C20061BF55 /* SDLCarWindowViewController.m */; };
+ 4ABB25F324F7E7EF0061BF55 /* SDLPinchGesture.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25EC24F7E7EF0061BF55 /* SDLPinchGesture.m */; };
+ 4ABB25F424F7E7EF0061BF55 /* SDLTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25ED24F7E7EF0061BF55 /* SDLTouch.m */; };
+ 4ABB25F524F7E7EF0061BF55 /* SDLPinchGesture.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25EE24F7E7EF0061BF55 /* SDLPinchGesture.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25F624F7E7EF0061BF55 /* SDLTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25EF24F7E7EF0061BF55 /* SDLTouch.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25F724F7E7EF0061BF55 /* SDLTouchManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25F024F7E7EF0061BF55 /* SDLTouchManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25F824F7E7EF0061BF55 /* SDLTouchManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25F124F7E7EF0061BF55 /* SDLTouchManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25F924F7E7EF0061BF55 /* SDLTouchManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25F224F7E7EF0061BF55 /* SDLTouchManager.m */; };
+ 4ABB25FC24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25FA24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB25FD24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25FB24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.m */; };
+ 4ABB260024F7E9230061BF55 /* SDLStreamingMediaManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB25FE24F7E9230061BF55 /* SDLStreamingMediaManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB260124F7E9230061BF55 /* SDLStreamingMediaManagerConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB25FF24F7E9230061BF55 /* SDLStreamingMediaManagerConstants.m */; };
+ 4ABB260524F7E9650061BF55 /* SDLStreamingMediaManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB260224F7E9650061BF55 /* SDLStreamingMediaManager.m */; };
+ 4ABB260624F7E9650061BF55 /* SDLStreamingMediaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB260324F7E9650061BF55 /* SDLStreamingMediaManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB260724F7E9650061BF55 /* SDLStreamingMediaManagerDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB260424F7E9650061BF55 /* SDLStreamingMediaManagerDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB260924F7E9720061BF55 /* SDLStreamingAudioManagerType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB260824F7E9720061BF55 /* SDLStreamingAudioManagerType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB260C24F7F3400061BF55 /* SDLAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB260A24F7F33F0061BF55 /* SDLAudioFile.m */; };
+ 4ABB260D24F7F3400061BF55 /* SDLAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB260B24F7F33F0061BF55 /* SDLAudioFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB261024F7F3520061BF55 /* SDLPCMAudioConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB260E24F7F3520061BF55 /* SDLPCMAudioConverter.m */; };
+ 4ABB261124F7F3520061BF55 /* SDLPCMAudioConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB260F24F7F3520061BF55 /* SDLPCMAudioConverter.h */; };
+ 4ABB261424F7F3610061BF55 /* SDLCarWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB261224F7F3600061BF55 /* SDLCarWindow.h */; };
+ 4ABB261524F7F3610061BF55 /* SDLCarWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB261324F7F3610061BF55 /* SDLCarWindow.m */; };
+ 4ABB261A24F7F3770061BF55 /* SDLFocusableItemLocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB261624F7F3770061BF55 /* SDLFocusableItemLocator.h */; };
+ 4ABB261B24F7F3770061BF55 /* SDLFocusableItemLocator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB261724F7F3770061BF55 /* SDLFocusableItemLocator.m */; };
+ 4ABB261C24F7F3770061BF55 /* SDLFocusableItemLocatorType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB261824F7F3770061BF55 /* SDLFocusableItemLocatorType.h */; };
+ 4ABB261D24F7F3770061BF55 /* SDLFocusableItemHitTester.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB261924F7F3770061BF55 /* SDLFocusableItemHitTester.h */; };
+ 4ABB262024F7F3870061BF55 /* CGPoint_Util.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB261E24F7F3870061BF55 /* CGPoint_Util.h */; };
+ 4ABB262124F7F3870061BF55 /* CGPoint_Util.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB261F24F7F3870061BF55 /* CGPoint_Util.m */; };
+ 4ABB262424F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB262224F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.h */; };
+ 4ABB262524F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB262324F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.m */; };
+ 4ABB262824F7F3BC0061BF55 /* SDLH264VideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB262624F7F3BC0061BF55 /* SDLH264VideoEncoder.m */; };
+ 4ABB262924F7F3BC0061BF55 /* SDLH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB262724F7F3BC0061BF55 /* SDLH264VideoEncoder.h */; };
+ 4ABB262B24F7F3C20061BF55 /* SDLVideoEncoderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB262A24F7F3C10061BF55 /* SDLVideoEncoderDelegate.h */; };
+ 4ABB262D24F7F4150061BF55 /* SDLH264Packetizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB262C24F7F4150061BF55 /* SDLH264Packetizer.h */; };
+ 4ABB263024F7F4230061BF55 /* SDLRAWH264Packetizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB262E24F7F4230061BF55 /* SDLRAWH264Packetizer.h */; };
+ 4ABB263124F7F4230061BF55 /* SDLRAWH264Packetizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB262F24F7F4230061BF55 /* SDLRAWH264Packetizer.m */; };
+ 4ABB263424F7F4300061BF55 /* SDLRTPH264Packetizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB263224F7F4300061BF55 /* SDLRTPH264Packetizer.h */; };
+ 4ABB263524F7F4300061BF55 /* SDLRTPH264Packetizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB263324F7F4300061BF55 /* SDLRTPH264Packetizer.m */; };
+ 4ABB263A24F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB263624F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.m */; };
+ 4ABB263B24F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB263724F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.m */; };
+ 4ABB263C24F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB263824F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.h */; };
+ 4ABB263D24F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB263924F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.h */; };
+ 4ABB264024F7F45B0061BF55 /* SDLSystemCapabilityObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB263E24F7F45B0061BF55 /* SDLSystemCapabilityObserver.h */; };
+ 4ABB264124F7F45B0061BF55 /* SDLSystemCapabilityObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB263F24F7F45B0061BF55 /* SDLSystemCapabilityObserver.m */; };
+ 4ABB264424F7F5340061BF55 /* SDLSystemCapabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB264224F7F5340061BF55 /* SDLSystemCapabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB264524F7F5340061BF55 /* SDLSystemCapabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB264324F7F5340061BF55 /* SDLSystemCapabilityManager.m */; };
+ 4ABB264824F7F5540061BF55 /* SDLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB264624F7F5540061BF55 /* SDLManager.m */; };
+ 4ABB264924F7F5540061BF55 /* SDLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB264724F7F5540061BF55 /* SDLManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB264B24F7F5580061BF55 /* SDLManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB264A24F7F5580061BF55 /* SDLManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB264E24F7F5720061BF55 /* SDLConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB264C24F7F5720061BF55 /* SDLConfiguration.m */; };
+ 4ABB264F24F7F5720061BF55 /* SDLConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB264D24F7F5720061BF55 /* SDLConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB265224F7F58D0061BF55 /* SDLRPCRequestNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB265024F7F58D0061BF55 /* SDLRPCRequestNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB265324F7F58D0061BF55 /* SDLRPCRequestNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB265124F7F58D0061BF55 /* SDLRPCRequestNotification.m */; };
+ 4ABB265624F7F5B40061BF55 /* SDLRPCNotificationNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB265424F7F5B40061BF55 /* SDLRPCNotificationNotification.m */; };
+ 4ABB265724F7F5B40061BF55 /* SDLRPCNotificationNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB265524F7F5B40061BF55 /* SDLRPCNotificationNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB265A24F7F5C10061BF55 /* SDLRPCResponseNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB265824F7F5C10061BF55 /* SDLRPCResponseNotification.m */; };
+ 4ABB265B24F7F5C10061BF55 /* SDLRPCResponseNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB265924F7F5C10061BF55 /* SDLRPCResponseNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB265E24F7F5F20061BF55 /* SDLNotificationDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB265C24F7F5F20061BF55 /* SDLNotificationDispatcher.h */; };
+ 4ABB265F24F7F5F20061BF55 /* SDLNotificationDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB265D24F7F5F20061BF55 /* SDLNotificationDispatcher.m */; };
+ 4ABB266224F7F6000061BF55 /* SDLResponseDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB266024F7F6000061BF55 /* SDLResponseDispatcher.h */; };
+ 4ABB266324F7F6000061BF55 /* SDLResponseDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB266124F7F6000061BF55 /* SDLResponseDispatcher.m */; };
+ 4ABB266824F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB266424F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.m */; };
+ 4ABB266924F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB266524F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.h */; };
+ 4ABB266A24F7F61B0061BF55 /* EAAccessory+SDLProtocols.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB266624F7F61B0061BF55 /* EAAccessory+SDLProtocols.m */; };
+ 4ABB266B24F7F61B0061BF55 /* EAAccessory+SDLProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB266724F7F61B0061BF55 /* EAAccessory+SDLProtocols.h */; };
+ 4ABB266E24F7F6350061BF55 /* NSMutableDictionary+Store.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB266C24F7F6350061BF55 /* NSMutableDictionary+Store.m */; };
+ 4ABB266F24F7F6350061BF55 /* NSMutableDictionary+Store.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB266D24F7F6350061BF55 /* NSMutableDictionary+Store.h */; };
+ 4ABB267224F7F6640061BF55 /* SDLPrioritizedObjectCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB267024F7F6640061BF55 /* SDLPrioritizedObjectCollection.m */; };
+ 4ABB267324F7F6640061BF55 /* SDLPrioritizedObjectCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB267124F7F6640061BF55 /* SDLPrioritizedObjectCollection.h */; };
+ 4ABB267624F7F6720061BF55 /* SDLObjectWithPriority.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB267424F7F6720061BF55 /* SDLObjectWithPriority.h */; };
+ 4ABB267724F7F6720061BF55 /* SDLObjectWithPriority.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB267524F7F6720061BF55 /* SDLObjectWithPriority.m */; };
+ 4ABB267A24F7F6840061BF55 /* SDLIconArchiveFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB267824F7F6840061BF55 /* SDLIconArchiveFile.h */; };
+ 4ABB267B24F7F6840061BF55 /* SDLIconArchiveFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB267924F7F6840061BF55 /* SDLIconArchiveFile.m */; };
+ 4ABB267E24F7F68F0061BF55 /* SDLCacheFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB267C24F7F68F0061BF55 /* SDLCacheFileManager.h */; };
+ 4ABB267F24F7F68F0061BF55 /* SDLCacheFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB267D24F7F68F0061BF55 /* SDLCacheFileManager.m */; };
+ 4ABB268224F7F8D60061BF55 /* SDLBackgroundTaskManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB268024F7F8D50061BF55 /* SDLBackgroundTaskManager.h */; };
+ 4ABB268324F7F8D60061BF55 /* SDLBackgroundTaskManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB268124F7F8D60061BF55 /* SDLBackgroundTaskManager.m */; };
+ 4ABB268624F7F8E20061BF55 /* SDLMutableDataQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB268424F7F8E20061BF55 /* SDLMutableDataQueue.h */; };
+ 4ABB268724F7F8E20061BF55 /* SDLMutableDataQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB268524F7F8E20061BF55 /* SDLMutableDataQueue.m */; };
+ 4ABB268A24F7F8F00061BF55 /* SDLGlobals.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB268824F7F8F00061BF55 /* SDLGlobals.h */; };
+ 4ABB268B24F7F8F00061BF55 /* SDLGlobals.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB268924F7F8F00061BF55 /* SDLGlobals.m */; };
+ 4ABB268E24F7F8FC0061BF55 /* SDLHexUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB268C24F7F8FB0061BF55 /* SDLHexUtility.m */; };
+ 4ABB268F24F7F8FC0061BF55 /* SDLHexUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB268D24F7F8FB0061BF55 /* SDLHexUtility.h */; };
+ 4ABB269224F7F9060061BF55 /* SDLTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB269024F7F9060061BF55 /* SDLTimer.m */; };
+ 4ABB269324F7F9060061BF55 /* SDLTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB269124F7F9060061BF55 /* SDLTimer.h */; };
+ 4ABB269624F7F9400061BF55 /* SDLRPCFunctionNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB269424F7F93F0061BF55 /* SDLRPCFunctionNames.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB269724F7F9400061BF55 /* SDLRPCFunctionNames.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB269524F7F93F0061BF55 /* SDLRPCFunctionNames.m */; };
+ 4ABB269C24F7F9710061BF55 /* SDLRPCParameterNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB269A24F7F9710061BF55 /* SDLRPCParameterNames.h */; };
+ 4ABB269D24F7F9710061BF55 /* SDLRPCParameterNames.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB269B24F7F9710061BF55 /* SDLRPCParameterNames.m */; };
+ 4ABB26A024F7F98C0061BF55 /* SDLLogFileModuleMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB269E24F7F98C0061BF55 /* SDLLogFileModuleMap.h */; };
+ 4ABB26A124F7F98C0061BF55 /* SDLLogFileModuleMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB269F24F7F98C0061BF55 /* SDLLogFileModuleMap.m */; };
+ 4ABB26A424F7F9B90061BF55 /* SDLLogFileModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26A224F7F9B90061BF55 /* SDLLogFileModule.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26A524F7F9B90061BF55 /* SDLLogFileModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26A324F7F9B90061BF55 /* SDLLogFileModule.m */; };
+ 4ABB26A824F7F9CF0061BF55 /* SDLLogTargetAppleSystemLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26A624F7F9CE0061BF55 /* SDLLogTargetAppleSystemLog.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26A924F7F9CF0061BF55 /* SDLLogTargetAppleSystemLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26A724F7F9CE0061BF55 /* SDLLogTargetAppleSystemLog.m */; };
+ 4ABB26AC24F7F9D70061BF55 /* SDLLogTargetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26AA24F7F9D70061BF55 /* SDLLogTargetFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26AD24F7F9D70061BF55 /* SDLLogTargetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26AB24F7F9D70061BF55 /* SDLLogTargetFile.m */; };
+ 4ABB26B024F7F9DF0061BF55 /* SDLLogTargetOSLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26AE24F7F9DF0061BF55 /* SDLLogTargetOSLog.m */; };
+ 4ABB26B124F7F9DF0061BF55 /* SDLLogTargetOSLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26AF24F7F9DF0061BF55 /* SDLLogTargetOSLog.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26B324F7F9F60061BF55 /* SDLLogTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26B224F7F9F60061BF55 /* SDLLogTarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26BA24F7FA1C0061BF55 /* SDLLogConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26B424F7FA1B0061BF55 /* SDLLogConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26BB24F7FA1C0061BF55 /* SDLLogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26B524F7FA1B0061BF55 /* SDLLogConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26BC24F7FA1C0061BF55 /* SDLLogFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26B624F7FA1B0061BF55 /* SDLLogFilter.m */; };
+ 4ABB26BD24F7FA1C0061BF55 /* SDLLogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26B724F7FA1B0061BF55 /* SDLLogConfiguration.m */; };
+ 4ABB26BE24F7FA1C0061BF55 /* SDLLogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26B824F7FA1B0061BF55 /* SDLLogMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26BF24F7FA1C0061BF55 /* SDLLogFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26B924F7FA1C0061BF55 /* SDLLogFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26C524F7FA5F0061BF55 /* SDLLogModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26C124F7FA5F0061BF55 /* SDLLogModel.m */; };
+ 4ABB26C624F7FA5F0061BF55 /* SDLLogModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26C224F7FA5F0061BF55 /* SDLLogModel.h */; };
+ 4ABB26CA24F7FAAF0061BF55 /* SDLEnum.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26C824F7FAAE0061BF55 /* SDLEnum.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26CB24F7FAAF0061BF55 /* SDLEnum.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26C924F7FAAF0061BF55 /* SDLEnum.m */; };
+ 4ABB26D624F7FAFD0061BF55 /* SDLRPCNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26CC24F7FAFC0061BF55 /* SDLRPCNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26D724F7FAFD0061BF55 /* SDLRPCMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26CD24F7FAFC0061BF55 /* SDLRPCMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26D824F7FAFD0061BF55 /* SDLRPCStruct.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26CE24F7FAFC0061BF55 /* SDLRPCStruct.m */; };
+ 4ABB26D924F7FAFD0061BF55 /* SDLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26CF24F7FAFC0061BF55 /* SDLRPCRequest.m */; };
+ 4ABB26DA24F7FAFD0061BF55 /* SDLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26D024F7FAFC0061BF55 /* SDLRPCResponse.m */; };
+ 4ABB26DB24F7FAFD0061BF55 /* SDLRPCMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26D124F7FAFD0061BF55 /* SDLRPCMessage.m */; };
+ 4ABB26DC24F7FAFD0061BF55 /* SDLRPCStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26D224F7FAFD0061BF55 /* SDLRPCStruct.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26DD24F7FAFD0061BF55 /* SDLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26D324F7FAFD0061BF55 /* SDLRPCResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26DE24F7FAFD0061BF55 /* SDLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26D424F7FAFD0061BF55 /* SDLRPCRequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26DF24F7FAFD0061BF55 /* SDLRPCNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26D524F7FAFD0061BF55 /* SDLRPCNotification.m */; };
+ 4ABB26F624F7FB8F0061BF55 /* SDLAppServiceType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26E024F7FB8C0061BF55 /* SDLAppServiceType.m */; };
+ 4ABB26F724F7FB8F0061BF55 /* SDLAudioStreamingState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26E124F7FB8C0061BF55 /* SDLAudioStreamingState.m */; };
+ 4ABB26F824F7FB8F0061BF55 /* SDLAudioType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26E224F7FB8C0061BF55 /* SDLAudioType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26F924F7FB8F0061BF55 /* SDLAppHMIType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26E324F7FB8C0061BF55 /* SDLAppHMIType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26FA24F7FB8F0061BF55 /* SDLAppServiceType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26E424F7FB8C0061BF55 /* SDLAppServiceType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26FB24F7FB8F0061BF55 /* SDLButtonEventMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26E524F7FB8D0061BF55 /* SDLButtonEventMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26FC24F7FB8F0061BF55 /* SDLAudioStreamingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26E624F7FB8D0061BF55 /* SDLAudioStreamingIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26FD24F7FB8F0061BF55 /* SDLAmbientLightStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26E724F7FB8D0061BF55 /* SDLAmbientLightStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB26FE24F7FB8F0061BF55 /* SDLBitsPerSample.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26E824F7FB8D0061BF55 /* SDLBitsPerSample.m */; };
+ 4ABB26FF24F7FB8F0061BF55 /* SDLAppInterfaceUnregisteredReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26E924F7FB8D0061BF55 /* SDLAppInterfaceUnregisteredReason.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB270024F7FB8F0061BF55 /* SDLAmbientLightStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26EA24F7FB8D0061BF55 /* SDLAmbientLightStatus.m */; };
+ 4ABB270124F7FB8F0061BF55 /* SDLBitsPerSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26EB24F7FB8D0061BF55 /* SDLBitsPerSample.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB270224F7FB8F0061BF55 /* SDLButtonEventMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26EC24F7FB8D0061BF55 /* SDLButtonEventMode.m */; };
+ 4ABB270324F7FB8F0061BF55 /* SDLButtonName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26ED24F7FB8E0061BF55 /* SDLButtonName.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB270424F7FB8F0061BF55 /* SDLButtonPressMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26EE24F7FB8E0061BF55 /* SDLButtonPressMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB270524F7FB8F0061BF55 /* SDLButtonPressMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26EF24F7FB8E0061BF55 /* SDLButtonPressMode.m */; };
+ 4ABB270624F7FB8F0061BF55 /* SDLButtonName.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26F024F7FB8E0061BF55 /* SDLButtonName.m */; };
+ 4ABB270724F7FB8F0061BF55 /* SDLAudioStreamingIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26F124F7FB8E0061BF55 /* SDLAudioStreamingIndicator.m */; };
+ 4ABB270824F7FB8F0061BF55 /* SDLAppHMIType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26F224F7FB8E0061BF55 /* SDLAppHMIType.m */; };
+ 4ABB270924F7FB8F0061BF55 /* SDLAudioStreamingState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB26F324F7FB8E0061BF55 /* SDLAudioStreamingState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB270A24F7FB8F0061BF55 /* SDLAppInterfaceUnregisteredReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26F424F7FB8E0061BF55 /* SDLAppInterfaceUnregisteredReason.m */; };
+ 4ABB270B24F7FB8F0061BF55 /* SDLAudioType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB26F524F7FB8F0061BF55 /* SDLAudioType.m */; };
+ 4ABB271424F7FC4E0061BF55 /* SDLCarModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB270C24F7FC4D0061BF55 /* SDLCarModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB271524F7FC4E0061BF55 /* SDLCompassDirection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB270D24F7FC4D0061BF55 /* SDLCompassDirection.m */; };
+ 4ABB271624F7FC4E0061BF55 /* SDLCarModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB270E24F7FC4D0061BF55 /* SDLCarModeStatus.m */; };
+ 4ABB271724F7FC4E0061BF55 /* SDLCharacterSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB270F24F7FC4E0061BF55 /* SDLCharacterSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB271824F7FC4E0061BF55 /* SDLCompassDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB271024F7FC4E0061BF55 /* SDLCompassDirection.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB271924F7FC4E0061BF55 /* SDLCapacityUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB271124F7FC4E0061BF55 /* SDLCapacityUnit.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB271A24F7FC4E0061BF55 /* SDLCapacityUnit.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB271224F7FC4E0061BF55 /* SDLCapacityUnit.m */; };
+ 4ABB271B24F7FC4E0061BF55 /* SDLCharacterSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB271324F7FC4E0061BF55 /* SDLCharacterSet.m */; };
+ 4ABB272224F7FCAE0061BF55 /* SDLDefrostZone.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB271C24F7FCAD0061BF55 /* SDLDefrostZone.m */; };
+ 4ABB272324F7FCAE0061BF55 /* SDLComponentVolumeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB271D24F7FCAD0061BF55 /* SDLComponentVolumeStatus.m */; };
+ 4ABB272424F7FCAE0061BF55 /* SDLComponentVolumeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB271E24F7FCAE0061BF55 /* SDLComponentVolumeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB272524F7FCAE0061BF55 /* SDLDeliveryMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB271F24F7FCAE0061BF55 /* SDLDeliveryMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB272624F7FCAE0061BF55 /* SDLDefrostZone.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB272024F7FCAE0061BF55 /* SDLDefrostZone.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB272724F7FCAE0061BF55 /* SDLDeliveryMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB272124F7FCAE0061BF55 /* SDLDeliveryMode.m */; };
+ 4ABB273424F7FD1D0061BF55 /* SDLDistanceUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB272824F7FD1B0061BF55 /* SDLDistanceUnit.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB273524F7FD1D0061BF55 /* SDLDirection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB272924F7FD1B0061BF55 /* SDLDirection.m */; };
+ 4ABB273624F7FD1D0061BF55 /* SDLDistanceUnit.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB272A24F7FD1B0061BF55 /* SDLDistanceUnit.m */; };
+ 4ABB273724F7FD1D0061BF55 /* SDLDisplayType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB272B24F7FD1B0061BF55 /* SDLDisplayType.m */; };
+ 4ABB273824F7FD1D0061BF55 /* SDLDisplayMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB272C24F7FD1C0061BF55 /* SDLDisplayMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB273924F7FD1D0061BF55 /* SDLDisplayType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB272D24F7FD1C0061BF55 /* SDLDisplayType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB273A24F7FD1D0061BF55 /* SDLDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB272E24F7FD1C0061BF55 /* SDLDirection.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB273B24F7FD1D0061BF55 /* SDLDeviceLevelStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB272F24F7FD1C0061BF55 /* SDLDeviceLevelStatus.m */; };
+ 4ABB273C24F7FD1D0061BF55 /* SDLDeviceLevelStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB273024F7FD1C0061BF55 /* SDLDeviceLevelStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB273D24F7FD1D0061BF55 /* SDLDimension.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB273124F7FD1C0061BF55 /* SDLDimension.m */; };
+ 4ABB273E24F7FD1D0061BF55 /* SDLDisplayMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB273224F7FD1D0061BF55 /* SDLDisplayMode.m */; };
+ 4ABB273F24F7FD1D0061BF55 /* SDLDimension.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB273324F7FD1D0061BF55 /* SDLDimension.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB274C24F7FD9C0061BF55 /* SDLFileType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB274024F7FD990061BF55 /* SDLFileType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB274D24F7FD9C0061BF55 /* SDLEmergencyEventType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB274124F7FD9A0061BF55 /* SDLEmergencyEventType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB274E24F7FD9C0061BF55 /* SDLFuelCutoffStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB274224F7FD9A0061BF55 /* SDLFuelCutoffStatus.m */; };
+ 4ABB274F24F7FD9C0061BF55 /* SDLECallConfirmationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB274324F7FD9A0061BF55 /* SDLECallConfirmationStatus.m */; };
+ 4ABB275024F7FD9C0061BF55 /* SDLDriverDistractionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB274424F7FD9A0061BF55 /* SDLDriverDistractionState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB275124F7FD9C0061BF55 /* SDLElectronicParkBrakeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB274524F7FD9A0061BF55 /* SDLElectronicParkBrakeStatus.m */; };
+ 4ABB275224F7FD9C0061BF55 /* SDLFuelCutoffStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB274624F7FD9B0061BF55 /* SDLFuelCutoffStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB275324F7FD9C0061BF55 /* SDLECallConfirmationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB274724F7FD9B0061BF55 /* SDLECallConfirmationStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB275424F7FD9C0061BF55 /* SDLElectronicParkBrakeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB274824F7FD9B0061BF55 /* SDLElectronicParkBrakeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB275524F7FD9C0061BF55 /* SDLDriverDistractionState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB274924F7FD9B0061BF55 /* SDLDriverDistractionState.m */; };
+ 4ABB275624F7FD9C0061BF55 /* SDLFileType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB274A24F7FD9B0061BF55 /* SDLFileType.m */; };
+ 4ABB275724F7FD9C0061BF55 /* SDLEmergencyEventType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB274B24F7FD9B0061BF55 /* SDLEmergencyEventType.m */; };
+ 4ABB275C24F7FE1F0061BF55 /* SDLFuelType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB275824F7FE1E0061BF55 /* SDLFuelType.m */; };
+ 4ABB275D24F7FE1F0061BF55 /* SDLGlobalProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB275924F7FE1E0061BF55 /* SDLGlobalProperty.m */; };
+ 4ABB275E24F7FE1F0061BF55 /* SDLGlobalProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB275A24F7FE1F0061BF55 /* SDLGlobalProperty.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB275F24F7FE1F0061BF55 /* SDLFuelType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB275B24F7FE1F0061BF55 /* SDLFuelType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB276824F7FE480061BF55 /* SDLHMIZoneCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB276024F7FE470061BF55 /* SDLHMIZoneCapabilities.m */; };
+ 4ABB276924F7FE480061BF55 /* SDLHMIZoneCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB276124F7FE470061BF55 /* SDLHMIZoneCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB276A24F7FE480061BF55 /* SDLHybridAppPreference.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB276224F7FE470061BF55 /* SDLHybridAppPreference.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB276B24F7FE480061BF55 /* SDLHybridAppPreference.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB276324F7FE470061BF55 /* SDLHybridAppPreference.m */; };
+ 4ABB276C24F7FE480061BF55 /* SDLHMILevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB276424F7FE480061BF55 /* SDLHMILevel.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB276D24F7FE480061BF55 /* SDLHMILevel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB276524F7FE480061BF55 /* SDLHMILevel.m */; };
+ 4ABB276E24F7FE480061BF55 /* SDLIgnitionStableStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB276624F7FE480061BF55 /* SDLIgnitionStableStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB276F24F7FE480061BF55 /* SDLIgnitionStableStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB276724F7FE480061BF55 /* SDLIgnitionStableStatus.m */; };
+ 4ABB277424F7FE910061BF55 /* SDLLightName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB277024F7FE900061BF55 /* SDLLightName.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB277524F7FE910061BF55 /* SDLIgnitionStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB277124F7FE900061BF55 /* SDLIgnitionStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB277624F7FE910061BF55 /* SDLLightName.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB277224F7FE900061BF55 /* SDLLightName.m */; };
+ 4ABB277724F7FE910061BF55 /* SDLIgnitionStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB277324F7FE910061BF55 /* SDLIgnitionStatus.m */; };
+ 4ABB277A24F7FEBA0061BF55 /* SDLLightStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB277824F7FEB90061BF55 /* SDLLightStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB277B24F7FEBA0061BF55 /* SDLLightStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB277924F7FEB90061BF55 /* SDLLightStatus.m */; };
+ 4ABB278C24F7FF0B0061BF55 /* SDLLanguage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB277C24F7FF080061BF55 /* SDLLanguage.m */; };
+ 4ABB278D24F7FF0B0061BF55 /* SDLImageFieldName.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB277D24F7FF080061BF55 /* SDLImageFieldName.m */; };
+ 4ABB278E24F7FF0B0061BF55 /* SDLKeyboardEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB277E24F7FF090061BF55 /* SDLKeyboardEvent.m */; };
+ 4ABB278F24F7FF0B0061BF55 /* SDLKeyboardLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB277F24F7FF090061BF55 /* SDLKeyboardLayout.m */; };
+ 4ABB279024F7FF0B0061BF55 /* SDLImageType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB278024F7FF090061BF55 /* SDLImageType.m */; };
+ 4ABB279124F7FF0B0061BF55 /* SDLImageFieldName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278124F7FF090061BF55 /* SDLImageFieldName.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB279224F7FF0B0061BF55 /* SDLInteractionMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB278224F7FF090061BF55 /* SDLInteractionMode.m */; };
+ 4ABB279324F7FF0B0061BF55 /* SDLLayoutMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278324F7FF0A0061BF55 /* SDLLayoutMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB279424F7FF0B0061BF55 /* SDLKeypressMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB278424F7FF0A0061BF55 /* SDLKeypressMode.m */; };
+ 4ABB279524F7FF0B0061BF55 /* SDLLayoutMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB278524F7FF0A0061BF55 /* SDLLayoutMode.m */; };
+ 4ABB279624F7FF0B0061BF55 /* SDLKeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278624F7FF0A0061BF55 /* SDLKeyboardEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB279724F7FF0B0061BF55 /* SDLImageType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278724F7FF0A0061BF55 /* SDLImageType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB279824F7FF0B0061BF55 /* SDLKeypressMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278824F7FF0A0061BF55 /* SDLKeypressMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB279924F7FF0B0061BF55 /* SDLLanguage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278924F7FF0B0061BF55 /* SDLLanguage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB279A24F7FF0B0061BF55 /* SDLInteractionMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278A24F7FF0B0061BF55 /* SDLInteractionMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB279B24F7FF0B0061BF55 /* SDLKeyboardLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB278B24F7FF0B0061BF55 /* SDLKeyboardLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27A824F7FFDA0061BF55 /* SDLMassageMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB279C24F7FFD80061BF55 /* SDLMassageMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27A924F7FFDA0061BF55 /* SDLMediaClockFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB279D24F7FFD80061BF55 /* SDLMediaClockFormat.m */; };
+ 4ABB27AA24F7FFDA0061BF55 /* SDLMassageZone.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB279E24F7FFD80061BF55 /* SDLMassageZone.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27AB24F7FFDA0061BF55 /* SDLMassageZone.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB279F24F7FFD80061BF55 /* SDLMassageZone.m */; };
+ 4ABB27AC24F7FFDA0061BF55 /* SDLMediaClockFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27A024F7FFD80061BF55 /* SDLMediaClockFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27AF24F7FFDA0061BF55 /* SDLMaintenanceModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27A324F7FFD90061BF55 /* SDLMaintenanceModeStatus.m */; };
+ 4ABB27B024F7FFDA0061BF55 /* SDLMassageCushion.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27A424F7FFD90061BF55 /* SDLMassageCushion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27B124F7FFDA0061BF55 /* SDLMassageCushion.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27A524F7FFD90061BF55 /* SDLMassageCushion.m */; };
+ 4ABB27B224F7FFDA0061BF55 /* SDLMassageMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27A624F7FFD90061BF55 /* SDLMassageMode.m */; };
+ 4ABB27B324F7FFDA0061BF55 /* SDLMaintenanceModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27A724F7FFDA0061BF55 /* SDLMaintenanceModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27C224F8006D0061BF55 /* SDLMetadataType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27B424F8006A0061BF55 /* SDLMetadataType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27C324F8006D0061BF55 /* SDLMetadataType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27B524F8006A0061BF55 /* SDLMetadataType.m */; };
+ 4ABB27C424F8006D0061BF55 /* SDLPermissionStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27B624F8006A0061BF55 /* SDLPermissionStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27C524F8006D0061BF55 /* SDLNavigationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27B724F8006B0061BF55 /* SDLNavigationAction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27C624F8006D0061BF55 /* SDLModuleType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27B824F8006B0061BF55 /* SDLModuleType.m */; };
+ 4ABB27C724F8006D0061BF55 /* SDLPermissionStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27B924F8006B0061BF55 /* SDLPermissionStatus.m */; };
+ 4ABB27C824F8006D0061BF55 /* SDLNavigationAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27BA24F8006B0061BF55 /* SDLNavigationAction.m */; };
+ 4ABB27C924F8006D0061BF55 /* SDLMenuLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27BB24F8006B0061BF55 /* SDLMenuLayout.m */; };
+ 4ABB27CA24F8006D0061BF55 /* SDLMediaType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27BC24F8006C0061BF55 /* SDLMediaType.m */; };
+ 4ABB27CB24F8006D0061BF55 /* SDLMenuLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27BD24F8006C0061BF55 /* SDLMenuLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27CC24F8006D0061BF55 /* SDLNavigationJunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27BE24F8006C0061BF55 /* SDLNavigationJunction.m */; };
+ 4ABB27CD24F8006D0061BF55 /* SDLModuleType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27BF24F8006C0061BF55 /* SDLModuleType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27CE24F8006D0061BF55 /* SDLMediaType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27C024F8006C0061BF55 /* SDLMediaType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27CF24F8006D0061BF55 /* SDLNavigationJunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27C124F8006C0061BF55 /* SDLNavigationJunction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27DB24F800CA0061BF55 /* SDLPowerModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27D024F800C80061BF55 /* SDLPowerModeStatus.m */; };
+ 4ABB27DC24F800CA0061BF55 /* SDLPredefinedLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27D124F800C80061BF55 /* SDLPredefinedLayout.m */; };
+ 4ABB27DD24F800CA0061BF55 /* SDLPrimaryAudioSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27D224F800C80061BF55 /* SDLPrimaryAudioSource.m */; };
+ 4ABB27DE24F800CA0061BF55 /* SDLPredefinedLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27D324F800C90061BF55 /* SDLPredefinedLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27DF24F800CA0061BF55 /* SDLPowerModeQualificationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27D424F800C90061BF55 /* SDLPowerModeQualificationStatus.m */; };
+ 4ABB27E024F800CA0061BF55 /* SDLPrerecordedSpeech.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27D524F800C90061BF55 /* SDLPrerecordedSpeech.m */; };
+ 4ABB27E124F800CA0061BF55 /* SDLPowerModeQualificationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27D624F800C90061BF55 /* SDLPowerModeQualificationStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27E224F800CA0061BF55 /* SDLPowerModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27D724F800C90061BF55 /* SDLPowerModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27E324F800CA0061BF55 /* SDLPredefinedWindows.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27D824F800CA0061BF55 /* SDLPredefinedWindows.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27E424F800CA0061BF55 /* SDLPrerecordedSpeech.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27D924F800CA0061BF55 /* SDLPrerecordedSpeech.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27E524F800CA0061BF55 /* SDLPrimaryAudioSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27DA24F800CA0061BF55 /* SDLPrimaryAudioSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27EC24F801B50061BF55 /* SDLRadioBand.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27E624F801B40061BF55 /* SDLRadioBand.m */; };
+ 4ABB27ED24F801B50061BF55 /* SDLRadioState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27E724F801B40061BF55 /* SDLRadioState.m */; };
+ 4ABB27EE24F801B50061BF55 /* SDLRadioBand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27E824F801B40061BF55 /* SDLRadioBand.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27EF24F801B50061BF55 /* SDLRadioState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27E924F801B50061BF55 /* SDLRadioState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27F024F801B50061BF55 /* SDLPRNDL.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27EA24F801B50061BF55 /* SDLPRNDL.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27F124F801B50061BF55 /* SDLPRNDL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27EB24F801B50061BF55 /* SDLPRNDL.m */; };
+ 4ABB27FA24F823F20061BF55 /* SDLRPCMessageType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27F224F823F10061BF55 /* SDLRPCMessageType.m */; };
+ 4ABB27FB24F823F20061BF55 /* SDLRPCMessageType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27F324F823F10061BF55 /* SDLRPCMessageType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27FC24F823F20061BF55 /* SDLRequestType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27F424F823F10061BF55 /* SDLRequestType.m */; };
+ 4ABB27FD24F823F20061BF55 /* SDLSamplingRate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27F524F823F10061BF55 /* SDLSamplingRate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB27FE24F823F20061BF55 /* SDLSamplingRate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27F624F823F20061BF55 /* SDLSamplingRate.m */; };
+ 4ABB27FF24F823F20061BF55 /* SDLRequestType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27F724F823F20061BF55 /* SDLRequestType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB280024F823F20061BF55 /* SDLResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB27F824F823F20061BF55 /* SDLResult.m */; };
+ 4ABB280124F823F20061BF55 /* SDLResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB27F924F823F20061BF55 /* SDLResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB280824F824600061BF55 /* SDLSeatMemoryActionType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB280224F8245F0061BF55 /* SDLSeatMemoryActionType.m */; };
+ 4ABB280924F824600061BF55 /* SDLSoftButtonType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB280324F8245F0061BF55 /* SDLSoftButtonType.m */; };
+ 4ABB280A24F824600061BF55 /* SDLServiceUpdateReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB280424F824600061BF55 /* SDLServiceUpdateReason.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB280B24F824600061BF55 /* SDLSeatMemoryActionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB280524F824600061BF55 /* SDLSeatMemoryActionType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB280C24F824600061BF55 /* SDLSoftButtonType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB280624F824600061BF55 /* SDLSoftButtonType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB280D24F824600061BF55 /* SDLServiceUpdateReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB280724F824600061BF55 /* SDLServiceUpdateReason.m */; };
+ 4ABB281424F824A50061BF55 /* SDLSupportedSeat.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB280E24F824A40061BF55 /* SDLSupportedSeat.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB281524F824A50061BF55 /* SDLSupportedSeat.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB280F24F824A40061BF55 /* SDLSupportedSeat.m */; };
+ 4ABB281624F824A50061BF55 /* SDLSpeechCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB281024F824A40061BF55 /* SDLSpeechCapabilities.m */; };
+ 4ABB281724F824A50061BF55 /* SDLSpeechCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB281124F824A40061BF55 /* SDLSpeechCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB281824F824A50061BF55 /* SDLStaticIconName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB281224F824A40061BF55 /* SDLStaticIconName.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB281924F824A50061BF55 /* SDLStaticIconName.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB281324F824A50061BF55 /* SDLStaticIconName.m */; };
+ 4ABB282624F824E70061BF55 /* SDLTemperatureUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB281A24F824E60061BF55 /* SDLTemperatureUnit.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB282724F824E70061BF55 /* SDLSystemCapabilityType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB281B24F824E60061BF55 /* SDLSystemCapabilityType.m */; };
+ 4ABB282824F824E70061BF55 /* SDLSystemContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB281C24F824E60061BF55 /* SDLSystemContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB282924F824E70061BF55 /* SDLSystemAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB281D24F824E60061BF55 /* SDLSystemAction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB282A24F824E70061BF55 /* SDLSystemAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB281E24F824E60061BF55 /* SDLSystemAction.m */; };
+ 4ABB282B24F824E70061BF55 /* SDLTBTState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB281F24F824E60061BF55 /* SDLTBTState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB282C24F824E70061BF55 /* SDLTBTState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB282024F824E70061BF55 /* SDLTBTState.m */; };
+ 4ABB282D24F824E70061BF55 /* SDLSystemContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB282124F824E70061BF55 /* SDLSystemContext.m */; };
+ 4ABB282E24F824E70061BF55 /* SDLTextAlignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB282224F824E70061BF55 /* SDLTextAlignment.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB282F24F824E70061BF55 /* SDLTextAlignment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB282324F824E70061BF55 /* SDLTextAlignment.m */; };
+ 4ABB283024F824E70061BF55 /* SDLSystemCapabilityType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB282424F824E70061BF55 /* SDLSystemCapabilityType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB283124F824E70061BF55 /* SDLTemperatureUnit.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB282524F824E70061BF55 /* SDLTemperatureUnit.m */; };
+ 4ABB284024F828630061BF55 /* SDLTPMS.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB283224F828600061BF55 /* SDLTPMS.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB284124F828630061BF55 /* SDLTurnSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB283324F828600061BF55 /* SDLTurnSignal.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB284224F828630061BF55 /* SDLTextFieldName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB283424F828610061BF55 /* SDLTextFieldName.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB284324F828630061BF55 /* SDLTriggerSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB283524F828610061BF55 /* SDLTriggerSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB284424F828630061BF55 /* SDLTurnSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB283624F828610061BF55 /* SDLTurnSignal.m */; };
+ 4ABB284524F828630061BF55 /* SDLTouchType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB283724F828610061BF55 /* SDLTouchType.m */; };
+ 4ABB284624F828630061BF55 /* SDLTouchType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB283824F828610061BF55 /* SDLTouchType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB284724F828630061BF55 /* SDLTextFieldName.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB283924F828610061BF55 /* SDLTextFieldName.m */; };
+ 4ABB284824F828630061BF55 /* SDLTimerMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB283A24F828620061BF55 /* SDLTimerMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB284924F828630061BF55 /* SDLTriggerSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB283B24F828620061BF55 /* SDLTriggerSource.m */; };
+ 4ABB284A24F828630061BF55 /* SDLTimerMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB283C24F828620061BF55 /* SDLTimerMode.m */; };
+ 4ABB284B24F828630061BF55 /* SDLTransmissionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB283D24F828620061BF55 /* SDLTransmissionType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB284C24F828630061BF55 /* SDLTPMS.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB283E24F828620061BF55 /* SDLTPMS.m */; };
+ 4ABB284D24F828630061BF55 /* SDLTransmissionType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB283F24F828630061BF55 /* SDLTransmissionType.m */; };
+ 4ABB285C24F828E00061BF55 /* SDLVehicleDataEventStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB284E24F828DD0061BF55 /* SDLVehicleDataEventStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB285D24F828E00061BF55 /* SDLVehicleDataType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB284F24F828DE0061BF55 /* SDLVehicleDataType.m */; };
+ 4ABB285E24F828E00061BF55 /* SDLVehicleDataStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB285024F828DE0061BF55 /* SDLVehicleDataStatus.m */; };
+ 4ABB285F24F828E00061BF55 /* SDLVehicleDataActiveStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB285124F828DE0061BF55 /* SDLVehicleDataActiveStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB286024F828E00061BF55 /* SDLUpdateMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB285224F828DE0061BF55 /* SDLUpdateMode.m */; };
+ 4ABB286124F828E00061BF55 /* SDLVehicleDataResultCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB285324F828DE0061BF55 /* SDLVehicleDataResultCode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB286224F828E00061BF55 /* SDLVehicleDataResultCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB285424F828DE0061BF55 /* SDLVehicleDataResultCode.m */; };
+ 4ABB286324F828E00061BF55 /* SDLUpdateMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB285524F828DF0061BF55 /* SDLUpdateMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB286424F828E00061BF55 /* SDLVehicleDataNotificationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB285624F828DF0061BF55 /* SDLVehicleDataNotificationStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB286524F828E00061BF55 /* SDLVehicleDataNotificationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB285724F828DF0061BF55 /* SDLVehicleDataNotificationStatus.m */; };
+ 4ABB286724F828E00061BF55 /* SDLVehicleDataStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB285924F828DF0061BF55 /* SDLVehicleDataStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB286824F828E00061BF55 /* SDLVehicleDataEventStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB285A24F828E00061BF55 /* SDLVehicleDataEventStatus.m */; };
+ 4ABB286924F828E00061BF55 /* SDLVehicleDataActiveStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB285B24F828E00061BF55 /* SDLVehicleDataActiveStatus.m */; };
+ 4ABB287424F8294A0061BF55 /* SDLWiperStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB286A24F829480061BF55 /* SDLWiperStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB287524F8294A0061BF55 /* SDLWarningLightStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB286B24F829480061BF55 /* SDLWarningLightStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB287624F8294A0061BF55 /* SDLVentilationMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB286C24F829480061BF55 /* SDLVentilationMode.m */; };
+ 4ABB287724F8294A0061BF55 /* SDLWarningLightStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB286D24F829480061BF55 /* SDLWarningLightStatus.m */; };
+ 4ABB287824F8294A0061BF55 /* SDLVrCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB286E24F829490061BF55 /* SDLVrCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB287924F8294A0061BF55 /* SDLWiperStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB286F24F829490061BF55 /* SDLWiperStatus.m */; };
+ 4ABB287A24F8294A0061BF55 /* SDLVrCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB287024F829490061BF55 /* SDLVrCapabilities.m */; };
+ 4ABB287B24F8294A0061BF55 /* SDLWayPointType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB287124F829490061BF55 /* SDLWayPointType.m */; };
+ 4ABB287C24F8294A0061BF55 /* SDLVentilationMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB287224F829490061BF55 /* SDLVentilationMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB287D24F8294A0061BF55 /* SDLWayPointType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB287324F8294A0061BF55 /* SDLWayPointType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB288024F82A200061BF55 /* SDLWindowType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB287E24F82A1F0061BF55 /* SDLWindowType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB288124F82A200061BF55 /* SDLWindowType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB287F24F82A200061BF55 /* SDLWindowType.m */; };
+ 4ABB288824F82A340061BF55 /* SDLVideoStreamingCodec.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB288224F82A330061BF55 /* SDLVideoStreamingCodec.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB288A24F82A340061BF55 /* SDLVideoStreamingCodec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB288424F82A330061BF55 /* SDLVideoStreamingCodec.m */; };
+ 4ABB288B24F82A340061BF55 /* SDLVideoStreamingFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB288524F82A340061BF55 /* SDLVideoStreamingFormat.m */; };
+ 4ABB288C24F82A340061BF55 /* SDLVideoStreamingProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB288624F82A340061BF55 /* SDLVideoStreamingProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB288D24F82A340061BF55 /* SDLVideoStreamingProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB288724F82A340061BF55 /* SDLVideoStreamingProtocol.m */; };
+ 4ABB28BE24F82A6A0061BF55 /* SDLOnSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB288E24F82A640061BF55 /* SDLOnSyncPData.m */; };
+ 4ABB28BF24F82A6A0061BF55 /* SDLOnTBTClientState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB288F24F82A640061BF55 /* SDLOnTBTClientState.m */; };
+ 4ABB28C024F82A6A0061BF55 /* SDLOnCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB289024F82A640061BF55 /* SDLOnCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28C224F82A6A0061BF55 /* SDLOnTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB289224F82A640061BF55 /* SDLOnTouchEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28C324F82A6A0061BF55 /* SDLOnAppInterfaceUnregistered.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289324F82A640061BF55 /* SDLOnAppInterfaceUnregistered.m */; };
+ 4ABB28C424F82A6A0061BF55 /* SDLOnCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289424F82A640061BF55 /* SDLOnCommand.m */; };
+ 4ABB28C524F82A6A0061BF55 /* SDLOnEncodedSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB289524F82A650061BF55 /* SDLOnEncodedSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28C624F82A6A0061BF55 /* SDLOnKeyboardInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289624F82A650061BF55 /* SDLOnKeyboardInput.m */; };
+ 4ABB28C724F82A6A0061BF55 /* SDLOnHMIStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289724F82A650061BF55 /* SDLOnHMIStatus.m */; };
+ 4ABB28C824F82A6A0061BF55 /* SDLOnLanguageChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB289824F82A650061BF55 /* SDLOnLanguageChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28C924F82A6A0061BF55 /* SDLOnRCStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289924F82A650061BF55 /* SDLOnRCStatus.m */; };
+ 4ABB28CA24F82A6A0061BF55 /* SDLOnSystemRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB289A24F82A650061BF55 /* SDLOnSystemRequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28CB24F82A6A0061BF55 /* SDLOnTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289B24F82A650061BF55 /* SDLOnTouchEvent.m */; };
+ 4ABB28CC24F82A6A0061BF55 /* SDLOnPermissionsChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB289C24F82A650061BF55 /* SDLOnPermissionsChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28CD24F82A6A0061BF55 /* SDLOnSubtleAlertPressed.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB289D24F82A660061BF55 /* SDLOnSubtleAlertPressed.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28CE24F82A6A0061BF55 /* SDLOnSubtleAlertPressed.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289E24F82A660061BF55 /* SDLOnSubtleAlertPressed.m */; };
+ 4ABB28CF24F82A6A0061BF55 /* SDLOnSystemRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB289F24F82A660061BF55 /* SDLOnSystemRequest.m */; };
+ 4ABB28D024F82A6A0061BF55 /* SDLOnWayPointChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28A024F82A660061BF55 /* SDLOnWayPointChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28D124F82A6A0061BF55 /* SDLOnButtonEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28A124F82A660061BF55 /* SDLOnButtonEvent.m */; };
+ 4ABB28D324F82A6A0061BF55 /* SDLOnSystemCapabilityUpdated.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28A324F82A660061BF55 /* SDLOnSystemCapabilityUpdated.m */; };
+ 4ABB28D424F82A6A0061BF55 /* SDLOnEncodedSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28A424F82A670061BF55 /* SDLOnEncodedSyncPData.m */; };
+ 4ABB28D524F82A6A0061BF55 /* SDLOnButtonEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28A524F82A670061BF55 /* SDLOnButtonEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28D624F82A6A0061BF55 /* SDLOnAudioPassThru.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28A624F82A670061BF55 /* SDLOnAudioPassThru.m */; };
+ 4ABB28D724F82A6A0061BF55 /* SDLOnInteriorVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28A724F82A670061BF55 /* SDLOnInteriorVehicleData.m */; };
+ 4ABB28D824F82A6A0061BF55 /* SDLOnRCStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28A824F82A670061BF55 /* SDLOnRCStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28D924F82A6A0061BF55 /* SDLOnSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28A924F82A670061BF55 /* SDLOnSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28DA24F82A6A0061BF55 /* SDLOnInteriorVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28AA24F82A670061BF55 /* SDLOnInteriorVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28DB24F82A6A0061BF55 /* SDLOnSystemCapabilityUpdated.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28AB24F82A670061BF55 /* SDLOnSystemCapabilityUpdated.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28DC24F82A6A0061BF55 /* SDLOnHashChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28AC24F82A670061BF55 /* SDLOnHashChange.m */; };
+ 4ABB28DD24F82A6A0061BF55 /* SDLOnButtonPress.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28AD24F82A680061BF55 /* SDLOnButtonPress.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28DE24F82A6A0061BF55 /* SDLOnButtonPress.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28AE24F82A680061BF55 /* SDLOnButtonPress.m */; };
+ 4ABB28DF24F82A6A0061BF55 /* SDLOnAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28AF24F82A680061BF55 /* SDLOnAppServiceData.m */; };
+ 4ABB28E024F82A6A0061BF55 /* SDLOnHMIStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28B024F82A680061BF55 /* SDLOnHMIStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28E124F82A6A0061BF55 /* SDLOnDriverDistraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28B124F82A680061BF55 /* SDLOnDriverDistraction.m */; };
+ 4ABB28E224F82A6A0061BF55 /* SDLOnLanguageChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28B224F82A680061BF55 /* SDLOnLanguageChange.m */; };
+ 4ABB28E324F82A6A0061BF55 /* SDLOnTBTClientState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28B324F82A680061BF55 /* SDLOnTBTClientState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28E424F82A6A0061BF55 /* SDLOnPermissionsChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28B424F82A680061BF55 /* SDLOnPermissionsChange.m */; };
+ 4ABB28E524F82A6A0061BF55 /* SDLOnDriverDistraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28B524F82A690061BF55 /* SDLOnDriverDistraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28E624F82A6A0061BF55 /* SDLOnAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28B624F82A690061BF55 /* SDLOnAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28E724F82A6A0061BF55 /* SDLOnAudioPassThru.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28B724F82A690061BF55 /* SDLOnAudioPassThru.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28E824F82A6A0061BF55 /* SDLOnVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28B824F82A690061BF55 /* SDLOnVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28E924F82A6A0061BF55 /* SDLOnWayPointChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28B924F82A690061BF55 /* SDLOnWayPointChange.m */; };
+ 4ABB28EA24F82A6A0061BF55 /* SDLOnAppInterfaceUnregistered.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28BA24F82A690061BF55 /* SDLOnAppInterfaceUnregistered.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28EB24F82A6A0061BF55 /* SDLOnHashChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28BB24F82A690061BF55 /* SDLOnHashChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28EC24F82A6A0061BF55 /* SDLOnVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28BC24F82A690061BF55 /* SDLOnVehicleData.m */; };
+ 4ABB28ED24F82A6A0061BF55 /* SDLOnKeyboardInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28BD24F82A6A0061BF55 /* SDLOnKeyboardInput.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28F024F82AFD0061BF55 /* SDLRPCPayload.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28EE24F82AFD0061BF55 /* SDLRPCPayload.m */; };
+ 4ABB28F124F82AFD0061BF55 /* SDLRPCPayload.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28EF24F82AFD0061BF55 /* SDLRPCPayload.h */; };
+ 4ABB28FC24F82BE90061BF55 /* SDLAddCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28F224F82BE80061BF55 /* SDLAddCommand.m */; };
+ 4ABB28FD24F82BE90061BF55 /* SDLButtonPress.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28F324F82BE80061BF55 /* SDLButtonPress.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28FE24F82BE90061BF55 /* SDLAddSubMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28F424F82BE80061BF55 /* SDLAddSubMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB28FF24F82BE90061BF55 /* SDLAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28F524F82BE80061BF55 /* SDLAlert.m */; };
+ 4ABB290024F82BE90061BF55 /* SDLAlertManeuver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28F624F82BE90061BF55 /* SDLAlertManeuver.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB290124F82BE90061BF55 /* SDLButtonPress.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28F724F82BE90061BF55 /* SDLButtonPress.m */; };
+ 4ABB290224F82BE90061BF55 /* SDLAddCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28F824F82BE90061BF55 /* SDLAddCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB290324F82BE90061BF55 /* SDLAddSubMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28F924F82BE90061BF55 /* SDLAddSubMenu.m */; };
+ 4ABB290424F82BE90061BF55 /* SDLAlertManeuver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB28FA24F82BE90061BF55 /* SDLAlertManeuver.m */; };
+ 4ABB290524F82BE90061BF55 /* SDLAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB28FB24F82BE90061BF55 /* SDLAlert.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB291024F842160061BF55 /* SDLCreateInteractionChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB290624F842140061BF55 /* SDLCreateInteractionChoiceSet.m */; };
+ 4ABB291124F842160061BF55 /* SDLChangeRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB290724F842140061BF55 /* SDLChangeRegistration.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB291224F842160061BF55 /* SDLCancelInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB290824F842140061BF55 /* SDLCancelInteraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB291324F842160061BF55 /* SDLCreateInteractionChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB290924F842140061BF55 /* SDLCreateInteractionChoiceSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB291424F842160061BF55 /* SDLDeleteCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB290A24F842140061BF55 /* SDLDeleteCommand.m */; };
+ 4ABB291524F842160061BF55 /* SDLCloseApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB290B24F842150061BF55 /* SDLCloseApplication.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB291624F842160061BF55 /* SDLCloseApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB290C24F842150061BF55 /* SDLCloseApplication.m */; };
+ 4ABB291724F842160061BF55 /* SDLCancelInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB290D24F842150061BF55 /* SDLCancelInteraction.m */; };
+ 4ABB291824F842160061BF55 /* SDLChangeRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB290E24F842150061BF55 /* SDLChangeRegistration.m */; };
+ 4ABB291924F842160061BF55 /* SDLDeleteCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB290F24F842150061BF55 /* SDLDeleteCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB291C24F842560061BF55 /* SDLCreateWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB291A24F842560061BF55 /* SDLCreateWindow.m */; };
+ 4ABB291D24F842560061BF55 /* SDLCreateWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB291B24F842560061BF55 /* SDLCreateWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB292A24F842A00061BF55 /* SDLDiagnosticMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB291E24F8429E0061BF55 /* SDLDiagnosticMessage.m */; };
+ 4ABB292B24F842A00061BF55 /* SDLDeleteInteractionChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB291F24F8429E0061BF55 /* SDLDeleteInteractionChoiceSet.m */; };
+ 4ABB292C24F842A00061BF55 /* SDLDeleteInteractionChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB292024F8429F0061BF55 /* SDLDeleteInteractionChoiceSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB292D24F842A00061BF55 /* SDLDeleteWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB292124F8429F0061BF55 /* SDLDeleteWindow.m */; };
+ 4ABB292E24F842A00061BF55 /* SDLDiagnosticMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB292224F8429F0061BF55 /* SDLDiagnosticMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB292F24F842A00061BF55 /* SDLDeleteFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB292324F8429F0061BF55 /* SDLDeleteFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB293024F842A00061BF55 /* SDLDeleteSubMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB292424F8429F0061BF55 /* SDLDeleteSubMenu.m */; };
+ 4ABB293124F842A00061BF55 /* SDLDialNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB292524F8429F0061BF55 /* SDLDialNumber.m */; };
+ 4ABB293224F842A00061BF55 /* SDLDeleteFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB292624F8429F0061BF55 /* SDLDeleteFile.m */; };
+ 4ABB293324F842A00061BF55 /* SDLDeleteSubMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB292724F842A00061BF55 /* SDLDeleteSubMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB293424F842A00061BF55 /* SDLDeleteWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB292824F842A00061BF55 /* SDLDeleteWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB293524F842A00061BF55 /* SDLDialNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB292924F842A00061BF55 /* SDLDialNumber.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB294624F843440061BF55 /* SDLGetInteriorVehicleDataConsent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB293624F843400061BF55 /* SDLGetInteriorVehicleDataConsent.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB294724F843440061BF55 /* SDLEncodedSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB293724F843410061BF55 /* SDLEncodedSyncPData.m */; };
+ 4ABB294824F843440061BF55 /* SDLGetAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB293824F843410061BF55 /* SDLGetAppServiceData.m */; };
+ 4ABB294924F843440061BF55 /* SDLEncodedSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB293924F843410061BF55 /* SDLEncodedSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB294A24F843440061BF55 /* SDLGetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB293A24F843410061BF55 /* SDLGetFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB294B24F843440061BF55 /* SDLGetInteriorVehicleDataConsent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB293B24F843410061BF55 /* SDLGetInteriorVehicleDataConsent.m */; };
+ 4ABB294C24F843440061BF55 /* SDLEndAudioPassThru.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB293C24F843420061BF55 /* SDLEndAudioPassThru.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB294D24F843440061BF55 /* SDLGetDTCs.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB293D24F843420061BF55 /* SDLGetDTCs.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB294E24F843440061BF55 /* SDLGetInteriorVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB293E24F843420061BF55 /* SDLGetInteriorVehicleData.m */; };
+ 4ABB294F24F843440061BF55 /* SDLGetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB293F24F843420061BF55 /* SDLGetFile.m */; };
+ 4ABB295024F843440061BF55 /* SDLGetInteriorVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB294024F843420061BF55 /* SDLGetInteriorVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB295124F843440061BF55 /* SDLGetDTCs.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB294124F843430061BF55 /* SDLGetDTCs.m */; };
+ 4ABB295224F843440061BF55 /* SDLGetAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB294224F843430061BF55 /* SDLGetAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB295324F843440061BF55 /* SDLGetCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB294324F843430061BF55 /* SDLGetCloudAppProperties.m */; };
+ 4ABB295424F843440061BF55 /* SDLEndAudioPassThru.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB294424F843430061BF55 /* SDLEndAudioPassThru.m */; };
+ 4ABB295524F843440061BF55 /* SDLGetCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB294524F843430061BF55 /* SDLGetCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB295E24F844020061BF55 /* SDLGetVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB295624F844000061BF55 /* SDLGetVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB295F24F844020061BF55 /* SDLGetSystemCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB295724F844000061BF55 /* SDLGetSystemCapability.m */; };
+ 4ABB296024F844020061BF55 /* SDLListFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB295824F844000061BF55 /* SDLListFiles.m */; };
+ 4ABB296124F844020061BF55 /* SDLGetWayPoints.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB295924F844010061BF55 /* SDLGetWayPoints.m */; };
+ 4ABB296224F844020061BF55 /* SDLGetWayPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB295A24F844010061BF55 /* SDLGetWayPoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB296324F844020061BF55 /* SDLGetSystemCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB295B24F844010061BF55 /* SDLGetSystemCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB296424F844020061BF55 /* SDLGetVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB295C24F844010061BF55 /* SDLGetVehicleData.m */; };
+ 4ABB296524F844020061BF55 /* SDLListFiles.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB295D24F844010061BF55 /* SDLListFiles.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB297224F844D30061BF55 /* SDLPerformInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB296624F844D00061BF55 /* SDLPerformInteraction.m */; };
+ 4ABB297324F844D30061BF55 /* SDLPublishAppService.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB296724F844D10061BF55 /* SDLPublishAppService.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB297424F844D30061BF55 /* SDLReadDID.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB296824F844D10061BF55 /* SDLReadDID.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB297524F844D30061BF55 /* SDLPerformAppServiceInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB296924F844D10061BF55 /* SDLPerformAppServiceInteraction.m */; };
+ 4ABB297624F844D30061BF55 /* SDLPerformInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB296A24F844D10061BF55 /* SDLPerformInteraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB297724F844D30061BF55 /* SDLPerformAppServiceInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB296B24F844D10061BF55 /* SDLPerformAppServiceInteraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB297824F844D30061BF55 /* SDLPublishAppService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB296C24F844D20061BF55 /* SDLPublishAppService.m */; };
+ 4ABB297924F844D30061BF55 /* SDLPerformAudioPassThru.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB296D24F844D20061BF55 /* SDLPerformAudioPassThru.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB297A24F844D30061BF55 /* SDLReadDID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB296E24F844D20061BF55 /* SDLReadDID.m */; };
+ 4ABB297B24F844D30061BF55 /* SDLPerformAudioPassThru.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB296F24F844D20061BF55 /* SDLPerformAudioPassThru.m */; };
+ 4ABB297C24F844D30061BF55 /* SDLPutFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB297024F844D20061BF55 /* SDLPutFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB297D24F844D30061BF55 /* SDLPutFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB297124F844D30061BF55 /* SDLPutFile.m */; };
+ 4ABB298E24F845440061BF55 /* SDLReleaseInteriorVehicleDataModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB297E24F845410061BF55 /* SDLReleaseInteriorVehicleDataModule.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB298F24F845440061BF55 /* SDLSendHapticData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB297F24F845410061BF55 /* SDLSendHapticData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB299024F845440061BF55 /* SDLRegisterAppInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298024F845410061BF55 /* SDLRegisterAppInterface.m */; };
+ 4ABB299124F845440061BF55 /* SDLSendLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB298124F845420061BF55 /* SDLSendLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB299224F845440061BF55 /* SDLScrollableMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298224F845420061BF55 /* SDLScrollableMessage.m */; };
+ 4ABB299324F845440061BF55 /* SDLSetAppIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB298324F845420061BF55 /* SDLSetAppIcon.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB299424F845440061BF55 /* SDLSendLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298424F845420061BF55 /* SDLSendLocation.m */; };
+ 4ABB299524F845440061BF55 /* SDLResetGlobalProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298524F845420061BF55 /* SDLResetGlobalProperties.m */; };
+ 4ABB299624F845440061BF55 /* SDLRegisterAppInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB298624F845430061BF55 /* SDLRegisterAppInterface.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB299724F845440061BF55 /* SDLResetGlobalProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB298724F845430061BF55 /* SDLResetGlobalProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB299824F845440061BF55 /* SDLReleaseInteriorVehicleDataModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298824F845430061BF55 /* SDLReleaseInteriorVehicleDataModule.m */; };
+ 4ABB299924F845440061BF55 /* SDLSetAppIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298924F845430061BF55 /* SDLSetAppIcon.m */; };
+ 4ABB299A24F845440061BF55 /* SDLSendHapticData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298A24F845430061BF55 /* SDLSendHapticData.m */; };
+ 4ABB299B24F845440061BF55 /* SDLSetCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB298B24F845440061BF55 /* SDLSetCloudAppProperties.m */; };
+ 4ABB299C24F845440061BF55 /* SDLSetCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB298C24F845440061BF55 /* SDLSetCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB299D24F845440061BF55 /* SDLScrollableMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB298D24F845440061BF55 /* SDLScrollableMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29B024F845DB0061BF55 /* SDLSetInteriorVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB299E24F845D70061BF55 /* SDLSetInteriorVehicleData.m */; };
+ 4ABB29B124F845DB0061BF55 /* SDLSetDisplayLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB299F24F845D70061BF55 /* SDLSetDisplayLayout.m */; };
+ 4ABB29B224F845DB0061BF55 /* SDLSetDisplayLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29A024F845D70061BF55 /* SDLSetDisplayLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29B324F845DB0061BF55 /* SDLShow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29A124F845D70061BF55 /* SDLShow.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29B424F845DB0061BF55 /* SDLSpeak.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29A224F845D80061BF55 /* SDLSpeak.m */; };
+ 4ABB29B524F845DB0061BF55 /* SDLShowConstantTBT.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29A324F845D80061BF55 /* SDLShowConstantTBT.m */; };
+ 4ABB29B624F845DB0061BF55 /* SDLSetInteriorVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29A424F845D80061BF55 /* SDLSetInteriorVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29B724F845DB0061BF55 /* SDLSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29A524F845D80061BF55 /* SDLSlider.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29B824F845DB0061BF55 /* SDLSetMediaClockTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29A624F845D90061BF55 /* SDLSetMediaClockTimer.m */; };
+ 4ABB29B924F845DB0061BF55 /* SDLShowAppMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29A724F845D90061BF55 /* SDLShowAppMenu.m */; };
+ 4ABB29BA24F845DB0061BF55 /* SDLSpeak.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29A824F845D90061BF55 /* SDLSpeak.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29BB24F845DB0061BF55 /* SDLSetGlobalProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29A924F845D90061BF55 /* SDLSetGlobalProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29BC24F845DB0061BF55 /* SDLShowAppMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29AA24F845D90061BF55 /* SDLShowAppMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29BD24F845DB0061BF55 /* SDLSetGlobalProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29AB24F845DA0061BF55 /* SDLSetGlobalProperties.m */; };
+ 4ABB29BE24F845DB0061BF55 /* SDLSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29AC24F845DA0061BF55 /* SDLSlider.m */; };
+ 4ABB29BF24F845DB0061BF55 /* SDLSetMediaClockTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29AD24F845DA0061BF55 /* SDLSetMediaClockTimer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29C024F845DB0061BF55 /* SDLShowConstantTBT.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29AE24F845DA0061BF55 /* SDLShowConstantTBT.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29C124F845DB0061BF55 /* SDLShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29AF24F845DA0061BF55 /* SDLShow.m */; };
+ 4ABB29D224F846880061BF55 /* SDLSubscribeVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29C224F846850061BF55 /* SDLSubscribeVehicleData.m */; };
+ 4ABB29D324F846880061BF55 /* SDLSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29C324F846850061BF55 /* SDLSyncPData.m */; };
+ 4ABB29D424F846880061BF55 /* SDLSubtleAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29C424F846850061BF55 /* SDLSubtleAlert.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29D524F846880061BF55 /* SDLSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29C524F846850061BF55 /* SDLSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29D624F846880061BF55 /* SDLSubtleAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29C624F846850061BF55 /* SDLSubtleAlert.m */; };
+ 4ABB29D724F846880061BF55 /* SDLSubscribeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29C724F846860061BF55 /* SDLSubscribeButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29D824F846880061BF55 /* SDLSystemRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29C824F846860061BF55 /* SDLSystemRequest.m */; };
+ 4ABB29D924F846880061BF55 /* SDLSubscribeWayPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29C924F846860061BF55 /* SDLSubscribeWayPoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29DA24F846880061BF55 /* SDLSubscribeVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29CA24F846860061BF55 /* SDLSubscribeVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29DB24F846880061BF55 /* SDLUnregisterAppInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29CB24F846860061BF55 /* SDLUnregisterAppInterface.m */; };
+ 4ABB29DC24F846880061BF55 /* SDLUnregisterAppInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29CC24F846870061BF55 /* SDLUnregisterAppInterface.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29DD24F846880061BF55 /* SDLSubscribeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29CD24F846870061BF55 /* SDLSubscribeButton.m */; };
+ 4ABB29DE24F846880061BF55 /* SDLUnpublishAppService.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29CE24F846870061BF55 /* SDLUnpublishAppService.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29DF24F846880061BF55 /* SDLSystemRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29CF24F846870061BF55 /* SDLSystemRequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29E024F846880061BF55 /* SDLSubscribeWayPoints.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29D024F846880061BF55 /* SDLSubscribeWayPoints.m */; };
+ 4ABB29E124F846880061BF55 /* SDLUnpublishAppService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29D124F846880061BF55 /* SDLUnpublishAppService.m */; };
+ 4ABB29EA24F847360061BF55 /* SDLUnsubscribeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29E224F847340061BF55 /* SDLUnsubscribeButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29EB24F847360061BF55 /* SDLUnsubscribeWayPoints.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29E324F847340061BF55 /* SDLUnsubscribeWayPoints.m */; };
+ 4ABB29EC24F847360061BF55 /* SDLUnsubscribeVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29E424F847350061BF55 /* SDLUnsubscribeVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29ED24F847360061BF55 /* SDLUnsubscribeVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29E524F847350061BF55 /* SDLUnsubscribeVehicleData.m */; };
+ 4ABB29EE24F847360061BF55 /* SDLUnsubscribeWayPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29E624F847350061BF55 /* SDLUnsubscribeWayPoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29EF24F847360061BF55 /* SDLUnsubscribeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29E724F847350061BF55 /* SDLUnsubscribeButton.m */; };
+ 4ABB29F024F847360061BF55 /* SDLUpdateTurnList.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29E824F847350061BF55 /* SDLUpdateTurnList.m */; };
+ 4ABB29F124F847360061BF55 /* SDLUpdateTurnList.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29E924F847360061BF55 /* SDLUpdateTurnList.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29FA24F8477F0061BF55 /* SDLAddSubMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29F224F8477E0061BF55 /* SDLAddSubMenuResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29FB24F8477F0061BF55 /* SDLAlertManeuverResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29F324F8477E0061BF55 /* SDLAlertManeuverResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29FC24F8477F0061BF55 /* SDLAlertResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29F424F8477E0061BF55 /* SDLAlertResponse.m */; };
+ 4ABB29FD24F8477F0061BF55 /* SDLAlertResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29F524F8477E0061BF55 /* SDLAlertResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB29FE24F8477F0061BF55 /* SDLAddCommandResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29F624F8477E0061BF55 /* SDLAddCommandResponse.m */; };
+ 4ABB29FF24F8477F0061BF55 /* SDLAddSubMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29F724F8477E0061BF55 /* SDLAddSubMenuResponse.m */; };
+ 4ABB2A0024F8477F0061BF55 /* SDLAddCommandResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB29F824F8477E0061BF55 /* SDLAddCommandResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A0124F8477F0061BF55 /* SDLAlertManeuverResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB29F924F8477F0061BF55 /* SDLAlertManeuverResponse.m */; };
+ 4ABB2A2024F847980061BF55 /* SDLButtonPressResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A0224F847940061BF55 /* SDLButtonPressResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A2124F847980061BF55 /* SDLButtonPressResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0324F847940061BF55 /* SDLButtonPressResponse.m */; };
+ 4ABB2A2224F847980061BF55 /* SDLChangeRegistrationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0424F847940061BF55 /* SDLChangeRegistrationResponse.m */; };
+ 4ABB2A2324F847980061BF55 /* SDLCreateInteractionChoiceSetResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0524F847940061BF55 /* SDLCreateInteractionChoiceSetResponse.m */; };
+ 4ABB2A2424F847980061BF55 /* SDLDeleteInteractionChoiceSetResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0624F847950061BF55 /* SDLDeleteInteractionChoiceSetResponse.m */; };
+ 4ABB2A2524F847980061BF55 /* SDLDeleteWindowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0724F847950061BF55 /* SDLDeleteWindowResponse.m */; };
+ 4ABB2A2624F847980061BF55 /* SDLEndAudioPassThruResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0824F847950061BF55 /* SDLEndAudioPassThruResponse.m */; };
+ 4ABB2A2724F847980061BF55 /* SDLCloseApplicationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0924F847950061BF55 /* SDLCloseApplicationResponse.m */; };
+ 4ABB2A2824F847980061BF55 /* SDLDeleteCommandResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0A24F847950061BF55 /* SDLDeleteCommandResponse.m */; };
+ 4ABB2A2924F847980061BF55 /* SDLDeleteFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0B24F847950061BF55 /* SDLDeleteFileResponse.m */; };
+ 4ABB2A2A24F847980061BF55 /* SDLDeleteSubMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A0C24F847950061BF55 /* SDLDeleteSubMenuResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A2B24F847980061BF55 /* SDLCloseApplicationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A0D24F847950061BF55 /* SDLCloseApplicationResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A2C24F847980061BF55 /* SDLChangeRegistrationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A0E24F847960061BF55 /* SDLChangeRegistrationResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A2D24F847980061BF55 /* SDLEncodedSyncPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A0F24F847960061BF55 /* SDLEncodedSyncPDataResponse.m */; };
+ 4ABB2A2E24F847980061BF55 /* SDLDeleteCommandResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1024F847960061BF55 /* SDLDeleteCommandResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A2F24F847980061BF55 /* SDLCreateWindowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A1124F847960061BF55 /* SDLCreateWindowResponse.m */; };
+ 4ABB2A3024F847980061BF55 /* SDLDiagnosticMessageResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1224F847960061BF55 /* SDLDiagnosticMessageResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3124F847980061BF55 /* SDLDeleteFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1324F847960061BF55 /* SDLDeleteFileResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3224F847980061BF55 /* SDLCancelInteractionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A1424F847960061BF55 /* SDLCancelInteractionResponse.m */; };
+ 4ABB2A3324F847980061BF55 /* SDLCreateWindowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1524F847970061BF55 /* SDLCreateWindowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3424F847980061BF55 /* SDLCancelInteractionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1624F847970061BF55 /* SDLCancelInteractionResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3524F847980061BF55 /* SDLDeleteSubMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A1724F847970061BF55 /* SDLDeleteSubMenuResponse.m */; };
+ 4ABB2A3624F847980061BF55 /* SDLDialNumberResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1824F847970061BF55 /* SDLDialNumberResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3724F847980061BF55 /* SDLDialNumberResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A1924F847970061BF55 /* SDLDialNumberResponse.m */; };
+ 4ABB2A3824F847980061BF55 /* SDLDeleteWindowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1A24F847970061BF55 /* SDLDeleteWindowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3924F847980061BF55 /* SDLDiagnosticMessageResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A1B24F847970061BF55 /* SDLDiagnosticMessageResponse.m */; };
+ 4ABB2A3A24F847980061BF55 /* SDLEndAudioPassThruResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1C24F847970061BF55 /* SDLEndAudioPassThruResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3B24F847980061BF55 /* SDLDeleteInteractionChoiceSetResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1D24F847980061BF55 /* SDLDeleteInteractionChoiceSetResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3C24F847980061BF55 /* SDLCreateInteractionChoiceSetResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1E24F847980061BF55 /* SDLCreateInteractionChoiceSetResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A3D24F847980061BF55 /* SDLEncodedSyncPDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A1F24F847980061BF55 /* SDLEncodedSyncPDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5024F847B10061BF55 /* SDLGetInteriorVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A3E24F847AE0061BF55 /* SDLGetInteriorVehicleDataResponse.m */; };
+ 4ABB2A5124F847B10061BF55 /* SDLGetVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A3F24F847AE0061BF55 /* SDLGetVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5224F847B10061BF55 /* SDLGetFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4024F847AE0061BF55 /* SDLGetFileResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5324F847B10061BF55 /* SDLGetVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4124F847AE0061BF55 /* SDLGetVehicleDataResponse.m */; };
+ 4ABB2A5424F847B10061BF55 /* SDLGetSystemCapabilityResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4224F847AF0061BF55 /* SDLGetSystemCapabilityResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5524F847B10061BF55 /* SDLGetInteriorVehicleDataConsentResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4324F847AF0061BF55 /* SDLGetInteriorVehicleDataConsentResponse.m */; };
+ 4ABB2A5624F847B10061BF55 /* SDLGetWayPointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4424F847AF0061BF55 /* SDLGetWayPointsResponse.m */; };
+ 4ABB2A5724F847B10061BF55 /* SDLGetFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4524F847AF0061BF55 /* SDLGetFileResponse.m */; };
+ 4ABB2A5824F847B10061BF55 /* SDLGetInteriorVehicleDataConsentResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4624F847AF0061BF55 /* SDLGetInteriorVehicleDataConsentResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5924F847B10061BF55 /* SDLGetCloudAppPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4724F847AF0061BF55 /* SDLGetCloudAppPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5A24F847B10061BF55 /* SDLGetDTCsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4824F847AF0061BF55 /* SDLGetDTCsResponse.m */; };
+ 4ABB2A5B24F847B10061BF55 /* SDLGetCloudAppPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4924F847B00061BF55 /* SDLGetCloudAppPropertiesResponse.m */; };
+ 4ABB2A5C24F847B10061BF55 /* SDLGetWayPointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4A24F847B00061BF55 /* SDLGetWayPointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5D24F847B10061BF55 /* SDLGetAppServiceDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4B24F847B00061BF55 /* SDLGetAppServiceDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5E24F847B10061BF55 /* SDLGetDTCsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4C24F847B00061BF55 /* SDLGetDTCsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A5F24F847B10061BF55 /* SDLGetAppServiceDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4D24F847B00061BF55 /* SDLGetAppServiceDataResponse.m */; };
+ 4ABB2A6024F847B10061BF55 /* SDLGetInteriorVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A4E24F847B00061BF55 /* SDLGetInteriorVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A6124F847B10061BF55 /* SDLGetSystemCapabilityResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A4F24F847B10061BF55 /* SDLGetSystemCapabilityResponse.m */; };
+ 4ABB2A6424F847BB0061BF55 /* SDLListFilesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A6224F847BA0061BF55 /* SDLListFilesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A6524F847BB0061BF55 /* SDLListFilesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A6324F847BB0061BF55 /* SDLListFilesResponse.m */; };
+ 4ABB2A7024F847D40061BF55 /* SDLPerformAudioPassThruResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A6624F847D20061BF55 /* SDLPerformAudioPassThruResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A7124F847D40061BF55 /* SDLPublishAppServiceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A6724F847D20061BF55 /* SDLPublishAppServiceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A7224F847D40061BF55 /* SDLPutFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A6824F847D20061BF55 /* SDLPutFileResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A7324F847D40061BF55 /* SDLPutFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A6924F847D30061BF55 /* SDLPutFileResponse.m */; };
+ 4ABB2A7424F847D40061BF55 /* SDLPerformAudioPassThruResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A6A24F847D30061BF55 /* SDLPerformAudioPassThruResponse.m */; };
+ 4ABB2A7524F847D40061BF55 /* SDLPublishAppServiceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A6B24F847D30061BF55 /* SDLPublishAppServiceResponse.m */; };
+ 4ABB2A7624F847D40061BF55 /* SDLPerformAppServiceInteractionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A6C24F847D30061BF55 /* SDLPerformAppServiceInteractionResponse.m */; };
+ 4ABB2A7724F847D40061BF55 /* SDLPerformInteractionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A6D24F847D30061BF55 /* SDLPerformInteractionResponse.m */; };
+ 4ABB2A7824F847D40061BF55 /* SDLPerformAppServiceInteractionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A6E24F847D30061BF55 /* SDLPerformAppServiceInteractionResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A7924F847D40061BF55 /* SDLPerformInteractionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A6F24F847D30061BF55 /* SDLPerformInteractionResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A8224F847DF0061BF55 /* SDLRegisterAppInterfaceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A7A24F847DE0061BF55 /* SDLRegisterAppInterfaceResponse.m */; };
+ 4ABB2A8324F847DF0061BF55 /* SDLResetGlobalPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A7B24F847DE0061BF55 /* SDLResetGlobalPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A8424F847DF0061BF55 /* SDLResetGlobalPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A7C24F847DE0061BF55 /* SDLResetGlobalPropertiesResponse.m */; };
+ 4ABB2A8524F847DF0061BF55 /* SDLRegisterAppInterfaceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A7D24F847DE0061BF55 /* SDLRegisterAppInterfaceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A8624F847DF0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A7E24F847DE0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.m */; };
+ 4ABB2A8724F847DF0061BF55 /* SDLReadDIDResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A7F24F847DE0061BF55 /* SDLReadDIDResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A8824F847DF0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A8024F847DF0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2A8924F847DF0061BF55 /* SDLReadDIDResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A8124F847DF0061BF55 /* SDLReadDIDResponse.m */; };
+ 4ABB2AA224F847F40061BF55 /* SDLSetCloudAppPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A8A24F847F10061BF55 /* SDLSetCloudAppPropertiesResponse.m */; };
+ 4ABB2AA324F847F40061BF55 /* SDLShowConstantTBTResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A8B24F847F10061BF55 /* SDLShowConstantTBTResponse.m */; };
+ 4ABB2AA424F847F40061BF55 /* SDLShowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A8C24F847F10061BF55 /* SDLShowResponse.m */; };
+ 4ABB2AA524F847F40061BF55 /* SDLSendHapticDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A8D24F847F10061BF55 /* SDLSendHapticDataResponse.m */; };
+ 4ABB2AA624F847F40061BF55 /* SDLSetInteriorVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A8E24F847F10061BF55 /* SDLSetInteriorVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AA724F847F40061BF55 /* SDLShowConstantTBTResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A8F24F847F10061BF55 /* SDLShowConstantTBTResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AA824F847F40061BF55 /* SDLSetDisplayLayoutResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A9024F847F20061BF55 /* SDLSetDisplayLayoutResponse.m */; };
+ 4ABB2AA924F847F40061BF55 /* SDLSetAppIconResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A9124F847F20061BF55 /* SDLSetAppIconResponse.m */; };
+ 4ABB2AAA24F847F40061BF55 /* SDLShowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9224F847F20061BF55 /* SDLShowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AAB24F847F40061BF55 /* SDLSetMediaClockTimerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A9324F847F20061BF55 /* SDLSetMediaClockTimerResponse.m */; };
+ 4ABB2AAC24F847F40061BF55 /* SDLSetAppIconResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9424F847F20061BF55 /* SDLSetAppIconResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AAD24F847F40061BF55 /* SDLScrollableMessageResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9524F847F20061BF55 /* SDLScrollableMessageResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AAE24F847F40061BF55 /* SDLSendLocationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9624F847F20061BF55 /* SDLSendLocationResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AAF24F847F40061BF55 /* SDLScrollableMessageResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A9724F847F30061BF55 /* SDLScrollableMessageResponse.m */; };
+ 4ABB2AB024F847F40061BF55 /* SDLSetCloudAppPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9824F847F30061BF55 /* SDLSetCloudAppPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AB124F847F40061BF55 /* SDLSetDisplayLayoutResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9924F847F30061BF55 /* SDLSetDisplayLayoutResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AB224F847F40061BF55 /* SDLSendLocationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A9A24F847F30061BF55 /* SDLSendLocationResponse.m */; };
+ 4ABB2AB324F847F40061BF55 /* SDLSetGlobalPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9B24F847F30061BF55 /* SDLSetGlobalPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AB424F847F40061BF55 /* SDLSetMediaClockTimerResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9C24F847F30061BF55 /* SDLSetMediaClockTimerResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AB524F847F40061BF55 /* SDLShowAppMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2A9D24F847F30061BF55 /* SDLShowAppMenuResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AB624F847F40061BF55 /* SDLShowAppMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A9E24F847F40061BF55 /* SDLShowAppMenuResponse.m */; };
+ 4ABB2AB724F847F40061BF55 /* SDLSetGlobalPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2A9F24F847F40061BF55 /* SDLSetGlobalPropertiesResponse.m */; };
+ 4ABB2AB824F847F40061BF55 /* SDLSendHapticDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AA024F847F40061BF55 /* SDLSendHapticDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AB924F847F40061BF55 /* SDLSetInteriorVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AA124F847F40061BF55 /* SDLSetInteriorVehicleDataResponse.m */; };
+ 4ABB2ABC24F847FC0061BF55 /* SDLSliderResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2ABA24F847FC0061BF55 /* SDLSliderResponse.m */; };
+ 4ABB2ABD24F847FC0061BF55 /* SDLSliderResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2ABB24F847FC0061BF55 /* SDLSliderResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AC024F848050061BF55 /* SDLSpeakResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2ABE24F848040061BF55 /* SDLSpeakResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AC124F848050061BF55 /* SDLSpeakResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2ABF24F848050061BF55 /* SDLSpeakResponse.m */; };
+ 4ABB2ACC24F848130061BF55 /* SDLSyncPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AC224F848110061BF55 /* SDLSyncPDataResponse.m */; };
+ 4ABB2ACD24F848130061BF55 /* SDLSyncPDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AC324F848110061BF55 /* SDLSyncPDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2ACE24F848130061BF55 /* SDLSubscribeButtonResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AC424F848120061BF55 /* SDLSubscribeButtonResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2ACF24F848130061BF55 /* SDLSubtleAlertResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AC524F848120061BF55 /* SDLSubtleAlertResponse.m */; };
+ 4ABB2AD024F848130061BF55 /* SDLSubscribeVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AC624F848120061BF55 /* SDLSubscribeVehicleDataResponse.m */; };
+ 4ABB2AD124F848130061BF55 /* SDLSubscribeWayPointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AC724F848120061BF55 /* SDLSubscribeWayPointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AD224F848130061BF55 /* SDLSubscribeWayPointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AC824F848120061BF55 /* SDLSubscribeWayPointsResponse.m */; };
+ 4ABB2AD324F848130061BF55 /* SDLSubtleAlertResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AC924F848120061BF55 /* SDLSubtleAlertResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AD424F848130061BF55 /* SDLSubscribeButtonResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2ACA24F848120061BF55 /* SDLSubscribeButtonResponse.m */; };
+ 4ABB2AD524F848130061BF55 /* SDLSubscribeVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2ACB24F848120061BF55 /* SDLSubscribeVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AD824F8481D0061BF55 /* SDLSystemRequestResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AD624F8481D0061BF55 /* SDLSystemRequestResponse.m */; };
+ 4ABB2AD924F8481D0061BF55 /* SDLSystemRequestResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AD724F8481D0061BF55 /* SDLSystemRequestResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AE624F848270061BF55 /* SDLUnsubscribeVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2ADA24F848250061BF55 /* SDLUnsubscribeVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AE724F848270061BF55 /* SDLUnsubscribeWayPointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2ADB24F848250061BF55 /* SDLUnsubscribeWayPointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AE824F848270061BF55 /* SDLUnpublishAppServiceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2ADC24F848250061BF55 /* SDLUnpublishAppServiceResponse.m */; };
+ 4ABB2AE924F848270061BF55 /* SDLUnsubscribeWayPointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2ADD24F848250061BF55 /* SDLUnsubscribeWayPointsResponse.m */; };
+ 4ABB2AEA24F848270061BF55 /* SDLUpdateTurnListResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2ADE24F848260061BF55 /* SDLUpdateTurnListResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AEB24F848270061BF55 /* SDLUpdateTurnListResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2ADF24F848260061BF55 /* SDLUpdateTurnListResponse.m */; };
+ 4ABB2AEC24F848270061BF55 /* SDLUnpublishAppServiceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AE024F848260061BF55 /* SDLUnpublishAppServiceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AED24F848270061BF55 /* SDLUnsubscribeVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AE124F848260061BF55 /* SDLUnsubscribeVehicleDataResponse.m */; };
+ 4ABB2AEE24F848270061BF55 /* SDLUnregisterAppInterfaceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AE224F848260061BF55 /* SDLUnregisterAppInterfaceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AEF24F848270061BF55 /* SDLUnsubscribeButtonResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AE324F848260061BF55 /* SDLUnsubscribeButtonResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AF024F848270061BF55 /* SDLUnsubscribeButtonResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AE424F848260061BF55 /* SDLUnsubscribeButtonResponse.m */; };
+ 4ABB2AF124F848270061BF55 /* SDLUnregisterAppInterfaceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AE524F848270061BF55 /* SDLUnregisterAppInterfaceResponse.m */; };
+ 4ABB2AF424F849CF0061BF55 /* SDLGenericResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AF224F849CE0061BF55 /* SDLGenericResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2AF524F849CF0061BF55 /* SDLGenericResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AF324F849CF0061BF55 /* SDLGenericResponse.m */; };
+ 4ABB2B0A24F84D950061BF55 /* SDLAudioControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AF624F84D930061BF55 /* SDLAudioControlCapabilities.m */; };
+ 4ABB2B0B24F84D950061BF55 /* SDLAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AF724F84D930061BF55 /* SDLAppServiceData.m */; };
+ 4ABB2B0C24F84D950061BF55 /* SDLAppServicesCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AF824F84D930061BF55 /* SDLAppServicesCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B0D24F84D950061BF55 /* SDLAirbagStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AF924F84D930061BF55 /* SDLAirbagStatus.m */; };
+ 4ABB2B0E24F84D950061BF55 /* SDLAppServiceCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AFA24F84D930061BF55 /* SDLAppServiceCapability.m */; };
+ 4ABB2B0F24F84D950061BF55 /* SDLAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2AFB24F84D930061BF55 /* SDLAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1024F84D950061BF55 /* SDLAppServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AFC24F84D940061BF55 /* SDLAppServiceManifest.m */; };
+ 4ABB2B1124F84D950061BF55 /* SDLAudioControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AFD24F84D940061BF55 /* SDLAudioControlData.m */; };
+ 4ABB2B1224F84D950061BF55 /* SDLAudioPassThruCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AFE24F84D940061BF55 /* SDLAudioPassThruCapabilities.m */; };
+ 4ABB2B1324F84D950061BF55 /* SDLAppServiceRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2AFF24F84D940061BF55 /* SDLAppServiceRecord.m */; };
+ 4ABB2B1424F84D950061BF55 /* SDLAudioControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0024F84D940061BF55 /* SDLAudioControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1524F84D950061BF55 /* SDLAirbagStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0124F84D940061BF55 /* SDLAirbagStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1624F84D950061BF55 /* SDLAudioControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0224F84D940061BF55 /* SDLAudioControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1724F84D950061BF55 /* SDLAudioPassThruCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0324F84D940061BF55 /* SDLAudioPassThruCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1824F84D950061BF55 /* SDLAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0424F84D950061BF55 /* SDLAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1924F84D950061BF55 /* SDLAppServiceCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0524F84D950061BF55 /* SDLAppServiceCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1A24F84D950061BF55 /* SDLAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B0624F84D950061BF55 /* SDLAppInfo.m */; };
+ 4ABB2B1B24F84D950061BF55 /* SDLAppServicesCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B0724F84D950061BF55 /* SDLAppServicesCapabilities.m */; };
+ 4ABB2B1C24F84D950061BF55 /* SDLAppServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0824F84D950061BF55 /* SDLAppServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B1D24F84D950061BF55 /* SDLAppServiceRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B0924F84D950061BF55 /* SDLAppServiceRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B3C24F84EF50061BF55 /* SDLClimateControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B1E24F84EEF0061BF55 /* SDLClimateControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B3D24F84EF50061BF55 /* SDLDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B1F24F84EF00061BF55 /* SDLDeviceInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B3E24F84EF50061BF55 /* SDLDeviceStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2024F84EF00061BF55 /* SDLDeviceStatus.m */; };
+ 4ABB2B3F24F84EF50061BF55 /* SDLCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2124F84EF00061BF55 /* SDLCloudAppProperties.m */; };
+ 4ABB2B4024F84EF50061BF55 /* SDLCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B2224F84EF00061BF55 /* SDLCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B4124F84EF50061BF55 /* SDLDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2324F84EF00061BF55 /* SDLDateTime.m */; };
+ 4ABB2B4224F84EF50061BF55 /* SDLBodyInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B2424F84EF10061BF55 /* SDLBodyInformation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B4324F84EF50061BF55 /* SDLDisplayCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2524F84EF10061BF55 /* SDLDisplayCapabilities.m */; };
+ 4ABB2B4424F84EF50061BF55 /* SDLDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2624F84EF10061BF55 /* SDLDeviceInfo.m */; };
+ 4ABB2B4524F84EF50061BF55 /* SDLBodyInformation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2724F84EF10061BF55 /* SDLBodyInformation.m */; };
+ 4ABB2B4624F84EF50061BF55 /* SDLDIDResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B2824F84EF10061BF55 /* SDLDIDResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B4724F84EF50061BF55 /* SDLBeltStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2924F84EF20061BF55 /* SDLBeltStatus.m */; };
+ 4ABB2B4824F84EF50061BF55 /* SDLBeltStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B2A24F84EF20061BF55 /* SDLBeltStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B4924F84EF50061BF55 /* SDLDriverDistractionCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2B24F84EF20061BF55 /* SDLDriverDistractionCapability.m */; };
+ 4ABB2B4A24F84EF50061BF55 /* SDLChoice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B2C24F84EF20061BF55 /* SDLChoice.m */; };
+ 4ABB2B4B24F84EF50061BF55 /* SDLDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B2D24F84EF20061BF55 /* SDLDateTime.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B4C24F84EF50061BF55 /* SDLButtonCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B2E24F84EF20061BF55 /* SDLButtonCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B4D24F84EF50061BF55 /* SDLDisplayCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B2F24F84EF30061BF55 /* SDLDisplayCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B4E24F84EF50061BF55 /* SDLClusterModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B3024F84EF30061BF55 /* SDLClusterModeStatus.m */; };
+ 4ABB2B4F24F84EF50061BF55 /* SDLClimateControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B3124F84EF30061BF55 /* SDLClimateControlData.m */; };
+ 4ABB2B5024F84EF50061BF55 /* SDLClusterModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B3224F84EF30061BF55 /* SDLClusterModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B5124F84EF50061BF55 /* SDLDisplayCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B3324F84EF30061BF55 /* SDLDisplayCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B5224F84EF50061BF55 /* SDLChoice.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B3424F84EF40061BF55 /* SDLChoice.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B5324F84EF50061BF55 /* SDLClimateControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B3524F84EF40061BF55 /* SDLClimateControlCapabilities.m */; };
+ 4ABB2B5424F84EF50061BF55 /* SDLClimateControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B3624F84EF40061BF55 /* SDLClimateControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B5524F84EF50061BF55 /* SDLDriverDistractionCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B3724F84EF40061BF55 /* SDLDriverDistractionCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B5624F84EF50061BF55 /* SDLDisplayCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B3824F84EF40061BF55 /* SDLDisplayCapability.m */; };
+ 4ABB2B5724F84EF50061BF55 /* SDLDIDResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B3924F84EF40061BF55 /* SDLDIDResult.m */; };
+ 4ABB2B5824F84EF50061BF55 /* SDLButtonCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B3A24F84EF50061BF55 /* SDLButtonCapabilities.m */; };
+ 4ABB2B5924F84EF50061BF55 /* SDLDeviceStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B3B24F84EF50061BF55 /* SDLDeviceStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B6624F84FE50061BF55 /* SDLGPSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B5A24F84FE30061BF55 /* SDLGPSData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B6724F84FE50061BF55 /* SDLEmergencyEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B5B24F84FE30061BF55 /* SDLEmergencyEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B6824F84FE50061BF55 /* SDLGearStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B5C24F84FE30061BF55 /* SDLGearStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B6924F84FE50061BF55 /* SDLEqualizerSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B5D24F84FE30061BF55 /* SDLEqualizerSettings.m */; };
+ 4ABB2B6A24F84FE50061BF55 /* SDLEqualizerSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B5E24F84FE30061BF55 /* SDLEqualizerSettings.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B6B24F84FE50061BF55 /* SDLGearStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B5F24F84FE40061BF55 /* SDLGearStatus.m */; };
+ 4ABB2B6C24F84FE50061BF55 /* SDLGPSData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B6024F84FE40061BF55 /* SDLGPSData.m */; };
+ 4ABB2B6D24F84FE50061BF55 /* SDLEmergencyEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B6124F84FE40061BF55 /* SDLEmergencyEvent.m */; };
+ 4ABB2B6E24F84FE50061BF55 /* SDLECallInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B6224F84FE40061BF55 /* SDLECallInfo.m */; };
+ 4ABB2B6F24F84FE50061BF55 /* SDLECallInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B6324F84FE40061BF55 /* SDLECallInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B7024F84FE50061BF55 /* SDLFuelRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B6424F84FE50061BF55 /* SDLFuelRange.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B7124F84FE50061BF55 /* SDLFuelRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B6524F84FE50061BF55 /* SDLFuelRange.m */; };
+ 4ABB2B8024F8504A0061BF55 /* SDLHapticRect.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B7224F850470061BF55 /* SDLHapticRect.m */; };
+ 4ABB2B8124F8504A0061BF55 /* SDLHMIPermissions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B7324F850480061BF55 /* SDLHMIPermissions.m */; };
+ 4ABB2B8224F8504A0061BF55 /* SDLHapticRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B7424F850480061BF55 /* SDLHapticRect.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B8324F8504A0061BF55 /* SDLHMICapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B7524F850480061BF55 /* SDLHMICapabilities.m */; };
+ 4ABB2B8424F8504A0061BF55 /* SDLHMISettingsControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B7624F850480061BF55 /* SDLHMISettingsControlData.m */; };
+ 4ABB2B8524F8504A0061BF55 /* SDLHMICapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B7724F850480061BF55 /* SDLHMICapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B8624F8504A0061BF55 /* SDLHMISettingsControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B7824F850490061BF55 /* SDLHMISettingsControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B8724F8504A0061BF55 /* SDLHeadLampStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B7924F850490061BF55 /* SDLHeadLampStatus.m */; };
+ 4ABB2B8824F8504A0061BF55 /* SDLHMIPermissions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B7A24F850490061BF55 /* SDLHMIPermissions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B8924F8504A0061BF55 /* SDLGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B7B24F850490061BF55 /* SDLGrid.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B8A24F8504A0061BF55 /* SDLHMISettingsControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B7C24F850490061BF55 /* SDLHMISettingsControlCapabilities.m */; };
+ 4ABB2B8B24F8504A0061BF55 /* SDLHeadLampStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B7D24F8504A0061BF55 /* SDLHeadLampStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B8C24F8504A0061BF55 /* SDLGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B7E24F8504A0061BF55 /* SDLGrid.m */; };
+ 4ABB2B8D24F8504A0061BF55 /* SDLHMISettingsControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B7F24F8504A0061BF55 /* SDLHMISettingsControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B9C24F850AE0061BF55 /* SDLLightControlCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B8E24F850AB0061BF55 /* SDLLightControlCapabilities.m */; };
+ 4ABB2B9D24F850AE0061BF55 /* SDLLightControlCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B8F24F850AB0061BF55 /* SDLLightControlCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2B9E24F850AE0061BF55 /* SDLImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B9024F850AB0061BF55 /* SDLImage.m */; };
+ 4ABB2B9F24F850AE0061BF55 /* SDLImageResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B9124F850AC0061BF55 /* SDLImageResolution.m */; };
+ 4ABB2BA024F850AE0061BF55 /* SDLLightCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9224F850AC0061BF55 /* SDLLightCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2BA124F850AE0061BF55 /* SDLLightControlData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9324F850AC0061BF55 /* SDLLightControlData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2BA224F850AE0061BF55 /* SDLLightState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9424F850AC0061BF55 /* SDLLightState.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2BA324F850AE0061BF55 /* SDLImageField.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9524F850AC0061BF55 /* SDLImageField.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2BA424F850AE0061BF55 /* SDLLightCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B9624F850AD0061BF55 /* SDLLightCapabilities.m */; };
+ 4ABB2BA524F850AE0061BF55 /* SDLLightControlData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B9724F850AD0061BF55 /* SDLLightControlData.m */; };
+ 4ABB2BA624F850AE0061BF55 /* SDLImageField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B9824F850AD0061BF55 /* SDLImageField.m */; };
+ 4ABB2BA724F850AE0061BF55 /* SDLImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9924F850AD0061BF55 /* SDLImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4ABB2BA824F850AE0061BF55 /* SDLLightState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B9A24F850AD0061BF55 /* SDLLightState.m */; };
+ 4ABB2BA924F850AE0061BF55 /* SDLImageResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9B24F850AD0061BF55 /* SDLImageResolution.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D0A9F911F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */; };
5D0A9F931F15560B00CC80DD /* SDLNavigationCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */; };
5D0A9F951F15585B00CC80DD /* SDLPhoneCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F941F15585B00CC80DD /* SDLPhoneCapabilitySpec.m */; };
5D0A9F971F1559EC00CC80DD /* SDLSystemCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */; };
5D0A9F9A1F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F991F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m */; };
5D0A9F9C1F1565EB00CC80DD /* SDLGetSystemCapabilityResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F9B1F1565EB00CC80DD /* SDLGetSystemCapabilityResponseSpec.m */; };
- 5D0C29FC20D93D8C008B56CD /* SDLVideoStreamingState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0C29FA20D93D8C008B56CD /* SDLVideoStreamingState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D0C29FD20D93D8C008B56CD /* SDLVideoStreamingState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0C29FB20D93D8C008B56CD /* SDLVideoStreamingState.m */; };
- 5D0C2A0020D9479B008B56CD /* SDLStreamingVideoLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0C29FE20D9479B008B56CD /* SDLStreamingVideoLifecycleManager.h */; };
- 5D0C2A0120D9479B008B56CD /* SDLStreamingVideoLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0C29FF20D9479B008B56CD /* SDLStreamingVideoLifecycleManager.m */; };
- 5D0C2A0420D947AB008B56CD /* SDLStreamingAudioLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0C2A0220D947AB008B56CD /* SDLStreamingAudioLifecycleManager.h */; };
- 5D0C2A0520D947AB008B56CD /* SDLStreamingAudioLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0C2A0320D947AB008B56CD /* SDLStreamingAudioLifecycleManager.m */; };
5D1654561D3E754F00554D93 /* SDLLifecycleManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1654551D3E754F00554D93 /* SDLLifecycleManagerSpec.m */; };
- 5D16545A1D3E7A1600554D93 /* SDLLifecycleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1654581D3E7A1600554D93 /* SDLLifecycleManager.h */; };
- 5D16545B1D3E7A1600554D93 /* SDLLifecycleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1654591D3E7A1600554D93 /* SDLLifecycleManager.m */; };
- 5D1665C41CF8CA2700CC4CA1 /* SDLListFilesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1665C21CF8CA2700CC4CA1 /* SDLListFilesOperation.h */; };
- 5D1665C51CF8CA2700CC4CA1 /* SDLListFilesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1665C31CF8CA2700CC4CA1 /* SDLListFilesOperation.m */; };
- 5D1665C81CF8CA3D00CC4CA1 /* SDLPermissionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1665C61CF8CA3D00CC4CA1 /* SDLPermissionFilter.h */; };
- 5D1665C91CF8CA3D00CC4CA1 /* SDLPermissionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1665C71CF8CA3D00CC4CA1 /* SDLPermissionFilter.m */; };
- 5D1665CB1CF8CA6700CC4CA1 /* NSNumber+NumberType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1665CA1CF8CA6700CC4CA1 /* NSNumber+NumberType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D1665CD1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1665CC1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D1FF28D213044F9000EB9B4 /* AlertManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF28C213044F9000EB9B4 /* AlertManager.m */; };
5D1FF29C21304515000EB9B4 /* PerformInteractionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29121304513000EB9B4 /* PerformInteractionManager.m */; };
5D1FF29D21304515000EB9B4 /* RPCPermissionsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29221304513000EB9B4 /* RPCPermissionsManager.m */; };
@@ -536,54 +1437,16 @@
5D1FF2F3213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F0213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard */; };
5D1FF2F5213047B3000EB9B4 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F4213047B2000EB9B4 /* LaunchScreen.xib */; };
5D1FF2F8213047C1000EB9B4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F7213047C1000EB9B4 /* AppDelegate.swift */; };
- 5D293AFE1FE078A9000CBD7E /* SDLCarWindowViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D293AFC1FE078A9000CBD7E /* SDLCarWindowViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D293AFF1FE078A9000CBD7E /* SDLCarWindowViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D293AFD1FE078A9000CBD7E /* SDLCarWindowViewController.m */; };
- 5D2F58081D0717D5001085CE /* SDLManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D2F58071D0717D5001085CE /* SDLManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D339CEA207C066E000CC364 /* SDLMenuCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D339CE8207C066E000CC364 /* SDLMenuCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D339CEB207C066E000CC364 /* SDLMenuCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D339CE9207C066E000CC364 /* SDLMenuCell.m */; };
- 5D339CEF207C08BA000CC364 /* SDLVoiceCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D339CED207C08BA000CC364 /* SDLVoiceCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D339CF0207C08BA000CC364 /* SDLVoiceCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D339CEE207C08BA000CC364 /* SDLVoiceCommand.m */; };
- 5D339CF3207C0ACE000CC364 /* SDLMenuManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D339CF1207C0ACE000CC364 /* SDLMenuManager.h */; };
- 5D339CF4207C0ACE000CC364 /* SDLMenuManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D339CF2207C0ACE000CC364 /* SDLMenuManager.m */; };
- 5D3E420A20EAAD6500D8C622 /* SDLTPMS.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D3E420820EAAD6500D8C622 /* SDLTPMS.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D3E420B20EAAD6500D8C622 /* SDLTPMS.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D3E420920EAAD6500D8C622 /* SDLTPMS.m */; };
- 5D3E48751D6F3B330000BFEF /* SDLAsynchronousOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D3E48731D6F3B330000BFEF /* SDLAsynchronousOperation.h */; };
- 5D3E48761D6F3B330000BFEF /* SDLAsynchronousOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D3E48741D6F3B330000BFEF /* SDLAsynchronousOperation.m */; };
- 5D3E487B1D6F888E0000BFEF /* SDLRPCResponseNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D3E48791D6F888E0000BFEF /* SDLRPCResponseNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D3E487C1D6F888E0000BFEF /* SDLRPCResponseNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D3E487A1D6F888E0000BFEF /* SDLRPCResponseNotification.m */; };
- 5D3E487F1D6F88A30000BFEF /* SDLRPCNotificationNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D3E487D1D6F88A30000BFEF /* SDLRPCNotificationNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D3E48801D6F88A30000BFEF /* SDLRPCNotificationNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D3E487E1D6F88A30000BFEF /* SDLRPCNotificationNotification.m */; };
- 5D3E48CB1D7722FE0000BFEF /* NSBundle+SDLBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D3E48C91D7722FE0000BFEF /* NSBundle+SDLBundle.h */; };
- 5D3E48CC1D7722FE0000BFEF /* NSBundle+SDLBundle.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D3E48CA1D7722FE0000BFEF /* NSBundle+SDLBundle.m */; };
5D4346471E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4346461E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m */; };
5D43465B1E6F154400B639C6 /* SDLLogConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D43465A1E6F154400B639C6 /* SDLLogConfigurationSpec.m */; };
5D43466B1E6F3B4C00B639C6 /* SDLLogFilterSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D43466A1E6F3B4C00B639C6 /* SDLLogFilterSpec.m */; };
5D43466D1E6F522000B639C6 /* SDLLogModelSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D43466C1E6F522000B639C6 /* SDLLogModelSpec.m */; };
5D43466F1E6F55BD00B639C6 /* SDLLogManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D43466E1E6F55BD00B639C6 /* SDLLogManagerSpec.m */; };
5D4346731E6F617D00B639C6 /* TestLogTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4346721E6F617D00B639C6 /* TestLogTarget.m */; };
- 5D4631041F2120A30092EFDC /* SDLControlFramePayloadType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4631031F2120A30092EFDC /* SDLControlFramePayloadType.h */; };
- 5D4631081F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4631061F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.h */; };
- 5D4631091F21261B0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4631071F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.m */; };
- 5D4631101F2135850092EFDC /* SDLControlFramePayloadConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D46310E1F2135850092EFDC /* SDLControlFramePayloadConstants.h */; };
- 5D4631111F2135850092EFDC /* SDLControlFramePayloadConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D46310F1F2135850092EFDC /* SDLControlFramePayloadConstants.m */; };
- 5D4631141F2136B60092EFDC /* SDLControlFramePayloadNak.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4631121F2136B60092EFDC /* SDLControlFramePayloadNak.h */; };
- 5D4631151F2136B60092EFDC /* SDLControlFramePayloadNak.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4631131F2136B60092EFDC /* SDLControlFramePayloadNak.m */; };
- 5D4D67AC1D2ED37A00468B4A /* SDLNotificationDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4D67AA1D2ED37A00468B4A /* SDLNotificationDispatcher.h */; };
- 5D4D67AD1D2ED37A00468B4A /* SDLNotificationDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4D67AB1D2ED37A00468B4A /* SDLNotificationDispatcher.m */; };
- 5D4D67B01D2FE2F900468B4A /* SDLResponseDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4D67AE1D2FE2F900468B4A /* SDLResponseDispatcher.h */; };
- 5D4D67B11D2FE2F900468B4A /* SDLResponseDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4D67AF1D2FE2F900468B4A /* SDLResponseDispatcher.m */; };
- 5D4D67B41D30161600468B4A /* SDLLockScreenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4D67B21D30161600468B4A /* SDLLockScreenManager.h */; };
- 5D4D67B51D30161600468B4A /* SDLLockScreenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4D67B31D30161600468B4A /* SDLLockScreenManager.m */; };
- 5D535DC51B72473800CF7760 /* SDLGlobals.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D535DC31B72473800CF7760 /* SDLGlobals.h */; };
- 5D535DC61B72473800CF7760 /* SDLGlobals.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D535DC41B72473800CF7760 /* SDLGlobals.m */; };
- 5D53C46D1B7A99B9003526EA /* SDLStreamingMediaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53C46B1B7A99B9003526EA /* SDLStreamingMediaManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D53C46E1B7A99B9003526EA /* SDLStreamingMediaManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D53C46C1B7A99B9003526EA /* SDLStreamingMediaManager.m */; };
5D59DD471B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D59DD461B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m */; };
5D5DBF081D48E39C00D4F914 /* FBSnapshotTestCase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */; };
5D5DBF091D48E3AC00D4F914 /* FBSnapshotTestCase.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
5D5DBF0B1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5DBF0A1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m */; };
- 5D60088A1BE3ED540094A505 /* SDLStateMachine.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D6008881BE3ED540094A505 /* SDLStateMachine.h */; };
- 5D60088B1BE3ED540094A505 /* SDLStateMachine.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6008891BE3ED540094A505 /* SDLStateMachine.m */; };
5D6035D2202CD46200A429C9 /* SDLSpecUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6035D1202CD46200A429C9 /* SDLSpecUtilities.m */; };
5D6035D5202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6035D4202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m */; };
5D6035D8202CF5C900A429C9 /* TestRequestProgressResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6035D7202CF5C900A429C9 /* TestRequestProgressResponse.m */; };
@@ -591,542 +1454,24 @@
5D60DF26202B7A97001EDA01 /* SDLSequentialRPCRequestOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D60DF25202B7A97001EDA01 /* SDLSequentialRPCRequestOperationSpec.m */; };
5D616B451D552F7A00553F6B /* SDLLockScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D616B481D552F7A00553F6B /* SDLLockScreen.storyboard */; };
5D616B461D552F7A00553F6B /* SDLLockScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D616B481D552F7A00553F6B /* SDLLockScreen.storyboard */; };
- 5D616B531D59044400553F6B /* SDLErrorConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D616B511D59044400553F6B /* SDLErrorConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D61FA211A84237100846EE7 /* SmartDeviceLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA201A84237100846EE7 /* SmartDeviceLink.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D61FA331A84237100846EE7 /* SmartDeviceLink.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D61FA1C1A84237100846EE7 /* SmartDeviceLink.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
5D61FA341A84237100846EE7 /* SmartDeviceLink.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5D61FA1C1A84237100846EE7 /* SmartDeviceLink.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 5D61FC2B1A84238C00846EE7 /* SDLTransportType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA3E1A84238A00846EE7 /* SDLTransportType.h */; };
- 5D61FC2D1A84238C00846EE7 /* SDLAddCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA401A84238A00846EE7 /* SDLAddCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC2E1A84238C00846EE7 /* SDLAddCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA411A84238A00846EE7 /* SDLAddCommand.m */; };
- 5D61FC2F1A84238C00846EE7 /* SDLAddCommandResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA421A84238A00846EE7 /* SDLAddCommandResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC301A84238C00846EE7 /* SDLAddCommandResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA431A84238A00846EE7 /* SDLAddCommandResponse.m */; };
- 5D61FC311A84238C00846EE7 /* SDLAddSubMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA441A84238A00846EE7 /* SDLAddSubMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC321A84238C00846EE7 /* SDLAddSubMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA451A84238A00846EE7 /* SDLAddSubMenu.m */; };
- 5D61FC331A84238C00846EE7 /* SDLAddSubMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA461A84238A00846EE7 /* SDLAddSubMenuResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC341A84238C00846EE7 /* SDLAddSubMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA471A84238A00846EE7 /* SDLAddSubMenuResponse.m */; };
- 5D61FC351A84238C00846EE7 /* SDLAirbagStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA481A84238A00846EE7 /* SDLAirbagStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC361A84238C00846EE7 /* SDLAirbagStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA491A84238A00846EE7 /* SDLAirbagStatus.m */; };
- 5D61FC371A84238C00846EE7 /* SDLAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA4A1A84238A00846EE7 /* SDLAlert.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC381A84238C00846EE7 /* SDLAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA4B1A84238A00846EE7 /* SDLAlert.m */; };
- 5D61FC391A84238C00846EE7 /* SDLAlertManeuver.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA4C1A84238A00846EE7 /* SDLAlertManeuver.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC3A1A84238C00846EE7 /* SDLAlertManeuver.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA4D1A84238A00846EE7 /* SDLAlertManeuver.m */; };
- 5D61FC3B1A84238C00846EE7 /* SDLAlertManeuverResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA4E1A84238A00846EE7 /* SDLAlertManeuverResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC3C1A84238C00846EE7 /* SDLAlertManeuverResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA4F1A84238A00846EE7 /* SDLAlertManeuverResponse.m */; };
- 5D61FC3D1A84238C00846EE7 /* SDLAlertResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA501A84238A00846EE7 /* SDLAlertResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC3E1A84238C00846EE7 /* SDLAlertResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA511A84238A00846EE7 /* SDLAlertResponse.m */; };
- 5D61FC3F1A84238C00846EE7 /* SDLAmbientLightStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA521A84238A00846EE7 /* SDLAmbientLightStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC401A84238C00846EE7 /* SDLAmbientLightStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA531A84238A00846EE7 /* SDLAmbientLightStatus.m */; };
- 5D61FC411A84238C00846EE7 /* SDLAppHMIType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA541A84238A00846EE7 /* SDLAppHMIType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC421A84238C00846EE7 /* SDLAppHMIType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA551A84238A00846EE7 /* SDLAppHMIType.m */; };
- 5D61FC431A84238C00846EE7 /* SDLAppInterfaceUnregisteredReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA561A84238A00846EE7 /* SDLAppInterfaceUnregisteredReason.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC441A84238C00846EE7 /* SDLAppInterfaceUnregisteredReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA571A84238A00846EE7 /* SDLAppInterfaceUnregisteredReason.m */; };
- 5D61FC451A84238C00846EE7 /* SDLAudioPassThruCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA581A84238A00846EE7 /* SDLAudioPassThruCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC461A84238C00846EE7 /* SDLAudioPassThruCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA591A84238A00846EE7 /* SDLAudioPassThruCapabilities.m */; };
- 5D61FC471A84238C00846EE7 /* SDLAudioStreamingState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA5A1A84238A00846EE7 /* SDLAudioStreamingState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC481A84238C00846EE7 /* SDLAudioStreamingState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA5B1A84238A00846EE7 /* SDLAudioStreamingState.m */; };
- 5D61FC491A84238C00846EE7 /* SDLAudioType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA5C1A84238A00846EE7 /* SDLAudioType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC4A1A84238C00846EE7 /* SDLAudioType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA5D1A84238A00846EE7 /* SDLAudioType.m */; };
- 5D61FC4B1A84238C00846EE7 /* SDLBeltStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA5E1A84238A00846EE7 /* SDLBeltStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC4C1A84238C00846EE7 /* SDLBeltStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA5F1A84238A00846EE7 /* SDLBeltStatus.m */; };
- 5D61FC4D1A84238C00846EE7 /* SDLBitsPerSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA601A84238A00846EE7 /* SDLBitsPerSample.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC4E1A84238C00846EE7 /* SDLBitsPerSample.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA611A84238A00846EE7 /* SDLBitsPerSample.m */; };
- 5D61FC4F1A84238C00846EE7 /* SDLBodyInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA621A84238A00846EE7 /* SDLBodyInformation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC501A84238C00846EE7 /* SDLBodyInformation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA631A84238A00846EE7 /* SDLBodyInformation.m */; };
- 5D61FC511A84238C00846EE7 /* SDLButtonCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA641A84238A00846EE7 /* SDLButtonCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC521A84238C00846EE7 /* SDLButtonCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA651A84238A00846EE7 /* SDLButtonCapabilities.m */; };
- 5D61FC531A84238C00846EE7 /* SDLButtonEventMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA661A84238A00846EE7 /* SDLButtonEventMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC541A84238C00846EE7 /* SDLButtonEventMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA671A84238A00846EE7 /* SDLButtonEventMode.m */; };
- 5D61FC551A84238C00846EE7 /* SDLButtonName.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA681A84238A00846EE7 /* SDLButtonName.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC561A84238C00846EE7 /* SDLButtonName.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA691A84238A00846EE7 /* SDLButtonName.m */; };
- 5D61FC571A84238C00846EE7 /* SDLButtonPressMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA6A1A84238A00846EE7 /* SDLButtonPressMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC581A84238C00846EE7 /* SDLButtonPressMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA6B1A84238A00846EE7 /* SDLButtonPressMode.m */; };
- 5D61FC591A84238C00846EE7 /* SDLCarModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA6C1A84238A00846EE7 /* SDLCarModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC5A1A84238C00846EE7 /* SDLCarModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA6D1A84238A00846EE7 /* SDLCarModeStatus.m */; };
- 5D61FC5B1A84238C00846EE7 /* SDLChangeRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA6E1A84238A00846EE7 /* SDLChangeRegistration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC5C1A84238C00846EE7 /* SDLChangeRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA6F1A84238A00846EE7 /* SDLChangeRegistration.m */; };
- 5D61FC5D1A84238C00846EE7 /* SDLChangeRegistrationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA701A84238A00846EE7 /* SDLChangeRegistrationResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC5E1A84238C00846EE7 /* SDLChangeRegistrationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA711A84238A00846EE7 /* SDLChangeRegistrationResponse.m */; };
- 5D61FC5F1A84238C00846EE7 /* SDLCharacterSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA721A84238A00846EE7 /* SDLCharacterSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC601A84238C00846EE7 /* SDLCharacterSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA731A84238A00846EE7 /* SDLCharacterSet.m */; };
- 5D61FC611A84238C00846EE7 /* SDLChoice.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA741A84238A00846EE7 /* SDLChoice.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC621A84238C00846EE7 /* SDLChoice.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA751A84238A00846EE7 /* SDLChoice.m */; };
- 5D61FC631A84238C00846EE7 /* SDLClusterModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA761A84238A00846EE7 /* SDLClusterModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC641A84238C00846EE7 /* SDLClusterModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA771A84238A00846EE7 /* SDLClusterModeStatus.m */; };
- 5D61FC651A84238C00846EE7 /* SDLCompassDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA781A84238A00846EE7 /* SDLCompassDirection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC661A84238C00846EE7 /* SDLCompassDirection.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA791A84238A00846EE7 /* SDLCompassDirection.m */; };
- 5D61FC671A84238C00846EE7 /* SDLComponentVolumeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA7A1A84238A00846EE7 /* SDLComponentVolumeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC681A84238C00846EE7 /* SDLComponentVolumeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA7B1A84238A00846EE7 /* SDLComponentVolumeStatus.m */; };
- 5D61FC6B1A84238C00846EE7 /* SDLCreateInteractionChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA7E1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC6C1A84238C00846EE7 /* SDLCreateInteractionChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA7F1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.m */; };
- 5D61FC6D1A84238C00846EE7 /* SDLCreateInteractionChoiceSetResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA801A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC6E1A84238C00846EE7 /* SDLCreateInteractionChoiceSetResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA811A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.m */; };
- 5D61FC721A84238C00846EE7 /* SDLDeleteCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA851A84238A00846EE7 /* SDLDeleteCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC731A84238C00846EE7 /* SDLDeleteCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA861A84238A00846EE7 /* SDLDeleteCommand.m */; };
- 5D61FC741A84238C00846EE7 /* SDLDeleteCommandResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA871A84238A00846EE7 /* SDLDeleteCommandResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC751A84238C00846EE7 /* SDLDeleteCommandResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA881A84238A00846EE7 /* SDLDeleteCommandResponse.m */; };
- 5D61FC761A84238C00846EE7 /* SDLDeleteFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA891A84238A00846EE7 /* SDLDeleteFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC771A84238C00846EE7 /* SDLDeleteFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA8A1A84238A00846EE7 /* SDLDeleteFile.m */; };
- 5D61FC781A84238C00846EE7 /* SDLDeleteFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA8B1A84238A00846EE7 /* SDLDeleteFileResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC791A84238C00846EE7 /* SDLDeleteFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA8C1A84238A00846EE7 /* SDLDeleteFileResponse.m */; };
- 5D61FC7A1A84238C00846EE7 /* SDLDeleteInteractionChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA8D1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC7B1A84238C00846EE7 /* SDLDeleteInteractionChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA8E1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.m */; };
- 5D61FC7C1A84238C00846EE7 /* SDLDeleteInteractionChoiceSetResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA8F1A84238A00846EE7 /* SDLDeleteInteractionChoiceSetResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC7D1A84238C00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA901A84238A00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m */; };
- 5D61FC7E1A84238C00846EE7 /* SDLDeleteSubMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA911A84238A00846EE7 /* SDLDeleteSubMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC7F1A84238C00846EE7 /* SDLDeleteSubMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA921A84238A00846EE7 /* SDLDeleteSubMenu.m */; };
- 5D61FC801A84238C00846EE7 /* SDLDeleteSubMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA931A84238A00846EE7 /* SDLDeleteSubMenuResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC811A84238C00846EE7 /* SDLDeleteSubMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA941A84238A00846EE7 /* SDLDeleteSubMenuResponse.m */; };
- 5D61FC821A84238C00846EE7 /* SDLDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA951A84238A00846EE7 /* SDLDeviceInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC831A84238C00846EE7 /* SDLDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA961A84238A00846EE7 /* SDLDeviceInfo.m */; };
- 5D61FC841A84238C00846EE7 /* SDLDeviceLevelStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA971A84238A00846EE7 /* SDLDeviceLevelStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC851A84238C00846EE7 /* SDLDeviceLevelStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA981A84238A00846EE7 /* SDLDeviceLevelStatus.m */; };
- 5D61FC861A84238C00846EE7 /* SDLDeviceStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA991A84238A00846EE7 /* SDLDeviceStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC871A84238C00846EE7 /* SDLDeviceStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA9A1A84238A00846EE7 /* SDLDeviceStatus.m */; };
- 5D61FC881A84238C00846EE7 /* SDLDiagnosticMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA9B1A84238A00846EE7 /* SDLDiagnosticMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC891A84238C00846EE7 /* SDLDiagnosticMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA9C1A84238A00846EE7 /* SDLDiagnosticMessage.m */; };
- 5D61FC8A1A84238C00846EE7 /* SDLDiagnosticMessageResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA9D1A84238A00846EE7 /* SDLDiagnosticMessageResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC8B1A84238C00846EE7 /* SDLDiagnosticMessageResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FA9E1A84238A00846EE7 /* SDLDiagnosticMessageResponse.m */; };
- 5D61FC8C1A84238C00846EE7 /* SDLDIDResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FA9F1A84238A00846EE7 /* SDLDIDResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC8D1A84238C00846EE7 /* SDLDIDResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAA01A84238A00846EE7 /* SDLDIDResult.m */; };
- 5D61FC8E1A84238C00846EE7 /* SDLDimension.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAA11A84238A00846EE7 /* SDLDimension.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC8F1A84238C00846EE7 /* SDLDimension.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAA21A84238A00846EE7 /* SDLDimension.m */; };
- 5D61FC901A84238C00846EE7 /* SDLDisplayCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAA31A84238A00846EE7 /* SDLDisplayCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC911A84238C00846EE7 /* SDLDisplayCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAA41A84238A00846EE7 /* SDLDisplayCapabilities.m */; };
- 5D61FC921A84238C00846EE7 /* SDLDisplayType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAA51A84238A00846EE7 /* SDLDisplayType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC931A84238C00846EE7 /* SDLDisplayType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAA61A84238A00846EE7 /* SDLDisplayType.m */; };
- 5D61FC941A84238C00846EE7 /* SDLDriverDistractionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAA71A84238A00846EE7 /* SDLDriverDistractionState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC951A84238C00846EE7 /* SDLDriverDistractionState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAA81A84238A00846EE7 /* SDLDriverDistractionState.m */; };
- 5D61FC961A84238C00846EE7 /* SDLECallConfirmationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAA91A84238A00846EE7 /* SDLECallConfirmationStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC971A84238C00846EE7 /* SDLECallConfirmationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAAA1A84238A00846EE7 /* SDLECallConfirmationStatus.m */; };
- 5D61FC981A84238C00846EE7 /* SDLECallInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAAB1A84238A00846EE7 /* SDLECallInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC991A84238C00846EE7 /* SDLECallInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAAC1A84238A00846EE7 /* SDLECallInfo.m */; };
- 5D61FC9A1A84238C00846EE7 /* SDLEmergencyEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAAD1A84238A00846EE7 /* SDLEmergencyEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC9B1A84238C00846EE7 /* SDLEmergencyEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAAE1A84238A00846EE7 /* SDLEmergencyEvent.m */; };
- 5D61FC9C1A84238C00846EE7 /* SDLEmergencyEventType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAAF1A84238A00846EE7 /* SDLEmergencyEventType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC9D1A84238C00846EE7 /* SDLEmergencyEventType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAB01A84238A00846EE7 /* SDLEmergencyEventType.m */; };
- 5D61FC9E1A84238C00846EE7 /* SDLEncodedSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAB11A84238A00846EE7 /* SDLEncodedSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FC9F1A84238C00846EE7 /* SDLEncodedSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAB21A84238A00846EE7 /* SDLEncodedSyncPData.m */; };
- 5D61FCA01A84238C00846EE7 /* SDLEncodedSyncPDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAB31A84238A00846EE7 /* SDLEncodedSyncPDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCA11A84238C00846EE7 /* SDLEncodedSyncPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAB41A84238A00846EE7 /* SDLEncodedSyncPDataResponse.m */; };
- 5D61FCA31A84238C00846EE7 /* SDLEndAudioPassThru.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAB61A84238A00846EE7 /* SDLEndAudioPassThru.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCA41A84238C00846EE7 /* SDLEndAudioPassThru.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAB71A84238A00846EE7 /* SDLEndAudioPassThru.m */; };
- 5D61FCA51A84238C00846EE7 /* SDLEndAudioPassThruResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAB81A84238A00846EE7 /* SDLEndAudioPassThruResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCA61A84238C00846EE7 /* SDLEndAudioPassThruResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAB91A84238A00846EE7 /* SDLEndAudioPassThruResponse.m */; };
- 5D61FCA71A84238C00846EE7 /* SDLEnum.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FABA1A84238A00846EE7 /* SDLEnum.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCA91A84238C00846EE7 /* SDLFileType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FABC1A84238A00846EE7 /* SDLFileType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCAA1A84238C00846EE7 /* SDLFileType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FABD1A84238A00846EE7 /* SDLFileType.m */; };
- 5D61FCAB1A84238C00846EE7 /* SDLFuelCutoffStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FABE1A84238A00846EE7 /* SDLFuelCutoffStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCAC1A84238C00846EE7 /* SDLFuelCutoffStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FABF1A84238A00846EE7 /* SDLFuelCutoffStatus.m */; };
- 5D61FCAD1A84238C00846EE7 /* SDLFunctionID.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAC01A84238A00846EE7 /* SDLFunctionID.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCAE1A84238C00846EE7 /* SDLFunctionID.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAC11A84238A00846EE7 /* SDLFunctionID.m */; };
- 5D61FCAF1A84238C00846EE7 /* SDLGenericResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAC21A84238A00846EE7 /* SDLGenericResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCB01A84238C00846EE7 /* SDLGenericResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAC31A84238A00846EE7 /* SDLGenericResponse.m */; };
- 5D61FCB11A84238C00846EE7 /* SDLGetDTCs.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAC41A84238A00846EE7 /* SDLGetDTCs.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCB21A84238C00846EE7 /* SDLGetDTCs.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAC51A84238A00846EE7 /* SDLGetDTCs.m */; };
- 5D61FCB31A84238C00846EE7 /* SDLGetDTCsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAC61A84238A00846EE7 /* SDLGetDTCsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCB41A84238C00846EE7 /* SDLGetDTCsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAC71A84238A00846EE7 /* SDLGetDTCsResponse.m */; };
- 5D61FCB51A84238C00846EE7 /* SDLGetVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAC81A84238A00846EE7 /* SDLGetVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCB61A84238C00846EE7 /* SDLGetVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAC91A84238A00846EE7 /* SDLGetVehicleData.m */; };
- 5D61FCB71A84238C00846EE7 /* SDLGetVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FACA1A84238A00846EE7 /* SDLGetVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCB81A84238C00846EE7 /* SDLGetVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FACB1A84238A00846EE7 /* SDLGetVehicleDataResponse.m */; };
- 5D61FCB91A84238C00846EE7 /* SDLGlobalProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FACC1A84238A00846EE7 /* SDLGlobalProperty.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCBA1A84238C00846EE7 /* SDLGlobalProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FACD1A84238A00846EE7 /* SDLGlobalProperty.m */; };
- 5D61FCBB1A84238C00846EE7 /* SDLGPSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FACE1A84238A00846EE7 /* SDLGPSData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCBC1A84238C00846EE7 /* SDLGPSData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FACF1A84238A00846EE7 /* SDLGPSData.m */; };
- 5D61FCBD1A84238C00846EE7 /* SDLHeadLampStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAD01A84238A00846EE7 /* SDLHeadLampStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCBE1A84238C00846EE7 /* SDLHeadLampStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAD11A84238A00846EE7 /* SDLHeadLampStatus.m */; };
- 5D61FCBF1A84238C00846EE7 /* SDLHexUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAD21A84238A00846EE7 /* SDLHexUtility.h */; };
- 5D61FCC01A84238C00846EE7 /* SDLHexUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAD31A84238A00846EE7 /* SDLHexUtility.m */; };
- 5D61FCC11A84238C00846EE7 /* SDLHMILevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAD41A84238A00846EE7 /* SDLHMILevel.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCC21A84238C00846EE7 /* SDLHMILevel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAD51A84238A00846EE7 /* SDLHMILevel.m */; };
- 5D61FCC31A84238C00846EE7 /* SDLHMIPermissions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAD61A84238A00846EE7 /* SDLHMIPermissions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCC41A84238C00846EE7 /* SDLHMIPermissions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAD71A84238A00846EE7 /* SDLHMIPermissions.m */; };
- 5D61FCC51A84238C00846EE7 /* SDLHMIZoneCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAD81A84238A00846EE7 /* SDLHMIZoneCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCC61A84238C00846EE7 /* SDLHMIZoneCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAD91A84238A00846EE7 /* SDLHMIZoneCapabilities.m */; };
- 5D61FCC71A84238C00846EE7 /* SDLIAPTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FADA1A84238A00846EE7 /* SDLIAPTransport.h */; };
- 5D61FCC81A84238C00846EE7 /* SDLIAPTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FADB1A84238A00846EE7 /* SDLIAPTransport.m */; };
- 5D61FCC91A84238C00846EE7 /* SDLIgnitionStableStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FADC1A84238A00846EE7 /* SDLIgnitionStableStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCCA1A84238C00846EE7 /* SDLIgnitionStableStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FADD1A84238A00846EE7 /* SDLIgnitionStableStatus.m */; };
- 5D61FCCB1A84238C00846EE7 /* SDLIgnitionStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FADE1A84238A00846EE7 /* SDLIgnitionStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCCC1A84238C00846EE7 /* SDLIgnitionStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FADF1A84238A00846EE7 /* SDLIgnitionStatus.m */; };
- 5D61FCCD1A84238C00846EE7 /* SDLImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAE01A84238A00846EE7 /* SDLImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCCE1A84238C00846EE7 /* SDLImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAE11A84238A00846EE7 /* SDLImage.m */; };
- 5D61FCCF1A84238C00846EE7 /* SDLImageField.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAE21A84238A00846EE7 /* SDLImageField.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCD01A84238C00846EE7 /* SDLImageField.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAE31A84238A00846EE7 /* SDLImageField.m */; };
- 5D61FCD11A84238C00846EE7 /* SDLImageFieldName.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAE41A84238A00846EE7 /* SDLImageFieldName.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCD21A84238C00846EE7 /* SDLImageFieldName.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAE51A84238A00846EE7 /* SDLImageFieldName.m */; };
- 5D61FCD31A84238C00846EE7 /* SDLImageResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAE61A84238A00846EE7 /* SDLImageResolution.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCD41A84238C00846EE7 /* SDLImageResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAE71A84238A00846EE7 /* SDLImageResolution.m */; };
- 5D61FCD51A84238C00846EE7 /* SDLImageType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAE81A84238A00846EE7 /* SDLImageType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCD61A84238C00846EE7 /* SDLImageType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAE91A84238A00846EE7 /* SDLImageType.m */; };
- 5D61FCD71A84238C00846EE7 /* SDLInteractionMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAEA1A84238A00846EE7 /* SDLInteractionMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCD81A84238C00846EE7 /* SDLInteractionMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAEB1A84238A00846EE7 /* SDLInteractionMode.m */; };
- 5D61FCE01A84238C00846EE7 /* SDLKeyboardEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAF31A84238A00846EE7 /* SDLKeyboardEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCE11A84238C00846EE7 /* SDLKeyboardEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAF41A84238A00846EE7 /* SDLKeyboardEvent.m */; };
- 5D61FCE21A84238C00846EE7 /* SDLKeyboardLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAF51A84238A00846EE7 /* SDLKeyboardLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCE31A84238C00846EE7 /* SDLKeyboardLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAF61A84238A00846EE7 /* SDLKeyboardLayout.m */; };
- 5D61FCE41A84238C00846EE7 /* SDLKeyboardProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAF71A84238A00846EE7 /* SDLKeyboardProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCE51A84238C00846EE7 /* SDLKeyboardProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAF81A84238A00846EE7 /* SDLKeyboardProperties.m */; };
- 5D61FCE61A84238C00846EE7 /* SDLKeypressMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAF91A84238A00846EE7 /* SDLKeypressMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCE71A84238C00846EE7 /* SDLKeypressMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAFA1A84238A00846EE7 /* SDLKeypressMode.m */; };
- 5D61FCE81A84238C00846EE7 /* SDLLanguage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAFB1A84238A00846EE7 /* SDLLanguage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCE91A84238C00846EE7 /* SDLLanguage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAFC1A84238A00846EE7 /* SDLLanguage.m */; };
- 5D61FCEA1A84238C00846EE7 /* SDLLayoutMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAFD1A84238A00846EE7 /* SDLLayoutMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCEB1A84238C00846EE7 /* SDLLayoutMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FAFE1A84238A00846EE7 /* SDLLayoutMode.m */; };
- 5D61FCEC1A84238C00846EE7 /* SDLListFiles.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FAFF1A84238A00846EE7 /* SDLListFiles.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCED1A84238C00846EE7 /* SDLListFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB001A84238A00846EE7 /* SDLListFiles.m */; };
- 5D61FCEE1A84238C00846EE7 /* SDLListFilesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB011A84238A00846EE7 /* SDLListFilesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCEF1A84238C00846EE7 /* SDLListFilesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB021A84238A00846EE7 /* SDLListFilesResponse.m */; };
- 5D61FCF01A84238C00846EE7 /* SDLLockScreenStatusManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB031A84238A00846EE7 /* SDLLockScreenStatusManager.h */; };
- 5D61FCF11A84238C00846EE7 /* SDLLockScreenStatusManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB041A84238A00846EE7 /* SDLLockScreenStatusManager.m */; };
- 5D61FCF21A84238C00846EE7 /* SDLLockScreenStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB051A84238A00846EE7 /* SDLLockScreenStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCF31A84238C00846EE7 /* SDLLockScreenStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB061A84238A00846EE7 /* SDLLockScreenStatus.m */; };
- 5D61FCF41A84238C00846EE7 /* SDLMaintenanceModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB071A84238A00846EE7 /* SDLMaintenanceModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCF51A84238C00846EE7 /* SDLMaintenanceModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB081A84238A00846EE7 /* SDLMaintenanceModeStatus.m */; };
- 5D61FCF61A84238C00846EE7 /* SDLMediaClockFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB091A84238A00846EE7 /* SDLMediaClockFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCF71A84238C00846EE7 /* SDLMediaClockFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB0A1A84238A00846EE7 /* SDLMediaClockFormat.m */; };
- 5D61FCF81A84238C00846EE7 /* SDLMenuParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB0B1A84238A00846EE7 /* SDLMenuParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCF91A84238C00846EE7 /* SDLMenuParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB0C1A84238A00846EE7 /* SDLMenuParams.m */; };
- 5D61FCFA1A84238C00846EE7 /* SDLMyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB0D1A84238A00846EE7 /* SDLMyKey.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FCFB1A84238C00846EE7 /* SDLMyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB0E1A84238A00846EE7 /* SDLMyKey.m */; };
- 5D61FCFC1A84238C00846EE7 /* SDLRPCParameterNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB0F1A84238A00846EE7 /* SDLRPCParameterNames.h */; };
- 5D61FCFD1A84238C00846EE7 /* SDLObjectWithPriority.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB101A84238A00846EE7 /* SDLObjectWithPriority.h */; };
- 5D61FCFE1A84238C00846EE7 /* SDLObjectWithPriority.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB111A84238A00846EE7 /* SDLObjectWithPriority.m */; };
- 5D61FCFF1A84238C00846EE7 /* SDLOnAppInterfaceUnregistered.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB121A84238B00846EE7 /* SDLOnAppInterfaceUnregistered.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD001A84238C00846EE7 /* SDLOnAppInterfaceUnregistered.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB131A84238B00846EE7 /* SDLOnAppInterfaceUnregistered.m */; };
- 5D61FD011A84238C00846EE7 /* SDLOnAudioPassThru.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB141A84238B00846EE7 /* SDLOnAudioPassThru.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD021A84238C00846EE7 /* SDLOnAudioPassThru.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB151A84238B00846EE7 /* SDLOnAudioPassThru.m */; };
- 5D61FD031A84238C00846EE7 /* SDLOnButtonEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB161A84238B00846EE7 /* SDLOnButtonEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD041A84238C00846EE7 /* SDLOnButtonEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB171A84238B00846EE7 /* SDLOnButtonEvent.m */; };
- 5D61FD051A84238C00846EE7 /* SDLOnButtonPress.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB181A84238B00846EE7 /* SDLOnButtonPress.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD061A84238C00846EE7 /* SDLOnButtonPress.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB191A84238B00846EE7 /* SDLOnButtonPress.m */; };
- 5D61FD071A84238C00846EE7 /* SDLOnCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB1A1A84238B00846EE7 /* SDLOnCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD081A84238C00846EE7 /* SDLOnCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB1B1A84238B00846EE7 /* SDLOnCommand.m */; };
- 5D61FD091A84238C00846EE7 /* SDLOnDriverDistraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB1C1A84238B00846EE7 /* SDLOnDriverDistraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD0A1A84238C00846EE7 /* SDLOnDriverDistraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB1D1A84238B00846EE7 /* SDLOnDriverDistraction.m */; };
- 5D61FD0B1A84238C00846EE7 /* SDLOnEncodedSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB1E1A84238B00846EE7 /* SDLOnEncodedSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD0C1A84238C00846EE7 /* SDLOnEncodedSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB1F1A84238B00846EE7 /* SDLOnEncodedSyncPData.m */; };
- 5D61FD0D1A84238C00846EE7 /* SDLOnHashChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB201A84238B00846EE7 /* SDLOnHashChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD0E1A84238C00846EE7 /* SDLOnHashChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB211A84238B00846EE7 /* SDLOnHashChange.m */; };
- 5D61FD0F1A84238C00846EE7 /* SDLOnHMIStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB221A84238B00846EE7 /* SDLOnHMIStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD101A84238C00846EE7 /* SDLOnHMIStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB231A84238B00846EE7 /* SDLOnHMIStatus.m */; };
- 5D61FD111A84238C00846EE7 /* SDLOnKeyboardInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB241A84238B00846EE7 /* SDLOnKeyboardInput.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD121A84238C00846EE7 /* SDLOnKeyboardInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB251A84238B00846EE7 /* SDLOnKeyboardInput.m */; };
- 5D61FD131A84238C00846EE7 /* SDLOnLanguageChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB261A84238B00846EE7 /* SDLOnLanguageChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD141A84238C00846EE7 /* SDLOnLanguageChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB271A84238B00846EE7 /* SDLOnLanguageChange.m */; };
- 5D61FD151A84238C00846EE7 /* SDLOnLockScreenStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB281A84238B00846EE7 /* SDLOnLockScreenStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD161A84238C00846EE7 /* SDLOnLockScreenStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB291A84238B00846EE7 /* SDLOnLockScreenStatus.m */; };
- 5D61FD171A84238C00846EE7 /* SDLOnPermissionsChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB2A1A84238B00846EE7 /* SDLOnPermissionsChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD181A84238C00846EE7 /* SDLOnPermissionsChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB2B1A84238B00846EE7 /* SDLOnPermissionsChange.m */; };
- 5D61FD191A84238C00846EE7 /* SDLOnSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB2C1A84238B00846EE7 /* SDLOnSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD1A1A84238C00846EE7 /* SDLOnSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB2D1A84238B00846EE7 /* SDLOnSyncPData.m */; };
- 5D61FD1B1A84238C00846EE7 /* SDLOnSystemRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB2E1A84238B00846EE7 /* SDLOnSystemRequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD1C1A84238C00846EE7 /* SDLOnSystemRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB2F1A84238B00846EE7 /* SDLOnSystemRequest.m */; };
- 5D61FD1D1A84238C00846EE7 /* SDLOnTBTClientState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB301A84238B00846EE7 /* SDLOnTBTClientState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD1E1A84238C00846EE7 /* SDLOnTBTClientState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB311A84238B00846EE7 /* SDLOnTBTClientState.m */; };
- 5D61FD1F1A84238C00846EE7 /* SDLOnTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB321A84238B00846EE7 /* SDLOnTouchEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD201A84238C00846EE7 /* SDLOnTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB331A84238B00846EE7 /* SDLOnTouchEvent.m */; };
- 5D61FD211A84238C00846EE7 /* SDLOnVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB341A84238B00846EE7 /* SDLOnVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD221A84238C00846EE7 /* SDLOnVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB351A84238B00846EE7 /* SDLOnVehicleData.m */; };
- 5D61FD231A84238C00846EE7 /* SDLParameterPermissions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB361A84238B00846EE7 /* SDLParameterPermissions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD241A84238C00846EE7 /* SDLParameterPermissions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB371A84238B00846EE7 /* SDLParameterPermissions.m */; };
- 5D61FD251A84238C00846EE7 /* SDLPerformAudioPassThru.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB381A84238B00846EE7 /* SDLPerformAudioPassThru.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD261A84238C00846EE7 /* SDLPerformAudioPassThru.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB391A84238B00846EE7 /* SDLPerformAudioPassThru.m */; };
- 5D61FD271A84238C00846EE7 /* SDLPerformAudioPassThruResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB3A1A84238B00846EE7 /* SDLPerformAudioPassThruResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD281A84238C00846EE7 /* SDLPerformAudioPassThruResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB3B1A84238B00846EE7 /* SDLPerformAudioPassThruResponse.m */; };
- 5D61FD291A84238C00846EE7 /* SDLPerformInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB3C1A84238B00846EE7 /* SDLPerformInteraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD2A1A84238C00846EE7 /* SDLPerformInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB3D1A84238B00846EE7 /* SDLPerformInteraction.m */; };
- 5D61FD2B1A84238C00846EE7 /* SDLPerformInteractionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB3E1A84238B00846EE7 /* SDLPerformInteractionResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD2C1A84238C00846EE7 /* SDLPerformInteractionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB3F1A84238B00846EE7 /* SDLPerformInteractionResponse.m */; };
- 5D61FD2D1A84238C00846EE7 /* SDLPermissionItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB401A84238B00846EE7 /* SDLPermissionItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD2E1A84238C00846EE7 /* SDLPermissionItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB411A84238B00846EE7 /* SDLPermissionItem.m */; };
- 5D61FD2F1A84238C00846EE7 /* SDLPermissionStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB421A84238B00846EE7 /* SDLPermissionStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD301A84238C00846EE7 /* SDLPermissionStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB431A84238B00846EE7 /* SDLPermissionStatus.m */; };
- 5D61FD331A84238C00846EE7 /* SDLPowerModeQualificationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB461A84238B00846EE7 /* SDLPowerModeQualificationStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD341A84238C00846EE7 /* SDLPowerModeQualificationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB471A84238B00846EE7 /* SDLPowerModeQualificationStatus.m */; };
- 5D61FD351A84238C00846EE7 /* SDLPowerModeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB481A84238B00846EE7 /* SDLPowerModeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD361A84238C00846EE7 /* SDLPowerModeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB491A84238B00846EE7 /* SDLPowerModeStatus.m */; };
- 5D61FD371A84238C00846EE7 /* SDLPredefinedLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB4A1A84238B00846EE7 /* SDLPredefinedLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD381A84238C00846EE7 /* SDLPredefinedLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB4B1A84238B00846EE7 /* SDLPredefinedLayout.m */; };
- 5D61FD391A84238C00846EE7 /* SDLPrerecordedSpeech.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB4C1A84238B00846EE7 /* SDLPrerecordedSpeech.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD3A1A84238C00846EE7 /* SDLPrerecordedSpeech.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB4D1A84238B00846EE7 /* SDLPrerecordedSpeech.m */; };
- 5D61FD3B1A84238C00846EE7 /* SDLPresetBankCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB4E1A84238B00846EE7 /* SDLPresetBankCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD3C1A84238C00846EE7 /* SDLPresetBankCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB4F1A84238B00846EE7 /* SDLPresetBankCapabilities.m */; };
- 5D61FD3D1A84238C00846EE7 /* SDLPrimaryAudioSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB501A84238B00846EE7 /* SDLPrimaryAudioSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD3E1A84238C00846EE7 /* SDLPrimaryAudioSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB511A84238B00846EE7 /* SDLPrimaryAudioSource.m */; };
- 5D61FD3F1A84238C00846EE7 /* SDLPrioritizedObjectCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB521A84238B00846EE7 /* SDLPrioritizedObjectCollection.h */; };
- 5D61FD401A84238C00846EE7 /* SDLPrioritizedObjectCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB531A84238B00846EE7 /* SDLPrioritizedObjectCollection.m */; };
- 5D61FD411A84238C00846EE7 /* SDLPRNDL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB541A84238B00846EE7 /* SDLPRNDL.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD421A84238C00846EE7 /* SDLPRNDL.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB551A84238B00846EE7 /* SDLPRNDL.m */; };
- 5D61FD431A84238C00846EE7 /* SDLProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB561A84238B00846EE7 /* SDLProtocol.h */; };
- 5D61FD441A84238C00846EE7 /* SDLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB571A84238B00846EE7 /* SDLProtocol.m */; };
- 5D61FD451A84238C00846EE7 /* SDLProtocolHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB581A84238B00846EE7 /* SDLProtocolHeader.h */; };
- 5D61FD461A84238C00846EE7 /* SDLProtocolHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB591A84238B00846EE7 /* SDLProtocolHeader.m */; };
- 5D61FD471A84238C00846EE7 /* SDLProtocolDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB5A1A84238B00846EE7 /* SDLProtocolDelegate.h */; };
- 5D61FD481A84238C00846EE7 /* SDLProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB5B1A84238B00846EE7 /* SDLProtocolMessage.h */; };
- 5D61FD491A84238C00846EE7 /* SDLProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB5C1A84238B00846EE7 /* SDLProtocolMessage.m */; };
- 5D61FD4A1A84238C00846EE7 /* SDLProtocolMessageAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB5D1A84238B00846EE7 /* SDLProtocolMessageAssembler.h */; };
- 5D61FD4B1A84238C00846EE7 /* SDLProtocolMessageAssembler.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB5E1A84238B00846EE7 /* SDLProtocolMessageAssembler.m */; };
- 5D61FD4C1A84238C00846EE7 /* SDLProtocolMessageDisassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB5F1A84238B00846EE7 /* SDLProtocolMessageDisassembler.h */; };
- 5D61FD4D1A84238C00846EE7 /* SDLProtocolMessageDisassembler.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB601A84238B00846EE7 /* SDLProtocolMessageDisassembler.m */; };
- 5D61FD4E1A84238C00846EE7 /* SDLProtocolReceivedMessageRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB611A84238B00846EE7 /* SDLProtocolReceivedMessageRouter.h */; };
- 5D61FD4F1A84238C00846EE7 /* SDLProtocolReceivedMessageRouter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB621A84238B00846EE7 /* SDLProtocolReceivedMessageRouter.m */; };
- 5D61FD551A84238C00846EE7 /* SDLPutFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB681A84238B00846EE7 /* SDLPutFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD561A84238C00846EE7 /* SDLPutFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB691A84238B00846EE7 /* SDLPutFile.m */; };
- 5D61FD571A84238C00846EE7 /* SDLPutFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB6A1A84238B00846EE7 /* SDLPutFileResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD581A84238C00846EE7 /* SDLPutFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB6B1A84238B00846EE7 /* SDLPutFileResponse.m */; };
- 5D61FD591A84238C00846EE7 /* SDLReadDID.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB6C1A84238B00846EE7 /* SDLReadDID.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD5A1A84238C00846EE7 /* SDLReadDID.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB6D1A84238B00846EE7 /* SDLReadDID.m */; };
- 5D61FD5B1A84238C00846EE7 /* SDLReadDIDResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB6E1A84238B00846EE7 /* SDLReadDIDResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD5C1A84238C00846EE7 /* SDLReadDIDResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB6F1A84238B00846EE7 /* SDLReadDIDResponse.m */; };
- 5D61FD5D1A84238C00846EE7 /* SDLRegisterAppInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB701A84238B00846EE7 /* SDLRegisterAppInterface.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD5E1A84238C00846EE7 /* SDLRegisterAppInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB711A84238B00846EE7 /* SDLRegisterAppInterface.m */; };
- 5D61FD5F1A84238C00846EE7 /* SDLRegisterAppInterfaceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB721A84238B00846EE7 /* SDLRegisterAppInterfaceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD601A84238C00846EE7 /* SDLRegisterAppInterfaceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB731A84238B00846EE7 /* SDLRegisterAppInterfaceResponse.m */; };
- 5D61FD611A84238C00846EE7 /* SDLRequestType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB741A84238B00846EE7 /* SDLRequestType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD621A84238C00846EE7 /* SDLRequestType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB751A84238B00846EE7 /* SDLRequestType.m */; };
- 5D61FD631A84238C00846EE7 /* SDLResetGlobalProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB761A84238B00846EE7 /* SDLResetGlobalProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD641A84238C00846EE7 /* SDLResetGlobalProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB771A84238B00846EE7 /* SDLResetGlobalProperties.m */; };
- 5D61FD651A84238C00846EE7 /* SDLResetGlobalPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB781A84238B00846EE7 /* SDLResetGlobalPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD661A84238C00846EE7 /* SDLResetGlobalPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB791A84238B00846EE7 /* SDLResetGlobalPropertiesResponse.m */; };
- 5D61FD671A84238C00846EE7 /* SDLResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB7A1A84238B00846EE7 /* SDLResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD681A84238C00846EE7 /* SDLResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB7B1A84238B00846EE7 /* SDLResult.m */; };
- 5D61FD691A84238C00846EE7 /* SDLRPCMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB7C1A84238B00846EE7 /* SDLRPCMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD6A1A84238C00846EE7 /* SDLRPCMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB7D1A84238B00846EE7 /* SDLRPCMessage.m */; };
- 5D61FD6B1A84238C00846EE7 /* SDLRPCMessageType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB7E1A84238B00846EE7 /* SDLRPCMessageType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD6D1A84238C00846EE7 /* SDLRPCNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB801A84238B00846EE7 /* SDLRPCNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD6E1A84238C00846EE7 /* SDLRPCNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB811A84238B00846EE7 /* SDLRPCNotification.m */; };
- 5D61FD6F1A84238C00846EE7 /* SDLRPCPayload.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB821A84238B00846EE7 /* SDLRPCPayload.h */; };
- 5D61FD701A84238C00846EE7 /* SDLRPCPayload.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB831A84238B00846EE7 /* SDLRPCPayload.m */; };
- 5D61FD711A84238C00846EE7 /* SDLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB841A84238B00846EE7 /* SDLRPCRequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD721A84238C00846EE7 /* SDLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB851A84238B00846EE7 /* SDLRPCRequest.m */; };
- 5D61FD751A84238C00846EE7 /* SDLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB881A84238B00846EE7 /* SDLRPCResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD761A84238C00846EE7 /* SDLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB891A84238B00846EE7 /* SDLRPCResponse.m */; };
- 5D61FD771A84238C00846EE7 /* SDLSamplingRate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB8A1A84238B00846EE7 /* SDLSamplingRate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD781A84238C00846EE7 /* SDLSamplingRate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB8B1A84238B00846EE7 /* SDLSamplingRate.m */; };
- 5D61FD791A84238C00846EE7 /* SDLScreenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB8C1A84238B00846EE7 /* SDLScreenParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD7A1A84238C00846EE7 /* SDLScreenParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB8D1A84238B00846EE7 /* SDLScreenParams.m */; };
- 5D61FD7B1A84238C00846EE7 /* SDLScrollableMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB8E1A84238B00846EE7 /* SDLScrollableMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD7C1A84238C00846EE7 /* SDLScrollableMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB8F1A84238B00846EE7 /* SDLScrollableMessage.m */; };
- 5D61FD7D1A84238C00846EE7 /* SDLScrollableMessageResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB901A84238B00846EE7 /* SDLScrollableMessageResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD7E1A84238C00846EE7 /* SDLScrollableMessageResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB911A84238B00846EE7 /* SDLScrollableMessageResponse.m */; };
- 5D61FD7F1A84238C00846EE7 /* SDLSetAppIcon.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB921A84238B00846EE7 /* SDLSetAppIcon.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD801A84238C00846EE7 /* SDLSetAppIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB931A84238B00846EE7 /* SDLSetAppIcon.m */; };
- 5D61FD811A84238C00846EE7 /* SDLSetAppIconResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB941A84238B00846EE7 /* SDLSetAppIconResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD821A84238C00846EE7 /* SDLSetAppIconResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB951A84238B00846EE7 /* SDLSetAppIconResponse.m */; };
- 5D61FD831A84238C00846EE7 /* SDLSetDisplayLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB961A84238B00846EE7 /* SDLSetDisplayLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD841A84238C00846EE7 /* SDLSetDisplayLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB971A84238B00846EE7 /* SDLSetDisplayLayout.m */; };
- 5D61FD851A84238C00846EE7 /* SDLSetDisplayLayoutResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB981A84238B00846EE7 /* SDLSetDisplayLayoutResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD861A84238C00846EE7 /* SDLSetDisplayLayoutResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB991A84238B00846EE7 /* SDLSetDisplayLayoutResponse.m */; };
- 5D61FD871A84238C00846EE7 /* SDLSetGlobalProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB9A1A84238B00846EE7 /* SDLSetGlobalProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD881A84238C00846EE7 /* SDLSetGlobalProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB9B1A84238B00846EE7 /* SDLSetGlobalProperties.m */; };
- 5D61FD891A84238C00846EE7 /* SDLSetGlobalPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB9C1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD8A1A84238C00846EE7 /* SDLSetGlobalPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB9D1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.m */; };
- 5D61FD8B1A84238C00846EE7 /* SDLSetMediaClockTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FB9E1A84238B00846EE7 /* SDLSetMediaClockTimer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD8C1A84238C00846EE7 /* SDLSetMediaClockTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FB9F1A84238B00846EE7 /* SDLSetMediaClockTimer.m */; };
- 5D61FD8D1A84238C00846EE7 /* SDLSetMediaClockTimerResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBA01A84238B00846EE7 /* SDLSetMediaClockTimerResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD8E1A84238C00846EE7 /* SDLSetMediaClockTimerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBA11A84238B00846EE7 /* SDLSetMediaClockTimerResponse.m */; };
- 5D61FD8F1A84238C00846EE7 /* SDLShow.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBA21A84238B00846EE7 /* SDLShow.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD901A84238C00846EE7 /* SDLShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBA31A84238B00846EE7 /* SDLShow.m */; };
- 5D61FD911A84238C00846EE7 /* SDLShowConstantTBT.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBA41A84238B00846EE7 /* SDLShowConstantTBT.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD921A84238C00846EE7 /* SDLShowConstantTBT.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBA51A84238B00846EE7 /* SDLShowConstantTBT.m */; };
- 5D61FD931A84238C00846EE7 /* SDLShowConstantTBTResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBA61A84238B00846EE7 /* SDLShowConstantTBTResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD941A84238C00846EE7 /* SDLShowConstantTBTResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBA71A84238B00846EE7 /* SDLShowConstantTBTResponse.m */; };
- 5D61FD951A84238C00846EE7 /* SDLShowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBA81A84238B00846EE7 /* SDLShowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD961A84238C00846EE7 /* SDLShowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBA91A84238B00846EE7 /* SDLShowResponse.m */; };
- 5D61FD971A84238C00846EE7 /* SDLSingleTireStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBAA1A84238B00846EE7 /* SDLSingleTireStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD981A84238C00846EE7 /* SDLSingleTireStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBAB1A84238B00846EE7 /* SDLSingleTireStatus.m */; };
- 5D61FD9B1A84238C00846EE7 /* SDLSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBAE1A84238B00846EE7 /* SDLSlider.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD9C1A84238C00846EE7 /* SDLSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBAF1A84238B00846EE7 /* SDLSlider.m */; };
- 5D61FD9D1A84238C00846EE7 /* SDLSliderResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBB01A84238B00846EE7 /* SDLSliderResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FD9E1A84238C00846EE7 /* SDLSliderResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBB11A84238B00846EE7 /* SDLSliderResponse.m */; };
- 5D61FD9F1A84238C00846EE7 /* SDLSoftButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBB21A84238B00846EE7 /* SDLSoftButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDA01A84238C00846EE7 /* SDLSoftButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBB31A84238B00846EE7 /* SDLSoftButton.m */; };
- 5D61FDA11A84238C00846EE7 /* SDLSoftButtonCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBB41A84238B00846EE7 /* SDLSoftButtonCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDA21A84238C00846EE7 /* SDLSoftButtonCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBB51A84238B00846EE7 /* SDLSoftButtonCapabilities.m */; };
- 5D61FDA31A84238C00846EE7 /* SDLSoftButtonType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBB61A84238B00846EE7 /* SDLSoftButtonType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDA41A84238C00846EE7 /* SDLSoftButtonType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBB71A84238B00846EE7 /* SDLSoftButtonType.m */; };
- 5D61FDA51A84238C00846EE7 /* SDLSpeak.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBB81A84238B00846EE7 /* SDLSpeak.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDA61A84238C00846EE7 /* SDLSpeak.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBB91A84238B00846EE7 /* SDLSpeak.m */; };
- 5D61FDA71A84238C00846EE7 /* SDLSpeakResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBBA1A84238B00846EE7 /* SDLSpeakResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDA81A84238C00846EE7 /* SDLSpeakResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBBB1A84238B00846EE7 /* SDLSpeakResponse.m */; };
- 5D61FDA91A84238C00846EE7 /* SDLSpeechCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBBC1A84238B00846EE7 /* SDLSpeechCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDAA1A84238C00846EE7 /* SDLSpeechCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBBD1A84238B00846EE7 /* SDLSpeechCapabilities.m */; };
- 5D61FDAB1A84238C00846EE7 /* SDLStartTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBBE1A84238B00846EE7 /* SDLStartTime.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDAC1A84238C00846EE7 /* SDLStartTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBBF1A84238B00846EE7 /* SDLStartTime.m */; };
- 5D61FDAD1A84238C00846EE7 /* SDLSubscribeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBC01A84238B00846EE7 /* SDLSubscribeButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDAE1A84238C00846EE7 /* SDLSubscribeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBC11A84238B00846EE7 /* SDLSubscribeButton.m */; };
- 5D61FDAF1A84238C00846EE7 /* SDLSubscribeButtonResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBC21A84238B00846EE7 /* SDLSubscribeButtonResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDB01A84238C00846EE7 /* SDLSubscribeButtonResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBC31A84238B00846EE7 /* SDLSubscribeButtonResponse.m */; };
- 5D61FDB11A84238C00846EE7 /* SDLSubscribeVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBC41A84238B00846EE7 /* SDLSubscribeVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDB21A84238C00846EE7 /* SDLSubscribeVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBC51A84238B00846EE7 /* SDLSubscribeVehicleData.m */; };
- 5D61FDB31A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBC61A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDB41A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBC71A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.m */; };
- 5D61FDB51A84238C00846EE7 /* SDLSyncMsgVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBC81A84238B00846EE7 /* SDLSyncMsgVersion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDB61A84238C00846EE7 /* SDLSyncMsgVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBC91A84238B00846EE7 /* SDLSyncMsgVersion.m */; };
- 5D61FDB71A84238C00846EE7 /* SDLSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBCA1A84238B00846EE7 /* SDLSyncPData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDB81A84238C00846EE7 /* SDLSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBCB1A84238B00846EE7 /* SDLSyncPData.m */; };
- 5D61FDB91A84238C00846EE7 /* SDLSyncPDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBCC1A84238B00846EE7 /* SDLSyncPDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDBA1A84238C00846EE7 /* SDLSyncPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBCD1A84238B00846EE7 /* SDLSyncPDataResponse.m */; };
- 5D61FDBB1A84238C00846EE7 /* SDLSystemAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBCE1A84238B00846EE7 /* SDLSystemAction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDBC1A84238C00846EE7 /* SDLSystemAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBCF1A84238B00846EE7 /* SDLSystemAction.m */; };
- 5D61FDBD1A84238C00846EE7 /* SDLSystemContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBD01A84238B00846EE7 /* SDLSystemContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDBE1A84238C00846EE7 /* SDLSystemContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBD11A84238B00846EE7 /* SDLSystemContext.m */; };
- 5D61FDC01A84238C00846EE7 /* SDLSystemRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBD31A84238B00846EE7 /* SDLSystemRequest.m */; };
- 5D61FDC21A84238C00846EE7 /* SDLSystemRequestResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBD51A84238B00846EE7 /* SDLSystemRequestResponse.m */; };
- 5D61FDC31A84238C00846EE7 /* SDLTBTState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBD61A84238B00846EE7 /* SDLTBTState.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDC41A84238C00846EE7 /* SDLTBTState.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBD71A84238B00846EE7 /* SDLTBTState.m */; };
- 5D61FDC51A84238C00846EE7 /* SDLTCPTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBD81A84238B00846EE7 /* SDLTCPTransport.h */; };
- 5D61FDC61A84238C00846EE7 /* SDLTCPTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBD91A84238B00846EE7 /* SDLTCPTransport.m */; };
- 5D61FDC71A84238C00846EE7 /* SDLTextAlignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBDA1A84238B00846EE7 /* SDLTextAlignment.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDC81A84238C00846EE7 /* SDLTextAlignment.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBDB1A84238C00846EE7 /* SDLTextAlignment.m */; };
- 5D61FDC91A84238C00846EE7 /* SDLTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBDC1A84238C00846EE7 /* SDLTextField.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDCA1A84238C00846EE7 /* SDLTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBDD1A84238C00846EE7 /* SDLTextField.m */; };
- 5D61FDCB1A84238C00846EE7 /* SDLTextFieldName.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBDE1A84238C00846EE7 /* SDLTextFieldName.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDCC1A84238C00846EE7 /* SDLTextFieldName.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBDF1A84238C00846EE7 /* SDLTextFieldName.m */; };
- 5D61FDCD1A84238C00846EE7 /* SDLTimerMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBE01A84238C00846EE7 /* SDLTimerMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDCE1A84238C00846EE7 /* SDLTimerMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBE11A84238C00846EE7 /* SDLTimerMode.m */; };
- 5D61FDCF1A84238C00846EE7 /* SDLTireStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBE21A84238C00846EE7 /* SDLTireStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDD01A84238C00846EE7 /* SDLTireStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBE31A84238C00846EE7 /* SDLTireStatus.m */; };
- 5D61FDD11A84238C00846EE7 /* SDLTouchCoord.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBE41A84238C00846EE7 /* SDLTouchCoord.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDD21A84238C00846EE7 /* SDLTouchCoord.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBE51A84238C00846EE7 /* SDLTouchCoord.m */; };
- 5D61FDD31A84238C00846EE7 /* SDLTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBE61A84238C00846EE7 /* SDLTouchEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDD41A84238C00846EE7 /* SDLTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBE71A84238C00846EE7 /* SDLTouchEvent.m */; };
- 5D61FDD51A84238C00846EE7 /* SDLTouchEventCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBE81A84238C00846EE7 /* SDLTouchEventCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDD61A84238C00846EE7 /* SDLTouchEventCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBE91A84238C00846EE7 /* SDLTouchEventCapabilities.m */; };
- 5D61FDD71A84238C00846EE7 /* SDLTouchType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBEA1A84238C00846EE7 /* SDLTouchType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDD81A84238C00846EE7 /* SDLTouchType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBEB1A84238C00846EE7 /* SDLTouchType.m */; };
- 5D61FDDA1A84238C00846EE7 /* SDLTransportDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBED1A84238C00846EE7 /* SDLTransportDelegate.h */; };
- 5D61FDDB1A84238C00846EE7 /* SDLTriggerSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBEE1A84238C00846EE7 /* SDLTriggerSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDDC1A84238C00846EE7 /* SDLTriggerSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBEF1A84238C00846EE7 /* SDLTriggerSource.m */; };
- 5D61FDDD1A84238C00846EE7 /* SDLTTSChunk.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBF01A84238C00846EE7 /* SDLTTSChunk.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDDE1A84238C00846EE7 /* SDLTTSChunk.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBF11A84238C00846EE7 /* SDLTTSChunk.m */; };
- 5D61FDE11A84238C00846EE7 /* SDLTurn.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBF41A84238C00846EE7 /* SDLTurn.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDE21A84238C00846EE7 /* SDLTurn.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBF51A84238C00846EE7 /* SDLTurn.m */; };
- 5D61FDE31A84238C00846EE7 /* SDLUnregisterAppInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBF61A84238C00846EE7 /* SDLUnregisterAppInterface.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDE41A84238C00846EE7 /* SDLUnregisterAppInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBF71A84238C00846EE7 /* SDLUnregisterAppInterface.m */; };
- 5D61FDE51A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBF81A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDE61A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBF91A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.m */; };
- 5D61FDE71A84238C00846EE7 /* SDLUnsubscribeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBFA1A84238C00846EE7 /* SDLUnsubscribeButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDE81A84238C00846EE7 /* SDLUnsubscribeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBFB1A84238C00846EE7 /* SDLUnsubscribeButton.m */; };
- 5D61FDE91A84238C00846EE7 /* SDLUnsubscribeButtonResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBFC1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDEA1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBFD1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m */; };
- 5D61FDEB1A84238C00846EE7 /* SDLUnsubscribeVehicleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBFE1A84238C00846EE7 /* SDLUnsubscribeVehicleData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDEC1A84238C00846EE7 /* SDLUnsubscribeVehicleData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FBFF1A84238C00846EE7 /* SDLUnsubscribeVehicleData.m */; };
- 5D61FDED1A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC001A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDEE1A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC011A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.m */; };
- 5D61FDEF1A84238C00846EE7 /* SDLUpdateMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC021A84238C00846EE7 /* SDLUpdateMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDF01A84238C00846EE7 /* SDLUpdateMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC031A84238C00846EE7 /* SDLUpdateMode.m */; };
- 5D61FDF11A84238C00846EE7 /* SDLUpdateTurnList.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC041A84238C00846EE7 /* SDLUpdateTurnList.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDF21A84238C00846EE7 /* SDLUpdateTurnList.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC051A84238C00846EE7 /* SDLUpdateTurnList.m */; };
- 5D61FDF31A84238C00846EE7 /* SDLUpdateTurnListResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC061A84238C00846EE7 /* SDLUpdateTurnListResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDF41A84238C00846EE7 /* SDLUpdateTurnListResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC071A84238C00846EE7 /* SDLUpdateTurnListResponse.m */; };
- 5D61FDF51A84238C00846EE7 /* SDLV1ProtocolHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC081A84238C00846EE7 /* SDLV1ProtocolHeader.h */; };
- 5D61FDF61A84238C00846EE7 /* SDLV1ProtocolHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC091A84238C00846EE7 /* SDLV1ProtocolHeader.m */; };
- 5D61FDF71A84238C00846EE7 /* SDLV1ProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC0A1A84238C00846EE7 /* SDLV1ProtocolMessage.h */; };
- 5D61FDF81A84238C00846EE7 /* SDLV1ProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC0B1A84238C00846EE7 /* SDLV1ProtocolMessage.m */; };
- 5D61FDF91A84238C00846EE7 /* SDLV2ProtocolHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC0C1A84238C00846EE7 /* SDLV2ProtocolHeader.h */; };
- 5D61FDFA1A84238C00846EE7 /* SDLV2ProtocolHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC0D1A84238C00846EE7 /* SDLV2ProtocolHeader.m */; };
- 5D61FDFB1A84238C00846EE7 /* SDLV2ProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC0E1A84238C00846EE7 /* SDLV2ProtocolMessage.h */; };
- 5D61FDFC1A84238C00846EE7 /* SDLV2ProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC0F1A84238C00846EE7 /* SDLV2ProtocolMessage.m */; };
- 5D61FDFD1A84238C00846EE7 /* SDLVehicleDataActiveStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC101A84238C00846EE7 /* SDLVehicleDataActiveStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FDFE1A84238C00846EE7 /* SDLVehicleDataActiveStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC111A84238C00846EE7 /* SDLVehicleDataActiveStatus.m */; };
- 5D61FDFF1A84238C00846EE7 /* SDLVehicleDataEventStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC121A84238C00846EE7 /* SDLVehicleDataEventStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE001A84238C00846EE7 /* SDLVehicleDataEventStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC131A84238C00846EE7 /* SDLVehicleDataEventStatus.m */; };
- 5D61FE011A84238C00846EE7 /* SDLVehicleDataNotificationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC141A84238C00846EE7 /* SDLVehicleDataNotificationStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE021A84238C00846EE7 /* SDLVehicleDataNotificationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC151A84238C00846EE7 /* SDLVehicleDataNotificationStatus.m */; };
- 5D61FE031A84238C00846EE7 /* SDLVehicleDataResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC161A84238C00846EE7 /* SDLVehicleDataResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE041A84238C00846EE7 /* SDLVehicleDataResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC171A84238C00846EE7 /* SDLVehicleDataResult.m */; };
- 5D61FE051A84238C00846EE7 /* SDLVehicleDataResultCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC181A84238C00846EE7 /* SDLVehicleDataResultCode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE061A84238C00846EE7 /* SDLVehicleDataResultCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC191A84238C00846EE7 /* SDLVehicleDataResultCode.m */; };
- 5D61FE071A84238C00846EE7 /* SDLVehicleDataStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC1A1A84238C00846EE7 /* SDLVehicleDataStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE081A84238C00846EE7 /* SDLVehicleDataStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC1B1A84238C00846EE7 /* SDLVehicleDataStatus.m */; };
- 5D61FE091A84238C00846EE7 /* SDLVehicleDataType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC1C1A84238C00846EE7 /* SDLVehicleDataType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE0A1A84238C00846EE7 /* SDLVehicleDataType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC1D1A84238C00846EE7 /* SDLVehicleDataType.m */; };
- 5D61FE0B1A84238C00846EE7 /* SDLVehicleType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC1E1A84238C00846EE7 /* SDLVehicleType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE0C1A84238C00846EE7 /* SDLVehicleType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC1F1A84238C00846EE7 /* SDLVehicleType.m */; };
- 5D61FE0D1A84238C00846EE7 /* SDLVrCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC201A84238C00846EE7 /* SDLVrCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE0E1A84238C00846EE7 /* SDLVrCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC211A84238C00846EE7 /* SDLVrCapabilities.m */; };
- 5D61FE0F1A84238C00846EE7 /* SDLVrHelpItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC221A84238C00846EE7 /* SDLVrHelpItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE101A84238C00846EE7 /* SDLVrHelpItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC231A84238C00846EE7 /* SDLVrHelpItem.m */; };
- 5D61FE111A84238C00846EE7 /* SDLWarningLightStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC241A84238C00846EE7 /* SDLWarningLightStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE121A84238C00846EE7 /* SDLWarningLightStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC251A84238C00846EE7 /* SDLWarningLightStatus.m */; };
- 5D61FE131A84238C00846EE7 /* SDLWiperStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FC261A84238C00846EE7 /* SDLWiperStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D61FE141A84238C00846EE7 /* SDLWiperStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D61FC271A84238C00846EE7 /* SDLWiperStatus.m */; };
5D64FE6D20DA9CE600792F9F /* SDLVideoStreamingStateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D64FE6C20DA9CE600792F9F /* SDLVideoStreamingStateSpec.m */; };
5D64FE6F20DA9E4300792F9F /* SDLStreamingVideoLifecycleManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D64FE6E20DA9E4300792F9F /* SDLStreamingVideoLifecycleManagerSpec.m */; };
5D64FE7120DA9E6700792F9F /* SDLStreamingAudioLifecycleManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D64FE7020DA9E6700792F9F /* SDLStreamingAudioLifecycleManagerSpec.m */; };
- 5D6CC8EF1C610E660027F60A /* SDLSecurityType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D6CC8EE1C610E660027F60A /* SDLSecurityType.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D6EB4CC1BF28DC600693731 /* NSMapTable+SubscriptingSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6EB4CB1BF28DC600693731 /* NSMapTable+SubscriptingSpec.m */; };
- 5D6F7A2E1BC5650B0070BF37 /* SDLLifecycleConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D6F7A2C1BC5650B0070BF37 /* SDLLifecycleConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D6F7A2F1BC5650B0070BF37 /* SDLLifecycleConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6F7A2D1BC5650B0070BF37 /* SDLLifecycleConfiguration.m */; };
- 5D6F7A351BC5B9B60070BF37 /* SDLLockScreenViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D6F7A331BC5B9B60070BF37 /* SDLLockScreenViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D6F7A361BC5B9B60070BF37 /* SDLLockScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6F7A341BC5B9B60070BF37 /* SDLLockScreenViewController.m */; };
5D6F7A3E1BC811FC0070BF37 /* SDLAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D6F7A3D1BC811FC0070BF37 /* SDLAssets.xcassets */; };
5D75960D22972F830013207C /* TestSystemCapabilityObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D75960C22972F830013207C /* TestSystemCapabilityObserver.m */; };
- 5D75961122972FCA0013207C /* SDLSystemCapabilityObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D75960F22972FCA0013207C /* SDLSystemCapabilityObserver.h */; };
- 5D75961222972FCA0013207C /* SDLSystemCapabilityObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D75961022972FCA0013207C /* SDLSystemCapabilityObserver.m */; };
- 5D76750E22D8FB3700E8D71A /* SDLMenuLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D76750C22D8FB3700E8D71A /* SDLMenuLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D76750F22D8FB3700E8D71A /* SDLMenuLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76750D22D8FB3700E8D71A /* SDLMenuLayout.m */; };
- 5D76751322D9088F00E8D71A /* SDLMenuConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D76751122D9088F00E8D71A /* SDLMenuConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D76751422D9088F00E8D71A /* SDLMenuConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76751222D9088F00E8D71A /* SDLMenuConfiguration.m */; };
5D76751622D920FD00E8D71A /* SDLMenuConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76751522D920FD00E8D71A /* SDLMenuConfigurationSpec.m */; };
5D76751822D921CB00E8D71A /* SDLMenuLayoutSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76751722D921CB00E8D71A /* SDLMenuLayoutSpec.m */; };
5D76E31C1D3805FF00647CFA /* SDLLockScreenManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76E31B1D3805FF00647CFA /* SDLLockScreenManagerSpec.m */; };
- 5D76E3211D39742300647CFA /* SDLViewControllerPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D76E3201D39742300647CFA /* SDLViewControllerPresentable.h */; };
- 5D76E3241D39767000647CFA /* SDLLockScreenPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D76E3221D39767000647CFA /* SDLLockScreenPresenter.h */; };
- 5D76E3251D39767000647CFA /* SDLLockScreenPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76E3231D39767000647CFA /* SDLLockScreenPresenter.m */; };
5D76E3291D3D0A8800647CFA /* SDLFakeViewControllerPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76E3281D3D0A8800647CFA /* SDLFakeViewControllerPresenter.m */; };
5D76E32B1D3D52CA00647CFA /* SDLAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D6F7A3D1BC811FC0070BF37 /* SDLAssets.xcassets */; };
- 5D79A03B1CE36F030035797B /* SDLUploadFileOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D79A0391CE36F030035797B /* SDLUploadFileOperation.h */; };
- 5D79A03C1CE36F030035797B /* SDLUploadFileOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D79A03A1CE36F030035797B /* SDLUploadFileOperation.m */; };
- 5D7F87EB1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7F87E91CE3C1A1002DD7C4 /* SDLDeleteFileOperation.h */; };
- 5D7F87EC1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D7F87EA1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m */; };
- 5D7F87EF1CE3C294002DD7C4 /* SDLFileManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7F87ED1CE3C294002DD7C4 /* SDLFileManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D7F87F31CE3C29E002DD7C4 /* SDLFileWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7F87F11CE3C29E002DD7C4 /* SDLFileWrapper.h */; };
- 5D7F87F41CE3C29E002DD7C4 /* SDLFileWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D7F87F21CE3C29E002DD7C4 /* SDLFileWrapper.m */; };
- 5D82041A1BCD80BA00D0A41B /* SDLLockScreenConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8204181BCD80BA00D0A41B /* SDLLockScreenConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D82041B1BCD80BA00D0A41B /* SDLLockScreenConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8204191BCD80BA00D0A41B /* SDLLockScreenConfiguration.m */; };
- 5D82041E1BCD8E6100D0A41B /* SDLConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D82041C1BCD8E6100D0A41B /* SDLConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D82041F1BCD8E6100D0A41B /* SDLConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D82041D1BCD8E6100D0A41B /* SDLConfiguration.m */; };
- 5D8204221BCEA89A00D0A41B /* SDLFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8204201BCEA89A00D0A41B /* SDLFileManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D8204231BCEA89A00D0A41B /* SDLFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8204211BCEA89A00D0A41B /* SDLFileManager.m */; };
- 5D8204271BCEA8A600D0A41B /* SDLPermissionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8204251BCEA8A600D0A41B /* SDLPermissionManager.m */; };
- 5D82042D1BCEC32F00D0A41B /* SDLFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D82042B1BCEC32F00D0A41B /* SDLFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D82042E1BCEC32F00D0A41B /* SDLFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D82042C1BCEC32F00D0A41B /* SDLFile.m */; };
- 5D8204311BD001C700D0A41B /* SDLArtwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D82042F1BD001C700D0A41B /* SDLArtwork.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D8204321BD001C700D0A41B /* SDLArtwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8204301BD001C700D0A41B /* SDLArtwork.m */; };
5D850AB01D4907C500E6E7EE /* TestLockScreenAppIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 5D850AAF1D4907C500E6E7EE /* TestLockScreenAppIcon.png */; };
- 5D8A09811F54B4E5002502A2 /* SDLStreamingMediaManagerDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8A09801F54B4E5002502A2 /* SDLStreamingMediaManagerDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D8B174F1AC9D266006A6E1C /* SDLDialNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8B174D1AC9D266006A6E1C /* SDLDialNumber.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D8B17501AC9D266006A6E1C /* SDLDialNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8B174E1AC9D266006A6E1C /* SDLDialNumber.m */; };
- 5D8B17531AC9E11B006A6E1C /* SDLDialNumberResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8B17511AC9E11B006A6E1C /* SDLDialNumberResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D8B17541AC9E11B006A6E1C /* SDLDialNumberResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8B17521AC9E11B006A6E1C /* SDLDialNumberResponse.m */; };
5D8B17561AC9E399006A6E1C /* SDLDialNumberSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D8B17551AC9E399006A6E1C /* SDLDialNumberSpec.m */; };
- 5D92934D20AF4BEF00FCC775 /* SDLRGBColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92934B20AF4BEF00FCC775 /* SDLRGBColor.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D92934E20AF4BEF00FCC775 /* SDLRGBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92934C20AF4BEF00FCC775 /* SDLRGBColor.m */; };
5D92935020AF526200FCC775 /* SDLRGBColorSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92934F20AF526200FCC775 /* SDLRGBColorSpec.m */; };
- 5D92935320B2F76500FCC775 /* SDLTemplateColorScheme.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92935120B2F76500FCC775 /* SDLTemplateColorScheme.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D92935420B2F76500FCC775 /* SDLTemplateColorScheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92935220B2F76500FCC775 /* SDLTemplateColorScheme.m */; };
5D92935620B2FD7300FCC775 /* SDLTemplateColorSchemeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92935520B2FD7300FCC775 /* SDLTemplateColorSchemeSpec.m */; };
- 5D92935A20B33D4F00FCC775 /* SDLChoiceCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92935820B33D4F00FCC775 /* SDLChoiceCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D92935B20B33D4F00FCC775 /* SDLChoiceCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92935920B33D4F00FCC775 /* SDLChoiceCell.m */; };
- 5D92935E20B33FF700FCC775 /* SDLChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92935C20B33FF700FCC775 /* SDLChoiceSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D92935F20B33FF700FCC775 /* SDLChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92935D20B33FF700FCC775 /* SDLChoiceSet.m */; };
- 5D92936120B354BE00FCC775 /* SDLChoiceSetDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92936020B354BE00FCC775 /* SDLChoiceSetDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D92936320B3551600FCC775 /* SDLKeyboardDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92936220B3551600FCC775 /* SDLKeyboardDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D92936820B3601700FCC775 /* SDLChoiceSetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92936620B3601700FCC775 /* SDLChoiceSetManager.h */; };
- 5D92936920B3601700FCC775 /* SDLChoiceSetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92936720B3601700FCC775 /* SDLChoiceSetManager.m */; };
- 5D92937020B5E0E500FCC775 /* SDLDeleteChoicesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92936E20B5E0E500FCC775 /* SDLDeleteChoicesOperation.h */; };
- 5D92937120B5E0E500FCC775 /* SDLDeleteChoicesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92936F20B5E0E500FCC775 /* SDLDeleteChoicesOperation.m */; };
- 5D92937420B5EEA200FCC775 /* SDLPreloadChoicesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92937220B5EEA200FCC775 /* SDLPreloadChoicesOperation.h */; };
- 5D92937520B5EEA200FCC775 /* SDLPreloadChoicesOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92937320B5EEA200FCC775 /* SDLPreloadChoicesOperation.m */; };
- 5D92937820B6FB6200FCC775 /* SDLPresentChoiceSetOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92937620B6FB6200FCC775 /* SDLPresentChoiceSetOperation.h */; };
- 5D92937920B6FB6200FCC775 /* SDLPresentChoiceSetOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92937720B6FB6200FCC775 /* SDLPresentChoiceSetOperation.m */; };
- 5D92937C20B70A3E00FCC775 /* SDLPresentKeyboardOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92937A20B70A3E00FCC775 /* SDLPresentKeyboardOperation.h */; };
- 5D92937D20B70A3E00FCC775 /* SDLPresentKeyboardOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92937B20B70A3E00FCC775 /* SDLPresentKeyboardOperation.m */; };
- 5D92938020B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D92937E20B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.h */; };
- 5D92938120B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D92937F20B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.m */; };
5D9F50781BE7DD4C00FEF399 /* testFileJSON.json in Resources */ = {isa = PBXBuildFile; fileRef = 5D9F50721BE7DD4C00FEF399 /* testFileJSON.json */; };
5D9F50791BE7DD4C00FEF399 /* testImageBMP.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 5D9F50731BE7DD4C00FEF399 /* testImageBMP.bmp */; };
5D9F507A1BE7DD4C00FEF399 /* testImageJPEG.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = 5D9F50741BE7DD4C00FEF399 /* testImageJPEG.jpeg */; };
@@ -1136,13 +1481,6 @@
5D9F50811BE7E6E300FEF399 /* SDLPermissionsManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9F50801BE7E6E300FEF399 /* SDLPermissionsManagerSpec.m */; };
5D9F50831BEA5C6100FEF399 /* SDLFileManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9F50821BEA5C6100FEF399 /* SDLFileManagerSpec.m */; };
5D9F50871BED412E00FEF399 /* TestConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9F50861BED412E00FEF399 /* TestConnectionManager.m */; };
- 5D9FC29B1FD8812F00ACA5C2 /* SDLAudioStreamManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC29A1FD8812E00ACA5C2 /* SDLAudioStreamManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D9FC29E1FD8813900ACA5C2 /* SDLAudioStreamManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC29C1FD8813900ACA5C2 /* SDLAudioStreamManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D9FC29F1FD8813900ACA5C2 /* SDLAudioStreamManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FC29D1FD8813900ACA5C2 /* SDLAudioStreamManager.m */; };
- 5D9FC2A21FD8814A00ACA5C2 /* SDLAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FC2A01FD8814A00ACA5C2 /* SDLAudioFile.m */; };
- 5D9FC2A31FD8814A00ACA5C2 /* SDLAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC2A11FD8814A00ACA5C2 /* SDLAudioFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5D9FC2A61FD8815800ACA5C2 /* SDLPCMAudioConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC2A41FD8815800ACA5C2 /* SDLPCMAudioConverter.h */; };
- 5D9FC2A71FD8815800ACA5C2 /* SDLPCMAudioConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FC2A51FD8815800ACA5C2 /* SDLPCMAudioConverter.m */; };
5D9FDA8F1F2A7D3400A495C8 /* bson_array.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FDA891F2A7D3400A495C8 /* bson_array.c */; };
5D9FDA901F2A7D3400A495C8 /* bson_array.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FDA8A1F2A7D3400A495C8 /* bson_array.h */; };
5D9FDA911F2A7D3400A495C8 /* bson_object.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FDA8B1F2A7D3400A495C8 /* bson_object.c */; };
@@ -1153,12 +1491,6 @@
5D9FDA991F2A7D3F00A495C8 /* emhashmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FDA961F2A7D3F00A495C8 /* emhashmap.h */; };
5D9FDA9A1F2A7D3F00A495C8 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 5D9FDA971F2A7D3F00A495C8 /* LICENSE */; };
5DA026901AD44EE700019F86 /* SDLDialNumberResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA0268F1AD44EE700019F86 /* SDLDialNumberResponseSpec.m */; };
- 5DA102A41D4122C700C15826 /* NSMutableDictionary+SafeRemove.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA102A21D4122C700C15826 /* NSMutableDictionary+SafeRemove.h */; };
- 5DA102A51D4122C700C15826 /* NSMutableDictionary+SafeRemove.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA102A31D4122C700C15826 /* NSMutableDictionary+SafeRemove.m */; };
- 5DA150C72271FDC20032928D /* SDLSoftButtonTransitionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA150C52271FDC20032928D /* SDLSoftButtonTransitionOperation.h */; };
- 5DA150C82271FDC20032928D /* SDLSoftButtonTransitionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150C62271FDC20032928D /* SDLSoftButtonTransitionOperation.m */; };
- 5DA150CD2271FE180032928D /* SDLSoftButtonReplaceOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA150CB2271FE180032928D /* SDLSoftButtonReplaceOperation.h */; };
- 5DA150CE2271FE180032928D /* SDLSoftButtonReplaceOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150CC2271FE180032928D /* SDLSoftButtonReplaceOperation.m */; };
5DA150D1227367580032928D /* SDLSoftButtonTransitionOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150D0227367580032928D /* SDLSoftButtonTransitionOperationSpec.m */; };
5DA150D32273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150D22273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m */; };
5DA22CB71D075CF200245F5F /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DA22CB31D075CF200245F5F /* Nimble.framework */; };
@@ -1172,34 +1504,13 @@
5DA23FF31F2FA35C009C0313 /* SDLControlFramePayloadAudioStartServiceAckSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA23FF21F2FA35C009C0313 /* SDLControlFramePayloadAudioStartServiceAckSpec.m */; };
5DA23FF61F2FAA31009C0313 /* SDLControlFramePayloadRPCStartServiceSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA23FF51F2FAA31009C0313 /* SDLControlFramePayloadRPCStartServiceSpec.m */; };
5DA23FF81F2FAF2D009C0313 /* SDLControlFramePayloadRPCStartServiceAckSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA23FF71F2FAF2D009C0313 /* SDLControlFramePayloadRPCStartServiceAckSpec.m */; };
- 5DA23FFD1F312DBA009C0313 /* SDLVideoEncoderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA23FFC1F312DBA009C0313 /* SDLVideoEncoderDelegate.h */; };
- 5DA240001F325621009C0313 /* SDLStreamingMediaConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA23FFE1F325621009C0313 /* SDLStreamingMediaConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DA240011F325621009C0313 /* SDLStreamingMediaConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA23FFF1F325621009C0313 /* SDLStreamingMediaConfiguration.m */; };
- 5DA3F3541BC448060026F2D0 /* NSMapTable+Subscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA3F3521BC448060026F2D0 /* NSMapTable+Subscripting.h */; };
- 5DA3F3551BC448060026F2D0 /* NSMapTable+Subscripting.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA3F3531BC448060026F2D0 /* NSMapTable+Subscripting.m */; };
- 5DA3F35A1BC448480026F2D0 /* SDLError.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA3F3581BC448480026F2D0 /* SDLError.h */; };
- 5DA3F35B1BC448480026F2D0 /* SDLError.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA3F3591BC448480026F2D0 /* SDLError.m */; };
- 5DA3F35F1BC448590026F2D0 /* SDLNotificationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA3F35D1BC448590026F2D0 /* SDLNotificationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DA3F3601BC448590026F2D0 /* SDLNotificationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA3F35E1BC448590026F2D0 /* SDLNotificationConstants.m */; };
- 5DA3F3701BC4489A0026F2D0 /* SDLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA3F36E1BC4489A0026F2D0 /* SDLManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DA3F3711BC4489A0026F2D0 /* SDLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA3F36F1BC4489A0026F2D0 /* SDLManager.m */; };
- 5DA49CE51F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA49CE31F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.h */; };
- 5DA49CE61F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA49CE41F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.m */; };
- 5DA8A0E91E955F710039C50D /* SDLStreamingMediaManagerConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8966F31E56977C00413EAB /* SDLStreamingMediaManagerConstants.m */; };
- 5DA8A0EA1E955FE00039C50D /* SDLLogModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBF06301E64A9C600A5CF03 /* SDLLogModel.m */; };
5DAB5F512098994C00A020C8 /* SDLMenuCellSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAB5F502098994C00A020C8 /* SDLMenuCellSpec.m */; };
5DAB5F5320989A8300A020C8 /* SDLVoiceCommandSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAB5F5220989A8300A020C8 /* SDLVoiceCommandSpec.m */; };
- 5DAB5F562098E5D100A020C8 /* SDLProtocolConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DAB5F542098E5D100A020C8 /* SDLProtocolConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DAB5F572098E5D100A020C8 /* SDLProtocolConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAB5F552098E5D100A020C8 /* SDLProtocolConstants.m */; };
- 5DAD5F7F204DEDEB0025624C /* SDLScreenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DAD5F7D204DEDEB0025624C /* SDLScreenManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DAD5F80204DEDEB0025624C /* SDLScreenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAD5F7E204DEDEB0025624C /* SDLScreenManager.m */; };
5DAD5F8520507E1F0025624C /* SDLScreenManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAD5F8420507E1F0025624C /* SDLScreenManagerSpec.m */; };
5DAD5F87205087430025624C /* SDLTextAndGraphicManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAD5F86205087430025624C /* SDLTextAndGraphicManagerSpec.m */; };
5DAD5F8920508F090025624C /* SDLSoftButtonStateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAD5F8820508F090025624C /* SDLSoftButtonStateSpec.m */; };
5DAD5F8B20508F140025624C /* SDLSoftButtonObjectSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAD5F8A20508F140025624C /* SDLSoftButtonObjectSpec.m */; };
5DAD5F8D20508F220025624C /* SDLSoftButtonManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAD5F8C20508F220025624C /* SDLSoftButtonManagerSpec.m */; };
- 5DADA7751F4DFED60084D17D /* SDLRectangle.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DADA7731F4DFED60084D17D /* SDLRectangle.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DADA7761F4DFED60084D17D /* SDLRectangle.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DADA7741F4DFED60084D17D /* SDLRectangle.m */; };
5DADA7781F4E059E0084D17D /* SDLRectangleSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DADA7771F4E059E0084D17D /* SDLRectangleSpec.m */; };
5DAE06731BDEC6C000F9B498 /* SDLFileSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAE06721BDEC6C000F9B498 /* SDLFileSpec.m */; };
5DAE06751BDEC6D600F9B498 /* SDLArtworkSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DAE06741BDEC6D600F9B498 /* SDLArtworkSpec.m */; };
@@ -1217,58 +1528,18 @@
5DB92D241AC47B2C00C15BB0 /* SDLHexUtilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB92D231AC47B2C00C15BB0 /* SDLHexUtilitySpec.m */; };
5DB92D2D1AC4A34F00C15BB0 /* SDLPrioritizedObjectCollectionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB92D2C1AC4A34F00C15BB0 /* SDLPrioritizedObjectCollectionSpec.m */; };
5DB92D2F1AC59F0000C15BB0 /* SDLObjectWithPrioritySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB92D2E1AC59F0000C15BB0 /* SDLObjectWithPrioritySpec.m */; };
- 5DB92D321AC9C8BA00C15BB0 /* SDLRPCStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB92D301AC9C8BA00C15BB0 /* SDLRPCStruct.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DB92D331AC9C8BA00C15BB0 /* SDLRPCStruct.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB92D311AC9C8BA00C15BB0 /* SDLRPCStruct.m */; };
- 5DB9964E1F26886C002D8795 /* SDLControlFramePayloadEndService.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB9964C1F26886C002D8795 /* SDLControlFramePayloadEndService.h */; };
- 5DB9964F1F26886C002D8795 /* SDLControlFramePayloadEndService.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB9964D1F26886C002D8795 /* SDLControlFramePayloadEndService.m */; };
- 5DB996571F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB996551F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.h */; };
- 5DB996581F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB996561F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.m */; };
- 5DB9965C1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB9965A1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.h */; };
- 5DB9965D1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB9965B1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.m */; };
- 5DB996601F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB9965E1F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.h */; };
- 5DB996611F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB9965F1F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.m */; };
5DBAE0AB1D3588AC00CE00BF /* SDLNotificationDispatcherSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBAE0AA1D3588AC00CE00BF /* SDLNotificationDispatcherSpec.m */; };
5DBAE0AD1D368D1A00CE00BF /* SDLResponseDispatcherSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBAE0AC1D368D1A00CE00BF /* SDLResponseDispatcherSpec.m */; };
5DBEFA541F434B9E009EE295 /* SDLStreamingMediaConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBEFA531F434B9E009EE295 /* SDLStreamingMediaConfigurationSpec.m */; };
5DBEFA581F436132009EE295 /* SDLFakeSecurityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBEFA571F436132009EE295 /* SDLFakeSecurityManager.m */; };
- 5DBF06231E64A83F00A5CF03 /* SDLLogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DBF06211E64A83F00A5CF03 /* SDLLogManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DBF06241E64A83F00A5CF03 /* SDLLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBF06221E64A83F00A5CF03 /* SDLLogManager.m */; };
- 5DBF06271E64A91D00A5CF03 /* SDLLogFileModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DBF06251E64A91D00A5CF03 /* SDLLogFileModule.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DBF06281E64A91D00A5CF03 /* SDLLogFileModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBF06261E64A91D00A5CF03 /* SDLLogFileModule.m */; };
- 5DBF062A1E64A92C00A5CF03 /* SDLLogTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DBF06291E64A92C00A5CF03 /* SDLLogTarget.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DBF062D1E64A93A00A5CF03 /* SDLLogFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DBF062B1E64A93A00A5CF03 /* SDLLogFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DBF062E1E64A93A00A5CF03 /* SDLLogFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBF062C1E64A93A00A5CF03 /* SDLLogFilter.m */; };
- 5DBF06311E64A9C600A5CF03 /* SDLLogModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DBF062F1E64A9C600A5CF03 /* SDLLogModel.h */; };
- 5DBF06351E64A9FE00A5CF03 /* SDLLogConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DBF06331E64A9FE00A5CF03 /* SDLLogConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DBF06391E64ABBE00A5CF03 /* SDLLogConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DBF06371E64ABBE00A5CF03 /* SDLLogConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DBF063A1E64ABBE00A5CF03 /* SDLLogConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBF06381E64ABBE00A5CF03 /* SDLLogConfiguration.m */; };
5DBF0D5E1F3A68C0008AF2C9 /* SDLControlFramePayloadVideoStartServiceSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBF0D5D1F3A68C0008AF2C9 /* SDLControlFramePayloadVideoStartServiceSpec.m */; };
5DBF0D601F3B3DB4008AF2C9 /* SDLControlFrameVideoStartServiceAckSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBF0D5F1F3B3DB4008AF2C9 /* SDLControlFrameVideoStartServiceAckSpec.m */; };
5DC09EDA1F2F7FEC00F4AB1D /* SDLControlFramePayloadNakSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DC09ED91F2F7FEC00F4AB1D /* SDLControlFramePayloadNakSpec.m */; };
5DC49BDD237314B500B2B8F2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DC49BDC237314B500B2B8F2 /* SceneDelegate.swift */; };
5DC978261B7A38640012C2F1 /* SDLGlobalsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DC978251B7A38640012C2F1 /* SDLGlobalsSpec.m */; };
5DCC458D221C9F6600036C2F /* SDLVersionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCC458C221C9F6600036C2F /* SDLVersionSpec.m */; };
- 5DCD7AE01FCCA8D200A0FC7F /* SDLCarWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DCD7ADC1FCCA8D100A0FC7F /* SDLCarWindow.h */; };
- 5DCD7AE11FCCA8D200A0FC7F /* SDLCarWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCD7ADD1FCCA8D200A0FC7F /* SDLCarWindow.m */; };
- 5DCF76F51ACDBAD300BB647B /* SDLSendLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DCF76F31ACDBAD300BB647B /* SDLSendLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DCF76F61ACDBAD300BB647B /* SDLSendLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCF76F41ACDBAD300BB647B /* SDLSendLocation.m */; };
- 5DCF76F91ACDD7CD00BB647B /* SDLSendLocationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DCF76F71ACDD7CD00BB647B /* SDLSendLocationResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DCF76FA1ACDD7CD00BB647B /* SDLSendLocationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCF76F81ACDD7CD00BB647B /* SDLSendLocationResponse.m */; };
5DCF76FC1ACDDB4200BB647B /* SDLSendLocationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCF76FB1ACDDB4200BB647B /* SDLSendLocationSpec.m */; };
5DCF76FE1ACDDB5A00BB647B /* SDLSendLocationResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCF76FD1ACDDB5A00BB647B /* SDLSendLocationResponseSpec.m */; };
- 5DD60D98221C5D7D00A82A4F /* SDLVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD60D96221C5D7D00A82A4F /* SDLVersion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DD60D99221C5D7D00A82A4F /* SDLVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD60D97221C5D7D00A82A4F /* SDLVersion.m */; };
- 5DD67CB01E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD67CAE1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DD67CB11E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD67CAF1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m */; };
- 5DD67CB81E661C4A009CD394 /* SDLLogTargetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD67CB61E661C4A009CD394 /* SDLLogTargetFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DD67CB91E661C4A009CD394 /* SDLLogTargetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD67CB71E661C4A009CD394 /* SDLLogTargetFile.m */; };
- 5DD67CBC1E661C84009CD394 /* SDLLogTargetOSLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD67CBA1E661C84009CD394 /* SDLLogTargetOSLog.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DD67CBD1E661C84009CD394 /* SDLLogTargetOSLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD67CBB1E661C84009CD394 /* SDLLogTargetOSLog.m */; };
- 5DD67CC31E68AE82009CD394 /* SDLLogFileModuleMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD67CC11E68AE82009CD394 /* SDLLogFileModuleMap.h */; };
- 5DD67CC41E68AE82009CD394 /* SDLLogFileModuleMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD67CC21E68AE82009CD394 /* SDLLogFileModuleMap.m */; };
- 5DD67CC71E68B568009CD394 /* SDLLogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD67CC51E68B568009CD394 /* SDLLogMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DD8406220FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD8406020FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DD8406320FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD8406120FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.m */; };
5DD8406520FCE21A0082CE04 /* SDLElectronicParkBrakeStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD8406420FCE21A0082CE04 /* SDLElectronicParkBrakeStatusSpec.m */; };
5DE35E4520CAFC5D0034BE5A /* SDLChoiceCellSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE35E4420CAFC5D0034BE5A /* SDLChoiceCellSpec.m */; };
5DE35E4720CB0AB90034BE5A /* SDLChoiceSetSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE35E4620CB0AB90034BE5A /* SDLChoiceSetSpec.m */; };
@@ -1278,60 +1549,22 @@
5DE35E5220CB1C490034BE5A /* SDLPreloadChoicesOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE35E5120CB1C490034BE5A /* SDLPreloadChoicesOperationSpec.m */; };
5DE35E5420CB1C590034BE5A /* SDLPresentChoiceSetOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE35E5320CB1C590034BE5A /* SDLPresentChoiceSetOperationSpec.m */; };
5DE35E5620CB1C680034BE5A /* SDLPresentKeyboardOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE35E5520CB1C680034BE5A /* SDLPresentKeyboardOperationSpec.m */; };
- 5DE372A11ACB2ED300849FAA /* SDLHMICapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DE3729F1ACB2ED300849FAA /* SDLHMICapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DE372A21ACB2ED300849FAA /* SDLHMICapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE372A01ACB2ED300849FAA /* SDLHMICapabilities.m */; };
5DE372A41ACB336600849FAA /* SDLHMICapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DE372A31ACB336600849FAA /* SDLHMICapabilitiesSpec.m */; };
- 5DE5ABB71B0E38C90067BB02 /* SDLSystemRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBD21A84238B00846EE7 /* SDLSystemRequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 5DE5ABB81B0E38C90067BB02 /* SDLSystemRequestResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D61FBD41A84238B00846EE7 /* SDLSystemRequestResponse.h */; };
- 5DEF695B1FD6F82D004B8C2F /* SDLStreamingAudioManagerType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DEF695A1FD6F82D004B8C2F /* SDLStreamingAudioManagerType.h */; settings = {ATTRIBUTES = (Public, ); }; };
5DEF695D1FD6FA01004B8C2F /* testAudio.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 5DEF695C1FD6FA01004B8C2F /* testAudio.mp3 */; };
5DEF69611FD6FB75004B8C2F /* SDLAudioStreamManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DEF69601FD6FB75004B8C2F /* SDLAudioStreamManagerSpec.m */; };
5DEF69661FD6FEF7004B8C2F /* SDLStreamingAudioManagerMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DEF69651FD6FEF7004B8C2F /* SDLStreamingAudioManagerMock.m */; };
- 5DF40B22208E761A00DD6FDA /* SDLVoiceCommandManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DF40B20208E761A00DD6FDA /* SDLVoiceCommandManager.h */; };
- 5DF40B23208E761A00DD6FDA /* SDLVoiceCommandManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF40B21208E761A00DD6FDA /* SDLVoiceCommandManager.m */; };
5DF40B26208FA7DE00DD6FDA /* SDLMenuManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF40B25208FA7DE00DD6FDA /* SDLMenuManagerSpec.m */; };
5DF40B28208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */; };
- 5DFFB9151BD7C89700DB3F04 /* SDLConnectionManagerType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DFFB9141BD7C89700DB3F04 /* SDLConnectionManagerType.h */; };
- 752ECDB6228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = 752ECDB4228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h */; };
- 752ECDB7228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */ = {isa = PBXBuildFile; fileRef = 752ECDB5228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m */; };
752ECDB9228C42E100D945F4 /* SDLMenuRunScoreSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 752ECDB8228C42E100D945F4 /* SDLMenuRunScoreSpec.m */; };
752ECDBB228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 752ECDBA228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m */; };
- 7538764F22D8CEDB00FE8484 /* SDLShowAppMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 7538764D22D8CEDB00FE8484 /* SDLShowAppMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 7538765022D8CEDB00FE8484 /* SDLShowAppMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 7538764E22D8CEDB00FE8484 /* SDLShowAppMenu.m */; };
- 7538765322D8D95100FE8484 /* SDLShowAppMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 7538765122D8D95100FE8484 /* SDLShowAppMenuResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 7538765422D8D95100FE8484 /* SDLShowAppMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 7538765222D8D95100FE8484 /* SDLShowAppMenuResponse.m */; };
7538765622DCAF5400FE8484 /* SDLShowAppMenuSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 7538765522DCAF5400FE8484 /* SDLShowAppMenuSpec.m */; };
- 755F176222A00B7C0041B9CB /* SDLMenuManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 755F176122A00B7C0041B9CB /* SDLMenuManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 756C62762289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h in Headers */ = {isa = PBXBuildFile; fileRef = 756C62742289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h */; };
- 756C62772289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m in Sources */ = {isa = PBXBuildFile; fileRef = 756C62752289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m */; };
75CE2041233D335100B9DEF9 /* SDLGetDTCsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824B1A9BDE8A00906325 /* SDLGetDTCsSpec.m */; };
75FF2E3822DF9D5900D0C13B /* SDLShowAppMenuResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 75FF2E3722DF9D5900D0C13B /* SDLShowAppMenuResponseSpec.m */; };
- 75FF2E3B22E0DD5400D0C13B /* SDLMsgVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 75FF2E3922E0DD5400D0C13B /* SDLMsgVersion.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 75FF2E3C22E0DD5400D0C13B /* SDLMsgVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 75FF2E3A22E0DD5400D0C13B /* SDLMsgVersion.m */; };
- 880245A420F79C3400ED195B /* SDLFileManagerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 880245A220F79C3400ED195B /* SDLFileManagerConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 880245A520F79C3400ED195B /* SDLFileManagerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 880245A320F79C3400ED195B /* SDLFileManagerConfiguration.m */; };
- 8803DCEF22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8803DCED22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h */; };
- 8803DCF022C2B84B00FBB7CE /* SDLBackgroundTaskManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8803DCEE22C2B84B00FBB7CE /* SDLBackgroundTaskManager.m */; };
- 880723EB23A2CFB4003D0489 /* SDLLockScreenRootViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 880723E923A2CFB4003D0489 /* SDLLockScreenRootViewController.h */; };
- 880723EC23A2CFB4003D0489 /* SDLLockScreenRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 880723EA23A2CFB4003D0489 /* SDLLockScreenRootViewController.m */; };
880D267A220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D2679220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m */; };
- 880D267D220DE5DF00B3F496 /* SDLWeatherServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 880D267B220DE5DF00B3F496 /* SDLWeatherServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 880D267E220DE5DF00B3F496 /* SDLWeatherServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D267C220DE5DF00B3F496 /* SDLWeatherServiceManifest.m */; };
880D2680220E038800B3F496 /* SDLWeatherServiceManifestSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D267F220E038800B3F496 /* SDLWeatherServiceManifestSpec.m */; };
- 880E35B42088F75A00181259 /* SDLSystemCapabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */; };
- 880E35B52088F75A00181259 /* SDLSystemCapabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
880E35B82088F78E00181259 /* SDLSystemCapabilityManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 880E35B72088F78E00181259 /* SDLSystemCapabilityManagerSpec.m */; };
- 880FE6272267AE5300723732 /* SDLIAPConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 880FE6252267AE5300723732 /* SDLIAPConstants.h */; };
- 880FE6282267AE5300723732 /* SDLIAPConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 880FE6262267AE5300723732 /* SDLIAPConstants.m */; };
- 8815D0EF22330753000F24E6 /* SDLRPCRequestNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D6F17E22319FE000D4BFB3 /* SDLRPCRequestNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
8815D0F022330765000F24E6 /* SDLRPCRequestNotificationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C23E8522297BD500EA171F /* SDLRPCRequestNotificationSpec.m */; };
- 8815D0F122330781000F24E6 /* SDLRPCRequestNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D6F17D22319FE000D4BFB3 /* SDLRPCRequestNotification.m */; };
8816772922208B82001FACFF /* SDLNavigationInstructionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8816772822208B82001FACFF /* SDLNavigationInstructionSpec.m */; };
- 8816772C222097C3001FACFF /* SDLNavigationServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8816772A222097C3001FACFF /* SDLNavigationServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8816772D222097C3001FACFF /* SDLNavigationServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8816772B222097C3001FACFF /* SDLNavigationServiceData.m */; };
- 8817C2802289F4B900DB2DEC /* SDLIAPDataSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8817C27F2289F41D00DB2DEC /* SDLIAPDataSessionDelegate.h */; };
- 8818ADD82100FC18007D6F19 /* SDLTurnSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8818ADD62100FC18007D6F19 /* SDLTurnSignal.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8818ADD92100FC18007D6F19 /* SDLTurnSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8818ADD72100FC18007D6F19 /* SDLTurnSignal.m */; };
8818ADDD2100FE0C007D6F19 /* SDLTurnSignalSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8818ADDC2100FE0C007D6F19 /* SDLTurnSignalSpec.m */; };
881F388D22D904BE00DF6DCE /* SDLCancelInteractionResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 881F388C22D904BE00DF6DCE /* SDLCancelInteractionResponseSpec.m */; };
8829568B207CF68800EF056C /* SmartDeviceLink.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D61FA1C1A84237100846EE7 /* SmartDeviceLink.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
@@ -1341,58 +1574,22 @@
8831FA392201E3D100B8FFB7 /* SDLAppServiceManifestSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8831FA382201E3D100B8FFB7 /* SDLAppServiceManifestSpec.m */; };
8831FA3D220207DA00B8FFB7 /* SDLServiceUpdateReasonSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8831FA3C220207DA00B8FFB7 /* SDLServiceUpdateReasonSpec.m */; };
8831FA3F2202227000B8FFB7 /* SDLAppServiceTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8831FA3E2202227000B8FFB7 /* SDLAppServiceTypeSpec.m */; };
- 8831FA4222022AB300B8FFB7 /* SDLAppServiceCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 8831FA4022022AB300B8FFB7 /* SDLAppServiceCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8831FA4322022AB300B8FFB7 /* SDLAppServiceCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8831FA4122022AB300B8FFB7 /* SDLAppServiceCapability.m */; };
8831FA452202307500B8FFB7 /* SDLAppServiceCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8831FA442202307500B8FFB7 /* SDLAppServiceCapabilitySpec.m */; };
- 8831FA48220235B000B8FFB7 /* SDLAppServicesCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8831FA46220235B000B8FFB7 /* SDLAppServicesCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8831FA49220235B000B8FFB7 /* SDLAppServicesCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8831FA47220235B000B8FFB7 /* SDLAppServicesCapabilities.m */; };
8831FA4B2202402B00B8FFB7 /* SDLAppServicesCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8831FA4A2202402B00B8FFB7 /* SDLAppServicesCapabilitiesSpec.m */; };
- 883468F7234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 883468F5234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 883468F8234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 883468F6234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.m */; };
883468FA234BBBE1003F51E5 /* SDLStreamingVideoScaleManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 883468F9234BBBE1003F51E5 /* SDLStreamingVideoScaleManagerSpec.m */; };
883581B022D659BE00405C42 /* SDLCloseApplicationResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 883581AF22D659BE00405C42 /* SDLCloseApplicationResponseSpec.m */; };
- 883C22C8222ED84D00939C4C /* SDLRPCFunctionNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 883C22C6222ED84D00939C4C /* SDLRPCFunctionNames.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 883C22C9222ED84D00939C4C /* SDLRPCFunctionNames.m in Sources */ = {isa = PBXBuildFile; fileRef = 883C22C7222ED84D00939C4C /* SDLRPCFunctionNames.m */; };
883C22CB222EEF0900939C4C /* SDLRPCFunctionNamesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 883C22CA222EEF0900939C4C /* SDLRPCFunctionNamesSpec.m */; };
- 884554AC222453A800BAFB6C /* SDLNavigationServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 884554AA222453A800BAFB6C /* SDLNavigationServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 884554AD222453A800BAFB6C /* SDLNavigationServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 884554AB222453A800BAFB6C /* SDLNavigationServiceManifest.m */; };
884554AF2224554300BAFB6C /* SDLNavigationServiceManifestSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 884554AE2224554300BAFB6C /* SDLNavigationServiceManifestSpec.m */; };
884AF94C220B3FCC00E22928 /* SDLGetSystemCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 884AF94B220B3FCC00E22928 /* SDLGetSystemCapabilitySpec.m */; };
- 884AF94F220B488900E22928 /* SDLOnSystemCapabilityUpdated.h in Headers */ = {isa = PBXBuildFile; fileRef = 884AF94D220B488900E22928 /* SDLOnSystemCapabilityUpdated.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 884AF950220B488900E22928 /* SDLOnSystemCapabilityUpdated.m in Sources */ = {isa = PBXBuildFile; fileRef = 884AF94E220B488900E22928 /* SDLOnSystemCapabilityUpdated.m */; };
- 884E701B21FB8D0F008D53BA /* SDLPublishAppService.h in Headers */ = {isa = PBXBuildFile; fileRef = 884E701921FB8D0F008D53BA /* SDLPublishAppService.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 884E701C21FB8D0F008D53BA /* SDLPublishAppService.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E701A21FB8D0F008D53BA /* SDLPublishAppService.m */; };
- 884E701F21FB983F008D53BA /* SDLAppServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 884E701D21FB983F008D53BA /* SDLAppServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 884E702021FB983F008D53BA /* SDLAppServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E701E21FB983F008D53BA /* SDLAppServiceManifest.m */; };
- 884E702321FBA952008D53BA /* SDLAppServiceType.h in Headers */ = {isa = PBXBuildFile; fileRef = 884E702121FBA952008D53BA /* SDLAppServiceType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 884E702421FBA952008D53BA /* SDLAppServiceType.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E702221FBA952008D53BA /* SDLAppServiceType.m */; };
- 884E702721FBAC5B008D53BA /* SDLServiceUpdateReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 884E702521FBAC5B008D53BA /* SDLServiceUpdateReason.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 884E702821FBAC5B008D53BA /* SDLServiceUpdateReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E702621FBAC5B008D53BA /* SDLServiceUpdateReason.m */; };
- 884E702B21FBB151008D53BA /* SDLAppServiceRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 884E702921FBB151008D53BA /* SDLAppServiceRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 884E702C21FBB151008D53BA /* SDLAppServiceRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E702A21FBB151008D53BA /* SDLAppServiceRecord.m */; };
8850DB601F4475D30053A48D /* TestMultipleFilesConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8850DB5F1F4475D30053A48D /* TestMultipleFilesConnectionManager.m */; };
- 8854682F2225BDAE00994D8D /* SDLHybridAppPreference.h in Headers */ = {isa = PBXBuildFile; fileRef = 8854682D2225BDAE00994D8D /* SDLHybridAppPreference.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 885468302225BDAE00994D8D /* SDLHybridAppPreference.m in Sources */ = {isa = PBXBuildFile; fileRef = 8854682E2225BDAE00994D8D /* SDLHybridAppPreference.m */; };
885468322225BF2800994D8D /* SDLHybridAppPreferenceSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 885468312225BF2800994D8D /* SDLHybridAppPreferenceSpec.m */; };
- 885468352225C1F800994D8D /* SDLCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 885468332225C1F800994D8D /* SDLCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 885468362225C1F800994D8D /* SDLCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 885468342225C1F800994D8D /* SDLCloudAppProperties.m */; };
885468382225CBA400994D8D /* SDLCloudAppPropertiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 885468372225CBA400994D8D /* SDLCloudAppPropertiesSpec.m */; };
8855F9E0220C93B700A5C897 /* SDLWeatherDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8855F9DF220C93B700A5C897 /* SDLWeatherDataSpec.m */; };
- 8855F9E3220CB04000A5C897 /* SDLOnAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8855F9E1220CB04000A5C897 /* SDLOnAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8855F9E4220CB04000A5C897 /* SDLOnAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8855F9E2220CB04000A5C897 /* SDLOnAppServiceData.m */; };
8855F9E6220CB60700A5C897 /* SDLOnAppServiceDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8855F9E5220CB60700A5C897 /* SDLOnAppServiceDataSpec.m */; };
- 8855F9E9220CBA9200A5C897 /* SDLGetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8855F9E7220CBA9200A5C897 /* SDLGetFile.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8855F9EA220CBA9200A5C897 /* SDLGetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8855F9E8220CBA9200A5C897 /* SDLGetFile.m */; };
8855F9EC220CBFB700A5C897 /* SDLGetFileSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8855F9EB220CBFB700A5C897 /* SDLGetFileSpec.m */; };
8863747E22D650DE00D2671F /* SDLCloseApplicationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8863747D22D650DE00D2671F /* SDLCloseApplicationSpec.m */; };
- 88665B69220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 88665B67220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88665B6A220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88665B68220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.m */; };
88665B6C220B796A00D9DA77 /* SDLPerformAppServiceInteractionResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88665B6B220B796A00D9DA77 /* SDLPerformAppServiceInteractionResponseSpec.m */; };
- 88665B73220B80F400D9DA77 /* SDLWeatherAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 88665B71220B80F400D9DA77 /* SDLWeatherAlert.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88665B74220B80F400D9DA77 /* SDLWeatherAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 88665B72220B80F400D9DA77 /* SDLWeatherAlert.m */; };
8877F5EB1F34A3BE00DC128A /* SDLSendHapticDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8877F5EA1F34A3BE00DC128A /* SDLSendHapticDataSpec.m */; };
- 8877F5EE1F34A72200DC128A /* SDLSendHapticDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8877F5EC1F34A72200DC128A /* SDLSendHapticDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8877F5EF1F34A72200DC128A /* SDLSendHapticDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8877F5ED1F34A72200DC128A /* SDLSendHapticDataResponse.m */; };
8877F5F11F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8877F5F01F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m */; };
887BE4D422272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 887BE4D322272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m */; };
88802FE920853AE600E9EBC6 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 5D9FDA971F2A7D3F00A495C8 /* LICENSE */; };
@@ -1402,152 +1599,64 @@
88802FF420853BED00E9EBC6 /* SmartDeviceLinkSwift.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D4346631E6F38E600B639C6 /* SmartDeviceLinkSwift.h */; settings = {ATTRIBUTES = (Public, ); }; };
88802FF520853CD500E9EBC6 /* SmartDeviceLinkSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */; };
88802FF620853CD500E9EBC6 /* SmartDeviceLinkSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 8880D24722205B1B00964F6A /* SDLNavigationInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 8880D24522205B1B00964F6A /* SDLNavigationInstruction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8880D24822205B1B00964F6A /* SDLNavigationInstruction.m in Sources */ = {isa = PBXBuildFile; fileRef = 8880D24622205B1B00964F6A /* SDLNavigationInstruction.m */; };
- 8881AFAC2225D61900EA870B /* SDLSetCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFAA2225D61900EA870B /* SDLSetCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8881AFAD2225D61900EA870B /* SDLSetCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFAB2225D61900EA870B /* SDLSetCloudAppProperties.m */; };
8881AFAF2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFAE2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m */; };
- 8881AFB22225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFB02225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8881AFB32225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFB12225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m */; };
8881AFB52225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFB42225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m */; };
- 8881AFB82225E5EE00EA870B /* SDLGetCloudAppProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFB62225E5EE00EA870B /* SDLGetCloudAppProperties.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8881AFB92225E5EE00EA870B /* SDLGetCloudAppProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFB72225E5EE00EA870B /* SDLGetCloudAppProperties.m */; };
8881AFBB2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFBA2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m */; };
- 8881AFBE2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8881AFBC2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8881AFBF2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFBD2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m */; };
8881AFC12225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8881AFC02225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m */; };
8886EB982111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8886EB972111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m */; };
- 888DBAEB22D52431002A0AE2 /* SDLCloseApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 888DBAE922D52431002A0AE2 /* SDLCloseApplication.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 888DBAEC22D52431002A0AE2 /* SDLCloseApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 888DBAEA22D52431002A0AE2 /* SDLCloseApplication.m */; };
- 888DBAEF22D528DE002A0AE2 /* SDLCloseApplicationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 888DBAED22D528DE002A0AE2 /* SDLCloseApplicationResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 888DBAF022D528DE002A0AE2 /* SDLCloseApplicationResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 888DBAEE22D528DE002A0AE2 /* SDLCloseApplicationResponse.m */; };
- 888F86FE221DEE200052FE4C /* SDLAsynchronousRPCOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 888F86FD221DEE1F0052FE4C /* SDLAsynchronousRPCOperation.m */; };
888F8700221DF4880052FE4C /* SDLAsynchronousRPCOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 888F86FF221DF4880052FE4C /* SDLAsynchronousRPCOperationSpec.m */; };
- 889E7BAF249CEE07002E4BE1 /* SubscribeButtonManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889E7BAD249CEDCF002E4BE1 /* SubscribeButtonManager.swift */; };
- 889E7BB2249D0877002E4BE1 /* SubscribeButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 889E7BB1249D0877002E4BE1 /* SubscribeButtonManager.m */; };
- 88A098AE2476F0C200A50005 /* SDLSubscribeButtonManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A098AC2476F0C200A50005 /* SDLSubscribeButtonManager.h */; };
- 88A098AF2476F0C200A50005 /* SDLSubscribeButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A098AD2476F0C200A50005 /* SDLSubscribeButtonManager.m */; };
- 88A098B224770E7100A50005 /* SDLSubscribeButtonObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A098B024770E7100A50005 /* SDLSubscribeButtonObserver.h */; };
- 88A098B324770E7100A50005 /* SDLSubscribeButtonObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A098B124770E7100A50005 /* SDLSubscribeButtonObserver.m */; };
+ 889D0B9624D065EE008AD494 /* SDLSubtleAlertResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 889D0B9524D065EE008AD494 /* SDLSubtleAlertResponseSpec.m */; };
+ 889D0B9824D06E52008AD494 /* SDLSubtleAlertSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 889D0B9724D06E52008AD494 /* SDLSubtleAlertSpec.m */; };
+ 889D0B9E24D07FF8008AD494 /* SDLOnSubtleAlertPressedSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 889D0B9D24D07FF8008AD494 /* SDLOnSubtleAlertPressedSpec.m */; };
88A118272412ACAD00B45FB5 /* SDLStreamingMediaManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA661E2B1E553E7E001C1345 /* SDLStreamingMediaManagerSpec.m */; };
88A1CF1E21669AC7001ACC75 /* SDLLifecycleConfigurationUpdateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A1CF1D21669AC7001ACC75 /* SDLLifecycleConfigurationUpdateSpec.m */; };
88A4A0FA22242AB400C6F01D /* SDLNavigationServiceDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A4A0F922242AB400C6F01D /* SDLNavigationServiceDataSpec.m */; };
88A5E7F4220B57F900495E8A /* SDLOnSystemCapabilityUpdatedSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A5E7F3220B57F900495E8A /* SDLOnSystemCapabilityUpdatedSpec.m */; };
- 88A5E7F7220B5BBC00495E8A /* SDLGetAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A5E7F5220B5BBC00495E8A /* SDLGetAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88A5E7F8220B5BBC00495E8A /* SDLGetAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A5E7F6220B5BBC00495E8A /* SDLGetAppServiceData.m */; };
88A5E7FA220B60EC00495E8A /* SDLGetAppServiceDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A5E7F9220B60EC00495E8A /* SDLGetAppServiceDataSpec.m */; };
- 88A5E7FD220B642200495E8A /* SDLGetAppServiceDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A5E7FB220B642200495E8A /* SDLGetAppServiceDataResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88A5E7FE220B642200495E8A /* SDLGetAppServiceDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A5E7FC220B642200495E8A /* SDLGetAppServiceDataResponse.m */; };
- 88A795D22106787400056542 /* SDLStaticIconName.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A795D02106787400056542 /* SDLStaticIconName.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88A795D32106787400056542 /* SDLStaticIconName.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A795D12106787400056542 /* SDLStaticIconName.m */; };
88A795D5210678E000056542 /* SDLStaticIconNameSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A795D4210678E000056542 /* SDLStaticIconNameSpec.m */; };
- 88A7A3C6220CCEA100A9E435 /* SDLGetFileResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A7A3C4220CCEA100A9E435 /* SDLGetFileResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88A7A3C7220CCEA100A9E435 /* SDLGetFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A7A3C5220CCEA100A9E435 /* SDLGetFileResponse.m */; };
88A81F6C2200FD4A00A691A9 /* SDLAppServiceRecordSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88A81F6B2200FD4A00A691A9 /* SDLAppServiceRecordSpec.m */; };
- 88AAD4BC2211B76800F1E6D7 /* SDLMediaServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 88AAD4BA2211B76800F1E6D7 /* SDLMediaServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88AAD4BD2211B76800F1E6D7 /* SDLMediaServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 88AAD4BB2211B76800F1E6D7 /* SDLMediaServiceManifest.m */; };
88AAD4C02211B7E200F1E6D7 /* SDLMediaServiceManifestSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88AAD4BF2211B7E200F1E6D7 /* SDLMediaServiceManifestSpec.m */; };
88AF11D9220B66FD00A59985 /* SDLGetAppServiceDataResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88AF11D8220B66FD00A59985 /* SDLGetAppServiceDataResponseSpec.m */; };
- 88AF11DC220B6B3D00A59985 /* SDLPerformAppServiceInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 88AF11DA220B6B3D00A59985 /* SDLPerformAppServiceInteraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88AF11DD220B6B3D00A59985 /* SDLPerformAppServiceInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 88AF11DB220B6B3D00A59985 /* SDLPerformAppServiceInteraction.m */; };
- 88B3BF9820DA859800943565 /* SDLFuelType.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B3BF9620DA859800943565 /* SDLFuelType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88B3BF9920DA859800943565 /* SDLFuelType.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B3BF9720DA859800943565 /* SDLFuelType.m */; };
- 88B3BF9C20DA8BBC00943565 /* SDLFuelRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B3BF9A20DA8BBC00943565 /* SDLFuelRange.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88B3BF9D20DA8BBC00943565 /* SDLFuelRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B3BF9B20DA8BBC00943565 /* SDLFuelRange.m */; };
88B3BFA020DA8FD000943565 /* SDLFuelTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B3BF9F20DA8FD000943565 /* SDLFuelTypeSpec.m */; };
88B3BFA220DA911E00943565 /* SDLFuelRangeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B3BFA120DA911E00943565 /* SDLFuelRangeSpec.m */; };
- 88B58DBA222040FF0011B063 /* SDLDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B58DB8222040FF0011B063 /* SDLDirection.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88B58DBB222040FF0011B063 /* SDLDirection.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B58DB9222040FF0011B063 /* SDLDirection.m */; };
88B58DBD222042500011B063 /* SDLDirectionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B58DBC222042500011B063 /* SDLDirectionSpec.m */; };
- 88B58DC0222045320011B063 /* SDLNavigationJunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B58DBE222045320011B063 /* SDLNavigationJunction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88B58DC1222045320011B063 /* SDLNavigationJunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B58DBF222045320011B063 /* SDLNavigationJunction.m */; };
88B58DC3222047F50011B063 /* SDLNavigationJunctionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B58DC2222047F50011B063 /* SDLNavigationJunctionSpec.m */; };
- 88B58DC622204AF10011B063 /* SDLNavigationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 88B58DC422204AF10011B063 /* SDLNavigationAction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88B58DC722204AF10011B063 /* SDLNavigationAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B58DC522204AF10011B063 /* SDLNavigationAction.m */; };
88B58DC922204C9E0011B063 /* SDLNavigationActionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B58DC822204C9E0011B063 /* SDLNavigationActionSpec.m */; };
88B848C31F45E1A600DED768 /* TestResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B848C21F45E1A600DED768 /* TestResponse.m */; };
88B848C91F462E3600DED768 /* TestFileProgressResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B848C81F462E3600DED768 /* TestFileProgressResponse.m */; };
- 88B8657924A102AB003491AD /* TestSubscribeButtonObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B8657624A0FEB7003491AD /* TestSubscribeButtonObserver.m */; };
- 88BCEA922266250B00BB7E70 /* SDLIAPControlSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 88BCEA902266250B00BB7E70 /* SDLIAPControlSession.h */; };
- 88BCEA932266250B00BB7E70 /* SDLIAPControlSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 88BCEA912266250B00BB7E70 /* SDLIAPControlSession.m */; };
+ 88BB8054250136670025E9C8 /* SDLLockScreenStatusInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 88BB8050250136660025E9C8 /* SDLLockScreenStatusInfo.h */; };
+ 88BB8055250136670025E9C8 /* SDLLockScreenStatusInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 88BB8051250136660025E9C8 /* SDLLockScreenStatusInfo.m */; };
88BCEA952266592D00BB7E70 /* SDLIAPControlSessionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88BCEA942266592D00BB7E70 /* SDLIAPControlSessionSpec.m */; };
88C23E8822297C6000EA171F /* SDLRPCResponseNotificationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C23E8722297C6000EA171F /* SDLRPCResponseNotificationSpec.m */; };
88C23E8A22297DE400EA171F /* SDLRPCNotificationNotificationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C23E8922297DE400EA171F /* SDLRPCNotificationNotificationSpec.m */; };
88C282CA220CD17200D02F90 /* SDLGetFileResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C282C9220CD17200D02F90 /* SDLGetFileResponseSpec.m */; };
- 88C37F632204EBF000901DC6 /* SDLAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88C37F612204EBF000901DC6 /* SDLAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88C37F642204EBF000901DC6 /* SDLAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C37F622204EBF000901DC6 /* SDLAppServiceData.m */; };
88D0E5D624786580009469AB /* SDLSubscribeButtonManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D0E5D524786580009469AB /* SDLSubscribeButtonManagerSpec.m */; };
88D0E5D824786770009469AB /* SDLSubscribeButtonObserverSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D0E5D724786770009469AB /* SDLSubscribeButtonObserverSpec.m */; };
88D2AAE41F682BB20078D5B2 /* SDLLogConstantsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D2AAE31F682BB20078D5B2 /* SDLLogConstantsSpec.m */; };
- 88D3EBC92267949D00493C38 /* SDLIAPDataSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D3EBC72267949D00493C38 /* SDLIAPDataSession.h */; };
- 88D3EBCA2267949D00493C38 /* SDLIAPDataSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D3EBC82267949D00493C38 /* SDLIAPDataSession.m */; };
- 88D5EB37220CD95000EC3782 /* SDLWeatherServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D5EB35220CD95000EC3782 /* SDLWeatherServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88D5EB38220CD95000EC3782 /* SDLWeatherServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D5EB36220CD95000EC3782 /* SDLWeatherServiceData.m */; };
- 88D99DB52289C82F0039E047 /* SDLIAPControlSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D99DB42289BFBE0039E047 /* SDLIAPControlSessionDelegate.h */; };
88DDD0F9229ECA57002F9623 /* SDLIAPConstantsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DDD0F8229ECA57002F9623 /* SDLIAPConstantsSpec.m */; };
88DF998D22035CC600477AC1 /* EAAccessory+OCMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DF998C22035CC600477AC1 /* EAAccessory+OCMock.m */; };
88DF998F22035D1700477AC1 /* SDLIAPSessionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DF998E22035D1700477AC1 /* SDLIAPSessionSpec.m */; };
88DF999122035D5A00477AC1 /* SDLIAPTransportSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DF999022035D5A00477AC1 /* SDLIAPTransportSpec.m */; };
- 88E6F1A7220E1588006156F9 /* SDLMediaType.h in Headers */ = {isa = PBXBuildFile; fileRef = 88E6F1A5220E1588006156F9 /* SDLMediaType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88E6F1A8220E1588006156F9 /* SDLMediaType.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E6F1A6220E1588006156F9 /* SDLMediaType.m */; };
88E6F1AA220E1720006156F9 /* SDLMediaTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E6F1A9220E1720006156F9 /* SDLMediaTypeSpec.m */; };
- 88E6F1AD220E19DF006156F9 /* SDLMediaServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88E6F1AB220E19DF006156F9 /* SDLMediaServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88E6F1AE220E19DF006156F9 /* SDLMediaServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E6F1AC220E19DF006156F9 /* SDLMediaServiceData.m */; };
88E6F1B0220E25B2006156F9 /* SDLMediaServiceDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E6F1AF220E25B2006156F9 /* SDLMediaServiceDataSpec.m */; };
+ 88EE1A452502DB3100FFEBA9 /* SDLLockScreenConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EE1A442502DB3100FFEBA9 /* SDLLockScreenConstants.h */; };
88EEC5B8220A2144005AA2F9 /* SDLPublishAppServiceSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EEC5B7220A2144005AA2F9 /* SDLPublishAppServiceSpec.m */; };
- 88EEC5BB220A327B005AA2F9 /* SDLPublishAppServiceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EEC5B9220A327B005AA2F9 /* SDLPublishAppServiceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88EEC5BC220A327B005AA2F9 /* SDLPublishAppServiceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EEC5BA220A327B005AA2F9 /* SDLPublishAppServiceResponse.m */; };
88EEC5BE220A3B8B005AA2F9 /* SDLPublishAppServiceResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EEC5BD220A3B8B005AA2F9 /* SDLPublishAppServiceResponseSpec.m */; };
- 88EED8381F33AE1700E6C42E /* SDLHapticRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EED8361F33AE1700E6C42E /* SDLHapticRect.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88EED8391F33AE1700E6C42E /* SDLHapticRect.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EED8371F33AE1700E6C42E /* SDLHapticRect.m */; };
88EED83B1F33BECB00E6C42E /* SDLHapticRectSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */; };
- 88EED83E1F33C5A400E6C42E /* SDLSendHapticData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EED83C1F33C5A400E6C42E /* SDLSendHapticData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88EED83F1F33C5A400E6C42E /* SDLSendHapticData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EED83D1F33C5A400E6C42E /* SDLSendHapticData.m */; };
- 88EF8EB722D8E02E00CB06C2 /* SDLCancelInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EF8EB522D8E02E00CB06C2 /* SDLCancelInteraction.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88EF8EB822D8E02E00CB06C2 /* SDLCancelInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EF8EB622D8E02E00CB06C2 /* SDLCancelInteraction.m */; };
88EF8EBA22D8F48300CB06C2 /* SDLCancelInteractionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EF8EB922D8F48300CB06C2 /* SDLCancelInteractionSpec.m */; };
- 88EF8EBD22D8FE5800CB06C2 /* SDLCancelInteractionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EF8EBB22D8FE5800CB06C2 /* SDLCancelInteractionResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88EF8EBE22D8FE5800CB06C2 /* SDLCancelInteractionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EF8EBC22D8FE5800CB06C2 /* SDLCancelInteractionResponse.m */; };
88F37A4D226F84BE00DF119B /* SDLIAPDataSessionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F37A4C226F84BE00DF119B /* SDLIAPDataSessionSpec.m */; };
88F50D5F220B720E00F34648 /* SDLPerformAppServiceInteractionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F50D5E220B720E00F34648 /* SDLPerformAppServiceInteractionSpec.m */; };
88F65133220C6DC300CAF321 /* SDLWeatherAlertSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F65132220C6DC300CAF321 /* SDLWeatherAlertSpec.m */; };
- 88F65136220C74FD00CAF321 /* SDLWeatherData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88F65134220C74FD00CAF321 /* SDLWeatherData.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88F65137220C74FD00CAF321 /* SDLWeatherData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F65135220C74FD00CAF321 /* SDLWeatherData.m */; };
- 88F89103221DE29A00E056AD /* SDLAsynchronousRPCOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 88F89101221DE29A00E056AD /* SDLAsynchronousRPCOperation.h */; };
+ 88FBF7C2250132C1005EA0A4 /* SDLOnLockScreenStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88FBF7C1250132C1005EA0A4 /* SDLOnLockScreenStatusSpec.m */; };
+ 88FBF7C52501330F005EA0A4 /* TestHapticRectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 88FBF7C42501330F005EA0A4 /* TestHapticRectViewController.m */; };
8B05F88922DD011300666CD8 /* SDLUnpublishAppServiceSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B05F88822DD011300666CD8 /* SDLUnpublishAppServiceSpec.m */; };
- 8B7B319A1F2F7B5700BDC38D /* SDLVideoStreamingCodec.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B7B31981F2F7B5700BDC38D /* SDLVideoStreamingCodec.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B7B319B1F2F7B5700BDC38D /* SDLVideoStreamingCodec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B31991F2F7B5700BDC38D /* SDLVideoStreamingCodec.m */; };
- 8B7B319E1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B7B319C1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B7B319F1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B319D1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.m */; };
- 8B7B31A21F2F7FEA00BDC38D /* SDLVideoStreamingFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B7B31A01F2F7FEA00BDC38D /* SDLVideoStreamingFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B7B31A31F2F7FEA00BDC38D /* SDLVideoStreamingFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B31A11F2F7FEA00BDC38D /* SDLVideoStreamingFormat.m */; };
- 8B7B31A61F2F875200BDC38D /* SDLVideoStreamingCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B7B31A41F2F875200BDC38D /* SDLVideoStreamingCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B7B31A71F2F875200BDC38D /* SDLVideoStreamingCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B31A51F2F875200BDC38D /* SDLVideoStreamingCapability.m */; };
8B7B31A91F2FB8BC00BDC38D /* SDLVideoStreamingProtocolSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7B31A81F2FB8BC00BDC38D /* SDLVideoStreamingProtocolSpec.m */; };
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 */; };
- 8BA12B1122DCCE1F00371E82 /* SDLUnpublishAppService.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA12B0F22DCCE1F00371E82 /* SDLUnpublishAppService.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BA12B1222DCCE1F00371E82 /* SDLUnpublishAppService.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA12B1022DCCE1F00371E82 /* SDLUnpublishAppService.m */; };
- 8BA12B1522DCEACB00371E82 /* SDLUnpublishAppServiceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA12B1322DCEACB00371E82 /* SDLUnpublishAppServiceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BA12B1622DCEACB00371E82 /* SDLUnpublishAppServiceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA12B1422DCEACB00371E82 /* SDLUnpublishAppServiceResponse.m */; };
8BA12B1822DCF59700371E82 /* SDLUnpublishAppServiceResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA12B1722DCF59700371E82 /* SDLUnpublishAppServiceResponseSpec.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 */; };
- 9F425ACE22DD97DE00BE3245 /* SDLTemplateConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425ACC22DD97DE00BE3245 /* SDLTemplateConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9F425ACF22DD97DE00BE3245 /* SDLTemplateConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425ACD22DD97DE00BE3245 /* SDLTemplateConfiguration.m */; };
- 9F425AD222DD980200BE3245 /* SDLWindowCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425AD022DD980200BE3245 /* SDLWindowCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9F425AD322DD980200BE3245 /* SDLWindowCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425AD122DD980200BE3245 /* SDLWindowCapability.m */; };
- 9F425AD622DD981E00BE3245 /* SDLWindowTypeCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425AD422DD981E00BE3245 /* SDLWindowTypeCapabilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9F425AD722DD981E00BE3245 /* SDLWindowTypeCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425AD522DD981E00BE3245 /* SDLWindowTypeCapabilities.m */; };
- 9F425ADA22DD983500BE3245 /* SDLDisplayCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F425AD822DD983500BE3245 /* SDLDisplayCapability.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9F425ADB22DD983500BE3245 /* SDLDisplayCapability.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F425AD922DD983500BE3245 /* SDLDisplayCapability.m */; };
9FA0CFF722DF0632009CF344 /* SDLWindowTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0CFF622DF0632009CF344 /* SDLWindowTypeSpec.m */; };
9FA0CFFA22DF064D009CF344 /* SDLPredefinedWindowsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0CFF922DF064D009CF344 /* SDLPredefinedWindowsSpec.m */; };
9FA0CFFD22DF0687009CF344 /* SDLTemplateConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0CFFC22DF0687009CF344 /* SDLTemplateConfigurationSpec.m */; };
@@ -1558,56 +1667,15 @@
9FA0D00C22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00B22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m */; };
9FA0D00F22DF0B90009CF344 /* SDLDeleteWindowSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */; };
9FA0D01222DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D01122DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m */; };
- 9FD334E022DC6E7500F62736 /* SDLCreateWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FD334DE22DC6E7500F62736 /* SDLCreateWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9FD334E122DC6E7500F62736 /* SDLCreateWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FD334DF22DC6E7500F62736 /* SDLCreateWindow.m */; };
- 9FE2470922D77A3600F8D2FC /* SDLDeleteWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2470722D77A3600F8D2FC /* SDLDeleteWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9FE2470A22D77A3600F8D2FC /* SDLDeleteWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2470822D77A3600F8D2FC /* SDLDeleteWindow.m */; };
- 9FE2470D22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2470B22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9FE2470E22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2470C22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m */; };
- 9FE2471122D77AA400F8D2FC /* SDLCreateWindowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2470F22D77AA400F8D2FC /* SDLCreateWindowResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9FE2471222D77AA400F8D2FC /* SDLCreateWindowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2471022D77AA400F8D2FC /* SDLCreateWindowResponse.m */; };
- 9FE2471522D77AD500F8D2FC /* SDLWindowType.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2471322D77AD500F8D2FC /* SDLWindowType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9FE2471622D77AD500F8D2FC /* SDLWindowType.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE2471422D77AD500F8D2FC /* SDLWindowType.m */; };
- 9FE2471922D77AED00F8D2FC /* SDLPredefinedWindows.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FE2471722D77AED00F8D2FC /* SDLPredefinedWindows.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA0C46AD1DCD35080001F2A8 /* SDLRPCParameterNames.m in Sources */ = {isa = PBXBuildFile; fileRef = DA0C46AC1DCD35080001F2A8 /* SDLRPCParameterNames.m */; };
- DA0C46AF1DCD41E30001F2A8 /* SDLMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0C46AE1DCD41E30001F2A8 /* SDLMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA318C1F1DD0F06C00C035AC /* NSMutableDictionary+Store.h in Headers */ = {isa = PBXBuildFile; fileRef = DA318C1D1DD0F06C00C035AC /* NSMutableDictionary+Store.h */; };
- DA318C201DD0F06C00C035AC /* NSMutableDictionary+Store.m in Sources */ = {isa = PBXBuildFile; fileRef = DA318C1E1DD0F06C00C035AC /* NSMutableDictionary+Store.m */; };
+ B38D8E7E24A118BD00B977D0 /* SDLGearStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */; };
+ B38D8E8024A1E3D000B977D0 /* SDLTransmissionTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E7F24A1E3D000B977D0 /* SDLTransmissionTypeSpec.m */; };
+ B38D8E8224A1F53500B977D0 /* SDLCapacityUnitSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E8124A1F53500B977D0 /* SDLCapacityUnitSpec.m */; };
+ B3F7918324E062C200DB5CAF /* SDLGetVehicleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824C1A9BDE8A00906325 /* SDLGetVehicleDataSpec.m */; };
DA4353DF1D271FD10099B8C4 /* CGPointUtilSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */; };
DA4353E31D2720A30099B8C4 /* SDLPinchGestureSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353E21D2720A30099B8C4 /* SDLPinchGestureSpec.m */; };
DA4353EA1D2721680099B8C4 /* SDLTouchManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353E71D2721680099B8C4 /* SDLTouchManagerSpec.m */; };
DA4353EB1D2721680099B8C4 /* SDLTouchSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353E81D2721680099B8C4 /* SDLTouchSpec.m */; };
- DA4F47961E771AA100FC809E /* SDLEnum.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4F47951E771AA100FC809E /* SDLEnum.m */; };
- DA6223BD1E7B088200878689 /* CVPixelBufferRef+SDLUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6223BB1E7B088200878689 /* CVPixelBufferRef+SDLUtil.h */; };
- DA6223BE1E7B088200878689 /* CVPixelBufferRef+SDLUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = DA6223BC1E7B088200878689 /* CVPixelBufferRef+SDLUtil.m */; };
- DA8966F21E56973700413EAB /* SDLStreamingMediaManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8966F11E56973700413EAB /* SDLStreamingMediaManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
DA96C0661D4D4F730022F520 /* SDLAppInfoSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA96C0651D4D4F730022F520 /* SDLAppInfoSpec.m */; };
- DA9F7E631DCBFAC800ACAE48 /* SDLDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E611DCBFAC800ACAE48 /* SDLDateTime.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E641DCBFAC800ACAE48 /* SDLDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E621DCBFAC800ACAE48 /* SDLDateTime.m */; };
- DA9F7E671DCBFAD400ACAE48 /* SDLOasisAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E651DCBFAD400ACAE48 /* SDLOasisAddress.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E681DCBFAD400ACAE48 /* SDLOasisAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E661DCBFAD400ACAE48 /* SDLOasisAddress.m */; };
- DA9F7E6B1DCBFB0700ACAE48 /* SDLDeliveryMode.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E691DCBFB0700ACAE48 /* SDLDeliveryMode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E6C1DCBFB0700ACAE48 /* SDLDeliveryMode.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E6A1DCBFB0700ACAE48 /* SDLDeliveryMode.m */; };
- DA9F7E6F1DCBFFDB00ACAE48 /* SDLGetWayPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E6D1DCBFFDB00ACAE48 /* SDLGetWayPoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E701DCBFFDB00ACAE48 /* SDLGetWayPoints.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E6E1DCBFFDB00ACAE48 /* SDLGetWayPoints.m */; };
- DA9F7E731DCC004C00ACAE48 /* SDLGetWayPointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E711DCC004C00ACAE48 /* SDLGetWayPointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E741DCC004C00ACAE48 /* SDLGetWayPointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E721DCC004C00ACAE48 /* SDLGetWayPointsResponse.m */; };
- DA9F7E7F1DCC028B00ACAE48 /* SDLOnWayPointChange.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E7D1DCC028B00ACAE48 /* SDLOnWayPointChange.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E801DCC028B00ACAE48 /* SDLOnWayPointChange.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E7E1DCC028B00ACAE48 /* SDLOnWayPointChange.m */; };
- DA9F7E831DCC047200ACAE48 /* SDLWayPointType.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E811DCC047200ACAE48 /* SDLWayPointType.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E841DCC047200ACAE48 /* SDLWayPointType.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E821DCC047200ACAE48 /* SDLWayPointType.m */; };
- DA9F7E871DCC049900ACAE48 /* SDLSubscribeWayPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E851DCC049900ACAE48 /* SDLSubscribeWayPoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E881DCC049900ACAE48 /* SDLSubscribeWayPoints.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E861DCC049900ACAE48 /* SDLSubscribeWayPoints.m */; };
- DA9F7E8B1DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E891DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E8C1DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E8A1DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.m */; };
- DA9F7E8F1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E8D1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E901DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E8E1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.m */; };
- DA9F7E931DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E911DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E941DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E921DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.m */; };
- DA9F7E991DCC052C00ACAE48 /* SDLLocationCoordinate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E951DCC052C00ACAE48 /* SDLLocationCoordinate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E9A1DCC052C00ACAE48 /* SDLLocationCoordinate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E961DCC052C00ACAE48 /* SDLLocationCoordinate.m */; };
- DA9F7E9B1DCC052C00ACAE48 /* SDLLocationDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9F7E971DCC052C00ACAE48 /* SDLLocationDetails.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DA9F7E9C1DCC052C00ACAE48 /* SDLLocationDetails.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */; };
DA9F7E9E1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E9D1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m */; };
DA9F7EA01DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7E9F1DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m */; };
DA9F7EA21DCC05E100ACAE48 /* SDLGetWaypointsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EA11DCC05E100ACAE48 /* SDLGetWaypointsSpec.m */; };
@@ -1621,46 +1689,13 @@
DA9F7EB21DCC084300ACAE48 /* SDLDeliveryModeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EB11DCC084300ACAE48 /* SDLDeliveryModeSpec.m */; };
DA9F7EB41DCC086400ACAE48 /* SDLDateTimeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EB31DCC086400ACAE48 /* SDLDateTimeSpec.m */; };
DA9F7EB61DCC086A00ACAE48 /* SDLOasisAddressSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA9F7EB51DCC086A00ACAE48 /* SDLOasisAddressSpec.m */; };
- DAA41D551DF66B2000BC7337 /* SDLH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DAA41D531DF66B2000BC7337 /* SDLH264VideoEncoder.h */; };
- DAA41D561DF66B2000BC7337 /* SDLH264VideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA41D541DF66B2000BC7337 /* SDLH264VideoEncoder.m */; };
DABB62171E4A900C0034C567 /* SDLH264VideoEncoderSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DABB62161E4A900C0034C567 /* SDLH264VideoEncoderSpec.m */; };
- DAC572571D1067270004288B /* SDLTouchManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC572551D1067270004288B /* SDLTouchManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAC572581D1067270004288B /* SDLTouchManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC572561D1067270004288B /* SDLTouchManager.m */; };
- DAC5725B1D10B81E0004288B /* SDLTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC572591D10B81E0004288B /* SDLTouch.m */; };
- DAC5725C1D10B81E0004288B /* SDLTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC5725A1D10B81E0004288B /* SDLTouch.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAC572621D10C5020004288B /* SDLPinchGesture.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC572601D10C5020004288B /* SDLPinchGesture.m */; };
- DAC572631D10C5020004288B /* SDLPinchGesture.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC572611D10C5020004288B /* SDLPinchGesture.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DAC572661D10C5640004288B /* CGPoint_Util.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC572641D10C5640004288B /* CGPoint_Util.m */; };
- DAC572671D10C5640004288B /* CGPoint_Util.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC572651D10C5640004288B /* CGPoint_Util.h */; };
- DAC5726C1D11B4840004288B /* SDLTouchManagerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC5725F1D10BD690004288B /* SDLTouchManagerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E4139D1D1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = E4139D1B1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E4139D1E1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m in Sources */ = {isa = PBXBuildFile; fileRef = E4139D1C1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m */; };
- E9C32B911AB20BA200F283AF /* SDLIAPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B891AB20BA200F283AF /* SDLIAPSession.h */; };
- E9C32B921AB20BA200F283AF /* SDLIAPSession.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32B8A1AB20BA200F283AF /* SDLIAPSession.m */; };
- E9C32B961AB20BA200F283AF /* SDLTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B8E1AB20BA200F283AF /* SDLTimer.h */; };
- E9C32B971AB20BA200F283AF /* SDLTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32B8F1AB20BA200F283AF /* SDLTimer.m */; };
- E9C32B9C1AB20C5900F283AF /* EAAccessory+SDLProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B981AB20C5900F283AF /* EAAccessory+SDLProtocols.h */; };
- E9C32B9D1AB20C5900F283AF /* EAAccessory+SDLProtocols.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32B991AB20C5900F283AF /* EAAccessory+SDLProtocols.m */; };
- E9C32B9E1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B9A1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.h */; };
- E9C32B9F1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32B9B1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.m */; };
- EE28F9E3209802A500B1B61D /* SDLStreamingProtocolDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = EE6CBF872064CAEE00EEE0CA /* SDLStreamingProtocolDelegate.h */; };
EE460E082066B5F20006EDD3 /* SDLControlFramePayloadTransportEventUpdateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = EE460E072066B5F20006EDD3 /* SDLControlFramePayloadTransportEventUpdateSpec.m */; };
EE460E0A2066B6E40006EDD3 /* SDLControlFramePayloadRegisterSecondaryTransportNakSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = EE460E092066B6E40006EDD3 /* SDLControlFramePayloadRegisterSecondaryTransportNakSpec.m */; };
EE5D1B33208EBCA900D17216 /* SDLTCPTransportSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = EE5D1B32208EBCA900D17216 /* SDLTCPTransportSpec.m */; };
- EE798CA420561210008EDE8E /* SDLSecondaryTransportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EE798CA32056120F008EDE8E /* SDLSecondaryTransportManager.h */; };
- EE798CA620561218008EDE8E /* SDLSecondaryTransportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EE798CA520561217008EDE8E /* SDLSecondaryTransportManager.m */; };
- EE7B6123205BF6C800E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7B6122205BF6C800E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.m */; };
- EE7B6124205BF97B00E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7B6121205BF69C00E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.h */; };
EEA41D45210BA8CF0006CB6E /* TestTCPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA41D44210BA8CF0006CB6E /* TestTCPServer.m */; };
- EEB1932E205028B700A8940C /* SDLControlFramePayloadTransportEventUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB1932D205028B700A8940C /* SDLControlFramePayloadTransportEventUpdate.h */; };
- EEB19330205028BE00A8940C /* SDLControlFramePayloadTransportEventUpdate.m in Sources */ = {isa = PBXBuildFile; fileRef = EEB1932F205028BE00A8940C /* SDLControlFramePayloadTransportEventUpdate.m */; };
EEB2537E2067D3E80069584E /* SDLSecondaryTransportManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = EEB2537D2067D3E80069584E /* SDLSecondaryTransportManagerSpec.m */; };
- EED5C9FE1F4D18D100F04000 /* SDLH264Packetizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EED5C9FD1F4D18D100F04000 /* SDLH264Packetizer.h */; };
- EED5CA001F4D18DC00F04000 /* SDLRAWH264Packetizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EED5C9FF1F4D18DC00F04000 /* SDLRAWH264Packetizer.h */; };
- EED5CA021F4D18EC00F04000 /* SDLRAWH264Packetizer.m in Sources */ = {isa = PBXBuildFile; fileRef = EED5CA011F4D18EC00F04000 /* SDLRAWH264Packetizer.m */; };
EED5CA041F4D1D5E00F04000 /* SDLRAWH264PacketizerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = EED5CA031F4D1D5E00F04000 /* SDLRAWH264PacketizerSpec.m */; };
- EED5CA061F4D1E2300F04000 /* SDLRTPH264Packetizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EED5CA051F4D1E2300F04000 /* SDLRTPH264Packetizer.h */; };
- EED5CA081F4D1E2E00F04000 /* SDLRTPH264Packetizer.m in Sources */ = {isa = PBXBuildFile; fileRef = EED5CA071F4D1E2E00F04000 /* SDLRTPH264Packetizer.m */; };
EED5CA0A1F4D206800F04000 /* SDLRTPH264PacketizerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = EED5CA091F4D206800F04000 /* SDLRTPH264PacketizerSpec.m */; };
/* End PBXBuildFile section */
@@ -1756,40 +1791,9 @@
000DD57122EF063F005AB7A7 /* SDLGetInteriorVehicleDataConsentResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetInteriorVehicleDataConsentResponseSpec.m; sourceTree = "<group>"; };
000DD57322EF0957005AB7A7 /* SDLReleaseInteriorVehicleDataModuleSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLReleaseInteriorVehicleDataModuleSpec.m; sourceTree = "<group>"; };
000DD57522EF0971005AB7A7 /* SDLReleaseInteriorVehicleDataModuleResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLReleaseInteriorVehicleDataModuleResponseSpec.m; sourceTree = "<group>"; };
- 001A08B32321ADD30078A31E /* SDLServiceEncryptionDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLServiceEncryptionDelegate.h; sourceTree = "<group>"; };
- 0055412422D40DAB003194D3 /* SDLModuleInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLModuleInfo.h; sourceTree = "<group>"; };
- 0055412522D40DAB003194D3 /* SDLModuleInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLModuleInfo.m; sourceTree = "<group>"; };
- 0055412822D5DC0B003194D3 /* SDLGrid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGrid.h; sourceTree = "<group>"; };
- 0055412922D5DC0B003194D3 /* SDLGrid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGrid.m; sourceTree = "<group>"; };
- 0055412C22D759BC003194D3 /* SDLSeatLocation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSeatLocation.h; sourceTree = "<group>"; };
- 0055412D22D759BC003194D3 /* SDLSeatLocation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatLocation.m; sourceTree = "<group>"; };
- 0055413022D75A7A003194D3 /* SDLSeatLocationCapability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSeatLocationCapability.h; sourceTree = "<group>"; };
- 0055413122D75A7B003194D3 /* SDLSeatLocationCapability.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatLocationCapability.m; sourceTree = "<group>"; };
- 005DF3C322C59191006E01A9 /* SDLEncryptionLifecycleManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLEncryptionLifecycleManager.h; sourceTree = "<group>"; };
- 005DF3C422C59191006E01A9 /* SDLEncryptionLifecycleManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEncryptionLifecycleManager.m; sourceTree = "<group>"; };
- 005DF3C822C62E00006E01A9 /* SDLEncryptionManagerConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLEncryptionManagerConstants.h; sourceTree = "<group>"; };
- 005DF3C922C62E00006E01A9 /* SDLEncryptionManagerConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEncryptionManagerConstants.m; sourceTree = "<group>"; };
- 008DB35F22EA7481003F458C /* SDLGetInteriorVehicleDataConsent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetInteriorVehicleDataConsent.h; sourceTree = "<group>"; };
- 008DB36022EA7481003F458C /* SDLGetInteriorVehicleDataConsent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetInteriorVehicleDataConsent.m; sourceTree = "<group>"; };
- 008DB36322EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetInteriorVehicleDataConsentResponse.h; sourceTree = "<group>"; };
- 008DB36422EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetInteriorVehicleDataConsentResponse.m; sourceTree = "<group>"; };
- 008DB36722EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLReleaseInteriorVehicleDataModule.h; sourceTree = "<group>"; };
- 008DB36822EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLReleaseInteriorVehicleDataModule.m; sourceTree = "<group>"; };
- 008DB36B22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLReleaseInteriorVehicleDataModuleResponse.h; sourceTree = "<group>"; };
- 008DB36C22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLReleaseInteriorVehicleDataModuleResponse.m; sourceTree = "<group>"; };
- 00E22CEA22C2F1B200BC6B08 /* SDLEncryptionConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEncryptionConfiguration.m; sourceTree = "<group>"; };
- 00E22CEB22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEncryptionConfiguration.h; sourceTree = "<group>"; };
00EADD3222DFE54B0088B608 /* SDLEncryptionLifecycleManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEncryptionLifecycleManagerSpec.m; sourceTree = "<group>"; };
00EADD3422DFE5670088B608 /* SDLEncryptionConfigurationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEncryptionConfigurationSpec.m; sourceTree = "<group>"; };
106187B824AA75540045C4EC /* SDLRPCPermissionStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCPermissionStatusSpec.m; sourceTree = "<group>"; };
- 106412C4249FB80B0069A97A /* SDLPermissionElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPermissionElement.h; sourceTree = "<group>"; };
- 106412C5249FB80B0069A97A /* SDLPermissionElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionElement.m; sourceTree = "<group>"; };
- 106982A824AA3B4700B1F649 /* SDLRPCPermissionStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLRPCPermissionStatus.h; sourceTree = "<group>"; };
- 106982A924AA3B4700B1F649 /* SDLRPCPermissionStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCPermissionStatus.m; sourceTree = "<group>"; };
- 10893C142417D78300BA347E /* SDLIconArchiveFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIconArchiveFile.h; sourceTree = "<group>"; };
- 10893C152417D78300BA347E /* SDLIconArchiveFile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIconArchiveFile.m; sourceTree = "<group>"; };
- 10893C182418188600BA347E /* SDLCacheFileManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCacheFileManager.h; sourceTree = "<group>"; };
- 10893C192418188600BA347E /* SDLCacheFileManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCacheFileManager.m; sourceTree = "<group>"; };
109566F5242986F300E24F66 /* SDLCacheFileManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCacheFileManagerSpec.m; sourceTree = "<group>"; };
1098F03724A39699004F53CC /* SDLPermissionElementSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionElementSpec.m; sourceTree = "<group>"; };
162E81E21A9BDE8A00906325 /* SDLAmbientLightStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAmbientLightStatusSpec.m; sourceTree = "<group>"; };
@@ -1826,7 +1830,6 @@
162E82011A9BDE8A00906325 /* SDLKeypressModeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLKeypressModeSpec.m; sourceTree = "<group>"; };
162E82021A9BDE8A00906325 /* SDLLanguageSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLanguageSpec.m; sourceTree = "<group>"; };
162E82031A9BDE8A00906325 /* SDLLayoutModeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLayoutModeSpec.m; sourceTree = "<group>"; };
- 162E82041A9BDE8A00906325 /* SDLLockScreenStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenStatusSpec.m; sourceTree = "<group>"; };
162E82051A9BDE8A00906325 /* SDLMaintenanceModeStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMaintenanceModeStatusSpec.m; sourceTree = "<group>"; };
162E82061A9BDE8A00906325 /* SDLMediaClockFormatSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMediaClockFormatSpec.m; sourceTree = "<group>"; };
162E82071A9BDE8A00906325 /* SDLPermissionStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionStatusSpec.m; sourceTree = "<group>"; };
@@ -1870,7 +1873,6 @@
162E82311A9BDE8A00906325 /* SDLOnHMIStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnHMIStatusSpec.m; sourceTree = "<group>"; };
162E82321A9BDE8A00906325 /* SDLOnKeyboardInputSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnKeyboardInputSpec.m; sourceTree = "<group>"; };
162E82331A9BDE8A00906325 /* SDLOnLanguageChangeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnLanguageChangeSpec.m; sourceTree = "<group>"; };
- 162E82341A9BDE8A00906325 /* SDLOnLockScreenStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnLockScreenStatusSpec.m; sourceTree = "<group>"; };
162E82351A9BDE8A00906325 /* SDLOnPermissionsChangeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnPermissionsChangeSpec.m; sourceTree = "<group>"; };
162E82361A9BDE8A00906325 /* SDLOnSyncPDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnSyncPDataSpec.m; sourceTree = "<group>"; };
162E82371A9BDE8A00906325 /* SDLOnSystemRequestSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnSystemRequestSpec.m; sourceTree = "<group>"; };
@@ -1986,7 +1988,6 @@
162E82A91A9BDE8A00906325 /* SDLSoftButtonCapabilitiesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonCapabilitiesSpec.m; sourceTree = "<group>"; };
162E82AA1A9BDE8A00906325 /* SDLSoftButtonSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonSpec.m; sourceTree = "<group>"; };
162E82AB1A9BDE8A00906325 /* SDLStartTimeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStartTimeSpec.m; sourceTree = "<group>"; };
- 162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSyncMsgVersionSpec.m; sourceTree = "<group>"; };
162E82AD1A9BDE8A00906325 /* SDLTextFieldSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextFieldSpec.m; sourceTree = "<group>"; };
162E82AE1A9BDE8A00906325 /* SDLTireStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTireStatusSpec.m; sourceTree = "<group>"; };
162E82AF1A9BDE8A00906325 /* SDLTouchCoordSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTouchCoordSpec.m; sourceTree = "<group>"; };
@@ -2014,81 +2015,9 @@
1680B1101A9CD7AD00DBD79E /* SDLProtocolMessageAssemblerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolMessageAssemblerSpec.m; sourceTree = "<group>"; };
1680B1111A9CD7AD00DBD79E /* SDLProtocolMessageDisassemblerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolMessageDisassemblerSpec.m; sourceTree = "<group>"; };
1680B1121A9CD7AD00DBD79E /* SDLProtocolReceivedMessageRouterSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolReceivedMessageRouterSpec.m; sourceTree = "<group>"; };
- 1E5AD0321F1F3AA30029B8AF /* SDLRemoteControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRemoteControlCapabilities.h; sourceTree = "<group>"; };
- 1E5AD0331F1F3AA30029B8AF /* SDLRemoteControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRemoteControlCapabilities.m; sourceTree = "<group>"; };
- 1E5AD0361F1F4E390029B8AF /* SDLClimateControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLClimateControlCapabilities.h; sourceTree = "<group>"; };
- 1E5AD0371F1F4E390029B8AF /* SDLClimateControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLClimateControlCapabilities.m; sourceTree = "<group>"; };
- 1E5AD03E1F1F58480029B8AF /* SDLVentilationMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVentilationMode.h; sourceTree = "<group>"; };
- 1E5AD03F1F1F58480029B8AF /* SDLVentilationMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVentilationMode.m; sourceTree = "<group>"; };
- 1E5AD0421F1F5A1F0029B8AF /* SDLRadioControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRadioControlCapabilities.h; sourceTree = "<group>"; };
- 1E5AD0431F1F5A1F0029B8AF /* SDLRadioControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioControlCapabilities.m; sourceTree = "<group>"; };
- 1E5AD0461F1F773E0029B8AF /* SDLModuleType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLModuleType.h; sourceTree = "<group>"; };
- 1E5AD0471F1F773E0029B8AF /* SDLModuleType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLModuleType.m; sourceTree = "<group>"; };
- 1E5AD04A1F1F79640029B8AF /* SDLDefrostZone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDefrostZone.h; sourceTree = "<group>"; };
- 1E5AD04B1F1F79640029B8AF /* SDLDefrostZone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDefrostZone.m; sourceTree = "<group>"; };
- 1E5AD04E1F1F7BF10029B8AF /* SDLRadioBand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRadioBand.h; sourceTree = "<group>"; };
- 1E5AD04F1F1F7BF10029B8AF /* SDLRadioBand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioBand.m; sourceTree = "<group>"; };
- 1E5AD05A1F2064A80029B8AF /* SDLRDSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRDSData.h; sourceTree = "<group>"; };
- 1E5AD05B1F2064A80029B8AF /* SDLRDSData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRDSData.m; sourceTree = "<group>"; };
- 1E5AD05E1F207AB10029B8AF /* SDLRadioState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRadioState.h; sourceTree = "<group>"; };
- 1E5AD05F1F207AB10029B8AF /* SDLRadioState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioState.m; sourceTree = "<group>"; };
- 1E5AD0621F207DD50029B8AF /* SDLTemperature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTemperature.h; sourceTree = "<group>"; };
- 1E5AD0631F207DD50029B8AF /* SDLTemperature.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTemperature.m; sourceTree = "<group>"; };
- 1E5AD0661F2080B50029B8AF /* SDLRadioControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRadioControlData.h; sourceTree = "<group>"; };
- 1E5AD0671F2080B50029B8AF /* SDLRadioControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioControlData.m; sourceTree = "<group>"; };
- 1E5AD06A1F208BAB0029B8AF /* SDLClimateControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLClimateControlData.h; sourceTree = "<group>"; };
- 1E5AD06B1F208BAB0029B8AF /* SDLClimateControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLClimateControlData.m; sourceTree = "<group>"; };
- 1E5AD06E1F209C880029B8AF /* SDLModuleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLModuleData.h; sourceTree = "<group>"; };
- 1E5AD06F1F209C880029B8AF /* SDLModuleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLModuleData.m; sourceTree = "<group>"; };
- 1E5AD07E1F20B73E0029B8AF /* SDLButtonPress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonPress.h; sourceTree = "<group>"; };
- 1E5AD07F1F20B73E0029B8AF /* SDLButtonPress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonPress.m; sourceTree = "<group>"; };
- 1E5AD0821F20B9290029B8AF /* SDLButtonPressResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonPressResponse.h; sourceTree = "<group>"; };
- 1E5AD0831F20B9290029B8AF /* SDLButtonPressResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonPressResponse.m; sourceTree = "<group>"; };
- 1E5AD0861F20B9AA0029B8AF /* SDLGetInteriorVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetInteriorVehicleData.h; sourceTree = "<group>"; };
- 1E5AD0871F20B9AA0029B8AF /* SDLGetInteriorVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetInteriorVehicleData.m; sourceTree = "<group>"; };
- 1E5AD08A1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetInteriorVehicleDataResponse.h; sourceTree = "<group>"; };
- 1E5AD08B1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetInteriorVehicleDataResponse.m; sourceTree = "<group>"; };
- 1E5AD08E1F20BE820029B8AF /* SDLSetInteriorVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetInteriorVehicleData.h; sourceTree = "<group>"; };
- 1E5AD08F1F20BE820029B8AF /* SDLSetInteriorVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetInteriorVehicleData.m; sourceTree = "<group>"; };
- 1E5AD0921F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetInteriorVehicleDataResponse.h; sourceTree = "<group>"; };
- 1E5AD0931F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetInteriorVehicleDataResponse.m; sourceTree = "<group>"; };
- 1E5AD0961F20C0FB0029B8AF /* SDLOnInteriorVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnInteriorVehicleData.h; sourceTree = "<group>"; };
- 1E5AD0971F20C0FB0029B8AF /* SDLOnInteriorVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnInteriorVehicleData.m; sourceTree = "<group>"; };
1E89B0DD2031636000A47992 /* SDLSeatControlDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatControlDataSpec.m; sourceTree = "<group>"; };
1E89B0E1203196B800A47992 /* SDLSeatControlCapabilitiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatControlCapabilitiesSpec.m; sourceTree = "<group>"; };
- 1EAA47092032BAE5000FE74B /* SDLOnRCStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLOnRCStatus.h; sourceTree = "<group>"; };
- 1EAA470A2032BAE5000FE74B /* SDLOnRCStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnRCStatus.m; sourceTree = "<group>"; };
1EAA470D2032BF1D000FE74B /* SDLOnRCStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnRCStatusSpec.m; sourceTree = "<group>"; };
- 1EAA470F2033FE80000FE74B /* SDLStationIDNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStationIDNumber.h; sourceTree = "<group>"; };
- 1EAA47102033FE80000FE74B /* SDLStationIDNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStationIDNumber.m; sourceTree = "<group>"; };
- 1EAA4717203406B1000FE74B /* SDLSISData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSISData.h; sourceTree = "<group>"; };
- 1EAA4718203406B1000FE74B /* SDLSISData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSISData.m; sourceTree = "<group>"; };
- 1EAA471B203410BB000FE74B /* SDLAudioControlCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAudioControlCapabilities.h; sourceTree = "<group>"; };
- 1EAA471C203410BB000FE74B /* SDLAudioControlCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAudioControlCapabilities.m; sourceTree = "<group>"; };
- 1EAA4723203416D3000FE74B /* SDLEqualizerSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLEqualizerSettings.h; sourceTree = "<group>"; };
- 1EAA4724203416D3000FE74B /* SDLEqualizerSettings.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEqualizerSettings.m; sourceTree = "<group>"; };
- 1EAA47272034388D000FE74B /* SDLAudioControlData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAudioControlData.h; sourceTree = "<group>"; };
- 1EAA47282034388D000FE74B /* SDLAudioControlData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAudioControlData.m; sourceTree = "<group>"; };
- 1EAA472B20344108000FE74B /* SDLLightStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightStatus.h; sourceTree = "<group>"; };
- 1EAA472C20344108000FE74B /* SDLLightStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightStatus.m; sourceTree = "<group>"; };
- 1EAA472F203442C0000FE74B /* SDLLightName.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightName.h; sourceTree = "<group>"; };
- 1EAA4730203442C0000FE74B /* SDLLightName.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightName.m; sourceTree = "<group>"; };
- 1EAA473720345B7A000FE74B /* SDLLightCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightCapabilities.h; sourceTree = "<group>"; };
- 1EAA473820345B7A000FE74B /* SDLLightCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightCapabilities.m; sourceTree = "<group>"; };
- 1EAA473B203554B5000FE74B /* SDLLightState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightState.h; sourceTree = "<group>"; };
- 1EAA473C203554B5000FE74B /* SDLLightState.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightState.m; sourceTree = "<group>"; };
- 1EAA473F20355FF3000FE74B /* SDLLightControlCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightControlCapabilities.h; sourceTree = "<group>"; };
- 1EAA474020355FF3000FE74B /* SDLLightControlCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightControlCapabilities.m; sourceTree = "<group>"; };
- 1EAA47432035623B000FE74B /* SDLLightControlData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLightControlData.h; sourceTree = "<group>"; };
- 1EAA47442035623B000FE74B /* SDLLightControlData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLightControlData.m; sourceTree = "<group>"; };
- 1EAA4747203567FA000FE74B /* SDLHMISettingsControlCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLHMISettingsControlCapabilities.h; sourceTree = "<group>"; };
- 1EAA4748203567FA000FE74B /* SDLHMISettingsControlCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLHMISettingsControlCapabilities.m; sourceTree = "<group>"; };
- 1EAA474B20356B2D000FE74B /* SDLDisplayMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDisplayMode.h; sourceTree = "<group>"; };
- 1EAA474C20356B2D000FE74B /* SDLDisplayMode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayMode.m; sourceTree = "<group>"; };
- 1EAA474F20356CD2000FE74B /* SDLDistanceUnit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDistanceUnit.h; sourceTree = "<group>"; };
- 1EAA475020356CD2000FE74B /* SDLDistanceUnit.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDistanceUnit.m; sourceTree = "<group>"; };
- 1EAA4753203583BC000FE74B /* SDLHMISettingsControlData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLHMISettingsControlData.h; sourceTree = "<group>"; };
- 1EAA4754203583BC000FE74B /* SDLHMISettingsControlData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLHMISettingsControlData.m; sourceTree = "<group>"; };
1EAA47572035AFD9000FE74B /* SDLHMISettingsControlDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLHMISettingsControlDataSpec.m; sourceTree = "<group>"; };
1EAA475D2035B177000FE74B /* SDLDisplayModeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayModeSpec.m; sourceTree = "<group>"; };
1EAA47612035B1AE000FE74B /* SDLDistanceUnitSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDistanceUnitSpec.m; sourceTree = "<group>"; };
@@ -2104,26 +2033,6 @@
1EAA47772036BA74000FE74B /* SDLAudioControlCapabilitiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAudioControlCapabilitiesSpec.m; sourceTree = "<group>"; };
1EAA47792036BD46000FE74B /* SDLSISDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSISDataSpec.m; sourceTree = "<group>"; };
1EAA477F2036C2C9000FE74B /* SDLStationIDNumberSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStationIDNumberSpec.m; sourceTree = "<group>"; };
- 1EB59C9D202D925500343A61 /* SDLMassageZone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMassageZone.h; sourceTree = "<group>"; };
- 1EB59C9E202D925500343A61 /* SDLMassageZone.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageZone.m; sourceTree = "<group>"; };
- 1EB59CA1202D92F600343A61 /* SDLMassageMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMassageMode.h; sourceTree = "<group>"; };
- 1EB59CA2202D92F600343A61 /* SDLMassageMode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageMode.m; sourceTree = "<group>"; };
- 1EB59CA5202D946500343A61 /* SDLMassageModeData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMassageModeData.h; sourceTree = "<group>"; };
- 1EB59CA6202D946500343A61 /* SDLMassageModeData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageModeData.m; sourceTree = "<group>"; };
- 1EB59CA9202D96A200343A61 /* SDLMassageCushion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMassageCushion.h; sourceTree = "<group>"; };
- 1EB59CAA202D96A200343A61 /* SDLMassageCushion.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageCushion.m; sourceTree = "<group>"; };
- 1EB59CAD202D97AC00343A61 /* SDLMassageCushionFirmness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMassageCushionFirmness.h; sourceTree = "<group>"; };
- 1EB59CAE202D97AC00343A61 /* SDLMassageCushionFirmness.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageCushionFirmness.m; sourceTree = "<group>"; };
- 1EB59CB1202D9B5F00343A61 /* SDLSeatMemoryActionType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSeatMemoryActionType.h; sourceTree = "<group>"; };
- 1EB59CB2202D9B5F00343A61 /* SDLSeatMemoryActionType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatMemoryActionType.m; sourceTree = "<group>"; };
- 1EB59CB5202D9C8100343A61 /* SDLSeatMemoryAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSeatMemoryAction.h; sourceTree = "<group>"; };
- 1EB59CB6202D9C8100343A61 /* SDLSeatMemoryAction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatMemoryAction.m; sourceTree = "<group>"; };
- 1EB59CB9202DA1B400343A61 /* SDLSupportedSeat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSupportedSeat.h; sourceTree = "<group>"; };
- 1EB59CBA202DA1B400343A61 /* SDLSupportedSeat.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSupportedSeat.m; sourceTree = "<group>"; };
- 1EB59CBD202DA26000343A61 /* SDLSeatControlData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSeatControlData.h; sourceTree = "<group>"; };
- 1EB59CBE202DA26000343A61 /* SDLSeatControlData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatControlData.m; sourceTree = "<group>"; };
- 1EB59CC1202DB40400343A61 /* SDLSeatControlCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSeatControlCapabilities.h; sourceTree = "<group>"; };
- 1EB59CC2202DB40400343A61 /* SDLSeatControlCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatControlCapabilities.m; sourceTree = "<group>"; };
1EB59CC7202DC86A00343A61 /* SDLModuleTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLModuleTypeSpec.m; sourceTree = "<group>"; };
1EB59CC9202DC8E300343A61 /* SDLMassageZoneSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageZoneSpec.m; sourceTree = "<group>"; };
1EB59CCD202DC97900343A61 /* SDLMassageCushionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageCushionSpec.m; sourceTree = "<group>"; };
@@ -2132,8 +2041,6 @@
1EB59CD3202DCAE900343A61 /* SDLMassageModeDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageModeDataSpec.m; sourceTree = "<group>"; };
1EB59CD7202DCCD500343A61 /* SDLMassageCushionFirmnessSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMassageCushionFirmnessSpec.m; sourceTree = "<group>"; };
1EB59CD9202DCEEC00343A61 /* SDLSeatMemoryActionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeatMemoryActionSpec.m; sourceTree = "<group>"; };
- 1EE48E8E1F2F0EE700B98D08 /* SDLTemperatureUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTemperatureUnit.h; sourceTree = "<group>"; };
- 1EE48E8F1F2F0EE700B98D08 /* SDLTemperatureUnit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTemperatureUnit.m; sourceTree = "<group>"; };
1EE8C4371F347C7300FDC2CF /* SDLRadioBandSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioBandSpec.m; sourceTree = "<group>"; };
1EE8C4391F347D4D00FDC2CF /* SDLRadioStateSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioStateSpec.m; sourceTree = "<group>"; };
1EE8C43B1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTemperatureUnitSpec.m; sourceTree = "<group>"; };
@@ -2153,27 +2060,21 @@
1EE8C45C1F387D1C00FDC2CF /* SDLGetInteriorVehicleDataResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetInteriorVehicleDataResponseSpec.m; sourceTree = "<group>"; };
1EE8C45E1F3884FF00FDC2CF /* SDLSetInteriorVehicleDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetInteriorVehicleDataSpec.m; sourceTree = "<group>"; };
1EE8C4601F38865B00FDC2CF /* SDLSetInteriorVehicleDataResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetInteriorVehicleDataResponseSpec.m; sourceTree = "<group>"; };
- 1FF7DAB51F75B27300B46C30 /* SDLFocusableItemLocatorType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFocusableItemLocatorType.h; sourceTree = "<group>"; };
- 1FF7DAB71F75B28E00B46C30 /* SDLFocusableItemHitTester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFocusableItemHitTester.h; sourceTree = "<group>"; };
- 1FF7DAB91F75B2A800B46C30 /* SDLFocusableItemLocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFocusableItemLocator.h; sourceTree = "<group>"; };
- 1FF7DABB1F75B2BF00B46C30 /* SDLFocusableItemLocator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFocusableItemLocator.m; sourceTree = "<group>"; };
1FF7DABF1F75CF6C00B46C30 /* SDLHapticManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHapticManagerSpec.m; path = ProxySpecs/SDLHapticManagerSpec.m; sourceTree = "<group>"; };
- 2B23352E232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SDLWindowCapability+ScreenManagerExtensions.h"; sourceTree = "<group>"; };
- 2B23352F232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "SDLWindowCapability+ScreenManagerExtensions.m"; sourceTree = "<group>"; };
- 2BF2F84D20ED004000A26EF2 /* SDLAudioStreamingIndicator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAudioStreamingIndicator.h; sourceTree = "<group>"; };
- 2BF2F84E20ED004000A26EF2 /* SDLAudioStreamingIndicator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAudioStreamingIndicator.m; sourceTree = "<group>"; };
2BF2F85120ED068200A26EF2 /* SDLAudioStreamingIndicatorSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAudioStreamingIndicatorSpec.m; sourceTree = "<group>"; };
- 332A913C1CED87F80043824C /* SDLAppInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAppInfo.h; sourceTree = "<group>"; };
- 332A913D1CED87F80043824C /* SDLAppInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppInfo.m; sourceTree = "<group>"; };
- 4A26370B2493F0CE00278BE3 /* SDLRPCMessageType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCMessageType.m; sourceTree = "<group>"; };
- 4A3BA4DA248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleSystemRequestHandler.h; sourceTree = "<group>"; };
- 4A3BA4DB248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleSystemRequestHandler.m; sourceTree = "<group>"; };
- 4A3BA4DF248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleSyncPDataHandler.h; sourceTree = "<group>"; };
- 4A3BA4E0248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleSyncPDataHandler.m; sourceTree = "<group>"; };
- 4A3BA4E524901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleMobileHMIStateHandler.h; sourceTree = "<group>"; };
- 4A3BA4E624901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleMobileHMIStateHandler.m; sourceTree = "<group>"; };
- 4A3BA4EA24914801003E56B8 /* SDLLifecycleProtocolHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleProtocolHandler.h; sourceTree = "<group>"; };
- 4A3BA4EB24914801003E56B8 /* SDLLifecycleProtocolHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleProtocolHandler.m; sourceTree = "<group>"; };
+ 4A1B036E24CF484E008C6B13 /* SDLDriverDistractionCapabilitySpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDriverDistractionCapabilitySpec.m; sourceTree = "<group>"; };
+ 4A1FA09A25114833006B7851 /* SDLErrorConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLErrorConstants.m; path = public/SDLErrorConstants.m; sourceTree = "<group>"; };
+ 4A40253D24FFDA660080E159 /* SDLTextAndGraphicState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicState.m; path = private/SDLTextAndGraphicState.m; sourceTree = "<group>"; };
+ 4A40253E24FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTextAndGraphicUpdateOperation.h; path = private/SDLTextAndGraphicUpdateOperation.h; sourceTree = "<group>"; };
+ 4A40253F24FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicUpdateOperation.m; path = private/SDLTextAndGraphicUpdateOperation.m; sourceTree = "<group>"; };
+ 4A40254024FFDA660080E159 /* SDLTextAndGraphicState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTextAndGraphicState.h; path = private/SDLTextAndGraphicState.h; sourceTree = "<group>"; };
+ 4A402558250026430080E159 /* SubscribeButtonManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SubscribeButtonManager.swift; path = "Example Apps/Example Swift/SubscribeButtonManager.swift"; sourceTree = SOURCE_ROOT; };
+ 4A40255A250026620080E159 /* SubscribeButtonManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SubscribeButtonManager.h; path = "Example Apps/Example ObjC/SubscribeButtonManager.h"; sourceTree = SOURCE_ROOT; };
+ 4A40255B250026620080E159 /* SubscribeButtonManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SubscribeButtonManager.m; path = "Example Apps/Example ObjC/SubscribeButtonManager.m"; sourceTree = SOURCE_ROOT; };
+ 4A40255E250134CA0080E159 /* SDLStabilityControlsStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStabilityControlsStatus.m; path = public/SDLStabilityControlsStatus.m; sourceTree = "<group>"; };
+ 4A40255F250134CA0080E159 /* SDLStabilityControlsStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStabilityControlsStatus.h; path = public/SDLStabilityControlsStatus.h; sourceTree = "<group>"; };
+ 4A404C65250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicUpdateOperationSpec.m; path = DevAPISpecs/SDLTextAndGraphicUpdateOperationSpec.m; sourceTree = "<group>"; };
+ 4A404C67250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicStateSpec.m; path = DevAPISpecs/SDLTextAndGraphicStateSpec.m; sourceTree = "<group>"; };
4A457DC224A2933E00386CBA /* SDLLifecycleRPCAdapterSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleRPCAdapterSpec.m; path = DevAPISpecs/SDLLifecycleRPCAdapterSpec.m; sourceTree = "<group>"; };
4A457DD224A3886700386CBA /* SDLLifecycleSyncPDataHandlerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleSyncPDataHandlerSpec.m; path = DevAPISpecs/SDLLifecycleSyncPDataHandlerSpec.m; sourceTree = "<group>"; };
4A457DD424A3C16E00386CBA /* SDLLifecycleMobileHMIStateHandlerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleMobileHMIStateHandlerSpec.m; path = DevAPISpecs/SDLLifecycleMobileHMIStateHandlerSpec.m; sourceTree = "<group>"; };
@@ -2183,67 +2084,1109 @@
4A4AD8A324894260008FC414 /* TestOldConfigurationUpdateManagerDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestOldConfigurationUpdateManagerDelegate.m; path = DevAPISpecs/TestOldConfigurationUpdateManagerDelegate.m; sourceTree = "<group>"; };
4A4AD8A524894270008FC414 /* TestNewConfigurationUpdateManagerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestNewConfigurationUpdateManagerDelegate.h; sourceTree = "<group>"; };
4A4AD8A624894270008FC414 /* TestNewConfigurationUpdateManagerDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestNewConfigurationUpdateManagerDelegate.m; sourceTree = "<group>"; };
- 4A99D00C247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SDLTextField+ScreenManagerExtensions.h"; sourceTree = "<group>"; };
- 4A99D00D247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "SDLTextField+ScreenManagerExtensions.m"; sourceTree = "<group>"; };
- 4A99D0102475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SDLImageField+ScreenManagerExtensions.h"; sourceTree = "<group>"; };
- 4A99D0112475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "SDLImageField+ScreenManagerExtensions.m"; sourceTree = "<group>"; };
- 4A9D02BC2497EED400FBE99B /* SDLLifecycleRPCAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleRPCAdapter.h; sourceTree = "<group>"; };
- 4A9D02BD2497EED400FBE99B /* SDLLifecycleRPCAdapter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleRPCAdapter.m; sourceTree = "<group>"; };
- 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityType.h; sourceTree = "<group>"; };
- 5D00AC661F140F0A004000D9 /* SDLSystemCapabilityType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityType.m; sourceTree = "<group>"; };
- 5D00AC691F141339004000D9 /* SDLSystemCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapability.h; sourceTree = "<group>"; };
- 5D00AC6A1F141339004000D9 /* SDLSystemCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapability.m; sourceTree = "<group>"; };
- 5D00AC6D1F1511B9004000D9 /* SDLGetSystemCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetSystemCapability.h; sourceTree = "<group>"; };
- 5D00AC6E1F1511B9004000D9 /* SDLGetSystemCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapability.m; sourceTree = "<group>"; };
- 5D00AC711F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetSystemCapabilityResponse.h; sourceTree = "<group>"; };
- 5D00AC721F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapabilityResponse.m; sourceTree = "<group>"; };
- 5D00AC751F15283E004000D9 /* SDLNavigationCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLNavigationCapability.h; sourceTree = "<group>"; };
- 5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationCapability.m; sourceTree = "<group>"; };
- 5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPhoneCapability.h; sourceTree = "<group>"; };
- 5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPhoneCapability.m; sourceTree = "<group>"; };
- 5D019274214994AC003500F6 /* NSMutableArray+Safe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+Safe.h"; sourceTree = "<group>"; };
- 5D019275214994AC003500F6 /* NSMutableArray+Safe.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+Safe.m"; sourceTree = "<group>"; };
- 5D07C02B2044AC9000D1ECDC /* SDLSequentialRPCRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSequentialRPCRequestOperation.h; sourceTree = "<group>"; };
- 5D07C02C2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSequentialRPCRequestOperation.m; sourceTree = "<group>"; };
- 5D07C02F2044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAsynchronousRPCRequestOperation.h; sourceTree = "<group>"; };
- 5D07C0302044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAsynchronousRPCRequestOperation.m; sourceTree = "<group>"; };
- 5D0A7372203F0C730001595D /* SDLTextAndGraphicManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTextAndGraphicManager.h; sourceTree = "<group>"; };
- 5D0A7373203F0C730001595D /* SDLTextAndGraphicManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTextAndGraphicManager.m; sourceTree = "<group>"; };
- 5D0A7380203F23F30001595D /* SDLSoftButtonManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonManager.h; sourceTree = "<group>"; };
- 5D0A7381203F23F30001595D /* SDLSoftButtonManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonManager.m; sourceTree = "<group>"; };
- 5D0A7384203F24060001595D /* SDLSoftButtonState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonState.h; sourceTree = "<group>"; };
- 5D0A7385203F24060001595D /* SDLSoftButtonState.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonState.m; sourceTree = "<group>"; };
- 5D0A7388203F24320001595D /* SDLSoftButtonObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonObject.h; sourceTree = "<group>"; };
- 5D0A7389203F24320001595D /* SDLSoftButtonObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonObject.m; sourceTree = "<group>"; };
+ 4A8BD22324F93131000945E3 /* SDLMassageCushionFirmness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMassageCushionFirmness.h; path = public/SDLMassageCushionFirmness.h; sourceTree = "<group>"; };
+ 4A8BD22424F93131000945E3 /* SDLMediaServiceData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMediaServiceData.m; path = public/SDLMediaServiceData.m; sourceTree = "<group>"; };
+ 4A8BD22524F93132000945E3 /* SDLMsgVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMsgVersion.m; path = public/SDLMsgVersion.m; sourceTree = "<group>"; };
+ 4A8BD22624F93132000945E3 /* SDLMassageModeData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMassageModeData.m; path = public/SDLMassageModeData.m; sourceTree = "<group>"; };
+ 4A8BD22724F93132000945E3 /* SDLKeyboardProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLKeyboardProperties.h; path = public/SDLKeyboardProperties.h; sourceTree = "<group>"; };
+ 4A8BD22824F93132000945E3 /* SDLLocationCoordinate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLocationCoordinate.h; path = public/SDLLocationCoordinate.h; sourceTree = "<group>"; };
+ 4A8BD22924F93132000945E3 /* SDLMenuParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMenuParams.m; path = public/SDLMenuParams.m; sourceTree = "<group>"; };
+ 4A8BD22A24F93132000945E3 /* SDLMassageModeData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMassageModeData.h; path = public/SDLMassageModeData.h; sourceTree = "<group>"; };
+ 4A8BD22B24F93132000945E3 /* SDLMetadataTags.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMetadataTags.m; path = public/SDLMetadataTags.m; sourceTree = "<group>"; };
+ 4A8BD22C24F93133000945E3 /* SDLMediaServiceManifest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMediaServiceManifest.h; path = public/SDLMediaServiceManifest.h; sourceTree = "<group>"; };
+ 4A8BD22D24F93133000945E3 /* SDLModuleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLModuleData.m; path = public/SDLModuleData.m; sourceTree = "<group>"; };
+ 4A8BD22E24F93133000945E3 /* SDLLocationDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLocationDetails.h; path = public/SDLLocationDetails.h; sourceTree = "<group>"; };
+ 4A8BD22F24F93133000945E3 /* SDLLocationCoordinate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLocationCoordinate.m; path = public/SDLLocationCoordinate.m; sourceTree = "<group>"; };
+ 4A8BD23024F93133000945E3 /* SDLMassageCushionFirmness.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMassageCushionFirmness.m; path = public/SDLMassageCushionFirmness.m; sourceTree = "<group>"; };
+ 4A8BD23124F93133000945E3 /* SDLMenuParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMenuParams.h; path = public/SDLMenuParams.h; sourceTree = "<group>"; };
+ 4A8BD23224F93133000945E3 /* SDLMyKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMyKey.h; path = public/SDLMyKey.h; sourceTree = "<group>"; };
+ 4A8BD23324F93134000945E3 /* SDLMediaServiceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMediaServiceData.h; path = public/SDLMediaServiceData.h; sourceTree = "<group>"; };
+ 4A8BD23424F93134000945E3 /* SDLLocationDetails.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLocationDetails.m; path = public/SDLLocationDetails.m; sourceTree = "<group>"; };
+ 4A8BD23524F93134000945E3 /* SDLMsgVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMsgVersion.h; path = public/SDLMsgVersion.h; sourceTree = "<group>"; };
+ 4A8BD23624F93134000945E3 /* SDLMediaServiceManifest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMediaServiceManifest.m; path = public/SDLMediaServiceManifest.m; sourceTree = "<group>"; };
+ 4A8BD23724F93134000945E3 /* SDLMyKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMyKey.m; path = public/SDLMyKey.m; sourceTree = "<group>"; };
+ 4A8BD23824F93134000945E3 /* SDLMetadataTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMetadataTags.h; path = public/SDLMetadataTags.h; sourceTree = "<group>"; };
+ 4A8BD23924F93134000945E3 /* SDLModuleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLModuleData.h; path = public/SDLModuleData.h; sourceTree = "<group>"; };
+ 4A8BD23A24F93135000945E3 /* SDLKeyboardProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLKeyboardProperties.m; path = public/SDLKeyboardProperties.m; sourceTree = "<group>"; };
+ 4A8BD25324F933C6000945E3 /* SDLNavigationServiceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNavigationServiceData.h; path = public/SDLNavigationServiceData.h; sourceTree = "<group>"; };
+ 4A8BD25424F933C6000945E3 /* SDLNavigationCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNavigationCapability.m; path = public/SDLNavigationCapability.m; sourceTree = "<group>"; };
+ 4A8BD25524F933C6000945E3 /* SDLNavigationInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNavigationInstruction.h; path = public/SDLNavigationInstruction.h; sourceTree = "<group>"; };
+ 4A8BD25624F933C6000945E3 /* SDLNavigationInstruction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNavigationInstruction.m; path = public/SDLNavigationInstruction.m; sourceTree = "<group>"; };
+ 4A8BD25724F933C6000945E3 /* SDLNavigationServiceManifest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNavigationServiceManifest.h; path = public/SDLNavigationServiceManifest.h; sourceTree = "<group>"; };
+ 4A8BD25824F933C6000945E3 /* SDLNavigationServiceManifest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNavigationServiceManifest.m; path = public/SDLNavigationServiceManifest.m; sourceTree = "<group>"; };
+ 4A8BD25924F933C6000945E3 /* SDLOasisAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOasisAddress.h; path = public/SDLOasisAddress.h; sourceTree = "<group>"; };
+ 4A8BD25A24F933C6000945E3 /* SDLOasisAddress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOasisAddress.m; path = public/SDLOasisAddress.m; sourceTree = "<group>"; };
+ 4A8BD25B24F933C7000945E3 /* SDLNavigationCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNavigationCapability.h; path = public/SDLNavigationCapability.h; sourceTree = "<group>"; };
+ 4A8BD25C24F933C7000945E3 /* SDLNavigationServiceData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNavigationServiceData.m; path = public/SDLNavigationServiceData.m; sourceTree = "<group>"; };
+ 4A8BD25D24F933C7000945E3 /* SDLParameterPermissions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLParameterPermissions.h; path = public/SDLParameterPermissions.h; sourceTree = "<group>"; };
+ 4A8BD25E24F933C7000945E3 /* SDLParameterPermissions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLParameterPermissions.m; path = public/SDLParameterPermissions.m; sourceTree = "<group>"; };
+ 4A8BD26B24F9343D000945E3 /* SDLPermissionItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPermissionItem.h; path = public/SDLPermissionItem.h; sourceTree = "<group>"; };
+ 4A8BD26C24F9343D000945E3 /* SDLRemoteControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRemoteControlCapabilities.m; path = public/SDLRemoteControlCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD26D24F9343E000945E3 /* SDLRDSData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRDSData.m; path = public/SDLRDSData.m; sourceTree = "<group>"; };
+ 4A8BD26E24F9343E000945E3 /* SDLPhoneCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPhoneCapability.m; path = public/SDLPhoneCapability.m; sourceTree = "<group>"; };
+ 4A8BD26F24F9343E000945E3 /* SDLPresetBankCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPresetBankCapabilities.h; path = public/SDLPresetBankCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD27024F9343E000945E3 /* SDLPresetBankCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPresetBankCapabilities.m; path = public/SDLPresetBankCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD27124F9343E000945E3 /* SDLRadioControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRadioControlCapabilities.m; path = public/SDLRadioControlCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD27224F9343E000945E3 /* SDLRadioControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRadioControlData.m; path = public/SDLRadioControlData.m; sourceTree = "<group>"; };
+ 4A8BD27324F9343F000945E3 /* SDLRemoteControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRemoteControlCapabilities.h; path = public/SDLRemoteControlCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD27424F9343F000945E3 /* SDLPermissionItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPermissionItem.m; path = public/SDLPermissionItem.m; sourceTree = "<group>"; };
+ 4A8BD27524F9343F000945E3 /* SDLRadioControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRadioControlData.h; path = public/SDLRadioControlData.h; sourceTree = "<group>"; };
+ 4A8BD27624F9343F000945E3 /* SDLRDSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRDSData.h; path = public/SDLRDSData.h; sourceTree = "<group>"; };
+ 4A8BD27724F9343F000945E3 /* SDLPhoneCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPhoneCapability.h; path = public/SDLPhoneCapability.h; sourceTree = "<group>"; };
+ 4A8BD27824F9343F000945E3 /* SDLRadioControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRadioControlCapabilities.h; path = public/SDLRadioControlCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD28724F934F2000945E3 /* SDLRGBColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRGBColor.h; path = public/SDLRGBColor.h; sourceTree = "<group>"; };
+ 4A8BD28824F934F2000945E3 /* SDLRectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRectangle.h; path = public/SDLRectangle.h; sourceTree = "<group>"; };
+ 4A8BD28924F934F2000945E3 /* SDLRectangle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRectangle.m; path = public/SDLRectangle.m; sourceTree = "<group>"; };
+ 4A8BD28A24F934F3000945E3 /* SDLRGBColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRGBColor.m; path = public/SDLRGBColor.m; sourceTree = "<group>"; };
+ 4A8BD28F24F93533000945E3 /* SDLScreenParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLScreenParams.m; path = public/SDLScreenParams.m; sourceTree = "<group>"; };
+ 4A8BD29024F93533000945E3 /* SDLSeatControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatControlCapabilities.h; path = public/SDLSeatControlCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD29124F93533000945E3 /* SDLScreenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLScreenParams.h; path = public/SDLScreenParams.h; sourceTree = "<group>"; };
+ 4A8BD29224F93533000945E3 /* SDLSingleTireStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSingleTireStatus.h; path = public/SDLSingleTireStatus.h; sourceTree = "<group>"; };
+ 4A8BD29324F93533000945E3 /* SDLSeatControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatControlData.m; path = public/SDLSeatControlData.m; sourceTree = "<group>"; };
+ 4A8BD29424F93533000945E3 /* SDLSeatControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatControlCapabilities.m; path = public/SDLSeatControlCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD29524F93534000945E3 /* SDLSeatMemoryAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatMemoryAction.m; path = public/SDLSeatMemoryAction.m; sourceTree = "<group>"; };
+ 4A8BD29624F93534000945E3 /* SDLSingleTireStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSingleTireStatus.m; path = public/SDLSingleTireStatus.m; sourceTree = "<group>"; };
+ 4A8BD29724F93534000945E3 /* SDLSeatMemoryAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatMemoryAction.h; path = public/SDLSeatMemoryAction.h; sourceTree = "<group>"; };
+ 4A8BD29824F93534000945E3 /* SDLSeatControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatControlData.h; path = public/SDLSeatControlData.h; sourceTree = "<group>"; };
+ 4A8BD2A324F935BB000945E3 /* SDLSoftButtonCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonCapabilities.m; path = public/SDLSoftButtonCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD2A424F935BB000945E3 /* SDLStartTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStartTime.h; path = public/SDLStartTime.h; sourceTree = "<group>"; };
+ 4A8BD2A524F935BB000945E3 /* SDLSoftButtonCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButtonCapabilities.h; path = public/SDLSoftButtonCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD2A624F935BB000945E3 /* SDLSISData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSISData.h; path = public/SDLSISData.h; sourceTree = "<group>"; };
+ 4A8BD2A724F935BB000945E3 /* SDLStationIDNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStationIDNumber.m; path = public/SDLStationIDNumber.m; sourceTree = "<group>"; };
+ 4A8BD2A824F935BB000945E3 /* SDLSystemCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemCapability.h; path = public/SDLSystemCapability.h; sourceTree = "<group>"; };
+ 4A8BD2A924F935BB000945E3 /* SDLSoftButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButton.m; path = public/SDLSoftButton.m; sourceTree = "<group>"; };
+ 4A8BD2AB24F935BC000945E3 /* SDLSoftButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButton.h; path = public/SDLSoftButton.h; sourceTree = "<group>"; };
+ 4A8BD2AD24F935BC000945E3 /* SDLStationIDNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStationIDNumber.h; path = public/SDLStationIDNumber.h; sourceTree = "<group>"; };
+ 4A8BD2AE24F935BC000945E3 /* SDLSISData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSISData.m; path = public/SDLSISData.m; sourceTree = "<group>"; };
+ 4A8BD2AF24F935BC000945E3 /* SDLStartTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStartTime.m; path = public/SDLStartTime.m; sourceTree = "<group>"; };
+ 4A8BD2B024F935BC000945E3 /* SDLSystemCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemCapability.m; path = public/SDLSystemCapability.m; sourceTree = "<group>"; };
+ 4A8BD2BF24F93800000945E3 /* SDLTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTouchEvent.h; path = public/SDLTouchEvent.h; sourceTree = "<group>"; };
+ 4A8BD2C024F93801000945E3 /* SDLTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextField.m; path = public/SDLTextField.m; sourceTree = "<group>"; };
+ 4A8BD2C124F93801000945E3 /* SDLTemperature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTemperature.h; path = public/SDLTemperature.h; sourceTree = "<group>"; };
+ 4A8BD2C224F93801000945E3 /* SDLTemplateColorScheme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTemplateColorScheme.m; path = public/SDLTemplateColorScheme.m; sourceTree = "<group>"; };
+ 4A8BD2C324F93801000945E3 /* SDLTireStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTireStatus.m; path = public/SDLTireStatus.m; sourceTree = "<group>"; };
+ 4A8BD2C424F93801000945E3 /* SDLTouchCoord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchCoord.m; path = public/SDLTouchCoord.m; sourceTree = "<group>"; };
+ 4A8BD2C524F93801000945E3 /* SDLTouchEventCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTouchEventCapabilities.h; path = public/SDLTouchEventCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD2C624F93801000945E3 /* SDLTemperature.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTemperature.m; path = public/SDLTemperature.m; sourceTree = "<group>"; };
+ 4A8BD2C724F93802000945E3 /* SDLTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTextField.h; path = public/SDLTextField.h; sourceTree = "<group>"; };
+ 4A8BD2C824F93802000945E3 /* SDLTireStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTireStatus.h; path = public/SDLTireStatus.h; sourceTree = "<group>"; };
+ 4A8BD2C924F93802000945E3 /* SDLTemplateConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTemplateConfiguration.h; path = public/SDLTemplateConfiguration.h; sourceTree = "<group>"; };
+ 4A8BD2CA24F93802000945E3 /* SDLTouchEventCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchEventCapabilities.m; path = public/SDLTouchEventCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD2CB24F93802000945E3 /* SDLTemplateConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTemplateConfiguration.m; path = public/SDLTemplateConfiguration.m; sourceTree = "<group>"; };
+ 4A8BD2CC24F93802000945E3 /* SDLTouchCoord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTouchCoord.h; path = public/SDLTouchCoord.h; sourceTree = "<group>"; };
+ 4A8BD2CD24F93803000945E3 /* SDLTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchEvent.m; path = public/SDLTouchEvent.m; sourceTree = "<group>"; };
+ 4A8BD2CE24F93803000945E3 /* SDLTemplateColorScheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTemplateColorScheme.h; path = public/SDLTemplateColorScheme.h; sourceTree = "<group>"; };
+ 4A8BD2DF24F93871000945E3 /* SDLVehicleDataType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataType.m; path = public/SDLVehicleDataType.m; sourceTree = "<group>"; };
+ 4A8BD2E024F93871000945E3 /* SDLTurn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTurn.m; path = public/SDLTurn.m; sourceTree = "<group>"; };
+ 4A8BD2E124F93871000945E3 /* SDLTurn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTurn.h; path = public/SDLTurn.h; sourceTree = "<group>"; };
+ 4A8BD2E224F93871000945E3 /* SDLVideoStreamingFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVideoStreamingFormat.h; path = public/SDLVideoStreamingFormat.h; sourceTree = "<group>"; };
+ 4A8BD2E324F93871000945E3 /* SDLVrHelpItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVrHelpItem.m; path = public/SDLVrHelpItem.m; sourceTree = "<group>"; };
+ 4A8BD2E424F93871000945E3 /* SDLVideoStreamingCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVideoStreamingCapability.m; path = public/SDLVideoStreamingCapability.m; sourceTree = "<group>"; };
+ 4A8BD2E524F93872000945E3 /* SDLVehicleDataResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataResult.h; path = public/SDLVehicleDataResult.h; sourceTree = "<group>"; };
+ 4A8BD2E624F93872000945E3 /* SDLTTSChunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTTSChunk.h; path = public/SDLTTSChunk.h; sourceTree = "<group>"; };
+ 4A8BD2E724F93872000945E3 /* SDLTTSChunk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTTSChunk.m; path = public/SDLTTSChunk.m; sourceTree = "<group>"; };
+ 4A8BD2E824F93872000945E3 /* SDLVehicleDataResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataResult.m; path = public/SDLVehicleDataResult.m; sourceTree = "<group>"; };
+ 4A8BD2E924F93872000945E3 /* SDLVrHelpItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVrHelpItem.h; path = public/SDLVrHelpItem.h; sourceTree = "<group>"; };
+ 4A8BD2EA24F93872000945E3 /* SDLVideoStreamingFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVideoStreamingFormat.m; path = public/SDLVideoStreamingFormat.m; sourceTree = "<group>"; };
+ 4A8BD2EB24F93872000945E3 /* SDLVehicleDataType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataType.h; path = public/SDLVehicleDataType.h; sourceTree = "<group>"; };
+ 4A8BD2EC24F93872000945E3 /* SDLVideoStreamingCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVideoStreamingCapability.h; path = public/SDLVideoStreamingCapability.h; sourceTree = "<group>"; };
+ 4A8BD2FB24F938A4000945E3 /* SDLVehicleType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleType.m; path = public/SDLVehicleType.m; sourceTree = "<group>"; };
+ 4A8BD2FC24F938A4000945E3 /* SDLVehicleType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleType.h; path = public/SDLVehicleType.h; sourceTree = "<group>"; };
+ 4A8BD2FF24F938D5000945E3 /* SDLWeatherData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWeatherData.m; path = public/SDLWeatherData.m; sourceTree = "<group>"; };
+ 4A8BD30024F938D5000945E3 /* SDLWeatherAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWeatherAlert.m; path = public/SDLWeatherAlert.m; sourceTree = "<group>"; };
+ 4A8BD30124F938D5000945E3 /* SDLWeatherServiceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWeatherServiceData.h; path = public/SDLWeatherServiceData.h; sourceTree = "<group>"; };
+ 4A8BD30224F938D5000945E3 /* SDLWeatherServiceData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWeatherServiceData.m; path = public/SDLWeatherServiceData.m; sourceTree = "<group>"; };
+ 4A8BD30324F938D6000945E3 /* SDLWindowTypeCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWindowTypeCapabilities.h; path = public/SDLWindowTypeCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD30424F938D6000945E3 /* SDLWeatherAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWeatherAlert.h; path = public/SDLWeatherAlert.h; sourceTree = "<group>"; };
+ 4A8BD30524F938D6000945E3 /* SDLWeatherServiceManifest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWeatherServiceManifest.m; path = public/SDLWeatherServiceManifest.m; sourceTree = "<group>"; };
+ 4A8BD30624F938D6000945E3 /* SDLWeatherData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWeatherData.h; path = public/SDLWeatherData.h; sourceTree = "<group>"; };
+ 4A8BD30724F938D6000945E3 /* SDLWindowCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWindowCapability.h; path = public/SDLWindowCapability.h; sourceTree = "<group>"; };
+ 4A8BD30824F938D6000945E3 /* SDLWindowCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWindowCapability.m; path = public/SDLWindowCapability.m; sourceTree = "<group>"; };
+ 4A8BD30924F938D6000945E3 /* SDLWeatherServiceManifest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWeatherServiceManifest.h; path = public/SDLWeatherServiceManifest.h; sourceTree = "<group>"; };
+ 4A8BD30A24F938D6000945E3 /* SDLWindowTypeCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWindowTypeCapabilities.m; path = public/SDLWindowTypeCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD31724F93941000945E3 /* SDLModuleInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLModuleInfo.m; path = public/SDLModuleInfo.m; sourceTree = "<group>"; };
+ 4A8BD31824F93941000945E3 /* SDLModuleInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLModuleInfo.h; path = public/SDLModuleInfo.h; sourceTree = "<group>"; };
+ 4A8BD31B24F93964000945E3 /* SDLSeatLocationCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatLocationCapability.h; path = public/SDLSeatLocationCapability.h; sourceTree = "<group>"; };
+ 4A8BD31C24F93964000945E3 /* SDLSeatLocationCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatLocationCapability.m; path = public/SDLSeatLocationCapability.m; sourceTree = "<group>"; };
+ 4A8BD31D24F93964000945E3 /* SDLSeatLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatLocation.m; path = public/SDLSeatLocation.m; sourceTree = "<group>"; };
+ 4A8BD31E24F93964000945E3 /* SDLSeatLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatLocation.h; path = public/SDLSeatLocation.h; sourceTree = "<group>"; };
+ 4A8BD32324F94302000945E3 /* SDLProtocolDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocolDelegate.h; path = private/SDLProtocolDelegate.h; sourceTree = "<group>"; };
+ 4A8BD32524F9431B000945E3 /* SDLV1ProtocolHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLV1ProtocolHeader.m; path = private/SDLV1ProtocolHeader.m; sourceTree = "<group>"; };
+ 4A8BD32624F9431B000945E3 /* SDLV2ProtocolHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLV2ProtocolHeader.m; path = private/SDLV2ProtocolHeader.m; sourceTree = "<group>"; };
+ 4A8BD32724F9431B000945E3 /* SDLV1ProtocolHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLV1ProtocolHeader.h; path = private/SDLV1ProtocolHeader.h; sourceTree = "<group>"; };
+ 4A8BD32824F9431B000945E3 /* SDLProtocolHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocolHeader.h; path = private/SDLProtocolHeader.h; sourceTree = "<group>"; };
+ 4A8BD32924F9431B000945E3 /* SDLProtocolHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLProtocolHeader.m; path = private/SDLProtocolHeader.m; sourceTree = "<group>"; };
+ 4A8BD32A24F9431B000945E3 /* SDLV2ProtocolHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLV2ProtocolHeader.h; path = private/SDLV2ProtocolHeader.h; sourceTree = "<group>"; };
+ 4A8BD33124F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadAudioStartServiceAck.m; path = private/SDLControlFramePayloadAudioStartServiceAck.m; sourceTree = "<group>"; };
+ 4A8BD33224F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadAudioStartServiceAck.h; path = private/SDLControlFramePayloadAudioStartServiceAck.h; sourceTree = "<group>"; };
+ 4A8BD33524F945B4000945E3 /* SDLControlFramePayloadConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadConstants.m; path = private/SDLControlFramePayloadConstants.m; sourceTree = "<group>"; };
+ 4A8BD33624F945B4000945E3 /* SDLControlFramePayloadConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadConstants.h; path = private/SDLControlFramePayloadConstants.h; sourceTree = "<group>"; };
+ 4A8BD33924F945CB000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadRegisterSecondaryTransportNak.h; path = private/SDLControlFramePayloadRegisterSecondaryTransportNak.h; sourceTree = "<group>"; };
+ 4A8BD33A24F945CB000945E3 /* SDLControlFramePayloadNak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadNak.m; path = private/SDLControlFramePayloadNak.m; sourceTree = "<group>"; };
+ 4A8BD33B24F945CC000945E3 /* SDLControlFramePayloadEndService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadEndService.m; path = private/SDLControlFramePayloadEndService.m; sourceTree = "<group>"; };
+ 4A8BD33C24F945CC000945E3 /* SDLControlFramePayloadNak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadNak.h; path = private/SDLControlFramePayloadNak.h; sourceTree = "<group>"; };
+ 4A8BD33D24F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadTransportEventUpdate.h; path = private/SDLControlFramePayloadTransportEventUpdate.h; sourceTree = "<group>"; };
+ 4A8BD33E24F945CC000945E3 /* SDLControlFramePayloadEndService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadEndService.h; path = private/SDLControlFramePayloadEndService.h; sourceTree = "<group>"; };
+ 4A8BD33F24F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadTransportEventUpdate.m; path = private/SDLControlFramePayloadTransportEventUpdate.m; sourceTree = "<group>"; };
+ 4A8BD34024F945CC000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadRegisterSecondaryTransportNak.m; path = private/SDLControlFramePayloadRegisterSecondaryTransportNak.m; sourceTree = "<group>"; };
+ 4A8BD34924F945E8000945E3 /* SDLControlFramePayloadRPCStartService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadRPCStartService.m; path = private/SDLControlFramePayloadRPCStartService.m; sourceTree = "<group>"; };
+ 4A8BD34A24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadRPCStartServiceAck.m; path = private/SDLControlFramePayloadRPCStartServiceAck.m; sourceTree = "<group>"; };
+ 4A8BD34B24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadRPCStartServiceAck.h; path = private/SDLControlFramePayloadRPCStartServiceAck.h; sourceTree = "<group>"; };
+ 4A8BD34C24F945E8000945E3 /* SDLControlFramePayloadRPCStartService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadRPCStartService.h; path = private/SDLControlFramePayloadRPCStartService.h; sourceTree = "<group>"; };
+ 4A8BD35124F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadVideoStartServiceAck.h; path = private/SDLControlFramePayloadVideoStartServiceAck.h; sourceTree = "<group>"; };
+ 4A8BD35224F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadVideoStartServiceAck.m; path = private/SDLControlFramePayloadVideoStartServiceAck.m; sourceTree = "<group>"; };
+ 4A8BD35324F945F6000945E3 /* SDLControlFramePayloadVideoStartService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadVideoStartService.m; path = private/SDLControlFramePayloadVideoStartService.m; sourceTree = "<group>"; };
+ 4A8BD35424F945F6000945E3 /* SDLControlFramePayloadVideoStartService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadVideoStartService.h; path = private/SDLControlFramePayloadVideoStartService.h; sourceTree = "<group>"; };
+ 4A8BD35924F94603000945E3 /* SDLControlFramePayloadType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLControlFramePayloadType.h; path = private/SDLControlFramePayloadType.h; sourceTree = "<group>"; };
+ 4A8BD35B24F9461A000945E3 /* SDLProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLProtocolMessage.m; path = private/SDLProtocolMessage.m; sourceTree = "<group>"; };
+ 4A8BD35C24F9461A000945E3 /* SDLV1ProtocolMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLV1ProtocolMessage.h; path = private/SDLV1ProtocolMessage.h; sourceTree = "<group>"; };
+ 4A8BD35D24F9461A000945E3 /* SDLV1ProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLV1ProtocolMessage.m; path = private/SDLV1ProtocolMessage.m; sourceTree = "<group>"; };
+ 4A8BD35E24F9461A000945E3 /* SDLV2ProtocolMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLV2ProtocolMessage.h; path = private/SDLV2ProtocolMessage.h; sourceTree = "<group>"; };
+ 4A8BD35F24F9461A000945E3 /* SDLV2ProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLV2ProtocolMessage.m; path = private/SDLV2ProtocolMessage.m; sourceTree = "<group>"; };
+ 4A8BD36024F9461A000945E3 /* SDLProtocolMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocolMessage.h; path = private/SDLProtocolMessage.h; sourceTree = "<group>"; };
+ 4A8BD36724F94636000945E3 /* SDLProtocolMessageDisassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocolMessageDisassembler.h; path = private/SDLProtocolMessageDisassembler.h; sourceTree = "<group>"; };
+ 4A8BD36824F94636000945E3 /* SDLProtocolMessageDisassembler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLProtocolMessageDisassembler.m; path = private/SDLProtocolMessageDisassembler.m; sourceTree = "<group>"; };
+ 4A8BD36924F94636000945E3 /* SDLProtocolMessageAssembler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLProtocolMessageAssembler.m; path = private/SDLProtocolMessageAssembler.m; sourceTree = "<group>"; };
+ 4A8BD36A24F94636000945E3 /* SDLProtocolMessageAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocolMessageAssembler.h; path = private/SDLProtocolMessageAssembler.h; sourceTree = "<group>"; };
+ 4A8BD36F24F9465E000945E3 /* SDLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocol.h; path = private/SDLProtocol.h; sourceTree = "<group>"; };
+ 4A8BD37024F9465E000945E3 /* SDLProtocolReceivedMessageRouter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLProtocolReceivedMessageRouter.m; path = private/SDLProtocolReceivedMessageRouter.m; sourceTree = "<group>"; };
+ 4A8BD37124F9465E000945E3 /* SDLProtocolReceivedMessageRouter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocolReceivedMessageRouter.h; path = private/SDLProtocolReceivedMessageRouter.h; sourceTree = "<group>"; };
+ 4A8BD37224F9465E000945E3 /* SDLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLProtocol.m; path = private/SDLProtocol.m; sourceTree = "<group>"; };
+ 4A8BD37724F9468B000945E3 /* SDLProtocolConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLProtocolConstants.m; path = public/SDLProtocolConstants.m; sourceTree = "<group>"; };
+ 4A8BD37824F9468B000945E3 /* SDLProtocolConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLProtocolConstants.h; path = public/SDLProtocolConstants.h; sourceTree = "<group>"; };
+ 4A8BD37B24F94697000945E3 /* SDLFunctionID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFunctionID.h; path = public/SDLFunctionID.h; sourceTree = "<group>"; };
+ 4A8BD37C24F94697000945E3 /* SDLFunctionID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFunctionID.m; path = public/SDLFunctionID.m; sourceTree = "<group>"; };
+ 4A8BD37F24F946D4000945E3 /* SDLTransportType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTransportType.h; path = private/SDLTransportType.h; sourceTree = "<group>"; };
+ 4A8BD38024F946D4000945E3 /* SDLTransportDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTransportDelegate.h; path = private/SDLTransportDelegate.h; sourceTree = "<group>"; };
+ 4A8BD38324F94702000945E3 /* SDLTCPTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTCPTransport.h; path = private/SDLTCPTransport.h; sourceTree = "<group>"; };
+ 4A8BD38424F94702000945E3 /* SDLTCPTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTCPTransport.m; path = private/SDLTCPTransport.m; sourceTree = "<group>"; };
+ 4A8BD38724F94711000945E3 /* SDLSecondaryTransportManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSecondaryTransportManager.h; path = private/SDLSecondaryTransportManager.h; sourceTree = "<group>"; };
+ 4A8BD38824F94712000945E3 /* SDLSecondaryTransportManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSecondaryTransportManager.m; path = private/SDLSecondaryTransportManager.m; sourceTree = "<group>"; };
+ 4A8BD38B24F94730000945E3 /* SDLIAPConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIAPConstants.h; path = private/SDLIAPConstants.h; sourceTree = "<group>"; };
+ 4A8BD38C24F94730000945E3 /* SDLIAPSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIAPSession.h; path = private/SDLIAPSession.h; sourceTree = "<group>"; };
+ 4A8BD38D24F94730000945E3 /* SDLIAPTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIAPTransport.h; path = private/SDLIAPTransport.h; sourceTree = "<group>"; };
+ 4A8BD38E24F94730000945E3 /* SDLIAPSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIAPSession.m; path = private/SDLIAPSession.m; sourceTree = "<group>"; };
+ 4A8BD38F24F94731000945E3 /* SDLIAPConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIAPConstants.m; path = private/SDLIAPConstants.m; sourceTree = "<group>"; };
+ 4A8BD39024F94731000945E3 /* SDLIAPTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIAPTransport.m; path = private/SDLIAPTransport.m; sourceTree = "<group>"; };
+ 4A8BD39724F94740000945E3 /* SDLIAPControlSessionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIAPControlSessionDelegate.h; path = private/SDLIAPControlSessionDelegate.h; sourceTree = "<group>"; };
+ 4A8BD39824F94740000945E3 /* SDLIAPControlSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIAPControlSession.m; path = private/SDLIAPControlSession.m; sourceTree = "<group>"; };
+ 4A8BD39924F94740000945E3 /* SDLIAPControlSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIAPControlSession.h; path = private/SDLIAPControlSession.h; sourceTree = "<group>"; };
+ 4A8BD39D24F9474B000945E3 /* SDLIAPDataSessionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIAPDataSessionDelegate.h; path = private/SDLIAPDataSessionDelegate.h; sourceTree = "<group>"; };
+ 4A8BD39E24F9474B000945E3 /* SDLIAPDataSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIAPDataSession.h; path = private/SDLIAPDataSession.h; sourceTree = "<group>"; };
+ 4A8BD39F24F9474B000945E3 /* SDLIAPDataSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIAPDataSession.m; path = private/SDLIAPDataSession.m; sourceTree = "<group>"; };
+ 4A8BD3A324F9485A000945E3 /* SDLVideoStreamingState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVideoStreamingState.m; path = public/SDLVideoStreamingState.m; sourceTree = "<group>"; };
+ 4A8BD3A424F9485A000945E3 /* SDLVideoStreamingState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVideoStreamingState.h; path = public/SDLVideoStreamingState.h; sourceTree = "<group>"; };
+ 4A8BD3A724F948CE000945E3 /* SDLDeleteFileOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteFileOperation.h; path = private/SDLDeleteFileOperation.h; sourceTree = "<group>"; };
+ 4A8BD3A824F948CF000945E3 /* SDLDeleteFileOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteFileOperation.m; path = private/SDLDeleteFileOperation.m; sourceTree = "<group>"; };
+ 4A8BD3AB24F98602000945E3 /* NSNumber+NumberType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSNumber+NumberType.h"; path = "public/NSNumber+NumberType.h"; sourceTree = "<group>"; };
+ 4A8BD3AD24F98ACE000945E3 /* SDLLogManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogManager.m; path = public/SDLLogManager.m; sourceTree = "<group>"; };
+ 4A8BD3AE24F98ACE000945E3 /* SDLLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogManager.h; path = public/SDLLogManager.h; sourceTree = "<group>"; };
+ 4A8BD3B124F98F63000945E3 /* SDLOnUpdateFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnUpdateFile.m; path = public/SDLOnUpdateFile.m; sourceTree = "<group>"; };
+ 4A8BD3B224F98F63000945E3 /* SDLOnUpdateSubMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnUpdateSubMenu.m; path = public/SDLOnUpdateSubMenu.m; sourceTree = "<group>"; };
+ 4A8BD3B324F98F64000945E3 /* SDLOnUpdateFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnUpdateFile.h; path = public/SDLOnUpdateFile.h; sourceTree = "<group>"; };
+ 4A8BD3B424F98F64000945E3 /* SDLOnUpdateSubMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnUpdateSubMenu.h; path = public/SDLOnUpdateSubMenu.h; sourceTree = "<group>"; };
+ 4A8BD3B924F98F89000945E3 /* SDLDynamicUpdateCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDynamicUpdateCapabilities.h; path = public/SDLDynamicUpdateCapabilities.h; sourceTree = "<group>"; };
+ 4A8BD3BA24F98F89000945E3 /* SDLDynamicUpdateCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDynamicUpdateCapabilities.m; path = public/SDLDynamicUpdateCapabilities.m; sourceTree = "<group>"; };
+ 4A8BD3BD24F99470000945E3 /* SDLSecurityType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSecurityType.h; path = public/SDLSecurityType.h; sourceTree = "<group>"; };
+ 4A8BD3BF24F994D5000945E3 /* SDLFileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFileManager.m; path = public/SDLFileManager.m; sourceTree = "<group>"; };
+ 4A8BD3C024F994D5000945E3 /* SDLFileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFileManager.h; path = public/SDLFileManager.h; sourceTree = "<group>"; };
+ 4A8BD3C324F998A7000945E3 /* SDLWindowState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWindowState.h; path = public/SDLWindowState.h; sourceTree = "<group>"; };
+ 4A8BD3C424F998A8000945E3 /* SDLWindowStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWindowStatus.h; path = public/SDLWindowStatus.h; sourceTree = "<group>"; };
+ 4A8BD3C524F998A8000945E3 /* SDLWindowStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWindowStatus.m; path = public/SDLWindowStatus.m; sourceTree = "<group>"; };
+ 4A8BD3C624F998A8000945E3 /* SDLWindowState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWindowState.m; path = public/SDLWindowState.m; sourceTree = "<group>"; };
+ 4A8BD3CB24F999BE000945E3 /* TestSubscribeButtonObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestSubscribeButtonObserver.h; sourceTree = "<group>"; };
+ 4A8BD3CC24F999BE000945E3 /* TestSubscribeButtonObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestSubscribeButtonObserver.m; sourceTree = "<group>"; };
+ 4A8BD3CE24FE7CF1000945E3 /* SDLPermissionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPermissionManager.h; path = public/SDLPermissionManager.h; sourceTree = "<group>"; };
+ 4A8BD3CF24FE7CF1000945E3 /* SDLPermissionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPermissionManager.m; path = public/SDLPermissionManager.m; sourceTree = "<group>"; };
+ 4ABB24B224F592620061BF55 /* NSMutableArray+Safe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+Safe.h"; path = "private/NSMutableArray+Safe.h"; sourceTree = "<group>"; };
+ 4ABB24B324F592620061BF55 /* NSMutableArray+Safe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+Safe.m"; path = "private/NSMutableArray+Safe.m"; sourceTree = "<group>"; };
+ 4ABB24B424F592620061BF55 /* NSBundle+SDLBundle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+SDLBundle.m"; path = "private/NSBundle+SDLBundle.m"; sourceTree = "<group>"; };
+ 4ABB24B524F592620061BF55 /* NSMutableDictionary+SafeRemove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableDictionary+SafeRemove.m"; path = "private/NSMutableDictionary+SafeRemove.m"; sourceTree = "<group>"; };
+ 4ABB24B624F592620061BF55 /* NSBundle+SDLBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSBundle+SDLBundle.h"; path = "private/NSBundle+SDLBundle.h"; sourceTree = "<group>"; };
+ 4ABB24B724F592620061BF55 /* NSMapTable+Subscripting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMapTable+Subscripting.m"; path = "private/NSMapTable+Subscripting.m"; sourceTree = "<group>"; };
+ 4ABB24B824F592620061BF55 /* NSMutableDictionary+SafeRemove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableDictionary+SafeRemove.h"; path = "private/NSMutableDictionary+SafeRemove.h"; sourceTree = "<group>"; };
+ 4ABB24B924F592620061BF55 /* NSMapTable+Subscripting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMapTable+Subscripting.h"; path = "private/NSMapTable+Subscripting.h"; sourceTree = "<group>"; };
+ 4ABB24C424F592900061BF55 /* SDLError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLError.h; path = private/SDLError.h; sourceTree = "<group>"; };
+ 4ABB24C524F592900061BF55 /* SDLError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLError.m; path = private/SDLError.m; sourceTree = "<group>"; };
+ 4ABB24C824F593090061BF55 /* SDLStreamingProtocolDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingProtocolDelegate.h; path = private/SDLStreamingProtocolDelegate.h; sourceTree = "<group>"; };
+ 4ABB24CA24F5931B0061BF55 /* SDLStateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStateMachine.h; path = private/SDLStateMachine.h; sourceTree = "<group>"; };
+ 4ABB24CB24F5931B0061BF55 /* SDLStateMachine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStateMachine.m; path = private/SDLStateMachine.m; sourceTree = "<group>"; };
+ 4ABB24CE24F593C70061BF55 /* SDLErrorConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLErrorConstants.h; path = public/SDLErrorConstants.h; sourceTree = "<group>"; };
+ 4ABB24D024F593E00061BF55 /* SDLNotificationConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNotificationConstants.h; path = public/SDLNotificationConstants.h; sourceTree = "<group>"; };
+ 4ABB24D124F593E00061BF55 /* SDLNotificationConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNotificationConstants.m; path = public/SDLNotificationConstants.m; sourceTree = "<group>"; };
+ 4ABB24D424F593EC0061BF55 /* SDLVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVersion.m; path = public/SDLVersion.m; sourceTree = "<group>"; };
+ 4ABB24D524F593ED0061BF55 /* SDLVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVersion.h; path = public/SDLVersion.h; sourceTree = "<group>"; };
+ 4ABB24D824F594190061BF55 /* SDLConnectionManagerType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLConnectionManagerType.h; path = private/SDLConnectionManagerType.h; sourceTree = "<group>"; };
+ 4ABB24DA24F594560061BF55 /* SDLEncryptionLifecycleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEncryptionLifecycleManager.m; path = private/SDLEncryptionLifecycleManager.m; sourceTree = "<group>"; };
+ 4ABB24DB24F594560061BF55 /* SDLEncryptionLifecycleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEncryptionLifecycleManager.h; path = private/SDLEncryptionLifecycleManager.h; sourceTree = "<group>"; };
+ 4ABB24E024F5948D0061BF55 /* SDLEncryptionConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEncryptionConfiguration.h; path = public/SDLEncryptionConfiguration.h; sourceTree = "<group>"; };
+ 4ABB24E124F5948D0061BF55 /* SDLEncryptionConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEncryptionConfiguration.m; path = public/SDLEncryptionConfiguration.m; sourceTree = "<group>"; };
+ 4ABB24E424F594A10061BF55 /* SDLServiceEncryptionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLServiceEncryptionDelegate.h; path = public/SDLServiceEncryptionDelegate.h; sourceTree = "<group>"; };
+ 4ABB24E624F594CD0061BF55 /* SDLEncryptionManagerConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEncryptionManagerConstants.m; path = private/SDLEncryptionManagerConstants.m; sourceTree = "<group>"; };
+ 4ABB24E724F594CD0061BF55 /* SDLEncryptionManagerConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEncryptionManagerConstants.h; path = private/SDLEncryptionManagerConstants.h; sourceTree = "<group>"; };
+ 4ABB24EA24F594F30061BF55 /* SDLFileManagerConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFileManagerConfiguration.m; path = public/SDLFileManagerConfiguration.m; sourceTree = "<group>"; };
+ 4ABB24EB24F594F30061BF55 /* SDLFileManagerConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFileManagerConfiguration.h; path = public/SDLFileManagerConfiguration.h; sourceTree = "<group>"; };
+ 4ABB24EE24F595120061BF55 /* SDLArtwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLArtwork.h; path = public/SDLArtwork.h; sourceTree = "<group>"; };
+ 4ABB24EF24F595120061BF55 /* SDLFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFile.h; path = public/SDLFile.h; sourceTree = "<group>"; };
+ 4ABB24F024F595120061BF55 /* SDLFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFile.m; path = public/SDLFile.m; sourceTree = "<group>"; };
+ 4ABB24F124F595120061BF55 /* SDLArtwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLArtwork.m; path = public/SDLArtwork.m; sourceTree = "<group>"; };
+ 4ABB24F624F5959E0061BF55 /* SDLAsynchronousOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAsynchronousOperation.m; path = private/SDLAsynchronousOperation.m; sourceTree = "<group>"; };
+ 4ABB24F724F5959E0061BF55 /* SDLAsynchronousOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAsynchronousOperation.h; path = private/SDLAsynchronousOperation.h; sourceTree = "<group>"; };
+ 4ABB24FB24F596440061BF55 /* SDLUploadFileOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUploadFileOperation.m; path = private/SDLUploadFileOperation.m; sourceTree = "<group>"; };
+ 4ABB24FC24F596450061BF55 /* SDLListFilesOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLListFilesOperation.m; path = private/SDLListFilesOperation.m; sourceTree = "<group>"; };
+ 4ABB24FE24F596450061BF55 /* SDLUploadFileOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUploadFileOperation.h; path = private/SDLUploadFileOperation.h; sourceTree = "<group>"; };
+ 4ABB24FF24F596450061BF55 /* SDLListFilesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLListFilesOperation.h; path = private/SDLListFilesOperation.h; sourceTree = "<group>"; };
+ 4ABB250624F596920061BF55 /* SDLFileWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFileWrapper.h; path = private/SDLFileWrapper.h; sourceTree = "<group>"; };
+ 4ABB250724F596920061BF55 /* SDLFileWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFileWrapper.m; path = private/SDLFileWrapper.m; sourceTree = "<group>"; };
+ 4ABB250E24F596C00061BF55 /* SDLFileManagerConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFileManagerConstants.h; path = public/SDLFileManagerConstants.h; sourceTree = "<group>"; };
+ 4ABB251024F7E3A30061BF55 /* SDLLifecycleConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleConfiguration.h; path = public/SDLLifecycleConfiguration.h; sourceTree = "<group>"; };
+ 4ABB251124F7E3A30061BF55 /* SDLLifecycleConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleConfiguration.m; path = public/SDLLifecycleConfiguration.m; sourceTree = "<group>"; };
+ 4ABB251424F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleConfigurationUpdate.h; path = public/SDLLifecycleConfigurationUpdate.h; sourceTree = "<group>"; };
+ 4ABB251524F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleConfigurationUpdate.m; path = public/SDLLifecycleConfigurationUpdate.m; sourceTree = "<group>"; };
+ 4ABB251824F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleRPCAdapter.m; path = private/SDLLifecycleRPCAdapter.m; sourceTree = "<group>"; };
+ 4ABB251924F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleRPCAdapter.h; path = private/SDLLifecycleRPCAdapter.h; sourceTree = "<group>"; };
+ 4ABB251C24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleMobileHMIStateHandler.h; path = private/SDLLifecycleMobileHMIStateHandler.h; sourceTree = "<group>"; };
+ 4ABB251D24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleMobileHMIStateHandler.m; path = private/SDLLifecycleMobileHMIStateHandler.m; sourceTree = "<group>"; };
+ 4ABB252024F7E3FB0061BF55 /* SDLLifecycleSyncPDataHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleSyncPDataHandler.h; path = private/SDLLifecycleSyncPDataHandler.h; sourceTree = "<group>"; };
+ 4ABB252124F7E3FB0061BF55 /* SDLLifecycleSyncPDataHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleSyncPDataHandler.m; path = private/SDLLifecycleSyncPDataHandler.m; sourceTree = "<group>"; };
+ 4ABB252424F7E40C0061BF55 /* SDLLifecycleSystemRequestHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleSystemRequestHandler.h; path = private/SDLLifecycleSystemRequestHandler.h; sourceTree = "<group>"; };
+ 4ABB252524F7E40D0061BF55 /* SDLLifecycleSystemRequestHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleSystemRequestHandler.m; path = private/SDLLifecycleSystemRequestHandler.m; sourceTree = "<group>"; };
+ 4ABB252824F7E41D0061BF55 /* SDLLifecycleProtocolHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleProtocolHandler.h; path = private/SDLLifecycleProtocolHandler.h; sourceTree = "<group>"; };
+ 4ABB252924F7E41D0061BF55 /* SDLLifecycleProtocolHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleProtocolHandler.m; path = private/SDLLifecycleProtocolHandler.m; sourceTree = "<group>"; };
+ 4ABB252C24F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAsynchronousRPCRequestOperation.h; path = private/SDLAsynchronousRPCRequestOperation.h; sourceTree = "<group>"; };
+ 4ABB252D24F7E43A0061BF55 /* SDLAsynchronousRPCOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAsynchronousRPCOperation.m; path = private/SDLAsynchronousRPCOperation.m; sourceTree = "<group>"; };
+ 4ABB252E24F7E43A0061BF55 /* SDLAsynchronousRPCOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAsynchronousRPCOperation.h; path = private/SDLAsynchronousRPCOperation.h; sourceTree = "<group>"; };
+ 4ABB252F24F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAsynchronousRPCRequestOperation.m; path = private/SDLAsynchronousRPCRequestOperation.m; sourceTree = "<group>"; };
+ 4ABB253424F7E4540061BF55 /* SDLSequentialRPCRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSequentialRPCRequestOperation.h; path = private/SDLSequentialRPCRequestOperation.h; sourceTree = "<group>"; };
+ 4ABB253524F7E4540061BF55 /* SDLSequentialRPCRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSequentialRPCRequestOperation.m; path = private/SDLSequentialRPCRequestOperation.m; sourceTree = "<group>"; };
+ 4ABB253824F7E46A0061BF55 /* SDLLifecycleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleManager.m; path = private/SDLLifecycleManager.m; sourceTree = "<group>"; };
+ 4ABB253924F7E46A0061BF55 /* SDLLifecycleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLifecycleManager.h; path = private/SDLLifecycleManager.h; sourceTree = "<group>"; };
+ 4ABB253C24F7E48D0061BF55 /* SDLLockScreenRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenRootViewController.h; path = private/SDLLockScreenRootViewController.h; sourceTree = "<group>"; };
+ 4ABB253D24F7E48D0061BF55 /* SDLViewControllerPresentable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLViewControllerPresentable.h; path = private/SDLViewControllerPresentable.h; sourceTree = "<group>"; };
+ 4ABB253E24F7E48D0061BF55 /* SDLLockScreenPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenPresenter.h; path = private/SDLLockScreenPresenter.h; sourceTree = "<group>"; };
+ 4ABB253F24F7E48D0061BF55 /* SDLLockScreenRootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenRootViewController.m; path = private/SDLLockScreenRootViewController.m; sourceTree = "<group>"; };
+ 4ABB254024F7E48D0061BF55 /* SDLLockScreenPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenPresenter.m; path = private/SDLLockScreenPresenter.m; sourceTree = "<group>"; };
+ 4ABB254624F7E49D0061BF55 /* SDLLockScreenStatusManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenStatusManager.m; path = private/SDLLockScreenStatusManager.m; sourceTree = "<group>"; };
+ 4ABB254724F7E49D0061BF55 /* SDLLockScreenStatusManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenStatusManager.h; path = private/SDLLockScreenStatusManager.h; sourceTree = "<group>"; };
+ 4ABB254A24F7E4C60061BF55 /* SDLLockScreenViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenViewController.m; path = public/SDLLockScreenViewController.m; sourceTree = "<group>"; };
+ 4ABB254B24F7E4C60061BF55 /* SDLLockScreenViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenViewController.h; path = public/SDLLockScreenViewController.h; sourceTree = "<group>"; };
+ 4ABB254E24F7E52B0061BF55 /* SDLLockScreenConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenConfiguration.m; path = public/SDLLockScreenConfiguration.m; sourceTree = "<group>"; };
+ 4ABB254F24F7E52B0061BF55 /* SDLLockScreenConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenConfiguration.h; path = public/SDLLockScreenConfiguration.h; sourceTree = "<group>"; };
+ 4ABB255224F7E5460061BF55 /* SDLLockScreenManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenManager.m; path = private/SDLLockScreenManager.m; sourceTree = "<group>"; };
+ 4ABB255324F7E5460061BF55 /* SDLLockScreenManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenManager.h; path = private/SDLLockScreenManager.h; sourceTree = "<group>"; };
+ 4ABB255A24F7E5880061BF55 /* SDLPermissionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPermissionFilter.m; path = private/SDLPermissionFilter.m; sourceTree = "<group>"; };
+ 4ABB255B24F7E5880061BF55 /* SDLPermissionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPermissionFilter.h; path = private/SDLPermissionFilter.h; sourceTree = "<group>"; };
+ 4ABB255E24F7E59E0061BF55 /* SDLPermissionConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPermissionConstants.h; path = public/SDLPermissionConstants.h; sourceTree = "<group>"; };
+ 4ABB256024F7E5AA0061BF55 /* SDLPermissionElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPermissionElement.m; path = public/SDLPermissionElement.m; sourceTree = "<group>"; };
+ 4ABB256124F7E5AA0061BF55 /* SDLPermissionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPermissionElement.h; path = public/SDLPermissionElement.h; sourceTree = "<group>"; };
+ 4ABB256424F7E5B70061BF55 /* SDLRPCPermissionStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCPermissionStatus.m; path = public/SDLRPCPermissionStatus.m; sourceTree = "<group>"; };
+ 4ABB256524F7E5B80061BF55 /* SDLRPCPermissionStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCPermissionStatus.h; path = public/SDLRPCPermissionStatus.h; sourceTree = "<group>"; };
+ 4ABB256824F7E5E70061BF55 /* SDLPreloadChoicesOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPreloadChoicesOperation.m; path = private/SDLPreloadChoicesOperation.m; sourceTree = "<group>"; };
+ 4ABB256924F7E5E70061BF55 /* SDLPresentChoiceSetOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPresentChoiceSetOperation.m; path = private/SDLPresentChoiceSetOperation.m; sourceTree = "<group>"; };
+ 4ABB256A24F7E5E70061BF55 /* SDLCheckChoiceVROptionalOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCheckChoiceVROptionalOperation.m; path = private/SDLCheckChoiceVROptionalOperation.m; sourceTree = "<group>"; };
+ 4ABB256B24F7E5E70061BF55 /* SDLCheckChoiceVROptionalOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCheckChoiceVROptionalOperation.h; path = private/SDLCheckChoiceVROptionalOperation.h; sourceTree = "<group>"; };
+ 4ABB256C24F7E5E70061BF55 /* SDLPresentChoiceSetOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPresentChoiceSetOperation.h; path = private/SDLPresentChoiceSetOperation.h; sourceTree = "<group>"; };
+ 4ABB256D24F7E5E70061BF55 /* SDLDeleteChoicesOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteChoicesOperation.m; path = private/SDLDeleteChoicesOperation.m; sourceTree = "<group>"; };
+ 4ABB256E24F7E5E80061BF55 /* SDLPreloadChoicesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPreloadChoicesOperation.h; path = private/SDLPreloadChoicesOperation.h; sourceTree = "<group>"; };
+ 4ABB256F24F7E5E80061BF55 /* SDLDeleteChoicesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteChoicesOperation.h; path = private/SDLDeleteChoicesOperation.h; sourceTree = "<group>"; };
+ 4ABB257824F7E5FF0061BF55 /* SDLPresentKeyboardOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPresentKeyboardOperation.m; path = private/SDLPresentKeyboardOperation.m; sourceTree = "<group>"; };
+ 4ABB257924F7E5FF0061BF55 /* SDLPresentKeyboardOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPresentKeyboardOperation.h; path = private/SDLPresentKeyboardOperation.h; sourceTree = "<group>"; };
+ 4ABB257C24F7E61E0061BF55 /* SDLChoiceSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLChoiceSet.m; path = public/SDLChoiceSet.m; sourceTree = "<group>"; };
+ 4ABB257D24F7E61E0061BF55 /* SDLChoiceCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLChoiceCell.h; path = public/SDLChoiceCell.h; sourceTree = "<group>"; };
+ 4ABB257E24F7E61E0061BF55 /* SDLChoiceCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLChoiceCell.m; path = public/SDLChoiceCell.m; sourceTree = "<group>"; };
+ 4ABB257F24F7E61E0061BF55 /* SDLChoiceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLChoiceSet.h; path = public/SDLChoiceSet.h; sourceTree = "<group>"; };
+ 4ABB258424F7E62D0061BF55 /* SDLChoiceSetDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLChoiceSetDelegate.h; path = public/SDLChoiceSetDelegate.h; sourceTree = "<group>"; };
+ 4ABB258A24F7E65C0061BF55 /* SDLChoiceSetManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLChoiceSetManager.h; path = private/SDLChoiceSetManager.h; sourceTree = "<group>"; };
+ 4ABB258B24F7E65C0061BF55 /* SDLChoiceSetManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLChoiceSetManager.m; path = private/SDLChoiceSetManager.m; sourceTree = "<group>"; };
+ 4ABB258E24F7E66C0061BF55 /* SDLKeyboardDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLKeyboardDelegate.h; path = public/SDLKeyboardDelegate.h; sourceTree = "<group>"; };
+ 4ABB259024F7E6820061BF55 /* SDLVoiceCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommand.m; path = public/SDLVoiceCommand.m; sourceTree = "<group>"; };
+ 4ABB259124F7E6820061BF55 /* SDLVoiceCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVoiceCommand.h; path = public/SDLVoiceCommand.h; sourceTree = "<group>"; };
+ 4ABB259424F7E6880061BF55 /* SDLMenuCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMenuCell.h; path = public/SDLMenuCell.h; sourceTree = "<group>"; };
+ 4ABB259524F7E6880061BF55 /* SDLMenuCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMenuCell.m; path = public/SDLMenuCell.m; sourceTree = "<group>"; };
+ 4ABB259824F7E6A60061BF55 /* SDLMenuManagerConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMenuManagerConstants.h; path = public/SDLMenuManagerConstants.h; sourceTree = "<group>"; };
+ 4ABB259A24F7E6B90061BF55 /* SDLMenuConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMenuConfiguration.m; path = public/SDLMenuConfiguration.m; sourceTree = "<group>"; };
+ 4ABB259B24F7E6B90061BF55 /* SDLMenuConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMenuConfiguration.h; path = public/SDLMenuConfiguration.h; sourceTree = "<group>"; };
+ 4ABB259E24F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDynamicMenuUpdateRunScore.h; path = private/SDLDynamicMenuUpdateRunScore.h; sourceTree = "<group>"; };
+ 4ABB259F24F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDynamicMenuUpdateAlgorithm.m; path = private/SDLDynamicMenuUpdateAlgorithm.m; sourceTree = "<group>"; };
+ 4ABB25A024F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDynamicMenuUpdateRunScore.m; path = private/SDLDynamicMenuUpdateRunScore.m; sourceTree = "<group>"; };
+ 4ABB25A124F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDynamicMenuUpdateAlgorithm.h; path = private/SDLDynamicMenuUpdateAlgorithm.h; sourceTree = "<group>"; };
+ 4ABB25A624F7E6E10061BF55 /* SDLMenuManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMenuManager.m; path = private/SDLMenuManager.m; sourceTree = "<group>"; };
+ 4ABB25A724F7E6E10061BF55 /* SDLVoiceCommandManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandManager.m; path = private/SDLVoiceCommandManager.m; sourceTree = "<group>"; };
+ 4ABB25A824F7E6E10061BF55 /* SDLVoiceCommandManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVoiceCommandManager.h; path = private/SDLVoiceCommandManager.h; sourceTree = "<group>"; };
+ 4ABB25A924F7E6E10061BF55 /* SDLMenuManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMenuManager.h; path = private/SDLMenuManager.h; sourceTree = "<group>"; };
+ 4ABB25AE24F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonTransitionOperation.m; path = private/SDLSoftButtonTransitionOperation.m; sourceTree = "<group>"; };
+ 4ABB25AF24F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButtonTransitionOperation.h; path = private/SDLSoftButtonTransitionOperation.h; sourceTree = "<group>"; };
+ 4ABB25B024F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButtonReplaceOperation.h; path = private/SDLSoftButtonReplaceOperation.h; sourceTree = "<group>"; };
+ 4ABB25B124F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonReplaceOperation.m; path = private/SDLSoftButtonReplaceOperation.m; sourceTree = "<group>"; };
+ 4ABB25B624F7E70E0061BF55 /* SDLSoftButtonState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButtonState.h; path = public/SDLSoftButtonState.h; sourceTree = "<group>"; };
+ 4ABB25B724F7E70E0061BF55 /* SDLSoftButtonObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonObject.m; path = public/SDLSoftButtonObject.m; sourceTree = "<group>"; };
+ 4ABB25B824F7E70E0061BF55 /* SDLSoftButtonObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButtonObject.h; path = public/SDLSoftButtonObject.h; sourceTree = "<group>"; };
+ 4ABB25B924F7E70E0061BF55 /* SDLSoftButtonState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonState.m; path = public/SDLSoftButtonState.m; sourceTree = "<group>"; };
+ 4ABB25BE24F7E7270061BF55 /* SDLSoftButtonManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButtonManager.h; path = private/SDLSoftButtonManager.h; sourceTree = "<group>"; };
+ 4ABB25BF24F7E7270061BF55 /* SDLSoftButtonManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonManager.m; path = private/SDLSoftButtonManager.m; sourceTree = "<group>"; };
+ 4ABB25C224F7E73C0061BF55 /* SDLSubscribeButtonManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeButtonManager.m; path = private/SDLSubscribeButtonManager.m; sourceTree = "<group>"; };
+ 4ABB25C324F7E73C0061BF55 /* SDLSubscribeButtonObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeButtonObserver.m; path = private/SDLSubscribeButtonObserver.m; sourceTree = "<group>"; };
+ 4ABB25C424F7E73C0061BF55 /* SDLSubscribeButtonManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeButtonManager.h; path = private/SDLSubscribeButtonManager.h; sourceTree = "<group>"; };
+ 4ABB25C524F7E73C0061BF55 /* SDLSubscribeButtonObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeButtonObserver.h; path = private/SDLSubscribeButtonObserver.h; sourceTree = "<group>"; };
+ 4ABB25CA24F7E74E0061BF55 /* SDLTextAndGraphicManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTextAndGraphicManager.h; path = private/SDLTextAndGraphicManager.h; sourceTree = "<group>"; };
+ 4ABB25CB24F7E74E0061BF55 /* SDLTextAndGraphicManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicManager.m; path = private/SDLTextAndGraphicManager.m; sourceTree = "<group>"; };
+ 4ABB25CE24F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "SDLWindowCapability+ScreenManagerExtensions.m"; path = "private/SDLWindowCapability+ScreenManagerExtensions.m"; sourceTree = "<group>"; };
+ 4ABB25CF24F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "SDLTextField+ScreenManagerExtensions.m"; path = "private/SDLTextField+ScreenManagerExtensions.m"; sourceTree = "<group>"; };
+ 4ABB25D024F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SDLImageField+ScreenManagerExtensions.h"; path = "private/SDLImageField+ScreenManagerExtensions.h"; sourceTree = "<group>"; };
+ 4ABB25D124F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "SDLImageField+ScreenManagerExtensions.m"; path = "private/SDLImageField+ScreenManagerExtensions.m"; sourceTree = "<group>"; };
+ 4ABB25D224F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SDLTextField+ScreenManagerExtensions.h"; path = "private/SDLTextField+ScreenManagerExtensions.h"; sourceTree = "<group>"; };
+ 4ABB25D324F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SDLWindowCapability+ScreenManagerExtensions.h"; path = "private/SDLWindowCapability+ScreenManagerExtensions.h"; sourceTree = "<group>"; };
+ 4ABB25DA24F7E77C0061BF55 /* SDLScreenManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLScreenManager.h; path = public/SDLScreenManager.h; sourceTree = "<group>"; };
+ 4ABB25DB24F7E77C0061BF55 /* SDLScreenManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLScreenManager.m; path = public/SDLScreenManager.m; sourceTree = "<group>"; };
+ 4ABB25DE24F7E7980061BF55 /* SDLStreamingMediaConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingMediaConfiguration.h; path = public/SDLStreamingMediaConfiguration.h; sourceTree = "<group>"; };
+ 4ABB25DF24F7E7980061BF55 /* SDLStreamingMediaConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingMediaConfiguration.m; path = public/SDLStreamingMediaConfiguration.m; sourceTree = "<group>"; };
+ 4ABB25E224F7E7A90061BF55 /* SDLAudioStreamManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioStreamManagerDelegate.h; path = SmartDeviceLink/public/SDLAudioStreamManagerDelegate.h; sourceTree = SOURCE_ROOT; };
+ 4ABB25E324F7E7A90061BF55 /* SDLAudioStreamManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioStreamManager.h; path = SmartDeviceLink/public/SDLAudioStreamManager.h; sourceTree = SOURCE_ROOT; };
+ 4ABB25E424F7E7A90061BF55 /* SDLAudioStreamManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioStreamManager.m; path = SmartDeviceLink/public/SDLAudioStreamManager.m; sourceTree = SOURCE_ROOT; };
+ 4ABB25E824F7E7C20061BF55 /* SDLCarWindowViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCarWindowViewController.h; path = public/SDLCarWindowViewController.h; sourceTree = "<group>"; };
+ 4ABB25E924F7E7C20061BF55 /* SDLCarWindowViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCarWindowViewController.m; path = public/SDLCarWindowViewController.m; sourceTree = "<group>"; };
+ 4ABB25EC24F7E7EF0061BF55 /* SDLPinchGesture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPinchGesture.m; path = public/SDLPinchGesture.m; sourceTree = "<group>"; };
+ 4ABB25ED24F7E7EF0061BF55 /* SDLTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouch.m; path = public/SDLTouch.m; sourceTree = "<group>"; };
+ 4ABB25EE24F7E7EF0061BF55 /* SDLPinchGesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPinchGesture.h; path = public/SDLPinchGesture.h; sourceTree = "<group>"; };
+ 4ABB25EF24F7E7EF0061BF55 /* SDLTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTouch.h; path = public/SDLTouch.h; sourceTree = "<group>"; };
+ 4ABB25F024F7E7EF0061BF55 /* SDLTouchManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTouchManagerDelegate.h; path = public/SDLTouchManagerDelegate.h; sourceTree = "<group>"; };
+ 4ABB25F124F7E7EF0061BF55 /* SDLTouchManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTouchManager.h; path = public/SDLTouchManager.h; sourceTree = "<group>"; };
+ 4ABB25F224F7E7EF0061BF55 /* SDLTouchManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchManager.m; path = public/SDLTouchManager.m; sourceTree = "<group>"; };
+ 4ABB25FA24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingVideoScaleManager.h; path = public/SDLStreamingVideoScaleManager.h; sourceTree = "<group>"; };
+ 4ABB25FB24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingVideoScaleManager.m; path = public/SDLStreamingVideoScaleManager.m; sourceTree = "<group>"; };
+ 4ABB25FE24F7E9230061BF55 /* SDLStreamingMediaManagerConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingMediaManagerConstants.h; path = public/SDLStreamingMediaManagerConstants.h; sourceTree = "<group>"; };
+ 4ABB25FF24F7E9230061BF55 /* SDLStreamingMediaManagerConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingMediaManagerConstants.m; path = public/SDLStreamingMediaManagerConstants.m; sourceTree = "<group>"; };
+ 4ABB260224F7E9650061BF55 /* SDLStreamingMediaManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingMediaManager.m; path = public/SDLStreamingMediaManager.m; sourceTree = "<group>"; };
+ 4ABB260324F7E9650061BF55 /* SDLStreamingMediaManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingMediaManager.h; path = public/SDLStreamingMediaManager.h; sourceTree = "<group>"; };
+ 4ABB260424F7E9650061BF55 /* SDLStreamingMediaManagerDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingMediaManagerDataSource.h; path = public/SDLStreamingMediaManagerDataSource.h; sourceTree = "<group>"; };
+ 4ABB260824F7E9720061BF55 /* SDLStreamingAudioManagerType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingAudioManagerType.h; path = public/SDLStreamingAudioManagerType.h; sourceTree = "<group>"; };
+ 4ABB260A24F7F33F0061BF55 /* SDLAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioFile.m; path = SmartDeviceLink/public/SDLAudioFile.m; sourceTree = SOURCE_ROOT; };
+ 4ABB260B24F7F33F0061BF55 /* SDLAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioFile.h; path = SmartDeviceLink/public/SDLAudioFile.h; sourceTree = SOURCE_ROOT; };
+ 4ABB260E24F7F3520061BF55 /* SDLPCMAudioConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPCMAudioConverter.m; path = SmartDeviceLink/private/SDLPCMAudioConverter.m; sourceTree = SOURCE_ROOT; };
+ 4ABB260F24F7F3520061BF55 /* SDLPCMAudioConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPCMAudioConverter.h; path = SmartDeviceLink/private/SDLPCMAudioConverter.h; sourceTree = SOURCE_ROOT; };
+ 4ABB261224F7F3600061BF55 /* SDLCarWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCarWindow.h; path = private/SDLCarWindow.h; sourceTree = "<group>"; };
+ 4ABB261324F7F3610061BF55 /* SDLCarWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCarWindow.m; path = private/SDLCarWindow.m; sourceTree = "<group>"; };
+ 4ABB261624F7F3770061BF55 /* SDLFocusableItemLocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFocusableItemLocator.h; path = private/SDLFocusableItemLocator.h; sourceTree = "<group>"; };
+ 4ABB261724F7F3770061BF55 /* SDLFocusableItemLocator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFocusableItemLocator.m; path = private/SDLFocusableItemLocator.m; sourceTree = "<group>"; };
+ 4ABB261824F7F3770061BF55 /* SDLFocusableItemLocatorType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFocusableItemLocatorType.h; path = private/SDLFocusableItemLocatorType.h; sourceTree = "<group>"; };
+ 4ABB261924F7F3770061BF55 /* SDLFocusableItemHitTester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFocusableItemHitTester.h; path = private/SDLFocusableItemHitTester.h; sourceTree = "<group>"; };
+ 4ABB261E24F7F3870061BF55 /* CGPoint_Util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CGPoint_Util.h; path = private/CGPoint_Util.h; sourceTree = "<group>"; };
+ 4ABB261F24F7F3870061BF55 /* CGPoint_Util.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CGPoint_Util.m; path = private/CGPoint_Util.m; sourceTree = "<group>"; };
+ 4ABB262224F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "CVPixelBufferRef+SDLUtil.h"; path = "private/CVPixelBufferRef+SDLUtil.h"; sourceTree = "<group>"; };
+ 4ABB262324F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "CVPixelBufferRef+SDLUtil.m"; path = "private/CVPixelBufferRef+SDLUtil.m"; sourceTree = "<group>"; };
+ 4ABB262624F7F3BC0061BF55 /* SDLH264VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLH264VideoEncoder.m; path = private/SDLH264VideoEncoder.m; sourceTree = "<group>"; };
+ 4ABB262724F7F3BC0061BF55 /* SDLH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLH264VideoEncoder.h; path = private/SDLH264VideoEncoder.h; sourceTree = "<group>"; };
+ 4ABB262A24F7F3C10061BF55 /* SDLVideoEncoderDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVideoEncoderDelegate.h; path = private/SDLVideoEncoderDelegate.h; sourceTree = "<group>"; };
+ 4ABB262C24F7F4150061BF55 /* SDLH264Packetizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLH264Packetizer.h; path = private/SDLH264Packetizer.h; sourceTree = "<group>"; };
+ 4ABB262E24F7F4230061BF55 /* SDLRAWH264Packetizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRAWH264Packetizer.h; path = private/SDLRAWH264Packetizer.h; sourceTree = "<group>"; };
+ 4ABB262F24F7F4230061BF55 /* SDLRAWH264Packetizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRAWH264Packetizer.m; path = private/SDLRAWH264Packetizer.m; sourceTree = "<group>"; };
+ 4ABB263224F7F4300061BF55 /* SDLRTPH264Packetizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRTPH264Packetizer.h; path = private/SDLRTPH264Packetizer.h; sourceTree = "<group>"; };
+ 4ABB263324F7F4300061BF55 /* SDLRTPH264Packetizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRTPH264Packetizer.m; path = private/SDLRTPH264Packetizer.m; sourceTree = "<group>"; };
+ 4ABB263624F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingAudioLifecycleManager.m; path = private/SDLStreamingAudioLifecycleManager.m; sourceTree = "<group>"; };
+ 4ABB263724F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingVideoLifecycleManager.m; path = private/SDLStreamingVideoLifecycleManager.m; sourceTree = "<group>"; };
+ 4ABB263824F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingAudioLifecycleManager.h; path = private/SDLStreamingAudioLifecycleManager.h; sourceTree = "<group>"; };
+ 4ABB263924F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStreamingVideoLifecycleManager.h; path = private/SDLStreamingVideoLifecycleManager.h; sourceTree = "<group>"; };
+ 4ABB263E24F7F45B0061BF55 /* SDLSystemCapabilityObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemCapabilityObserver.h; path = private/SDLSystemCapabilityObserver.h; sourceTree = "<group>"; };
+ 4ABB263F24F7F45B0061BF55 /* SDLSystemCapabilityObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemCapabilityObserver.m; path = private/SDLSystemCapabilityObserver.m; sourceTree = "<group>"; };
+ 4ABB264224F7F5340061BF55 /* SDLSystemCapabilityManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemCapabilityManager.h; path = public/SDLSystemCapabilityManager.h; sourceTree = "<group>"; };
+ 4ABB264324F7F5340061BF55 /* SDLSystemCapabilityManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemCapabilityManager.m; path = public/SDLSystemCapabilityManager.m; sourceTree = "<group>"; };
+ 4ABB264624F7F5540061BF55 /* SDLManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLManager.m; path = public/SDLManager.m; sourceTree = "<group>"; };
+ 4ABB264724F7F5540061BF55 /* SDLManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLManager.h; path = public/SDLManager.h; sourceTree = "<group>"; };
+ 4ABB264A24F7F5580061BF55 /* SDLManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLManagerDelegate.h; path = public/SDLManagerDelegate.h; sourceTree = "<group>"; };
+ 4ABB264C24F7F5720061BF55 /* SDLConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLConfiguration.m; path = public/SDLConfiguration.m; sourceTree = "<group>"; };
+ 4ABB264D24F7F5720061BF55 /* SDLConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLConfiguration.h; path = public/SDLConfiguration.h; sourceTree = "<group>"; };
+ 4ABB265024F7F58D0061BF55 /* SDLRPCRequestNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCRequestNotification.h; path = public/SDLRPCRequestNotification.h; sourceTree = "<group>"; };
+ 4ABB265124F7F58D0061BF55 /* SDLRPCRequestNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCRequestNotification.m; path = public/SDLRPCRequestNotification.m; sourceTree = "<group>"; };
+ 4ABB265424F7F5B40061BF55 /* SDLRPCNotificationNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCNotificationNotification.m; path = public/SDLRPCNotificationNotification.m; sourceTree = "<group>"; };
+ 4ABB265524F7F5B40061BF55 /* SDLRPCNotificationNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCNotificationNotification.h; path = public/SDLRPCNotificationNotification.h; sourceTree = "<group>"; };
+ 4ABB265824F7F5C10061BF55 /* SDLRPCResponseNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCResponseNotification.m; path = public/SDLRPCResponseNotification.m; sourceTree = "<group>"; };
+ 4ABB265924F7F5C10061BF55 /* SDLRPCResponseNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCResponseNotification.h; path = public/SDLRPCResponseNotification.h; sourceTree = "<group>"; };
+ 4ABB265C24F7F5F20061BF55 /* SDLNotificationDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNotificationDispatcher.h; path = private/SDLNotificationDispatcher.h; sourceTree = "<group>"; };
+ 4ABB265D24F7F5F20061BF55 /* SDLNotificationDispatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNotificationDispatcher.m; path = private/SDLNotificationDispatcher.m; sourceTree = "<group>"; };
+ 4ABB266024F7F6000061BF55 /* SDLResponseDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLResponseDispatcher.h; path = private/SDLResponseDispatcher.h; sourceTree = "<group>"; };
+ 4ABB266124F7F6000061BF55 /* SDLResponseDispatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLResponseDispatcher.m; path = private/SDLResponseDispatcher.m; sourceTree = "<group>"; };
+ 4ABB266424F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "EAAccessoryManager+SDLProtocols.m"; path = "private/EAAccessoryManager+SDLProtocols.m"; sourceTree = "<group>"; };
+ 4ABB266524F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "EAAccessoryManager+SDLProtocols.h"; path = "private/EAAccessoryManager+SDLProtocols.h"; sourceTree = "<group>"; };
+ 4ABB266624F7F61B0061BF55 /* EAAccessory+SDLProtocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "EAAccessory+SDLProtocols.m"; path = "private/EAAccessory+SDLProtocols.m"; sourceTree = "<group>"; };
+ 4ABB266724F7F61B0061BF55 /* EAAccessory+SDLProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "EAAccessory+SDLProtocols.h"; path = "private/EAAccessory+SDLProtocols.h"; sourceTree = "<group>"; };
+ 4ABB266C24F7F6350061BF55 /* NSMutableDictionary+Store.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableDictionary+Store.m"; path = "private/NSMutableDictionary+Store.m"; sourceTree = "<group>"; };
+ 4ABB266D24F7F6350061BF55 /* NSMutableDictionary+Store.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableDictionary+Store.h"; path = "private/NSMutableDictionary+Store.h"; sourceTree = "<group>"; };
+ 4ABB267024F7F6640061BF55 /* SDLPrioritizedObjectCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPrioritizedObjectCollection.m; path = private/SDLPrioritizedObjectCollection.m; sourceTree = "<group>"; };
+ 4ABB267124F7F6640061BF55 /* SDLPrioritizedObjectCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPrioritizedObjectCollection.h; path = private/SDLPrioritizedObjectCollection.h; sourceTree = "<group>"; };
+ 4ABB267424F7F6720061BF55 /* SDLObjectWithPriority.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLObjectWithPriority.h; path = private/SDLObjectWithPriority.h; sourceTree = "<group>"; };
+ 4ABB267524F7F6720061BF55 /* SDLObjectWithPriority.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLObjectWithPriority.m; path = private/SDLObjectWithPriority.m; sourceTree = "<group>"; };
+ 4ABB267824F7F6840061BF55 /* SDLIconArchiveFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIconArchiveFile.h; path = private/SDLIconArchiveFile.h; sourceTree = "<group>"; };
+ 4ABB267924F7F6840061BF55 /* SDLIconArchiveFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIconArchiveFile.m; path = private/SDLIconArchiveFile.m; sourceTree = "<group>"; };
+ 4ABB267C24F7F68F0061BF55 /* SDLCacheFileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCacheFileManager.h; path = private/SDLCacheFileManager.h; sourceTree = "<group>"; };
+ 4ABB267D24F7F68F0061BF55 /* SDLCacheFileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCacheFileManager.m; path = private/SDLCacheFileManager.m; sourceTree = "<group>"; };
+ 4ABB268024F7F8D50061BF55 /* SDLBackgroundTaskManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLBackgroundTaskManager.h; path = private/SDLBackgroundTaskManager.h; sourceTree = "<group>"; };
+ 4ABB268124F7F8D60061BF55 /* SDLBackgroundTaskManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLBackgroundTaskManager.m; path = private/SDLBackgroundTaskManager.m; sourceTree = "<group>"; };
+ 4ABB268424F7F8E20061BF55 /* SDLMutableDataQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMutableDataQueue.h; path = private/SDLMutableDataQueue.h; sourceTree = "<group>"; };
+ 4ABB268524F7F8E20061BF55 /* SDLMutableDataQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMutableDataQueue.m; path = private/SDLMutableDataQueue.m; sourceTree = "<group>"; };
+ 4ABB268824F7F8F00061BF55 /* SDLGlobals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGlobals.h; path = private/SDLGlobals.h; sourceTree = "<group>"; };
+ 4ABB268924F7F8F00061BF55 /* SDLGlobals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGlobals.m; path = private/SDLGlobals.m; sourceTree = "<group>"; };
+ 4ABB268C24F7F8FB0061BF55 /* SDLHexUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHexUtility.m; path = private/SDLHexUtility.m; sourceTree = "<group>"; };
+ 4ABB268D24F7F8FB0061BF55 /* SDLHexUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHexUtility.h; path = private/SDLHexUtility.h; sourceTree = "<group>"; };
+ 4ABB269024F7F9060061BF55 /* SDLTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTimer.m; path = private/SDLTimer.m; sourceTree = "<group>"; };
+ 4ABB269124F7F9060061BF55 /* SDLTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTimer.h; path = private/SDLTimer.h; sourceTree = "<group>"; };
+ 4ABB269424F7F93F0061BF55 /* SDLRPCFunctionNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCFunctionNames.h; path = public/SDLRPCFunctionNames.h; sourceTree = "<group>"; };
+ 4ABB269524F7F93F0061BF55 /* SDLRPCFunctionNames.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCFunctionNames.m; path = public/SDLRPCFunctionNames.m; sourceTree = "<group>"; };
+ 4ABB269A24F7F9710061BF55 /* SDLRPCParameterNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCParameterNames.h; path = private/SDLRPCParameterNames.h; sourceTree = "<group>"; };
+ 4ABB269B24F7F9710061BF55 /* SDLRPCParameterNames.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCParameterNames.m; path = private/SDLRPCParameterNames.m; sourceTree = "<group>"; };
+ 4ABB269E24F7F98C0061BF55 /* SDLLogFileModuleMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogFileModuleMap.h; path = private/SDLLogFileModuleMap.h; sourceTree = "<group>"; };
+ 4ABB269F24F7F98C0061BF55 /* SDLLogFileModuleMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogFileModuleMap.m; path = private/SDLLogFileModuleMap.m; sourceTree = "<group>"; };
+ 4ABB26A224F7F9B90061BF55 /* SDLLogFileModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogFileModule.h; path = public/SDLLogFileModule.h; sourceTree = "<group>"; };
+ 4ABB26A324F7F9B90061BF55 /* SDLLogFileModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogFileModule.m; path = public/SDLLogFileModule.m; sourceTree = "<group>"; };
+ 4ABB26A624F7F9CE0061BF55 /* SDLLogTargetAppleSystemLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogTargetAppleSystemLog.h; path = public/SDLLogTargetAppleSystemLog.h; sourceTree = "<group>"; };
+ 4ABB26A724F7F9CE0061BF55 /* SDLLogTargetAppleSystemLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogTargetAppleSystemLog.m; path = public/SDLLogTargetAppleSystemLog.m; sourceTree = "<group>"; };
+ 4ABB26AA24F7F9D70061BF55 /* SDLLogTargetFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogTargetFile.h; path = public/SDLLogTargetFile.h; sourceTree = "<group>"; };
+ 4ABB26AB24F7F9D70061BF55 /* SDLLogTargetFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogTargetFile.m; path = public/SDLLogTargetFile.m; sourceTree = "<group>"; };
+ 4ABB26AE24F7F9DF0061BF55 /* SDLLogTargetOSLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogTargetOSLog.m; path = public/SDLLogTargetOSLog.m; sourceTree = "<group>"; };
+ 4ABB26AF24F7F9DF0061BF55 /* SDLLogTargetOSLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogTargetOSLog.h; path = public/SDLLogTargetOSLog.h; sourceTree = "<group>"; };
+ 4ABB26B224F7F9F60061BF55 /* SDLLogTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogTarget.h; path = public/SDLLogTarget.h; sourceTree = "<group>"; };
+ 4ABB26B424F7FA1B0061BF55 /* SDLLogConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogConstants.h; path = public/SDLLogConstants.h; sourceTree = "<group>"; };
+ 4ABB26B524F7FA1B0061BF55 /* SDLLogConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogConfiguration.h; path = public/SDLLogConfiguration.h; sourceTree = "<group>"; };
+ 4ABB26B624F7FA1B0061BF55 /* SDLLogFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogFilter.m; path = public/SDLLogFilter.m; sourceTree = "<group>"; };
+ 4ABB26B724F7FA1B0061BF55 /* SDLLogConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogConfiguration.m; path = public/SDLLogConfiguration.m; sourceTree = "<group>"; };
+ 4ABB26B824F7FA1B0061BF55 /* SDLLogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogMacros.h; path = public/SDLLogMacros.h; sourceTree = "<group>"; };
+ 4ABB26B924F7FA1C0061BF55 /* SDLLogFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogFilter.h; path = public/SDLLogFilter.h; sourceTree = "<group>"; };
+ 4ABB26C124F7FA5F0061BF55 /* SDLLogModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogModel.m; path = private/SDLLogModel.m; sourceTree = "<group>"; };
+ 4ABB26C224F7FA5F0061BF55 /* SDLLogModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLogModel.h; path = private/SDLLogModel.h; sourceTree = "<group>"; };
+ 4ABB26C824F7FAAE0061BF55 /* SDLEnum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEnum.h; path = public/SDLEnum.h; sourceTree = "<group>"; };
+ 4ABB26C924F7FAAF0061BF55 /* SDLEnum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEnum.m; path = public/SDLEnum.m; sourceTree = "<group>"; };
+ 4ABB26CC24F7FAFC0061BF55 /* SDLRPCNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCNotification.h; path = public/SDLRPCNotification.h; sourceTree = "<group>"; };
+ 4ABB26CD24F7FAFC0061BF55 /* SDLRPCMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCMessage.h; path = public/SDLRPCMessage.h; sourceTree = "<group>"; };
+ 4ABB26CE24F7FAFC0061BF55 /* SDLRPCStruct.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCStruct.m; path = public/SDLRPCStruct.m; sourceTree = "<group>"; };
+ 4ABB26CF24F7FAFC0061BF55 /* SDLRPCRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCRequest.m; path = public/SDLRPCRequest.m; sourceTree = "<group>"; };
+ 4ABB26D024F7FAFC0061BF55 /* SDLRPCResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCResponse.m; path = public/SDLRPCResponse.m; sourceTree = "<group>"; };
+ 4ABB26D124F7FAFD0061BF55 /* SDLRPCMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCMessage.m; path = public/SDLRPCMessage.m; sourceTree = "<group>"; };
+ 4ABB26D224F7FAFD0061BF55 /* SDLRPCStruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCStruct.h; path = public/SDLRPCStruct.h; sourceTree = "<group>"; };
+ 4ABB26D324F7FAFD0061BF55 /* SDLRPCResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCResponse.h; path = public/SDLRPCResponse.h; sourceTree = "<group>"; };
+ 4ABB26D424F7FAFD0061BF55 /* SDLRPCRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCRequest.h; path = public/SDLRPCRequest.h; sourceTree = "<group>"; };
+ 4ABB26D524F7FAFD0061BF55 /* SDLRPCNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCNotification.m; path = public/SDLRPCNotification.m; sourceTree = "<group>"; };
+ 4ABB26E024F7FB8C0061BF55 /* SDLAppServiceType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppServiceType.m; path = public/SDLAppServiceType.m; sourceTree = "<group>"; };
+ 4ABB26E124F7FB8C0061BF55 /* SDLAudioStreamingState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioStreamingState.m; path = public/SDLAudioStreamingState.m; sourceTree = "<group>"; };
+ 4ABB26E224F7FB8C0061BF55 /* SDLAudioType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioType.h; path = public/SDLAudioType.h; sourceTree = "<group>"; };
+ 4ABB26E324F7FB8C0061BF55 /* SDLAppHMIType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppHMIType.h; path = public/SDLAppHMIType.h; sourceTree = "<group>"; };
+ 4ABB26E424F7FB8C0061BF55 /* SDLAppServiceType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppServiceType.h; path = public/SDLAppServiceType.h; sourceTree = "<group>"; };
+ 4ABB26E524F7FB8D0061BF55 /* SDLButtonEventMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLButtonEventMode.h; path = public/SDLButtonEventMode.h; sourceTree = "<group>"; };
+ 4ABB26E624F7FB8D0061BF55 /* SDLAudioStreamingIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioStreamingIndicator.h; path = public/SDLAudioStreamingIndicator.h; sourceTree = "<group>"; };
+ 4ABB26E724F7FB8D0061BF55 /* SDLAmbientLightStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAmbientLightStatus.h; path = public/SDLAmbientLightStatus.h; sourceTree = "<group>"; };
+ 4ABB26E824F7FB8D0061BF55 /* SDLBitsPerSample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLBitsPerSample.m; path = public/SDLBitsPerSample.m; sourceTree = "<group>"; };
+ 4ABB26E924F7FB8D0061BF55 /* SDLAppInterfaceUnregisteredReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppInterfaceUnregisteredReason.h; path = public/SDLAppInterfaceUnregisteredReason.h; sourceTree = "<group>"; };
+ 4ABB26EA24F7FB8D0061BF55 /* SDLAmbientLightStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAmbientLightStatus.m; path = public/SDLAmbientLightStatus.m; sourceTree = "<group>"; };
+ 4ABB26EB24F7FB8D0061BF55 /* SDLBitsPerSample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLBitsPerSample.h; path = public/SDLBitsPerSample.h; sourceTree = "<group>"; };
+ 4ABB26EC24F7FB8D0061BF55 /* SDLButtonEventMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLButtonEventMode.m; path = public/SDLButtonEventMode.m; sourceTree = "<group>"; };
+ 4ABB26ED24F7FB8E0061BF55 /* SDLButtonName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLButtonName.h; path = public/SDLButtonName.h; sourceTree = "<group>"; };
+ 4ABB26EE24F7FB8E0061BF55 /* SDLButtonPressMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLButtonPressMode.h; path = public/SDLButtonPressMode.h; sourceTree = "<group>"; };
+ 4ABB26EF24F7FB8E0061BF55 /* SDLButtonPressMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLButtonPressMode.m; path = public/SDLButtonPressMode.m; sourceTree = "<group>"; };
+ 4ABB26F024F7FB8E0061BF55 /* SDLButtonName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLButtonName.m; path = public/SDLButtonName.m; sourceTree = "<group>"; };
+ 4ABB26F124F7FB8E0061BF55 /* SDLAudioStreamingIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioStreamingIndicator.m; path = public/SDLAudioStreamingIndicator.m; sourceTree = "<group>"; };
+ 4ABB26F224F7FB8E0061BF55 /* SDLAppHMIType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppHMIType.m; path = public/SDLAppHMIType.m; sourceTree = "<group>"; };
+ 4ABB26F324F7FB8E0061BF55 /* SDLAudioStreamingState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioStreamingState.h; path = public/SDLAudioStreamingState.h; sourceTree = "<group>"; };
+ 4ABB26F424F7FB8E0061BF55 /* SDLAppInterfaceUnregisteredReason.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppInterfaceUnregisteredReason.m; path = public/SDLAppInterfaceUnregisteredReason.m; sourceTree = "<group>"; };
+ 4ABB26F524F7FB8F0061BF55 /* SDLAudioType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioType.m; path = public/SDLAudioType.m; sourceTree = "<group>"; };
+ 4ABB270C24F7FC4D0061BF55 /* SDLCarModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCarModeStatus.h; path = public/SDLCarModeStatus.h; sourceTree = "<group>"; };
+ 4ABB270D24F7FC4D0061BF55 /* SDLCompassDirection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCompassDirection.m; path = public/SDLCompassDirection.m; sourceTree = "<group>"; };
+ 4ABB270E24F7FC4D0061BF55 /* SDLCarModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCarModeStatus.m; path = public/SDLCarModeStatus.m; sourceTree = "<group>"; };
+ 4ABB270F24F7FC4E0061BF55 /* SDLCharacterSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCharacterSet.h; path = public/SDLCharacterSet.h; sourceTree = "<group>"; };
+ 4ABB271024F7FC4E0061BF55 /* SDLCompassDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCompassDirection.h; path = public/SDLCompassDirection.h; sourceTree = "<group>"; };
+ 4ABB271124F7FC4E0061BF55 /* SDLCapacityUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCapacityUnit.h; path = public/SDLCapacityUnit.h; sourceTree = "<group>"; };
+ 4ABB271224F7FC4E0061BF55 /* SDLCapacityUnit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCapacityUnit.m; path = public/SDLCapacityUnit.m; sourceTree = "<group>"; };
+ 4ABB271324F7FC4E0061BF55 /* SDLCharacterSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCharacterSet.m; path = public/SDLCharacterSet.m; sourceTree = "<group>"; };
+ 4ABB271C24F7FCAD0061BF55 /* SDLDefrostZone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDefrostZone.m; path = public/SDLDefrostZone.m; sourceTree = "<group>"; };
+ 4ABB271D24F7FCAD0061BF55 /* SDLComponentVolumeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLComponentVolumeStatus.m; path = public/SDLComponentVolumeStatus.m; sourceTree = "<group>"; };
+ 4ABB271E24F7FCAE0061BF55 /* SDLComponentVolumeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLComponentVolumeStatus.h; path = public/SDLComponentVolumeStatus.h; sourceTree = "<group>"; };
+ 4ABB271F24F7FCAE0061BF55 /* SDLDeliveryMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeliveryMode.h; path = public/SDLDeliveryMode.h; sourceTree = "<group>"; };
+ 4ABB272024F7FCAE0061BF55 /* SDLDefrostZone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDefrostZone.h; path = public/SDLDefrostZone.h; sourceTree = "<group>"; };
+ 4ABB272124F7FCAE0061BF55 /* SDLDeliveryMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeliveryMode.m; path = public/SDLDeliveryMode.m; sourceTree = "<group>"; };
+ 4ABB272824F7FD1B0061BF55 /* SDLDistanceUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDistanceUnit.h; path = public/SDLDistanceUnit.h; sourceTree = "<group>"; };
+ 4ABB272924F7FD1B0061BF55 /* SDLDirection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDirection.m; path = public/SDLDirection.m; sourceTree = "<group>"; };
+ 4ABB272A24F7FD1B0061BF55 /* SDLDistanceUnit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDistanceUnit.m; path = public/SDLDistanceUnit.m; sourceTree = "<group>"; };
+ 4ABB272B24F7FD1B0061BF55 /* SDLDisplayType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDisplayType.m; path = public/SDLDisplayType.m; sourceTree = "<group>"; };
+ 4ABB272C24F7FD1C0061BF55 /* SDLDisplayMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDisplayMode.h; path = public/SDLDisplayMode.h; sourceTree = "<group>"; };
+ 4ABB272D24F7FD1C0061BF55 /* SDLDisplayType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDisplayType.h; path = public/SDLDisplayType.h; sourceTree = "<group>"; };
+ 4ABB272E24F7FD1C0061BF55 /* SDLDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDirection.h; path = public/SDLDirection.h; sourceTree = "<group>"; };
+ 4ABB272F24F7FD1C0061BF55 /* SDLDeviceLevelStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeviceLevelStatus.m; path = public/SDLDeviceLevelStatus.m; sourceTree = "<group>"; };
+ 4ABB273024F7FD1C0061BF55 /* SDLDeviceLevelStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeviceLevelStatus.h; path = public/SDLDeviceLevelStatus.h; sourceTree = "<group>"; };
+ 4ABB273124F7FD1C0061BF55 /* SDLDimension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDimension.m; path = public/SDLDimension.m; sourceTree = "<group>"; };
+ 4ABB273224F7FD1D0061BF55 /* SDLDisplayMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDisplayMode.m; path = public/SDLDisplayMode.m; sourceTree = "<group>"; };
+ 4ABB273324F7FD1D0061BF55 /* SDLDimension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDimension.h; path = public/SDLDimension.h; sourceTree = "<group>"; };
+ 4ABB274024F7FD990061BF55 /* SDLFileType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFileType.h; path = public/SDLFileType.h; sourceTree = "<group>"; };
+ 4ABB274124F7FD9A0061BF55 /* SDLEmergencyEventType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEmergencyEventType.h; path = public/SDLEmergencyEventType.h; sourceTree = "<group>"; };
+ 4ABB274224F7FD9A0061BF55 /* SDLFuelCutoffStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFuelCutoffStatus.m; path = public/SDLFuelCutoffStatus.m; sourceTree = "<group>"; };
+ 4ABB274324F7FD9A0061BF55 /* SDLECallConfirmationStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLECallConfirmationStatus.m; path = public/SDLECallConfirmationStatus.m; sourceTree = "<group>"; };
+ 4ABB274424F7FD9A0061BF55 /* SDLDriverDistractionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDriverDistractionState.h; path = public/SDLDriverDistractionState.h; sourceTree = "<group>"; };
+ 4ABB274524F7FD9A0061BF55 /* SDLElectronicParkBrakeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLElectronicParkBrakeStatus.m; path = public/SDLElectronicParkBrakeStatus.m; sourceTree = "<group>"; };
+ 4ABB274624F7FD9B0061BF55 /* SDLFuelCutoffStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFuelCutoffStatus.h; path = public/SDLFuelCutoffStatus.h; sourceTree = "<group>"; };
+ 4ABB274724F7FD9B0061BF55 /* SDLECallConfirmationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLECallConfirmationStatus.h; path = public/SDLECallConfirmationStatus.h; sourceTree = "<group>"; };
+ 4ABB274824F7FD9B0061BF55 /* SDLElectronicParkBrakeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLElectronicParkBrakeStatus.h; path = public/SDLElectronicParkBrakeStatus.h; sourceTree = "<group>"; };
+ 4ABB274924F7FD9B0061BF55 /* SDLDriverDistractionState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDriverDistractionState.m; path = public/SDLDriverDistractionState.m; sourceTree = "<group>"; };
+ 4ABB274A24F7FD9B0061BF55 /* SDLFileType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFileType.m; path = public/SDLFileType.m; sourceTree = "<group>"; };
+ 4ABB274B24F7FD9B0061BF55 /* SDLEmergencyEventType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEmergencyEventType.m; path = public/SDLEmergencyEventType.m; sourceTree = "<group>"; };
+ 4ABB275824F7FE1E0061BF55 /* SDLFuelType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFuelType.m; path = public/SDLFuelType.m; sourceTree = "<group>"; };
+ 4ABB275924F7FE1E0061BF55 /* SDLGlobalProperty.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGlobalProperty.m; path = public/SDLGlobalProperty.m; sourceTree = "<group>"; };
+ 4ABB275A24F7FE1F0061BF55 /* SDLGlobalProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGlobalProperty.h; path = public/SDLGlobalProperty.h; sourceTree = "<group>"; };
+ 4ABB275B24F7FE1F0061BF55 /* SDLFuelType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFuelType.h; path = public/SDLFuelType.h; sourceTree = "<group>"; };
+ 4ABB276024F7FE470061BF55 /* SDLHMIZoneCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHMIZoneCapabilities.m; path = public/SDLHMIZoneCapabilities.m; sourceTree = "<group>"; };
+ 4ABB276124F7FE470061BF55 /* SDLHMIZoneCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHMIZoneCapabilities.h; path = public/SDLHMIZoneCapabilities.h; sourceTree = "<group>"; };
+ 4ABB276224F7FE470061BF55 /* SDLHybridAppPreference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHybridAppPreference.h; path = public/SDLHybridAppPreference.h; sourceTree = "<group>"; };
+ 4ABB276324F7FE470061BF55 /* SDLHybridAppPreference.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHybridAppPreference.m; path = public/SDLHybridAppPreference.m; sourceTree = "<group>"; };
+ 4ABB276424F7FE480061BF55 /* SDLHMILevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHMILevel.h; path = public/SDLHMILevel.h; sourceTree = "<group>"; };
+ 4ABB276524F7FE480061BF55 /* SDLHMILevel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHMILevel.m; path = public/SDLHMILevel.m; sourceTree = "<group>"; };
+ 4ABB276624F7FE480061BF55 /* SDLIgnitionStableStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIgnitionStableStatus.h; path = public/SDLIgnitionStableStatus.h; sourceTree = "<group>"; };
+ 4ABB276724F7FE480061BF55 /* SDLIgnitionStableStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIgnitionStableStatus.m; path = public/SDLIgnitionStableStatus.m; sourceTree = "<group>"; };
+ 4ABB277024F7FE900061BF55 /* SDLLightName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLightName.h; path = public/SDLLightName.h; sourceTree = "<group>"; };
+ 4ABB277124F7FE900061BF55 /* SDLIgnitionStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLIgnitionStatus.h; path = public/SDLIgnitionStatus.h; sourceTree = "<group>"; };
+ 4ABB277224F7FE900061BF55 /* SDLLightName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLightName.m; path = public/SDLLightName.m; sourceTree = "<group>"; };
+ 4ABB277324F7FE910061BF55 /* SDLIgnitionStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLIgnitionStatus.m; path = public/SDLIgnitionStatus.m; sourceTree = "<group>"; };
+ 4ABB277824F7FEB90061BF55 /* SDLLightStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLightStatus.h; path = public/SDLLightStatus.h; sourceTree = "<group>"; };
+ 4ABB277924F7FEB90061BF55 /* SDLLightStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLightStatus.m; path = public/SDLLightStatus.m; sourceTree = "<group>"; };
+ 4ABB277C24F7FF080061BF55 /* SDLLanguage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLanguage.m; path = public/SDLLanguage.m; sourceTree = "<group>"; };
+ 4ABB277D24F7FF080061BF55 /* SDLImageFieldName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLImageFieldName.m; path = public/SDLImageFieldName.m; sourceTree = "<group>"; };
+ 4ABB277E24F7FF090061BF55 /* SDLKeyboardEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLKeyboardEvent.m; path = public/SDLKeyboardEvent.m; sourceTree = "<group>"; };
+ 4ABB277F24F7FF090061BF55 /* SDLKeyboardLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLKeyboardLayout.m; path = public/SDLKeyboardLayout.m; sourceTree = "<group>"; };
+ 4ABB278024F7FF090061BF55 /* SDLImageType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLImageType.m; path = public/SDLImageType.m; sourceTree = "<group>"; };
+ 4ABB278124F7FF090061BF55 /* SDLImageFieldName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLImageFieldName.h; path = public/SDLImageFieldName.h; sourceTree = "<group>"; };
+ 4ABB278224F7FF090061BF55 /* SDLInteractionMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLInteractionMode.m; path = public/SDLInteractionMode.m; sourceTree = "<group>"; };
+ 4ABB278324F7FF0A0061BF55 /* SDLLayoutMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLayoutMode.h; path = public/SDLLayoutMode.h; sourceTree = "<group>"; };
+ 4ABB278424F7FF0A0061BF55 /* SDLKeypressMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLKeypressMode.m; path = public/SDLKeypressMode.m; sourceTree = "<group>"; };
+ 4ABB278524F7FF0A0061BF55 /* SDLLayoutMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLayoutMode.m; path = public/SDLLayoutMode.m; sourceTree = "<group>"; };
+ 4ABB278624F7FF0A0061BF55 /* SDLKeyboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLKeyboardEvent.h; path = public/SDLKeyboardEvent.h; sourceTree = "<group>"; };
+ 4ABB278724F7FF0A0061BF55 /* SDLImageType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLImageType.h; path = public/SDLImageType.h; sourceTree = "<group>"; };
+ 4ABB278824F7FF0A0061BF55 /* SDLKeypressMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLKeypressMode.h; path = public/SDLKeypressMode.h; sourceTree = "<group>"; };
+ 4ABB278924F7FF0B0061BF55 /* SDLLanguage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLanguage.h; path = public/SDLLanguage.h; sourceTree = "<group>"; };
+ 4ABB278A24F7FF0B0061BF55 /* SDLInteractionMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLInteractionMode.h; path = public/SDLInteractionMode.h; sourceTree = "<group>"; };
+ 4ABB278B24F7FF0B0061BF55 /* SDLKeyboardLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLKeyboardLayout.h; path = public/SDLKeyboardLayout.h; sourceTree = "<group>"; };
+ 4ABB279C24F7FFD80061BF55 /* SDLMassageMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMassageMode.h; path = public/SDLMassageMode.h; sourceTree = "<group>"; };
+ 4ABB279D24F7FFD80061BF55 /* SDLMediaClockFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMediaClockFormat.m; path = public/SDLMediaClockFormat.m; sourceTree = "<group>"; };
+ 4ABB279E24F7FFD80061BF55 /* SDLMassageZone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMassageZone.h; path = public/SDLMassageZone.h; sourceTree = "<group>"; };
+ 4ABB279F24F7FFD80061BF55 /* SDLMassageZone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMassageZone.m; path = public/SDLMassageZone.m; sourceTree = "<group>"; };
+ 4ABB27A024F7FFD80061BF55 /* SDLMediaClockFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMediaClockFormat.h; path = public/SDLMediaClockFormat.h; sourceTree = "<group>"; };
+ 4ABB27A324F7FFD90061BF55 /* SDLMaintenanceModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMaintenanceModeStatus.m; path = public/SDLMaintenanceModeStatus.m; sourceTree = "<group>"; };
+ 4ABB27A424F7FFD90061BF55 /* SDLMassageCushion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMassageCushion.h; path = public/SDLMassageCushion.h; sourceTree = "<group>"; };
+ 4ABB27A524F7FFD90061BF55 /* SDLMassageCushion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMassageCushion.m; path = public/SDLMassageCushion.m; sourceTree = "<group>"; };
+ 4ABB27A624F7FFD90061BF55 /* SDLMassageMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMassageMode.m; path = public/SDLMassageMode.m; sourceTree = "<group>"; };
+ 4ABB27A724F7FFDA0061BF55 /* SDLMaintenanceModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMaintenanceModeStatus.h; path = public/SDLMaintenanceModeStatus.h; sourceTree = "<group>"; };
+ 4ABB27B424F8006A0061BF55 /* SDLMetadataType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMetadataType.h; path = public/SDLMetadataType.h; sourceTree = "<group>"; };
+ 4ABB27B524F8006A0061BF55 /* SDLMetadataType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMetadataType.m; path = public/SDLMetadataType.m; sourceTree = "<group>"; };
+ 4ABB27B624F8006A0061BF55 /* SDLPermissionStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPermissionStatus.h; path = public/SDLPermissionStatus.h; sourceTree = "<group>"; };
+ 4ABB27B724F8006B0061BF55 /* SDLNavigationAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNavigationAction.h; path = public/SDLNavigationAction.h; sourceTree = "<group>"; };
+ 4ABB27B824F8006B0061BF55 /* SDLModuleType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLModuleType.m; path = public/SDLModuleType.m; sourceTree = "<group>"; };
+ 4ABB27B924F8006B0061BF55 /* SDLPermissionStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPermissionStatus.m; path = public/SDLPermissionStatus.m; sourceTree = "<group>"; };
+ 4ABB27BA24F8006B0061BF55 /* SDLNavigationAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNavigationAction.m; path = public/SDLNavigationAction.m; sourceTree = "<group>"; };
+ 4ABB27BB24F8006B0061BF55 /* SDLMenuLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMenuLayout.m; path = public/SDLMenuLayout.m; sourceTree = "<group>"; };
+ 4ABB27BC24F8006C0061BF55 /* SDLMediaType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMediaType.m; path = public/SDLMediaType.m; sourceTree = "<group>"; };
+ 4ABB27BD24F8006C0061BF55 /* SDLMenuLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMenuLayout.h; path = public/SDLMenuLayout.h; sourceTree = "<group>"; };
+ 4ABB27BE24F8006C0061BF55 /* SDLNavigationJunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLNavigationJunction.m; path = public/SDLNavigationJunction.m; sourceTree = "<group>"; };
+ 4ABB27BF24F8006C0061BF55 /* SDLModuleType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLModuleType.h; path = public/SDLModuleType.h; sourceTree = "<group>"; };
+ 4ABB27C024F8006C0061BF55 /* SDLMediaType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMediaType.h; path = public/SDLMediaType.h; sourceTree = "<group>"; };
+ 4ABB27C124F8006C0061BF55 /* SDLNavigationJunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLNavigationJunction.h; path = public/SDLNavigationJunction.h; sourceTree = "<group>"; };
+ 4ABB27D024F800C80061BF55 /* SDLPowerModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPowerModeStatus.m; path = public/SDLPowerModeStatus.m; sourceTree = "<group>"; };
+ 4ABB27D124F800C80061BF55 /* SDLPredefinedLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPredefinedLayout.m; path = public/SDLPredefinedLayout.m; sourceTree = "<group>"; };
+ 4ABB27D224F800C80061BF55 /* SDLPrimaryAudioSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPrimaryAudioSource.m; path = public/SDLPrimaryAudioSource.m; sourceTree = "<group>"; };
+ 4ABB27D324F800C90061BF55 /* SDLPredefinedLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPredefinedLayout.h; path = public/SDLPredefinedLayout.h; sourceTree = "<group>"; };
+ 4ABB27D424F800C90061BF55 /* SDLPowerModeQualificationStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPowerModeQualificationStatus.m; path = public/SDLPowerModeQualificationStatus.m; sourceTree = "<group>"; };
+ 4ABB27D524F800C90061BF55 /* SDLPrerecordedSpeech.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPrerecordedSpeech.m; path = public/SDLPrerecordedSpeech.m; sourceTree = "<group>"; };
+ 4ABB27D624F800C90061BF55 /* SDLPowerModeQualificationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPowerModeQualificationStatus.h; path = public/SDLPowerModeQualificationStatus.h; sourceTree = "<group>"; };
+ 4ABB27D724F800C90061BF55 /* SDLPowerModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPowerModeStatus.h; path = public/SDLPowerModeStatus.h; sourceTree = "<group>"; };
+ 4ABB27D824F800CA0061BF55 /* SDLPredefinedWindows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPredefinedWindows.h; path = public/SDLPredefinedWindows.h; sourceTree = "<group>"; };
+ 4ABB27D924F800CA0061BF55 /* SDLPrerecordedSpeech.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPrerecordedSpeech.h; path = public/SDLPrerecordedSpeech.h; sourceTree = "<group>"; };
+ 4ABB27DA24F800CA0061BF55 /* SDLPrimaryAudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPrimaryAudioSource.h; path = public/SDLPrimaryAudioSource.h; sourceTree = "<group>"; };
+ 4ABB27E624F801B40061BF55 /* SDLRadioBand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRadioBand.m; path = public/SDLRadioBand.m; sourceTree = "<group>"; };
+ 4ABB27E724F801B40061BF55 /* SDLRadioState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRadioState.m; path = public/SDLRadioState.m; sourceTree = "<group>"; };
+ 4ABB27E824F801B40061BF55 /* SDLRadioBand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRadioBand.h; path = public/SDLRadioBand.h; sourceTree = "<group>"; };
+ 4ABB27E924F801B50061BF55 /* SDLRadioState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRadioState.h; path = public/SDLRadioState.h; sourceTree = "<group>"; };
+ 4ABB27EA24F801B50061BF55 /* SDLPRNDL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPRNDL.h; path = public/SDLPRNDL.h; sourceTree = "<group>"; };
+ 4ABB27EB24F801B50061BF55 /* SDLPRNDL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPRNDL.m; path = public/SDLPRNDL.m; sourceTree = "<group>"; };
+ 4ABB27F224F823F10061BF55 /* SDLRPCMessageType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCMessageType.m; path = public/SDLRPCMessageType.m; sourceTree = "<group>"; };
+ 4ABB27F324F823F10061BF55 /* SDLRPCMessageType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCMessageType.h; path = public/SDLRPCMessageType.h; sourceTree = "<group>"; };
+ 4ABB27F424F823F10061BF55 /* SDLRequestType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRequestType.m; path = public/SDLRequestType.m; sourceTree = "<group>"; };
+ 4ABB27F524F823F10061BF55 /* SDLSamplingRate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSamplingRate.h; path = public/SDLSamplingRate.h; sourceTree = "<group>"; };
+ 4ABB27F624F823F20061BF55 /* SDLSamplingRate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSamplingRate.m; path = public/SDLSamplingRate.m; sourceTree = "<group>"; };
+ 4ABB27F724F823F20061BF55 /* SDLRequestType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRequestType.h; path = public/SDLRequestType.h; sourceTree = "<group>"; };
+ 4ABB27F824F823F20061BF55 /* SDLResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLResult.m; path = public/SDLResult.m; sourceTree = "<group>"; };
+ 4ABB27F924F823F20061BF55 /* SDLResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLResult.h; path = public/SDLResult.h; sourceTree = "<group>"; };
+ 4ABB280224F8245F0061BF55 /* SDLSeatMemoryActionType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatMemoryActionType.m; path = public/SDLSeatMemoryActionType.m; sourceTree = "<group>"; };
+ 4ABB280324F8245F0061BF55 /* SDLSoftButtonType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonType.m; path = public/SDLSoftButtonType.m; sourceTree = "<group>"; };
+ 4ABB280424F824600061BF55 /* SDLServiceUpdateReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLServiceUpdateReason.h; path = public/SDLServiceUpdateReason.h; sourceTree = "<group>"; };
+ 4ABB280524F824600061BF55 /* SDLSeatMemoryActionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatMemoryActionType.h; path = public/SDLSeatMemoryActionType.h; sourceTree = "<group>"; };
+ 4ABB280624F824600061BF55 /* SDLSoftButtonType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSoftButtonType.h; path = public/SDLSoftButtonType.h; sourceTree = "<group>"; };
+ 4ABB280724F824600061BF55 /* SDLServiceUpdateReason.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLServiceUpdateReason.m; path = public/SDLServiceUpdateReason.m; sourceTree = "<group>"; };
+ 4ABB280E24F824A40061BF55 /* SDLSupportedSeat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSupportedSeat.h; path = public/SDLSupportedSeat.h; sourceTree = "<group>"; };
+ 4ABB280F24F824A40061BF55 /* SDLSupportedSeat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSupportedSeat.m; path = public/SDLSupportedSeat.m; sourceTree = "<group>"; };
+ 4ABB281024F824A40061BF55 /* SDLSpeechCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSpeechCapabilities.m; path = public/SDLSpeechCapabilities.m; sourceTree = "<group>"; };
+ 4ABB281124F824A40061BF55 /* SDLSpeechCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSpeechCapabilities.h; path = public/SDLSpeechCapabilities.h; sourceTree = "<group>"; };
+ 4ABB281224F824A40061BF55 /* SDLStaticIconName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStaticIconName.h; path = public/SDLStaticIconName.h; sourceTree = "<group>"; };
+ 4ABB281324F824A50061BF55 /* SDLStaticIconName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStaticIconName.m; path = public/SDLStaticIconName.m; sourceTree = "<group>"; };
+ 4ABB281A24F824E60061BF55 /* SDLTemperatureUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTemperatureUnit.h; path = public/SDLTemperatureUnit.h; sourceTree = "<group>"; };
+ 4ABB281B24F824E60061BF55 /* SDLSystemCapabilityType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemCapabilityType.m; path = public/SDLSystemCapabilityType.m; sourceTree = "<group>"; };
+ 4ABB281C24F824E60061BF55 /* SDLSystemContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemContext.h; path = public/SDLSystemContext.h; sourceTree = "<group>"; };
+ 4ABB281D24F824E60061BF55 /* SDLSystemAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemAction.h; path = public/SDLSystemAction.h; sourceTree = "<group>"; };
+ 4ABB281E24F824E60061BF55 /* SDLSystemAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemAction.m; path = public/SDLSystemAction.m; sourceTree = "<group>"; };
+ 4ABB281F24F824E60061BF55 /* SDLTBTState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTBTState.h; path = public/SDLTBTState.h; sourceTree = "<group>"; };
+ 4ABB282024F824E70061BF55 /* SDLTBTState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTBTState.m; path = public/SDLTBTState.m; sourceTree = "<group>"; };
+ 4ABB282124F824E70061BF55 /* SDLSystemContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemContext.m; path = public/SDLSystemContext.m; sourceTree = "<group>"; };
+ 4ABB282224F824E70061BF55 /* SDLTextAlignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTextAlignment.h; path = public/SDLTextAlignment.h; sourceTree = "<group>"; };
+ 4ABB282324F824E70061BF55 /* SDLTextAlignment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextAlignment.m; path = public/SDLTextAlignment.m; sourceTree = "<group>"; };
+ 4ABB282424F824E70061BF55 /* SDLSystemCapabilityType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemCapabilityType.h; path = public/SDLSystemCapabilityType.h; sourceTree = "<group>"; };
+ 4ABB282524F824E70061BF55 /* SDLTemperatureUnit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTemperatureUnit.m; path = public/SDLTemperatureUnit.m; sourceTree = "<group>"; };
+ 4ABB283224F828600061BF55 /* SDLTPMS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTPMS.h; path = public/SDLTPMS.h; sourceTree = "<group>"; };
+ 4ABB283324F828600061BF55 /* SDLTurnSignal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTurnSignal.h; path = public/SDLTurnSignal.h; sourceTree = "<group>"; };
+ 4ABB283424F828610061BF55 /* SDLTextFieldName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTextFieldName.h; path = public/SDLTextFieldName.h; sourceTree = "<group>"; };
+ 4ABB283524F828610061BF55 /* SDLTriggerSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTriggerSource.h; path = public/SDLTriggerSource.h; sourceTree = "<group>"; };
+ 4ABB283624F828610061BF55 /* SDLTurnSignal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTurnSignal.m; path = public/SDLTurnSignal.m; sourceTree = "<group>"; };
+ 4ABB283724F828610061BF55 /* SDLTouchType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchType.m; path = public/SDLTouchType.m; sourceTree = "<group>"; };
+ 4ABB283824F828610061BF55 /* SDLTouchType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTouchType.h; path = public/SDLTouchType.h; sourceTree = "<group>"; };
+ 4ABB283924F828610061BF55 /* SDLTextFieldName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextFieldName.m; path = public/SDLTextFieldName.m; sourceTree = "<group>"; };
+ 4ABB283A24F828620061BF55 /* SDLTimerMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTimerMode.h; path = public/SDLTimerMode.h; sourceTree = "<group>"; };
+ 4ABB283B24F828620061BF55 /* SDLTriggerSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTriggerSource.m; path = public/SDLTriggerSource.m; sourceTree = "<group>"; };
+ 4ABB283C24F828620061BF55 /* SDLTimerMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTimerMode.m; path = public/SDLTimerMode.m; sourceTree = "<group>"; };
+ 4ABB283D24F828620061BF55 /* SDLTransmissionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLTransmissionType.h; path = public/SDLTransmissionType.h; sourceTree = "<group>"; };
+ 4ABB283E24F828620061BF55 /* SDLTPMS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTPMS.m; path = public/SDLTPMS.m; sourceTree = "<group>"; };
+ 4ABB283F24F828630061BF55 /* SDLTransmissionType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTransmissionType.m; path = public/SDLTransmissionType.m; sourceTree = "<group>"; };
+ 4ABB284E24F828DD0061BF55 /* SDLVehicleDataEventStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataEventStatus.h; path = public/SDLVehicleDataEventStatus.h; sourceTree = "<group>"; };
+ 4ABB284F24F828DE0061BF55 /* SDLVehicleDataType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataType.m; path = public/SDLVehicleDataType.m; sourceTree = "<group>"; };
+ 4ABB285024F828DE0061BF55 /* SDLVehicleDataStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataStatus.m; path = public/SDLVehicleDataStatus.m; sourceTree = "<group>"; };
+ 4ABB285124F828DE0061BF55 /* SDLVehicleDataActiveStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataActiveStatus.h; path = public/SDLVehicleDataActiveStatus.h; sourceTree = "<group>"; };
+ 4ABB285224F828DE0061BF55 /* SDLUpdateMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUpdateMode.m; path = public/SDLUpdateMode.m; sourceTree = "<group>"; };
+ 4ABB285324F828DE0061BF55 /* SDLVehicleDataResultCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataResultCode.h; path = public/SDLVehicleDataResultCode.h; sourceTree = "<group>"; };
+ 4ABB285424F828DE0061BF55 /* SDLVehicleDataResultCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataResultCode.m; path = public/SDLVehicleDataResultCode.m; sourceTree = "<group>"; };
+ 4ABB285524F828DF0061BF55 /* SDLUpdateMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUpdateMode.h; path = public/SDLUpdateMode.h; sourceTree = "<group>"; };
+ 4ABB285624F828DF0061BF55 /* SDLVehicleDataNotificationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataNotificationStatus.h; path = public/SDLVehicleDataNotificationStatus.h; sourceTree = "<group>"; };
+ 4ABB285724F828DF0061BF55 /* SDLVehicleDataNotificationStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataNotificationStatus.m; path = public/SDLVehicleDataNotificationStatus.m; sourceTree = "<group>"; };
+ 4ABB285824F828DF0061BF55 /* SDLVehicleDataType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataType.h; path = public/SDLVehicleDataType.h; sourceTree = "<group>"; };
+ 4ABB285924F828DF0061BF55 /* SDLVehicleDataStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVehicleDataStatus.h; path = public/SDLVehicleDataStatus.h; sourceTree = "<group>"; };
+ 4ABB285A24F828E00061BF55 /* SDLVehicleDataEventStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataEventStatus.m; path = public/SDLVehicleDataEventStatus.m; sourceTree = "<group>"; };
+ 4ABB285B24F828E00061BF55 /* SDLVehicleDataActiveStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVehicleDataActiveStatus.m; path = public/SDLVehicleDataActiveStatus.m; sourceTree = "<group>"; };
+ 4ABB286A24F829480061BF55 /* SDLWiperStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWiperStatus.h; path = public/SDLWiperStatus.h; sourceTree = "<group>"; };
+ 4ABB286B24F829480061BF55 /* SDLWarningLightStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWarningLightStatus.h; path = public/SDLWarningLightStatus.h; sourceTree = "<group>"; };
+ 4ABB286C24F829480061BF55 /* SDLVentilationMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVentilationMode.m; path = public/SDLVentilationMode.m; sourceTree = "<group>"; };
+ 4ABB286D24F829480061BF55 /* SDLWarningLightStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWarningLightStatus.m; path = public/SDLWarningLightStatus.m; sourceTree = "<group>"; };
+ 4ABB286E24F829490061BF55 /* SDLVrCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVrCapabilities.h; path = public/SDLVrCapabilities.h; sourceTree = "<group>"; };
+ 4ABB286F24F829490061BF55 /* SDLWiperStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWiperStatus.m; path = public/SDLWiperStatus.m; sourceTree = "<group>"; };
+ 4ABB287024F829490061BF55 /* SDLVrCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVrCapabilities.m; path = public/SDLVrCapabilities.m; sourceTree = "<group>"; };
+ 4ABB287124F829490061BF55 /* SDLWayPointType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWayPointType.m; path = public/SDLWayPointType.m; sourceTree = "<group>"; };
+ 4ABB287224F829490061BF55 /* SDLVentilationMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVentilationMode.h; path = public/SDLVentilationMode.h; sourceTree = "<group>"; };
+ 4ABB287324F8294A0061BF55 /* SDLWayPointType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWayPointType.h; path = public/SDLWayPointType.h; sourceTree = "<group>"; };
+ 4ABB287E24F82A1F0061BF55 /* SDLWindowType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLWindowType.h; path = public/SDLWindowType.h; sourceTree = "<group>"; };
+ 4ABB287F24F82A200061BF55 /* SDLWindowType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLWindowType.m; path = public/SDLWindowType.m; sourceTree = "<group>"; };
+ 4ABB288224F82A330061BF55 /* SDLVideoStreamingCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVideoStreamingCodec.h; path = public/SDLVideoStreamingCodec.h; sourceTree = "<group>"; };
+ 4ABB288324F82A330061BF55 /* SDLVideoStreamingFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVideoStreamingFormat.h; path = public/SDLVideoStreamingFormat.h; sourceTree = "<group>"; };
+ 4ABB288424F82A330061BF55 /* SDLVideoStreamingCodec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVideoStreamingCodec.m; path = public/SDLVideoStreamingCodec.m; sourceTree = "<group>"; };
+ 4ABB288524F82A340061BF55 /* SDLVideoStreamingFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVideoStreamingFormat.m; path = public/SDLVideoStreamingFormat.m; sourceTree = "<group>"; };
+ 4ABB288624F82A340061BF55 /* SDLVideoStreamingProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVideoStreamingProtocol.h; path = public/SDLVideoStreamingProtocol.h; sourceTree = "<group>"; };
+ 4ABB288724F82A340061BF55 /* SDLVideoStreamingProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVideoStreamingProtocol.m; path = public/SDLVideoStreamingProtocol.m; sourceTree = "<group>"; };
+ 4ABB288E24F82A640061BF55 /* SDLOnSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnSyncPData.m; path = public/SDLOnSyncPData.m; sourceTree = "<group>"; };
+ 4ABB288F24F82A640061BF55 /* SDLOnTBTClientState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnTBTClientState.m; path = public/SDLOnTBTClientState.m; sourceTree = "<group>"; };
+ 4ABB289024F82A640061BF55 /* SDLOnCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnCommand.h; path = public/SDLOnCommand.h; sourceTree = "<group>"; };
+ 4ABB289224F82A640061BF55 /* SDLOnTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnTouchEvent.h; path = public/SDLOnTouchEvent.h; sourceTree = "<group>"; };
+ 4ABB289324F82A640061BF55 /* SDLOnAppInterfaceUnregistered.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnAppInterfaceUnregistered.m; path = public/SDLOnAppInterfaceUnregistered.m; sourceTree = "<group>"; };
+ 4ABB289424F82A640061BF55 /* SDLOnCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnCommand.m; path = public/SDLOnCommand.m; sourceTree = "<group>"; };
+ 4ABB289524F82A650061BF55 /* SDLOnEncodedSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnEncodedSyncPData.h; path = public/SDLOnEncodedSyncPData.h; sourceTree = "<group>"; };
+ 4ABB289624F82A650061BF55 /* SDLOnKeyboardInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnKeyboardInput.m; path = public/SDLOnKeyboardInput.m; sourceTree = "<group>"; };
+ 4ABB289724F82A650061BF55 /* SDLOnHMIStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnHMIStatus.m; path = public/SDLOnHMIStatus.m; sourceTree = "<group>"; };
+ 4ABB289824F82A650061BF55 /* SDLOnLanguageChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnLanguageChange.h; path = public/SDLOnLanguageChange.h; sourceTree = "<group>"; };
+ 4ABB289924F82A650061BF55 /* SDLOnRCStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnRCStatus.m; path = public/SDLOnRCStatus.m; sourceTree = "<group>"; };
+ 4ABB289A24F82A650061BF55 /* SDLOnSystemRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnSystemRequest.h; path = public/SDLOnSystemRequest.h; sourceTree = "<group>"; };
+ 4ABB289B24F82A650061BF55 /* SDLOnTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnTouchEvent.m; path = public/SDLOnTouchEvent.m; sourceTree = "<group>"; };
+ 4ABB289C24F82A650061BF55 /* SDLOnPermissionsChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnPermissionsChange.h; path = public/SDLOnPermissionsChange.h; sourceTree = "<group>"; };
+ 4ABB289D24F82A660061BF55 /* SDLOnSubtleAlertPressed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnSubtleAlertPressed.h; path = public/SDLOnSubtleAlertPressed.h; sourceTree = "<group>"; };
+ 4ABB289E24F82A660061BF55 /* SDLOnSubtleAlertPressed.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnSubtleAlertPressed.m; path = public/SDLOnSubtleAlertPressed.m; sourceTree = "<group>"; };
+ 4ABB289F24F82A660061BF55 /* SDLOnSystemRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnSystemRequest.m; path = public/SDLOnSystemRequest.m; sourceTree = "<group>"; };
+ 4ABB28A024F82A660061BF55 /* SDLOnWayPointChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnWayPointChange.h; path = public/SDLOnWayPointChange.h; sourceTree = "<group>"; };
+ 4ABB28A124F82A660061BF55 /* SDLOnButtonEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnButtonEvent.m; path = public/SDLOnButtonEvent.m; sourceTree = "<group>"; };
+ 4ABB28A324F82A660061BF55 /* SDLOnSystemCapabilityUpdated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnSystemCapabilityUpdated.m; path = public/SDLOnSystemCapabilityUpdated.m; sourceTree = "<group>"; };
+ 4ABB28A424F82A670061BF55 /* SDLOnEncodedSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnEncodedSyncPData.m; path = public/SDLOnEncodedSyncPData.m; sourceTree = "<group>"; };
+ 4ABB28A524F82A670061BF55 /* SDLOnButtonEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnButtonEvent.h; path = public/SDLOnButtonEvent.h; sourceTree = "<group>"; };
+ 4ABB28A624F82A670061BF55 /* SDLOnAudioPassThru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnAudioPassThru.m; path = public/SDLOnAudioPassThru.m; sourceTree = "<group>"; };
+ 4ABB28A724F82A670061BF55 /* SDLOnInteriorVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnInteriorVehicleData.m; path = public/SDLOnInteriorVehicleData.m; sourceTree = "<group>"; };
+ 4ABB28A824F82A670061BF55 /* SDLOnRCStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnRCStatus.h; path = public/SDLOnRCStatus.h; sourceTree = "<group>"; };
+ 4ABB28A924F82A670061BF55 /* SDLOnSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnSyncPData.h; path = public/SDLOnSyncPData.h; sourceTree = "<group>"; };
+ 4ABB28AA24F82A670061BF55 /* SDLOnInteriorVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnInteriorVehicleData.h; path = public/SDLOnInteriorVehicleData.h; sourceTree = "<group>"; };
+ 4ABB28AB24F82A670061BF55 /* SDLOnSystemCapabilityUpdated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnSystemCapabilityUpdated.h; path = public/SDLOnSystemCapabilityUpdated.h; sourceTree = "<group>"; };
+ 4ABB28AC24F82A670061BF55 /* SDLOnHashChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnHashChange.m; path = public/SDLOnHashChange.m; sourceTree = "<group>"; };
+ 4ABB28AD24F82A680061BF55 /* SDLOnButtonPress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnButtonPress.h; path = public/SDLOnButtonPress.h; sourceTree = "<group>"; };
+ 4ABB28AE24F82A680061BF55 /* SDLOnButtonPress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnButtonPress.m; path = public/SDLOnButtonPress.m; sourceTree = "<group>"; };
+ 4ABB28AF24F82A680061BF55 /* SDLOnAppServiceData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnAppServiceData.m; path = public/SDLOnAppServiceData.m; sourceTree = "<group>"; };
+ 4ABB28B024F82A680061BF55 /* SDLOnHMIStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnHMIStatus.h; path = public/SDLOnHMIStatus.h; sourceTree = "<group>"; };
+ 4ABB28B124F82A680061BF55 /* SDLOnDriverDistraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnDriverDistraction.m; path = public/SDLOnDriverDistraction.m; sourceTree = "<group>"; };
+ 4ABB28B224F82A680061BF55 /* SDLOnLanguageChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnLanguageChange.m; path = public/SDLOnLanguageChange.m; sourceTree = "<group>"; };
+ 4ABB28B324F82A680061BF55 /* SDLOnTBTClientState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnTBTClientState.h; path = public/SDLOnTBTClientState.h; sourceTree = "<group>"; };
+ 4ABB28B424F82A680061BF55 /* SDLOnPermissionsChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnPermissionsChange.m; path = public/SDLOnPermissionsChange.m; sourceTree = "<group>"; };
+ 4ABB28B524F82A690061BF55 /* SDLOnDriverDistraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnDriverDistraction.h; path = public/SDLOnDriverDistraction.h; sourceTree = "<group>"; };
+ 4ABB28B624F82A690061BF55 /* SDLOnAppServiceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnAppServiceData.h; path = public/SDLOnAppServiceData.h; sourceTree = "<group>"; };
+ 4ABB28B724F82A690061BF55 /* SDLOnAudioPassThru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnAudioPassThru.h; path = public/SDLOnAudioPassThru.h; sourceTree = "<group>"; };
+ 4ABB28B824F82A690061BF55 /* SDLOnVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnVehicleData.h; path = public/SDLOnVehicleData.h; sourceTree = "<group>"; };
+ 4ABB28B924F82A690061BF55 /* SDLOnWayPointChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnWayPointChange.m; path = public/SDLOnWayPointChange.m; sourceTree = "<group>"; };
+ 4ABB28BA24F82A690061BF55 /* SDLOnAppInterfaceUnregistered.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnAppInterfaceUnregistered.h; path = public/SDLOnAppInterfaceUnregistered.h; sourceTree = "<group>"; };
+ 4ABB28BB24F82A690061BF55 /* SDLOnHashChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnHashChange.h; path = public/SDLOnHashChange.h; sourceTree = "<group>"; };
+ 4ABB28BC24F82A690061BF55 /* SDLOnVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLOnVehicleData.m; path = public/SDLOnVehicleData.m; sourceTree = "<group>"; };
+ 4ABB28BD24F82A6A0061BF55 /* SDLOnKeyboardInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLOnKeyboardInput.h; path = public/SDLOnKeyboardInput.h; sourceTree = "<group>"; };
+ 4ABB28EE24F82AFD0061BF55 /* SDLRPCPayload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRPCPayload.m; path = private/SDLRPCPayload.m; sourceTree = "<group>"; };
+ 4ABB28EF24F82AFD0061BF55 /* SDLRPCPayload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRPCPayload.h; path = private/SDLRPCPayload.h; sourceTree = "<group>"; };
+ 4ABB28F224F82BE80061BF55 /* SDLAddCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAddCommand.m; path = public/SDLAddCommand.m; sourceTree = "<group>"; };
+ 4ABB28F324F82BE80061BF55 /* SDLButtonPress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLButtonPress.h; path = public/SDLButtonPress.h; sourceTree = "<group>"; };
+ 4ABB28F424F82BE80061BF55 /* SDLAddSubMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAddSubMenu.h; path = public/SDLAddSubMenu.h; sourceTree = "<group>"; };
+ 4ABB28F524F82BE80061BF55 /* SDLAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAlert.m; path = public/SDLAlert.m; sourceTree = "<group>"; };
+ 4ABB28F624F82BE90061BF55 /* SDLAlertManeuver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAlertManeuver.h; path = public/SDLAlertManeuver.h; sourceTree = "<group>"; };
+ 4ABB28F724F82BE90061BF55 /* SDLButtonPress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLButtonPress.m; path = public/SDLButtonPress.m; sourceTree = "<group>"; };
+ 4ABB28F824F82BE90061BF55 /* SDLAddCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAddCommand.h; path = public/SDLAddCommand.h; sourceTree = "<group>"; };
+ 4ABB28F924F82BE90061BF55 /* SDLAddSubMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAddSubMenu.m; path = public/SDLAddSubMenu.m; sourceTree = "<group>"; };
+ 4ABB28FA24F82BE90061BF55 /* SDLAlertManeuver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAlertManeuver.m; path = public/SDLAlertManeuver.m; sourceTree = "<group>"; };
+ 4ABB28FB24F82BE90061BF55 /* SDLAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAlert.h; path = public/SDLAlert.h; sourceTree = "<group>"; };
+ 4ABB290624F842140061BF55 /* SDLCreateInteractionChoiceSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCreateInteractionChoiceSet.m; path = public/SDLCreateInteractionChoiceSet.m; sourceTree = "<group>"; };
+ 4ABB290724F842140061BF55 /* SDLChangeRegistration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLChangeRegistration.h; path = public/SDLChangeRegistration.h; sourceTree = "<group>"; };
+ 4ABB290824F842140061BF55 /* SDLCancelInteraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCancelInteraction.h; path = public/SDLCancelInteraction.h; sourceTree = "<group>"; };
+ 4ABB290924F842140061BF55 /* SDLCreateInteractionChoiceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCreateInteractionChoiceSet.h; path = public/SDLCreateInteractionChoiceSet.h; sourceTree = "<group>"; };
+ 4ABB290A24F842140061BF55 /* SDLDeleteCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteCommand.m; path = public/SDLDeleteCommand.m; sourceTree = "<group>"; };
+ 4ABB290B24F842150061BF55 /* SDLCloseApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCloseApplication.h; path = public/SDLCloseApplication.h; sourceTree = "<group>"; };
+ 4ABB290C24F842150061BF55 /* SDLCloseApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCloseApplication.m; path = public/SDLCloseApplication.m; sourceTree = "<group>"; };
+ 4ABB290D24F842150061BF55 /* SDLCancelInteraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCancelInteraction.m; path = public/SDLCancelInteraction.m; sourceTree = "<group>"; };
+ 4ABB290E24F842150061BF55 /* SDLChangeRegistration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLChangeRegistration.m; path = public/SDLChangeRegistration.m; sourceTree = "<group>"; };
+ 4ABB290F24F842150061BF55 /* SDLDeleteCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteCommand.h; path = public/SDLDeleteCommand.h; sourceTree = "<group>"; };
+ 4ABB291A24F842560061BF55 /* SDLCreateWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCreateWindow.m; path = public/SDLCreateWindow.m; sourceTree = "<group>"; };
+ 4ABB291B24F842560061BF55 /* SDLCreateWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCreateWindow.h; path = public/SDLCreateWindow.h; sourceTree = "<group>"; };
+ 4ABB291E24F8429E0061BF55 /* SDLDiagnosticMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDiagnosticMessage.m; path = public/SDLDiagnosticMessage.m; sourceTree = "<group>"; };
+ 4ABB291F24F8429E0061BF55 /* SDLDeleteInteractionChoiceSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteInteractionChoiceSet.m; path = public/SDLDeleteInteractionChoiceSet.m; sourceTree = "<group>"; };
+ 4ABB292024F8429F0061BF55 /* SDLDeleteInteractionChoiceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteInteractionChoiceSet.h; path = public/SDLDeleteInteractionChoiceSet.h; sourceTree = "<group>"; };
+ 4ABB292124F8429F0061BF55 /* SDLDeleteWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteWindow.m; path = public/SDLDeleteWindow.m; sourceTree = "<group>"; };
+ 4ABB292224F8429F0061BF55 /* SDLDiagnosticMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDiagnosticMessage.h; path = public/SDLDiagnosticMessage.h; sourceTree = "<group>"; };
+ 4ABB292324F8429F0061BF55 /* SDLDeleteFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteFile.h; path = public/SDLDeleteFile.h; sourceTree = "<group>"; };
+ 4ABB292424F8429F0061BF55 /* SDLDeleteSubMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteSubMenu.m; path = public/SDLDeleteSubMenu.m; sourceTree = "<group>"; };
+ 4ABB292524F8429F0061BF55 /* SDLDialNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDialNumber.m; path = public/SDLDialNumber.m; sourceTree = "<group>"; };
+ 4ABB292624F8429F0061BF55 /* SDLDeleteFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteFile.m; path = public/SDLDeleteFile.m; sourceTree = "<group>"; };
+ 4ABB292724F842A00061BF55 /* SDLDeleteSubMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteSubMenu.h; path = public/SDLDeleteSubMenu.h; sourceTree = "<group>"; };
+ 4ABB292824F842A00061BF55 /* SDLDeleteWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteWindow.h; path = public/SDLDeleteWindow.h; sourceTree = "<group>"; };
+ 4ABB292924F842A00061BF55 /* SDLDialNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDialNumber.h; path = public/SDLDialNumber.h; sourceTree = "<group>"; };
+ 4ABB293624F843400061BF55 /* SDLGetInteriorVehicleDataConsent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetInteriorVehicleDataConsent.h; path = public/SDLGetInteriorVehicleDataConsent.h; sourceTree = "<group>"; };
+ 4ABB293724F843410061BF55 /* SDLEncodedSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEncodedSyncPData.m; path = public/SDLEncodedSyncPData.m; sourceTree = "<group>"; };
+ 4ABB293824F843410061BF55 /* SDLGetAppServiceData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetAppServiceData.m; path = public/SDLGetAppServiceData.m; sourceTree = "<group>"; };
+ 4ABB293924F843410061BF55 /* SDLEncodedSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEncodedSyncPData.h; path = public/SDLEncodedSyncPData.h; sourceTree = "<group>"; };
+ 4ABB293A24F843410061BF55 /* SDLGetFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetFile.h; path = public/SDLGetFile.h; sourceTree = "<group>"; };
+ 4ABB293B24F843410061BF55 /* SDLGetInteriorVehicleDataConsent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetInteriorVehicleDataConsent.m; path = public/SDLGetInteriorVehicleDataConsent.m; sourceTree = "<group>"; };
+ 4ABB293C24F843420061BF55 /* SDLEndAudioPassThru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEndAudioPassThru.h; path = public/SDLEndAudioPassThru.h; sourceTree = "<group>"; };
+ 4ABB293D24F843420061BF55 /* SDLGetDTCs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetDTCs.h; path = public/SDLGetDTCs.h; sourceTree = "<group>"; };
+ 4ABB293E24F843420061BF55 /* SDLGetInteriorVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetInteriorVehicleData.m; path = public/SDLGetInteriorVehicleData.m; sourceTree = "<group>"; };
+ 4ABB293F24F843420061BF55 /* SDLGetFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetFile.m; path = public/SDLGetFile.m; sourceTree = "<group>"; };
+ 4ABB294024F843420061BF55 /* SDLGetInteriorVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetInteriorVehicleData.h; path = public/SDLGetInteriorVehicleData.h; sourceTree = "<group>"; };
+ 4ABB294124F843430061BF55 /* SDLGetDTCs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetDTCs.m; path = public/SDLGetDTCs.m; sourceTree = "<group>"; };
+ 4ABB294224F843430061BF55 /* SDLGetAppServiceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetAppServiceData.h; path = public/SDLGetAppServiceData.h; sourceTree = "<group>"; };
+ 4ABB294324F843430061BF55 /* SDLGetCloudAppProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetCloudAppProperties.m; path = public/SDLGetCloudAppProperties.m; sourceTree = "<group>"; };
+ 4ABB294424F843430061BF55 /* SDLEndAudioPassThru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEndAudioPassThru.m; path = public/SDLEndAudioPassThru.m; sourceTree = "<group>"; };
+ 4ABB294524F843430061BF55 /* SDLGetCloudAppProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetCloudAppProperties.h; path = public/SDLGetCloudAppProperties.h; sourceTree = "<group>"; };
+ 4ABB295624F844000061BF55 /* SDLGetVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetVehicleData.h; path = public/SDLGetVehicleData.h; sourceTree = "<group>"; };
+ 4ABB295724F844000061BF55 /* SDLGetSystemCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetSystemCapability.m; path = public/SDLGetSystemCapability.m; sourceTree = "<group>"; };
+ 4ABB295824F844000061BF55 /* SDLListFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLListFiles.m; path = public/SDLListFiles.m; sourceTree = "<group>"; };
+ 4ABB295924F844010061BF55 /* SDLGetWayPoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetWayPoints.m; path = public/SDLGetWayPoints.m; sourceTree = "<group>"; };
+ 4ABB295A24F844010061BF55 /* SDLGetWayPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetWayPoints.h; path = public/SDLGetWayPoints.h; sourceTree = "<group>"; };
+ 4ABB295B24F844010061BF55 /* SDLGetSystemCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetSystemCapability.h; path = public/SDLGetSystemCapability.h; sourceTree = "<group>"; };
+ 4ABB295C24F844010061BF55 /* SDLGetVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetVehicleData.m; path = public/SDLGetVehicleData.m; sourceTree = "<group>"; };
+ 4ABB295D24F844010061BF55 /* SDLListFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLListFiles.h; path = public/SDLListFiles.h; sourceTree = "<group>"; };
+ 4ABB296624F844D00061BF55 /* SDLPerformInteraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPerformInteraction.m; path = public/SDLPerformInteraction.m; sourceTree = "<group>"; };
+ 4ABB296724F844D10061BF55 /* SDLPublishAppService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPublishAppService.h; path = public/SDLPublishAppService.h; sourceTree = "<group>"; };
+ 4ABB296824F844D10061BF55 /* SDLReadDID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLReadDID.h; path = public/SDLReadDID.h; sourceTree = "<group>"; };
+ 4ABB296924F844D10061BF55 /* SDLPerformAppServiceInteraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPerformAppServiceInteraction.m; path = public/SDLPerformAppServiceInteraction.m; sourceTree = "<group>"; };
+ 4ABB296A24F844D10061BF55 /* SDLPerformInteraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPerformInteraction.h; path = public/SDLPerformInteraction.h; sourceTree = "<group>"; };
+ 4ABB296B24F844D10061BF55 /* SDLPerformAppServiceInteraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPerformAppServiceInteraction.h; path = public/SDLPerformAppServiceInteraction.h; sourceTree = "<group>"; };
+ 4ABB296C24F844D20061BF55 /* SDLPublishAppService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPublishAppService.m; path = public/SDLPublishAppService.m; sourceTree = "<group>"; };
+ 4ABB296D24F844D20061BF55 /* SDLPerformAudioPassThru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPerformAudioPassThru.h; path = public/SDLPerformAudioPassThru.h; sourceTree = "<group>"; };
+ 4ABB296E24F844D20061BF55 /* SDLReadDID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLReadDID.m; path = public/SDLReadDID.m; sourceTree = "<group>"; };
+ 4ABB296F24F844D20061BF55 /* SDLPerformAudioPassThru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPerformAudioPassThru.m; path = public/SDLPerformAudioPassThru.m; sourceTree = "<group>"; };
+ 4ABB297024F844D20061BF55 /* SDLPutFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPutFile.h; path = public/SDLPutFile.h; sourceTree = "<group>"; };
+ 4ABB297124F844D30061BF55 /* SDLPutFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPutFile.m; path = public/SDLPutFile.m; sourceTree = "<group>"; };
+ 4ABB297E24F845410061BF55 /* SDLReleaseInteriorVehicleDataModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLReleaseInteriorVehicleDataModule.h; path = public/SDLReleaseInteriorVehicleDataModule.h; sourceTree = "<group>"; };
+ 4ABB297F24F845410061BF55 /* SDLSendHapticData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSendHapticData.h; path = public/SDLSendHapticData.h; sourceTree = "<group>"; };
+ 4ABB298024F845410061BF55 /* SDLRegisterAppInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRegisterAppInterface.m; path = public/SDLRegisterAppInterface.m; sourceTree = "<group>"; };
+ 4ABB298124F845420061BF55 /* SDLSendLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSendLocation.h; path = public/SDLSendLocation.h; sourceTree = "<group>"; };
+ 4ABB298224F845420061BF55 /* SDLScrollableMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLScrollableMessage.m; path = public/SDLScrollableMessage.m; sourceTree = "<group>"; };
+ 4ABB298324F845420061BF55 /* SDLSetAppIcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetAppIcon.h; path = public/SDLSetAppIcon.h; sourceTree = "<group>"; };
+ 4ABB298424F845420061BF55 /* SDLSendLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSendLocation.m; path = public/SDLSendLocation.m; sourceTree = "<group>"; };
+ 4ABB298524F845420061BF55 /* SDLResetGlobalProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLResetGlobalProperties.m; path = public/SDLResetGlobalProperties.m; sourceTree = "<group>"; };
+ 4ABB298624F845430061BF55 /* SDLRegisterAppInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRegisterAppInterface.h; path = public/SDLRegisterAppInterface.h; sourceTree = "<group>"; };
+ 4ABB298724F845430061BF55 /* SDLResetGlobalProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLResetGlobalProperties.h; path = public/SDLResetGlobalProperties.h; sourceTree = "<group>"; };
+ 4ABB298824F845430061BF55 /* SDLReleaseInteriorVehicleDataModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLReleaseInteriorVehicleDataModule.m; path = public/SDLReleaseInteriorVehicleDataModule.m; sourceTree = "<group>"; };
+ 4ABB298924F845430061BF55 /* SDLSetAppIcon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetAppIcon.m; path = public/SDLSetAppIcon.m; sourceTree = "<group>"; };
+ 4ABB298A24F845430061BF55 /* SDLSendHapticData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSendHapticData.m; path = public/SDLSendHapticData.m; sourceTree = "<group>"; };
+ 4ABB298B24F845440061BF55 /* SDLSetCloudAppProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetCloudAppProperties.m; path = public/SDLSetCloudAppProperties.m; sourceTree = "<group>"; };
+ 4ABB298C24F845440061BF55 /* SDLSetCloudAppProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetCloudAppProperties.h; path = public/SDLSetCloudAppProperties.h; sourceTree = "<group>"; };
+ 4ABB298D24F845440061BF55 /* SDLScrollableMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLScrollableMessage.h; path = public/SDLScrollableMessage.h; sourceTree = "<group>"; };
+ 4ABB299E24F845D70061BF55 /* SDLSetInteriorVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetInteriorVehicleData.m; path = public/SDLSetInteriorVehicleData.m; sourceTree = "<group>"; };
+ 4ABB299F24F845D70061BF55 /* SDLSetDisplayLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetDisplayLayout.m; path = public/SDLSetDisplayLayout.m; sourceTree = "<group>"; };
+ 4ABB29A024F845D70061BF55 /* SDLSetDisplayLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetDisplayLayout.h; path = public/SDLSetDisplayLayout.h; sourceTree = "<group>"; };
+ 4ABB29A124F845D70061BF55 /* SDLShow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLShow.h; path = public/SDLShow.h; sourceTree = "<group>"; };
+ 4ABB29A224F845D80061BF55 /* SDLSpeak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSpeak.m; path = public/SDLSpeak.m; sourceTree = "<group>"; };
+ 4ABB29A324F845D80061BF55 /* SDLShowConstantTBT.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLShowConstantTBT.m; path = public/SDLShowConstantTBT.m; sourceTree = "<group>"; };
+ 4ABB29A424F845D80061BF55 /* SDLSetInteriorVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetInteriorVehicleData.h; path = public/SDLSetInteriorVehicleData.h; sourceTree = "<group>"; };
+ 4ABB29A524F845D80061BF55 /* SDLSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSlider.h; path = public/SDLSlider.h; sourceTree = "<group>"; };
+ 4ABB29A624F845D90061BF55 /* SDLSetMediaClockTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetMediaClockTimer.m; path = public/SDLSetMediaClockTimer.m; sourceTree = "<group>"; };
+ 4ABB29A724F845D90061BF55 /* SDLShowAppMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLShowAppMenu.m; path = public/SDLShowAppMenu.m; sourceTree = "<group>"; };
+ 4ABB29A824F845D90061BF55 /* SDLSpeak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSpeak.h; path = public/SDLSpeak.h; sourceTree = "<group>"; };
+ 4ABB29A924F845D90061BF55 /* SDLSetGlobalProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetGlobalProperties.h; path = public/SDLSetGlobalProperties.h; sourceTree = "<group>"; };
+ 4ABB29AA24F845D90061BF55 /* SDLShowAppMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLShowAppMenu.h; path = public/SDLShowAppMenu.h; sourceTree = "<group>"; };
+ 4ABB29AB24F845DA0061BF55 /* SDLSetGlobalProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetGlobalProperties.m; path = public/SDLSetGlobalProperties.m; sourceTree = "<group>"; };
+ 4ABB29AC24F845DA0061BF55 /* SDLSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSlider.m; path = public/SDLSlider.m; sourceTree = "<group>"; };
+ 4ABB29AD24F845DA0061BF55 /* SDLSetMediaClockTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetMediaClockTimer.h; path = public/SDLSetMediaClockTimer.h; sourceTree = "<group>"; };
+ 4ABB29AE24F845DA0061BF55 /* SDLShowConstantTBT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLShowConstantTBT.h; path = public/SDLShowConstantTBT.h; sourceTree = "<group>"; };
+ 4ABB29AF24F845DA0061BF55 /* SDLShow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLShow.m; path = public/SDLShow.m; sourceTree = "<group>"; };
+ 4ABB29C224F846850061BF55 /* SDLSubscribeVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeVehicleData.m; path = public/SDLSubscribeVehicleData.m; sourceTree = "<group>"; };
+ 4ABB29C324F846850061BF55 /* SDLSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSyncPData.m; path = public/SDLSyncPData.m; sourceTree = "<group>"; };
+ 4ABB29C424F846850061BF55 /* SDLSubtleAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubtleAlert.h; path = public/SDLSubtleAlert.h; sourceTree = "<group>"; };
+ 4ABB29C524F846850061BF55 /* SDLSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSyncPData.h; path = public/SDLSyncPData.h; sourceTree = "<group>"; };
+ 4ABB29C624F846850061BF55 /* SDLSubtleAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubtleAlert.m; path = public/SDLSubtleAlert.m; sourceTree = "<group>"; };
+ 4ABB29C724F846860061BF55 /* SDLSubscribeButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeButton.h; path = public/SDLSubscribeButton.h; sourceTree = "<group>"; };
+ 4ABB29C824F846860061BF55 /* SDLSystemRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemRequest.m; path = public/SDLSystemRequest.m; sourceTree = "<group>"; };
+ 4ABB29C924F846860061BF55 /* SDLSubscribeWayPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeWayPoints.h; path = public/SDLSubscribeWayPoints.h; sourceTree = "<group>"; };
+ 4ABB29CA24F846860061BF55 /* SDLSubscribeVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeVehicleData.h; path = public/SDLSubscribeVehicleData.h; sourceTree = "<group>"; };
+ 4ABB29CB24F846860061BF55 /* SDLUnregisterAppInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnregisterAppInterface.m; path = public/SDLUnregisterAppInterface.m; sourceTree = "<group>"; };
+ 4ABB29CC24F846870061BF55 /* SDLUnregisterAppInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnregisterAppInterface.h; path = public/SDLUnregisterAppInterface.h; sourceTree = "<group>"; };
+ 4ABB29CD24F846870061BF55 /* SDLSubscribeButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeButton.m; path = public/SDLSubscribeButton.m; sourceTree = "<group>"; };
+ 4ABB29CE24F846870061BF55 /* SDLUnpublishAppService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnpublishAppService.h; path = public/SDLUnpublishAppService.h; sourceTree = "<group>"; };
+ 4ABB29CF24F846870061BF55 /* SDLSystemRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemRequest.h; path = public/SDLSystemRequest.h; sourceTree = "<group>"; };
+ 4ABB29D024F846880061BF55 /* SDLSubscribeWayPoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeWayPoints.m; path = public/SDLSubscribeWayPoints.m; sourceTree = "<group>"; };
+ 4ABB29D124F846880061BF55 /* SDLUnpublishAppService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnpublishAppService.m; path = public/SDLUnpublishAppService.m; sourceTree = "<group>"; };
+ 4ABB29E224F847340061BF55 /* SDLUnsubscribeButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnsubscribeButton.h; path = public/SDLUnsubscribeButton.h; sourceTree = "<group>"; };
+ 4ABB29E324F847340061BF55 /* SDLUnsubscribeWayPoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnsubscribeWayPoints.m; path = public/SDLUnsubscribeWayPoints.m; sourceTree = "<group>"; };
+ 4ABB29E424F847350061BF55 /* SDLUnsubscribeVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnsubscribeVehicleData.h; path = public/SDLUnsubscribeVehicleData.h; sourceTree = "<group>"; };
+ 4ABB29E524F847350061BF55 /* SDLUnsubscribeVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnsubscribeVehicleData.m; path = public/SDLUnsubscribeVehicleData.m; sourceTree = "<group>"; };
+ 4ABB29E624F847350061BF55 /* SDLUnsubscribeWayPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnsubscribeWayPoints.h; path = public/SDLUnsubscribeWayPoints.h; sourceTree = "<group>"; };
+ 4ABB29E724F847350061BF55 /* SDLUnsubscribeButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnsubscribeButton.m; path = public/SDLUnsubscribeButton.m; sourceTree = "<group>"; };
+ 4ABB29E824F847350061BF55 /* SDLUpdateTurnList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUpdateTurnList.m; path = public/SDLUpdateTurnList.m; sourceTree = "<group>"; };
+ 4ABB29E924F847360061BF55 /* SDLUpdateTurnList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUpdateTurnList.h; path = public/SDLUpdateTurnList.h; sourceTree = "<group>"; };
+ 4ABB29F224F8477E0061BF55 /* SDLAddSubMenuResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAddSubMenuResponse.h; path = public/SDLAddSubMenuResponse.h; sourceTree = "<group>"; };
+ 4ABB29F324F8477E0061BF55 /* SDLAlertManeuverResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAlertManeuverResponse.h; path = public/SDLAlertManeuverResponse.h; sourceTree = "<group>"; };
+ 4ABB29F424F8477E0061BF55 /* SDLAlertResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAlertResponse.m; path = public/SDLAlertResponse.m; sourceTree = "<group>"; };
+ 4ABB29F524F8477E0061BF55 /* SDLAlertResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAlertResponse.h; path = public/SDLAlertResponse.h; sourceTree = "<group>"; };
+ 4ABB29F624F8477E0061BF55 /* SDLAddCommandResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAddCommandResponse.m; path = public/SDLAddCommandResponse.m; sourceTree = "<group>"; };
+ 4ABB29F724F8477E0061BF55 /* SDLAddSubMenuResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAddSubMenuResponse.m; path = public/SDLAddSubMenuResponse.m; sourceTree = "<group>"; };
+ 4ABB29F824F8477E0061BF55 /* SDLAddCommandResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAddCommandResponse.h; path = public/SDLAddCommandResponse.h; sourceTree = "<group>"; };
+ 4ABB29F924F8477F0061BF55 /* SDLAlertManeuverResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAlertManeuverResponse.m; path = public/SDLAlertManeuverResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0224F847940061BF55 /* SDLButtonPressResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLButtonPressResponse.h; path = public/SDLButtonPressResponse.h; sourceTree = "<group>"; };
+ 4ABB2A0324F847940061BF55 /* SDLButtonPressResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLButtonPressResponse.m; path = public/SDLButtonPressResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0424F847940061BF55 /* SDLChangeRegistrationResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLChangeRegistrationResponse.m; path = public/SDLChangeRegistrationResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0524F847940061BF55 /* SDLCreateInteractionChoiceSetResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCreateInteractionChoiceSetResponse.m; path = public/SDLCreateInteractionChoiceSetResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0624F847950061BF55 /* SDLDeleteInteractionChoiceSetResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteInteractionChoiceSetResponse.m; path = public/SDLDeleteInteractionChoiceSetResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0724F847950061BF55 /* SDLDeleteWindowResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteWindowResponse.m; path = public/SDLDeleteWindowResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0824F847950061BF55 /* SDLEndAudioPassThruResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEndAudioPassThruResponse.m; path = public/SDLEndAudioPassThruResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0924F847950061BF55 /* SDLCloseApplicationResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCloseApplicationResponse.m; path = public/SDLCloseApplicationResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0A24F847950061BF55 /* SDLDeleteCommandResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteCommandResponse.m; path = public/SDLDeleteCommandResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0B24F847950061BF55 /* SDLDeleteFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteFileResponse.m; path = public/SDLDeleteFileResponse.m; sourceTree = "<group>"; };
+ 4ABB2A0C24F847950061BF55 /* SDLDeleteSubMenuResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteSubMenuResponse.h; path = public/SDLDeleteSubMenuResponse.h; sourceTree = "<group>"; };
+ 4ABB2A0D24F847950061BF55 /* SDLCloseApplicationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCloseApplicationResponse.h; path = public/SDLCloseApplicationResponse.h; sourceTree = "<group>"; };
+ 4ABB2A0E24F847960061BF55 /* SDLChangeRegistrationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLChangeRegistrationResponse.h; path = public/SDLChangeRegistrationResponse.h; sourceTree = "<group>"; };
+ 4ABB2A0F24F847960061BF55 /* SDLEncodedSyncPDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEncodedSyncPDataResponse.m; path = public/SDLEncodedSyncPDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2A1024F847960061BF55 /* SDLDeleteCommandResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteCommandResponse.h; path = public/SDLDeleteCommandResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1124F847960061BF55 /* SDLCreateWindowResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCreateWindowResponse.m; path = public/SDLCreateWindowResponse.m; sourceTree = "<group>"; };
+ 4ABB2A1224F847960061BF55 /* SDLDiagnosticMessageResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDiagnosticMessageResponse.h; path = public/SDLDiagnosticMessageResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1324F847960061BF55 /* SDLDeleteFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteFileResponse.h; path = public/SDLDeleteFileResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1424F847960061BF55 /* SDLCancelInteractionResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCancelInteractionResponse.m; path = public/SDLCancelInteractionResponse.m; sourceTree = "<group>"; };
+ 4ABB2A1524F847970061BF55 /* SDLCreateWindowResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCreateWindowResponse.h; path = public/SDLCreateWindowResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1624F847970061BF55 /* SDLCancelInteractionResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCancelInteractionResponse.h; path = public/SDLCancelInteractionResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1724F847970061BF55 /* SDLDeleteSubMenuResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeleteSubMenuResponse.m; path = public/SDLDeleteSubMenuResponse.m; sourceTree = "<group>"; };
+ 4ABB2A1824F847970061BF55 /* SDLDialNumberResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDialNumberResponse.h; path = public/SDLDialNumberResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1924F847970061BF55 /* SDLDialNumberResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDialNumberResponse.m; path = public/SDLDialNumberResponse.m; sourceTree = "<group>"; };
+ 4ABB2A1A24F847970061BF55 /* SDLDeleteWindowResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteWindowResponse.h; path = public/SDLDeleteWindowResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1B24F847970061BF55 /* SDLDiagnosticMessageResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDiagnosticMessageResponse.m; path = public/SDLDiagnosticMessageResponse.m; sourceTree = "<group>"; };
+ 4ABB2A1C24F847970061BF55 /* SDLEndAudioPassThruResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEndAudioPassThruResponse.h; path = public/SDLEndAudioPassThruResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1D24F847980061BF55 /* SDLDeleteInteractionChoiceSetResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeleteInteractionChoiceSetResponse.h; path = public/SDLDeleteInteractionChoiceSetResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1E24F847980061BF55 /* SDLCreateInteractionChoiceSetResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCreateInteractionChoiceSetResponse.h; path = public/SDLCreateInteractionChoiceSetResponse.h; sourceTree = "<group>"; };
+ 4ABB2A1F24F847980061BF55 /* SDLEncodedSyncPDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEncodedSyncPDataResponse.h; path = public/SDLEncodedSyncPDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2A3E24F847AE0061BF55 /* SDLGetInteriorVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetInteriorVehicleDataResponse.m; path = public/SDLGetInteriorVehicleDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2A3F24F847AE0061BF55 /* SDLGetVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetVehicleDataResponse.h; path = public/SDLGetVehicleDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4024F847AE0061BF55 /* SDLGetFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetFileResponse.h; path = public/SDLGetFileResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4124F847AE0061BF55 /* SDLGetVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetVehicleDataResponse.m; path = public/SDLGetVehicleDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2A4224F847AF0061BF55 /* SDLGetSystemCapabilityResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetSystemCapabilityResponse.h; path = public/SDLGetSystemCapabilityResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4324F847AF0061BF55 /* SDLGetInteriorVehicleDataConsentResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetInteriorVehicleDataConsentResponse.m; path = public/SDLGetInteriorVehicleDataConsentResponse.m; sourceTree = "<group>"; };
+ 4ABB2A4424F847AF0061BF55 /* SDLGetWayPointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetWayPointsResponse.m; path = public/SDLGetWayPointsResponse.m; sourceTree = "<group>"; };
+ 4ABB2A4524F847AF0061BF55 /* SDLGetFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetFileResponse.m; path = public/SDLGetFileResponse.m; sourceTree = "<group>"; };
+ 4ABB2A4624F847AF0061BF55 /* SDLGetInteriorVehicleDataConsentResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetInteriorVehicleDataConsentResponse.h; path = public/SDLGetInteriorVehicleDataConsentResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4724F847AF0061BF55 /* SDLGetCloudAppPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetCloudAppPropertiesResponse.h; path = public/SDLGetCloudAppPropertiesResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4824F847AF0061BF55 /* SDLGetDTCsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetDTCsResponse.m; path = public/SDLGetDTCsResponse.m; sourceTree = "<group>"; };
+ 4ABB2A4924F847B00061BF55 /* SDLGetCloudAppPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetCloudAppPropertiesResponse.m; path = public/SDLGetCloudAppPropertiesResponse.m; sourceTree = "<group>"; };
+ 4ABB2A4A24F847B00061BF55 /* SDLGetWayPointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetWayPointsResponse.h; path = public/SDLGetWayPointsResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4B24F847B00061BF55 /* SDLGetAppServiceDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetAppServiceDataResponse.h; path = public/SDLGetAppServiceDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4C24F847B00061BF55 /* SDLGetDTCsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetDTCsResponse.h; path = public/SDLGetDTCsResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4D24F847B00061BF55 /* SDLGetAppServiceDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetAppServiceDataResponse.m; path = public/SDLGetAppServiceDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2A4E24F847B00061BF55 /* SDLGetInteriorVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGetInteriorVehicleDataResponse.h; path = public/SDLGetInteriorVehicleDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2A4F24F847B10061BF55 /* SDLGetSystemCapabilityResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGetSystemCapabilityResponse.m; path = public/SDLGetSystemCapabilityResponse.m; sourceTree = "<group>"; };
+ 4ABB2A6224F847BA0061BF55 /* SDLListFilesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLListFilesResponse.h; path = public/SDLListFilesResponse.h; sourceTree = "<group>"; };
+ 4ABB2A6324F847BB0061BF55 /* SDLListFilesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLListFilesResponse.m; path = public/SDLListFilesResponse.m; sourceTree = "<group>"; };
+ 4ABB2A6624F847D20061BF55 /* SDLPerformAudioPassThruResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPerformAudioPassThruResponse.h; path = public/SDLPerformAudioPassThruResponse.h; sourceTree = "<group>"; };
+ 4ABB2A6724F847D20061BF55 /* SDLPublishAppServiceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPublishAppServiceResponse.h; path = public/SDLPublishAppServiceResponse.h; sourceTree = "<group>"; };
+ 4ABB2A6824F847D20061BF55 /* SDLPutFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPutFileResponse.h; path = public/SDLPutFileResponse.h; sourceTree = "<group>"; };
+ 4ABB2A6924F847D30061BF55 /* SDLPutFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPutFileResponse.m; path = public/SDLPutFileResponse.m; sourceTree = "<group>"; };
+ 4ABB2A6A24F847D30061BF55 /* SDLPerformAudioPassThruResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPerformAudioPassThruResponse.m; path = public/SDLPerformAudioPassThruResponse.m; sourceTree = "<group>"; };
+ 4ABB2A6B24F847D30061BF55 /* SDLPublishAppServiceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPublishAppServiceResponse.m; path = public/SDLPublishAppServiceResponse.m; sourceTree = "<group>"; };
+ 4ABB2A6C24F847D30061BF55 /* SDLPerformAppServiceInteractionResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPerformAppServiceInteractionResponse.m; path = public/SDLPerformAppServiceInteractionResponse.m; sourceTree = "<group>"; };
+ 4ABB2A6D24F847D30061BF55 /* SDLPerformInteractionResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPerformInteractionResponse.m; path = public/SDLPerformInteractionResponse.m; sourceTree = "<group>"; };
+ 4ABB2A6E24F847D30061BF55 /* SDLPerformAppServiceInteractionResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPerformAppServiceInteractionResponse.h; path = public/SDLPerformAppServiceInteractionResponse.h; sourceTree = "<group>"; };
+ 4ABB2A6F24F847D30061BF55 /* SDLPerformInteractionResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPerformInteractionResponse.h; path = public/SDLPerformInteractionResponse.h; sourceTree = "<group>"; };
+ 4ABB2A7A24F847DE0061BF55 /* SDLRegisterAppInterfaceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRegisterAppInterfaceResponse.m; path = public/SDLRegisterAppInterfaceResponse.m; sourceTree = "<group>"; };
+ 4ABB2A7B24F847DE0061BF55 /* SDLResetGlobalPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLResetGlobalPropertiesResponse.h; path = public/SDLResetGlobalPropertiesResponse.h; sourceTree = "<group>"; };
+ 4ABB2A7C24F847DE0061BF55 /* SDLResetGlobalPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLResetGlobalPropertiesResponse.m; path = public/SDLResetGlobalPropertiesResponse.m; sourceTree = "<group>"; };
+ 4ABB2A7D24F847DE0061BF55 /* SDLRegisterAppInterfaceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRegisterAppInterfaceResponse.h; path = public/SDLRegisterAppInterfaceResponse.h; sourceTree = "<group>"; };
+ 4ABB2A7E24F847DE0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLReleaseInteriorVehicleDataModuleResponse.m; path = public/SDLReleaseInteriorVehicleDataModuleResponse.m; sourceTree = "<group>"; };
+ 4ABB2A7F24F847DE0061BF55 /* SDLReadDIDResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLReadDIDResponse.h; path = public/SDLReadDIDResponse.h; sourceTree = "<group>"; };
+ 4ABB2A8024F847DF0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLReleaseInteriorVehicleDataModuleResponse.h; path = public/SDLReleaseInteriorVehicleDataModuleResponse.h; sourceTree = "<group>"; };
+ 4ABB2A8124F847DF0061BF55 /* SDLReadDIDResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLReadDIDResponse.m; path = public/SDLReadDIDResponse.m; sourceTree = "<group>"; };
+ 4ABB2A8A24F847F10061BF55 /* SDLSetCloudAppPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetCloudAppPropertiesResponse.m; path = public/SDLSetCloudAppPropertiesResponse.m; sourceTree = "<group>"; };
+ 4ABB2A8B24F847F10061BF55 /* SDLShowConstantTBTResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLShowConstantTBTResponse.m; path = public/SDLShowConstantTBTResponse.m; sourceTree = "<group>"; };
+ 4ABB2A8C24F847F10061BF55 /* SDLShowResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLShowResponse.m; path = public/SDLShowResponse.m; sourceTree = "<group>"; };
+ 4ABB2A8D24F847F10061BF55 /* SDLSendHapticDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSendHapticDataResponse.m; path = public/SDLSendHapticDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2A8E24F847F10061BF55 /* SDLSetInteriorVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetInteriorVehicleDataResponse.h; path = public/SDLSetInteriorVehicleDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2A8F24F847F10061BF55 /* SDLShowConstantTBTResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLShowConstantTBTResponse.h; path = public/SDLShowConstantTBTResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9024F847F20061BF55 /* SDLSetDisplayLayoutResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetDisplayLayoutResponse.m; path = public/SDLSetDisplayLayoutResponse.m; sourceTree = "<group>"; };
+ 4ABB2A9124F847F20061BF55 /* SDLSetAppIconResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetAppIconResponse.m; path = public/SDLSetAppIconResponse.m; sourceTree = "<group>"; };
+ 4ABB2A9224F847F20061BF55 /* SDLShowResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLShowResponse.h; path = public/SDLShowResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9324F847F20061BF55 /* SDLSetMediaClockTimerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetMediaClockTimerResponse.m; path = public/SDLSetMediaClockTimerResponse.m; sourceTree = "<group>"; };
+ 4ABB2A9424F847F20061BF55 /* SDLSetAppIconResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetAppIconResponse.h; path = public/SDLSetAppIconResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9524F847F20061BF55 /* SDLScrollableMessageResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLScrollableMessageResponse.h; path = public/SDLScrollableMessageResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9624F847F20061BF55 /* SDLSendLocationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSendLocationResponse.h; path = public/SDLSendLocationResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9724F847F30061BF55 /* SDLScrollableMessageResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLScrollableMessageResponse.m; path = public/SDLScrollableMessageResponse.m; sourceTree = "<group>"; };
+ 4ABB2A9824F847F30061BF55 /* SDLSetCloudAppPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetCloudAppPropertiesResponse.h; path = public/SDLSetCloudAppPropertiesResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9924F847F30061BF55 /* SDLSetDisplayLayoutResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetDisplayLayoutResponse.h; path = public/SDLSetDisplayLayoutResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9A24F847F30061BF55 /* SDLSendLocationResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSendLocationResponse.m; path = public/SDLSendLocationResponse.m; sourceTree = "<group>"; };
+ 4ABB2A9B24F847F30061BF55 /* SDLSetGlobalPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetGlobalPropertiesResponse.h; path = public/SDLSetGlobalPropertiesResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9C24F847F30061BF55 /* SDLSetMediaClockTimerResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSetMediaClockTimerResponse.h; path = public/SDLSetMediaClockTimerResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9D24F847F30061BF55 /* SDLShowAppMenuResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLShowAppMenuResponse.h; path = public/SDLShowAppMenuResponse.h; sourceTree = "<group>"; };
+ 4ABB2A9E24F847F40061BF55 /* SDLShowAppMenuResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLShowAppMenuResponse.m; path = public/SDLShowAppMenuResponse.m; sourceTree = "<group>"; };
+ 4ABB2A9F24F847F40061BF55 /* SDLSetGlobalPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetGlobalPropertiesResponse.m; path = public/SDLSetGlobalPropertiesResponse.m; sourceTree = "<group>"; };
+ 4ABB2AA024F847F40061BF55 /* SDLSendHapticDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSendHapticDataResponse.h; path = public/SDLSendHapticDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2AA124F847F40061BF55 /* SDLSetInteriorVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSetInteriorVehicleDataResponse.m; path = public/SDLSetInteriorVehicleDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2ABA24F847FC0061BF55 /* SDLSliderResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSliderResponse.m; path = public/SDLSliderResponse.m; sourceTree = "<group>"; };
+ 4ABB2ABB24F847FC0061BF55 /* SDLSliderResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSliderResponse.h; path = public/SDLSliderResponse.h; sourceTree = "<group>"; };
+ 4ABB2ABE24F848040061BF55 /* SDLSpeakResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSpeakResponse.h; path = public/SDLSpeakResponse.h; sourceTree = "<group>"; };
+ 4ABB2ABF24F848050061BF55 /* SDLSpeakResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSpeakResponse.m; path = public/SDLSpeakResponse.m; sourceTree = "<group>"; };
+ 4ABB2AC224F848110061BF55 /* SDLSyncPDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSyncPDataResponse.m; path = public/SDLSyncPDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2AC324F848110061BF55 /* SDLSyncPDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSyncPDataResponse.h; path = public/SDLSyncPDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2AC424F848120061BF55 /* SDLSubscribeButtonResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeButtonResponse.h; path = public/SDLSubscribeButtonResponse.h; sourceTree = "<group>"; };
+ 4ABB2AC524F848120061BF55 /* SDLSubtleAlertResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubtleAlertResponse.m; path = public/SDLSubtleAlertResponse.m; sourceTree = "<group>"; };
+ 4ABB2AC624F848120061BF55 /* SDLSubscribeVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeVehicleDataResponse.m; path = public/SDLSubscribeVehicleDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2AC724F848120061BF55 /* SDLSubscribeWayPointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeWayPointsResponse.h; path = public/SDLSubscribeWayPointsResponse.h; sourceTree = "<group>"; };
+ 4ABB2AC824F848120061BF55 /* SDLSubscribeWayPointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeWayPointsResponse.m; path = public/SDLSubscribeWayPointsResponse.m; sourceTree = "<group>"; };
+ 4ABB2AC924F848120061BF55 /* SDLSubtleAlertResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubtleAlertResponse.h; path = public/SDLSubtleAlertResponse.h; sourceTree = "<group>"; };
+ 4ABB2ACA24F848120061BF55 /* SDLSubscribeButtonResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSubscribeButtonResponse.m; path = public/SDLSubscribeButtonResponse.m; sourceTree = "<group>"; };
+ 4ABB2ACB24F848120061BF55 /* SDLSubscribeVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSubscribeVehicleDataResponse.h; path = public/SDLSubscribeVehicleDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2AD624F8481D0061BF55 /* SDLSystemRequestResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSystemRequestResponse.m; path = public/SDLSystemRequestResponse.m; sourceTree = "<group>"; };
+ 4ABB2AD724F8481D0061BF55 /* SDLSystemRequestResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSystemRequestResponse.h; path = public/SDLSystemRequestResponse.h; sourceTree = "<group>"; };
+ 4ABB2ADA24F848250061BF55 /* SDLUnsubscribeVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnsubscribeVehicleDataResponse.h; path = public/SDLUnsubscribeVehicleDataResponse.h; sourceTree = "<group>"; };
+ 4ABB2ADB24F848250061BF55 /* SDLUnsubscribeWayPointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnsubscribeWayPointsResponse.h; path = public/SDLUnsubscribeWayPointsResponse.h; sourceTree = "<group>"; };
+ 4ABB2ADC24F848250061BF55 /* SDLUnpublishAppServiceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnpublishAppServiceResponse.m; path = public/SDLUnpublishAppServiceResponse.m; sourceTree = "<group>"; };
+ 4ABB2ADD24F848250061BF55 /* SDLUnsubscribeWayPointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnsubscribeWayPointsResponse.m; path = public/SDLUnsubscribeWayPointsResponse.m; sourceTree = "<group>"; };
+ 4ABB2ADE24F848260061BF55 /* SDLUpdateTurnListResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUpdateTurnListResponse.h; path = public/SDLUpdateTurnListResponse.h; sourceTree = "<group>"; };
+ 4ABB2ADF24F848260061BF55 /* SDLUpdateTurnListResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUpdateTurnListResponse.m; path = public/SDLUpdateTurnListResponse.m; sourceTree = "<group>"; };
+ 4ABB2AE024F848260061BF55 /* SDLUnpublishAppServiceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnpublishAppServiceResponse.h; path = public/SDLUnpublishAppServiceResponse.h; sourceTree = "<group>"; };
+ 4ABB2AE124F848260061BF55 /* SDLUnsubscribeVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnsubscribeVehicleDataResponse.m; path = public/SDLUnsubscribeVehicleDataResponse.m; sourceTree = "<group>"; };
+ 4ABB2AE224F848260061BF55 /* SDLUnregisterAppInterfaceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnregisterAppInterfaceResponse.h; path = public/SDLUnregisterAppInterfaceResponse.h; sourceTree = "<group>"; };
+ 4ABB2AE324F848260061BF55 /* SDLUnsubscribeButtonResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLUnsubscribeButtonResponse.h; path = public/SDLUnsubscribeButtonResponse.h; sourceTree = "<group>"; };
+ 4ABB2AE424F848260061BF55 /* SDLUnsubscribeButtonResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnsubscribeButtonResponse.m; path = public/SDLUnsubscribeButtonResponse.m; sourceTree = "<group>"; };
+ 4ABB2AE524F848270061BF55 /* SDLUnregisterAppInterfaceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLUnregisterAppInterfaceResponse.m; path = public/SDLUnregisterAppInterfaceResponse.m; sourceTree = "<group>"; };
+ 4ABB2AF224F849CE0061BF55 /* SDLGenericResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGenericResponse.h; path = public/SDLGenericResponse.h; sourceTree = "<group>"; };
+ 4ABB2AF324F849CF0061BF55 /* SDLGenericResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGenericResponse.m; path = public/SDLGenericResponse.m; sourceTree = "<group>"; };
+ 4ABB2AF624F84D930061BF55 /* SDLAudioControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioControlCapabilities.m; path = public/SDLAudioControlCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2AF724F84D930061BF55 /* SDLAppServiceData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppServiceData.m; path = public/SDLAppServiceData.m; sourceTree = "<group>"; };
+ 4ABB2AF824F84D930061BF55 /* SDLAppServicesCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppServicesCapabilities.h; path = public/SDLAppServicesCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2AF924F84D930061BF55 /* SDLAirbagStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAirbagStatus.m; path = public/SDLAirbagStatus.m; sourceTree = "<group>"; };
+ 4ABB2AFA24F84D930061BF55 /* SDLAppServiceCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppServiceCapability.m; path = public/SDLAppServiceCapability.m; sourceTree = "<group>"; };
+ 4ABB2AFB24F84D930061BF55 /* SDLAppInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppInfo.h; path = public/SDLAppInfo.h; sourceTree = "<group>"; };
+ 4ABB2AFC24F84D940061BF55 /* SDLAppServiceManifest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppServiceManifest.m; path = public/SDLAppServiceManifest.m; sourceTree = "<group>"; };
+ 4ABB2AFD24F84D940061BF55 /* SDLAudioControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioControlData.m; path = public/SDLAudioControlData.m; sourceTree = "<group>"; };
+ 4ABB2AFE24F84D940061BF55 /* SDLAudioPassThruCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioPassThruCapabilities.m; path = public/SDLAudioPassThruCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2AFF24F84D940061BF55 /* SDLAppServiceRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppServiceRecord.m; path = public/SDLAppServiceRecord.m; sourceTree = "<group>"; };
+ 4ABB2B0024F84D940061BF55 /* SDLAudioControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioControlData.h; path = public/SDLAudioControlData.h; sourceTree = "<group>"; };
+ 4ABB2B0124F84D940061BF55 /* SDLAirbagStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAirbagStatus.h; path = public/SDLAirbagStatus.h; sourceTree = "<group>"; };
+ 4ABB2B0224F84D940061BF55 /* SDLAudioControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioControlCapabilities.h; path = public/SDLAudioControlCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B0324F84D940061BF55 /* SDLAudioPassThruCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioPassThruCapabilities.h; path = public/SDLAudioPassThruCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B0424F84D950061BF55 /* SDLAppServiceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppServiceData.h; path = public/SDLAppServiceData.h; sourceTree = "<group>"; };
+ 4ABB2B0524F84D950061BF55 /* SDLAppServiceCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppServiceCapability.h; path = public/SDLAppServiceCapability.h; sourceTree = "<group>"; };
+ 4ABB2B0624F84D950061BF55 /* SDLAppInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppInfo.m; path = public/SDLAppInfo.m; sourceTree = "<group>"; };
+ 4ABB2B0724F84D950061BF55 /* SDLAppServicesCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAppServicesCapabilities.m; path = public/SDLAppServicesCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B0824F84D950061BF55 /* SDLAppServiceManifest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppServiceManifest.h; path = public/SDLAppServiceManifest.h; sourceTree = "<group>"; };
+ 4ABB2B0924F84D950061BF55 /* SDLAppServiceRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAppServiceRecord.h; path = public/SDLAppServiceRecord.h; sourceTree = "<group>"; };
+ 4ABB2B1E24F84EEF0061BF55 /* SDLClimateControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLClimateControlCapabilities.h; path = public/SDLClimateControlCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B1F24F84EF00061BF55 /* SDLDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeviceInfo.h; path = public/SDLDeviceInfo.h; sourceTree = "<group>"; };
+ 4ABB2B2024F84EF00061BF55 /* SDLDeviceStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeviceStatus.m; path = public/SDLDeviceStatus.m; sourceTree = "<group>"; };
+ 4ABB2B2124F84EF00061BF55 /* SDLCloudAppProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLCloudAppProperties.m; path = public/SDLCloudAppProperties.m; sourceTree = "<group>"; };
+ 4ABB2B2224F84EF00061BF55 /* SDLCloudAppProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLCloudAppProperties.h; path = public/SDLCloudAppProperties.h; sourceTree = "<group>"; };
+ 4ABB2B2324F84EF00061BF55 /* SDLDateTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDateTime.m; path = public/SDLDateTime.m; sourceTree = "<group>"; };
+ 4ABB2B2424F84EF10061BF55 /* SDLBodyInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLBodyInformation.h; path = public/SDLBodyInformation.h; sourceTree = "<group>"; };
+ 4ABB2B2524F84EF10061BF55 /* SDLDisplayCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDisplayCapabilities.m; path = public/SDLDisplayCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B2624F84EF10061BF55 /* SDLDeviceInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDeviceInfo.m; path = public/SDLDeviceInfo.m; sourceTree = "<group>"; };
+ 4ABB2B2724F84EF10061BF55 /* SDLBodyInformation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLBodyInformation.m; path = public/SDLBodyInformation.m; sourceTree = "<group>"; };
+ 4ABB2B2824F84EF10061BF55 /* SDLDIDResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDIDResult.h; path = public/SDLDIDResult.h; sourceTree = "<group>"; };
+ 4ABB2B2924F84EF20061BF55 /* SDLBeltStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLBeltStatus.m; path = public/SDLBeltStatus.m; sourceTree = "<group>"; };
+ 4ABB2B2A24F84EF20061BF55 /* SDLBeltStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLBeltStatus.h; path = public/SDLBeltStatus.h; sourceTree = "<group>"; };
+ 4ABB2B2B24F84EF20061BF55 /* SDLDriverDistractionCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDriverDistractionCapability.m; path = public/SDLDriverDistractionCapability.m; sourceTree = "<group>"; };
+ 4ABB2B2C24F84EF20061BF55 /* SDLChoice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLChoice.m; path = public/SDLChoice.m; sourceTree = "<group>"; };
+ 4ABB2B2D24F84EF20061BF55 /* SDLDateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDateTime.h; path = public/SDLDateTime.h; sourceTree = "<group>"; };
+ 4ABB2B2E24F84EF20061BF55 /* SDLButtonCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLButtonCapabilities.h; path = public/SDLButtonCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B2F24F84EF30061BF55 /* SDLDisplayCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDisplayCapabilities.h; path = public/SDLDisplayCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B3024F84EF30061BF55 /* SDLClusterModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLClusterModeStatus.m; path = public/SDLClusterModeStatus.m; sourceTree = "<group>"; };
+ 4ABB2B3124F84EF30061BF55 /* SDLClimateControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLClimateControlData.m; path = public/SDLClimateControlData.m; sourceTree = "<group>"; };
+ 4ABB2B3224F84EF30061BF55 /* SDLClusterModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLClusterModeStatus.h; path = public/SDLClusterModeStatus.h; sourceTree = "<group>"; };
+ 4ABB2B3324F84EF30061BF55 /* SDLDisplayCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDisplayCapability.h; path = public/SDLDisplayCapability.h; sourceTree = "<group>"; };
+ 4ABB2B3424F84EF40061BF55 /* SDLChoice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLChoice.h; path = public/SDLChoice.h; sourceTree = "<group>"; };
+ 4ABB2B3524F84EF40061BF55 /* SDLClimateControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLClimateControlCapabilities.m; path = public/SDLClimateControlCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B3624F84EF40061BF55 /* SDLClimateControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLClimateControlData.h; path = public/SDLClimateControlData.h; sourceTree = "<group>"; };
+ 4ABB2B3724F84EF40061BF55 /* SDLDriverDistractionCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDriverDistractionCapability.h; path = public/SDLDriverDistractionCapability.h; sourceTree = "<group>"; };
+ 4ABB2B3824F84EF40061BF55 /* SDLDisplayCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDisplayCapability.m; path = public/SDLDisplayCapability.m; sourceTree = "<group>"; };
+ 4ABB2B3924F84EF40061BF55 /* SDLDIDResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDIDResult.m; path = public/SDLDIDResult.m; sourceTree = "<group>"; };
+ 4ABB2B3A24F84EF50061BF55 /* SDLButtonCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLButtonCapabilities.m; path = public/SDLButtonCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B3B24F84EF50061BF55 /* SDLDeviceStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDeviceStatus.h; path = public/SDLDeviceStatus.h; sourceTree = "<group>"; };
+ 4ABB2B5A24F84FE30061BF55 /* SDLGPSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGPSData.h; path = public/SDLGPSData.h; sourceTree = "<group>"; };
+ 4ABB2B5B24F84FE30061BF55 /* SDLEmergencyEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEmergencyEvent.h; path = public/SDLEmergencyEvent.h; sourceTree = "<group>"; };
+ 4ABB2B5C24F84FE30061BF55 /* SDLGearStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGearStatus.h; path = public/SDLGearStatus.h; sourceTree = "<group>"; };
+ 4ABB2B5D24F84FE30061BF55 /* SDLEqualizerSettings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEqualizerSettings.m; path = public/SDLEqualizerSettings.m; sourceTree = "<group>"; };
+ 4ABB2B5E24F84FE30061BF55 /* SDLEqualizerSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLEqualizerSettings.h; path = public/SDLEqualizerSettings.h; sourceTree = "<group>"; };
+ 4ABB2B5F24F84FE40061BF55 /* SDLGearStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGearStatus.m; path = public/SDLGearStatus.m; sourceTree = "<group>"; };
+ 4ABB2B6024F84FE40061BF55 /* SDLGPSData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGPSData.m; path = public/SDLGPSData.m; sourceTree = "<group>"; };
+ 4ABB2B6124F84FE40061BF55 /* SDLEmergencyEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLEmergencyEvent.m; path = public/SDLEmergencyEvent.m; sourceTree = "<group>"; };
+ 4ABB2B6224F84FE40061BF55 /* SDLECallInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLECallInfo.m; path = public/SDLECallInfo.m; sourceTree = "<group>"; };
+ 4ABB2B6324F84FE40061BF55 /* SDLECallInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLECallInfo.h; path = public/SDLECallInfo.h; sourceTree = "<group>"; };
+ 4ABB2B6424F84FE50061BF55 /* SDLFuelRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFuelRange.h; path = public/SDLFuelRange.h; sourceTree = "<group>"; };
+ 4ABB2B6524F84FE50061BF55 /* SDLFuelRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFuelRange.m; path = public/SDLFuelRange.m; sourceTree = "<group>"; };
+ 4ABB2B7224F850470061BF55 /* SDLHapticRect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHapticRect.m; path = public/SDLHapticRect.m; sourceTree = "<group>"; };
+ 4ABB2B7324F850480061BF55 /* SDLHMIPermissions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHMIPermissions.m; path = public/SDLHMIPermissions.m; sourceTree = "<group>"; };
+ 4ABB2B7424F850480061BF55 /* SDLHapticRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHapticRect.h; path = public/SDLHapticRect.h; sourceTree = "<group>"; };
+ 4ABB2B7524F850480061BF55 /* SDLHMICapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHMICapabilities.m; path = public/SDLHMICapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B7624F850480061BF55 /* SDLHMISettingsControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHMISettingsControlData.m; path = public/SDLHMISettingsControlData.m; sourceTree = "<group>"; };
+ 4ABB2B7724F850480061BF55 /* SDLHMICapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHMICapabilities.h; path = public/SDLHMICapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B7824F850490061BF55 /* SDLHMISettingsControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHMISettingsControlCapabilities.h; path = public/SDLHMISettingsControlCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B7924F850490061BF55 /* SDLHeadLampStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHeadLampStatus.m; path = public/SDLHeadLampStatus.m; sourceTree = "<group>"; };
+ 4ABB2B7A24F850490061BF55 /* SDLHMIPermissions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHMIPermissions.h; path = public/SDLHMIPermissions.h; sourceTree = "<group>"; };
+ 4ABB2B7B24F850490061BF55 /* SDLGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGrid.h; path = public/SDLGrid.h; sourceTree = "<group>"; };
+ 4ABB2B7C24F850490061BF55 /* SDLHMISettingsControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHMISettingsControlCapabilities.m; path = public/SDLHMISettingsControlCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B7D24F8504A0061BF55 /* SDLHeadLampStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHeadLampStatus.h; path = public/SDLHeadLampStatus.h; sourceTree = "<group>"; };
+ 4ABB2B7E24F8504A0061BF55 /* SDLGrid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGrid.m; path = public/SDLGrid.m; sourceTree = "<group>"; };
+ 4ABB2B7F24F8504A0061BF55 /* SDLHMISettingsControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLHMISettingsControlData.h; path = public/SDLHMISettingsControlData.h; sourceTree = "<group>"; };
+ 4ABB2B8E24F850AB0061BF55 /* SDLLightControlCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLightControlCapabilities.m; path = public/SDLLightControlCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B8F24F850AB0061BF55 /* SDLLightControlCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLightControlCapabilities.h; path = public/SDLLightControlCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B9024F850AB0061BF55 /* SDLImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLImage.m; path = public/SDLImage.m; sourceTree = "<group>"; };
+ 4ABB2B9124F850AC0061BF55 /* SDLImageResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLImageResolution.m; path = public/SDLImageResolution.m; sourceTree = "<group>"; };
+ 4ABB2B9224F850AC0061BF55 /* SDLLightCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLightCapabilities.h; path = public/SDLLightCapabilities.h; sourceTree = "<group>"; };
+ 4ABB2B9324F850AC0061BF55 /* SDLLightControlData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLightControlData.h; path = public/SDLLightControlData.h; sourceTree = "<group>"; };
+ 4ABB2B9424F850AC0061BF55 /* SDLLightState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLightState.h; path = public/SDLLightState.h; sourceTree = "<group>"; };
+ 4ABB2B9524F850AC0061BF55 /* SDLImageField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLImageField.h; path = public/SDLImageField.h; sourceTree = "<group>"; };
+ 4ABB2B9624F850AD0061BF55 /* SDLLightCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLightCapabilities.m; path = public/SDLLightCapabilities.m; sourceTree = "<group>"; };
+ 4ABB2B9724F850AD0061BF55 /* SDLLightControlData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLightControlData.m; path = public/SDLLightControlData.m; sourceTree = "<group>"; };
+ 4ABB2B9824F850AD0061BF55 /* SDLImageField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLImageField.m; path = public/SDLImageField.m; sourceTree = "<group>"; };
+ 4ABB2B9924F850AD0061BF55 /* SDLImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLImage.h; path = public/SDLImage.h; sourceTree = "<group>"; };
+ 4ABB2B9A24F850AD0061BF55 /* SDLLightState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLightState.m; path = public/SDLLightState.m; sourceTree = "<group>"; };
+ 4ABB2B9B24F850AD0061BF55 /* SDLImageResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLImageResolution.h; path = public/SDLImageResolution.h; sourceTree = "<group>"; };
5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityTypeSpec.m; sourceTree = "<group>"; };
5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationCapabilitySpec.m; sourceTree = "<group>"; };
5D0A9F941F15585B00CC80DD /* SDLPhoneCapabilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPhoneCapabilitySpec.m; sourceTree = "<group>"; };
5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilitySpec.m; sourceTree = "<group>"; };
5D0A9F991F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapabilitiesSpec.m; sourceTree = "<group>"; };
5D0A9F9B1F1565EB00CC80DD /* SDLGetSystemCapabilityResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapabilityResponseSpec.m; sourceTree = "<group>"; };
- 5D0C29FA20D93D8C008B56CD /* SDLVideoStreamingState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLVideoStreamingState.h; sourceTree = "<group>"; };
- 5D0C29FB20D93D8C008B56CD /* SDLVideoStreamingState.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingState.m; sourceTree = "<group>"; };
- 5D0C29FE20D9479B008B56CD /* SDLStreamingVideoLifecycleManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStreamingVideoLifecycleManager.h; sourceTree = "<group>"; };
- 5D0C29FF20D9479B008B56CD /* SDLStreamingVideoLifecycleManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingVideoLifecycleManager.m; sourceTree = "<group>"; };
- 5D0C2A0220D947AB008B56CD /* SDLStreamingAudioLifecycleManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStreamingAudioLifecycleManager.h; sourceTree = "<group>"; };
- 5D0C2A0320D947AB008B56CD /* SDLStreamingAudioLifecycleManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingAudioLifecycleManager.m; sourceTree = "<group>"; };
5D1654551D3E754F00554D93 /* SDLLifecycleManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleManagerSpec.m; path = DevAPISpecs/SDLLifecycleManagerSpec.m; sourceTree = "<group>"; };
- 5D1654581D3E7A1600554D93 /* SDLLifecycleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleManager.h; sourceTree = "<group>"; };
- 5D1654591D3E7A1600554D93 /* SDLLifecycleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleManager.m; sourceTree = "<group>"; };
5D1665A01CF5D5DA00CC4CA1 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = SOURCE_ROOT; };
- 5D1665A11CF5D5DA00CC4CA1 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .travis.yml; sourceTree = SOURCE_ROOT; };
5D1665A21CF5D5DA00CC4CA1 /* Cartfile.private */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cartfile.private; sourceTree = SOURCE_ROOT; };
5D1665A31CF5D5DA00CC4CA1 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = SOURCE_ROOT; };
5D1665A41CF5D5DA00CC4CA1 /* DEPENDENCIES.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = DEPENDENCIES.md; sourceTree = SOURCE_ROOT; };
5D1665A51CF5D5DA00CC4CA1 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = SOURCE_ROOT; };
5D1665A61CF5D5DA00CC4CA1 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; };
5D1665A71CF5D5DA00CC4CA1 /* SmartDeviceLink-iOS.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = "SmartDeviceLink-iOS.podspec"; sourceTree = SOURCE_ROOT; };
- 5D1665C21CF8CA2700CC4CA1 /* SDLListFilesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLListFilesOperation.h; sourceTree = "<group>"; };
- 5D1665C31CF8CA2700CC4CA1 /* SDLListFilesOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLListFilesOperation.m; sourceTree = "<group>"; };
- 5D1665C61CF8CA3D00CC4CA1 /* SDLPermissionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPermissionFilter.h; sourceTree = "<group>"; };
- 5D1665C71CF8CA3D00CC4CA1 /* SDLPermissionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionFilter.m; sourceTree = "<group>"; };
- 5D1665CA1CF8CA6700CC4CA1 /* NSNumber+NumberType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+NumberType.h"; sourceTree = "<group>"; };
- 5D1665CC1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPermissionConstants.h; sourceTree = "<group>"; };
5D1FF28B213044F9000EB9B4 /* AlertManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AlertManager.h; path = "Example Apps/Example ObjC/AlertManager.h"; sourceTree = SOURCE_ROOT; };
5D1FF28C213044F9000EB9B4 /* AlertManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AlertManager.m; path = "Example Apps/Example ObjC/AlertManager.m"; sourceTree = SOURCE_ROOT; };
5D1FF28E21304513000EB9B4 /* MenuManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MenuManager.h; path = "Example Apps/Example ObjC/MenuManager.h"; sourceTree = SOURCE_ROOT; };
@@ -2306,25 +3249,6 @@
5D1FF2F6213047C1000EB9B4 /* SmartDeviceLink-Example-Swift-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SmartDeviceLink-Example-Swift-Bridging-Header.h"; path = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h"; sourceTree = SOURCE_ROOT; };
5D1FF2F7213047C1000EB9B4 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = "Example Apps/Example Swift/AppDelegate.swift"; sourceTree = SOURCE_ROOT; };
5D1FF2F92130480C000EB9B4 /* SmartDeviceLink-Example-Swift-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "SmartDeviceLink-Example-Swift-Info.plist"; path = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist"; sourceTree = SOURCE_ROOT; };
- 5D293AFC1FE078A9000CBD7E /* SDLCarWindowViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCarWindowViewController.h; sourceTree = "<group>"; };
- 5D293AFD1FE078A9000CBD7E /* SDLCarWindowViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCarWindowViewController.m; sourceTree = "<group>"; };
- 5D2F58071D0717D5001085CE /* SDLManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLManagerDelegate.h; sourceTree = "<group>"; };
- 5D339CE8207C066E000CC364 /* SDLMenuCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMenuCell.h; sourceTree = "<group>"; };
- 5D339CE9207C066E000CC364 /* SDLMenuCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuCell.m; sourceTree = "<group>"; };
- 5D339CED207C08BA000CC364 /* SDLVoiceCommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLVoiceCommand.h; sourceTree = "<group>"; };
- 5D339CEE207C08BA000CC364 /* SDLVoiceCommand.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLVoiceCommand.m; sourceTree = "<group>"; };
- 5D339CF1207C0ACE000CC364 /* SDLMenuManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMenuManager.h; sourceTree = "<group>"; };
- 5D339CF2207C0ACE000CC364 /* SDLMenuManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuManager.m; sourceTree = "<group>"; };
- 5D3E420820EAAD6500D8C622 /* SDLTPMS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTPMS.h; sourceTree = "<group>"; };
- 5D3E420920EAAD6500D8C622 /* SDLTPMS.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTPMS.m; sourceTree = "<group>"; };
- 5D3E48731D6F3B330000BFEF /* SDLAsynchronousOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAsynchronousOperation.h; sourceTree = "<group>"; };
- 5D3E48741D6F3B330000BFEF /* SDLAsynchronousOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAsynchronousOperation.m; sourceTree = "<group>"; };
- 5D3E48791D6F888E0000BFEF /* SDLRPCResponseNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCResponseNotification.h; sourceTree = "<group>"; };
- 5D3E487A1D6F888E0000BFEF /* SDLRPCResponseNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCResponseNotification.m; sourceTree = "<group>"; };
- 5D3E487D1D6F88A30000BFEF /* SDLRPCNotificationNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCNotificationNotification.h; sourceTree = "<group>"; };
- 5D3E487E1D6F88A30000BFEF /* SDLRPCNotificationNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCNotificationNotification.m; sourceTree = "<group>"; };
- 5D3E48C91D7722FE0000BFEF /* NSBundle+SDLBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+SDLBundle.h"; sourceTree = "<group>"; };
- 5D3E48CA1D7722FE0000BFEF /* NSBundle+SDLBundle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+SDLBundle.m"; sourceTree = "<group>"; };
5D4019AF1A76EC350006B0C2 /* SDL Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SDL Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
5D4346461E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogFileModuleSpec.m; path = LoggingSpecs/SDLLogFileModuleSpec.m; sourceTree = "<group>"; };
5D43465A1E6F154400B639C6 /* SDLLogConfigurationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLogConfigurationSpec.m; path = LoggingSpecs/SDLLogConfigurationSpec.m; sourceTree = "<group>"; };
@@ -2336,28 +3260,9 @@
5D4346711E6F617D00B639C6 /* TestLogTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestLogTarget.h; path = LoggingSpecs/TestLogTarget.h; sourceTree = "<group>"; };
5D4346721E6F617D00B639C6 /* TestLogTarget.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TestLogTarget.m; path = LoggingSpecs/TestLogTarget.m; sourceTree = "<group>"; };
5D4346851E771B5700B639C6 /* SDLLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SDLLog.swift; sourceTree = "<group>"; };
- 5D4631031F2120A30092EFDC /* SDLControlFramePayloadType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadType.h; sourceTree = "<group>"; };
- 5D4631061F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadRPCStartServiceAck.h; sourceTree = "<group>"; };
- 5D4631071F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadRPCStartServiceAck.m; sourceTree = "<group>"; };
- 5D46310E1F2135850092EFDC /* SDLControlFramePayloadConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadConstants.h; sourceTree = "<group>"; };
- 5D46310F1F2135850092EFDC /* SDLControlFramePayloadConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadConstants.m; sourceTree = "<group>"; };
- 5D4631121F2136B60092EFDC /* SDLControlFramePayloadNak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadNak.h; sourceTree = "<group>"; };
- 5D4631131F2136B60092EFDC /* SDLControlFramePayloadNak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadNak.m; sourceTree = "<group>"; };
- 5D4D67AA1D2ED37A00468B4A /* SDLNotificationDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLNotificationDispatcher.h; sourceTree = "<group>"; };
- 5D4D67AB1D2ED37A00468B4A /* SDLNotificationDispatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNotificationDispatcher.m; sourceTree = "<group>"; };
- 5D4D67AE1D2FE2F900468B4A /* SDLResponseDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResponseDispatcher.h; sourceTree = "<group>"; };
- 5D4D67AF1D2FE2F900468B4A /* SDLResponseDispatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResponseDispatcher.m; sourceTree = "<group>"; };
- 5D4D67B21D30161600468B4A /* SDLLockScreenManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenManager.h; sourceTree = "<group>"; };
- 5D4D67B31D30161600468B4A /* SDLLockScreenManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenManager.m; sourceTree = "<group>"; };
- 5D535DC31B72473800CF7760 /* SDLGlobals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGlobals.h; sourceTree = "<group>"; };
- 5D535DC41B72473800CF7760 /* SDLGlobals.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGlobals.m; sourceTree = "<group>"; };
- 5D53C46B1B7A99B9003526EA /* SDLStreamingMediaManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStreamingMediaManager.h; sourceTree = "<group>"; };
- 5D53C46C1B7A99B9003526EA /* SDLStreamingMediaManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingMediaManager.m; sourceTree = "<group>"; };
5D59DD461B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenStatusManagerSpec.m; path = ProxySpecs/SDLLockScreenStatusManagerSpec.m; sourceTree = "<group>"; };
5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSnapshotTestCase.framework; path = sdl_ios/Carthage/Build/iOS/FBSnapshotTestCase.framework; sourceTree = "<group>"; };
5D5DBF0A1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenViewControllerSnapshotTests.m; path = DevAPISpecs/SDLLockScreenViewControllerSnapshotTests.m; sourceTree = "<group>"; };
- 5D6008881BE3ED540094A505 /* SDLStateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStateMachine.h; sourceTree = "<group>"; };
- 5D6008891BE3ED540094A505 /* SDLStateMachine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStateMachine.m; sourceTree = "<group>"; };
5D6035D0202CD46200A429C9 /* SDLSpecUtilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SDLSpecUtilities.h; path = TestUtilities/SDLSpecUtilities.h; sourceTree = "<group>"; };
5D6035D1202CD46200A429C9 /* SDLSpecUtilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSpecUtilities.m; path = TestUtilities/SDLSpecUtilities.m; sourceTree = "<group>"; };
5D6035D3202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TestMultipleRequestsConnectionManager.h; path = TestUtilities/TestMultipleRequestsConnectionManager.h; sourceTree = "<group>"; };
@@ -2367,7 +3272,6 @@
5D60DF23202B7A80001EDA01 /* SDLAsynchronousRPCRequestOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLAsynchronousRPCRequestOperationSpec.m; path = DevAPISpecs/SDLAsynchronousRPCRequestOperationSpec.m; sourceTree = "<group>"; };
5D60DF25202B7A97001EDA01 /* SDLSequentialRPCRequestOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSequentialRPCRequestOperationSpec.m; path = DevAPISpecs/SDLSequentialRPCRequestOperationSpec.m; sourceTree = "<group>"; };
5D616B471D552F7A00553F6B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/SDLLockScreen.storyboard; sourceTree = "<group>"; };
- 5D616B511D59044400553F6B /* SDLErrorConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLErrorConstants.h; sourceTree = "<group>"; };
5D616B561D5A233100553F6B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/SDLLockScreen.strings; sourceTree = "<group>"; };
5D616B571D5A23C500553F6B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/SDLLockScreen.strings; sourceTree = "<group>"; };
5D616B581D5A23CC00553F6B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/SDLLockScreen.strings; sourceTree = "<group>"; };
@@ -2379,542 +3283,22 @@
5D61FA201A84237100846EE7 /* SmartDeviceLink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SmartDeviceLink.h; sourceTree = "<group>"; wrapsLines = 0; };
5D61FA261A84237100846EE7 /* SmartDeviceLinkTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SmartDeviceLinkTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
5D61FA2E1A84237100846EE7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 5D61FA3E1A84238A00846EE7 /* SDLTransportType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTransportType.h; sourceTree = "<group>"; };
- 5D61FA401A84238A00846EE7 /* SDLAddCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddCommand.h; sourceTree = "<group>"; };
- 5D61FA411A84238A00846EE7 /* SDLAddCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddCommand.m; sourceTree = "<group>"; };
- 5D61FA421A84238A00846EE7 /* SDLAddCommandResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddCommandResponse.h; sourceTree = "<group>"; };
- 5D61FA431A84238A00846EE7 /* SDLAddCommandResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddCommandResponse.m; sourceTree = "<group>"; };
- 5D61FA441A84238A00846EE7 /* SDLAddSubMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddSubMenu.h; sourceTree = "<group>"; };
- 5D61FA451A84238A00846EE7 /* SDLAddSubMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddSubMenu.m; sourceTree = "<group>"; };
- 5D61FA461A84238A00846EE7 /* SDLAddSubMenuResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddSubMenuResponse.h; sourceTree = "<group>"; };
- 5D61FA471A84238A00846EE7 /* SDLAddSubMenuResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddSubMenuResponse.m; sourceTree = "<group>"; };
- 5D61FA481A84238A00846EE7 /* SDLAirbagStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAirbagStatus.h; sourceTree = "<group>"; };
- 5D61FA491A84238A00846EE7 /* SDLAirbagStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAirbagStatus.m; sourceTree = "<group>"; };
- 5D61FA4A1A84238A00846EE7 /* SDLAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAlert.h; sourceTree = "<group>"; };
- 5D61FA4B1A84238A00846EE7 /* SDLAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAlert.m; sourceTree = "<group>"; };
- 5D61FA4C1A84238A00846EE7 /* SDLAlertManeuver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAlertManeuver.h; sourceTree = "<group>"; };
- 5D61FA4D1A84238A00846EE7 /* SDLAlertManeuver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAlertManeuver.m; sourceTree = "<group>"; };
- 5D61FA4E1A84238A00846EE7 /* SDLAlertManeuverResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAlertManeuverResponse.h; sourceTree = "<group>"; };
- 5D61FA4F1A84238A00846EE7 /* SDLAlertManeuverResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAlertManeuverResponse.m; sourceTree = "<group>"; };
- 5D61FA501A84238A00846EE7 /* SDLAlertResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAlertResponse.h; sourceTree = "<group>"; };
- 5D61FA511A84238A00846EE7 /* SDLAlertResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAlertResponse.m; sourceTree = "<group>"; };
- 5D61FA521A84238A00846EE7 /* SDLAmbientLightStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAmbientLightStatus.h; sourceTree = "<group>"; };
- 5D61FA531A84238A00846EE7 /* SDLAmbientLightStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAmbientLightStatus.m; sourceTree = "<group>"; };
- 5D61FA541A84238A00846EE7 /* SDLAppHMIType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAppHMIType.h; sourceTree = "<group>"; };
- 5D61FA551A84238A00846EE7 /* SDLAppHMIType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppHMIType.m; sourceTree = "<group>"; };
- 5D61FA561A84238A00846EE7 /* SDLAppInterfaceUnregisteredReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAppInterfaceUnregisteredReason.h; sourceTree = "<group>"; };
- 5D61FA571A84238A00846EE7 /* SDLAppInterfaceUnregisteredReason.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppInterfaceUnregisteredReason.m; sourceTree = "<group>"; };
- 5D61FA581A84238A00846EE7 /* SDLAudioPassThruCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAudioPassThruCapabilities.h; sourceTree = "<group>"; };
- 5D61FA591A84238A00846EE7 /* SDLAudioPassThruCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAudioPassThruCapabilities.m; sourceTree = "<group>"; };
- 5D61FA5A1A84238A00846EE7 /* SDLAudioStreamingState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAudioStreamingState.h; sourceTree = "<group>"; };
- 5D61FA5B1A84238A00846EE7 /* SDLAudioStreamingState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAudioStreamingState.m; sourceTree = "<group>"; };
- 5D61FA5C1A84238A00846EE7 /* SDLAudioType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAudioType.h; sourceTree = "<group>"; };
- 5D61FA5D1A84238A00846EE7 /* SDLAudioType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAudioType.m; sourceTree = "<group>"; };
- 5D61FA5E1A84238A00846EE7 /* SDLBeltStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLBeltStatus.h; sourceTree = "<group>"; };
- 5D61FA5F1A84238A00846EE7 /* SDLBeltStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLBeltStatus.m; sourceTree = "<group>"; };
- 5D61FA601A84238A00846EE7 /* SDLBitsPerSample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLBitsPerSample.h; sourceTree = "<group>"; };
- 5D61FA611A84238A00846EE7 /* SDLBitsPerSample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLBitsPerSample.m; sourceTree = "<group>"; };
- 5D61FA621A84238A00846EE7 /* SDLBodyInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLBodyInformation.h; sourceTree = "<group>"; };
- 5D61FA631A84238A00846EE7 /* SDLBodyInformation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLBodyInformation.m; sourceTree = "<group>"; };
- 5D61FA641A84238A00846EE7 /* SDLButtonCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonCapabilities.h; sourceTree = "<group>"; };
- 5D61FA651A84238A00846EE7 /* SDLButtonCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonCapabilities.m; sourceTree = "<group>"; };
- 5D61FA661A84238A00846EE7 /* SDLButtonEventMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonEventMode.h; sourceTree = "<group>"; };
- 5D61FA671A84238A00846EE7 /* SDLButtonEventMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonEventMode.m; sourceTree = "<group>"; };
- 5D61FA681A84238A00846EE7 /* SDLButtonName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonName.h; sourceTree = "<group>"; };
- 5D61FA691A84238A00846EE7 /* SDLButtonName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonName.m; sourceTree = "<group>"; };
- 5D61FA6A1A84238A00846EE7 /* SDLButtonPressMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonPressMode.h; sourceTree = "<group>"; };
- 5D61FA6B1A84238A00846EE7 /* SDLButtonPressMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonPressMode.m; sourceTree = "<group>"; };
- 5D61FA6C1A84238A00846EE7 /* SDLCarModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCarModeStatus.h; sourceTree = "<group>"; };
- 5D61FA6D1A84238A00846EE7 /* SDLCarModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCarModeStatus.m; sourceTree = "<group>"; };
- 5D61FA6E1A84238A00846EE7 /* SDLChangeRegistration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLChangeRegistration.h; sourceTree = "<group>"; };
- 5D61FA6F1A84238A00846EE7 /* SDLChangeRegistration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLChangeRegistration.m; sourceTree = "<group>"; };
- 5D61FA701A84238A00846EE7 /* SDLChangeRegistrationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLChangeRegistrationResponse.h; sourceTree = "<group>"; };
- 5D61FA711A84238A00846EE7 /* SDLChangeRegistrationResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLChangeRegistrationResponse.m; sourceTree = "<group>"; };
- 5D61FA721A84238A00846EE7 /* SDLCharacterSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCharacterSet.h; sourceTree = "<group>"; };
- 5D61FA731A84238A00846EE7 /* SDLCharacterSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCharacterSet.m; sourceTree = "<group>"; };
- 5D61FA741A84238A00846EE7 /* SDLChoice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLChoice.h; sourceTree = "<group>"; };
- 5D61FA751A84238A00846EE7 /* SDLChoice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLChoice.m; sourceTree = "<group>"; };
- 5D61FA761A84238A00846EE7 /* SDLClusterModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLClusterModeStatus.h; sourceTree = "<group>"; };
- 5D61FA771A84238A00846EE7 /* SDLClusterModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLClusterModeStatus.m; sourceTree = "<group>"; };
- 5D61FA781A84238A00846EE7 /* SDLCompassDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCompassDirection.h; sourceTree = "<group>"; };
- 5D61FA791A84238A00846EE7 /* SDLCompassDirection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCompassDirection.m; sourceTree = "<group>"; };
- 5D61FA7A1A84238A00846EE7 /* SDLComponentVolumeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLComponentVolumeStatus.h; sourceTree = "<group>"; };
- 5D61FA7B1A84238A00846EE7 /* SDLComponentVolumeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLComponentVolumeStatus.m; sourceTree = "<group>"; };
- 5D61FA7E1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCreateInteractionChoiceSet.h; sourceTree = "<group>"; };
- 5D61FA7F1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCreateInteractionChoiceSet.m; sourceTree = "<group>"; };
- 5D61FA801A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCreateInteractionChoiceSetResponse.h; sourceTree = "<group>"; };
- 5D61FA811A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCreateInteractionChoiceSetResponse.m; sourceTree = "<group>"; };
- 5D61FA851A84238A00846EE7 /* SDLDeleteCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteCommand.h; sourceTree = "<group>"; };
- 5D61FA861A84238A00846EE7 /* SDLDeleteCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteCommand.m; sourceTree = "<group>"; };
- 5D61FA871A84238A00846EE7 /* SDLDeleteCommandResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteCommandResponse.h; sourceTree = "<group>"; };
- 5D61FA881A84238A00846EE7 /* SDLDeleteCommandResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteCommandResponse.m; sourceTree = "<group>"; };
- 5D61FA891A84238A00846EE7 /* SDLDeleteFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteFile.h; sourceTree = "<group>"; };
- 5D61FA8A1A84238A00846EE7 /* SDLDeleteFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteFile.m; sourceTree = "<group>"; };
- 5D61FA8B1A84238A00846EE7 /* SDLDeleteFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteFileResponse.h; sourceTree = "<group>"; };
- 5D61FA8C1A84238A00846EE7 /* SDLDeleteFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteFileResponse.m; sourceTree = "<group>"; };
- 5D61FA8D1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteInteractionChoiceSet.h; sourceTree = "<group>"; };
- 5D61FA8E1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteInteractionChoiceSet.m; sourceTree = "<group>"; };
- 5D61FA8F1A84238A00846EE7 /* SDLDeleteInteractionChoiceSetResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteInteractionChoiceSetResponse.h; sourceTree = "<group>"; };
- 5D61FA901A84238A00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteInteractionChoiceSetResponse.m; sourceTree = "<group>"; };
- 5D61FA911A84238A00846EE7 /* SDLDeleteSubMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteSubMenu.h; sourceTree = "<group>"; };
- 5D61FA921A84238A00846EE7 /* SDLDeleteSubMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteSubMenu.m; sourceTree = "<group>"; };
- 5D61FA931A84238A00846EE7 /* SDLDeleteSubMenuResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteSubMenuResponse.h; sourceTree = "<group>"; };
- 5D61FA941A84238A00846EE7 /* SDLDeleteSubMenuResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteSubMenuResponse.m; sourceTree = "<group>"; };
- 5D61FA951A84238A00846EE7 /* SDLDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeviceInfo.h; sourceTree = "<group>"; };
- 5D61FA961A84238A00846EE7 /* SDLDeviceInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeviceInfo.m; sourceTree = "<group>"; };
- 5D61FA971A84238A00846EE7 /* SDLDeviceLevelStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeviceLevelStatus.h; sourceTree = "<group>"; };
- 5D61FA981A84238A00846EE7 /* SDLDeviceLevelStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeviceLevelStatus.m; sourceTree = "<group>"; };
- 5D61FA991A84238A00846EE7 /* SDLDeviceStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeviceStatus.h; sourceTree = "<group>"; };
- 5D61FA9A1A84238A00846EE7 /* SDLDeviceStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeviceStatus.m; sourceTree = "<group>"; };
- 5D61FA9B1A84238A00846EE7 /* SDLDiagnosticMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDiagnosticMessage.h; sourceTree = "<group>"; };
- 5D61FA9C1A84238A00846EE7 /* SDLDiagnosticMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDiagnosticMessage.m; sourceTree = "<group>"; };
- 5D61FA9D1A84238A00846EE7 /* SDLDiagnosticMessageResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDiagnosticMessageResponse.h; sourceTree = "<group>"; };
- 5D61FA9E1A84238A00846EE7 /* SDLDiagnosticMessageResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDiagnosticMessageResponse.m; sourceTree = "<group>"; };
- 5D61FA9F1A84238A00846EE7 /* SDLDIDResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDIDResult.h; sourceTree = "<group>"; };
- 5D61FAA01A84238A00846EE7 /* SDLDIDResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDIDResult.m; sourceTree = "<group>"; };
- 5D61FAA11A84238A00846EE7 /* SDLDimension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDimension.h; sourceTree = "<group>"; };
- 5D61FAA21A84238A00846EE7 /* SDLDimension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDimension.m; sourceTree = "<group>"; };
- 5D61FAA31A84238A00846EE7 /* SDLDisplayCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDisplayCapabilities.h; sourceTree = "<group>"; };
- 5D61FAA41A84238A00846EE7 /* SDLDisplayCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayCapabilities.m; sourceTree = "<group>"; };
- 5D61FAA51A84238A00846EE7 /* SDLDisplayType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDisplayType.h; sourceTree = "<group>"; };
- 5D61FAA61A84238A00846EE7 /* SDLDisplayType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayType.m; sourceTree = "<group>"; };
- 5D61FAA71A84238A00846EE7 /* SDLDriverDistractionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDriverDistractionState.h; sourceTree = "<group>"; };
- 5D61FAA81A84238A00846EE7 /* SDLDriverDistractionState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDriverDistractionState.m; sourceTree = "<group>"; };
- 5D61FAA91A84238A00846EE7 /* SDLECallConfirmationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLECallConfirmationStatus.h; sourceTree = "<group>"; };
- 5D61FAAA1A84238A00846EE7 /* SDLECallConfirmationStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLECallConfirmationStatus.m; sourceTree = "<group>"; };
- 5D61FAAB1A84238A00846EE7 /* SDLECallInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLECallInfo.h; sourceTree = "<group>"; };
- 5D61FAAC1A84238A00846EE7 /* SDLECallInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLECallInfo.m; sourceTree = "<group>"; };
- 5D61FAAD1A84238A00846EE7 /* SDLEmergencyEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEmergencyEvent.h; sourceTree = "<group>"; };
- 5D61FAAE1A84238A00846EE7 /* SDLEmergencyEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEmergencyEvent.m; sourceTree = "<group>"; };
- 5D61FAAF1A84238A00846EE7 /* SDLEmergencyEventType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEmergencyEventType.h; sourceTree = "<group>"; };
- 5D61FAB01A84238A00846EE7 /* SDLEmergencyEventType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEmergencyEventType.m; sourceTree = "<group>"; };
- 5D61FAB11A84238A00846EE7 /* SDLEncodedSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEncodedSyncPData.h; sourceTree = "<group>"; };
- 5D61FAB21A84238A00846EE7 /* SDLEncodedSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEncodedSyncPData.m; sourceTree = "<group>"; };
- 5D61FAB31A84238A00846EE7 /* SDLEncodedSyncPDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEncodedSyncPDataResponse.h; sourceTree = "<group>"; };
- 5D61FAB41A84238A00846EE7 /* SDLEncodedSyncPDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEncodedSyncPDataResponse.m; sourceTree = "<group>"; };
- 5D61FAB61A84238A00846EE7 /* SDLEndAudioPassThru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEndAudioPassThru.h; sourceTree = "<group>"; };
- 5D61FAB71A84238A00846EE7 /* SDLEndAudioPassThru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEndAudioPassThru.m; sourceTree = "<group>"; };
- 5D61FAB81A84238A00846EE7 /* SDLEndAudioPassThruResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEndAudioPassThruResponse.h; sourceTree = "<group>"; };
- 5D61FAB91A84238A00846EE7 /* SDLEndAudioPassThruResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEndAudioPassThruResponse.m; sourceTree = "<group>"; };
- 5D61FABA1A84238A00846EE7 /* SDLEnum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEnum.h; sourceTree = "<group>"; };
- 5D61FABC1A84238A00846EE7 /* SDLFileType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFileType.h; sourceTree = "<group>"; };
- 5D61FABD1A84238A00846EE7 /* SDLFileType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFileType.m; sourceTree = "<group>"; };
- 5D61FABE1A84238A00846EE7 /* SDLFuelCutoffStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFuelCutoffStatus.h; sourceTree = "<group>"; };
- 5D61FABF1A84238A00846EE7 /* SDLFuelCutoffStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFuelCutoffStatus.m; sourceTree = "<group>"; };
- 5D61FAC01A84238A00846EE7 /* SDLFunctionID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFunctionID.h; sourceTree = "<group>"; };
- 5D61FAC11A84238A00846EE7 /* SDLFunctionID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFunctionID.m; sourceTree = "<group>"; };
- 5D61FAC21A84238A00846EE7 /* SDLGenericResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGenericResponse.h; sourceTree = "<group>"; };
- 5D61FAC31A84238A00846EE7 /* SDLGenericResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGenericResponse.m; sourceTree = "<group>"; };
- 5D61FAC41A84238A00846EE7 /* SDLGetDTCs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetDTCs.h; sourceTree = "<group>"; };
- 5D61FAC51A84238A00846EE7 /* SDLGetDTCs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetDTCs.m; sourceTree = "<group>"; };
- 5D61FAC61A84238A00846EE7 /* SDLGetDTCsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetDTCsResponse.h; sourceTree = "<group>"; };
- 5D61FAC71A84238A00846EE7 /* SDLGetDTCsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetDTCsResponse.m; sourceTree = "<group>"; };
- 5D61FAC81A84238A00846EE7 /* SDLGetVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetVehicleData.h; sourceTree = "<group>"; };
- 5D61FAC91A84238A00846EE7 /* SDLGetVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetVehicleData.m; sourceTree = "<group>"; };
- 5D61FACA1A84238A00846EE7 /* SDLGetVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetVehicleDataResponse.h; sourceTree = "<group>"; };
- 5D61FACB1A84238A00846EE7 /* SDLGetVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetVehicleDataResponse.m; sourceTree = "<group>"; };
- 5D61FACC1A84238A00846EE7 /* SDLGlobalProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGlobalProperty.h; sourceTree = "<group>"; };
- 5D61FACD1A84238A00846EE7 /* SDLGlobalProperty.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGlobalProperty.m; sourceTree = "<group>"; };
- 5D61FACE1A84238A00846EE7 /* SDLGPSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGPSData.h; sourceTree = "<group>"; };
- 5D61FACF1A84238A00846EE7 /* SDLGPSData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGPSData.m; sourceTree = "<group>"; };
- 5D61FAD01A84238A00846EE7 /* SDLHeadLampStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHeadLampStatus.h; sourceTree = "<group>"; };
- 5D61FAD11A84238A00846EE7 /* SDLHeadLampStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHeadLampStatus.m; sourceTree = "<group>"; };
- 5D61FAD21A84238A00846EE7 /* SDLHexUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHexUtility.h; sourceTree = "<group>"; };
- 5D61FAD31A84238A00846EE7 /* SDLHexUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHexUtility.m; sourceTree = "<group>"; };
- 5D61FAD41A84238A00846EE7 /* SDLHMILevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHMILevel.h; sourceTree = "<group>"; };
- 5D61FAD51A84238A00846EE7 /* SDLHMILevel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHMILevel.m; sourceTree = "<group>"; };
- 5D61FAD61A84238A00846EE7 /* SDLHMIPermissions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHMIPermissions.h; sourceTree = "<group>"; };
- 5D61FAD71A84238A00846EE7 /* SDLHMIPermissions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHMIPermissions.m; sourceTree = "<group>"; };
- 5D61FAD81A84238A00846EE7 /* SDLHMIZoneCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHMIZoneCapabilities.h; sourceTree = "<group>"; };
- 5D61FAD91A84238A00846EE7 /* SDLHMIZoneCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHMIZoneCapabilities.m; sourceTree = "<group>"; };
- 5D61FADA1A84238A00846EE7 /* SDLIAPTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIAPTransport.h; sourceTree = "<group>"; };
- 5D61FADB1A84238A00846EE7 /* SDLIAPTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLIAPTransport.m; sourceTree = "<group>"; };
- 5D61FADC1A84238A00846EE7 /* SDLIgnitionStableStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIgnitionStableStatus.h; sourceTree = "<group>"; };
- 5D61FADD1A84238A00846EE7 /* SDLIgnitionStableStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLIgnitionStableStatus.m; sourceTree = "<group>"; };
- 5D61FADE1A84238A00846EE7 /* SDLIgnitionStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIgnitionStatus.h; sourceTree = "<group>"; };
- 5D61FADF1A84238A00846EE7 /* SDLIgnitionStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLIgnitionStatus.m; sourceTree = "<group>"; };
- 5D61FAE01A84238A00846EE7 /* SDLImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLImage.h; sourceTree = "<group>"; };
- 5D61FAE11A84238A00846EE7 /* SDLImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLImage.m; sourceTree = "<group>"; };
- 5D61FAE21A84238A00846EE7 /* SDLImageField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLImageField.h; sourceTree = "<group>"; };
- 5D61FAE31A84238A00846EE7 /* SDLImageField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLImageField.m; sourceTree = "<group>"; };
- 5D61FAE41A84238A00846EE7 /* SDLImageFieldName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLImageFieldName.h; sourceTree = "<group>"; };
- 5D61FAE51A84238A00846EE7 /* SDLImageFieldName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLImageFieldName.m; sourceTree = "<group>"; };
- 5D61FAE61A84238A00846EE7 /* SDLImageResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLImageResolution.h; sourceTree = "<group>"; };
- 5D61FAE71A84238A00846EE7 /* SDLImageResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLImageResolution.m; sourceTree = "<group>"; };
- 5D61FAE81A84238A00846EE7 /* SDLImageType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLImageType.h; sourceTree = "<group>"; };
- 5D61FAE91A84238A00846EE7 /* SDLImageType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLImageType.m; sourceTree = "<group>"; };
- 5D61FAEA1A84238A00846EE7 /* SDLInteractionMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLInteractionMode.h; sourceTree = "<group>"; };
- 5D61FAEB1A84238A00846EE7 /* SDLInteractionMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLInteractionMode.m; sourceTree = "<group>"; };
- 5D61FAF31A84238A00846EE7 /* SDLKeyboardEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLKeyboardEvent.h; sourceTree = "<group>"; };
- 5D61FAF41A84238A00846EE7 /* SDLKeyboardEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLKeyboardEvent.m; sourceTree = "<group>"; };
- 5D61FAF51A84238A00846EE7 /* SDLKeyboardLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLKeyboardLayout.h; sourceTree = "<group>"; };
- 5D61FAF61A84238A00846EE7 /* SDLKeyboardLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLKeyboardLayout.m; sourceTree = "<group>"; };
- 5D61FAF71A84238A00846EE7 /* SDLKeyboardProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLKeyboardProperties.h; sourceTree = "<group>"; };
- 5D61FAF81A84238A00846EE7 /* SDLKeyboardProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLKeyboardProperties.m; sourceTree = "<group>"; };
- 5D61FAF91A84238A00846EE7 /* SDLKeypressMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLKeypressMode.h; sourceTree = "<group>"; };
- 5D61FAFA1A84238A00846EE7 /* SDLKeypressMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLKeypressMode.m; sourceTree = "<group>"; };
- 5D61FAFB1A84238A00846EE7 /* SDLLanguage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLanguage.h; sourceTree = "<group>"; };
- 5D61FAFC1A84238A00846EE7 /* SDLLanguage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLanguage.m; sourceTree = "<group>"; };
- 5D61FAFD1A84238A00846EE7 /* SDLLayoutMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLayoutMode.h; sourceTree = "<group>"; };
- 5D61FAFE1A84238A00846EE7 /* SDLLayoutMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLayoutMode.m; sourceTree = "<group>"; };
- 5D61FAFF1A84238A00846EE7 /* SDLListFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLListFiles.h; sourceTree = "<group>"; };
- 5D61FB001A84238A00846EE7 /* SDLListFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLListFiles.m; sourceTree = "<group>"; };
- 5D61FB011A84238A00846EE7 /* SDLListFilesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLListFilesResponse.h; sourceTree = "<group>"; };
- 5D61FB021A84238A00846EE7 /* SDLListFilesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLListFilesResponse.m; sourceTree = "<group>"; };
- 5D61FB031A84238A00846EE7 /* SDLLockScreenStatusManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenStatusManager.h; sourceTree = "<group>"; };
- 5D61FB041A84238A00846EE7 /* SDLLockScreenStatusManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenStatusManager.m; sourceTree = "<group>"; };
- 5D61FB051A84238A00846EE7 /* SDLLockScreenStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenStatus.h; sourceTree = "<group>"; };
- 5D61FB061A84238A00846EE7 /* SDLLockScreenStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenStatus.m; sourceTree = "<group>"; };
- 5D61FB071A84238A00846EE7 /* SDLMaintenanceModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMaintenanceModeStatus.h; sourceTree = "<group>"; };
- 5D61FB081A84238A00846EE7 /* SDLMaintenanceModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMaintenanceModeStatus.m; sourceTree = "<group>"; };
- 5D61FB091A84238A00846EE7 /* SDLMediaClockFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMediaClockFormat.h; sourceTree = "<group>"; };
- 5D61FB0A1A84238A00846EE7 /* SDLMediaClockFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMediaClockFormat.m; sourceTree = "<group>"; };
- 5D61FB0B1A84238A00846EE7 /* SDLMenuParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMenuParams.h; sourceTree = "<group>"; };
- 5D61FB0C1A84238A00846EE7 /* SDLMenuParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMenuParams.m; sourceTree = "<group>"; };
- 5D61FB0D1A84238A00846EE7 /* SDLMyKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMyKey.h; sourceTree = "<group>"; };
- 5D61FB0E1A84238A00846EE7 /* SDLMyKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMyKey.m; sourceTree = "<group>"; };
- 5D61FB0F1A84238A00846EE7 /* SDLRPCParameterNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCParameterNames.h; sourceTree = "<group>"; };
- 5D61FB101A84238A00846EE7 /* SDLObjectWithPriority.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLObjectWithPriority.h; sourceTree = "<group>"; };
- 5D61FB111A84238A00846EE7 /* SDLObjectWithPriority.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLObjectWithPriority.m; sourceTree = "<group>"; };
- 5D61FB121A84238B00846EE7 /* SDLOnAppInterfaceUnregistered.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnAppInterfaceUnregistered.h; sourceTree = "<group>"; };
- 5D61FB131A84238B00846EE7 /* SDLOnAppInterfaceUnregistered.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnAppInterfaceUnregistered.m; sourceTree = "<group>"; };
- 5D61FB141A84238B00846EE7 /* SDLOnAudioPassThru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnAudioPassThru.h; sourceTree = "<group>"; };
- 5D61FB151A84238B00846EE7 /* SDLOnAudioPassThru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnAudioPassThru.m; sourceTree = "<group>"; };
- 5D61FB161A84238B00846EE7 /* SDLOnButtonEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnButtonEvent.h; sourceTree = "<group>"; };
- 5D61FB171A84238B00846EE7 /* SDLOnButtonEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnButtonEvent.m; sourceTree = "<group>"; };
- 5D61FB181A84238B00846EE7 /* SDLOnButtonPress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnButtonPress.h; sourceTree = "<group>"; };
- 5D61FB191A84238B00846EE7 /* SDLOnButtonPress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnButtonPress.m; sourceTree = "<group>"; };
- 5D61FB1A1A84238B00846EE7 /* SDLOnCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnCommand.h; sourceTree = "<group>"; };
- 5D61FB1B1A84238B00846EE7 /* SDLOnCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnCommand.m; sourceTree = "<group>"; };
- 5D61FB1C1A84238B00846EE7 /* SDLOnDriverDistraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnDriverDistraction.h; sourceTree = "<group>"; };
- 5D61FB1D1A84238B00846EE7 /* SDLOnDriverDistraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnDriverDistraction.m; sourceTree = "<group>"; };
- 5D61FB1E1A84238B00846EE7 /* SDLOnEncodedSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnEncodedSyncPData.h; sourceTree = "<group>"; };
- 5D61FB1F1A84238B00846EE7 /* SDLOnEncodedSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnEncodedSyncPData.m; sourceTree = "<group>"; };
- 5D61FB201A84238B00846EE7 /* SDLOnHashChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnHashChange.h; sourceTree = "<group>"; };
- 5D61FB211A84238B00846EE7 /* SDLOnHashChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnHashChange.m; sourceTree = "<group>"; };
- 5D61FB221A84238B00846EE7 /* SDLOnHMIStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnHMIStatus.h; sourceTree = "<group>"; };
- 5D61FB231A84238B00846EE7 /* SDLOnHMIStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnHMIStatus.m; sourceTree = "<group>"; };
- 5D61FB241A84238B00846EE7 /* SDLOnKeyboardInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnKeyboardInput.h; sourceTree = "<group>"; };
- 5D61FB251A84238B00846EE7 /* SDLOnKeyboardInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnKeyboardInput.m; sourceTree = "<group>"; };
- 5D61FB261A84238B00846EE7 /* SDLOnLanguageChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnLanguageChange.h; sourceTree = "<group>"; };
- 5D61FB271A84238B00846EE7 /* SDLOnLanguageChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnLanguageChange.m; sourceTree = "<group>"; };
- 5D61FB281A84238B00846EE7 /* SDLOnLockScreenStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnLockScreenStatus.h; sourceTree = "<group>"; };
- 5D61FB291A84238B00846EE7 /* SDLOnLockScreenStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnLockScreenStatus.m; sourceTree = "<group>"; };
- 5D61FB2A1A84238B00846EE7 /* SDLOnPermissionsChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnPermissionsChange.h; sourceTree = "<group>"; };
- 5D61FB2B1A84238B00846EE7 /* SDLOnPermissionsChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnPermissionsChange.m; sourceTree = "<group>"; };
- 5D61FB2C1A84238B00846EE7 /* SDLOnSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnSyncPData.h; sourceTree = "<group>"; };
- 5D61FB2D1A84238B00846EE7 /* SDLOnSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnSyncPData.m; sourceTree = "<group>"; };
- 5D61FB2E1A84238B00846EE7 /* SDLOnSystemRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnSystemRequest.h; sourceTree = "<group>"; };
- 5D61FB2F1A84238B00846EE7 /* SDLOnSystemRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnSystemRequest.m; sourceTree = "<group>"; };
- 5D61FB301A84238B00846EE7 /* SDLOnTBTClientState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnTBTClientState.h; sourceTree = "<group>"; };
- 5D61FB311A84238B00846EE7 /* SDLOnTBTClientState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnTBTClientState.m; sourceTree = "<group>"; };
- 5D61FB321A84238B00846EE7 /* SDLOnTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnTouchEvent.h; sourceTree = "<group>"; };
- 5D61FB331A84238B00846EE7 /* SDLOnTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnTouchEvent.m; sourceTree = "<group>"; };
- 5D61FB341A84238B00846EE7 /* SDLOnVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnVehicleData.h; sourceTree = "<group>"; };
- 5D61FB351A84238B00846EE7 /* SDLOnVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnVehicleData.m; sourceTree = "<group>"; };
- 5D61FB361A84238B00846EE7 /* SDLParameterPermissions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLParameterPermissions.h; sourceTree = "<group>"; };
- 5D61FB371A84238B00846EE7 /* SDLParameterPermissions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLParameterPermissions.m; sourceTree = "<group>"; };
- 5D61FB381A84238B00846EE7 /* SDLPerformAudioPassThru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPerformAudioPassThru.h; sourceTree = "<group>"; };
- 5D61FB391A84238B00846EE7 /* SDLPerformAudioPassThru.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPerformAudioPassThru.m; sourceTree = "<group>"; };
- 5D61FB3A1A84238B00846EE7 /* SDLPerformAudioPassThruResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPerformAudioPassThruResponse.h; sourceTree = "<group>"; };
- 5D61FB3B1A84238B00846EE7 /* SDLPerformAudioPassThruResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPerformAudioPassThruResponse.m; sourceTree = "<group>"; };
- 5D61FB3C1A84238B00846EE7 /* SDLPerformInteraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPerformInteraction.h; sourceTree = "<group>"; };
- 5D61FB3D1A84238B00846EE7 /* SDLPerformInteraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPerformInteraction.m; sourceTree = "<group>"; };
- 5D61FB3E1A84238B00846EE7 /* SDLPerformInteractionResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPerformInteractionResponse.h; sourceTree = "<group>"; };
- 5D61FB3F1A84238B00846EE7 /* SDLPerformInteractionResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPerformInteractionResponse.m; sourceTree = "<group>"; };
- 5D61FB401A84238B00846EE7 /* SDLPermissionItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPermissionItem.h; sourceTree = "<group>"; };
- 5D61FB411A84238B00846EE7 /* SDLPermissionItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionItem.m; sourceTree = "<group>"; };
- 5D61FB421A84238B00846EE7 /* SDLPermissionStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPermissionStatus.h; sourceTree = "<group>"; };
- 5D61FB431A84238B00846EE7 /* SDLPermissionStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionStatus.m; sourceTree = "<group>"; };
- 5D61FB461A84238B00846EE7 /* SDLPowerModeQualificationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPowerModeQualificationStatus.h; sourceTree = "<group>"; };
- 5D61FB471A84238B00846EE7 /* SDLPowerModeQualificationStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPowerModeQualificationStatus.m; sourceTree = "<group>"; };
- 5D61FB481A84238B00846EE7 /* SDLPowerModeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPowerModeStatus.h; sourceTree = "<group>"; };
- 5D61FB491A84238B00846EE7 /* SDLPowerModeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPowerModeStatus.m; sourceTree = "<group>"; };
- 5D61FB4A1A84238B00846EE7 /* SDLPredefinedLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPredefinedLayout.h; sourceTree = "<group>"; };
- 5D61FB4B1A84238B00846EE7 /* SDLPredefinedLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPredefinedLayout.m; sourceTree = "<group>"; };
- 5D61FB4C1A84238B00846EE7 /* SDLPrerecordedSpeech.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPrerecordedSpeech.h; sourceTree = "<group>"; };
- 5D61FB4D1A84238B00846EE7 /* SDLPrerecordedSpeech.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPrerecordedSpeech.m; sourceTree = "<group>"; };
- 5D61FB4E1A84238B00846EE7 /* SDLPresetBankCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPresetBankCapabilities.h; sourceTree = "<group>"; };
- 5D61FB4F1A84238B00846EE7 /* SDLPresetBankCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPresetBankCapabilities.m; sourceTree = "<group>"; };
- 5D61FB501A84238B00846EE7 /* SDLPrimaryAudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPrimaryAudioSource.h; sourceTree = "<group>"; };
- 5D61FB511A84238B00846EE7 /* SDLPrimaryAudioSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPrimaryAudioSource.m; sourceTree = "<group>"; };
- 5D61FB521A84238B00846EE7 /* SDLPrioritizedObjectCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPrioritizedObjectCollection.h; sourceTree = "<group>"; };
- 5D61FB531A84238B00846EE7 /* SDLPrioritizedObjectCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPrioritizedObjectCollection.m; sourceTree = "<group>"; };
- 5D61FB541A84238B00846EE7 /* SDLPRNDL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPRNDL.h; sourceTree = "<group>"; };
- 5D61FB551A84238B00846EE7 /* SDLPRNDL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPRNDL.m; sourceTree = "<group>"; };
- 5D61FB561A84238B00846EE7 /* SDLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocol.h; sourceTree = "<group>"; };
- 5D61FB571A84238B00846EE7 /* SDLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocol.m; sourceTree = "<group>"; };
- 5D61FB581A84238B00846EE7 /* SDLProtocolHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolHeader.h; sourceTree = "<group>"; };
- 5D61FB591A84238B00846EE7 /* SDLProtocolHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolHeader.m; sourceTree = "<group>"; };
- 5D61FB5A1A84238B00846EE7 /* SDLProtocolDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolDelegate.h; sourceTree = "<group>"; };
- 5D61FB5B1A84238B00846EE7 /* SDLProtocolMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolMessage.h; sourceTree = "<group>"; };
- 5D61FB5C1A84238B00846EE7 /* SDLProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolMessage.m; sourceTree = "<group>"; };
- 5D61FB5D1A84238B00846EE7 /* SDLProtocolMessageAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolMessageAssembler.h; sourceTree = "<group>"; };
- 5D61FB5E1A84238B00846EE7 /* SDLProtocolMessageAssembler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolMessageAssembler.m; sourceTree = "<group>"; };
- 5D61FB5F1A84238B00846EE7 /* SDLProtocolMessageDisassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolMessageDisassembler.h; sourceTree = "<group>"; };
- 5D61FB601A84238B00846EE7 /* SDLProtocolMessageDisassembler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolMessageDisassembler.m; sourceTree = "<group>"; };
- 5D61FB611A84238B00846EE7 /* SDLProtocolReceivedMessageRouter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolReceivedMessageRouter.h; sourceTree = "<group>"; };
- 5D61FB621A84238B00846EE7 /* SDLProtocolReceivedMessageRouter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolReceivedMessageRouter.m; sourceTree = "<group>"; };
- 5D61FB681A84238B00846EE7 /* SDLPutFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPutFile.h; sourceTree = "<group>"; };
- 5D61FB691A84238B00846EE7 /* SDLPutFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPutFile.m; sourceTree = "<group>"; };
- 5D61FB6A1A84238B00846EE7 /* SDLPutFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPutFileResponse.h; sourceTree = "<group>"; };
- 5D61FB6B1A84238B00846EE7 /* SDLPutFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPutFileResponse.m; sourceTree = "<group>"; };
- 5D61FB6C1A84238B00846EE7 /* SDLReadDID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLReadDID.h; sourceTree = "<group>"; };
- 5D61FB6D1A84238B00846EE7 /* SDLReadDID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLReadDID.m; sourceTree = "<group>"; };
- 5D61FB6E1A84238B00846EE7 /* SDLReadDIDResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLReadDIDResponse.h; sourceTree = "<group>"; };
- 5D61FB6F1A84238B00846EE7 /* SDLReadDIDResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLReadDIDResponse.m; sourceTree = "<group>"; };
- 5D61FB701A84238B00846EE7 /* SDLRegisterAppInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRegisterAppInterface.h; sourceTree = "<group>"; };
- 5D61FB711A84238B00846EE7 /* SDLRegisterAppInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRegisterAppInterface.m; sourceTree = "<group>"; };
- 5D61FB721A84238B00846EE7 /* SDLRegisterAppInterfaceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRegisterAppInterfaceResponse.h; sourceTree = "<group>"; };
- 5D61FB731A84238B00846EE7 /* SDLRegisterAppInterfaceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRegisterAppInterfaceResponse.m; sourceTree = "<group>"; };
- 5D61FB741A84238B00846EE7 /* SDLRequestType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRequestType.h; sourceTree = "<group>"; };
- 5D61FB751A84238B00846EE7 /* SDLRequestType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRequestType.m; sourceTree = "<group>"; };
- 5D61FB761A84238B00846EE7 /* SDLResetGlobalProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResetGlobalProperties.h; sourceTree = "<group>"; };
- 5D61FB771A84238B00846EE7 /* SDLResetGlobalProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResetGlobalProperties.m; sourceTree = "<group>"; };
- 5D61FB781A84238B00846EE7 /* SDLResetGlobalPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResetGlobalPropertiesResponse.h; sourceTree = "<group>"; };
- 5D61FB791A84238B00846EE7 /* SDLResetGlobalPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResetGlobalPropertiesResponse.m; sourceTree = "<group>"; };
- 5D61FB7A1A84238B00846EE7 /* SDLResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResult.h; sourceTree = "<group>"; };
- 5D61FB7B1A84238B00846EE7 /* SDLResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResult.m; sourceTree = "<group>"; };
- 5D61FB7C1A84238B00846EE7 /* SDLRPCMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCMessage.h; sourceTree = "<group>"; };
- 5D61FB7D1A84238B00846EE7 /* SDLRPCMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCMessage.m; sourceTree = "<group>"; };
- 5D61FB7E1A84238B00846EE7 /* SDLRPCMessageType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCMessageType.h; sourceTree = "<group>"; };
- 5D61FB801A84238B00846EE7 /* SDLRPCNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCNotification.h; sourceTree = "<group>"; };
- 5D61FB811A84238B00846EE7 /* SDLRPCNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCNotification.m; sourceTree = "<group>"; };
- 5D61FB821A84238B00846EE7 /* SDLRPCPayload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCPayload.h; sourceTree = "<group>"; };
- 5D61FB831A84238B00846EE7 /* SDLRPCPayload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCPayload.m; sourceTree = "<group>"; };
- 5D61FB841A84238B00846EE7 /* SDLRPCRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCRequest.h; sourceTree = "<group>"; };
- 5D61FB851A84238B00846EE7 /* SDLRPCRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCRequest.m; sourceTree = "<group>"; };
- 5D61FB881A84238B00846EE7 /* SDLRPCResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCResponse.h; sourceTree = "<group>"; };
- 5D61FB891A84238B00846EE7 /* SDLRPCResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCResponse.m; sourceTree = "<group>"; };
- 5D61FB8A1A84238B00846EE7 /* SDLSamplingRate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSamplingRate.h; sourceTree = "<group>"; };
- 5D61FB8B1A84238B00846EE7 /* SDLSamplingRate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSamplingRate.m; sourceTree = "<group>"; };
- 5D61FB8C1A84238B00846EE7 /* SDLScreenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLScreenParams.h; sourceTree = "<group>"; };
- 5D61FB8D1A84238B00846EE7 /* SDLScreenParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLScreenParams.m; sourceTree = "<group>"; };
- 5D61FB8E1A84238B00846EE7 /* SDLScrollableMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLScrollableMessage.h; sourceTree = "<group>"; };
- 5D61FB8F1A84238B00846EE7 /* SDLScrollableMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLScrollableMessage.m; sourceTree = "<group>"; };
- 5D61FB901A84238B00846EE7 /* SDLScrollableMessageResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLScrollableMessageResponse.h; sourceTree = "<group>"; };
- 5D61FB911A84238B00846EE7 /* SDLScrollableMessageResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLScrollableMessageResponse.m; sourceTree = "<group>"; };
- 5D61FB921A84238B00846EE7 /* SDLSetAppIcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetAppIcon.h; sourceTree = "<group>"; };
- 5D61FB931A84238B00846EE7 /* SDLSetAppIcon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetAppIcon.m; sourceTree = "<group>"; };
- 5D61FB941A84238B00846EE7 /* SDLSetAppIconResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetAppIconResponse.h; sourceTree = "<group>"; };
- 5D61FB951A84238B00846EE7 /* SDLSetAppIconResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetAppIconResponse.m; sourceTree = "<group>"; };
- 5D61FB961A84238B00846EE7 /* SDLSetDisplayLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetDisplayLayout.h; sourceTree = "<group>"; };
- 5D61FB971A84238B00846EE7 /* SDLSetDisplayLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetDisplayLayout.m; sourceTree = "<group>"; };
- 5D61FB981A84238B00846EE7 /* SDLSetDisplayLayoutResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetDisplayLayoutResponse.h; sourceTree = "<group>"; };
- 5D61FB991A84238B00846EE7 /* SDLSetDisplayLayoutResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetDisplayLayoutResponse.m; sourceTree = "<group>"; };
- 5D61FB9A1A84238B00846EE7 /* SDLSetGlobalProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetGlobalProperties.h; sourceTree = "<group>"; };
- 5D61FB9B1A84238B00846EE7 /* SDLSetGlobalProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetGlobalProperties.m; sourceTree = "<group>"; };
- 5D61FB9C1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetGlobalPropertiesResponse.h; sourceTree = "<group>"; };
- 5D61FB9D1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetGlobalPropertiesResponse.m; sourceTree = "<group>"; };
- 5D61FB9E1A84238B00846EE7 /* SDLSetMediaClockTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetMediaClockTimer.h; sourceTree = "<group>"; };
- 5D61FB9F1A84238B00846EE7 /* SDLSetMediaClockTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetMediaClockTimer.m; sourceTree = "<group>"; };
- 5D61FBA01A84238B00846EE7 /* SDLSetMediaClockTimerResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetMediaClockTimerResponse.h; sourceTree = "<group>"; };
- 5D61FBA11A84238B00846EE7 /* SDLSetMediaClockTimerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetMediaClockTimerResponse.m; sourceTree = "<group>"; };
- 5D61FBA21A84238B00846EE7 /* SDLShow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLShow.h; sourceTree = "<group>"; };
- 5D61FBA31A84238B00846EE7 /* SDLShow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLShow.m; sourceTree = "<group>"; };
- 5D61FBA41A84238B00846EE7 /* SDLShowConstantTBT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLShowConstantTBT.h; sourceTree = "<group>"; };
- 5D61FBA51A84238B00846EE7 /* SDLShowConstantTBT.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLShowConstantTBT.m; sourceTree = "<group>"; };
- 5D61FBA61A84238B00846EE7 /* SDLShowConstantTBTResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLShowConstantTBTResponse.h; sourceTree = "<group>"; };
- 5D61FBA71A84238B00846EE7 /* SDLShowConstantTBTResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLShowConstantTBTResponse.m; sourceTree = "<group>"; };
- 5D61FBA81A84238B00846EE7 /* SDLShowResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLShowResponse.h; sourceTree = "<group>"; };
- 5D61FBA91A84238B00846EE7 /* SDLShowResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLShowResponse.m; sourceTree = "<group>"; };
- 5D61FBAA1A84238B00846EE7 /* SDLSingleTireStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSingleTireStatus.h; sourceTree = "<group>"; };
- 5D61FBAB1A84238B00846EE7 /* SDLSingleTireStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSingleTireStatus.m; sourceTree = "<group>"; };
- 5D61FBAE1A84238B00846EE7 /* SDLSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSlider.h; sourceTree = "<group>"; };
- 5D61FBAF1A84238B00846EE7 /* SDLSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSlider.m; sourceTree = "<group>"; };
- 5D61FBB01A84238B00846EE7 /* SDLSliderResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSliderResponse.h; sourceTree = "<group>"; };
- 5D61FBB11A84238B00846EE7 /* SDLSliderResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSliderResponse.m; sourceTree = "<group>"; };
- 5D61FBB21A84238B00846EE7 /* SDLSoftButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSoftButton.h; sourceTree = "<group>"; };
- 5D61FBB31A84238B00846EE7 /* SDLSoftButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButton.m; sourceTree = "<group>"; };
- 5D61FBB41A84238B00846EE7 /* SDLSoftButtonCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonCapabilities.h; sourceTree = "<group>"; };
- 5D61FBB51A84238B00846EE7 /* SDLSoftButtonCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonCapabilities.m; sourceTree = "<group>"; };
- 5D61FBB61A84238B00846EE7 /* SDLSoftButtonType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonType.h; sourceTree = "<group>"; };
- 5D61FBB71A84238B00846EE7 /* SDLSoftButtonType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonType.m; sourceTree = "<group>"; };
- 5D61FBB81A84238B00846EE7 /* SDLSpeak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSpeak.h; sourceTree = "<group>"; };
- 5D61FBB91A84238B00846EE7 /* SDLSpeak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSpeak.m; sourceTree = "<group>"; };
- 5D61FBBA1A84238B00846EE7 /* SDLSpeakResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSpeakResponse.h; sourceTree = "<group>"; };
- 5D61FBBB1A84238B00846EE7 /* SDLSpeakResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSpeakResponse.m; sourceTree = "<group>"; };
- 5D61FBBC1A84238B00846EE7 /* SDLSpeechCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSpeechCapabilities.h; sourceTree = "<group>"; };
- 5D61FBBD1A84238B00846EE7 /* SDLSpeechCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSpeechCapabilities.m; sourceTree = "<group>"; };
- 5D61FBBE1A84238B00846EE7 /* SDLStartTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStartTime.h; sourceTree = "<group>"; };
- 5D61FBBF1A84238B00846EE7 /* SDLStartTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStartTime.m; sourceTree = "<group>"; };
- 5D61FBC01A84238B00846EE7 /* SDLSubscribeButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeButton.h; sourceTree = "<group>"; };
- 5D61FBC11A84238B00846EE7 /* SDLSubscribeButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButton.m; sourceTree = "<group>"; };
- 5D61FBC21A84238B00846EE7 /* SDLSubscribeButtonResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeButtonResponse.h; sourceTree = "<group>"; };
- 5D61FBC31A84238B00846EE7 /* SDLSubscribeButtonResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButtonResponse.m; sourceTree = "<group>"; };
- 5D61FBC41A84238B00846EE7 /* SDLSubscribeVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeVehicleData.h; sourceTree = "<group>"; };
- 5D61FBC51A84238B00846EE7 /* SDLSubscribeVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeVehicleData.m; sourceTree = "<group>"; };
- 5D61FBC61A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeVehicleDataResponse.h; sourceTree = "<group>"; };
- 5D61FBC71A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeVehicleDataResponse.m; sourceTree = "<group>"; };
- 5D61FBC81A84238B00846EE7 /* SDLSyncMsgVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSyncMsgVersion.h; sourceTree = "<group>"; };
- 5D61FBC91A84238B00846EE7 /* SDLSyncMsgVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSyncMsgVersion.m; sourceTree = "<group>"; };
- 5D61FBCA1A84238B00846EE7 /* SDLSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSyncPData.h; sourceTree = "<group>"; };
- 5D61FBCB1A84238B00846EE7 /* SDLSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSyncPData.m; sourceTree = "<group>"; };
- 5D61FBCC1A84238B00846EE7 /* SDLSyncPDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSyncPDataResponse.h; sourceTree = "<group>"; };
- 5D61FBCD1A84238B00846EE7 /* SDLSyncPDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSyncPDataResponse.m; sourceTree = "<group>"; };
- 5D61FBCE1A84238B00846EE7 /* SDLSystemAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemAction.h; sourceTree = "<group>"; };
- 5D61FBCF1A84238B00846EE7 /* SDLSystemAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemAction.m; sourceTree = "<group>"; };
- 5D61FBD01A84238B00846EE7 /* SDLSystemContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemContext.h; sourceTree = "<group>"; };
- 5D61FBD11A84238B00846EE7 /* SDLSystemContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemContext.m; sourceTree = "<group>"; };
- 5D61FBD21A84238B00846EE7 /* SDLSystemRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemRequest.h; sourceTree = "<group>"; };
- 5D61FBD31A84238B00846EE7 /* SDLSystemRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemRequest.m; sourceTree = "<group>"; };
- 5D61FBD41A84238B00846EE7 /* SDLSystemRequestResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemRequestResponse.h; sourceTree = "<group>"; };
- 5D61FBD51A84238B00846EE7 /* SDLSystemRequestResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemRequestResponse.m; sourceTree = "<group>"; };
- 5D61FBD61A84238B00846EE7 /* SDLTBTState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTBTState.h; sourceTree = "<group>"; };
- 5D61FBD71A84238B00846EE7 /* SDLTBTState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTBTState.m; sourceTree = "<group>"; };
- 5D61FBD81A84238B00846EE7 /* SDLTCPTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTCPTransport.h; sourceTree = "<group>"; };
- 5D61FBD91A84238B00846EE7 /* SDLTCPTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTCPTransport.m; sourceTree = "<group>"; };
- 5D61FBDA1A84238B00846EE7 /* SDLTextAlignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTextAlignment.h; sourceTree = "<group>"; };
- 5D61FBDB1A84238C00846EE7 /* SDLTextAlignment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextAlignment.m; sourceTree = "<group>"; };
- 5D61FBDC1A84238C00846EE7 /* SDLTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTextField.h; sourceTree = "<group>"; };
- 5D61FBDD1A84238C00846EE7 /* SDLTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextField.m; sourceTree = "<group>"; };
- 5D61FBDE1A84238C00846EE7 /* SDLTextFieldName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTextFieldName.h; sourceTree = "<group>"; };
- 5D61FBDF1A84238C00846EE7 /* SDLTextFieldName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextFieldName.m; sourceTree = "<group>"; };
- 5D61FBE01A84238C00846EE7 /* SDLTimerMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTimerMode.h; sourceTree = "<group>"; };
- 5D61FBE11A84238C00846EE7 /* SDLTimerMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTimerMode.m; sourceTree = "<group>"; };
- 5D61FBE21A84238C00846EE7 /* SDLTireStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTireStatus.h; sourceTree = "<group>"; };
- 5D61FBE31A84238C00846EE7 /* SDLTireStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTireStatus.m; sourceTree = "<group>"; };
- 5D61FBE41A84238C00846EE7 /* SDLTouchCoord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTouchCoord.h; sourceTree = "<group>"; };
- 5D61FBE51A84238C00846EE7 /* SDLTouchCoord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTouchCoord.m; sourceTree = "<group>"; };
- 5D61FBE61A84238C00846EE7 /* SDLTouchEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTouchEvent.h; sourceTree = "<group>"; };
- 5D61FBE71A84238C00846EE7 /* SDLTouchEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTouchEvent.m; sourceTree = "<group>"; };
- 5D61FBE81A84238C00846EE7 /* SDLTouchEventCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTouchEventCapabilities.h; sourceTree = "<group>"; };
- 5D61FBE91A84238C00846EE7 /* SDLTouchEventCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTouchEventCapabilities.m; sourceTree = "<group>"; };
- 5D61FBEA1A84238C00846EE7 /* SDLTouchType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTouchType.h; sourceTree = "<group>"; };
- 5D61FBEB1A84238C00846EE7 /* SDLTouchType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTouchType.m; sourceTree = "<group>"; };
- 5D61FBED1A84238C00846EE7 /* SDLTransportDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTransportDelegate.h; sourceTree = "<group>"; };
- 5D61FBEE1A84238C00846EE7 /* SDLTriggerSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTriggerSource.h; sourceTree = "<group>"; };
- 5D61FBEF1A84238C00846EE7 /* SDLTriggerSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTriggerSource.m; sourceTree = "<group>"; };
- 5D61FBF01A84238C00846EE7 /* SDLTTSChunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTTSChunk.h; sourceTree = "<group>"; };
- 5D61FBF11A84238C00846EE7 /* SDLTTSChunk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTTSChunk.m; sourceTree = "<group>"; };
- 5D61FBF41A84238C00846EE7 /* SDLTurn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTurn.h; sourceTree = "<group>"; };
- 5D61FBF51A84238C00846EE7 /* SDLTurn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTurn.m; sourceTree = "<group>"; };
- 5D61FBF61A84238C00846EE7 /* SDLUnregisterAppInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnregisterAppInterface.h; sourceTree = "<group>"; };
- 5D61FBF71A84238C00846EE7 /* SDLUnregisterAppInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnregisterAppInterface.m; sourceTree = "<group>"; };
- 5D61FBF81A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnregisterAppInterfaceResponse.h; sourceTree = "<group>"; };
- 5D61FBF91A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnregisterAppInterfaceResponse.m; sourceTree = "<group>"; };
- 5D61FBFA1A84238C00846EE7 /* SDLUnsubscribeButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeButton.h; sourceTree = "<group>"; };
- 5D61FBFB1A84238C00846EE7 /* SDLUnsubscribeButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeButton.m; sourceTree = "<group>"; };
- 5D61FBFC1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeButtonResponse.h; sourceTree = "<group>"; };
- 5D61FBFD1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeButtonResponse.m; sourceTree = "<group>"; };
- 5D61FBFE1A84238C00846EE7 /* SDLUnsubscribeVehicleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeVehicleData.h; sourceTree = "<group>"; };
- 5D61FBFF1A84238C00846EE7 /* SDLUnsubscribeVehicleData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeVehicleData.m; sourceTree = "<group>"; };
- 5D61FC001A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeVehicleDataResponse.h; sourceTree = "<group>"; };
- 5D61FC011A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeVehicleDataResponse.m; sourceTree = "<group>"; };
- 5D61FC021A84238C00846EE7 /* SDLUpdateMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUpdateMode.h; sourceTree = "<group>"; };
- 5D61FC031A84238C00846EE7 /* SDLUpdateMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUpdateMode.m; sourceTree = "<group>"; };
- 5D61FC041A84238C00846EE7 /* SDLUpdateTurnList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUpdateTurnList.h; sourceTree = "<group>"; };
- 5D61FC051A84238C00846EE7 /* SDLUpdateTurnList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUpdateTurnList.m; sourceTree = "<group>"; };
- 5D61FC061A84238C00846EE7 /* SDLUpdateTurnListResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUpdateTurnListResponse.h; sourceTree = "<group>"; };
- 5D61FC071A84238C00846EE7 /* SDLUpdateTurnListResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUpdateTurnListResponse.m; sourceTree = "<group>"; };
- 5D61FC081A84238C00846EE7 /* SDLV1ProtocolHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLV1ProtocolHeader.h; sourceTree = "<group>"; };
- 5D61FC091A84238C00846EE7 /* SDLV1ProtocolHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLV1ProtocolHeader.m; sourceTree = "<group>"; };
- 5D61FC0A1A84238C00846EE7 /* SDLV1ProtocolMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLV1ProtocolMessage.h; sourceTree = "<group>"; };
- 5D61FC0B1A84238C00846EE7 /* SDLV1ProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLV1ProtocolMessage.m; sourceTree = "<group>"; };
- 5D61FC0C1A84238C00846EE7 /* SDLV2ProtocolHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLV2ProtocolHeader.h; sourceTree = "<group>"; };
- 5D61FC0D1A84238C00846EE7 /* SDLV2ProtocolHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLV2ProtocolHeader.m; sourceTree = "<group>"; };
- 5D61FC0E1A84238C00846EE7 /* SDLV2ProtocolMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLV2ProtocolMessage.h; sourceTree = "<group>"; };
- 5D61FC0F1A84238C00846EE7 /* SDLV2ProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLV2ProtocolMessage.m; sourceTree = "<group>"; };
- 5D61FC101A84238C00846EE7 /* SDLVehicleDataActiveStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleDataActiveStatus.h; sourceTree = "<group>"; };
- 5D61FC111A84238C00846EE7 /* SDLVehicleDataActiveStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleDataActiveStatus.m; sourceTree = "<group>"; };
- 5D61FC121A84238C00846EE7 /* SDLVehicleDataEventStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleDataEventStatus.h; sourceTree = "<group>"; };
- 5D61FC131A84238C00846EE7 /* SDLVehicleDataEventStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleDataEventStatus.m; sourceTree = "<group>"; };
- 5D61FC141A84238C00846EE7 /* SDLVehicleDataNotificationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleDataNotificationStatus.h; sourceTree = "<group>"; };
- 5D61FC151A84238C00846EE7 /* SDLVehicleDataNotificationStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleDataNotificationStatus.m; sourceTree = "<group>"; };
- 5D61FC161A84238C00846EE7 /* SDLVehicleDataResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleDataResult.h; sourceTree = "<group>"; };
- 5D61FC171A84238C00846EE7 /* SDLVehicleDataResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleDataResult.m; sourceTree = "<group>"; };
- 5D61FC181A84238C00846EE7 /* SDLVehicleDataResultCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleDataResultCode.h; sourceTree = "<group>"; };
- 5D61FC191A84238C00846EE7 /* SDLVehicleDataResultCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleDataResultCode.m; sourceTree = "<group>"; };
- 5D61FC1A1A84238C00846EE7 /* SDLVehicleDataStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleDataStatus.h; sourceTree = "<group>"; };
- 5D61FC1B1A84238C00846EE7 /* SDLVehicleDataStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleDataStatus.m; sourceTree = "<group>"; };
- 5D61FC1C1A84238C00846EE7 /* SDLVehicleDataType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleDataType.h; sourceTree = "<group>"; };
- 5D61FC1D1A84238C00846EE7 /* SDLVehicleDataType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleDataType.m; sourceTree = "<group>"; };
- 5D61FC1E1A84238C00846EE7 /* SDLVehicleType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVehicleType.h; sourceTree = "<group>"; };
- 5D61FC1F1A84238C00846EE7 /* SDLVehicleType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVehicleType.m; sourceTree = "<group>"; };
- 5D61FC201A84238C00846EE7 /* SDLVrCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVrCapabilities.h; sourceTree = "<group>"; };
- 5D61FC211A84238C00846EE7 /* SDLVrCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVrCapabilities.m; sourceTree = "<group>"; };
- 5D61FC221A84238C00846EE7 /* SDLVrHelpItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVrHelpItem.h; sourceTree = "<group>"; };
- 5D61FC231A84238C00846EE7 /* SDLVrHelpItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVrHelpItem.m; sourceTree = "<group>"; };
- 5D61FC241A84238C00846EE7 /* SDLWarningLightStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLWarningLightStatus.h; sourceTree = "<group>"; };
- 5D61FC251A84238C00846EE7 /* SDLWarningLightStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLWarningLightStatus.m; sourceTree = "<group>"; };
- 5D61FC261A84238C00846EE7 /* SDLWiperStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLWiperStatus.h; sourceTree = "<group>"; };
- 5D61FC271A84238C00846EE7 /* SDLWiperStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLWiperStatus.m; sourceTree = "<group>"; };
5D64FE6C20DA9CE600792F9F /* SDLVideoStreamingStateSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingStateSpec.m; sourceTree = "<group>"; };
5D64FE6E20DA9E4300792F9F /* SDLStreamingVideoLifecycleManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingVideoLifecycleManagerSpec.m; path = DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m; sourceTree = "<group>"; };
5D64FE7020DA9E6700792F9F /* SDLStreamingAudioLifecycleManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingAudioLifecycleManagerSpec.m; path = DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m; sourceTree = "<group>"; };
- 5D6CC8EE1C610E660027F60A /* SDLSecurityType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSecurityType.h; sourceTree = "<group>"; };
5D6EB4CB1BF28DC600693731 /* NSMapTable+SubscriptingSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMapTable+SubscriptingSpec.m"; path = "DevAPISpecs/NSMapTable+SubscriptingSpec.m"; sourceTree = "<group>"; };
- 5D6F7A2C1BC5650B0070BF37 /* SDLLifecycleConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleConfiguration.h; sourceTree = "<group>"; };
- 5D6F7A2D1BC5650B0070BF37 /* SDLLifecycleConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleConfiguration.m; sourceTree = "<group>"; };
- 5D6F7A331BC5B9B60070BF37 /* SDLLockScreenViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenViewController.h; sourceTree = "<group>"; };
- 5D6F7A341BC5B9B60070BF37 /* SDLLockScreenViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenViewController.m; sourceTree = "<group>"; };
5D6F7A3D1BC811FC0070BF37 /* SDLAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = SDLAssets.xcassets; path = Assets/SDLAssets.xcassets; sourceTree = "<group>"; };
5D75960B22972F830013207C /* TestSystemCapabilityObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TestSystemCapabilityObserver.h; path = DevAPISpecs/TestSystemCapabilityObserver.h; sourceTree = "<group>"; };
5D75960C22972F830013207C /* TestSystemCapabilityObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestSystemCapabilityObserver.m; path = DevAPISpecs/TestSystemCapabilityObserver.m; sourceTree = "<group>"; };
- 5D75960F22972FCA0013207C /* SDLSystemCapabilityObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityObserver.h; sourceTree = "<group>"; };
- 5D75961022972FCA0013207C /* SDLSystemCapabilityObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityObserver.m; sourceTree = "<group>"; };
- 5D76750C22D8FB3700E8D71A /* SDLMenuLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMenuLayout.h; sourceTree = "<group>"; };
- 5D76750D22D8FB3700E8D71A /* SDLMenuLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuLayout.m; sourceTree = "<group>"; };
- 5D76751122D9088F00E8D71A /* SDLMenuConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMenuConfiguration.h; sourceTree = "<group>"; };
- 5D76751222D9088F00E8D71A /* SDLMenuConfiguration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuConfiguration.m; sourceTree = "<group>"; };
5D76751522D920FD00E8D71A /* SDLMenuConfigurationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLMenuConfigurationSpec.m; path = DevAPISpecs/SDLMenuConfigurationSpec.m; sourceTree = "<group>"; };
5D76751722D921CB00E8D71A /* SDLMenuLayoutSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuLayoutSpec.m; sourceTree = "<group>"; };
5D76E31B1D3805FF00647CFA /* SDLLockScreenManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenManagerSpec.m; path = DevAPISpecs/SDLLockScreenManagerSpec.m; sourceTree = "<group>"; };
- 5D76E3201D39742300647CFA /* SDLViewControllerPresentable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLViewControllerPresentable.h; sourceTree = "<group>"; };
- 5D76E3221D39767000647CFA /* SDLLockScreenPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenPresenter.h; sourceTree = "<group>"; };
- 5D76E3231D39767000647CFA /* SDLLockScreenPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenPresenter.m; sourceTree = "<group>"; };
5D76E3271D3D0A8800647CFA /* SDLFakeViewControllerPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFakeViewControllerPresenter.h; path = DevAPISpecs/SDLFakeViewControllerPresenter.h; sourceTree = "<group>"; };
5D76E3281D3D0A8800647CFA /* SDLFakeViewControllerPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFakeViewControllerPresenter.m; path = DevAPISpecs/SDLFakeViewControllerPresenter.m; sourceTree = "<group>"; };
- 5D79A0391CE36F030035797B /* SDLUploadFileOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUploadFileOperation.h; sourceTree = "<group>"; };
- 5D79A03A1CE36F030035797B /* SDLUploadFileOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUploadFileOperation.m; sourceTree = "<group>"; };
- 5D7F87E91CE3C1A1002DD7C4 /* SDLDeleteFileOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteFileOperation.h; sourceTree = "<group>"; };
- 5D7F87EA1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteFileOperation.m; sourceTree = "<group>"; };
- 5D7F87ED1CE3C294002DD7C4 /* SDLFileManagerConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFileManagerConstants.h; sourceTree = "<group>"; };
- 5D7F87F11CE3C29E002DD7C4 /* SDLFileWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFileWrapper.h; sourceTree = "<group>"; };
- 5D7F87F21CE3C29E002DD7C4 /* SDLFileWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFileWrapper.m; sourceTree = "<group>"; };
- 5D8204181BCD80BA00D0A41B /* SDLLockScreenConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenConfiguration.h; sourceTree = "<group>"; };
- 5D8204191BCD80BA00D0A41B /* SDLLockScreenConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenConfiguration.m; sourceTree = "<group>"; };
- 5D82041C1BCD8E6100D0A41B /* SDLConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLConfiguration.h; sourceTree = "<group>"; };
- 5D82041D1BCD8E6100D0A41B /* SDLConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLConfiguration.m; sourceTree = "<group>"; };
- 5D8204201BCEA89A00D0A41B /* SDLFileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFileManager.h; sourceTree = "<group>"; };
- 5D8204211BCEA89A00D0A41B /* SDLFileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFileManager.m; sourceTree = "<group>"; };
- 5D8204241BCEA8A600D0A41B /* SDLPermissionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPermissionManager.h; sourceTree = "<group>"; };
- 5D8204251BCEA8A600D0A41B /* SDLPermissionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionManager.m; sourceTree = "<group>"; };
- 5D82042B1BCEC32F00D0A41B /* SDLFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLFile.h; sourceTree = "<group>"; };
- 5D82042C1BCEC32F00D0A41B /* SDLFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFile.m; sourceTree = "<group>"; };
- 5D82042F1BD001C700D0A41B /* SDLArtwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLArtwork.h; sourceTree = "<group>"; };
- 5D8204301BD001C700D0A41B /* SDLArtwork.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLArtwork.m; sourceTree = "<group>"; };
5D850AAF1D4907C500E6E7EE /* TestLockScreenAppIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TestLockScreenAppIcon.png; sourceTree = "<group>"; };
- 5D8A09801F54B4E5002502A2 /* SDLStreamingMediaManagerDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStreamingMediaManagerDataSource.h; sourceTree = "<group>"; };
- 5D8B174D1AC9D266006A6E1C /* SDLDialNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDialNumber.h; sourceTree = "<group>"; };
- 5D8B174E1AC9D266006A6E1C /* SDLDialNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDialNumber.m; sourceTree = "<group>"; };
- 5D8B17511AC9E11B006A6E1C /* SDLDialNumberResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDialNumberResponse.h; sourceTree = "<group>"; };
- 5D8B17521AC9E11B006A6E1C /* SDLDialNumberResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDialNumberResponse.m; sourceTree = "<group>"; };
5D8B17551AC9E399006A6E1C /* SDLDialNumberSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDialNumberSpec.m; sourceTree = "<group>"; };
- 5D92934B20AF4BEF00FCC775 /* SDLRGBColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLRGBColor.h; sourceTree = "<group>"; };
- 5D92934C20AF4BEF00FCC775 /* SDLRGBColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRGBColor.m; sourceTree = "<group>"; };
5D92934F20AF526200FCC775 /* SDLRGBColorSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRGBColorSpec.m; sourceTree = "<group>"; };
- 5D92935120B2F76500FCC775 /* SDLTemplateColorScheme.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTemplateColorScheme.h; sourceTree = "<group>"; };
- 5D92935220B2F76500FCC775 /* SDLTemplateColorScheme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTemplateColorScheme.m; sourceTree = "<group>"; };
5D92935520B2FD7300FCC775 /* SDLTemplateColorSchemeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTemplateColorSchemeSpec.m; sourceTree = "<group>"; };
- 5D92935820B33D4F00FCC775 /* SDLChoiceCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLChoiceCell.h; sourceTree = "<group>"; };
- 5D92935920B33D4F00FCC775 /* SDLChoiceCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLChoiceCell.m; sourceTree = "<group>"; };
- 5D92935C20B33FF700FCC775 /* SDLChoiceSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLChoiceSet.h; sourceTree = "<group>"; };
- 5D92935D20B33FF700FCC775 /* SDLChoiceSet.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLChoiceSet.m; sourceTree = "<group>"; };
- 5D92936020B354BE00FCC775 /* SDLChoiceSetDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLChoiceSetDelegate.h; sourceTree = "<group>"; };
- 5D92936220B3551600FCC775 /* SDLKeyboardDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLKeyboardDelegate.h; sourceTree = "<group>"; };
- 5D92936620B3601700FCC775 /* SDLChoiceSetManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLChoiceSetManager.h; sourceTree = "<group>"; };
- 5D92936720B3601700FCC775 /* SDLChoiceSetManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLChoiceSetManager.m; sourceTree = "<group>"; };
- 5D92936E20B5E0E500FCC775 /* SDLDeleteChoicesOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDeleteChoicesOperation.h; sourceTree = "<group>"; };
- 5D92936F20B5E0E500FCC775 /* SDLDeleteChoicesOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteChoicesOperation.m; sourceTree = "<group>"; };
- 5D92937220B5EEA200FCC775 /* SDLPreloadChoicesOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPreloadChoicesOperation.h; sourceTree = "<group>"; };
- 5D92937320B5EEA200FCC775 /* SDLPreloadChoicesOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPreloadChoicesOperation.m; sourceTree = "<group>"; };
- 5D92937620B6FB6200FCC775 /* SDLPresentChoiceSetOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPresentChoiceSetOperation.h; sourceTree = "<group>"; };
- 5D92937720B6FB6200FCC775 /* SDLPresentChoiceSetOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPresentChoiceSetOperation.m; sourceTree = "<group>"; };
- 5D92937A20B70A3E00FCC775 /* SDLPresentKeyboardOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPresentKeyboardOperation.h; sourceTree = "<group>"; };
- 5D92937B20B70A3E00FCC775 /* SDLPresentKeyboardOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPresentKeyboardOperation.m; sourceTree = "<group>"; };
- 5D92937E20B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCheckChoiceVROptionalOperation.h; sourceTree = "<group>"; };
- 5D92937F20B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCheckChoiceVROptionalOperation.m; sourceTree = "<group>"; };
5D9F50721BE7DD4C00FEF399 /* testFileJSON.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = testFileJSON.json; sourceTree = "<group>"; };
5D9F50731BE7DD4C00FEF399 /* testImageBMP.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = testImageBMP.bmp; sourceTree = "<group>"; };
5D9F50741BE7DD4C00FEF399 /* testImageJPEG.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = testImageJPEG.jpeg; sourceTree = "<group>"; };
@@ -2925,13 +3309,6 @@
5D9F50821BEA5C6100FEF399 /* SDLFileManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFileManagerSpec.m; path = DevAPISpecs/SDLFileManagerSpec.m; sourceTree = "<group>"; };
5D9F50851BED412E00FEF399 /* TestConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestConnectionManager.h; path = TestUtilities/TestConnectionManager.h; sourceTree = "<group>"; };
5D9F50861BED412E00FEF399 /* TestConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TestConnectionManager.m; path = TestUtilities/TestConnectionManager.m; sourceTree = "<group>"; };
- 5D9FC29A1FD8812E00ACA5C2 /* SDLAudioStreamManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioStreamManagerDelegate.h; path = SmartDeviceLink/SDLAudioStreamManagerDelegate.h; sourceTree = SOURCE_ROOT; };
- 5D9FC29C1FD8813900ACA5C2 /* SDLAudioStreamManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioStreamManager.h; path = SmartDeviceLink/SDLAudioStreamManager.h; sourceTree = SOURCE_ROOT; };
- 5D9FC29D1FD8813900ACA5C2 /* SDLAudioStreamManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioStreamManager.m; path = SmartDeviceLink/SDLAudioStreamManager.m; sourceTree = SOURCE_ROOT; };
- 5D9FC2A01FD8814A00ACA5C2 /* SDLAudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLAudioFile.m; path = SmartDeviceLink/SDLAudioFile.m; sourceTree = SOURCE_ROOT; };
- 5D9FC2A11FD8814A00ACA5C2 /* SDLAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLAudioFile.h; path = SmartDeviceLink/SDLAudioFile.h; sourceTree = SOURCE_ROOT; };
- 5D9FC2A41FD8815800ACA5C2 /* SDLPCMAudioConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLPCMAudioConverter.h; path = SmartDeviceLink/SDLPCMAudioConverter.h; sourceTree = SOURCE_ROOT; };
- 5D9FC2A51FD8815800ACA5C2 /* SDLPCMAudioConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPCMAudioConverter.m; path = SmartDeviceLink/SDLPCMAudioConverter.m; sourceTree = SOURCE_ROOT; };
5D9FDA891F2A7D3400A495C8 /* bson_array.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bson_array.c; path = bson_c_lib/src/bson_array.c; sourceTree = SOURCE_ROOT; };
5D9FDA8A1F2A7D3400A495C8 /* bson_array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bson_array.h; path = bson_c_lib/src/bson_array.h; sourceTree = SOURCE_ROOT; };
5D9FDA8B1F2A7D3400A495C8 /* bson_object.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bson_object.c; path = bson_c_lib/src/bson_object.c; sourceTree = SOURCE_ROOT; };
@@ -2942,12 +3319,6 @@
5D9FDA961F2A7D3F00A495C8 /* emhashmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = emhashmap.h; path = bson_c_lib/src/emhashmap/emhashmap.h; sourceTree = SOURCE_ROOT; };
5D9FDA971F2A7D3F00A495C8 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LICENSE; path = bson_c_lib/src/emhashmap/LICENSE; sourceTree = SOURCE_ROOT; };
5DA0268F1AD44EE700019F86 /* SDLDialNumberResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDialNumberResponseSpec.m; sourceTree = "<group>"; };
- 5DA102A21D4122C700C15826 /* NSMutableDictionary+SafeRemove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+SafeRemove.h"; sourceTree = "<group>"; };
- 5DA102A31D4122C700C15826 /* NSMutableDictionary+SafeRemove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+SafeRemove.m"; sourceTree = "<group>"; };
- 5DA150C52271FDC20032928D /* SDLSoftButtonTransitionOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonTransitionOperation.h; sourceTree = "<group>"; };
- 5DA150C62271FDC20032928D /* SDLSoftButtonTransitionOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonTransitionOperation.m; sourceTree = "<group>"; };
- 5DA150CB2271FE180032928D /* SDLSoftButtonReplaceOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonReplaceOperation.h; sourceTree = "<group>"; };
- 5DA150CC2271FE180032928D /* SDLSoftButtonReplaceOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonReplaceOperation.m; sourceTree = "<group>"; };
5DA150D0227367580032928D /* SDLSoftButtonTransitionOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonTransitionOperationSpec.m; path = DevAPISpecs/SDLSoftButtonTransitionOperationSpec.m; sourceTree = "<group>"; };
5DA150D22273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonReplaceOperationSpec.m; sourceTree = "<group>"; };
5DA22CB31D075CF200245F5F /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = sdl_ios/Carthage/Build/iOS/Nimble.framework; sourceTree = "<group>"; };
@@ -2957,32 +3328,13 @@
5DA23FF21F2FA35C009C0313 /* SDLControlFramePayloadAudioStartServiceAckSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadAudioStartServiceAckSpec.m; sourceTree = "<group>"; };
5DA23FF51F2FAA31009C0313 /* SDLControlFramePayloadRPCStartServiceSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadRPCStartServiceSpec.m; sourceTree = "<group>"; };
5DA23FF71F2FAF2D009C0313 /* SDLControlFramePayloadRPCStartServiceAckSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadRPCStartServiceAckSpec.m; sourceTree = "<group>"; };
- 5DA23FFC1F312DBA009C0313 /* SDLVideoEncoderDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVideoEncoderDelegate.h; sourceTree = "<group>"; };
- 5DA23FFE1F325621009C0313 /* SDLStreamingMediaConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStreamingMediaConfiguration.h; sourceTree = "<group>"; };
- 5DA23FFF1F325621009C0313 /* SDLStreamingMediaConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingMediaConfiguration.m; sourceTree = "<group>"; };
- 5DA3F3521BC448060026F2D0 /* NSMapTable+Subscripting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMapTable+Subscripting.h"; sourceTree = "<group>"; };
- 5DA3F3531BC448060026F2D0 /* NSMapTable+Subscripting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMapTable+Subscripting.m"; sourceTree = "<group>"; };
- 5DA3F3581BC448480026F2D0 /* SDLError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLError.h; sourceTree = "<group>"; };
- 5DA3F3591BC448480026F2D0 /* SDLError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLError.m; sourceTree = "<group>"; };
- 5DA3F35D1BC448590026F2D0 /* SDLNotificationConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLNotificationConstants.h; sourceTree = "<group>"; };
- 5DA3F35E1BC448590026F2D0 /* SDLNotificationConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNotificationConstants.m; sourceTree = "<group>"; };
- 5DA3F36E1BC4489A0026F2D0 /* SDLManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLManager.h; sourceTree = "<group>"; };
- 5DA3F36F1BC4489A0026F2D0 /* SDLManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLManager.m; sourceTree = "<group>"; };
- 5DA49CE31F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadRPCStartService.h; sourceTree = "<group>"; };
- 5DA49CE41F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadRPCStartService.m; sourceTree = "<group>"; };
5DAB5F502098994C00A020C8 /* SDLMenuCellSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLMenuCellSpec.m; path = DevAPISpecs/SDLMenuCellSpec.m; sourceTree = "<group>"; };
5DAB5F5220989A8300A020C8 /* SDLVoiceCommandSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandSpec.m; path = DevAPISpecs/SDLVoiceCommandSpec.m; sourceTree = "<group>"; };
- 5DAB5F542098E5D100A020C8 /* SDLProtocolConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLProtocolConstants.h; sourceTree = "<group>"; };
- 5DAB5F552098E5D100A020C8 /* SDLProtocolConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolConstants.m; sourceTree = "<group>"; };
- 5DAD5F7D204DEDEB0025624C /* SDLScreenManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLScreenManager.h; sourceTree = "<group>"; };
- 5DAD5F7E204DEDEB0025624C /* SDLScreenManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLScreenManager.m; sourceTree = "<group>"; };
5DAD5F8420507E1F0025624C /* SDLScreenManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLScreenManagerSpec.m; sourceTree = "<group>"; };
5DAD5F86205087430025624C /* SDLTextAndGraphicManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicManagerSpec.m; path = DevAPISpecs/SDLTextAndGraphicManagerSpec.m; sourceTree = "<group>"; };
5DAD5F8820508F090025624C /* SDLSoftButtonStateSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonStateSpec.m; path = DevAPISpecs/SDLSoftButtonStateSpec.m; sourceTree = "<group>"; };
5DAD5F8A20508F140025624C /* SDLSoftButtonObjectSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonObjectSpec.m; sourceTree = "<group>"; };
5DAD5F8C20508F220025624C /* SDLSoftButtonManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonManagerSpec.m; path = DevAPISpecs/SDLSoftButtonManagerSpec.m; sourceTree = "<group>"; };
- 5DADA7731F4DFED60084D17D /* SDLRectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRectangle.h; sourceTree = "<group>"; };
- 5DADA7741F4DFED60084D17D /* SDLRectangle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRectangle.m; sourceTree = "<group>"; };
5DADA7771F4E059E0084D17D /* SDLRectangleSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRectangleSpec.m; sourceTree = "<group>"; };
5DAE06721BDEC6C000F9B498 /* SDLFileSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFileSpec.m; path = DevAPISpecs/SDLFileSpec.m; sourceTree = "<group>"; };
5DAE06741BDEC6D600F9B498 /* SDLArtworkSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLArtworkSpec.m; path = DevAPISpecs/SDLArtworkSpec.m; sourceTree = "<group>"; };
@@ -3002,33 +3354,11 @@
5DB92D231AC47B2C00C15BB0 /* SDLHexUtilitySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHexUtilitySpec.m; path = UtilitiesSpecs/SDLHexUtilitySpec.m; sourceTree = "<group>"; };
5DB92D2C1AC4A34F00C15BB0 /* SDLPrioritizedObjectCollectionSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPrioritizedObjectCollectionSpec.m; path = "UtilitiesSpecs/Prioritized Objects/SDLPrioritizedObjectCollectionSpec.m"; sourceTree = "<group>"; };
5DB92D2E1AC59F0000C15BB0 /* SDLObjectWithPrioritySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLObjectWithPrioritySpec.m; path = "UtilitiesSpecs/Prioritized Objects/SDLObjectWithPrioritySpec.m"; sourceTree = "<group>"; };
- 5DB92D301AC9C8BA00C15BB0 /* SDLRPCStruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCStruct.h; sourceTree = "<group>"; };
- 5DB92D311AC9C8BA00C15BB0 /* SDLRPCStruct.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCStruct.m; sourceTree = "<group>"; };
- 5DB9964C1F26886C002D8795 /* SDLControlFramePayloadEndService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadEndService.h; sourceTree = "<group>"; };
- 5DB9964D1F26886C002D8795 /* SDLControlFramePayloadEndService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadEndService.m; sourceTree = "<group>"; };
- 5DB996551F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadAudioStartServiceAck.h; sourceTree = "<group>"; };
- 5DB996561F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadAudioStartServiceAck.m; sourceTree = "<group>"; };
- 5DB9965A1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadVideoStartService.h; sourceTree = "<group>"; };
- 5DB9965B1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadVideoStartService.m; sourceTree = "<group>"; };
- 5DB9965E1F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadVideoStartServiceAck.h; sourceTree = "<group>"; };
- 5DB9965F1F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadVideoStartServiceAck.m; sourceTree = "<group>"; };
5DBAE0AA1D3588AC00CE00BF /* SDLNotificationDispatcherSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLNotificationDispatcherSpec.m; sourceTree = "<group>"; };
5DBAE0AC1D368D1A00CE00BF /* SDLResponseDispatcherSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResponseDispatcherSpec.m; sourceTree = "<group>"; };
5DBEFA531F434B9E009EE295 /* SDLStreamingMediaConfigurationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLStreamingMediaConfigurationSpec.m; path = DevAPISpecs/SDLStreamingMediaConfigurationSpec.m; sourceTree = "<group>"; };
5DBEFA561F436132009EE295 /* SDLFakeSecurityManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLFakeSecurityManager.h; path = DevAPISpecs/SDLFakeSecurityManager.h; sourceTree = "<group>"; };
5DBEFA571F436132009EE295 /* SDLFakeSecurityManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLFakeSecurityManager.m; path = DevAPISpecs/SDLFakeSecurityManager.m; sourceTree = "<group>"; };
- 5DBF06211E64A83F00A5CF03 /* SDLLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogManager.h; sourceTree = "<group>"; };
- 5DBF06221E64A83F00A5CF03 /* SDLLogManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogManager.m; sourceTree = "<group>"; };
- 5DBF06251E64A91D00A5CF03 /* SDLLogFileModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogFileModule.h; sourceTree = "<group>"; };
- 5DBF06261E64A91D00A5CF03 /* SDLLogFileModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogFileModule.m; sourceTree = "<group>"; };
- 5DBF06291E64A92C00A5CF03 /* SDLLogTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogTarget.h; sourceTree = "<group>"; };
- 5DBF062B1E64A93A00A5CF03 /* SDLLogFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogFilter.h; sourceTree = "<group>"; };
- 5DBF062C1E64A93A00A5CF03 /* SDLLogFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogFilter.m; sourceTree = "<group>"; };
- 5DBF062F1E64A9C600A5CF03 /* SDLLogModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogModel.h; sourceTree = "<group>"; };
- 5DBF06301E64A9C600A5CF03 /* SDLLogModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogModel.m; sourceTree = "<group>"; };
- 5DBF06331E64A9FE00A5CF03 /* SDLLogConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogConstants.h; sourceTree = "<group>"; };
- 5DBF06371E64ABBE00A5CF03 /* SDLLogConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogConfiguration.h; sourceTree = "<group>"; };
- 5DBF06381E64ABBE00A5CF03 /* SDLLogConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogConfiguration.m; sourceTree = "<group>"; };
5DBF0D5D1F3A68C0008AF2C9 /* SDLControlFramePayloadVideoStartServiceSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadVideoStartServiceSpec.m; path = ControlFramePayloadSpecs/SDLControlFramePayloadVideoStartServiceSpec.m; sourceTree = "<group>"; };
5DBF0D5F1F3B3DB4008AF2C9 /* SDLControlFrameVideoStartServiceAckSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFrameVideoStartServiceAckSpec.m; path = ControlFramePayloadSpecs/SDLControlFrameVideoStartServiceAckSpec.m; sourceTree = "<group>"; };
5DC09ED91F2F7FEC00F4AB1D /* SDLControlFramePayloadNakSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadNakSpec.m; path = ControlFramePayloadSpecs/SDLControlFramePayloadNakSpec.m; sourceTree = "<group>"; };
@@ -3036,27 +3366,8 @@
5DC978251B7A38640012C2F1 /* SDLGlobalsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGlobalsSpec.m; path = UtilitiesSpecs/SDLGlobalsSpec.m; sourceTree = "<group>"; };
5DCA93821EE0844D0015768E /* SmartDeviceLink.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = SmartDeviceLink.podspec; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
5DCC458C221C9F6600036C2F /* SDLVersionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVersionSpec.m; path = DevAPISpecs/SDLVersionSpec.m; sourceTree = "<group>"; };
- 5DCD7ADC1FCCA8D100A0FC7F /* SDLCarWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCarWindow.h; sourceTree = "<group>"; };
- 5DCD7ADD1FCCA8D200A0FC7F /* SDLCarWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCarWindow.m; sourceTree = "<group>"; };
- 5DCF76F31ACDBAD300BB647B /* SDLSendLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSendLocation.h; sourceTree = "<group>"; };
- 5DCF76F41ACDBAD300BB647B /* SDLSendLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendLocation.m; sourceTree = "<group>"; };
- 5DCF76F71ACDD7CD00BB647B /* SDLSendLocationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSendLocationResponse.h; sourceTree = "<group>"; };
- 5DCF76F81ACDD7CD00BB647B /* SDLSendLocationResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendLocationResponse.m; sourceTree = "<group>"; };
5DCF76FB1ACDDB4200BB647B /* SDLSendLocationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendLocationSpec.m; sourceTree = "<group>"; };
5DCF76FD1ACDDB5A00BB647B /* SDLSendLocationResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendLocationResponseSpec.m; sourceTree = "<group>"; };
- 5DD60D96221C5D7D00A82A4F /* SDLVersion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLVersion.h; sourceTree = "<group>"; };
- 5DD60D97221C5D7D00A82A4F /* SDLVersion.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLVersion.m; sourceTree = "<group>"; };
- 5DD67CAE1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogTargetAppleSystemLog.h; sourceTree = "<group>"; };
- 5DD67CAF1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogTargetAppleSystemLog.m; sourceTree = "<group>"; };
- 5DD67CB61E661C4A009CD394 /* SDLLogTargetFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogTargetFile.h; sourceTree = "<group>"; };
- 5DD67CB71E661C4A009CD394 /* SDLLogTargetFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogTargetFile.m; sourceTree = "<group>"; };
- 5DD67CBA1E661C84009CD394 /* SDLLogTargetOSLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogTargetOSLog.h; sourceTree = "<group>"; };
- 5DD67CBB1E661C84009CD394 /* SDLLogTargetOSLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogTargetOSLog.m; sourceTree = "<group>"; };
- 5DD67CC11E68AE82009CD394 /* SDLLogFileModuleMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogFileModuleMap.h; sourceTree = "<group>"; };
- 5DD67CC21E68AE82009CD394 /* SDLLogFileModuleMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogFileModuleMap.m; sourceTree = "<group>"; };
- 5DD67CC51E68B568009CD394 /* SDLLogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLogMacros.h; sourceTree = "<group>"; };
- 5DD8406020FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLElectronicParkBrakeStatus.h; sourceTree = "<group>"; };
- 5DD8406120FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLElectronicParkBrakeStatus.m; sourceTree = "<group>"; };
5DD8406420FCE21A0082CE04 /* SDLElectronicParkBrakeStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLElectronicParkBrakeStatusSpec.m; sourceTree = "<group>"; };
5DE35E4420CAFC5D0034BE5A /* SDLChoiceCellSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLChoiceCellSpec.m; path = DevAPISpecs/SDLChoiceCellSpec.m; sourceTree = "<group>"; };
5DE35E4620CB0AB90034BE5A /* SDLChoiceSetSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLChoiceSetSpec.m; path = DevAPISpecs/SDLChoiceSetSpec.m; sourceTree = "<group>"; };
@@ -3066,57 +3377,23 @@
5DE35E5120CB1C490034BE5A /* SDLPreloadChoicesOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLPreloadChoicesOperationSpec.m; path = DevAPISpecs/SDLPreloadChoicesOperationSpec.m; sourceTree = "<group>"; };
5DE35E5320CB1C590034BE5A /* SDLPresentChoiceSetOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLPresentChoiceSetOperationSpec.m; path = DevAPISpecs/SDLPresentChoiceSetOperationSpec.m; sourceTree = "<group>"; };
5DE35E5520CB1C680034BE5A /* SDLPresentKeyboardOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLPresentKeyboardOperationSpec.m; path = DevAPISpecs/SDLPresentKeyboardOperationSpec.m; sourceTree = "<group>"; };
- 5DE3729F1ACB2ED300849FAA /* SDLHMICapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHMICapabilities.h; sourceTree = "<group>"; };
- 5DE372A01ACB2ED300849FAA /* SDLHMICapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHMICapabilities.m; sourceTree = "<group>"; };
5DE372A31ACB336600849FAA /* SDLHMICapabilitiesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHMICapabilitiesSpec.m; sourceTree = "<group>"; };
5DEE55BF1B8509CB004F0D0F /* SDLURLRequestTaskSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLURLRequestTaskSpec.m; path = "UtilitiesSpecs/HTTP Connection/SDLURLRequestTaskSpec.m"; sourceTree = "<group>"; };
- 5DEF695A1FD6F82D004B8C2F /* SDLStreamingAudioManagerType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStreamingAudioManagerType.h; sourceTree = "<group>"; };
5DEF695C1FD6FA01004B8C2F /* testAudio.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = testAudio.mp3; sourceTree = "<group>"; };
5DEF69601FD6FB75004B8C2F /* SDLAudioStreamManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLAudioStreamManagerSpec.m; path = DevAPISpecs/SDLAudioStreamManagerSpec.m; sourceTree = "<group>"; };
5DEF69641FD6FEF7004B8C2F /* SDLStreamingAudioManagerMock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStreamingAudioManagerMock.h; sourceTree = "<group>"; };
5DEF69651FD6FEF7004B8C2F /* SDLStreamingAudioManagerMock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingAudioManagerMock.m; sourceTree = "<group>"; };
5DF2BB9C1B94E38A00CE5994 /* SDLURLSessionSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLURLSessionSpec.m; path = "UtilitiesSpecs/HTTP Connection/SDLURLSessionSpec.m"; sourceTree = "<group>"; };
- 5DF40B20208E761A00DD6FDA /* SDLVoiceCommandManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLVoiceCommandManager.h; sourceTree = "<group>"; };
- 5DF40B21208E761A00DD6FDA /* SDLVoiceCommandManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLVoiceCommandManager.m; sourceTree = "<group>"; };
5DF40B25208FA7DE00DD6FDA /* SDLMenuManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLMenuManagerSpec.m; path = DevAPISpecs/SDLMenuManagerSpec.m; sourceTree = "<group>"; };
5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandManagerSpec.m; path = DevAPISpecs/SDLVoiceCommandManagerSpec.m; sourceTree = "<group>"; };
- 5DFFB9141BD7C89700DB3F04 /* SDLConnectionManagerType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLConnectionManagerType.h; sourceTree = "<group>"; };
- 752ECDB4228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDynamicMenuUpdateAlgorithm.h; sourceTree = "<group>"; };
- 752ECDB5228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDynamicMenuUpdateAlgorithm.m; sourceTree = "<group>"; };
752ECDB8228C42E100D945F4 /* SDLMenuRunScoreSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuRunScoreSpec.m; sourceTree = "<group>"; };
752ECDBA228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuUpdateAlgorithmSpec.m; sourceTree = "<group>"; };
- 7538764D22D8CEDB00FE8484 /* SDLShowAppMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLShowAppMenu.h; sourceTree = "<group>"; };
- 7538764E22D8CEDB00FE8484 /* SDLShowAppMenu.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLShowAppMenu.m; sourceTree = "<group>"; };
- 7538765122D8D95100FE8484 /* SDLShowAppMenuResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLShowAppMenuResponse.h; sourceTree = "<group>"; };
- 7538765222D8D95100FE8484 /* SDLShowAppMenuResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLShowAppMenuResponse.m; sourceTree = "<group>"; };
7538765522DCAF5400FE8484 /* SDLShowAppMenuSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLShowAppMenuSpec.m; sourceTree = "<group>"; };
- 755F176122A00B7C0041B9CB /* SDLMenuManagerConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMenuManagerConstants.h; sourceTree = "<group>"; };
- 756C62742289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDynamicMenuUpdateRunScore.h; sourceTree = "<group>"; };
- 756C62752289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDynamicMenuUpdateRunScore.m; sourceTree = "<group>"; };
75FF2E3722DF9D5900D0C13B /* SDLShowAppMenuResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLShowAppMenuResponseSpec.m; sourceTree = "<group>"; };
- 75FF2E3922E0DD5400D0C13B /* SDLMsgVersion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMsgVersion.h; sourceTree = "<group>"; };
- 75FF2E3A22E0DD5400D0C13B /* SDLMsgVersion.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMsgVersion.m; sourceTree = "<group>"; };
- 880245A220F79C3400ED195B /* SDLFileManagerConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLFileManagerConfiguration.h; sourceTree = "<group>"; };
- 880245A320F79C3400ED195B /* SDLFileManagerConfiguration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLFileManagerConfiguration.m; sourceTree = "<group>"; };
- 8803DCED22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLBackgroundTaskManager.h; sourceTree = "<group>"; };
- 8803DCEE22C2B84B00FBB7CE /* SDLBackgroundTaskManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLBackgroundTaskManager.m; sourceTree = "<group>"; };
- 880723E923A2CFB4003D0489 /* SDLLockScreenRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenRootViewController.h; sourceTree = "<group>"; };
- 880723EA23A2CFB4003D0489 /* SDLLockScreenRootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenRootViewController.m; sourceTree = "<group>"; };
880D2679220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherServiceDataSpec.m; sourceTree = "<group>"; };
- 880D267B220DE5DF00B3F496 /* SDLWeatherServiceManifest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWeatherServiceManifest.h; sourceTree = "<group>"; };
- 880D267C220DE5DF00B3F496 /* SDLWeatherServiceManifest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherServiceManifest.m; sourceTree = "<group>"; };
880D267F220E038800B3F496 /* SDLWeatherServiceManifestSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherServiceManifestSpec.m; sourceTree = "<group>"; };
- 880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityManager.m; sourceTree = "<group>"; };
- 880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityManager.h; sourceTree = "<group>"; };
880E35B72088F78E00181259 /* SDLSystemCapabilityManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityManagerSpec.m; sourceTree = "<group>"; };
- 880FE6252267AE5300723732 /* SDLIAPConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPConstants.h; sourceTree = "<group>"; };
- 880FE6262267AE5300723732 /* SDLIAPConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPConstants.m; sourceTree = "<group>"; };
8816772822208B82001FACFF /* SDLNavigationInstructionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationInstructionSpec.m; sourceTree = "<group>"; };
- 8816772A222097C3001FACFF /* SDLNavigationServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLNavigationServiceData.h; sourceTree = "<group>"; };
- 8816772B222097C3001FACFF /* SDLNavigationServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationServiceData.m; sourceTree = "<group>"; };
- 8817C27F2289F41D00DB2DEC /* SDLIAPDataSessionDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPDataSessionDelegate.h; sourceTree = "<group>"; };
- 8818ADD62100FC18007D6F19 /* SDLTurnSignal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTurnSignal.h; sourceTree = "<group>"; };
- 8818ADD72100FC18007D6F19 /* SDLTurnSignal.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTurnSignal.m; sourceTree = "<group>"; };
8818ADDC2100FE0C007D6F19 /* SDLTurnSignalSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTurnSignalSpec.m; sourceTree = "<group>"; };
881F388C22D904BE00DF6DCE /* SDLCancelInteractionResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCancelInteractionResponseSpec.m; sourceTree = "<group>"; };
88295697207CF68800EF056C /* SDL Example Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SDL Example Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -3124,214 +3401,87 @@
8831FA382201E3D100B8FFB7 /* SDLAppServiceManifestSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceManifestSpec.m; sourceTree = "<group>"; };
8831FA3C220207DA00B8FFB7 /* SDLServiceUpdateReasonSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLServiceUpdateReasonSpec.m; sourceTree = "<group>"; };
8831FA3E2202227000B8FFB7 /* SDLAppServiceTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceTypeSpec.m; sourceTree = "<group>"; };
- 8831FA4022022AB300B8FFB7 /* SDLAppServiceCapability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAppServiceCapability.h; sourceTree = "<group>"; };
- 8831FA4122022AB300B8FFB7 /* SDLAppServiceCapability.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceCapability.m; sourceTree = "<group>"; };
8831FA442202307500B8FFB7 /* SDLAppServiceCapabilitySpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceCapabilitySpec.m; sourceTree = "<group>"; };
- 8831FA46220235B000B8FFB7 /* SDLAppServicesCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAppServicesCapabilities.h; sourceTree = "<group>"; };
- 8831FA47220235B000B8FFB7 /* SDLAppServicesCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServicesCapabilities.m; sourceTree = "<group>"; };
8831FA4A2202402B00B8FFB7 /* SDLAppServicesCapabilitiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServicesCapabilitiesSpec.m; sourceTree = "<group>"; };
- 883468F5234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStreamingVideoScaleManager.h; sourceTree = "<group>"; };
- 883468F6234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingVideoScaleManager.m; sourceTree = "<group>"; };
883468F9234BBBE1003F51E5 /* SDLStreamingVideoScaleManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingVideoScaleManagerSpec.m; sourceTree = "<group>"; };
883581AF22D659BE00405C42 /* SDLCloseApplicationResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloseApplicationResponseSpec.m; sourceTree = "<group>"; };
- 883C22C6222ED84D00939C4C /* SDLRPCFunctionNames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLRPCFunctionNames.h; sourceTree = "<group>"; };
- 883C22C7222ED84D00939C4C /* SDLRPCFunctionNames.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCFunctionNames.m; sourceTree = "<group>"; };
883C22CA222EEF0900939C4C /* SDLRPCFunctionNamesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCFunctionNamesSpec.m; sourceTree = "<group>"; };
- 884554AA222453A800BAFB6C /* SDLNavigationServiceManifest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLNavigationServiceManifest.h; sourceTree = "<group>"; };
- 884554AB222453A800BAFB6C /* SDLNavigationServiceManifest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationServiceManifest.m; sourceTree = "<group>"; };
884554AE2224554300BAFB6C /* SDLNavigationServiceManifestSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationServiceManifestSpec.m; sourceTree = "<group>"; };
884AF94B220B3FCC00E22928 /* SDLGetSystemCapabilitySpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetSystemCapabilitySpec.m; sourceTree = "<group>"; };
- 884AF94D220B488900E22928 /* SDLOnSystemCapabilityUpdated.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLOnSystemCapabilityUpdated.h; sourceTree = "<group>"; };
- 884AF94E220B488900E22928 /* SDLOnSystemCapabilityUpdated.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnSystemCapabilityUpdated.m; sourceTree = "<group>"; };
- 884E701921FB8D0F008D53BA /* SDLPublishAppService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPublishAppService.h; sourceTree = "<group>"; };
- 884E701A21FB8D0F008D53BA /* SDLPublishAppService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPublishAppService.m; sourceTree = "<group>"; };
- 884E701D21FB983F008D53BA /* SDLAppServiceManifest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAppServiceManifest.h; sourceTree = "<group>"; };
- 884E701E21FB983F008D53BA /* SDLAppServiceManifest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceManifest.m; sourceTree = "<group>"; };
- 884E702121FBA952008D53BA /* SDLAppServiceType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAppServiceType.h; sourceTree = "<group>"; };
- 884E702221FBA952008D53BA /* SDLAppServiceType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceType.m; sourceTree = "<group>"; };
- 884E702521FBAC5B008D53BA /* SDLServiceUpdateReason.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLServiceUpdateReason.h; sourceTree = "<group>"; };
- 884E702621FBAC5B008D53BA /* SDLServiceUpdateReason.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLServiceUpdateReason.m; sourceTree = "<group>"; };
- 884E702921FBB151008D53BA /* SDLAppServiceRecord.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAppServiceRecord.h; sourceTree = "<group>"; };
- 884E702A21FBB151008D53BA /* SDLAppServiceRecord.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceRecord.m; sourceTree = "<group>"; };
8850DB5E1F4475D30053A48D /* TestMultipleFilesConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestMultipleFilesConnectionManager.h; sourceTree = "<group>"; };
8850DB5F1F4475D30053A48D /* TestMultipleFilesConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestMultipleFilesConnectionManager.m; sourceTree = "<group>"; };
- 8854682D2225BDAE00994D8D /* SDLHybridAppPreference.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLHybridAppPreference.h; sourceTree = "<group>"; };
- 8854682E2225BDAE00994D8D /* SDLHybridAppPreference.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLHybridAppPreference.m; sourceTree = "<group>"; };
885468312225BF2800994D8D /* SDLHybridAppPreferenceSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLHybridAppPreferenceSpec.m; sourceTree = "<group>"; };
- 885468332225C1F800994D8D /* SDLCloudAppProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCloudAppProperties.h; sourceTree = "<group>"; };
- 885468342225C1F800994D8D /* SDLCloudAppProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloudAppProperties.m; sourceTree = "<group>"; };
885468372225CBA400994D8D /* SDLCloudAppPropertiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloudAppPropertiesSpec.m; sourceTree = "<group>"; };
8855F9DF220C93B700A5C897 /* SDLWeatherDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherDataSpec.m; sourceTree = "<group>"; };
- 8855F9E1220CB04000A5C897 /* SDLOnAppServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLOnAppServiceData.h; sourceTree = "<group>"; };
- 8855F9E2220CB04000A5C897 /* SDLOnAppServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnAppServiceData.m; sourceTree = "<group>"; };
8855F9E5220CB60700A5C897 /* SDLOnAppServiceDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnAppServiceDataSpec.m; sourceTree = "<group>"; };
- 8855F9E7220CBA9200A5C897 /* SDLGetFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetFile.h; sourceTree = "<group>"; };
- 8855F9E8220CBA9200A5C897 /* SDLGetFile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetFile.m; sourceTree = "<group>"; };
8855F9EB220CBFB700A5C897 /* SDLGetFileSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetFileSpec.m; sourceTree = "<group>"; };
8863747D22D650DE00D2671F /* SDLCloseApplicationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloseApplicationSpec.m; sourceTree = "<group>"; };
- 88665B67220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPerformAppServiceInteractionResponse.h; sourceTree = "<group>"; };
- 88665B68220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPerformAppServiceInteractionResponse.m; sourceTree = "<group>"; };
88665B6B220B796A00D9DA77 /* SDLPerformAppServiceInteractionResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPerformAppServiceInteractionResponseSpec.m; sourceTree = "<group>"; };
- 88665B71220B80F400D9DA77 /* SDLWeatherAlert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWeatherAlert.h; sourceTree = "<group>"; };
- 88665B72220B80F400D9DA77 /* SDLWeatherAlert.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherAlert.m; sourceTree = "<group>"; };
8877F5EA1F34A3BE00DC128A /* SDLSendHapticDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticDataSpec.m; sourceTree = "<group>"; };
- 8877F5EC1F34A72200DC128A /* SDLSendHapticDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSendHapticDataResponse.h; sourceTree = "<group>"; };
- 8877F5ED1F34A72200DC128A /* SDLSendHapticDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticDataResponse.m; sourceTree = "<group>"; };
8877F5F01F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticDataResponseSpec.m; sourceTree = "<group>"; };
887BE4D322272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadConstantsSpec.m; sourceTree = "<group>"; };
88802FEF20853AE600E9EBC6 /* SmartDeviceLinkSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SmartDeviceLinkSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 8880D24522205B1B00964F6A /* SDLNavigationInstruction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLNavigationInstruction.h; sourceTree = "<group>"; };
- 8880D24622205B1B00964F6A /* SDLNavigationInstruction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationInstruction.m; sourceTree = "<group>"; };
- 8881AFAA2225D61900EA870B /* SDLSetCloudAppProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSetCloudAppProperties.h; sourceTree = "<group>"; };
- 8881AFAB2225D61900EA870B /* SDLSetCloudAppProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppProperties.m; sourceTree = "<group>"; };
8881AFAE2225D8EB00EA870B /* SDLSetCloudAppPropertiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppPropertiesSpec.m; sourceTree = "<group>"; };
- 8881AFB02225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSetCloudAppPropertiesResponse.h; sourceTree = "<group>"; };
- 8881AFB12225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppPropertiesResponse.m; sourceTree = "<group>"; };
8881AFB42225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSetCloudAppPropertiesResponseSpec.m; sourceTree = "<group>"; };
- 8881AFB62225E5EE00EA870B /* SDLGetCloudAppProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetCloudAppProperties.h; sourceTree = "<group>"; };
- 8881AFB72225E5EE00EA870B /* SDLGetCloudAppProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppProperties.m; sourceTree = "<group>"; };
8881AFBA2225E7FA00EA870B /* SDLGetCloudAppPropertiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppPropertiesSpec.m; sourceTree = "<group>"; };
- 8881AFBC2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetCloudAppPropertiesResponse.h; sourceTree = "<group>"; };
- 8881AFBD2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppPropertiesResponse.m; sourceTree = "<group>"; };
8881AFC02225EB9300EA870B /* SDLGetCloudAppPropertiesResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetCloudAppPropertiesResponseSpec.m; sourceTree = "<group>"; };
8886EB972111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLFileManagerConfigurationSpec.m; sourceTree = "<group>"; };
- 888DBAE922D52431002A0AE2 /* SDLCloseApplication.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCloseApplication.h; sourceTree = "<group>"; };
- 888DBAEA22D52431002A0AE2 /* SDLCloseApplication.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloseApplication.m; sourceTree = "<group>"; };
- 888DBAED22D528DE002A0AE2 /* SDLCloseApplicationResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCloseApplicationResponse.h; sourceTree = "<group>"; };
- 888DBAEE22D528DE002A0AE2 /* SDLCloseApplicationResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCloseApplicationResponse.m; sourceTree = "<group>"; };
- 888F86FD221DEE1F0052FE4C /* SDLAsynchronousRPCOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAsynchronousRPCOperation.m; sourceTree = "<group>"; };
888F86FF221DF4880052FE4C /* SDLAsynchronousRPCOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAsynchronousRPCOperationSpec.m; sourceTree = "<group>"; };
- 889E7BAD249CEDCF002E4BE1 /* SubscribeButtonManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscribeButtonManager.swift; sourceTree = "<group>"; };
- 889E7BB0249D0877002E4BE1 /* SubscribeButtonManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SubscribeButtonManager.h; sourceTree = "<group>"; };
- 889E7BB1249D0877002E4BE1 /* SubscribeButtonManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SubscribeButtonManager.m; sourceTree = "<group>"; };
- 88A098AC2476F0C200A50005 /* SDLSubscribeButtonManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeButtonManager.h; sourceTree = "<group>"; };
- 88A098AD2476F0C200A50005 /* SDLSubscribeButtonManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButtonManager.m; sourceTree = "<group>"; };
- 88A098B024770E7100A50005 /* SDLSubscribeButtonObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeButtonObserver.h; sourceTree = "<group>"; };
- 88A098B124770E7100A50005 /* SDLSubscribeButtonObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButtonObserver.m; sourceTree = "<group>"; };
+ 889D0B9524D065EE008AD494 /* SDLSubtleAlertResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSubtleAlertResponseSpec.m; sourceTree = "<group>"; };
+ 889D0B9724D06E52008AD494 /* SDLSubtleAlertSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSubtleAlertSpec.m; sourceTree = "<group>"; };
+ 889D0B9D24D07FF8008AD494 /* SDLOnSubtleAlertPressedSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnSubtleAlertPressedSpec.m; sourceTree = "<group>"; };
88A1CF1D21669AC7001ACC75 /* SDLLifecycleConfigurationUpdateSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleConfigurationUpdateSpec.m; sourceTree = "<group>"; };
88A4A0F922242AB400C6F01D /* SDLNavigationServiceDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationServiceDataSpec.m; sourceTree = "<group>"; };
88A5E7F3220B57F900495E8A /* SDLOnSystemCapabilityUpdatedSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLOnSystemCapabilityUpdatedSpec.m; sourceTree = "<group>"; };
- 88A5E7F5220B5BBC00495E8A /* SDLGetAppServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetAppServiceData.h; sourceTree = "<group>"; };
- 88A5E7F6220B5BBC00495E8A /* SDLGetAppServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetAppServiceData.m; sourceTree = "<group>"; };
88A5E7F9220B60EC00495E8A /* SDLGetAppServiceDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetAppServiceDataSpec.m; sourceTree = "<group>"; };
- 88A5E7FB220B642200495E8A /* SDLGetAppServiceDataResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetAppServiceDataResponse.h; sourceTree = "<group>"; };
- 88A5E7FC220B642200495E8A /* SDLGetAppServiceDataResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetAppServiceDataResponse.m; sourceTree = "<group>"; };
- 88A795D02106787400056542 /* SDLStaticIconName.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStaticIconName.h; sourceTree = "<group>"; };
- 88A795D12106787400056542 /* SDLStaticIconName.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStaticIconName.m; sourceTree = "<group>"; };
88A795D4210678E000056542 /* SDLStaticIconNameSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLStaticIconNameSpec.m; sourceTree = "<group>"; };
- 88A7A3C4220CCEA100A9E435 /* SDLGetFileResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLGetFileResponse.h; sourceTree = "<group>"; };
- 88A7A3C5220CCEA100A9E435 /* SDLGetFileResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetFileResponse.m; sourceTree = "<group>"; };
88A81F6B2200FD4A00A691A9 /* SDLAppServiceRecordSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceRecordSpec.m; sourceTree = "<group>"; };
- 88AAD4BA2211B76800F1E6D7 /* SDLMediaServiceManifest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMediaServiceManifest.h; sourceTree = "<group>"; };
- 88AAD4BB2211B76800F1E6D7 /* SDLMediaServiceManifest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMediaServiceManifest.m; sourceTree = "<group>"; };
88AAD4BF2211B7E200F1E6D7 /* SDLMediaServiceManifestSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMediaServiceManifestSpec.m; sourceTree = "<group>"; };
88AF11D8220B66FD00A59985 /* SDLGetAppServiceDataResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetAppServiceDataResponseSpec.m; sourceTree = "<group>"; };
- 88AF11DA220B6B3D00A59985 /* SDLPerformAppServiceInteraction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPerformAppServiceInteraction.h; sourceTree = "<group>"; };
- 88AF11DB220B6B3D00A59985 /* SDLPerformAppServiceInteraction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPerformAppServiceInteraction.m; sourceTree = "<group>"; };
- 88B3BF9620DA859800943565 /* SDLFuelType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLFuelType.h; sourceTree = "<group>"; };
- 88B3BF9720DA859800943565 /* SDLFuelType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLFuelType.m; sourceTree = "<group>"; };
- 88B3BF9A20DA8BBC00943565 /* SDLFuelRange.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLFuelRange.h; sourceTree = "<group>"; };
- 88B3BF9B20DA8BBC00943565 /* SDLFuelRange.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLFuelRange.m; sourceTree = "<group>"; };
88B3BF9F20DA8FD000943565 /* SDLFuelTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLFuelTypeSpec.m; sourceTree = "<group>"; };
88B3BFA120DA911E00943565 /* SDLFuelRangeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLFuelRangeSpec.m; sourceTree = "<group>"; };
- 88B58DB8222040FF0011B063 /* SDLDirection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDirection.h; sourceTree = "<group>"; };
- 88B58DB9222040FF0011B063 /* SDLDirection.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDirection.m; sourceTree = "<group>"; };
88B58DBC222042500011B063 /* SDLDirectionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDirectionSpec.m; sourceTree = "<group>"; };
- 88B58DBE222045320011B063 /* SDLNavigationJunction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLNavigationJunction.h; sourceTree = "<group>"; };
- 88B58DBF222045320011B063 /* SDLNavigationJunction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationJunction.m; sourceTree = "<group>"; };
88B58DC2222047F50011B063 /* SDLNavigationJunctionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationJunctionSpec.m; sourceTree = "<group>"; };
- 88B58DC422204AF10011B063 /* SDLNavigationAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLNavigationAction.h; sourceTree = "<group>"; };
- 88B58DC522204AF10011B063 /* SDLNavigationAction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationAction.m; sourceTree = "<group>"; };
88B58DC822204C9E0011B063 /* SDLNavigationActionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationActionSpec.m; sourceTree = "<group>"; };
88B848C11F45E1A600DED768 /* TestResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestResponse.h; sourceTree = "<group>"; };
88B848C21F45E1A600DED768 /* TestResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestResponse.m; sourceTree = "<group>"; };
88B848C71F462E3600DED768 /* TestFileProgressResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFileProgressResponse.h; sourceTree = "<group>"; };
88B848C81F462E3600DED768 /* TestFileProgressResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestFileProgressResponse.m; sourceTree = "<group>"; };
- 88B8657524A0FEB7003491AD /* TestSubscribeButtonObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TestSubscribeButtonObserver.h; path = ../SmartDeviceLink/TestSubscribeButtonObserver.h; sourceTree = "<group>"; };
- 88B8657624A0FEB7003491AD /* TestSubscribeButtonObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestSubscribeButtonObserver.m; path = ../SmartDeviceLink/TestSubscribeButtonObserver.m; sourceTree = "<group>"; };
- 88BCEA902266250B00BB7E70 /* SDLIAPControlSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPControlSession.h; sourceTree = "<group>"; };
- 88BCEA912266250B00BB7E70 /* SDLIAPControlSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPControlSession.m; sourceTree = "<group>"; };
+ 88BB8050250136660025E9C8 /* SDLLockScreenStatusInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenStatusInfo.h; path = private/SDLLockScreenStatusInfo.h; sourceTree = "<group>"; };
+ 88BB8051250136660025E9C8 /* SDLLockScreenStatusInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenStatusInfo.m; path = private/SDLLockScreenStatusInfo.m; sourceTree = "<group>"; };
88BCEA942266592D00BB7E70 /* SDLIAPControlSessionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPControlSessionSpec.m; sourceTree = "<group>"; };
88C23E8522297BD500EA171F /* SDLRPCRequestNotificationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCRequestNotificationSpec.m; sourceTree = "<group>"; };
88C23E8722297C6000EA171F /* SDLRPCResponseNotificationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCResponseNotificationSpec.m; sourceTree = "<group>"; };
88C23E8922297DE400EA171F /* SDLRPCNotificationNotificationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCNotificationNotificationSpec.m; sourceTree = "<group>"; };
88C282C9220CD17200D02F90 /* SDLGetFileResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGetFileResponseSpec.m; sourceTree = "<group>"; };
- 88C37F612204EBF000901DC6 /* SDLAppServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAppServiceData.h; sourceTree = "<group>"; };
- 88C37F622204EBF000901DC6 /* SDLAppServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceData.m; sourceTree = "<group>"; };
88D0E5D524786580009469AB /* SDLSubscribeButtonManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButtonManagerSpec.m; sourceTree = "<group>"; };
88D0E5D724786770009469AB /* SDLSubscribeButtonObserverSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButtonObserverSpec.m; sourceTree = "<group>"; };
88D2AAE31F682BB20078D5B2 /* SDLLogConstantsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogConstantsSpec.m; sourceTree = "<group>"; };
- 88D3EBC72267949D00493C38 /* SDLIAPDataSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPDataSession.h; sourceTree = "<group>"; };
- 88D3EBC82267949D00493C38 /* SDLIAPDataSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPDataSession.m; sourceTree = "<group>"; };
- 88D5EB35220CD95000EC3782 /* SDLWeatherServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWeatherServiceData.h; sourceTree = "<group>"; };
- 88D5EB36220CD95000EC3782 /* SDLWeatherServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherServiceData.m; sourceTree = "<group>"; };
- 88D6F17D22319FE000D4BFB3 /* SDLRPCRequestNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCRequestNotification.m; sourceTree = "<group>"; };
- 88D6F17E22319FE000D4BFB3 /* SDLRPCRequestNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLRPCRequestNotification.h; sourceTree = "<group>"; };
- 88D99DB42289BFBE0039E047 /* SDLIAPControlSessionDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPControlSessionDelegate.h; sourceTree = "<group>"; };
88DDD0F8229ECA57002F9623 /* SDLIAPConstantsSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPConstantsSpec.m; sourceTree = "<group>"; };
88DF998C22035CC600477AC1 /* EAAccessory+OCMock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "EAAccessory+OCMock.m"; sourceTree = "<group>"; };
88DF998E22035D1700477AC1 /* SDLIAPSessionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPSessionSpec.m; sourceTree = "<group>"; };
88DF999022035D5A00477AC1 /* SDLIAPTransportSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPTransportSpec.m; sourceTree = "<group>"; };
- 88E6F1A5220E1588006156F9 /* SDLMediaType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMediaType.h; sourceTree = "<group>"; };
- 88E6F1A6220E1588006156F9 /* SDLMediaType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMediaType.m; sourceTree = "<group>"; };
88E6F1A9220E1720006156F9 /* SDLMediaTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMediaTypeSpec.m; sourceTree = "<group>"; };
- 88E6F1AB220E19DF006156F9 /* SDLMediaServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMediaServiceData.h; sourceTree = "<group>"; };
- 88E6F1AC220E19DF006156F9 /* SDLMediaServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMediaServiceData.m; sourceTree = "<group>"; };
88E6F1AF220E25B2006156F9 /* SDLMediaServiceDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMediaServiceDataSpec.m; sourceTree = "<group>"; };
+ 88EE1A442502DB3100FFEBA9 /* SDLLockScreenConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLLockScreenConstants.h; path = private/SDLLockScreenConstants.h; sourceTree = "<group>"; };
88EEC5B7220A2144005AA2F9 /* SDLPublishAppServiceSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPublishAppServiceSpec.m; sourceTree = "<group>"; };
- 88EEC5B9220A327B005AA2F9 /* SDLPublishAppServiceResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPublishAppServiceResponse.h; sourceTree = "<group>"; };
- 88EEC5BA220A327B005AA2F9 /* SDLPublishAppServiceResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPublishAppServiceResponse.m; sourceTree = "<group>"; };
88EEC5BD220A3B8B005AA2F9 /* SDLPublishAppServiceResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPublishAppServiceResponseSpec.m; sourceTree = "<group>"; };
- 88EED8361F33AE1700E6C42E /* SDLHapticRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHapticRect.h; sourceTree = "<group>"; };
- 88EED8371F33AE1700E6C42E /* SDLHapticRect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHapticRect.m; sourceTree = "<group>"; };
88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHapticRectSpec.m; sourceTree = "<group>"; };
- 88EED83C1F33C5A400E6C42E /* SDLSendHapticData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSendHapticData.h; sourceTree = "<group>"; };
- 88EED83D1F33C5A400E6C42E /* SDLSendHapticData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticData.m; sourceTree = "<group>"; };
- 88EF8EB522D8E02E00CB06C2 /* SDLCancelInteraction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCancelInteraction.h; sourceTree = "<group>"; };
- 88EF8EB622D8E02E00CB06C2 /* SDLCancelInteraction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCancelInteraction.m; sourceTree = "<group>"; };
88EF8EB922D8F48300CB06C2 /* SDLCancelInteractionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCancelInteractionSpec.m; sourceTree = "<group>"; };
- 88EF8EBB22D8FE5800CB06C2 /* SDLCancelInteractionResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCancelInteractionResponse.h; sourceTree = "<group>"; };
- 88EF8EBC22D8FE5800CB06C2 /* SDLCancelInteractionResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCancelInteractionResponse.m; sourceTree = "<group>"; };
88F37A4C226F84BE00DF119B /* SDLIAPDataSessionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPDataSessionSpec.m; sourceTree = "<group>"; };
88F50D5E220B720E00F34648 /* SDLPerformAppServiceInteractionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPerformAppServiceInteractionSpec.m; sourceTree = "<group>"; };
88F65132220C6DC300CAF321 /* SDLWeatherAlertSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherAlertSpec.m; sourceTree = "<group>"; };
- 88F65134220C74FD00CAF321 /* SDLWeatherData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWeatherData.h; sourceTree = "<group>"; };
- 88F65135220C74FD00CAF321 /* SDLWeatherData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherData.m; sourceTree = "<group>"; };
- 88F89101221DE29A00E056AD /* SDLAsynchronousRPCOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAsynchronousRPCOperation.h; sourceTree = "<group>"; };
+ 88FBF7C1250132C1005EA0A4 /* SDLOnLockScreenStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnLockScreenStatusSpec.m; sourceTree = "<group>"; };
+ 88FBF7C32501330F005EA0A4 /* TestHapticRectViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestHapticRectViewController.h; sourceTree = "<group>"; };
+ 88FBF7C42501330F005EA0A4 /* TestHapticRectViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestHapticRectViewController.m; sourceTree = "<group>"; };
8B05F88822DD011300666CD8 /* SDLUnpublishAppServiceSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLUnpublishAppServiceSpec.m; sourceTree = "<group>"; };
- 8B7B31981F2F7B5700BDC38D /* SDLVideoStreamingCodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVideoStreamingCodec.h; sourceTree = "<group>"; };
- 8B7B31991F2F7B5700BDC38D /* SDLVideoStreamingCodec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingCodec.m; sourceTree = "<group>"; };
- 8B7B319C1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVideoStreamingProtocol.h; sourceTree = "<group>"; };
- 8B7B319D1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingProtocol.m; sourceTree = "<group>"; };
- 8B7B31A01F2F7FEA00BDC38D /* SDLVideoStreamingFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVideoStreamingFormat.h; sourceTree = "<group>"; };
- 8B7B31A11F2F7FEA00BDC38D /* SDLVideoStreamingFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingFormat.m; sourceTree = "<group>"; };
- 8B7B31A41F2F875200BDC38D /* SDLVideoStreamingCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVideoStreamingCapability.h; sourceTree = "<group>"; };
- 8B7B31A51F2F875200BDC38D /* SDLVideoStreamingCapability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingCapability.m; sourceTree = "<group>"; };
8B7B31A81F2FB8BC00BDC38D /* SDLVideoStreamingProtocolSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVideoStreamingProtocolSpec.m; sourceTree = "<group>"; };
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>"; };
- 8BA12B0F22DCCE1F00371E82 /* SDLUnpublishAppService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLUnpublishAppService.h; sourceTree = "<group>"; };
- 8BA12B1022DCCE1F00371E82 /* SDLUnpublishAppService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLUnpublishAppService.m; sourceTree = "<group>"; };
- 8BA12B1322DCEACB00371E82 /* SDLUnpublishAppServiceResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLUnpublishAppServiceResponse.h; sourceTree = "<group>"; };
- 8BA12B1422DCEACB00371E82 /* SDLUnpublishAppServiceResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLUnpublishAppServiceResponse.m; sourceTree = "<group>"; };
8BA12B1722DCF59700371E82 /* SDLUnpublishAppServiceResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLUnpublishAppServiceResponseSpec.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>"; };
- 9F425ACC22DD97DE00BE3245 /* SDLTemplateConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTemplateConfiguration.h; sourceTree = "<group>"; };
- 9F425ACD22DD97DE00BE3245 /* SDLTemplateConfiguration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTemplateConfiguration.m; sourceTree = "<group>"; };
- 9F425AD022DD980200BE3245 /* SDLWindowCapability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWindowCapability.h; sourceTree = "<group>"; };
- 9F425AD122DD980200BE3245 /* SDLWindowCapability.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowCapability.m; sourceTree = "<group>"; };
- 9F425AD422DD981E00BE3245 /* SDLWindowTypeCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWindowTypeCapabilities.h; sourceTree = "<group>"; };
- 9F425AD522DD981E00BE3245 /* SDLWindowTypeCapabilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowTypeCapabilities.m; sourceTree = "<group>"; };
- 9F425AD822DD983500BE3245 /* SDLDisplayCapability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDisplayCapability.h; sourceTree = "<group>"; };
- 9F425AD922DD983500BE3245 /* SDLDisplayCapability.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayCapability.m; sourceTree = "<group>"; };
9FA0CFF622DF0632009CF344 /* SDLWindowTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowTypeSpec.m; sourceTree = "<group>"; };
9FA0CFF922DF064D009CF344 /* SDLPredefinedWindowsSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPredefinedWindowsSpec.m; sourceTree = "<group>"; };
9FA0CFFC22DF0687009CF344 /* SDLTemplateConfigurationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTemplateConfigurationSpec.m; sourceTree = "<group>"; };
@@ -3342,59 +3492,16 @@
9FA0D00B22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindowResponseSpec.m; sourceTree = "<group>"; };
9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowSpec.m; sourceTree = "<group>"; };
9FA0D01122DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowResponseSpec.m; sourceTree = "<group>"; };
- 9FD334DE22DC6E7500F62736 /* SDLCreateWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCreateWindow.h; sourceTree = "<group>"; };
- 9FD334DF22DC6E7500F62736 /* SDLCreateWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindow.m; sourceTree = "<group>"; };
- 9FE2470722D77A3600F8D2FC /* SDLDeleteWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDeleteWindow.h; sourceTree = "<group>"; };
- 9FE2470822D77A3600F8D2FC /* SDLDeleteWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindow.m; sourceTree = "<group>"; };
- 9FE2470B22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDeleteWindowResponse.h; sourceTree = "<group>"; };
- 9FE2470C22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowResponse.m; sourceTree = "<group>"; };
- 9FE2470F22D77AA400F8D2FC /* SDLCreateWindowResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCreateWindowResponse.h; sourceTree = "<group>"; };
- 9FE2471022D77AA400F8D2FC /* SDLCreateWindowResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindowResponse.m; sourceTree = "<group>"; };
- 9FE2471322D77AD500F8D2FC /* SDLWindowType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWindowType.h; sourceTree = "<group>"; };
- 9FE2471422D77AD500F8D2FC /* SDLWindowType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWindowType.m; sourceTree = "<group>"; };
- 9FE2471722D77AED00F8D2FC /* SDLPredefinedWindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPredefinedWindows.h; sourceTree = "<group>"; };
+ B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGearStatusSpec.m; sourceTree = "<group>"; };
+ B38D8E7F24A1E3D000B977D0 /* SDLTransmissionTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTransmissionTypeSpec.m; sourceTree = "<group>"; };
+ B38D8E8124A1F53500B977D0 /* SDLCapacityUnitSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCapacityUnitSpec.m; sourceTree = "<group>"; };
BB3C600D221AEF37007DD4CA /* NSMutableDictionary+StoreSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "NSMutableDictionary+StoreSpec.m"; path = "DevAPISpecs/NSMutableDictionary+StoreSpec.m"; sourceTree = "<group>"; };
- DA0C46AC1DCD35080001F2A8 /* SDLRPCParameterNames.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCParameterNames.m; sourceTree = "<group>"; };
- DA0C46AE1DCD41E30001F2A8 /* SDLMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMacros.h; sourceTree = "<group>"; };
- DA318C1D1DD0F06C00C035AC /* NSMutableDictionary+Store.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+Store.h"; sourceTree = "<group>"; };
- DA318C1E1DD0F06C00C035AC /* NSMutableDictionary+Store.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+Store.m"; sourceTree = "<group>"; };
DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CGPointUtilSpec.m; path = UtilitiesSpecs/Touches/CGPointUtilSpec.m; sourceTree = "<group>"; };
DA4353E21D2720A30099B8C4 /* SDLPinchGestureSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPinchGestureSpec.m; path = UtilitiesSpecs/Touches/SDLPinchGestureSpec.m; sourceTree = "<group>"; };
DA4353E71D2721680099B8C4 /* SDLTouchManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchManagerSpec.m; path = UtilitiesSpecs/Touches/SDLTouchManagerSpec.m; sourceTree = "<group>"; };
DA4353E81D2721680099B8C4 /* SDLTouchSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchSpec.m; path = UtilitiesSpecs/Touches/SDLTouchSpec.m; sourceTree = "<group>"; };
- DA4F47951E771AA100FC809E /* SDLEnum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEnum.m; sourceTree = "<group>"; };
- DA6223BB1E7B088200878689 /* CVPixelBufferRef+SDLUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CVPixelBufferRef+SDLUtil.h"; sourceTree = "<group>"; };
- DA6223BC1E7B088200878689 /* CVPixelBufferRef+SDLUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CVPixelBufferRef+SDLUtil.m"; sourceTree = "<group>"; };
DA661E2B1E553E7E001C1345 /* SDLStreamingMediaManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingMediaManagerSpec.m; sourceTree = "<group>"; };
- DA8966F11E56973700413EAB /* SDLStreamingMediaManagerConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStreamingMediaManagerConstants.h; sourceTree = "<group>"; };
- DA8966F31E56977C00413EAB /* SDLStreamingMediaManagerConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamingMediaManagerConstants.m; sourceTree = "<group>"; };
DA96C0651D4D4F730022F520 /* SDLAppInfoSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppInfoSpec.m; sourceTree = "<group>"; };
- DA9F7E611DCBFAC800ACAE48 /* SDLDateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDateTime.h; sourceTree = "<group>"; };
- DA9F7E621DCBFAC800ACAE48 /* SDLDateTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDateTime.m; sourceTree = "<group>"; };
- DA9F7E651DCBFAD400ACAE48 /* SDLOasisAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOasisAddress.h; sourceTree = "<group>"; };
- DA9F7E661DCBFAD400ACAE48 /* SDLOasisAddress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOasisAddress.m; sourceTree = "<group>"; };
- DA9F7E691DCBFB0700ACAE48 /* SDLDeliveryMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeliveryMode.h; sourceTree = "<group>"; };
- DA9F7E6A1DCBFB0700ACAE48 /* SDLDeliveryMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeliveryMode.m; sourceTree = "<group>"; };
- DA9F7E6D1DCBFFDB00ACAE48 /* SDLGetWayPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetWayPoints.h; sourceTree = "<group>"; };
- DA9F7E6E1DCBFFDB00ACAE48 /* SDLGetWayPoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetWayPoints.m; sourceTree = "<group>"; };
- DA9F7E711DCC004C00ACAE48 /* SDLGetWayPointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGetWayPointsResponse.h; sourceTree = "<group>"; };
- DA9F7E721DCC004C00ACAE48 /* SDLGetWayPointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetWayPointsResponse.m; sourceTree = "<group>"; };
- DA9F7E7D1DCC028B00ACAE48 /* SDLOnWayPointChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnWayPointChange.h; sourceTree = "<group>"; };
- DA9F7E7E1DCC028B00ACAE48 /* SDLOnWayPointChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnWayPointChange.m; sourceTree = "<group>"; };
- DA9F7E811DCC047200ACAE48 /* SDLWayPointType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLWayPointType.h; sourceTree = "<group>"; };
- DA9F7E821DCC047200ACAE48 /* SDLWayPointType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLWayPointType.m; sourceTree = "<group>"; };
- DA9F7E851DCC049900ACAE48 /* SDLSubscribeWayPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeWayPoints.h; sourceTree = "<group>"; };
- DA9F7E861DCC049900ACAE48 /* SDLSubscribeWayPoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeWayPoints.m; sourceTree = "<group>"; };
- DA9F7E891DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeWayPointsResponse.h; sourceTree = "<group>"; };
- DA9F7E8A1DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeWayPointsResponse.m; sourceTree = "<group>"; };
- DA9F7E8D1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeWayPointsResponse.h; sourceTree = "<group>"; };
- DA9F7E8E1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeWayPointsResponse.m; sourceTree = "<group>"; };
- DA9F7E911DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeWayPoints.h; sourceTree = "<group>"; };
- DA9F7E921DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeWayPoints.m; sourceTree = "<group>"; };
- DA9F7E951DCC052C00ACAE48 /* SDLLocationCoordinate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLocationCoordinate.h; sourceTree = "<group>"; };
- DA9F7E961DCC052C00ACAE48 /* SDLLocationCoordinate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLocationCoordinate.m; sourceTree = "<group>"; };
- DA9F7E971DCC052C00ACAE48 /* SDLLocationDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLocationDetails.h; sourceTree = "<group>"; };
- DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLocationDetails.m; sourceTree = "<group>"; };
DA9F7E9D1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLWaypointTypeSpec.m; sourceTree = "<group>"; };
DA9F7E9F1DCC05D200ACAE48 /* SDLOnWaypointChangeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnWaypointChangeSpec.m; sourceTree = "<group>"; };
DA9F7EA11DCC05E100ACAE48 /* SDLGetWaypointsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetWaypointsSpec.m; sourceTree = "<group>"; };
@@ -3408,47 +3515,14 @@
DA9F7EB11DCC084300ACAE48 /* SDLDeliveryModeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeliveryModeSpec.m; sourceTree = "<group>"; };
DA9F7EB31DCC086400ACAE48 /* SDLDateTimeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDateTimeSpec.m; sourceTree = "<group>"; };
DA9F7EB51DCC086A00ACAE48 /* SDLOasisAddressSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOasisAddressSpec.m; sourceTree = "<group>"; };
- DAA41D531DF66B2000BC7337 /* SDLH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLH264VideoEncoder.h; sourceTree = "<group>"; };
- DAA41D541DF66B2000BC7337 /* SDLH264VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLH264VideoEncoder.m; sourceTree = "<group>"; };
DABB62161E4A900C0034C567 /* SDLH264VideoEncoderSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLH264VideoEncoderSpec.m; sourceTree = "<group>"; };
- DAC572551D1067270004288B /* SDLTouchManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTouchManager.h; sourceTree = "<group>"; };
- DAC572561D1067270004288B /* SDLTouchManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTouchManager.m; sourceTree = "<group>"; };
- DAC572591D10B81E0004288B /* SDLTouch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTouch.m; sourceTree = "<group>"; };
- DAC5725A1D10B81E0004288B /* SDLTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTouch.h; sourceTree = "<group>"; };
- DAC5725F1D10BD690004288B /* SDLTouchManagerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTouchManagerDelegate.h; sourceTree = "<group>"; };
- DAC572601D10C5020004288B /* SDLPinchGesture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPinchGesture.m; sourceTree = "<group>"; };
- DAC572611D10C5020004288B /* SDLPinchGesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPinchGesture.h; sourceTree = "<group>"; };
- DAC572641D10C5640004288B /* CGPoint_Util.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CGPoint_Util.m; sourceTree = "<group>"; };
- DAC572651D10C5640004288B /* CGPoint_Util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGPoint_Util.h; sourceTree = "<group>"; };
- E4139D1B1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLifecycleConfigurationUpdate.h; sourceTree = "<group>"; };
- E4139D1C1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleConfigurationUpdate.m; sourceTree = "<group>"; };
- E9C32B891AB20BA200F283AF /* SDLIAPSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIAPSession.h; sourceTree = "<group>"; };
- E9C32B8A1AB20BA200F283AF /* SDLIAPSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLIAPSession.m; sourceTree = "<group>"; };
- E9C32B8E1AB20BA200F283AF /* SDLTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTimer.h; sourceTree = "<group>"; };
- E9C32B8F1AB20BA200F283AF /* SDLTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTimer.m; sourceTree = "<group>"; };
- E9C32B981AB20C5900F283AF /* EAAccessory+SDLProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "EAAccessory+SDLProtocols.h"; sourceTree = "<group>"; };
- E9C32B991AB20C5900F283AF /* EAAccessory+SDLProtocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "EAAccessory+SDLProtocols.m"; sourceTree = "<group>"; };
- E9C32B9A1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "EAAccessoryManager+SDLProtocols.h"; sourceTree = "<group>"; };
- E9C32B9B1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "EAAccessoryManager+SDLProtocols.m"; sourceTree = "<group>"; };
EE460E072066B5F20006EDD3 /* SDLControlFramePayloadTransportEventUpdateSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadTransportEventUpdateSpec.m; path = ControlFramePayloadSpecs/SDLControlFramePayloadTransportEventUpdateSpec.m; sourceTree = "<group>"; };
EE460E092066B6E40006EDD3 /* SDLControlFramePayloadRegisterSecondaryTransportNakSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLControlFramePayloadRegisterSecondaryTransportNakSpec.m; path = ControlFramePayloadSpecs/SDLControlFramePayloadRegisterSecondaryTransportNakSpec.m; sourceTree = "<group>"; };
EE5D1B32208EBCA900D17216 /* SDLTCPTransportSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTCPTransportSpec.m; sourceTree = "<group>"; };
- EE6CBF872064CAEE00EEE0CA /* SDLStreamingProtocolDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLStreamingProtocolDelegate.h; sourceTree = "<group>"; };
- EE798CA32056120F008EDE8E /* SDLSecondaryTransportManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSecondaryTransportManager.h; sourceTree = "<group>"; };
- EE798CA520561217008EDE8E /* SDLSecondaryTransportManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSecondaryTransportManager.m; sourceTree = "<group>"; };
- EE7B6121205BF69C00E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadRegisterSecondaryTransportNak.h; sourceTree = "<group>"; };
- EE7B6122205BF6C800E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadRegisterSecondaryTransportNak.m; sourceTree = "<group>"; };
EEA41D43210BA89B0006CB6E /* TestTCPServer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TestTCPServer.h; path = TestUtilities/TestTCPServer.h; sourceTree = "<group>"; };
EEA41D44210BA8CF0006CB6E /* TestTCPServer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestTCPServer.m; path = TestUtilities/TestTCPServer.m; sourceTree = "<group>"; };
- EEB1932D205028B700A8940C /* SDLControlFramePayloadTransportEventUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLControlFramePayloadTransportEventUpdate.h; sourceTree = "<group>"; };
- EEB1932F205028BE00A8940C /* SDLControlFramePayloadTransportEventUpdate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLControlFramePayloadTransportEventUpdate.m; sourceTree = "<group>"; };
EEB2537D2067D3E80069584E /* SDLSecondaryTransportManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSecondaryTransportManagerSpec.m; path = ProxySpecs/SDLSecondaryTransportManagerSpec.m; sourceTree = "<group>"; };
- EED5C9FD1F4D18D100F04000 /* SDLH264Packetizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLH264Packetizer.h; sourceTree = "<group>"; };
- EED5C9FF1F4D18DC00F04000 /* SDLRAWH264Packetizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRAWH264Packetizer.h; sourceTree = "<group>"; };
- EED5CA011F4D18EC00F04000 /* SDLRAWH264Packetizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRAWH264Packetizer.m; sourceTree = "<group>"; };
EED5CA031F4D1D5E00F04000 /* SDLRAWH264PacketizerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRAWH264PacketizerSpec.m; path = DevAPISpecs/SDLRAWH264PacketizerSpec.m; sourceTree = "<group>"; };
- EED5CA051F4D1E2300F04000 /* SDLRTPH264Packetizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRTPH264Packetizer.h; sourceTree = "<group>"; };
- EED5CA071F4D1E2E00F04000 /* SDLRTPH264Packetizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRTPH264Packetizer.m; sourceTree = "<group>"; };
EED5CA091F4D206800F04000 /* SDLRTPH264PacketizerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRTPH264PacketizerSpec.m; path = DevAPISpecs/SDLRTPH264PacketizerSpec.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
@@ -3502,7 +3576,7 @@
001A08B22321ACE90078A31E /* Delegates */ = {
isa = PBXGroup;
children = (
- 001A08B32321ADD30078A31E /* SDLServiceEncryptionDelegate.h */,
+ 4ABB24E424F594A10061BF55 /* SDLServiceEncryptionDelegate.h */,
);
name = Delegates;
sourceTree = "<group>";
@@ -3510,8 +3584,8 @@
005DF3BE22C590FB006E01A9 /* Lifecycle */ = {
isa = PBXGroup;
children = (
- 005DF3C322C59191006E01A9 /* SDLEncryptionLifecycleManager.h */,
- 005DF3C422C59191006E01A9 /* SDLEncryptionLifecycleManager.m */,
+ 4ABB24DB24F594560061BF55 /* SDLEncryptionLifecycleManager.h */,
+ 4ABB24DA24F594560061BF55 /* SDLEncryptionLifecycleManager.m */,
);
name = Lifecycle;
sourceTree = "<group>";
@@ -3519,8 +3593,8 @@
005DF3C722C62DDA006E01A9 /* Utilities */ = {
isa = PBXGroup;
children = (
- 005DF3C822C62E00006E01A9 /* SDLEncryptionManagerConstants.h */,
- 005DF3C922C62E00006E01A9 /* SDLEncryptionManagerConstants.m */,
+ 4ABB24E724F594CD0061BF55 /* SDLEncryptionManagerConstants.h */,
+ 4ABB24E624F594CD0061BF55 /* SDLEncryptionManagerConstants.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -3540,8 +3614,8 @@
00E22CE922C2F1A400BC6B08 /* Configuration */ = {
isa = PBXGroup;
children = (
- 00E22CEB22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h */,
- 00E22CEA22C2F1B200BC6B08 /* SDLEncryptionConfiguration.m */,
+ 4ABB24E024F5948D0061BF55 /* SDLEncryptionConfiguration.h */,
+ 4ABB24E124F5948D0061BF55 /* SDLEncryptionConfiguration.m */,
);
name = Configuration;
sourceTree = "<group>";
@@ -3557,10 +3631,10 @@
10415106241BBB8B00F163CC /* Lock Screen Icon Cache */ = {
isa = PBXGroup;
children = (
- 10893C142417D78300BA347E /* SDLIconArchiveFile.h */,
- 10893C152417D78300BA347E /* SDLIconArchiveFile.m */,
- 10893C182418188600BA347E /* SDLCacheFileManager.h */,
- 10893C192418188600BA347E /* SDLCacheFileManager.m */,
+ 4ABB267C24F7F68F0061BF55 /* SDLCacheFileManager.h */,
+ 4ABB267D24F7F68F0061BF55 /* SDLCacheFileManager.m */,
+ 4ABB267824F7F6840061BF55 /* SDLIconArchiveFile.h */,
+ 4ABB267924F7F6840061BF55 /* SDLIconArchiveFile.m */,
);
name = "Lock Screen Icon Cache";
sourceTree = "<group>";
@@ -3601,6 +3675,7 @@
162E81E81A9BDE8A00906325 /* SDLButtonEventModeSpec.m */,
162E81E91A9BDE8A00906325 /* SDLButtonNameSpec.m */,
162E81EA1A9BDE8A00906325 /* SDLButtonPressModeSpec.m */,
+ B38D8E8124A1F53500B977D0 /* SDLCapacityUnitSpec.m */,
162E81EB1A9BDE8A00906325 /* SDLCarModeStatusSpec.m */,
162E81EC1A9BDE8A00906325 /* SDLCharacterSetSpec.m */,
162E81ED1A9BDE8A00906325 /* SDLCompassDirectionSpec.m */,
@@ -3635,7 +3710,6 @@
162E82031A9BDE8A00906325 /* SDLLayoutModeSpec.m */,
1EAA47712036AEF5000FE74B /* SDLLightNameSpec.m */,
1EAA476F2036AE89000FE74B /* SDLLightStatusSpec.m */,
- 162E82041A9BDE8A00906325 /* SDLLockScreenStatusSpec.m */,
162E82051A9BDE8A00906325 /* SDLMaintenanceModeStatusSpec.m */,
1EB59CCD202DC97900343A61 /* SDLMassageCushionSpec.m */,
1EB59CD1202DCA9B00343A61 /* SDLMassageModeSpec.m */,
@@ -3672,6 +3746,7 @@
162E82181A9BDE8A00906325 /* SDLTextFieldNameSpec.m */,
162E82191A9BDE8A00906325 /* SDLTimerModeSpec.m */,
162E821A1A9BDE8A00906325 /* SDLTouchTypeSpec.m */,
+ B38D8E7F24A1E3D000B977D0 /* SDLTransmissionTypeSpec.m */,
162E821B1A9BDE8A00906325 /* SDLTriggerSource.m */,
8818ADDC2100FE0C007D6F19 /* SDLTurnSignalSpec.m */,
162E821C1A9BDE8A00906325 /* SDLUpdateModeSpec.m */,
@@ -3712,9 +3787,9 @@
1EE8C4531F38762E00FDC2CF /* SDLOnInteriorVehicleDataSpec.m */,
162E82321A9BDE8A00906325 /* SDLOnKeyboardInputSpec.m */,
162E82331A9BDE8A00906325 /* SDLOnLanguageChangeSpec.m */,
- 162E82341A9BDE8A00906325 /* SDLOnLockScreenStatusSpec.m */,
162E82351A9BDE8A00906325 /* SDLOnPermissionsChangeSpec.m */,
1EAA470D2032BF1D000FE74B /* SDLOnRCStatusSpec.m */,
+ 889D0B9D24D07FF8008AD494 /* SDLOnSubtleAlertPressedSpec.m */,
162E82361A9BDE8A00906325 /* SDLOnSyncPDataSpec.m */,
88A5E7F3220B57F900495E8A /* SDLOnSystemCapabilityUpdatedSpec.m */,
162E82371A9BDE8A00906325 /* SDLOnSystemRequestSpec.m */,
@@ -3786,6 +3861,7 @@
162E825D1A9BDE8A00906325 /* SDLSubscribeButtonSpec.m */,
162E825E1A9BDE8A00906325 /* SDLSubscribeVehicleDataSpec.m */,
DA9F7EA31DCC05EE00ACAE48 /* SDLSubscribeWaypointsSpec.m */,
+ 889D0B9724D06E52008AD494 /* SDLSubtleAlertSpec.m */,
162E825F1A9BDE8A00906325 /* SDLSyncPDataSpec.m */,
162E82601A9BDE8A00906325 /* SDLSystemRequestSpec.m */,
162E82611A9BDE8A00906325 /* SDLUnregisterAppInterfaceSpec.m */,
@@ -3860,6 +3936,7 @@
162E82861A9BDE8A00906325 /* SDLSubscribeButtonResponseSpec.m */,
162E82871A9BDE8A00906325 /* SDLSubscribeVehicleDataResponseSpec.m */,
DA9F7EA91DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m */,
+ 889D0B9524D065EE008AD494 /* SDLSubtleAlertResponseSpec.m */,
162E82881A9BDE8A00906325 /* SDLSyncPDataResponseSpec.m */,
162E82891A9BDE8A00906325 /* SDLSystemRequestResponseSpec.m */,
162E828A1A9BDE8A00906325 /* SDLUnregisterAppInterfaceResponseSpec.m */,
@@ -3903,10 +3980,12 @@
162E82981A9BDE8A00906325 /* SDLDIDResult.m */,
9FA0D00522DF06D3009CF344 /* SDLDisplayCapabilitySpec.m */,
162E82991A9BDE8A00906325 /* SDLDisplayCapabilitiesSpec.m */,
+ 4A1B036E24CF484E008C6B13 /* SDLDriverDistractionCapabilitySpec.m */,
162E829A1A9BDE8A00906325 /* SDLECallInfoSpec.m */,
162E829B1A9BDE8A00906325 /* SDLEmergencyEventSpec.m */,
88B3BFA120DA911E00943565 /* SDLFuelRangeSpec.m */,
1EAA47752036B847000FE74B /* SDLEqualizerSettingsSpec.m */,
+ B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */,
162E829C1A9BDE8A00906325 /* SDLGPSDataSpec.m */,
88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */,
162E829D1A9BDE8A00906325 /* SDLHeadLampStatusSpec.m */,
@@ -3957,7 +4036,6 @@
162E82AA1A9BDE8A00906325 /* SDLSoftButtonSpec.m */,
1EAA477F2036C2C9000FE74B /* SDLStationIDNumberSpec.m */,
162E82AB1A9BDE8A00906325 /* SDLStartTimeSpec.m */,
- 162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */,
5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */,
1EE8C4511F38657D00FDC2CF /* SDLTemperatureSpec.m */,
9FA0CFFC22DF0687009CF344 /* SDLTemplateConfigurationSpec.m */,
@@ -4049,8 +4127,8 @@
4A3BA4D9248E8EBB003E56B8 /* SystemRequest Handler */ = {
isa = PBXGroup;
children = (
- 4A3BA4DA248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.h */,
- 4A3BA4DB248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.m */,
+ 4ABB252424F7E40C0061BF55 /* SDLLifecycleSystemRequestHandler.h */,
+ 4ABB252524F7E40D0061BF55 /* SDLLifecycleSystemRequestHandler.m */,
);
name = "SystemRequest Handler";
sourceTree = "<group>";
@@ -4058,8 +4136,8 @@
4A3BA4DE248EB117003E56B8 /* SyncPData Handler */ = {
isa = PBXGroup;
children = (
- 4A3BA4DF248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.h */,
- 4A3BA4E0248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.m */,
+ 4ABB252024F7E3FB0061BF55 /* SDLLifecycleSyncPDataHandler.h */,
+ 4ABB252124F7E3FB0061BF55 /* SDLLifecycleSyncPDataHandler.m */,
);
name = "SyncPData Handler";
sourceTree = "<group>";
@@ -4077,8 +4155,8 @@
4A3BA4E42490177A003E56B8 /* Mobile HMI State Handler */ = {
isa = PBXGroup;
children = (
- 4A3BA4E524901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.h */,
- 4A3BA4E624901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.m */,
+ 4ABB251C24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.h */,
+ 4ABB251D24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.m */,
);
name = "Mobile HMI State Handler";
sourceTree = "<group>";
@@ -4086,12 +4164,31 @@
4A3BA4E9249147E6003E56B8 /* Protocol Delegate Handler */ = {
isa = PBXGroup;
children = (
- 4A3BA4EA24914801003E56B8 /* SDLLifecycleProtocolHandler.h */,
- 4A3BA4EB24914801003E56B8 /* SDLLifecycleProtocolHandler.m */,
+ 4ABB252824F7E41D0061BF55 /* SDLLifecycleProtocolHandler.h */,
+ 4ABB252924F7E41D0061BF55 /* SDLLifecycleProtocolHandler.m */,
);
name = "Protocol Delegate Handler";
sourceTree = "<group>";
};
+ 4A40253B24FFDA510080E159 /* Operations */ = {
+ isa = PBXGroup;
+ children = (
+ 4A40253C24FFDA590080E159 /* Update Operation */,
+ );
+ name = Operations;
+ sourceTree = "<group>";
+ };
+ 4A40253C24FFDA590080E159 /* Update Operation */ = {
+ isa = PBXGroup;
+ children = (
+ 4A40254024FFDA660080E159 /* SDLTextAndGraphicState.h */,
+ 4A40253D24FFDA660080E159 /* SDLTextAndGraphicState.m */,
+ 4A40253E24FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.h */,
+ 4A40253F24FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.m */,
+ );
+ name = "Update Operation";
+ sourceTree = "<group>";
+ };
4A4AD8A12489422F008FC414 /* Utilities */ = {
isa = PBXGroup;
children = (
@@ -4106,8 +4203,8 @@
4A9D02BB2497EEB400FBE99B /* Custom RPC Adapters */ = {
isa = PBXGroup;
children = (
- 4A9D02BC2497EED400FBE99B /* SDLLifecycleRPCAdapter.h */,
- 4A9D02BD2497EED400FBE99B /* SDLLifecycleRPCAdapter.m */,
+ 4ABB251924F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.h */,
+ 4ABB251824F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.m */,
);
name = "Custom RPC Adapters";
sourceTree = "<group>";
@@ -4115,8 +4212,9 @@
4A9D02C02497F9AA00FBE99B /* Status Manager */ = {
isa = PBXGroup;
children = (
- 5D61FB031A84238A00846EE7 /* SDLLockScreenStatusManager.h */,
- 5D61FB041A84238A00846EE7 /* SDLLockScreenStatusManager.m */,
+ 4ABB255324F7E5460061BF55 /* SDLLockScreenManager.h */,
+ 4ABB254724F7E49D0061BF55 /* SDLLockScreenStatusManager.h */,
+ 4ABB254624F7E49D0061BF55 /* SDLLockScreenStatusManager.m */,
);
name = "Status Manager";
sourceTree = "<group>";
@@ -4148,12 +4246,12 @@
5D07C0342044AD1900D1ECDC /* Request Operations */ = {
isa = PBXGroup;
children = (
- 5D07C02F2044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h */,
- 5D07C0302044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.m */,
- 5D07C02B2044AC9000D1ECDC /* SDLSequentialRPCRequestOperation.h */,
- 5D07C02C2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m */,
- 88F89101221DE29A00E056AD /* SDLAsynchronousRPCOperation.h */,
- 888F86FD221DEE1F0052FE4C /* SDLAsynchronousRPCOperation.m */,
+ 4ABB252E24F7E43A0061BF55 /* SDLAsynchronousRPCOperation.h */,
+ 4ABB252D24F7E43A0061BF55 /* SDLAsynchronousRPCOperation.m */,
+ 4ABB252C24F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.h */,
+ 4ABB252F24F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.m */,
+ 4ABB253424F7E4540061BF55 /* SDLSequentialRPCRequestOperation.h */,
+ 4ABB253524F7E4540061BF55 /* SDLSequentialRPCRequestOperation.m */,
);
name = "Request Operations";
sourceTree = "<group>";
@@ -4167,8 +4265,8 @@
88A098AB2476F08F00A50005 /* Subscribe Button */,
5D0A737D203F23B30001595D /* Text and Graphic */,
5D1BF6AA2047429C00D36881 /* Utilities */,
- 5DAD5F7D204DEDEB0025624C /* SDLScreenManager.h */,
- 5DAD5F7E204DEDEB0025624C /* SDLScreenManager.m */,
+ 4ABB25DA24F7E77C0061BF55 /* SDLScreenManager.h */,
+ 4ABB25DB24F7E77C0061BF55 /* SDLScreenManager.m */,
);
name = Screen;
sourceTree = "<group>";
@@ -4176,8 +4274,8 @@
5D0A7376203F0C8F0001595D /* Configuration */ = {
isa = PBXGroup;
children = (
- 5D8204181BCD80BA00D0A41B /* SDLLockScreenConfiguration.h */,
- 5D8204191BCD80BA00D0A41B /* SDLLockScreenConfiguration.m */,
+ 4ABB254F24F7E52B0061BF55 /* SDLLockScreenConfiguration.h */,
+ 4ABB254E24F7E52B0061BF55 /* SDLLockScreenConfiguration.m */,
);
name = Configuration;
sourceTree = "<group>";
@@ -4185,8 +4283,8 @@
5D0A7377203F0C9E0001595D /* Configuration */ = {
isa = PBXGroup;
children = (
- 5DA23FFE1F325621009C0313 /* SDLStreamingMediaConfiguration.h */,
- 5DA23FFF1F325621009C0313 /* SDLStreamingMediaConfiguration.m */,
+ 4ABB25DE24F7E7980061BF55 /* SDLStreamingMediaConfiguration.h */,
+ 4ABB25DF24F7E7980061BF55 /* SDLStreamingMediaConfiguration.m */,
);
name = Configuration;
sourceTree = "<group>";
@@ -4194,10 +4292,10 @@
5D0A7378203F0CB10001595D /* Configuration */ = {
isa = PBXGroup;
children = (
- 5D6F7A2C1BC5650B0070BF37 /* SDLLifecycleConfiguration.h */,
- 5D6F7A2D1BC5650B0070BF37 /* SDLLifecycleConfiguration.m */,
- E4139D1B1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.h */,
- E4139D1C1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m */,
+ 4ABB251024F7E3A30061BF55 /* SDLLifecycleConfiguration.h */,
+ 4ABB251124F7E3A30061BF55 /* SDLLifecycleConfiguration.m */,
+ 4ABB251424F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.h */,
+ 4ABB251524F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.m */,
);
name = Configuration;
sourceTree = "<group>";
@@ -4205,8 +4303,9 @@
5D0A737D203F23B30001595D /* Text and Graphic */ = {
isa = PBXGroup;
children = (
- 5D0A7372203F0C730001595D /* SDLTextAndGraphicManager.h */,
- 5D0A7373203F0C730001595D /* SDLTextAndGraphicManager.m */,
+ 4A40253B24FFDA510080E159 /* Operations */,
+ 4ABB25CA24F7E74E0061BF55 /* SDLTextAndGraphicManager.h */,
+ 4ABB25CB24F7E74E0061BF55 /* SDLTextAndGraphicManager.m */,
);
name = "Text and Graphic";
sourceTree = "<group>";
@@ -4214,10 +4313,10 @@
5D0A737F203F23D10001595D /* Soft Button */ = {
isa = PBXGroup;
children = (
- 5D0A7380203F23F30001595D /* SDLSoftButtonManager.h */,
- 5D0A7381203F23F30001595D /* SDLSoftButtonManager.m */,
5DA150CA2271FE030032928D /* Buttons */,
5DA150C92271FDF90032928D /* Operations */,
+ 4ABB25BE24F7E7270061BF55 /* SDLSoftButtonManager.h */,
+ 4ABB25BF24F7E7270061BF55 /* SDLSoftButtonManager.m */,
);
name = "Soft Button";
sourceTree = "<group>";
@@ -4248,8 +4347,8 @@
4A3BA4E324900962003E56B8 /* Custom RPC Handlers */,
4A3BA4E9249147E6003E56B8 /* Protocol Delegate Handler */,
5D07C0342044AD1900D1ECDC /* Request Operations */,
- 5D1654581D3E7A1600554D93 /* SDLLifecycleManager.h */,
- 5D1654591D3E7A1600554D93 /* SDLLifecycleManager.m */,
+ 4ABB253924F7E46A0061BF55 /* SDLLifecycleManager.h */,
+ 4ABB253824F7E46A0061BF55 /* SDLLifecycleManager.m */,
);
name = Lifecycle;
sourceTree = "<group>";
@@ -4257,12 +4356,12 @@
5D1BF6AA2047429C00D36881 /* Utilities */ = {
isa = PBXGroup;
children = (
- 4A99D0102475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.h */,
- 4A99D0112475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.m */,
- 4A99D00C247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.h */,
- 4A99D00D247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.m */,
- 2B23352E232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.h */,
- 2B23352F232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.m */,
+ 4ABB25D024F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.h */,
+ 4ABB25D124F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.m */,
+ 4ABB25D224F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.h */,
+ 4ABB25CF24F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.m */,
+ 4ABB25D324F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.h */,
+ 4ABB25CE24F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -4270,10 +4369,10 @@
5D23C9441FCF59F400002CA5 /* AudioManager */ = {
isa = PBXGroup;
children = (
- 5D9FC29C1FD8813900ACA5C2 /* SDLAudioStreamManager.h */,
- 5D9FC29D1FD8813900ACA5C2 /* SDLAudioStreamManager.m */,
- 5D9FC29A1FD8812E00ACA5C2 /* SDLAudioStreamManagerDelegate.h */,
5D23C9471FCF59F400002CA5 /* Utilities */,
+ 4ABB25E324F7E7A90061BF55 /* SDLAudioStreamManager.h */,
+ 4ABB25E424F7E7A90061BF55 /* SDLAudioStreamManager.m */,
+ 4ABB25E224F7E7A90061BF55 /* SDLAudioStreamManagerDelegate.h */,
);
path = AudioManager;
sourceTree = "<group>";
@@ -4281,10 +4380,10 @@
5D23C9471FCF59F400002CA5 /* Utilities */ = {
isa = PBXGroup;
children = (
- 5D9FC2A41FD8815800ACA5C2 /* SDLPCMAudioConverter.h */,
- 5D9FC2A51FD8815800ACA5C2 /* SDLPCMAudioConverter.m */,
- 5D9FC2A11FD8814A00ACA5C2 /* SDLAudioFile.h */,
- 5D9FC2A01FD8814A00ACA5C2 /* SDLAudioFile.m */,
+ 4ABB260F24F7F3520061BF55 /* SDLPCMAudioConverter.h */,
+ 4ABB260E24F7F3520061BF55 /* SDLPCMAudioConverter.m */,
+ 4ABB260B24F7F33F0061BF55 /* SDLAudioFile.h */,
+ 4ABB260A24F7F33F0061BF55 /* SDLAudioFile.m */,
);
path = Utilities;
sourceTree = "<group>";
@@ -4295,10 +4394,10 @@
5D76751022D907F500E8D71A /* Configuration */,
755F175E229F14F70041B9CB /* Dynamic Menu Update Utilities */,
5D339CEC207C08AB000CC364 /* Cells */,
- 5D339CF1207C0ACE000CC364 /* SDLMenuManager.h */,
- 5D339CF2207C0ACE000CC364 /* SDLMenuManager.m */,
- 5DF40B20208E761A00DD6FDA /* SDLVoiceCommandManager.h */,
- 5DF40B21208E761A00DD6FDA /* SDLVoiceCommandManager.m */,
+ 4ABB25A924F7E6E10061BF55 /* SDLMenuManager.h */,
+ 4ABB25A624F7E6E10061BF55 /* SDLMenuManager.m */,
+ 4ABB25A824F7E6E10061BF55 /* SDLVoiceCommandManager.h */,
+ 4ABB25A724F7E6E10061BF55 /* SDLVoiceCommandManager.m */,
);
name = Menu;
sourceTree = "<group>";
@@ -4306,10 +4405,10 @@
5D339CEC207C08AB000CC364 /* Cells */ = {
isa = PBXGroup;
children = (
- 5D339CE8207C066E000CC364 /* SDLMenuCell.h */,
- 5D339CE9207C066E000CC364 /* SDLMenuCell.m */,
- 5D339CED207C08BA000CC364 /* SDLVoiceCommand.h */,
- 5D339CEE207C08BA000CC364 /* SDLVoiceCommand.m */,
+ 4ABB259424F7E6880061BF55 /* SDLMenuCell.h */,
+ 4ABB259524F7E6880061BF55 /* SDLMenuCell.m */,
+ 4ABB259124F7E6820061BF55 /* SDLVoiceCommand.h */,
+ 4ABB259024F7E6820061BF55 /* SDLVoiceCommand.m */,
);
name = Cells;
sourceTree = "<group>";
@@ -4317,8 +4416,8 @@
5D3E48771D6F3DA40000BFEF /* Superclass Operation */ = {
isa = PBXGroup;
children = (
- 5D3E48731D6F3B330000BFEF /* SDLAsynchronousOperation.h */,
- 5D3E48741D6F3B330000BFEF /* SDLAsynchronousOperation.m */,
+ 4ABB24F724F5959E0061BF55 /* SDLAsynchronousOperation.h */,
+ 4ABB24F624F5959E0061BF55 /* SDLAsynchronousOperation.m */,
);
name = "Superclass Operation";
sourceTree = "<group>";
@@ -4326,10 +4425,10 @@
5D3E48781D6F86EC0000BFEF /* Notifications */ = {
isa = PBXGroup;
children = (
- 5D4D67AA1D2ED37A00468B4A /* SDLNotificationDispatcher.h */,
- 5D4D67AB1D2ED37A00468B4A /* SDLNotificationDispatcher.m */,
- 5D3E487D1D6F88A30000BFEF /* SDLRPCNotificationNotification.h */,
- 5D3E487E1D6F88A30000BFEF /* SDLRPCNotificationNotification.m */,
+ 4ABB265C24F7F5F20061BF55 /* SDLNotificationDispatcher.h */,
+ 4ABB265D24F7F5F20061BF55 /* SDLNotificationDispatcher.m */,
+ 4ABB265524F7F5B40061BF55 /* SDLRPCNotificationNotification.h */,
+ 4ABB265424F7F5B40061BF55 /* SDLRPCNotificationNotification.m */,
);
name = Notifications;
sourceTree = "<group>";
@@ -4337,10 +4436,10 @@
5D3E48821D74813B0000BFEF /* Responses */ = {
isa = PBXGroup;
children = (
- 5D3E48791D6F888E0000BFEF /* SDLRPCResponseNotification.h */,
- 5D3E487A1D6F888E0000BFEF /* SDLRPCResponseNotification.m */,
- 5D4D67AE1D2FE2F900468B4A /* SDLResponseDispatcher.h */,
- 5D4D67AF1D2FE2F900468B4A /* SDLResponseDispatcher.m */,
+ 4ABB265924F7F5C10061BF55 /* SDLRPCResponseNotification.h */,
+ 4ABB265824F7F5C10061BF55 /* SDLRPCResponseNotification.m */,
+ 4ABB266024F7F6000061BF55 /* SDLResponseDispatcher.h */,
+ 4ABB266124F7F6000061BF55 /* SDLResponseDispatcher.m */,
);
name = Responses;
sourceTree = "<group>";
@@ -4426,7 +4525,7 @@
5D4631051F2125F70092EFDC /* @protocols */ = {
isa = PBXGroup;
children = (
- 5D4631031F2120A30092EFDC /* SDLControlFramePayloadType.h */,
+ 4A8BD35924F94603000945E3 /* SDLControlFramePayloadType.h */,
);
name = "@protocols";
sourceTree = "<group>";
@@ -4434,10 +4533,10 @@
5D46310D1F2133940092EFDC /* RPC Service */ = {
isa = PBXGroup;
children = (
- 5DA49CE31F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.h */,
- 5DA49CE41F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.m */,
- 5D4631061F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.h */,
- 5D4631071F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.m */,
+ 4A8BD34C24F945E8000945E3 /* SDLControlFramePayloadRPCStartService.h */,
+ 4A8BD34924F945E8000945E3 /* SDLControlFramePayloadRPCStartService.m */,
+ 4A8BD34B24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.h */,
+ 4A8BD34A24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.m */,
);
name = "RPC Service";
sourceTree = "<group>";
@@ -4445,14 +4544,14 @@
5D4631161F223DEE0092EFDC /* General */ = {
isa = PBXGroup;
children = (
- 5D4631121F2136B60092EFDC /* SDLControlFramePayloadNak.h */,
- 5D4631131F2136B60092EFDC /* SDLControlFramePayloadNak.m */,
- 5DB9964C1F26886C002D8795 /* SDLControlFramePayloadEndService.h */,
- 5DB9964D1F26886C002D8795 /* SDLControlFramePayloadEndService.m */,
- EE7B6121205BF69C00E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.h */,
- EE7B6122205BF6C800E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.m */,
- EEB1932D205028B700A8940C /* SDLControlFramePayloadTransportEventUpdate.h */,
- EEB1932F205028BE00A8940C /* SDLControlFramePayloadTransportEventUpdate.m */,
+ 4A8BD33E24F945CC000945E3 /* SDLControlFramePayloadEndService.h */,
+ 4A8BD33B24F945CC000945E3 /* SDLControlFramePayloadEndService.m */,
+ 4A8BD33C24F945CC000945E3 /* SDLControlFramePayloadNak.h */,
+ 4A8BD33A24F945CB000945E3 /* SDLControlFramePayloadNak.m */,
+ 4A8BD33924F945CB000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.h */,
+ 4A8BD34024F945CC000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.m */,
+ 4A8BD33D24F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.h */,
+ 4A8BD33F24F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.m */,
);
name = General;
sourceTree = "<group>";
@@ -4495,8 +4594,8 @@
5D1FF29621304514000EB9B4 /* ProxyManager.m */,
5D1FF29821304514000EB9B4 /* RPCPermissionsManager.h */,
5D1FF29221304513000EB9B4 /* RPCPermissionsManager.m */,
- 889E7BB0249D0877002E4BE1 /* SubscribeButtonManager.h */,
- 889E7BB1249D0877002E4BE1 /* SubscribeButtonManager.m */,
+ 4A40255A250026620080E159 /* SubscribeButtonManager.h */,
+ 4A40255B250026620080E159 /* SubscribeButtonManager.m */,
5D1FF29021304513000EB9B4 /* VehicleDataManager.h */,
5D1FF29921304514000EB9B4 /* VehicleDataManager.m */,
);
@@ -4521,18 +4620,18 @@
5D5934FA1A851AC900687FB9 /* @protocols */,
5D5935011A851D7E00687FB9 /* Header */,
5D5935021A851D8700687FB9 /* Message */,
- 5D61FAC01A84238A00846EE7 /* SDLFunctionID.h */,
- 5D61FAC11A84238A00846EE7 /* SDLFunctionID.m */,
- 5D61FB561A84238B00846EE7 /* SDLProtocol.h */,
- 5D61FB571A84238B00846EE7 /* SDLProtocol.m */,
- 5DAB5F542098E5D100A020C8 /* SDLProtocolConstants.h */,
- 5DAB5F552098E5D100A020C8 /* SDLProtocolConstants.m */,
- 5D61FB5D1A84238B00846EE7 /* SDLProtocolMessageAssembler.h */,
- 5D61FB5E1A84238B00846EE7 /* SDLProtocolMessageAssembler.m */,
- 5D61FB5F1A84238B00846EE7 /* SDLProtocolMessageDisassembler.h */,
- 5D61FB601A84238B00846EE7 /* SDLProtocolMessageDisassembler.m */,
- 5D61FB611A84238B00846EE7 /* SDLProtocolReceivedMessageRouter.h */,
- 5D61FB621A84238B00846EE7 /* SDLProtocolReceivedMessageRouter.m */,
+ 4A8BD37B24F94697000945E3 /* SDLFunctionID.h */,
+ 4A8BD37C24F94697000945E3 /* SDLFunctionID.m */,
+ 4A8BD36F24F9465E000945E3 /* SDLProtocol.h */,
+ 4A8BD37224F9465E000945E3 /* SDLProtocol.m */,
+ 4A8BD37824F9468B000945E3 /* SDLProtocolConstants.h */,
+ 4A8BD37724F9468B000945E3 /* SDLProtocolConstants.m */,
+ 4A8BD36A24F94636000945E3 /* SDLProtocolMessageAssembler.h */,
+ 4A8BD36924F94636000945E3 /* SDLProtocolMessageAssembler.m */,
+ 4A8BD36724F94636000945E3 /* SDLProtocolMessageDisassembler.h */,
+ 4A8BD36824F94636000945E3 /* SDLProtocolMessageDisassembler.m */,
+ 4A8BD37124F9465E000945E3 /* SDLProtocolReceivedMessageRouter.h */,
+ 4A8BD37024F9465E000945E3 /* SDLProtocolReceivedMessageRouter.m */,
);
name = Protocol;
sourceTree = "<group>";
@@ -4541,12 +4640,12 @@
isa = PBXGroup;
children = (
5D5934FF1A851B8400687FB9 /* Superclasses */,
+ 5D5934F41A85165E00687FB9 /* Enums */,
+ 5D5934F81A8519C300687FB9 /* Notification */,
5D5935041A851E1A00687FB9 /* Payload */,
5D5934F11A85162800687FB9 /* Requests */,
5D5934F21A85163200687FB9 /* Responses */,
5D5934F31A85164500687FB9 /* Structs */,
- 5D5934F41A85165E00687FB9 /* Enums */,
- 5D5934F81A8519C300687FB9 /* Notification */,
);
name = RPCs;
sourceTree = "<group>";
@@ -4565,132 +4664,134 @@
5D5934F11A85162800687FB9 /* Requests */ = {
isa = PBXGroup;
children = (
- 5D61FA401A84238A00846EE7 /* SDLAddCommand.h */,
- 5D61FA411A84238A00846EE7 /* SDLAddCommand.m */,
- 5D61FA441A84238A00846EE7 /* SDLAddSubMenu.h */,
- 5D61FA451A84238A00846EE7 /* SDLAddSubMenu.m */,
- 5D61FA4A1A84238A00846EE7 /* SDLAlert.h */,
- 5D61FA4B1A84238A00846EE7 /* SDLAlert.m */,
- 5D61FA4C1A84238A00846EE7 /* SDLAlertManeuver.h */,
- 5D61FA4D1A84238A00846EE7 /* SDLAlertManeuver.m */,
- 1E5AD07E1F20B73E0029B8AF /* SDLButtonPress.h */,
- 1E5AD07F1F20B73E0029B8AF /* SDLButtonPress.m */,
- 88EF8EB522D8E02E00CB06C2 /* SDLCancelInteraction.h */,
- 88EF8EB622D8E02E00CB06C2 /* SDLCancelInteraction.m */,
- 5D61FA6E1A84238A00846EE7 /* SDLChangeRegistration.h */,
- 5D61FA6F1A84238A00846EE7 /* SDLChangeRegistration.m */,
- 888DBAE922D52431002A0AE2 /* SDLCloseApplication.h */,
- 888DBAEA22D52431002A0AE2 /* SDLCloseApplication.m */,
- 9FD334DE22DC6E7500F62736 /* SDLCreateWindow.h */,
- 9FD334DF22DC6E7500F62736 /* SDLCreateWindow.m */,
- 5D61FA7E1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.h */,
- 5D61FA7F1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.m */,
- 5D61FA851A84238A00846EE7 /* SDLDeleteCommand.h */,
- 5D61FA861A84238A00846EE7 /* SDLDeleteCommand.m */,
- 5D61FA891A84238A00846EE7 /* SDLDeleteFile.h */,
- 5D61FA8A1A84238A00846EE7 /* SDLDeleteFile.m */,
- 9FE2470722D77A3600F8D2FC /* SDLDeleteWindow.h */,
- 9FE2470822D77A3600F8D2FC /* SDLDeleteWindow.m */,
- 5D61FA8D1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.h */,
- 5D61FA8E1A84238A00846EE7 /* SDLDeleteInteractionChoiceSet.m */,
- 5D61FA911A84238A00846EE7 /* SDLDeleteSubMenu.h */,
- 5D61FA921A84238A00846EE7 /* SDLDeleteSubMenu.m */,
- 5D61FA9B1A84238A00846EE7 /* SDLDiagnosticMessage.h */,
- 5D61FA9C1A84238A00846EE7 /* SDLDiagnosticMessage.m */,
- 5D8B174D1AC9D266006A6E1C /* SDLDialNumber.h */,
- 5D8B174E1AC9D266006A6E1C /* SDLDialNumber.m */,
- 5D61FAB11A84238A00846EE7 /* SDLEncodedSyncPData.h */,
- 5D61FAB21A84238A00846EE7 /* SDLEncodedSyncPData.m */,
- 5D61FAB61A84238A00846EE7 /* SDLEndAudioPassThru.h */,
- 5D61FAB71A84238A00846EE7 /* SDLEndAudioPassThru.m */,
- 88A5E7F5220B5BBC00495E8A /* SDLGetAppServiceData.h */,
- 88A5E7F6220B5BBC00495E8A /* SDLGetAppServiceData.m */,
- 8881AFB62225E5EE00EA870B /* SDLGetCloudAppProperties.h */,
- 8881AFB72225E5EE00EA870B /* SDLGetCloudAppProperties.m */,
- 5D61FAC41A84238A00846EE7 /* SDLGetDTCs.h */,
- 5D61FAC51A84238A00846EE7 /* SDLGetDTCs.m */,
- 8855F9E7220CBA9200A5C897 /* SDLGetFile.h */,
- 8855F9E8220CBA9200A5C897 /* SDLGetFile.m */,
- 1E5AD0861F20B9AA0029B8AF /* SDLGetInteriorVehicleData.h */,
- 1E5AD0871F20B9AA0029B8AF /* SDLGetInteriorVehicleData.m */,
- 008DB35F22EA7481003F458C /* SDLGetInteriorVehicleDataConsent.h */,
- 008DB36022EA7481003F458C /* SDLGetInteriorVehicleDataConsent.m */,
- 5D00AC6D1F1511B9004000D9 /* SDLGetSystemCapability.h */,
- 5D00AC6E1F1511B9004000D9 /* SDLGetSystemCapability.m */,
- 5D61FAC81A84238A00846EE7 /* SDLGetVehicleData.h */,
- 5D61FAC91A84238A00846EE7 /* SDLGetVehicleData.m */,
- DA9F7E6D1DCBFFDB00ACAE48 /* SDLGetWayPoints.h */,
- DA9F7E6E1DCBFFDB00ACAE48 /* SDLGetWayPoints.m */,
- 5D61FAFF1A84238A00846EE7 /* SDLListFiles.h */,
- 5D61FB001A84238A00846EE7 /* SDLListFiles.m */,
- 88AF11DA220B6B3D00A59985 /* SDLPerformAppServiceInteraction.h */,
- 88AF11DB220B6B3D00A59985 /* SDLPerformAppServiceInteraction.m */,
- 5D61FB381A84238B00846EE7 /* SDLPerformAudioPassThru.h */,
- 5D61FB391A84238B00846EE7 /* SDLPerformAudioPassThru.m */,
- 5D61FB3C1A84238B00846EE7 /* SDLPerformInteraction.h */,
- 5D61FB3D1A84238B00846EE7 /* SDLPerformInteraction.m */,
- 884E701921FB8D0F008D53BA /* SDLPublishAppService.h */,
- 884E701A21FB8D0F008D53BA /* SDLPublishAppService.m */,
- 5D61FB681A84238B00846EE7 /* SDLPutFile.h */,
- 5D61FB691A84238B00846EE7 /* SDLPutFile.m */,
- 5D61FB6C1A84238B00846EE7 /* SDLReadDID.h */,
- 5D61FB6D1A84238B00846EE7 /* SDLReadDID.m */,
- 5D61FB701A84238B00846EE7 /* SDLRegisterAppInterface.h */,
- 5D61FB711A84238B00846EE7 /* SDLRegisterAppInterface.m */,
- 008DB36722EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.h */,
- 008DB36822EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.m */,
- 5D61FB761A84238B00846EE7 /* SDLResetGlobalProperties.h */,
- 5D61FB771A84238B00846EE7 /* SDLResetGlobalProperties.m */,
- 5D61FB8E1A84238B00846EE7 /* SDLScrollableMessage.h */,
- 5D61FB8F1A84238B00846EE7 /* SDLScrollableMessage.m */,
- 88EED83C1F33C5A400E6C42E /* SDLSendHapticData.h */,
- 88EED83D1F33C5A400E6C42E /* SDLSendHapticData.m */,
- 5DCF76F31ACDBAD300BB647B /* SDLSendLocation.h */,
- 5DCF76F41ACDBAD300BB647B /* SDLSendLocation.m */,
- 5D61FB921A84238B00846EE7 /* SDLSetAppIcon.h */,
- 5D61FB931A84238B00846EE7 /* SDLSetAppIcon.m */,
- 8881AFAA2225D61900EA870B /* SDLSetCloudAppProperties.h */,
- 8881AFAB2225D61900EA870B /* SDLSetCloudAppProperties.m */,
- 5D61FB961A84238B00846EE7 /* SDLSetDisplayLayout.h */,
- 5D61FB971A84238B00846EE7 /* SDLSetDisplayLayout.m */,
- 5D61FB9A1A84238B00846EE7 /* SDLSetGlobalProperties.h */,
- 5D61FB9B1A84238B00846EE7 /* SDLSetGlobalProperties.m */,
- 1E5AD08E1F20BE820029B8AF /* SDLSetInteriorVehicleData.h */,
- 1E5AD08F1F20BE820029B8AF /* SDLSetInteriorVehicleData.m */,
- 5D61FB9E1A84238B00846EE7 /* SDLSetMediaClockTimer.h */,
- 5D61FB9F1A84238B00846EE7 /* SDLSetMediaClockTimer.m */,
- 5D61FBA21A84238B00846EE7 /* SDLShow.h */,
- 5D61FBA31A84238B00846EE7 /* SDLShow.m */,
- 7538764D22D8CEDB00FE8484 /* SDLShowAppMenu.h */,
- 7538764E22D8CEDB00FE8484 /* SDLShowAppMenu.m */,
- 5D61FBA41A84238B00846EE7 /* SDLShowConstantTBT.h */,
- 5D61FBA51A84238B00846EE7 /* SDLShowConstantTBT.m */,
- 5D61FBAE1A84238B00846EE7 /* SDLSlider.h */,
- 5D61FBAF1A84238B00846EE7 /* SDLSlider.m */,
- 5D61FBB81A84238B00846EE7 /* SDLSpeak.h */,
- 5D61FBB91A84238B00846EE7 /* SDLSpeak.m */,
- 5D61FBC01A84238B00846EE7 /* SDLSubscribeButton.h */,
- 5D61FBC11A84238B00846EE7 /* SDLSubscribeButton.m */,
- 5D61FBC41A84238B00846EE7 /* SDLSubscribeVehicleData.h */,
- 5D61FBC51A84238B00846EE7 /* SDLSubscribeVehicleData.m */,
- DA9F7E851DCC049900ACAE48 /* SDLSubscribeWayPoints.h */,
- DA9F7E861DCC049900ACAE48 /* SDLSubscribeWayPoints.m */,
- 5D61FBCA1A84238B00846EE7 /* SDLSyncPData.h */,
- 5D61FBCB1A84238B00846EE7 /* SDLSyncPData.m */,
- 5D61FBD21A84238B00846EE7 /* SDLSystemRequest.h */,
- 5D61FBD31A84238B00846EE7 /* SDLSystemRequest.m */,
- 8BA12B0F22DCCE1F00371E82 /* SDLUnpublishAppService.h */,
- 8BA12B1022DCCE1F00371E82 /* SDLUnpublishAppService.m */,
- 5D61FBF61A84238C00846EE7 /* SDLUnregisterAppInterface.h */,
- 5D61FBF71A84238C00846EE7 /* SDLUnregisterAppInterface.m */,
- 5D61FBFA1A84238C00846EE7 /* SDLUnsubscribeButton.h */,
- 5D61FBFB1A84238C00846EE7 /* SDLUnsubscribeButton.m */,
- 5D61FBFE1A84238C00846EE7 /* SDLUnsubscribeVehicleData.h */,
- 5D61FBFF1A84238C00846EE7 /* SDLUnsubscribeVehicleData.m */,
- DA9F7E911DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.h */,
- DA9F7E921DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.m */,
- 5D61FC041A84238C00846EE7 /* SDLUpdateTurnList.h */,
- 5D61FC051A84238C00846EE7 /* SDLUpdateTurnList.m */,
+ 4ABB28F824F82BE90061BF55 /* SDLAddCommand.h */,
+ 4ABB28F224F82BE80061BF55 /* SDLAddCommand.m */,
+ 4ABB28F424F82BE80061BF55 /* SDLAddSubMenu.h */,
+ 4ABB28F924F82BE90061BF55 /* SDLAddSubMenu.m */,
+ 4ABB28FB24F82BE90061BF55 /* SDLAlert.h */,
+ 4ABB28F524F82BE80061BF55 /* SDLAlert.m */,
+ 4ABB28F624F82BE90061BF55 /* SDLAlertManeuver.h */,
+ 4ABB28FA24F82BE90061BF55 /* SDLAlertManeuver.m */,
+ 4ABB28F324F82BE80061BF55 /* SDLButtonPress.h */,
+ 4ABB28F724F82BE90061BF55 /* SDLButtonPress.m */,
+ 4ABB290824F842140061BF55 /* SDLCancelInteraction.h */,
+ 4ABB290D24F842150061BF55 /* SDLCancelInteraction.m */,
+ 4ABB290724F842140061BF55 /* SDLChangeRegistration.h */,
+ 4ABB290E24F842150061BF55 /* SDLChangeRegistration.m */,
+ 4ABB290B24F842150061BF55 /* SDLCloseApplication.h */,
+ 4ABB290C24F842150061BF55 /* SDLCloseApplication.m */,
+ 4ABB290924F842140061BF55 /* SDLCreateInteractionChoiceSet.h */,
+ 4ABB290624F842140061BF55 /* SDLCreateInteractionChoiceSet.m */,
+ 4ABB291B24F842560061BF55 /* SDLCreateWindow.h */,
+ 4ABB291A24F842560061BF55 /* SDLCreateWindow.m */,
+ 4ABB290F24F842150061BF55 /* SDLDeleteCommand.h */,
+ 4ABB290A24F842140061BF55 /* SDLDeleteCommand.m */,
+ 4ABB292324F8429F0061BF55 /* SDLDeleteFile.h */,
+ 4ABB292624F8429F0061BF55 /* SDLDeleteFile.m */,
+ 4ABB292024F8429F0061BF55 /* SDLDeleteInteractionChoiceSet.h */,
+ 4ABB291F24F8429E0061BF55 /* SDLDeleteInteractionChoiceSet.m */,
+ 4ABB292724F842A00061BF55 /* SDLDeleteSubMenu.h */,
+ 4ABB292424F8429F0061BF55 /* SDLDeleteSubMenu.m */,
+ 4ABB292824F842A00061BF55 /* SDLDeleteWindow.h */,
+ 4ABB292124F8429F0061BF55 /* SDLDeleteWindow.m */,
+ 4ABB292224F8429F0061BF55 /* SDLDiagnosticMessage.h */,
+ 4ABB291E24F8429E0061BF55 /* SDLDiagnosticMessage.m */,
+ 4ABB292924F842A00061BF55 /* SDLDialNumber.h */,
+ 4ABB292524F8429F0061BF55 /* SDLDialNumber.m */,
+ 4ABB293924F843410061BF55 /* SDLEncodedSyncPData.h */,
+ 4ABB293724F843410061BF55 /* SDLEncodedSyncPData.m */,
+ 4ABB293C24F843420061BF55 /* SDLEndAudioPassThru.h */,
+ 4ABB294424F843430061BF55 /* SDLEndAudioPassThru.m */,
+ 4ABB294224F843430061BF55 /* SDLGetAppServiceData.h */,
+ 4ABB293824F843410061BF55 /* SDLGetAppServiceData.m */,
+ 4ABB294524F843430061BF55 /* SDLGetCloudAppProperties.h */,
+ 4ABB294324F843430061BF55 /* SDLGetCloudAppProperties.m */,
+ 4ABB293D24F843420061BF55 /* SDLGetDTCs.h */,
+ 4ABB294124F843430061BF55 /* SDLGetDTCs.m */,
+ 4ABB293A24F843410061BF55 /* SDLGetFile.h */,
+ 4ABB293F24F843420061BF55 /* SDLGetFile.m */,
+ 4ABB294024F843420061BF55 /* SDLGetInteriorVehicleData.h */,
+ 4ABB293E24F843420061BF55 /* SDLGetInteriorVehicleData.m */,
+ 4ABB293624F843400061BF55 /* SDLGetInteriorVehicleDataConsent.h */,
+ 4ABB293B24F843410061BF55 /* SDLGetInteriorVehicleDataConsent.m */,
+ 4ABB295B24F844010061BF55 /* SDLGetSystemCapability.h */,
+ 4ABB295724F844000061BF55 /* SDLGetSystemCapability.m */,
+ 4ABB295624F844000061BF55 /* SDLGetVehicleData.h */,
+ 4ABB295C24F844010061BF55 /* SDLGetVehicleData.m */,
+ 4ABB295A24F844010061BF55 /* SDLGetWayPoints.h */,
+ 4ABB295924F844010061BF55 /* SDLGetWayPoints.m */,
+ 4ABB295D24F844010061BF55 /* SDLListFiles.h */,
+ 4ABB295824F844000061BF55 /* SDLListFiles.m */,
+ 4ABB296B24F844D10061BF55 /* SDLPerformAppServiceInteraction.h */,
+ 4ABB296924F844D10061BF55 /* SDLPerformAppServiceInteraction.m */,
+ 4ABB296D24F844D20061BF55 /* SDLPerformAudioPassThru.h */,
+ 4ABB296F24F844D20061BF55 /* SDLPerformAudioPassThru.m */,
+ 4ABB296A24F844D10061BF55 /* SDLPerformInteraction.h */,
+ 4ABB296624F844D00061BF55 /* SDLPerformInteraction.m */,
+ 4ABB296724F844D10061BF55 /* SDLPublishAppService.h */,
+ 4ABB296C24F844D20061BF55 /* SDLPublishAppService.m */,
+ 4ABB297024F844D20061BF55 /* SDLPutFile.h */,
+ 4ABB297124F844D30061BF55 /* SDLPutFile.m */,
+ 4ABB296824F844D10061BF55 /* SDLReadDID.h */,
+ 4ABB296E24F844D20061BF55 /* SDLReadDID.m */,
+ 4ABB298624F845430061BF55 /* SDLRegisterAppInterface.h */,
+ 4ABB298024F845410061BF55 /* SDLRegisterAppInterface.m */,
+ 4ABB297E24F845410061BF55 /* SDLReleaseInteriorVehicleDataModule.h */,
+ 4ABB298824F845430061BF55 /* SDLReleaseInteriorVehicleDataModule.m */,
+ 4ABB298724F845430061BF55 /* SDLResetGlobalProperties.h */,
+ 4ABB298524F845420061BF55 /* SDLResetGlobalProperties.m */,
+ 4ABB298D24F845440061BF55 /* SDLScrollableMessage.h */,
+ 4ABB298224F845420061BF55 /* SDLScrollableMessage.m */,
+ 4ABB297F24F845410061BF55 /* SDLSendHapticData.h */,
+ 4ABB298A24F845430061BF55 /* SDLSendHapticData.m */,
+ 4ABB298124F845420061BF55 /* SDLSendLocation.h */,
+ 4ABB298424F845420061BF55 /* SDLSendLocation.m */,
+ 4ABB298324F845420061BF55 /* SDLSetAppIcon.h */,
+ 4ABB298924F845430061BF55 /* SDLSetAppIcon.m */,
+ 4ABB298C24F845440061BF55 /* SDLSetCloudAppProperties.h */,
+ 4ABB298B24F845440061BF55 /* SDLSetCloudAppProperties.m */,
+ 4ABB29A024F845D70061BF55 /* SDLSetDisplayLayout.h */,
+ 4ABB299F24F845D70061BF55 /* SDLSetDisplayLayout.m */,
+ 4ABB29A924F845D90061BF55 /* SDLSetGlobalProperties.h */,
+ 4ABB29AB24F845DA0061BF55 /* SDLSetGlobalProperties.m */,
+ 4ABB29A424F845D80061BF55 /* SDLSetInteriorVehicleData.h */,
+ 4ABB299E24F845D70061BF55 /* SDLSetInteriorVehicleData.m */,
+ 4ABB29AD24F845DA0061BF55 /* SDLSetMediaClockTimer.h */,
+ 4ABB29A624F845D90061BF55 /* SDLSetMediaClockTimer.m */,
+ 4ABB29A124F845D70061BF55 /* SDLShow.h */,
+ 4ABB29AF24F845DA0061BF55 /* SDLShow.m */,
+ 4ABB29AA24F845D90061BF55 /* SDLShowAppMenu.h */,
+ 4ABB29A724F845D90061BF55 /* SDLShowAppMenu.m */,
+ 4ABB29AE24F845DA0061BF55 /* SDLShowConstantTBT.h */,
+ 4ABB29A324F845D80061BF55 /* SDLShowConstantTBT.m */,
+ 4ABB29A524F845D80061BF55 /* SDLSlider.h */,
+ 4ABB29AC24F845DA0061BF55 /* SDLSlider.m */,
+ 4ABB29A824F845D90061BF55 /* SDLSpeak.h */,
+ 4ABB29A224F845D80061BF55 /* SDLSpeak.m */,
+ 4ABB29C724F846860061BF55 /* SDLSubscribeButton.h */,
+ 4ABB29CD24F846870061BF55 /* SDLSubscribeButton.m */,
+ 4ABB29CA24F846860061BF55 /* SDLSubscribeVehicleData.h */,
+ 4ABB29C224F846850061BF55 /* SDLSubscribeVehicleData.m */,
+ 4ABB29C924F846860061BF55 /* SDLSubscribeWayPoints.h */,
+ 4ABB29D024F846880061BF55 /* SDLSubscribeWayPoints.m */,
+ 4ABB29C424F846850061BF55 /* SDLSubtleAlert.h */,
+ 4ABB29C624F846850061BF55 /* SDLSubtleAlert.m */,
+ 4ABB29C524F846850061BF55 /* SDLSyncPData.h */,
+ 4ABB29C324F846850061BF55 /* SDLSyncPData.m */,
+ 4ABB29CF24F846870061BF55 /* SDLSystemRequest.h */,
+ 4ABB29C824F846860061BF55 /* SDLSystemRequest.m */,
+ 4ABB29CE24F846870061BF55 /* SDLUnpublishAppService.h */,
+ 4ABB29D124F846880061BF55 /* SDLUnpublishAppService.m */,
+ 4ABB29CC24F846870061BF55 /* SDLUnregisterAppInterface.h */,
+ 4ABB29CB24F846860061BF55 /* SDLUnregisterAppInterface.m */,
+ 4ABB29E224F847340061BF55 /* SDLUnsubscribeButton.h */,
+ 4ABB29E724F847350061BF55 /* SDLUnsubscribeButton.m */,
+ 4ABB29E424F847350061BF55 /* SDLUnsubscribeVehicleData.h */,
+ 4ABB29E524F847350061BF55 /* SDLUnsubscribeVehicleData.m */,
+ 4ABB29E624F847350061BF55 /* SDLUnsubscribeWayPoints.h */,
+ 4ABB29E324F847340061BF55 /* SDLUnsubscribeWayPoints.m */,
+ 4ABB29E924F847360061BF55 /* SDLUpdateTurnList.h */,
+ 4ABB29E824F847350061BF55 /* SDLUpdateTurnList.m */,
);
name = Requests;
sourceTree = "<group>";
@@ -4698,134 +4799,136 @@
5D5934F21A85163200687FB9 /* Responses */ = {
isa = PBXGroup;
children = (
- 5D61FA421A84238A00846EE7 /* SDLAddCommandResponse.h */,
- 5D61FA431A84238A00846EE7 /* SDLAddCommandResponse.m */,
- 5D61FA461A84238A00846EE7 /* SDLAddSubMenuResponse.h */,
- 5D61FA471A84238A00846EE7 /* SDLAddSubMenuResponse.m */,
- 5D61FA4E1A84238A00846EE7 /* SDLAlertManeuverResponse.h */,
- 5D61FA4F1A84238A00846EE7 /* SDLAlertManeuverResponse.m */,
- 5D61FA501A84238A00846EE7 /* SDLAlertResponse.h */,
- 5D61FA511A84238A00846EE7 /* SDLAlertResponse.m */,
- 1E5AD0821F20B9290029B8AF /* SDLButtonPressResponse.h */,
- 1E5AD0831F20B9290029B8AF /* SDLButtonPressResponse.m */,
- 88EF8EBB22D8FE5800CB06C2 /* SDLCancelInteractionResponse.h */,
- 88EF8EBC22D8FE5800CB06C2 /* SDLCancelInteractionResponse.m */,
- 5D61FA701A84238A00846EE7 /* SDLChangeRegistrationResponse.h */,
- 5D61FA711A84238A00846EE7 /* SDLChangeRegistrationResponse.m */,
- 888DBAED22D528DE002A0AE2 /* SDLCloseApplicationResponse.h */,
- 888DBAEE22D528DE002A0AE2 /* SDLCloseApplicationResponse.m */,
- 5D61FA801A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.h */,
- 5D61FA811A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.m */,
- 9FE2470F22D77AA400F8D2FC /* SDLCreateWindowResponse.h */,
- 9FE2471022D77AA400F8D2FC /* SDLCreateWindowResponse.m */,
- 5D61FA871A84238A00846EE7 /* SDLDeleteCommandResponse.h */,
- 5D61FA881A84238A00846EE7 /* SDLDeleteCommandResponse.m */,
- 5D61FA8B1A84238A00846EE7 /* SDLDeleteFileResponse.h */,
- 5D61FA8C1A84238A00846EE7 /* SDLDeleteFileResponse.m */,
- 5D61FA8F1A84238A00846EE7 /* SDLDeleteInteractionChoiceSetResponse.h */,
- 5D61FA901A84238A00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m */,
- 5D61FA931A84238A00846EE7 /* SDLDeleteSubMenuResponse.h */,
- 5D61FA941A84238A00846EE7 /* SDLDeleteSubMenuResponse.m */,
- 9FE2470B22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h */,
- 9FE2470C22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m */,
- 5D61FA9D1A84238A00846EE7 /* SDLDiagnosticMessageResponse.h */,
- 5D61FA9E1A84238A00846EE7 /* SDLDiagnosticMessageResponse.m */,
- 5D8B17511AC9E11B006A6E1C /* SDLDialNumberResponse.h */,
- 5D8B17521AC9E11B006A6E1C /* SDLDialNumberResponse.m */,
- 5D61FAB31A84238A00846EE7 /* SDLEncodedSyncPDataResponse.h */,
- 5D61FAB41A84238A00846EE7 /* SDLEncodedSyncPDataResponse.m */,
- 5D61FAB81A84238A00846EE7 /* SDLEndAudioPassThruResponse.h */,
- 5D61FAB91A84238A00846EE7 /* SDLEndAudioPassThruResponse.m */,
- 5D61FAC21A84238A00846EE7 /* SDLGenericResponse.h */,
- 5D61FAC31A84238A00846EE7 /* SDLGenericResponse.m */,
- 88A5E7FB220B642200495E8A /* SDLGetAppServiceDataResponse.h */,
- 88A5E7FC220B642200495E8A /* SDLGetAppServiceDataResponse.m */,
- 8881AFBC2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h */,
- 8881AFBD2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m */,
- 5D61FAC61A84238A00846EE7 /* SDLGetDTCsResponse.h */,
- 5D61FAC71A84238A00846EE7 /* SDLGetDTCsResponse.m */,
- 88A7A3C4220CCEA100A9E435 /* SDLGetFileResponse.h */,
- 88A7A3C5220CCEA100A9E435 /* SDLGetFileResponse.m */,
- 1E5AD08A1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.h */,
- 1E5AD08B1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.m */,
- 5D00AC711F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h */,
- 5D00AC721F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m */,
- 5D61FACA1A84238A00846EE7 /* SDLGetVehicleDataResponse.h */,
- 5D61FACB1A84238A00846EE7 /* SDLGetVehicleDataResponse.m */,
- 008DB36322EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.h */,
- 008DB36422EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.m */,
- DA9F7E711DCC004C00ACAE48 /* SDLGetWayPointsResponse.h */,
- DA9F7E721DCC004C00ACAE48 /* SDLGetWayPointsResponse.m */,
- 5D61FB011A84238A00846EE7 /* SDLListFilesResponse.h */,
- 5D61FB021A84238A00846EE7 /* SDLListFilesResponse.m */,
- 88665B67220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.h */,
- 88665B68220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.m */,
- 5D61FB3A1A84238B00846EE7 /* SDLPerformAudioPassThruResponse.h */,
- 5D61FB3B1A84238B00846EE7 /* SDLPerformAudioPassThruResponse.m */,
- 5D61FB3E1A84238B00846EE7 /* SDLPerformInteractionResponse.h */,
- 5D61FB3F1A84238B00846EE7 /* SDLPerformInteractionResponse.m */,
- 88EEC5B9220A327B005AA2F9 /* SDLPublishAppServiceResponse.h */,
- 88EEC5BA220A327B005AA2F9 /* SDLPublishAppServiceResponse.m */,
- 5D61FB6A1A84238B00846EE7 /* SDLPutFileResponse.h */,
- 5D61FB6B1A84238B00846EE7 /* SDLPutFileResponse.m */,
- 5D61FB6E1A84238B00846EE7 /* SDLReadDIDResponse.h */,
- 5D61FB6F1A84238B00846EE7 /* SDLReadDIDResponse.m */,
- 5D61FB721A84238B00846EE7 /* SDLRegisterAppInterfaceResponse.h */,
- 5D61FB731A84238B00846EE7 /* SDLRegisterAppInterfaceResponse.m */,
- 008DB36B22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.h */,
- 008DB36C22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.m */,
- 5D61FB781A84238B00846EE7 /* SDLResetGlobalPropertiesResponse.h */,
- 5D61FB791A84238B00846EE7 /* SDLResetGlobalPropertiesResponse.m */,
- 5D61FB901A84238B00846EE7 /* SDLScrollableMessageResponse.h */,
- 5D61FB911A84238B00846EE7 /* SDLScrollableMessageResponse.m */,
- 8877F5EC1F34A72200DC128A /* SDLSendHapticDataResponse.h */,
- 8877F5ED1F34A72200DC128A /* SDLSendHapticDataResponse.m */,
- 5DCF76F71ACDD7CD00BB647B /* SDLSendLocationResponse.h */,
- 5DCF76F81ACDD7CD00BB647B /* SDLSendLocationResponse.m */,
- 5D61FB941A84238B00846EE7 /* SDLSetAppIconResponse.h */,
- 5D61FB951A84238B00846EE7 /* SDLSetAppIconResponse.m */,
- 8881AFB02225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h */,
- 8881AFB12225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m */,
- 5D61FB981A84238B00846EE7 /* SDLSetDisplayLayoutResponse.h */,
- 5D61FB991A84238B00846EE7 /* SDLSetDisplayLayoutResponse.m */,
- 5D61FB9C1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.h */,
- 5D61FB9D1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.m */,
- 1E5AD0921F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.h */,
- 1E5AD0931F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m */,
- 5D61FBA01A84238B00846EE7 /* SDLSetMediaClockTimerResponse.h */,
- 5D61FBA11A84238B00846EE7 /* SDLSetMediaClockTimerResponse.m */,
- 5D61FBA81A84238B00846EE7 /* SDLShowResponse.h */,
- 5D61FBA91A84238B00846EE7 /* SDLShowResponse.m */,
- 5D61FBA61A84238B00846EE7 /* SDLShowConstantTBTResponse.h */,
- 5D61FBA71A84238B00846EE7 /* SDLShowConstantTBTResponse.m */,
- 7538765122D8D95100FE8484 /* SDLShowAppMenuResponse.h */,
- 7538765222D8D95100FE8484 /* SDLShowAppMenuResponse.m */,
- 5D61FBB01A84238B00846EE7 /* SDLSliderResponse.h */,
- 5D61FBB11A84238B00846EE7 /* SDLSliderResponse.m */,
- 5D61FBBA1A84238B00846EE7 /* SDLSpeakResponse.h */,
- 5D61FBBB1A84238B00846EE7 /* SDLSpeakResponse.m */,
- 5D61FBC21A84238B00846EE7 /* SDLSubscribeButtonResponse.h */,
- 5D61FBC31A84238B00846EE7 /* SDLSubscribeButtonResponse.m */,
- 5D61FBC61A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.h */,
- 5D61FBC71A84238B00846EE7 /* SDLSubscribeVehicleDataResponse.m */,
- DA9F7E891DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.h */,
- DA9F7E8A1DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.m */,
- 5D61FBCC1A84238B00846EE7 /* SDLSyncPDataResponse.h */,
- 5D61FBCD1A84238B00846EE7 /* SDLSyncPDataResponse.m */,
- 5D61FBD41A84238B00846EE7 /* SDLSystemRequestResponse.h */,
- 5D61FBD51A84238B00846EE7 /* SDLSystemRequestResponse.m */,
- 8BA12B1322DCEACB00371E82 /* SDLUnpublishAppServiceResponse.h */,
- 8BA12B1422DCEACB00371E82 /* SDLUnpublishAppServiceResponse.m */,
- 5D61FBF81A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.h */,
- 5D61FBF91A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.m */,
- 5D61FBFC1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.h */,
- 5D61FBFD1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m */,
- 5D61FC001A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.h */,
- 5D61FC011A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.m */,
- DA9F7E8D1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.h */,
- DA9F7E8E1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.m */,
- 5D61FC061A84238C00846EE7 /* SDLUpdateTurnListResponse.h */,
- 5D61FC071A84238C00846EE7 /* SDLUpdateTurnListResponse.m */,
+ 4ABB29F824F8477E0061BF55 /* SDLAddCommandResponse.h */,
+ 4ABB29F624F8477E0061BF55 /* SDLAddCommandResponse.m */,
+ 4ABB29F224F8477E0061BF55 /* SDLAddSubMenuResponse.h */,
+ 4ABB29F724F8477E0061BF55 /* SDLAddSubMenuResponse.m */,
+ 4ABB29F324F8477E0061BF55 /* SDLAlertManeuverResponse.h */,
+ 4ABB29F924F8477F0061BF55 /* SDLAlertManeuverResponse.m */,
+ 4ABB29F524F8477E0061BF55 /* SDLAlertResponse.h */,
+ 4ABB29F424F8477E0061BF55 /* SDLAlertResponse.m */,
+ 4ABB2A0224F847940061BF55 /* SDLButtonPressResponse.h */,
+ 4ABB2A0324F847940061BF55 /* SDLButtonPressResponse.m */,
+ 4ABB2A1624F847970061BF55 /* SDLCancelInteractionResponse.h */,
+ 4ABB2A1424F847960061BF55 /* SDLCancelInteractionResponse.m */,
+ 4ABB2A0E24F847960061BF55 /* SDLChangeRegistrationResponse.h */,
+ 4ABB2A0424F847940061BF55 /* SDLChangeRegistrationResponse.m */,
+ 4ABB2A0D24F847950061BF55 /* SDLCloseApplicationResponse.h */,
+ 4ABB2A0924F847950061BF55 /* SDLCloseApplicationResponse.m */,
+ 4ABB2A1E24F847980061BF55 /* SDLCreateInteractionChoiceSetResponse.h */,
+ 4ABB2A0524F847940061BF55 /* SDLCreateInteractionChoiceSetResponse.m */,
+ 4ABB2A1524F847970061BF55 /* SDLCreateWindowResponse.h */,
+ 4ABB2A1124F847960061BF55 /* SDLCreateWindowResponse.m */,
+ 4ABB2A1024F847960061BF55 /* SDLDeleteCommandResponse.h */,
+ 4ABB2A0A24F847950061BF55 /* SDLDeleteCommandResponse.m */,
+ 4ABB2A1324F847960061BF55 /* SDLDeleteFileResponse.h */,
+ 4ABB2A0B24F847950061BF55 /* SDLDeleteFileResponse.m */,
+ 4ABB2A1D24F847980061BF55 /* SDLDeleteInteractionChoiceSetResponse.h */,
+ 4ABB2A0624F847950061BF55 /* SDLDeleteInteractionChoiceSetResponse.m */,
+ 4ABB2A0C24F847950061BF55 /* SDLDeleteSubMenuResponse.h */,
+ 4ABB2A1724F847970061BF55 /* SDLDeleteSubMenuResponse.m */,
+ 4ABB2A1A24F847970061BF55 /* SDLDeleteWindowResponse.h */,
+ 4ABB2A0724F847950061BF55 /* SDLDeleteWindowResponse.m */,
+ 4ABB2A1224F847960061BF55 /* SDLDiagnosticMessageResponse.h */,
+ 4ABB2A1B24F847970061BF55 /* SDLDiagnosticMessageResponse.m */,
+ 4ABB2A1824F847970061BF55 /* SDLDialNumberResponse.h */,
+ 4ABB2A1924F847970061BF55 /* SDLDialNumberResponse.m */,
+ 4ABB2A1F24F847980061BF55 /* SDLEncodedSyncPDataResponse.h */,
+ 4ABB2A0F24F847960061BF55 /* SDLEncodedSyncPDataResponse.m */,
+ 4ABB2A1C24F847970061BF55 /* SDLEndAudioPassThruResponse.h */,
+ 4ABB2A0824F847950061BF55 /* SDLEndAudioPassThruResponse.m */,
+ 4ABB2A4B24F847B00061BF55 /* SDLGetAppServiceDataResponse.h */,
+ 4ABB2A4D24F847B00061BF55 /* SDLGetAppServiceDataResponse.m */,
+ 4ABB2A4724F847AF0061BF55 /* SDLGetCloudAppPropertiesResponse.h */,
+ 4ABB2A4924F847B00061BF55 /* SDLGetCloudAppPropertiesResponse.m */,
+ 4ABB2A4C24F847B00061BF55 /* SDLGetDTCsResponse.h */,
+ 4ABB2A4824F847AF0061BF55 /* SDLGetDTCsResponse.m */,
+ 4ABB2A4024F847AE0061BF55 /* SDLGetFileResponse.h */,
+ 4ABB2A4524F847AF0061BF55 /* SDLGetFileResponse.m */,
+ 4ABB2A4624F847AF0061BF55 /* SDLGetInteriorVehicleDataConsentResponse.h */,
+ 4ABB2A4324F847AF0061BF55 /* SDLGetInteriorVehicleDataConsentResponse.m */,
+ 4ABB2A4E24F847B00061BF55 /* SDLGetInteriorVehicleDataResponse.h */,
+ 4ABB2A3E24F847AE0061BF55 /* SDLGetInteriorVehicleDataResponse.m */,
+ 4ABB2A4224F847AF0061BF55 /* SDLGetSystemCapabilityResponse.h */,
+ 4ABB2A4F24F847B10061BF55 /* SDLGetSystemCapabilityResponse.m */,
+ 4ABB2A3F24F847AE0061BF55 /* SDLGetVehicleDataResponse.h */,
+ 4ABB2A4124F847AE0061BF55 /* SDLGetVehicleDataResponse.m */,
+ 4ABB2A4A24F847B00061BF55 /* SDLGetWayPointsResponse.h */,
+ 4ABB2A4424F847AF0061BF55 /* SDLGetWayPointsResponse.m */,
+ 4ABB2AF224F849CE0061BF55 /* SDLGenericResponse.h */,
+ 4ABB2AF324F849CF0061BF55 /* SDLGenericResponse.m */,
+ 4ABB2A6224F847BA0061BF55 /* SDLListFilesResponse.h */,
+ 4ABB2A6324F847BB0061BF55 /* SDLListFilesResponse.m */,
+ 4ABB2A6E24F847D30061BF55 /* SDLPerformAppServiceInteractionResponse.h */,
+ 4ABB2A6C24F847D30061BF55 /* SDLPerformAppServiceInteractionResponse.m */,
+ 4ABB2A6624F847D20061BF55 /* SDLPerformAudioPassThruResponse.h */,
+ 4ABB2A6A24F847D30061BF55 /* SDLPerformAudioPassThruResponse.m */,
+ 4ABB2A6F24F847D30061BF55 /* SDLPerformInteractionResponse.h */,
+ 4ABB2A6D24F847D30061BF55 /* SDLPerformInteractionResponse.m */,
+ 4ABB2A6724F847D20061BF55 /* SDLPublishAppServiceResponse.h */,
+ 4ABB2A6B24F847D30061BF55 /* SDLPublishAppServiceResponse.m */,
+ 4ABB2A6824F847D20061BF55 /* SDLPutFileResponse.h */,
+ 4ABB2A6924F847D30061BF55 /* SDLPutFileResponse.m */,
+ 4ABB2A7F24F847DE0061BF55 /* SDLReadDIDResponse.h */,
+ 4ABB2A8124F847DF0061BF55 /* SDLReadDIDResponse.m */,
+ 4ABB2A7D24F847DE0061BF55 /* SDLRegisterAppInterfaceResponse.h */,
+ 4ABB2A7A24F847DE0061BF55 /* SDLRegisterAppInterfaceResponse.m */,
+ 4ABB2A8024F847DF0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.h */,
+ 4ABB2A7E24F847DE0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.m */,
+ 4ABB2A7B24F847DE0061BF55 /* SDLResetGlobalPropertiesResponse.h */,
+ 4ABB2A7C24F847DE0061BF55 /* SDLResetGlobalPropertiesResponse.m */,
+ 4ABB2A9524F847F20061BF55 /* SDLScrollableMessageResponse.h */,
+ 4ABB2A9724F847F30061BF55 /* SDLScrollableMessageResponse.m */,
+ 4ABB2AA024F847F40061BF55 /* SDLSendHapticDataResponse.h */,
+ 4ABB2A8D24F847F10061BF55 /* SDLSendHapticDataResponse.m */,
+ 4ABB2A9624F847F20061BF55 /* SDLSendLocationResponse.h */,
+ 4ABB2A9A24F847F30061BF55 /* SDLSendLocationResponse.m */,
+ 4ABB2A9424F847F20061BF55 /* SDLSetAppIconResponse.h */,
+ 4ABB2A9124F847F20061BF55 /* SDLSetAppIconResponse.m */,
+ 4ABB2A9824F847F30061BF55 /* SDLSetCloudAppPropertiesResponse.h */,
+ 4ABB2A8A24F847F10061BF55 /* SDLSetCloudAppPropertiesResponse.m */,
+ 4ABB2A9924F847F30061BF55 /* SDLSetDisplayLayoutResponse.h */,
+ 4ABB2A9024F847F20061BF55 /* SDLSetDisplayLayoutResponse.m */,
+ 4ABB2A9B24F847F30061BF55 /* SDLSetGlobalPropertiesResponse.h */,
+ 4ABB2A9F24F847F40061BF55 /* SDLSetGlobalPropertiesResponse.m */,
+ 4ABB2A8E24F847F10061BF55 /* SDLSetInteriorVehicleDataResponse.h */,
+ 4ABB2AA124F847F40061BF55 /* SDLSetInteriorVehicleDataResponse.m */,
+ 4ABB2A9C24F847F30061BF55 /* SDLSetMediaClockTimerResponse.h */,
+ 4ABB2A9324F847F20061BF55 /* SDLSetMediaClockTimerResponse.m */,
+ 4ABB2A9D24F847F30061BF55 /* SDLShowAppMenuResponse.h */,
+ 4ABB2A9E24F847F40061BF55 /* SDLShowAppMenuResponse.m */,
+ 4ABB2A8F24F847F10061BF55 /* SDLShowConstantTBTResponse.h */,
+ 4ABB2A8B24F847F10061BF55 /* SDLShowConstantTBTResponse.m */,
+ 4ABB2A9224F847F20061BF55 /* SDLShowResponse.h */,
+ 4ABB2A8C24F847F10061BF55 /* SDLShowResponse.m */,
+ 4ABB2ABB24F847FC0061BF55 /* SDLSliderResponse.h */,
+ 4ABB2ABA24F847FC0061BF55 /* SDLSliderResponse.m */,
+ 4ABB2ABE24F848040061BF55 /* SDLSpeakResponse.h */,
+ 4ABB2ABF24F848050061BF55 /* SDLSpeakResponse.m */,
+ 4ABB2AC424F848120061BF55 /* SDLSubscribeButtonResponse.h */,
+ 4ABB2ACA24F848120061BF55 /* SDLSubscribeButtonResponse.m */,
+ 4ABB2ACB24F848120061BF55 /* SDLSubscribeVehicleDataResponse.h */,
+ 4ABB2AC624F848120061BF55 /* SDLSubscribeVehicleDataResponse.m */,
+ 4ABB2AC724F848120061BF55 /* SDLSubscribeWayPointsResponse.h */,
+ 4ABB2AC824F848120061BF55 /* SDLSubscribeWayPointsResponse.m */,
+ 4ABB2AC924F848120061BF55 /* SDLSubtleAlertResponse.h */,
+ 4ABB2AC524F848120061BF55 /* SDLSubtleAlertResponse.m */,
+ 4ABB2AC324F848110061BF55 /* SDLSyncPDataResponse.h */,
+ 4ABB2AC224F848110061BF55 /* SDLSyncPDataResponse.m */,
+ 4ABB2AD724F8481D0061BF55 /* SDLSystemRequestResponse.h */,
+ 4ABB2AD624F8481D0061BF55 /* SDLSystemRequestResponse.m */,
+ 4ABB2AE024F848260061BF55 /* SDLUnpublishAppServiceResponse.h */,
+ 4ABB2ADC24F848250061BF55 /* SDLUnpublishAppServiceResponse.m */,
+ 4ABB2AE224F848260061BF55 /* SDLUnregisterAppInterfaceResponse.h */,
+ 4ABB2AE524F848270061BF55 /* SDLUnregisterAppInterfaceResponse.m */,
+ 4ABB2AE324F848260061BF55 /* SDLUnsubscribeButtonResponse.h */,
+ 4ABB2AE424F848260061BF55 /* SDLUnsubscribeButtonResponse.m */,
+ 4ABB2ADA24F848250061BF55 /* SDLUnsubscribeVehicleDataResponse.h */,
+ 4ABB2AE124F848260061BF55 /* SDLUnsubscribeVehicleDataResponse.m */,
+ 4ABB2ADB24F848250061BF55 /* SDLUnsubscribeWayPointsResponse.h */,
+ 4ABB2ADD24F848250061BF55 /* SDLUnsubscribeWayPointsResponse.m */,
+ 4ABB2ADE24F848260061BF55 /* SDLUpdateTurnListResponse.h */,
+ 4ABB2ADF24F848260061BF55 /* SDLUpdateTurnListResponse.m */,
);
name = Responses;
sourceTree = "<group>";
@@ -4833,218 +4936,230 @@
5D5934F31A85164500687FB9 /* Structs */ = {
isa = PBXGroup;
children = (
- 5D61FA481A84238A00846EE7 /* SDLAirbagStatus.h */,
- 5D61FA491A84238A00846EE7 /* SDLAirbagStatus.m */,
- 332A913C1CED87F80043824C /* SDLAppInfo.h */,
- 332A913D1CED87F80043824C /* SDLAppInfo.m */,
- 8831FA46220235B000B8FFB7 /* SDLAppServicesCapabilities.h */,
- 8831FA47220235B000B8FFB7 /* SDLAppServicesCapabilities.m */,
- 8831FA4022022AB300B8FFB7 /* SDLAppServiceCapability.h */,
- 8831FA4122022AB300B8FFB7 /* SDLAppServiceCapability.m */,
- 88C37F612204EBF000901DC6 /* SDLAppServiceData.h */,
- 88C37F622204EBF000901DC6 /* SDLAppServiceData.m */,
- 884E701D21FB983F008D53BA /* SDLAppServiceManifest.h */,
- 884E701E21FB983F008D53BA /* SDLAppServiceManifest.m */,
- 884E702921FBB151008D53BA /* SDLAppServiceRecord.h */,
- 884E702A21FBB151008D53BA /* SDLAppServiceRecord.m */,
- 1EAA471B203410BB000FE74B /* SDLAudioControlCapabilities.h */,
- 1EAA471C203410BB000FE74B /* SDLAudioControlCapabilities.m */,
- 1EAA47272034388D000FE74B /* SDLAudioControlData.h */,
- 1EAA47282034388D000FE74B /* SDLAudioControlData.m */,
- 5D61FA581A84238A00846EE7 /* SDLAudioPassThruCapabilities.h */,
- 5D61FA591A84238A00846EE7 /* SDLAudioPassThruCapabilities.m */,
- 5D61FA5E1A84238A00846EE7 /* SDLBeltStatus.h */,
- 5D61FA5F1A84238A00846EE7 /* SDLBeltStatus.m */,
- 5D61FA621A84238A00846EE7 /* SDLBodyInformation.h */,
- 5D61FA631A84238A00846EE7 /* SDLBodyInformation.m */,
- 5D61FA641A84238A00846EE7 /* SDLButtonCapabilities.h */,
- 5D61FA651A84238A00846EE7 /* SDLButtonCapabilities.m */,
- 5D61FA741A84238A00846EE7 /* SDLChoice.h */,
- 5D61FA751A84238A00846EE7 /* SDLChoice.m */,
- 1E5AD0361F1F4E390029B8AF /* SDLClimateControlCapabilities.h */,
- 1E5AD0371F1F4E390029B8AF /* SDLClimateControlCapabilities.m */,
- 1E5AD06A1F208BAB0029B8AF /* SDLClimateControlData.h */,
- 1E5AD06B1F208BAB0029B8AF /* SDLClimateControlData.m */,
- 885468332225C1F800994D8D /* SDLCloudAppProperties.h */,
- 885468342225C1F800994D8D /* SDLCloudAppProperties.m */,
- 5D61FA761A84238A00846EE7 /* SDLClusterModeStatus.h */,
- 5D61FA771A84238A00846EE7 /* SDLClusterModeStatus.m */,
- DA9F7E611DCBFAC800ACAE48 /* SDLDateTime.h */,
- DA9F7E621DCBFAC800ACAE48 /* SDLDateTime.m */,
- 5D61FA951A84238A00846EE7 /* SDLDeviceInfo.h */,
- 5D61FA961A84238A00846EE7 /* SDLDeviceInfo.m */,
- 5D61FA991A84238A00846EE7 /* SDLDeviceStatus.h */,
- 5D61FA9A1A84238A00846EE7 /* SDLDeviceStatus.m */,
- 5D61FA9F1A84238A00846EE7 /* SDLDIDResult.h */,
- 5D61FAA01A84238A00846EE7 /* SDLDIDResult.m */,
- 9F425AD822DD983500BE3245 /* SDLDisplayCapability.h */,
- 9F425AD922DD983500BE3245 /* SDLDisplayCapability.m */,
- 5D61FAA31A84238A00846EE7 /* SDLDisplayCapabilities.h */,
- 5D61FAA41A84238A00846EE7 /* SDLDisplayCapabilities.m */,
- 5D61FAAB1A84238A00846EE7 /* SDLECallInfo.h */,
- 5D61FAAC1A84238A00846EE7 /* SDLECallInfo.m */,
- 5D61FAAD1A84238A00846EE7 /* SDLEmergencyEvent.h */,
- 5D61FAAE1A84238A00846EE7 /* SDLEmergencyEvent.m */,
- 88B3BF9A20DA8BBC00943565 /* SDLFuelRange.h */,
- 88B3BF9B20DA8BBC00943565 /* SDLFuelRange.m */,
- 1EAA4723203416D3000FE74B /* SDLEqualizerSettings.h */,
- 1EAA4724203416D3000FE74B /* SDLEqualizerSettings.m */,
- 5D61FACE1A84238A00846EE7 /* SDLGPSData.h */,
- 5D61FACF1A84238A00846EE7 /* SDLGPSData.m */,
- 88EED8361F33AE1700E6C42E /* SDLHapticRect.h */,
- 88EED8371F33AE1700E6C42E /* SDLHapticRect.m */,
- 5D61FAD01A84238A00846EE7 /* SDLHeadLampStatus.h */,
- 5D61FAD11A84238A00846EE7 /* SDLHeadLampStatus.m */,
- 5DE3729F1ACB2ED300849FAA /* SDLHMICapabilities.h */,
- 5DE372A01ACB2ED300849FAA /* SDLHMICapabilities.m */,
- 5D61FAD61A84238A00846EE7 /* SDLHMIPermissions.h */,
- 5D61FAD71A84238A00846EE7 /* SDLHMIPermissions.m */,
- 1EAA4747203567FA000FE74B /* SDLHMISettingsControlCapabilities.h */,
- 1EAA4748203567FA000FE74B /* SDLHMISettingsControlCapabilities.m */,
- 1EAA4753203583BC000FE74B /* SDLHMISettingsControlData.h */,
- 1EAA4754203583BC000FE74B /* SDLHMISettingsControlData.m */,
- 1EAA473720345B7A000FE74B /* SDLLightCapabilities.h */,
- 1EAA473820345B7A000FE74B /* SDLLightCapabilities.m */,
- 1EAA473F20355FF3000FE74B /* SDLLightControlCapabilities.h */,
- 1EAA474020355FF3000FE74B /* SDLLightControlCapabilities.m */,
- 1EAA47432035623B000FE74B /* SDLLightControlData.h */,
- 1EAA47442035623B000FE74B /* SDLLightControlData.m */,
- 1EAA473B203554B5000FE74B /* SDLLightState.h */,
- 1EAA473C203554B5000FE74B /* SDLLightState.m */,
- 5D61FAE01A84238A00846EE7 /* SDLImage.h */,
- 5D61FAE11A84238A00846EE7 /* SDLImage.m */,
- 5D61FAE21A84238A00846EE7 /* SDLImageField.h */,
- 5D61FAE31A84238A00846EE7 /* SDLImageField.m */,
- 5D61FAE61A84238A00846EE7 /* SDLImageResolution.h */,
- 5D61FAE71A84238A00846EE7 /* SDLImageResolution.m */,
- 5D61FAF71A84238A00846EE7 /* SDLKeyboardProperties.h */,
- 5D61FAF81A84238A00846EE7 /* SDLKeyboardProperties.m */,
- DA9F7E951DCC052C00ACAE48 /* SDLLocationCoordinate.h */,
- DA9F7E961DCC052C00ACAE48 /* SDLLocationCoordinate.m */,
- DA9F7E971DCC052C00ACAE48 /* SDLLocationDetails.h */,
- DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */,
- 1EB59CAD202D97AC00343A61 /* SDLMassageCushionFirmness.h */,
- 1EB59CAE202D97AC00343A61 /* SDLMassageCushionFirmness.m */,
- 1EB59CA5202D946500343A61 /* SDLMassageModeData.h */,
- 1EB59CA6202D946500343A61 /* SDLMassageModeData.m */,
- 88E6F1AB220E19DF006156F9 /* SDLMediaServiceData.h */,
- 88E6F1AC220E19DF006156F9 /* SDLMediaServiceData.m */,
- 88AAD4BA2211B76800F1E6D7 /* SDLMediaServiceManifest.h */,
- 88AAD4BB2211B76800F1E6D7 /* SDLMediaServiceManifest.m */,
- 5D61FB0B1A84238A00846EE7 /* SDLMenuParams.h */,
- 5D61FB0C1A84238A00846EE7 /* SDLMenuParams.m */,
- 75FF2E3922E0DD5400D0C13B /* SDLMsgVersion.h */,
- 75FF2E3A22E0DD5400D0C13B /* SDLMsgVersion.m */,
- 8B9376D51F3349FC009605C4 /* SDLMetadataTags.h */,
- 8B9376D61F3349FC009605C4 /* SDLMetadataTags.m */,
- 1E5AD06E1F209C880029B8AF /* SDLModuleData.h */,
- 1E5AD06F1F209C880029B8AF /* SDLModuleData.m */,
- 5D61FB0D1A84238A00846EE7 /* SDLMyKey.h */,
- 5D61FB0E1A84238A00846EE7 /* SDLMyKey.m */,
- 5D00AC751F15283E004000D9 /* SDLNavigationCapability.h */,
- 5D00AC761F15283E004000D9 /* SDLNavigationCapability.m */,
- 8880D24522205B1B00964F6A /* SDLNavigationInstruction.h */,
- 8880D24622205B1B00964F6A /* SDLNavigationInstruction.m */,
- 8816772A222097C3001FACFF /* SDLNavigationServiceData.h */,
- 8816772B222097C3001FACFF /* SDLNavigationServiceData.m */,
- 884554AA222453A800BAFB6C /* SDLNavigationServiceManifest.h */,
- 884554AB222453A800BAFB6C /* SDLNavigationServiceManifest.m */,
- DA9F7E651DCBFAD400ACAE48 /* SDLOasisAddress.h */,
- DA9F7E661DCBFAD400ACAE48 /* SDLOasisAddress.m */,
- 5D61FB361A84238B00846EE7 /* SDLParameterPermissions.h */,
- 5D61FB371A84238B00846EE7 /* SDLParameterPermissions.m */,
- 5D61FB401A84238B00846EE7 /* SDLPermissionItem.h */,
- 5D61FB411A84238B00846EE7 /* SDLPermissionItem.m */,
- 5D00AC791F15287E004000D9 /* SDLPhoneCapability.h */,
- 5D00AC7A1F15287E004000D9 /* SDLPhoneCapability.m */,
- 5D61FB4E1A84238B00846EE7 /* SDLPresetBankCapabilities.h */,
- 5D61FB4F1A84238B00846EE7 /* SDLPresetBankCapabilities.m */,
- 1E5AD0421F1F5A1F0029B8AF /* SDLRadioControlCapabilities.h */,
- 1E5AD0431F1F5A1F0029B8AF /* SDLRadioControlCapabilities.m */,
- 1E5AD0661F2080B50029B8AF /* SDLRadioControlData.h */,
- 1E5AD0671F2080B50029B8AF /* SDLRadioControlData.m */,
- 1E5AD0321F1F3AA30029B8AF /* SDLRemoteControlCapabilities.h */,
- 1E5AD0331F1F3AA30029B8AF /* SDLRemoteControlCapabilities.m */,
- 1E5AD05A1F2064A80029B8AF /* SDLRDSData.h */,
- 1E5AD05B1F2064A80029B8AF /* SDLRDSData.m */,
- 5DADA7731F4DFED60084D17D /* SDLRectangle.h */,
- 5DADA7741F4DFED60084D17D /* SDLRectangle.m */,
- 5D92934B20AF4BEF00FCC775 /* SDLRGBColor.h */,
- 5D92934C20AF4BEF00FCC775 /* SDLRGBColor.m */,
- 5D61FB8C1A84238B00846EE7 /* SDLScreenParams.h */,
- 5D61FB8D1A84238B00846EE7 /* SDLScreenParams.m */,
- 5D61FBAA1A84238B00846EE7 /* SDLSingleTireStatus.h */,
- 5D61FBAB1A84238B00846EE7 /* SDLSingleTireStatus.m */,
- 1EB59CBD202DA26000343A61 /* SDLSeatControlData.h */,
- 1EB59CBE202DA26000343A61 /* SDLSeatControlData.m */,
- 1EB59CC1202DB40400343A61 /* SDLSeatControlCapabilities.h */,
- 1EB59CC2202DB40400343A61 /* SDLSeatControlCapabilities.m */,
- 1EB59CB5202D9C8100343A61 /* SDLSeatMemoryAction.h */,
- 1EB59CB6202D9C8100343A61 /* SDLSeatMemoryAction.m */,
- 1EAA4717203406B1000FE74B /* SDLSISData.h */,
- 1EAA4718203406B1000FE74B /* SDLSISData.m */,
- 5D61FBB21A84238B00846EE7 /* SDLSoftButton.h */,
- 5D61FBB31A84238B00846EE7 /* SDLSoftButton.m */,
- 5D61FBB41A84238B00846EE7 /* SDLSoftButtonCapabilities.h */,
- 5D61FBB51A84238B00846EE7 /* SDLSoftButtonCapabilities.m */,
- 5D61FBBE1A84238B00846EE7 /* SDLStartTime.h */,
- 5D61FBBF1A84238B00846EE7 /* SDLStartTime.m */,
- 1EAA470F2033FE80000FE74B /* SDLStationIDNumber.h */,
- 1EAA47102033FE80000FE74B /* SDLStationIDNumber.m */,
- 5D61FBC81A84238B00846EE7 /* SDLSyncMsgVersion.h */,
- 5D61FBC91A84238B00846EE7 /* SDLSyncMsgVersion.m */,
- 5D00AC691F141339004000D9 /* SDLSystemCapability.h */,
- 5D00AC6A1F141339004000D9 /* SDLSystemCapability.m */,
- 1E5AD0621F207DD50029B8AF /* SDLTemperature.h */,
- 1E5AD0631F207DD50029B8AF /* SDLTemperature.m */,
- 5D92935120B2F76500FCC775 /* SDLTemplateColorScheme.h */,
- 5D92935220B2F76500FCC775 /* SDLTemplateColorScheme.m */,
- 9F425ACC22DD97DE00BE3245 /* SDLTemplateConfiguration.h */,
- 9F425ACD22DD97DE00BE3245 /* SDLTemplateConfiguration.m */,
- 5D61FBDC1A84238C00846EE7 /* SDLTextField.h */,
- 5D61FBDD1A84238C00846EE7 /* SDLTextField.m */,
- 5D61FBE21A84238C00846EE7 /* SDLTireStatus.h */,
- 5D61FBE31A84238C00846EE7 /* SDLTireStatus.m */,
- 5D61FBE41A84238C00846EE7 /* SDLTouchCoord.h */,
- 5D61FBE51A84238C00846EE7 /* SDLTouchCoord.m */,
- 5D61FBE61A84238C00846EE7 /* SDLTouchEvent.h */,
- 5D61FBE71A84238C00846EE7 /* SDLTouchEvent.m */,
- 5D61FBE81A84238C00846EE7 /* SDLTouchEventCapabilities.h */,
- 5D61FBE91A84238C00846EE7 /* SDLTouchEventCapabilities.m */,
- 5D61FBF01A84238C00846EE7 /* SDLTTSChunk.h */,
- 5D61FBF11A84238C00846EE7 /* SDLTTSChunk.m */,
- 5D61FBF41A84238C00846EE7 /* SDLTurn.h */,
- 5D61FBF51A84238C00846EE7 /* SDLTurn.m */,
- 5D61FC161A84238C00846EE7 /* SDLVehicleDataResult.h */,
- 5D61FC171A84238C00846EE7 /* SDLVehicleDataResult.m */,
- 5D61FC1E1A84238C00846EE7 /* SDLVehicleType.h */,
- 5D61FC1F1A84238C00846EE7 /* SDLVehicleType.m */,
- 5D61FC221A84238C00846EE7 /* SDLVrHelpItem.h */,
- 5D61FC231A84238C00846EE7 /* SDLVrHelpItem.m */,
- 8B7B31A01F2F7FEA00BDC38D /* SDLVideoStreamingFormat.h */,
- 8B7B31A11F2F7FEA00BDC38D /* SDLVideoStreamingFormat.m */,
- 8B7B31A41F2F875200BDC38D /* SDLVideoStreamingCapability.h */,
- 8B7B31A51F2F875200BDC38D /* SDLVideoStreamingCapability.m */,
- 88665B71220B80F400D9DA77 /* SDLWeatherAlert.h */,
- 88665B72220B80F400D9DA77 /* SDLWeatherAlert.m */,
- 88F65134220C74FD00CAF321 /* SDLWeatherData.h */,
- 88F65135220C74FD00CAF321 /* SDLWeatherData.m */,
- 88D5EB35220CD95000EC3782 /* SDLWeatherServiceData.h */,
- 88D5EB36220CD95000EC3782 /* SDLWeatherServiceData.m */,
- 880D267B220DE5DF00B3F496 /* SDLWeatherServiceManifest.h */,
- 880D267C220DE5DF00B3F496 /* SDLWeatherServiceManifest.m */,
- 0055412422D40DAB003194D3 /* SDLModuleInfo.h */,
- 0055412522D40DAB003194D3 /* SDLModuleInfo.m */,
- 0055412822D5DC0B003194D3 /* SDLGrid.h */,
- 0055412922D5DC0B003194D3 /* SDLGrid.m */,
- 0055412C22D759BC003194D3 /* SDLSeatLocation.h */,
- 0055412D22D759BC003194D3 /* SDLSeatLocation.m */,
- 0055413022D75A7A003194D3 /* SDLSeatLocationCapability.h */,
- 0055413122D75A7B003194D3 /* SDLSeatLocationCapability.m */,
- 9F425AD022DD980200BE3245 /* SDLWindowCapability.h */,
- 9F425AD122DD980200BE3245 /* SDLWindowCapability.m */,
- 9F425AD422DD981E00BE3245 /* SDLWindowTypeCapabilities.h */,
- 9F425AD522DD981E00BE3245 /* SDLWindowTypeCapabilities.m */,
+ 4ABB2B0124F84D940061BF55 /* SDLAirbagStatus.h */,
+ 4ABB2AF924F84D930061BF55 /* SDLAirbagStatus.m */,
+ 4ABB2B0524F84D950061BF55 /* SDLAppServiceCapability.h */,
+ 4ABB2AFA24F84D930061BF55 /* SDLAppServiceCapability.m */,
+ 4ABB2B0824F84D950061BF55 /* SDLAppServiceManifest.h */,
+ 4ABB2AFC24F84D940061BF55 /* SDLAppServiceManifest.m */,
+ 4ABB2B0924F84D950061BF55 /* SDLAppServiceRecord.h */,
+ 4ABB2AFF24F84D940061BF55 /* SDLAppServiceRecord.m */,
+ 4ABB2AFB24F84D930061BF55 /* SDLAppInfo.h */,
+ 4ABB2B0624F84D950061BF55 /* SDLAppInfo.m */,
+ 4ABB2B0424F84D950061BF55 /* SDLAppServiceData.h */,
+ 4ABB2AF724F84D930061BF55 /* SDLAppServiceData.m */,
+ 4ABB2AF824F84D930061BF55 /* SDLAppServicesCapabilities.h */,
+ 4ABB2B0724F84D950061BF55 /* SDLAppServicesCapabilities.m */,
+ 4ABB2B0224F84D940061BF55 /* SDLAudioControlCapabilities.h */,
+ 4ABB2AF624F84D930061BF55 /* SDLAudioControlCapabilities.m */,
+ 4ABB2B0324F84D940061BF55 /* SDLAudioPassThruCapabilities.h */,
+ 4ABB2AFE24F84D940061BF55 /* SDLAudioPassThruCapabilities.m */,
+ 4ABB2B0024F84D940061BF55 /* SDLAudioControlData.h */,
+ 4ABB2AFD24F84D940061BF55 /* SDLAudioControlData.m */,
+ 4ABB2B2A24F84EF20061BF55 /* SDLBeltStatus.h */,
+ 4ABB2B2924F84EF20061BF55 /* SDLBeltStatus.m */,
+ 4ABB2B2E24F84EF20061BF55 /* SDLButtonCapabilities.h */,
+ 4ABB2B3A24F84EF50061BF55 /* SDLButtonCapabilities.m */,
+ 4ABB2B2424F84EF10061BF55 /* SDLBodyInformation.h */,
+ 4ABB2B2724F84EF10061BF55 /* SDLBodyInformation.m */,
+ 4ABB2B3424F84EF40061BF55 /* SDLChoice.h */,
+ 4ABB2B2C24F84EF20061BF55 /* SDLChoice.m */,
+ 4ABB2B1E24F84EEF0061BF55 /* SDLClimateControlCapabilities.h */,
+ 4ABB2B3524F84EF40061BF55 /* SDLClimateControlCapabilities.m */,
+ 4ABB2B3624F84EF40061BF55 /* SDLClimateControlData.h */,
+ 4ABB2B3124F84EF30061BF55 /* SDLClimateControlData.m */,
+ 4ABB2B2224F84EF00061BF55 /* SDLCloudAppProperties.h */,
+ 4ABB2B2124F84EF00061BF55 /* SDLCloudAppProperties.m */,
+ 4ABB2B3224F84EF30061BF55 /* SDLClusterModeStatus.h */,
+ 4ABB2B3024F84EF30061BF55 /* SDLClusterModeStatus.m */,
+ 4ABB2B2D24F84EF20061BF55 /* SDLDateTime.h */,
+ 4ABB2B2324F84EF00061BF55 /* SDLDateTime.m */,
+ 4ABB2B1F24F84EF00061BF55 /* SDLDeviceInfo.h */,
+ 4ABB2B2624F84EF10061BF55 /* SDLDeviceInfo.m */,
+ 4ABB2B3B24F84EF50061BF55 /* SDLDeviceStatus.h */,
+ 4ABB2B2024F84EF00061BF55 /* SDLDeviceStatus.m */,
+ 4ABB2B2824F84EF10061BF55 /* SDLDIDResult.h */,
+ 4ABB2B3924F84EF40061BF55 /* SDLDIDResult.m */,
+ 4ABB2B2F24F84EF30061BF55 /* SDLDisplayCapabilities.h */,
+ 4ABB2B2524F84EF10061BF55 /* SDLDisplayCapabilities.m */,
+ 4ABB2B3324F84EF30061BF55 /* SDLDisplayCapability.h */,
+ 4ABB2B3824F84EF40061BF55 /* SDLDisplayCapability.m */,
+ 4ABB2B3724F84EF40061BF55 /* SDLDriverDistractionCapability.h */,
+ 4ABB2B2B24F84EF20061BF55 /* SDLDriverDistractionCapability.m */,
+ 4A8BD3B924F98F89000945E3 /* SDLDynamicUpdateCapabilities.h */,
+ 4A8BD3BA24F98F89000945E3 /* SDLDynamicUpdateCapabilities.m */,
+ 4ABB2B6324F84FE40061BF55 /* SDLECallInfo.h */,
+ 4ABB2B6224F84FE40061BF55 /* SDLECallInfo.m */,
+ 4ABB2B5B24F84FE30061BF55 /* SDLEmergencyEvent.h */,
+ 4ABB2B6124F84FE40061BF55 /* SDLEmergencyEvent.m */,
+ 4ABB2B5E24F84FE30061BF55 /* SDLEqualizerSettings.h */,
+ 4ABB2B5D24F84FE30061BF55 /* SDLEqualizerSettings.m */,
+ 4ABB2B6424F84FE50061BF55 /* SDLFuelRange.h */,
+ 4ABB2B6524F84FE50061BF55 /* SDLFuelRange.m */,
+ 4ABB2B5C24F84FE30061BF55 /* SDLGearStatus.h */,
+ 4ABB2B5F24F84FE40061BF55 /* SDLGearStatus.m */,
+ 4ABB2B5A24F84FE30061BF55 /* SDLGPSData.h */,
+ 4ABB2B6024F84FE40061BF55 /* SDLGPSData.m */,
+ 4ABB2B7B24F850490061BF55 /* SDLGrid.h */,
+ 4ABB2B7E24F8504A0061BF55 /* SDLGrid.m */,
+ 4ABB2B7424F850480061BF55 /* SDLHapticRect.h */,
+ 4ABB2B7224F850470061BF55 /* SDLHapticRect.m */,
+ 4ABB2B7D24F8504A0061BF55 /* SDLHeadLampStatus.h */,
+ 4ABB2B7924F850490061BF55 /* SDLHeadLampStatus.m */,
+ 4ABB2B7724F850480061BF55 /* SDLHMICapabilities.h */,
+ 4ABB2B7524F850480061BF55 /* SDLHMICapabilities.m */,
+ 4ABB2B7A24F850490061BF55 /* SDLHMIPermissions.h */,
+ 4ABB2B7324F850480061BF55 /* SDLHMIPermissions.m */,
+ 4ABB2B7824F850490061BF55 /* SDLHMISettingsControlCapabilities.h */,
+ 4ABB2B7C24F850490061BF55 /* SDLHMISettingsControlCapabilities.m */,
+ 4ABB2B7F24F8504A0061BF55 /* SDLHMISettingsControlData.h */,
+ 4ABB2B7624F850480061BF55 /* SDLHMISettingsControlData.m */,
+ 4ABB2B9924F850AD0061BF55 /* SDLImage.h */,
+ 4ABB2B9024F850AB0061BF55 /* SDLImage.m */,
+ 4ABB2B9524F850AC0061BF55 /* SDLImageField.h */,
+ 4ABB2B9824F850AD0061BF55 /* SDLImageField.m */,
+ 4ABB2B9B24F850AD0061BF55 /* SDLImageResolution.h */,
+ 4ABB2B9124F850AC0061BF55 /* SDLImageResolution.m */,
+ 4ABB2B9224F850AC0061BF55 /* SDLLightCapabilities.h */,
+ 4ABB2B9624F850AD0061BF55 /* SDLLightCapabilities.m */,
+ 4ABB2B8F24F850AB0061BF55 /* SDLLightControlCapabilities.h */,
+ 4ABB2B8E24F850AB0061BF55 /* SDLLightControlCapabilities.m */,
+ 4ABB2B9324F850AC0061BF55 /* SDLLightControlData.h */,
+ 4ABB2B9724F850AD0061BF55 /* SDLLightControlData.m */,
+ 4ABB2B9424F850AC0061BF55 /* SDLLightState.h */,
+ 4ABB2B9A24F850AD0061BF55 /* SDLLightState.m */,
+ 4A8BD22724F93132000945E3 /* SDLKeyboardProperties.h */,
+ 4A8BD23A24F93135000945E3 /* SDLKeyboardProperties.m */,
+ 4A8BD22824F93132000945E3 /* SDLLocationCoordinate.h */,
+ 4A8BD22F24F93133000945E3 /* SDLLocationCoordinate.m */,
+ 4A8BD22E24F93133000945E3 /* SDLLocationDetails.h */,
+ 4A8BD23424F93134000945E3 /* SDLLocationDetails.m */,
+ 4A8BD22324F93131000945E3 /* SDLMassageCushionFirmness.h */,
+ 4A8BD23024F93133000945E3 /* SDLMassageCushionFirmness.m */,
+ 4A8BD22A24F93132000945E3 /* SDLMassageModeData.h */,
+ 4A8BD22624F93132000945E3 /* SDLMassageModeData.m */,
+ 4A8BD23324F93134000945E3 /* SDLMediaServiceData.h */,
+ 4A8BD22424F93131000945E3 /* SDLMediaServiceData.m */,
+ 4A8BD22C24F93133000945E3 /* SDLMediaServiceManifest.h */,
+ 4A8BD23624F93134000945E3 /* SDLMediaServiceManifest.m */,
+ 4A8BD23124F93133000945E3 /* SDLMenuParams.h */,
+ 4A8BD22924F93132000945E3 /* SDLMenuParams.m */,
+ 4A8BD23824F93134000945E3 /* SDLMetadataTags.h */,
+ 4A8BD22B24F93132000945E3 /* SDLMetadataTags.m */,
+ 4A8BD23924F93134000945E3 /* SDLModuleData.h */,
+ 4A8BD22D24F93133000945E3 /* SDLModuleData.m */,
+ 4A8BD31824F93941000945E3 /* SDLModuleInfo.h */,
+ 4A8BD31724F93941000945E3 /* SDLModuleInfo.m */,
+ 4A8BD23524F93134000945E3 /* SDLMsgVersion.h */,
+ 4A8BD22524F93132000945E3 /* SDLMsgVersion.m */,
+ 4A8BD23224F93133000945E3 /* SDLMyKey.h */,
+ 4A8BD23724F93134000945E3 /* SDLMyKey.m */,
+ 4A8BD25B24F933C7000945E3 /* SDLNavigationCapability.h */,
+ 4A8BD25424F933C6000945E3 /* SDLNavigationCapability.m */,
+ 4A8BD25524F933C6000945E3 /* SDLNavigationInstruction.h */,
+ 4A8BD25624F933C6000945E3 /* SDLNavigationInstruction.m */,
+ 4A8BD25324F933C6000945E3 /* SDLNavigationServiceData.h */,
+ 4A8BD25C24F933C7000945E3 /* SDLNavigationServiceData.m */,
+ 4A8BD25724F933C6000945E3 /* SDLNavigationServiceManifest.h */,
+ 4A8BD25824F933C6000945E3 /* SDLNavigationServiceManifest.m */,
+ 4A8BD25924F933C6000945E3 /* SDLOasisAddress.h */,
+ 4A8BD25A24F933C6000945E3 /* SDLOasisAddress.m */,
+ 4A8BD25D24F933C7000945E3 /* SDLParameterPermissions.h */,
+ 4A8BD25E24F933C7000945E3 /* SDLParameterPermissions.m */,
+ 4A8BD26B24F9343D000945E3 /* SDLPermissionItem.h */,
+ 4A8BD27424F9343F000945E3 /* SDLPermissionItem.m */,
+ 4A8BD27724F9343F000945E3 /* SDLPhoneCapability.h */,
+ 4A8BD26E24F9343E000945E3 /* SDLPhoneCapability.m */,
+ 4A8BD26F24F9343E000945E3 /* SDLPresetBankCapabilities.h */,
+ 4A8BD27024F9343E000945E3 /* SDLPresetBankCapabilities.m */,
+ 4A8BD27824F9343F000945E3 /* SDLRadioControlCapabilities.h */,
+ 4A8BD27124F9343E000945E3 /* SDLRadioControlCapabilities.m */,
+ 4A8BD27524F9343F000945E3 /* SDLRadioControlData.h */,
+ 4A8BD27224F9343E000945E3 /* SDLRadioControlData.m */,
+ 4A8BD27624F9343F000945E3 /* SDLRDSData.h */,
+ 4A8BD26D24F9343E000945E3 /* SDLRDSData.m */,
+ 4A8BD28824F934F2000945E3 /* SDLRectangle.h */,
+ 4A8BD28924F934F2000945E3 /* SDLRectangle.m */,
+ 4A8BD27324F9343F000945E3 /* SDLRemoteControlCapabilities.h */,
+ 4A8BD26C24F9343D000945E3 /* SDLRemoteControlCapabilities.m */,
+ 4A8BD28724F934F2000945E3 /* SDLRGBColor.h */,
+ 4A8BD28A24F934F3000945E3 /* SDLRGBColor.m */,
+ 4A8BD29124F93533000945E3 /* SDLScreenParams.h */,
+ 4A8BD28F24F93533000945E3 /* SDLScreenParams.m */,
+ 4A8BD29024F93533000945E3 /* SDLSeatControlCapabilities.h */,
+ 4A8BD29424F93533000945E3 /* SDLSeatControlCapabilities.m */,
+ 4A8BD29824F93534000945E3 /* SDLSeatControlData.h */,
+ 4A8BD29324F93533000945E3 /* SDLSeatControlData.m */,
+ 4A8BD31E24F93964000945E3 /* SDLSeatLocation.h */,
+ 4A8BD31D24F93964000945E3 /* SDLSeatLocation.m */,
+ 4A8BD31B24F93964000945E3 /* SDLSeatLocationCapability.h */,
+ 4A8BD31C24F93964000945E3 /* SDLSeatLocationCapability.m */,
+ 4A8BD29724F93534000945E3 /* SDLSeatMemoryAction.h */,
+ 4A8BD29524F93534000945E3 /* SDLSeatMemoryAction.m */,
+ 4A8BD29224F93533000945E3 /* SDLSingleTireStatus.h */,
+ 4A8BD29624F93534000945E3 /* SDLSingleTireStatus.m */,
+ 4A8BD2A624F935BB000945E3 /* SDLSISData.h */,
+ 4A8BD2AE24F935BC000945E3 /* SDLSISData.m */,
+ 4A8BD2AB24F935BC000945E3 /* SDLSoftButton.h */,
+ 4A8BD2A924F935BB000945E3 /* SDLSoftButton.m */,
+ 4A8BD2A524F935BB000945E3 /* SDLSoftButtonCapabilities.h */,
+ 4A8BD2A324F935BB000945E3 /* SDLSoftButtonCapabilities.m */,
+ 4A40255F250134CA0080E159 /* SDLStabilityControlsStatus.h */,
+ 4A40255E250134CA0080E159 /* SDLStabilityControlsStatus.m */,
+ 4A8BD2A424F935BB000945E3 /* SDLStartTime.h */,
+ 4A8BD2AF24F935BC000945E3 /* SDLStartTime.m */,
+ 4A8BD2AD24F935BC000945E3 /* SDLStationIDNumber.h */,
+ 4A8BD2A724F935BB000945E3 /* SDLStationIDNumber.m */,
+ 4A8BD2A824F935BB000945E3 /* SDLSystemCapability.h */,
+ 4A8BD2B024F935BC000945E3 /* SDLSystemCapability.m */,
+ 4A8BD2C124F93801000945E3 /* SDLTemperature.h */,
+ 4A8BD2C624F93801000945E3 /* SDLTemperature.m */,
+ 4A8BD2CE24F93803000945E3 /* SDLTemplateColorScheme.h */,
+ 4A8BD2C224F93801000945E3 /* SDLTemplateColorScheme.m */,
+ 4A8BD2C924F93802000945E3 /* SDLTemplateConfiguration.h */,
+ 4A8BD2CB24F93802000945E3 /* SDLTemplateConfiguration.m */,
+ 4A8BD2C724F93802000945E3 /* SDLTextField.h */,
+ 4A8BD2C024F93801000945E3 /* SDLTextField.m */,
+ 4A8BD2C824F93802000945E3 /* SDLTireStatus.h */,
+ 4A8BD2C324F93801000945E3 /* SDLTireStatus.m */,
+ 4A8BD2CC24F93802000945E3 /* SDLTouchCoord.h */,
+ 4A8BD2C424F93801000945E3 /* SDLTouchCoord.m */,
+ 4A8BD2BF24F93800000945E3 /* SDLTouchEvent.h */,
+ 4A8BD2CD24F93803000945E3 /* SDLTouchEvent.m */,
+ 4A8BD2C524F93801000945E3 /* SDLTouchEventCapabilities.h */,
+ 4A8BD2CA24F93802000945E3 /* SDLTouchEventCapabilities.m */,
+ 4A8BD2E624F93872000945E3 /* SDLTTSChunk.h */,
+ 4A8BD2E724F93872000945E3 /* SDLTTSChunk.m */,
+ 4A8BD2E124F93871000945E3 /* SDLTurn.h */,
+ 4A8BD2E024F93871000945E3 /* SDLTurn.m */,
+ 4A8BD2E524F93872000945E3 /* SDLVehicleDataResult.h */,
+ 4A8BD2E824F93872000945E3 /* SDLVehicleDataResult.m */,
+ 4A8BD2EB24F93872000945E3 /* SDLVehicleDataType.h */,
+ 4A8BD2DF24F93871000945E3 /* SDLVehicleDataType.m */,
+ 4A8BD2FC24F938A4000945E3 /* SDLVehicleType.h */,
+ 4A8BD2FB24F938A4000945E3 /* SDLVehicleType.m */,
+ 4A8BD2EC24F93872000945E3 /* SDLVideoStreamingCapability.h */,
+ 4A8BD2E424F93871000945E3 /* SDLVideoStreamingCapability.m */,
+ 4A8BD2E224F93871000945E3 /* SDLVideoStreamingFormat.h */,
+ 4A8BD2EA24F93872000945E3 /* SDLVideoStreamingFormat.m */,
+ 4A8BD2E924F93872000945E3 /* SDLVrHelpItem.h */,
+ 4A8BD2E324F93871000945E3 /* SDLVrHelpItem.m */,
+ 4A8BD30424F938D6000945E3 /* SDLWeatherAlert.h */,
+ 4A8BD30024F938D5000945E3 /* SDLWeatherAlert.m */,
+ 4A8BD30624F938D6000945E3 /* SDLWeatherData.h */,
+ 4A8BD2FF24F938D5000945E3 /* SDLWeatherData.m */,
+ 4A8BD30124F938D5000945E3 /* SDLWeatherServiceData.h */,
+ 4A8BD30224F938D5000945E3 /* SDLWeatherServiceData.m */,
+ 4A8BD30924F938D6000945E3 /* SDLWeatherServiceManifest.h */,
+ 4A8BD30524F938D6000945E3 /* SDLWeatherServiceManifest.m */,
+ 4A8BD30724F938D6000945E3 /* SDLWindowCapability.h */,
+ 4A8BD30824F938D6000945E3 /* SDLWindowCapability.m */,
+ 4A8BD3C324F998A7000945E3 /* SDLWindowState.h */,
+ 4A8BD3C624F998A8000945E3 /* SDLWindowState.m */,
+ 4A8BD3C424F998A8000945E3 /* SDLWindowStatus.h */,
+ 4A8BD3C524F998A8000945E3 /* SDLWindowStatus.m */,
+ 4A8BD30324F938D6000945E3 /* SDLWindowTypeCapabilities.h */,
+ 4A8BD30A24F938D6000945E3 /* SDLWindowTypeCapabilities.m */,
);
name = Structs;
sourceTree = "<group>";
@@ -5052,217 +5167,221 @@
5D5934F41A85165E00687FB9 /* Enums */ = {
isa = PBXGroup;
children = (
- 5D61FA521A84238A00846EE7 /* SDLAmbientLightStatus.h */,
- 5D61FA531A84238A00846EE7 /* SDLAmbientLightStatus.m */,
- 5D61FA541A84238A00846EE7 /* SDLAppHMIType.h */,
- 5D61FA551A84238A00846EE7 /* SDLAppHMIType.m */,
- 5D61FA561A84238A00846EE7 /* SDLAppInterfaceUnregisteredReason.h */,
- 5D61FA571A84238A00846EE7 /* SDLAppInterfaceUnregisteredReason.m */,
- 884E702121FBA952008D53BA /* SDLAppServiceType.h */,
- 884E702221FBA952008D53BA /* SDLAppServiceType.m */,
- 2BF2F84D20ED004000A26EF2 /* SDLAudioStreamingIndicator.h */,
- 2BF2F84E20ED004000A26EF2 /* SDLAudioStreamingIndicator.m */,
- 5D61FA5A1A84238A00846EE7 /* SDLAudioStreamingState.h */,
- 5D61FA5B1A84238A00846EE7 /* SDLAudioStreamingState.m */,
- 5D61FA5C1A84238A00846EE7 /* SDLAudioType.h */,
- 5D61FA5D1A84238A00846EE7 /* SDLAudioType.m */,
- 5D61FA601A84238A00846EE7 /* SDLBitsPerSample.h */,
- 5D61FA611A84238A00846EE7 /* SDLBitsPerSample.m */,
- 5D61FA661A84238A00846EE7 /* SDLButtonEventMode.h */,
- 5D61FA671A84238A00846EE7 /* SDLButtonEventMode.m */,
- 5D61FA681A84238A00846EE7 /* SDLButtonName.h */,
- 5D61FA691A84238A00846EE7 /* SDLButtonName.m */,
- 5D61FA6A1A84238A00846EE7 /* SDLButtonPressMode.h */,
- 5D61FA6B1A84238A00846EE7 /* SDLButtonPressMode.m */,
- 5D61FA6C1A84238A00846EE7 /* SDLCarModeStatus.h */,
- 5D61FA6D1A84238A00846EE7 /* SDLCarModeStatus.m */,
- 5D61FA721A84238A00846EE7 /* SDLCharacterSet.h */,
- 5D61FA731A84238A00846EE7 /* SDLCharacterSet.m */,
- 5D61FA781A84238A00846EE7 /* SDLCompassDirection.h */,
- 5D61FA791A84238A00846EE7 /* SDLCompassDirection.m */,
- 5D61FA7A1A84238A00846EE7 /* SDLComponentVolumeStatus.h */,
- 5D61FA7B1A84238A00846EE7 /* SDLComponentVolumeStatus.m */,
- 1E5AD04A1F1F79640029B8AF /* SDLDefrostZone.h */,
- 1E5AD04B1F1F79640029B8AF /* SDLDefrostZone.m */,
- DA9F7E691DCBFB0700ACAE48 /* SDLDeliveryMode.h */,
- DA9F7E6A1DCBFB0700ACAE48 /* SDLDeliveryMode.m */,
- 5D61FA971A84238A00846EE7 /* SDLDeviceLevelStatus.h */,
- 5D61FA981A84238A00846EE7 /* SDLDeviceLevelStatus.m */,
- 5D61FAA11A84238A00846EE7 /* SDLDimension.h */,
- 5D61FAA21A84238A00846EE7 /* SDLDimension.m */,
- 88B58DB8222040FF0011B063 /* SDLDirection.h */,
- 88B58DB9222040FF0011B063 /* SDLDirection.m */,
- 1EAA474B20356B2D000FE74B /* SDLDisplayMode.h */,
- 1EAA474C20356B2D000FE74B /* SDLDisplayMode.m */,
- 1EAA474F20356CD2000FE74B /* SDLDistanceUnit.h */,
- 1EAA475020356CD2000FE74B /* SDLDistanceUnit.m */,
- 5D61FAA51A84238A00846EE7 /* SDLDisplayType.h */,
- 5D61FAA61A84238A00846EE7 /* SDLDisplayType.m */,
- 5D61FAA71A84238A00846EE7 /* SDLDriverDistractionState.h */,
- 5D61FAA81A84238A00846EE7 /* SDLDriverDistractionState.m */,
- 5D61FAA91A84238A00846EE7 /* SDLECallConfirmationStatus.h */,
- 5D61FAAA1A84238A00846EE7 /* SDLECallConfirmationStatus.m */,
- 5DD8406020FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.h */,
- 5DD8406120FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.m */,
- 5D61FAAF1A84238A00846EE7 /* SDLEmergencyEventType.h */,
- 5D61FAB01A84238A00846EE7 /* SDLEmergencyEventType.m */,
- 5D61FABC1A84238A00846EE7 /* SDLFileType.h */,
- 5D61FABD1A84238A00846EE7 /* SDLFileType.m */,
- 5D61FABE1A84238A00846EE7 /* SDLFuelCutoffStatus.h */,
- 5D61FABF1A84238A00846EE7 /* SDLFuelCutoffStatus.m */,
- 88B3BF9620DA859800943565 /* SDLFuelType.h */,
- 88B3BF9720DA859800943565 /* SDLFuelType.m */,
- 5D61FACC1A84238A00846EE7 /* SDLGlobalProperty.h */,
- 5D61FACD1A84238A00846EE7 /* SDLGlobalProperty.m */,
- 5D61FAD41A84238A00846EE7 /* SDLHMILevel.h */,
- 5D61FAD51A84238A00846EE7 /* SDLHMILevel.m */,
- 5D61FAD81A84238A00846EE7 /* SDLHMIZoneCapabilities.h */,
- 5D61FAD91A84238A00846EE7 /* SDLHMIZoneCapabilities.m */,
- 8854682D2225BDAE00994D8D /* SDLHybridAppPreference.h */,
- 8854682E2225BDAE00994D8D /* SDLHybridAppPreference.m */,
- 5D61FADC1A84238A00846EE7 /* SDLIgnitionStableStatus.h */,
- 5D61FADD1A84238A00846EE7 /* SDLIgnitionStableStatus.m */,
- 5D61FADE1A84238A00846EE7 /* SDLIgnitionStatus.h */,
- 5D61FADF1A84238A00846EE7 /* SDLIgnitionStatus.m */,
- 1EAA472F203442C0000FE74B /* SDLLightName.h */,
- 1EAA4730203442C0000FE74B /* SDLLightName.m */,
- 1EAA472B20344108000FE74B /* SDLLightStatus.h */,
- 1EAA472C20344108000FE74B /* SDLLightStatus.m */,
- 5D61FAE41A84238A00846EE7 /* SDLImageFieldName.h */,
- 5D61FAE51A84238A00846EE7 /* SDLImageFieldName.m */,
- 5D61FAE81A84238A00846EE7 /* SDLImageType.h */,
- 5D61FAE91A84238A00846EE7 /* SDLImageType.m */,
- 5D61FAEA1A84238A00846EE7 /* SDLInteractionMode.h */,
- 5D61FAEB1A84238A00846EE7 /* SDLInteractionMode.m */,
- 5D61FAF31A84238A00846EE7 /* SDLKeyboardEvent.h */,
- 5D61FAF41A84238A00846EE7 /* SDLKeyboardEvent.m */,
- 5D61FAF51A84238A00846EE7 /* SDLKeyboardLayout.h */,
- 5D61FAF61A84238A00846EE7 /* SDLKeyboardLayout.m */,
- 5D61FAF91A84238A00846EE7 /* SDLKeypressMode.h */,
- 5D61FAFA1A84238A00846EE7 /* SDLKeypressMode.m */,
- 5D61FAFB1A84238A00846EE7 /* SDLLanguage.h */,
- 5D61FAFC1A84238A00846EE7 /* SDLLanguage.m */,
- 5D61FAFD1A84238A00846EE7 /* SDLLayoutMode.h */,
- 5D61FAFE1A84238A00846EE7 /* SDLLayoutMode.m */,
- 5D61FB051A84238A00846EE7 /* SDLLockScreenStatus.h */,
- 5D61FB061A84238A00846EE7 /* SDLLockScreenStatus.m */,
- 5D61FB071A84238A00846EE7 /* SDLMaintenanceModeStatus.h */,
- 5D61FB081A84238A00846EE7 /* SDLMaintenanceModeStatus.m */,
- 1EB59CA9202D96A200343A61 /* SDLMassageCushion.h */,
- 1EB59CAA202D96A200343A61 /* SDLMassageCushion.m */,
- 1EB59CA1202D92F600343A61 /* SDLMassageMode.h */,
- 1EB59CA2202D92F600343A61 /* SDLMassageMode.m */,
- 1EB59C9D202D925500343A61 /* SDLMassageZone.h */,
- 1EB59C9E202D925500343A61 /* SDLMassageZone.m */,
- 5D61FB091A84238A00846EE7 /* SDLMediaClockFormat.h */,
- 5D61FB0A1A84238A00846EE7 /* SDLMediaClockFormat.m */,
- 88E6F1A5220E1588006156F9 /* SDLMediaType.h */,
- 88E6F1A6220E1588006156F9 /* SDLMediaType.m */,
- 5D76750C22D8FB3700E8D71A /* SDLMenuLayout.h */,
- 5D76750D22D8FB3700E8D71A /* SDLMenuLayout.m */,
- 8BBEA6041F324165003EEA26 /* SDLMetadataType.h */,
- 8BBEA6051F324165003EEA26 /* SDLMetadataType.m */,
- 1E5AD0461F1F773E0029B8AF /* SDLModuleType.h */,
- 1E5AD0471F1F773E0029B8AF /* SDLModuleType.m */,
- 88B58DC422204AF10011B063 /* SDLNavigationAction.h */,
- 88B58DC522204AF10011B063 /* SDLNavigationAction.m */,
- 88B58DBE222045320011B063 /* SDLNavigationJunction.h */,
- 88B58DBF222045320011B063 /* SDLNavigationJunction.m */,
- 5D61FB421A84238B00846EE7 /* SDLPermissionStatus.h */,
- 5D61FB431A84238B00846EE7 /* SDLPermissionStatus.m */,
- 5D61FB461A84238B00846EE7 /* SDLPowerModeQualificationStatus.h */,
- 5D61FB471A84238B00846EE7 /* SDLPowerModeQualificationStatus.m */,
- 5D61FB481A84238B00846EE7 /* SDLPowerModeStatus.h */,
- 5D61FB491A84238B00846EE7 /* SDLPowerModeStatus.m */,
- 5D61FB4A1A84238B00846EE7 /* SDLPredefinedLayout.h */,
- 5D61FB4B1A84238B00846EE7 /* SDLPredefinedLayout.m */,
- 5D61FB4C1A84238B00846EE7 /* SDLPrerecordedSpeech.h */,
- 5D61FB4D1A84238B00846EE7 /* SDLPrerecordedSpeech.m */,
- 9FE2471722D77AED00F8D2FC /* SDLPredefinedWindows.h */,
- 5D61FB501A84238B00846EE7 /* SDLPrimaryAudioSource.h */,
- 5D61FB511A84238B00846EE7 /* SDLPrimaryAudioSource.m */,
- 5D61FB541A84238B00846EE7 /* SDLPRNDL.h */,
- 5D61FB551A84238B00846EE7 /* SDLPRNDL.m */,
- 1E5AD04E1F1F7BF10029B8AF /* SDLRadioBand.h */,
- 1E5AD04F1F1F7BF10029B8AF /* SDLRadioBand.m */,
- 1E5AD05E1F207AB10029B8AF /* SDLRadioState.h */,
- 1E5AD05F1F207AB10029B8AF /* SDLRadioState.m */,
- 5D61FB741A84238B00846EE7 /* SDLRequestType.h */,
- 5D61FB751A84238B00846EE7 /* SDLRequestType.m */,
- 5D61FB7A1A84238B00846EE7 /* SDLResult.h */,
- 5D61FB7B1A84238B00846EE7 /* SDLResult.m */,
- 5D61FB7E1A84238B00846EE7 /* SDLRPCMessageType.h */,
- 4A26370B2493F0CE00278BE3 /* SDLRPCMessageType.m */,
- 5D61FB8A1A84238B00846EE7 /* SDLSamplingRate.h */,
- 5D61FB8B1A84238B00846EE7 /* SDLSamplingRate.m */,
- 1EB59CB1202D9B5F00343A61 /* SDLSeatMemoryActionType.h */,
- 1EB59CB2202D9B5F00343A61 /* SDLSeatMemoryActionType.m */,
- 884E702521FBAC5B008D53BA /* SDLServiceUpdateReason.h */,
- 884E702621FBAC5B008D53BA /* SDLServiceUpdateReason.m */,
- 5D61FBB61A84238B00846EE7 /* SDLSoftButtonType.h */,
- 5D61FBB71A84238B00846EE7 /* SDLSoftButtonType.m */,
- 5D61FBBC1A84238B00846EE7 /* SDLSpeechCapabilities.h */,
- 5D61FBBD1A84238B00846EE7 /* SDLSpeechCapabilities.m */,
- 1EB59CB9202DA1B400343A61 /* SDLSupportedSeat.h */,
- 1EB59CBA202DA1B400343A61 /* SDLSupportedSeat.m */,
- 88A795D02106787400056542 /* SDLStaticIconName.h */,
- 88A795D12106787400056542 /* SDLStaticIconName.m */,
- 5D61FBCE1A84238B00846EE7 /* SDLSystemAction.h */,
- 5D61FBCF1A84238B00846EE7 /* SDLSystemAction.m */,
- 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */,
- 5D00AC661F140F0A004000D9 /* SDLSystemCapabilityType.m */,
- 5D61FBD01A84238B00846EE7 /* SDLSystemContext.h */,
- 5D61FBD11A84238B00846EE7 /* SDLSystemContext.m */,
- 5D61FBD61A84238B00846EE7 /* SDLTBTState.h */,
- 5D61FBD71A84238B00846EE7 /* SDLTBTState.m */,
- 1EE48E8E1F2F0EE700B98D08 /* SDLTemperatureUnit.h */,
- 1EE48E8F1F2F0EE700B98D08 /* SDLTemperatureUnit.m */,
- 5D61FBDA1A84238B00846EE7 /* SDLTextAlignment.h */,
- 5D61FBDB1A84238C00846EE7 /* SDLTextAlignment.m */,
- 5D61FBDE1A84238C00846EE7 /* SDLTextFieldName.h */,
- 5D61FBDF1A84238C00846EE7 /* SDLTextFieldName.m */,
- 5D61FBE01A84238C00846EE7 /* SDLTimerMode.h */,
- 5D61FBE11A84238C00846EE7 /* SDLTimerMode.m */,
- 5D61FBEA1A84238C00846EE7 /* SDLTouchType.h */,
- 5D61FBEB1A84238C00846EE7 /* SDLTouchType.m */,
- 5D3E420820EAAD6500D8C622 /* SDLTPMS.h */,
- 5D3E420920EAAD6500D8C622 /* SDLTPMS.m */,
- 5D61FBEE1A84238C00846EE7 /* SDLTriggerSource.h */,
- 5D61FBEF1A84238C00846EE7 /* SDLTriggerSource.m */,
- 8818ADD62100FC18007D6F19 /* SDLTurnSignal.h */,
- 8818ADD72100FC18007D6F19 /* SDLTurnSignal.m */,
- 5D61FC021A84238C00846EE7 /* SDLUpdateMode.h */,
- 5D61FC031A84238C00846EE7 /* SDLUpdateMode.m */,
- 5D61FC101A84238C00846EE7 /* SDLVehicleDataActiveStatus.h */,
- 5D61FC111A84238C00846EE7 /* SDLVehicleDataActiveStatus.m */,
- 5D61FC121A84238C00846EE7 /* SDLVehicleDataEventStatus.h */,
- 5D61FC131A84238C00846EE7 /* SDLVehicleDataEventStatus.m */,
- 5D61FC141A84238C00846EE7 /* SDLVehicleDataNotificationStatus.h */,
- 5D61FC151A84238C00846EE7 /* SDLVehicleDataNotificationStatus.m */,
- 5D61FC181A84238C00846EE7 /* SDLVehicleDataResultCode.h */,
- 5D61FC191A84238C00846EE7 /* SDLVehicleDataResultCode.m */,
- 5D61FC1A1A84238C00846EE7 /* SDLVehicleDataStatus.h */,
- 5D61FC1B1A84238C00846EE7 /* SDLVehicleDataStatus.m */,
- 5D61FC1C1A84238C00846EE7 /* SDLVehicleDataType.h */,
- 5D61FC1D1A84238C00846EE7 /* SDLVehicleDataType.m */,
- 1E5AD03E1F1F58480029B8AF /* SDLVentilationMode.h */,
- 1E5AD03F1F1F58480029B8AF /* SDLVentilationMode.m */,
- 5D61FC201A84238C00846EE7 /* SDLVrCapabilities.h */,
- 5D61FC211A84238C00846EE7 /* SDLVrCapabilities.m */,
- 5D61FC241A84238C00846EE7 /* SDLWarningLightStatus.h */,
- 5D61FC251A84238C00846EE7 /* SDLWarningLightStatus.m */,
- DA9F7E811DCC047200ACAE48 /* SDLWayPointType.h */,
- DA9F7E821DCC047200ACAE48 /* SDLWayPointType.m */,
- 5D61FC261A84238C00846EE7 /* SDLWiperStatus.h */,
- 5D61FC271A84238C00846EE7 /* SDLWiperStatus.m */,
- 8B7B31981F2F7B5700BDC38D /* SDLVideoStreamingCodec.h */,
- 8B7B31991F2F7B5700BDC38D /* SDLVideoStreamingCodec.m */,
- 8B7B319C1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.h */,
- 8B7B319D1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.m */,
- 5D0C29FA20D93D8C008B56CD /* SDLVideoStreamingState.h */,
- 5D0C29FB20D93D8C008B56CD /* SDLVideoStreamingState.m */,
- 9FE2471322D77AD500F8D2FC /* SDLWindowType.h */,
- 9FE2471422D77AD500F8D2FC /* SDLWindowType.m */,
+ 4ABB26E724F7FB8D0061BF55 /* SDLAmbientLightStatus.h */,
+ 4ABB26EA24F7FB8D0061BF55 /* SDLAmbientLightStatus.m */,
+ 4ABB26E324F7FB8C0061BF55 /* SDLAppHMIType.h */,
+ 4ABB26F224F7FB8E0061BF55 /* SDLAppHMIType.m */,
+ 4ABB26E924F7FB8D0061BF55 /* SDLAppInterfaceUnregisteredReason.h */,
+ 4ABB26F424F7FB8E0061BF55 /* SDLAppInterfaceUnregisteredReason.m */,
+ 4ABB26E424F7FB8C0061BF55 /* SDLAppServiceType.h */,
+ 4ABB26E024F7FB8C0061BF55 /* SDLAppServiceType.m */,
+ 4ABB26E624F7FB8D0061BF55 /* SDLAudioStreamingIndicator.h */,
+ 4ABB26F124F7FB8E0061BF55 /* SDLAudioStreamingIndicator.m */,
+ 4ABB26F324F7FB8E0061BF55 /* SDLAudioStreamingState.h */,
+ 4ABB26E124F7FB8C0061BF55 /* SDLAudioStreamingState.m */,
+ 4ABB26E224F7FB8C0061BF55 /* SDLAudioType.h */,
+ 4ABB26F524F7FB8F0061BF55 /* SDLAudioType.m */,
+ 4ABB26EB24F7FB8D0061BF55 /* SDLBitsPerSample.h */,
+ 4ABB26E824F7FB8D0061BF55 /* SDLBitsPerSample.m */,
+ 4ABB26ED24F7FB8E0061BF55 /* SDLButtonName.h */,
+ 4ABB26F024F7FB8E0061BF55 /* SDLButtonName.m */,
+ 4ABB26E524F7FB8D0061BF55 /* SDLButtonEventMode.h */,
+ 4ABB26EC24F7FB8D0061BF55 /* SDLButtonEventMode.m */,
+ 4ABB26EE24F7FB8E0061BF55 /* SDLButtonPressMode.h */,
+ 4ABB26EF24F7FB8E0061BF55 /* SDLButtonPressMode.m */,
+ 4ABB271124F7FC4E0061BF55 /* SDLCapacityUnit.h */,
+ 4ABB271224F7FC4E0061BF55 /* SDLCapacityUnit.m */,
+ 4ABB270F24F7FC4E0061BF55 /* SDLCharacterSet.h */,
+ 4ABB271324F7FC4E0061BF55 /* SDLCharacterSet.m */,
+ 4ABB270C24F7FC4D0061BF55 /* SDLCarModeStatus.h */,
+ 4ABB270E24F7FC4D0061BF55 /* SDLCarModeStatus.m */,
+ 4ABB271024F7FC4E0061BF55 /* SDLCompassDirection.h */,
+ 4ABB270D24F7FC4D0061BF55 /* SDLCompassDirection.m */,
+ 4ABB271E24F7FCAE0061BF55 /* SDLComponentVolumeStatus.h */,
+ 4ABB271D24F7FCAD0061BF55 /* SDLComponentVolumeStatus.m */,
+ 4ABB272024F7FCAE0061BF55 /* SDLDefrostZone.h */,
+ 4ABB271C24F7FCAD0061BF55 /* SDLDefrostZone.m */,
+ 4ABB271F24F7FCAE0061BF55 /* SDLDeliveryMode.h */,
+ 4ABB272124F7FCAE0061BF55 /* SDLDeliveryMode.m */,
+ 4ABB273024F7FD1C0061BF55 /* SDLDeviceLevelStatus.h */,
+ 4ABB272F24F7FD1C0061BF55 /* SDLDeviceLevelStatus.m */,
+ 4ABB273324F7FD1D0061BF55 /* SDLDimension.h */,
+ 4ABB273124F7FD1C0061BF55 /* SDLDimension.m */,
+ 4ABB272E24F7FD1C0061BF55 /* SDLDirection.h */,
+ 4ABB272924F7FD1B0061BF55 /* SDLDirection.m */,
+ 4ABB272C24F7FD1C0061BF55 /* SDLDisplayMode.h */,
+ 4ABB273224F7FD1D0061BF55 /* SDLDisplayMode.m */,
+ 4ABB272824F7FD1B0061BF55 /* SDLDistanceUnit.h */,
+ 4ABB272A24F7FD1B0061BF55 /* SDLDistanceUnit.m */,
+ 4ABB272D24F7FD1C0061BF55 /* SDLDisplayType.h */,
+ 4ABB272B24F7FD1B0061BF55 /* SDLDisplayType.m */,
+ 4ABB274424F7FD9A0061BF55 /* SDLDriverDistractionState.h */,
+ 4ABB274924F7FD9B0061BF55 /* SDLDriverDistractionState.m */,
+ 4ABB274724F7FD9B0061BF55 /* SDLECallConfirmationStatus.h */,
+ 4ABB274324F7FD9A0061BF55 /* SDLECallConfirmationStatus.m */,
+ 4ABB274824F7FD9B0061BF55 /* SDLElectronicParkBrakeStatus.h */,
+ 4ABB274524F7FD9A0061BF55 /* SDLElectronicParkBrakeStatus.m */,
+ 4ABB274124F7FD9A0061BF55 /* SDLEmergencyEventType.h */,
+ 4ABB274B24F7FD9B0061BF55 /* SDLEmergencyEventType.m */,
+ 4ABB274024F7FD990061BF55 /* SDLFileType.h */,
+ 4ABB274A24F7FD9B0061BF55 /* SDLFileType.m */,
+ 4ABB274624F7FD9B0061BF55 /* SDLFuelCutoffStatus.h */,
+ 4ABB274224F7FD9A0061BF55 /* SDLFuelCutoffStatus.m */,
+ 4ABB275B24F7FE1F0061BF55 /* SDLFuelType.h */,
+ 4ABB275824F7FE1E0061BF55 /* SDLFuelType.m */,
+ 4ABB275A24F7FE1F0061BF55 /* SDLGlobalProperty.h */,
+ 4ABB275924F7FE1E0061BF55 /* SDLGlobalProperty.m */,
+ 4ABB276424F7FE480061BF55 /* SDLHMILevel.h */,
+ 4ABB276524F7FE480061BF55 /* SDLHMILevel.m */,
+ 4ABB276124F7FE470061BF55 /* SDLHMIZoneCapabilities.h */,
+ 4ABB276024F7FE470061BF55 /* SDLHMIZoneCapabilities.m */,
+ 4ABB276224F7FE470061BF55 /* SDLHybridAppPreference.h */,
+ 4ABB276324F7FE470061BF55 /* SDLHybridAppPreference.m */,
+ 4ABB276624F7FE480061BF55 /* SDLIgnitionStableStatus.h */,
+ 4ABB276724F7FE480061BF55 /* SDLIgnitionStableStatus.m */,
+ 4ABB277124F7FE900061BF55 /* SDLIgnitionStatus.h */,
+ 4ABB277324F7FE910061BF55 /* SDLIgnitionStatus.m */,
+ 4ABB278124F7FF090061BF55 /* SDLImageFieldName.h */,
+ 4ABB277D24F7FF080061BF55 /* SDLImageFieldName.m */,
+ 4ABB278724F7FF0A0061BF55 /* SDLImageType.h */,
+ 4ABB278024F7FF090061BF55 /* SDLImageType.m */,
+ 4ABB278A24F7FF0B0061BF55 /* SDLInteractionMode.h */,
+ 4ABB278224F7FF090061BF55 /* SDLInteractionMode.m */,
+ 4ABB278624F7FF0A0061BF55 /* SDLKeyboardEvent.h */,
+ 4ABB277E24F7FF090061BF55 /* SDLKeyboardEvent.m */,
+ 4ABB278B24F7FF0B0061BF55 /* SDLKeyboardLayout.h */,
+ 4ABB277F24F7FF090061BF55 /* SDLKeyboardLayout.m */,
+ 4ABB278824F7FF0A0061BF55 /* SDLKeypressMode.h */,
+ 4ABB278424F7FF0A0061BF55 /* SDLKeypressMode.m */,
+ 4ABB278924F7FF0B0061BF55 /* SDLLanguage.h */,
+ 4ABB277C24F7FF080061BF55 /* SDLLanguage.m */,
+ 4ABB278324F7FF0A0061BF55 /* SDLLayoutMode.h */,
+ 4ABB278524F7FF0A0061BF55 /* SDLLayoutMode.m */,
+ 4ABB277024F7FE900061BF55 /* SDLLightName.h */,
+ 4ABB277224F7FE900061BF55 /* SDLLightName.m */,
+ 4ABB277824F7FEB90061BF55 /* SDLLightStatus.h */,
+ 4ABB277924F7FEB90061BF55 /* SDLLightStatus.m */,
+ 4ABB27A724F7FFDA0061BF55 /* SDLMaintenanceModeStatus.h */,
+ 4ABB27A324F7FFD90061BF55 /* SDLMaintenanceModeStatus.m */,
+ 4ABB27A424F7FFD90061BF55 /* SDLMassageCushion.h */,
+ 4ABB27A524F7FFD90061BF55 /* SDLMassageCushion.m */,
+ 4ABB279C24F7FFD80061BF55 /* SDLMassageMode.h */,
+ 4ABB27A624F7FFD90061BF55 /* SDLMassageMode.m */,
+ 4ABB279E24F7FFD80061BF55 /* SDLMassageZone.h */,
+ 4ABB279F24F7FFD80061BF55 /* SDLMassageZone.m */,
+ 4ABB27A024F7FFD80061BF55 /* SDLMediaClockFormat.h */,
+ 4ABB279D24F7FFD80061BF55 /* SDLMediaClockFormat.m */,
+ 4ABB27C024F8006C0061BF55 /* SDLMediaType.h */,
+ 4ABB27BC24F8006C0061BF55 /* SDLMediaType.m */,
+ 4ABB27BD24F8006C0061BF55 /* SDLMenuLayout.h */,
+ 4ABB27BB24F8006B0061BF55 /* SDLMenuLayout.m */,
+ 4ABB27B424F8006A0061BF55 /* SDLMetadataType.h */,
+ 4ABB27B524F8006A0061BF55 /* SDLMetadataType.m */,
+ 4ABB27BF24F8006C0061BF55 /* SDLModuleType.h */,
+ 4ABB27B824F8006B0061BF55 /* SDLModuleType.m */,
+ 4ABB27B724F8006B0061BF55 /* SDLNavigationAction.h */,
+ 4ABB27BA24F8006B0061BF55 /* SDLNavigationAction.m */,
+ 4ABB27C124F8006C0061BF55 /* SDLNavigationJunction.h */,
+ 4ABB27BE24F8006C0061BF55 /* SDLNavigationJunction.m */,
+ 4ABB27B624F8006A0061BF55 /* SDLPermissionStatus.h */,
+ 4ABB27B924F8006B0061BF55 /* SDLPermissionStatus.m */,
+ 4ABB27D624F800C90061BF55 /* SDLPowerModeQualificationStatus.h */,
+ 4ABB27D424F800C90061BF55 /* SDLPowerModeQualificationStatus.m */,
+ 4ABB27D724F800C90061BF55 /* SDLPowerModeStatus.h */,
+ 4ABB27D024F800C80061BF55 /* SDLPowerModeStatus.m */,
+ 4ABB27D324F800C90061BF55 /* SDLPredefinedLayout.h */,
+ 4ABB27D124F800C80061BF55 /* SDLPredefinedLayout.m */,
+ 4ABB27D924F800CA0061BF55 /* SDLPrerecordedSpeech.h */,
+ 4ABB27D524F800C90061BF55 /* SDLPrerecordedSpeech.m */,
+ 4ABB27D824F800CA0061BF55 /* SDLPredefinedWindows.h */,
+ 4ABB27DA24F800CA0061BF55 /* SDLPrimaryAudioSource.h */,
+ 4ABB27D224F800C80061BF55 /* SDLPrimaryAudioSource.m */,
+ 4ABB27EA24F801B50061BF55 /* SDLPRNDL.h */,
+ 4ABB27EB24F801B50061BF55 /* SDLPRNDL.m */,
+ 4ABB27E824F801B40061BF55 /* SDLRadioBand.h */,
+ 4ABB27E624F801B40061BF55 /* SDLRadioBand.m */,
+ 4ABB27E924F801B50061BF55 /* SDLRadioState.h */,
+ 4ABB27E724F801B40061BF55 /* SDLRadioState.m */,
+ 4ABB27F724F823F20061BF55 /* SDLRequestType.h */,
+ 4ABB27F424F823F10061BF55 /* SDLRequestType.m */,
+ 4ABB27F924F823F20061BF55 /* SDLResult.h */,
+ 4ABB27F824F823F20061BF55 /* SDLResult.m */,
+ 4ABB27F324F823F10061BF55 /* SDLRPCMessageType.h */,
+ 4ABB27F224F823F10061BF55 /* SDLRPCMessageType.m */,
+ 4ABB27F524F823F10061BF55 /* SDLSamplingRate.h */,
+ 4ABB27F624F823F20061BF55 /* SDLSamplingRate.m */,
+ 4ABB280524F824600061BF55 /* SDLSeatMemoryActionType.h */,
+ 4ABB280224F8245F0061BF55 /* SDLSeatMemoryActionType.m */,
+ 4ABB280424F824600061BF55 /* SDLServiceUpdateReason.h */,
+ 4ABB280724F824600061BF55 /* SDLServiceUpdateReason.m */,
+ 4ABB280624F824600061BF55 /* SDLSoftButtonType.h */,
+ 4ABB280324F8245F0061BF55 /* SDLSoftButtonType.m */,
+ 4ABB281124F824A40061BF55 /* SDLSpeechCapabilities.h */,
+ 4ABB281024F824A40061BF55 /* SDLSpeechCapabilities.m */,
+ 4ABB281224F824A40061BF55 /* SDLStaticIconName.h */,
+ 4ABB281324F824A50061BF55 /* SDLStaticIconName.m */,
+ 4ABB280E24F824A40061BF55 /* SDLSupportedSeat.h */,
+ 4ABB280F24F824A40061BF55 /* SDLSupportedSeat.m */,
+ 4ABB281D24F824E60061BF55 /* SDLSystemAction.h */,
+ 4ABB281E24F824E60061BF55 /* SDLSystemAction.m */,
+ 4ABB282424F824E70061BF55 /* SDLSystemCapabilityType.h */,
+ 4ABB281B24F824E60061BF55 /* SDLSystemCapabilityType.m */,
+ 4ABB281C24F824E60061BF55 /* SDLSystemContext.h */,
+ 4ABB282124F824E70061BF55 /* SDLSystemContext.m */,
+ 4ABB281F24F824E60061BF55 /* SDLTBTState.h */,
+ 4ABB282024F824E70061BF55 /* SDLTBTState.m */,
+ 4ABB281A24F824E60061BF55 /* SDLTemperatureUnit.h */,
+ 4ABB282524F824E70061BF55 /* SDLTemperatureUnit.m */,
+ 4ABB282224F824E70061BF55 /* SDLTextAlignment.h */,
+ 4ABB282324F824E70061BF55 /* SDLTextAlignment.m */,
+ 4ABB283424F828610061BF55 /* SDLTextFieldName.h */,
+ 4ABB283924F828610061BF55 /* SDLTextFieldName.m */,
+ 4ABB283A24F828620061BF55 /* SDLTimerMode.h */,
+ 4ABB283C24F828620061BF55 /* SDLTimerMode.m */,
+ 4ABB283824F828610061BF55 /* SDLTouchType.h */,
+ 4ABB283724F828610061BF55 /* SDLTouchType.m */,
+ 4ABB283224F828600061BF55 /* SDLTPMS.h */,
+ 4ABB283E24F828620061BF55 /* SDLTPMS.m */,
+ 4ABB283D24F828620061BF55 /* SDLTransmissionType.h */,
+ 4ABB283F24F828630061BF55 /* SDLTransmissionType.m */,
+ 4ABB283524F828610061BF55 /* SDLTriggerSource.h */,
+ 4ABB283B24F828620061BF55 /* SDLTriggerSource.m */,
+ 4ABB283324F828600061BF55 /* SDLTurnSignal.h */,
+ 4ABB283624F828610061BF55 /* SDLTurnSignal.m */,
+ 4ABB285524F828DF0061BF55 /* SDLUpdateMode.h */,
+ 4ABB285224F828DE0061BF55 /* SDLUpdateMode.m */,
+ 4ABB285124F828DE0061BF55 /* SDLVehicleDataActiveStatus.h */,
+ 4ABB285B24F828E00061BF55 /* SDLVehicleDataActiveStatus.m */,
+ 4ABB284E24F828DD0061BF55 /* SDLVehicleDataEventStatus.h */,
+ 4ABB285A24F828E00061BF55 /* SDLVehicleDataEventStatus.m */,
+ 4ABB285624F828DF0061BF55 /* SDLVehicleDataNotificationStatus.h */,
+ 4ABB285724F828DF0061BF55 /* SDLVehicleDataNotificationStatus.m */,
+ 4ABB285324F828DE0061BF55 /* SDLVehicleDataResultCode.h */,
+ 4ABB285424F828DE0061BF55 /* SDLVehicleDataResultCode.m */,
+ 4ABB285924F828DF0061BF55 /* SDLVehicleDataStatus.h */,
+ 4ABB285024F828DE0061BF55 /* SDLVehicleDataStatus.m */,
+ 4ABB285824F828DF0061BF55 /* SDLVehicleDataType.h */,
+ 4ABB284F24F828DE0061BF55 /* SDLVehicleDataType.m */,
+ 4ABB287224F829490061BF55 /* SDLVentilationMode.h */,
+ 4ABB286C24F829480061BF55 /* SDLVentilationMode.m */,
+ 4ABB288224F82A330061BF55 /* SDLVideoStreamingCodec.h */,
+ 4ABB288424F82A330061BF55 /* SDLVideoStreamingCodec.m */,
+ 4ABB288324F82A330061BF55 /* SDLVideoStreamingFormat.h */,
+ 4ABB288524F82A340061BF55 /* SDLVideoStreamingFormat.m */,
+ 4ABB288624F82A340061BF55 /* SDLVideoStreamingProtocol.h */,
+ 4ABB288724F82A340061BF55 /* SDLVideoStreamingProtocol.m */,
+ 4A8BD3A424F9485A000945E3 /* SDLVideoStreamingState.h */,
+ 4A8BD3A324F9485A000945E3 /* SDLVideoStreamingState.m */,
+ 4ABB286E24F829490061BF55 /* SDLVrCapabilities.h */,
+ 4ABB287024F829490061BF55 /* SDLVrCapabilities.m */,
+ 4ABB286B24F829480061BF55 /* SDLWarningLightStatus.h */,
+ 4ABB286D24F829480061BF55 /* SDLWarningLightStatus.m */,
+ 4ABB287324F8294A0061BF55 /* SDLWayPointType.h */,
+ 4ABB287124F829490061BF55 /* SDLWayPointType.m */,
+ 4ABB287E24F82A1F0061BF55 /* SDLWindowType.h */,
+ 4ABB287F24F82A200061BF55 /* SDLWindowType.m */,
+ 4ABB286A24F829480061BF55 /* SDLWiperStatus.h */,
+ 4ABB286F24F829490061BF55 /* SDLWiperStatus.m */,
);
name = Enums;
sourceTree = "<group>";
@@ -5272,16 +5391,16 @@
children = (
5DD67CC01E68AE66009CD394 /* Modules */,
5DBF063D1E64BDAE00A5CF03 /* Log Targets */,
- 5DBF06211E64A83F00A5CF03 /* SDLLogManager.h */,
- 5DBF06221E64A83F00A5CF03 /* SDLLogManager.m */,
- 5DBF062B1E64A93A00A5CF03 /* SDLLogFilter.h */,
- 5DBF062C1E64A93A00A5CF03 /* SDLLogFilter.m */,
- 5DBF062F1E64A9C600A5CF03 /* SDLLogModel.h */,
- 5DBF06301E64A9C600A5CF03 /* SDLLogModel.m */,
- 5DBF06331E64A9FE00A5CF03 /* SDLLogConstants.h */,
- 5DBF06371E64ABBE00A5CF03 /* SDLLogConfiguration.h */,
- 5DBF06381E64ABBE00A5CF03 /* SDLLogConfiguration.m */,
- 5DD67CC51E68B568009CD394 /* SDLLogMacros.h */,
+ 4ABB26B524F7FA1B0061BF55 /* SDLLogConfiguration.h */,
+ 4ABB26B724F7FA1B0061BF55 /* SDLLogConfiguration.m */,
+ 4ABB26B424F7FA1B0061BF55 /* SDLLogConstants.h */,
+ 4ABB26B924F7FA1C0061BF55 /* SDLLogFilter.h */,
+ 4ABB26B624F7FA1B0061BF55 /* SDLLogFilter.m */,
+ 4ABB26B824F7FA1B0061BF55 /* SDLLogMacros.h */,
+ 4A8BD3AE24F98ACE000945E3 /* SDLLogManager.h */,
+ 4A8BD3AD24F98ACE000945E3 /* SDLLogManager.m */,
+ 4ABB26C224F7FA5F0061BF55 /* SDLLogModel.h */,
+ 4ABB26C124F7FA5F0061BF55 /* SDLLogModel.m */,
);
name = Logging;
sourceTree = "<group>";
@@ -5289,24 +5408,23 @@
5D5934F61A85189500687FB9 /* Utilities */ = {
isa = PBXGroup;
children = (
- 8803DCED22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h */,
- 8803DCEE22C2B84B00FBB7CE /* SDLBackgroundTaskManager.m */,
- 97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */,
- 97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */,
E9C32B831AB20B2900F283AF /* @categories */,
- 5D5934F91A851A8000687FB9 /* Prioritized Objects */,
- 5D535DC31B72473800CF7760 /* SDLGlobals.h */,
- 5D535DC41B72473800CF7760 /* SDLGlobals.m */,
- 5D61FAD21A84238A00846EE7 /* SDLHexUtility.h */,
- 5D61FAD31A84238A00846EE7 /* SDLHexUtility.m */,
- 883C22C6222ED84D00939C4C /* SDLRPCFunctionNames.h */,
- 883C22C7222ED84D00939C4C /* SDLRPCFunctionNames.m */,
- 5D61FB0F1A84238A00846EE7 /* SDLRPCParameterNames.h */,
- DA0C46AC1DCD35080001F2A8 /* SDLRPCParameterNames.m */,
- E9C32B8E1AB20BA200F283AF /* SDLTimer.h */,
- E9C32B8F1AB20BA200F283AF /* SDLTimer.m */,
- DA0C46AE1DCD41E30001F2A8 /* SDLMacros.h */,
10415106241BBB8B00F163CC /* Lock Screen Icon Cache */,
+ 5D5934F91A851A8000687FB9 /* Prioritized Objects */,
+ 4ABB268024F7F8D50061BF55 /* SDLBackgroundTaskManager.h */,
+ 4ABB268124F7F8D60061BF55 /* SDLBackgroundTaskManager.m */,
+ 4ABB268424F7F8E20061BF55 /* SDLMutableDataQueue.h */,
+ 4ABB268524F7F8E20061BF55 /* SDLMutableDataQueue.m */,
+ 4ABB268824F7F8F00061BF55 /* SDLGlobals.h */,
+ 4ABB268924F7F8F00061BF55 /* SDLGlobals.m */,
+ 4ABB268D24F7F8FB0061BF55 /* SDLHexUtility.h */,
+ 4ABB268C24F7F8FB0061BF55 /* SDLHexUtility.m */,
+ 4ABB269424F7F93F0061BF55 /* SDLRPCFunctionNames.h */,
+ 4ABB269524F7F93F0061BF55 /* SDLRPCFunctionNames.m */,
+ 4ABB269A24F7F9710061BF55 /* SDLRPCParameterNames.h */,
+ 4ABB269B24F7F9710061BF55 /* SDLRPCParameterNames.m */,
+ 4ABB269124F7F9060061BF55 /* SDLTimer.h */,
+ 4ABB269024F7F9060061BF55 /* SDLTimer.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -5314,52 +5432,56 @@
5D5934F81A8519C300687FB9 /* Notification */ = {
isa = PBXGroup;
children = (
- 5D61FB121A84238B00846EE7 /* SDLOnAppInterfaceUnregistered.h */,
- 5D61FB131A84238B00846EE7 /* SDLOnAppInterfaceUnregistered.m */,
- 8855F9E1220CB04000A5C897 /* SDLOnAppServiceData.h */,
- 8855F9E2220CB04000A5C897 /* SDLOnAppServiceData.m */,
- 5D61FB141A84238B00846EE7 /* SDLOnAudioPassThru.h */,
- 5D61FB151A84238B00846EE7 /* SDLOnAudioPassThru.m */,
- 5D61FB161A84238B00846EE7 /* SDLOnButtonEvent.h */,
- 5D61FB171A84238B00846EE7 /* SDLOnButtonEvent.m */,
- 5D61FB181A84238B00846EE7 /* SDLOnButtonPress.h */,
- 5D61FB191A84238B00846EE7 /* SDLOnButtonPress.m */,
- 5D61FB1A1A84238B00846EE7 /* SDLOnCommand.h */,
- 5D61FB1B1A84238B00846EE7 /* SDLOnCommand.m */,
- 5D61FB1C1A84238B00846EE7 /* SDLOnDriverDistraction.h */,
- 5D61FB1D1A84238B00846EE7 /* SDLOnDriverDistraction.m */,
- 5D61FB1E1A84238B00846EE7 /* SDLOnEncodedSyncPData.h */,
- 5D61FB1F1A84238B00846EE7 /* SDLOnEncodedSyncPData.m */,
- 5D61FB201A84238B00846EE7 /* SDLOnHashChange.h */,
- 5D61FB211A84238B00846EE7 /* SDLOnHashChange.m */,
- 5D61FB221A84238B00846EE7 /* SDLOnHMIStatus.h */,
- 5D61FB231A84238B00846EE7 /* SDLOnHMIStatus.m */,
- 1E5AD0961F20C0FB0029B8AF /* SDLOnInteriorVehicleData.h */,
- 1E5AD0971F20C0FB0029B8AF /* SDLOnInteriorVehicleData.m */,
- 5D61FB241A84238B00846EE7 /* SDLOnKeyboardInput.h */,
- 5D61FB251A84238B00846EE7 /* SDLOnKeyboardInput.m */,
- 5D61FB261A84238B00846EE7 /* SDLOnLanguageChange.h */,
- 5D61FB271A84238B00846EE7 /* SDLOnLanguageChange.m */,
- 5D61FB281A84238B00846EE7 /* SDLOnLockScreenStatus.h */,
- 5D61FB291A84238B00846EE7 /* SDLOnLockScreenStatus.m */,
- 5D61FB2A1A84238B00846EE7 /* SDLOnPermissionsChange.h */,
- 5D61FB2B1A84238B00846EE7 /* SDLOnPermissionsChange.m */,
- 1EAA47092032BAE5000FE74B /* SDLOnRCStatus.h */,
- 1EAA470A2032BAE5000FE74B /* SDLOnRCStatus.m */,
- 5D61FB2C1A84238B00846EE7 /* SDLOnSyncPData.h */,
- 5D61FB2D1A84238B00846EE7 /* SDLOnSyncPData.m */,
- 884AF94D220B488900E22928 /* SDLOnSystemCapabilityUpdated.h */,
- 884AF94E220B488900E22928 /* SDLOnSystemCapabilityUpdated.m */,
- 5D61FB2E1A84238B00846EE7 /* SDLOnSystemRequest.h */,
- 5D61FB2F1A84238B00846EE7 /* SDLOnSystemRequest.m */,
- 5D61FB301A84238B00846EE7 /* SDLOnTBTClientState.h */,
- 5D61FB311A84238B00846EE7 /* SDLOnTBTClientState.m */,
- 5D61FB321A84238B00846EE7 /* SDLOnTouchEvent.h */,
- 5D61FB331A84238B00846EE7 /* SDLOnTouchEvent.m */,
- 5D61FB341A84238B00846EE7 /* SDLOnVehicleData.h */,
- 5D61FB351A84238B00846EE7 /* SDLOnVehicleData.m */,
- DA9F7E7D1DCC028B00ACAE48 /* SDLOnWayPointChange.h */,
- DA9F7E7E1DCC028B00ACAE48 /* SDLOnWayPointChange.m */,
+ 4ABB28BA24F82A690061BF55 /* SDLOnAppInterfaceUnregistered.h */,
+ 4ABB289324F82A640061BF55 /* SDLOnAppInterfaceUnregistered.m */,
+ 4ABB28B624F82A690061BF55 /* SDLOnAppServiceData.h */,
+ 4ABB28AF24F82A680061BF55 /* SDLOnAppServiceData.m */,
+ 4ABB28B724F82A690061BF55 /* SDLOnAudioPassThru.h */,
+ 4ABB28A624F82A670061BF55 /* SDLOnAudioPassThru.m */,
+ 4ABB28A524F82A670061BF55 /* SDLOnButtonEvent.h */,
+ 4ABB28A124F82A660061BF55 /* SDLOnButtonEvent.m */,
+ 4ABB28AD24F82A680061BF55 /* SDLOnButtonPress.h */,
+ 4ABB28AE24F82A680061BF55 /* SDLOnButtonPress.m */,
+ 4ABB289024F82A640061BF55 /* SDLOnCommand.h */,
+ 4ABB289424F82A640061BF55 /* SDLOnCommand.m */,
+ 4ABB28B524F82A690061BF55 /* SDLOnDriverDistraction.h */,
+ 4ABB28B124F82A680061BF55 /* SDLOnDriverDistraction.m */,
+ 4ABB289524F82A650061BF55 /* SDLOnEncodedSyncPData.h */,
+ 4ABB28A424F82A670061BF55 /* SDLOnEncodedSyncPData.m */,
+ 4ABB28BB24F82A690061BF55 /* SDLOnHashChange.h */,
+ 4ABB28AC24F82A670061BF55 /* SDLOnHashChange.m */,
+ 4ABB28B024F82A680061BF55 /* SDLOnHMIStatus.h */,
+ 4ABB289724F82A650061BF55 /* SDLOnHMIStatus.m */,
+ 4ABB28AA24F82A670061BF55 /* SDLOnInteriorVehicleData.h */,
+ 4ABB28A724F82A670061BF55 /* SDLOnInteriorVehicleData.m */,
+ 4ABB28BD24F82A6A0061BF55 /* SDLOnKeyboardInput.h */,
+ 4ABB289624F82A650061BF55 /* SDLOnKeyboardInput.m */,
+ 4ABB289824F82A650061BF55 /* SDLOnLanguageChange.h */,
+ 4ABB28B224F82A680061BF55 /* SDLOnLanguageChange.m */,
+ 4ABB289C24F82A650061BF55 /* SDLOnPermissionsChange.h */,
+ 4ABB28B424F82A680061BF55 /* SDLOnPermissionsChange.m */,
+ 4ABB28A824F82A670061BF55 /* SDLOnRCStatus.h */,
+ 4ABB289924F82A650061BF55 /* SDLOnRCStatus.m */,
+ 4ABB289D24F82A660061BF55 /* SDLOnSubtleAlertPressed.h */,
+ 4ABB289E24F82A660061BF55 /* SDLOnSubtleAlertPressed.m */,
+ 4ABB28A924F82A670061BF55 /* SDLOnSyncPData.h */,
+ 4ABB288E24F82A640061BF55 /* SDLOnSyncPData.m */,
+ 4ABB28AB24F82A670061BF55 /* SDLOnSystemCapabilityUpdated.h */,
+ 4ABB28A324F82A660061BF55 /* SDLOnSystemCapabilityUpdated.m */,
+ 4ABB289A24F82A650061BF55 /* SDLOnSystemRequest.h */,
+ 4ABB289F24F82A660061BF55 /* SDLOnSystemRequest.m */,
+ 4ABB28B324F82A680061BF55 /* SDLOnTBTClientState.h */,
+ 4ABB288F24F82A640061BF55 /* SDLOnTBTClientState.m */,
+ 4ABB289224F82A640061BF55 /* SDLOnTouchEvent.h */,
+ 4ABB289B24F82A650061BF55 /* SDLOnTouchEvent.m */,
+ 4A8BD3B324F98F64000945E3 /* SDLOnUpdateFile.h */,
+ 4A8BD3B124F98F63000945E3 /* SDLOnUpdateFile.m */,
+ 4A8BD3B424F98F64000945E3 /* SDLOnUpdateSubMenu.h */,
+ 4A8BD3B224F98F63000945E3 /* SDLOnUpdateSubMenu.m */,
+ 4ABB28B824F82A690061BF55 /* SDLOnVehicleData.h */,
+ 4ABB28BC24F82A690061BF55 /* SDLOnVehicleData.m */,
+ 4ABB28A024F82A660061BF55 /* SDLOnWayPointChange.h */,
+ 4ABB28B924F82A690061BF55 /* SDLOnWayPointChange.m */,
);
name = Notification;
sourceTree = "<group>";
@@ -5367,10 +5489,10 @@
5D5934F91A851A8000687FB9 /* Prioritized Objects */ = {
isa = PBXGroup;
children = (
- 5D61FB101A84238A00846EE7 /* SDLObjectWithPriority.h */,
- 5D61FB111A84238A00846EE7 /* SDLObjectWithPriority.m */,
- 5D61FB521A84238B00846EE7 /* SDLPrioritizedObjectCollection.h */,
- 5D61FB531A84238B00846EE7 /* SDLPrioritizedObjectCollection.m */,
+ 4ABB267424F7F6720061BF55 /* SDLObjectWithPriority.h */,
+ 4ABB267524F7F6720061BF55 /* SDLObjectWithPriority.m */,
+ 4ABB267124F7F6640061BF55 /* SDLPrioritizedObjectCollection.h */,
+ 4ABB267024F7F6640061BF55 /* SDLPrioritizedObjectCollection.m */,
);
name = "Prioritized Objects";
sourceTree = "<group>";
@@ -5378,7 +5500,7 @@
5D5934FA1A851AC900687FB9 /* @protocols */ = {
isa = PBXGroup;
children = (
- 5D61FB5A1A84238B00846EE7 /* SDLProtocolDelegate.h */,
+ 4A8BD32324F94302000945E3 /* SDLProtocolDelegate.h */,
);
name = "@protocols";
sourceTree = "<group>";
@@ -5386,18 +5508,18 @@
5D5934FF1A851B8400687FB9 /* Superclasses */ = {
isa = PBXGroup;
children = (
- 5D61FABA1A84238A00846EE7 /* SDLEnum.h */,
- DA4F47951E771AA100FC809E /* SDLEnum.m */,
- 5DB92D301AC9C8BA00C15BB0 /* SDLRPCStruct.h */,
- 5DB92D311AC9C8BA00C15BB0 /* SDLRPCStruct.m */,
- 5D61FB7C1A84238B00846EE7 /* SDLRPCMessage.h */,
- 5D61FB7D1A84238B00846EE7 /* SDLRPCMessage.m */,
- 5D61FB801A84238B00846EE7 /* SDLRPCNotification.h */,
- 5D61FB811A84238B00846EE7 /* SDLRPCNotification.m */,
- 5D61FB841A84238B00846EE7 /* SDLRPCRequest.h */,
- 5D61FB851A84238B00846EE7 /* SDLRPCRequest.m */,
- 5D61FB881A84238B00846EE7 /* SDLRPCResponse.h */,
- 5D61FB891A84238B00846EE7 /* SDLRPCResponse.m */,
+ 4ABB26C824F7FAAE0061BF55 /* SDLEnum.h */,
+ 4ABB26C924F7FAAF0061BF55 /* SDLEnum.m */,
+ 4ABB26CD24F7FAFC0061BF55 /* SDLRPCMessage.h */,
+ 4ABB26D124F7FAFD0061BF55 /* SDLRPCMessage.m */,
+ 4ABB26CC24F7FAFC0061BF55 /* SDLRPCNotification.h */,
+ 4ABB26D524F7FAFD0061BF55 /* SDLRPCNotification.m */,
+ 4ABB26D424F7FAFD0061BF55 /* SDLRPCRequest.h */,
+ 4ABB26CF24F7FAFC0061BF55 /* SDLRPCRequest.m */,
+ 4ABB26D324F7FAFD0061BF55 /* SDLRPCResponse.h */,
+ 4ABB26D024F7FAFC0061BF55 /* SDLRPCResponse.m */,
+ 4ABB26D224F7FAFD0061BF55 /* SDLRPCStruct.h */,
+ 4ABB26CE24F7FAFC0061BF55 /* SDLRPCStruct.m */,
);
name = Superclasses;
sourceTree = "<group>";
@@ -5405,8 +5527,8 @@
5D5935001A851D0B00687FB9 /* @protocols */ = {
isa = PBXGroup;
children = (
- 5D61FA3E1A84238A00846EE7 /* SDLTransportType.h */,
- 5D61FBED1A84238C00846EE7 /* SDLTransportDelegate.h */,
+ 4A8BD38024F946D4000945E3 /* SDLTransportDelegate.h */,
+ 4A8BD37F24F946D4000945E3 /* SDLTransportType.h */,
);
name = "@protocols";
sourceTree = "<group>";
@@ -5414,12 +5536,12 @@
5D5935011A851D7E00687FB9 /* Header */ = {
isa = PBXGroup;
children = (
- 5D61FB581A84238B00846EE7 /* SDLProtocolHeader.h */,
- 5D61FB591A84238B00846EE7 /* SDLProtocolHeader.m */,
- 5D61FC081A84238C00846EE7 /* SDLV1ProtocolHeader.h */,
- 5D61FC091A84238C00846EE7 /* SDLV1ProtocolHeader.m */,
- 5D61FC0C1A84238C00846EE7 /* SDLV2ProtocolHeader.h */,
- 5D61FC0D1A84238C00846EE7 /* SDLV2ProtocolHeader.m */,
+ 4A8BD32824F9431B000945E3 /* SDLProtocolHeader.h */,
+ 4A8BD32924F9431B000945E3 /* SDLProtocolHeader.m */,
+ 4A8BD32724F9431B000945E3 /* SDLV1ProtocolHeader.h */,
+ 4A8BD32524F9431B000945E3 /* SDLV1ProtocolHeader.m */,
+ 4A8BD32A24F9431B000945E3 /* SDLV2ProtocolHeader.h */,
+ 4A8BD32624F9431B000945E3 /* SDLV2ProtocolHeader.m */,
);
name = Header;
sourceTree = "<group>";
@@ -5428,12 +5550,12 @@
isa = PBXGroup;
children = (
5DA49CE21F1EA77900E65FC5 /* Control Frame Payloads */,
- 5D61FB5B1A84238B00846EE7 /* SDLProtocolMessage.h */,
- 5D61FB5C1A84238B00846EE7 /* SDLProtocolMessage.m */,
- 5D61FC0A1A84238C00846EE7 /* SDLV1ProtocolMessage.h */,
- 5D61FC0B1A84238C00846EE7 /* SDLV1ProtocolMessage.m */,
- 5D61FC0E1A84238C00846EE7 /* SDLV2ProtocolMessage.h */,
- 5D61FC0F1A84238C00846EE7 /* SDLV2ProtocolMessage.m */,
+ 4A8BD36024F9461A000945E3 /* SDLProtocolMessage.h */,
+ 4A8BD35B24F9461A000945E3 /* SDLProtocolMessage.m */,
+ 4A8BD35C24F9461A000945E3 /* SDLV1ProtocolMessage.h */,
+ 4A8BD35D24F9461A000945E3 /* SDLV1ProtocolMessage.m */,
+ 4A8BD35E24F9461A000945E3 /* SDLV2ProtocolMessage.h */,
+ 4A8BD35F24F9461A000945E3 /* SDLV2ProtocolMessage.m */,
);
name = Message;
sourceTree = "<group>";
@@ -5441,8 +5563,8 @@
5D5935041A851E1A00687FB9 /* Payload */ = {
isa = PBXGroup;
children = (
- 5D61FB821A84238B00846EE7 /* SDLRPCPayload.h */,
- 5D61FB831A84238B00846EE7 /* SDLRPCPayload.m */,
+ 4ABB28EF24F82AFD0061BF55 /* SDLRPCPayload.h */,
+ 4ABB28EE24F82AFD0061BF55 /* SDLRPCPayload.m */,
);
name = Payload;
sourceTree = "<group>";
@@ -5450,8 +5572,8 @@
5D6008871BE3ED470094A505 /* State Machine */ = {
isa = PBXGroup;
children = (
- 5D6008881BE3ED540094A505 /* SDLStateMachine.h */,
- 5D6008891BE3ED540094A505 /* SDLStateMachine.m */,
+ 4ABB24CA24F5931B0061BF55 /* SDLStateMachine.h */,
+ 4ABB24CB24F5931B0061BF55 /* SDLStateMachine.m */,
);
name = "State Machine";
sourceTree = "<group>";
@@ -5473,9 +5595,10 @@
5D616B501D59042B00553F6B /* Errors */ = {
isa = PBXGroup;
children = (
- 5DA3F3581BC448480026F2D0 /* SDLError.h */,
- 5DA3F3591BC448480026F2D0 /* SDLError.m */,
- 5D616B511D59044400553F6B /* SDLErrorConstants.h */,
+ 4ABB24C424F592900061BF55 /* SDLError.h */,
+ 4ABB24C524F592900061BF55 /* SDLError.m */,
+ 4ABB24CE24F593C70061BF55 /* SDLErrorConstants.h */,
+ 4A1FA09A25114833006B7851 /* SDLErrorConstants.m */,
);
name = Errors;
sourceTree = "<group>";
@@ -5491,7 +5614,6 @@
5D5934F01A85161A00687FB9 /* Transport */,
5D61FA201A84237100846EE7 /* SmartDeviceLink.h */,
5D1665A01CF5D5DA00CC4CA1 /* .gitignore */,
- 5D1665A11CF5D5DA00CC4CA1 /* .travis.yml */,
5D1665A21CF5D5DA00CC4CA1 /* Cartfile.private */,
5D1665A31CF5D5DA00CC4CA1 /* CHANGELOG.md */,
5D1665A41CF5D5DA00CC4CA1 /* DEPENDENCIES.md */,
@@ -5541,7 +5663,7 @@
5D6CC8ED1C610E490027F60A /* Security */ = {
isa = PBXGroup;
children = (
- 5D6CC8EE1C610E660027F60A /* SDLSecurityType.h */,
+ 4A8BD3BD24F99470000945E3 /* SDLSecurityType.h */,
);
name = Security;
sourceTree = "<group>";
@@ -5570,8 +5692,8 @@
children = (
5D6F7A3D1BC811FC0070BF37 /* SDLAssets.xcassets */,
5D616B481D552F7A00553F6B /* SDLLockScreen.storyboard */,
- 5D6F7A331BC5B9B60070BF37 /* SDLLockScreenViewController.h */,
- 5D6F7A341BC5B9B60070BF37 /* SDLLockScreenViewController.m */,
+ 4ABB254B24F7E4C60061BF55 /* SDLLockScreenViewController.h */,
+ 4ABB254A24F7E4C60061BF55 /* SDLLockScreenViewController.m */,
);
name = "Lock Screen UI";
sourceTree = "<group>";
@@ -5588,8 +5710,8 @@
5D75960E22972FB90013207C /* Utilities */ = {
isa = PBXGroup;
children = (
- 5D75960F22972FCA0013207C /* SDLSystemCapabilityObserver.h */,
- 5D75961022972FCA0013207C /* SDLSystemCapabilityObserver.m */,
+ 4ABB263E24F7F45B0061BF55 /* SDLSystemCapabilityObserver.h */,
+ 4ABB263F24F7F45B0061BF55 /* SDLSystemCapabilityObserver.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -5597,8 +5719,9 @@
5D76751022D907F500E8D71A /* Configuration */ = {
isa = PBXGroup;
children = (
- 5D76751122D9088F00E8D71A /* SDLMenuConfiguration.h */,
- 5D76751222D9088F00E8D71A /* SDLMenuConfiguration.m */,
+ 4ABB259B24F7E6B90061BF55 /* SDLMenuConfiguration.h */,
+ 4ABB259A24F7E6B90061BF55 /* SDLMenuConfiguration.m */,
+ 4ABB259824F7E6A60061BF55 /* SDLMenuManagerConstants.h */,
);
name = Configuration;
sourceTree = "<group>";
@@ -5607,6 +5730,7 @@
isa = PBXGroup;
children = (
5D76E3261D3D0A4700647CFA /* Utilities */,
+ 88FBF7C1250132C1005EA0A4 /* SDLOnLockScreenStatusSpec.m */,
5D76E31B1D3805FF00647CFA /* SDLLockScreenManagerSpec.m */,
5D59DD461B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m */,
);
@@ -5616,11 +5740,14 @@
5D76E31F1D39731100647CFA /* Utilities */ = {
isa = PBXGroup;
children = (
- 880723E923A2CFB4003D0489 /* SDLLockScreenRootViewController.h */,
- 880723EA23A2CFB4003D0489 /* SDLLockScreenRootViewController.m */,
- 5D76E3201D39742300647CFA /* SDLViewControllerPresentable.h */,
- 5D76E3221D39767000647CFA /* SDLLockScreenPresenter.h */,
- 5D76E3231D39767000647CFA /* SDLLockScreenPresenter.m */,
+ 88EE1A442502DB3100FFEBA9 /* SDLLockScreenConstants.h */,
+ 88BB8050250136660025E9C8 /* SDLLockScreenStatusInfo.h */,
+ 88BB8051250136660025E9C8 /* SDLLockScreenStatusInfo.m */,
+ 4ABB253E24F7E48D0061BF55 /* SDLLockScreenPresenter.h */,
+ 4ABB254024F7E48D0061BF55 /* SDLLockScreenPresenter.m */,
+ 4ABB253C24F7E48D0061BF55 /* SDLLockScreenRootViewController.h */,
+ 4ABB253F24F7E48D0061BF55 /* SDLLockScreenRootViewController.m */,
+ 4ABB253D24F7E48D0061BF55 /* SDLViewControllerPresentable.h */,
);
name = Utilities;
sourceTree = "<group>";
@@ -5637,10 +5764,10 @@
5D7F87F51CE51CD8002DD7C4 /* File Types */ = {
isa = PBXGroup;
children = (
- 5D82042B1BCEC32F00D0A41B /* SDLFile.h */,
- 5D82042C1BCEC32F00D0A41B /* SDLFile.m */,
- 5D82042F1BD001C700D0A41B /* SDLArtwork.h */,
- 5D8204301BD001C700D0A41B /* SDLArtwork.m */,
+ 4ABB24EE24F595120061BF55 /* SDLArtwork.h */,
+ 4ABB24F124F595120061BF55 /* SDLArtwork.m */,
+ 4ABB24EF24F595120061BF55 /* SDLFile.h */,
+ 4ABB24F024F595120061BF55 /* SDLFile.m */,
);
name = "File Types";
sourceTree = "<group>";
@@ -5649,12 +5776,12 @@
isa = PBXGroup;
children = (
5D3E48771D6F3DA40000BFEF /* Superclass Operation */,
- 5D1665C21CF8CA2700CC4CA1 /* SDLListFilesOperation.h */,
- 5D1665C31CF8CA2700CC4CA1 /* SDLListFilesOperation.m */,
- 5D79A0391CE36F030035797B /* SDLUploadFileOperation.h */,
- 5D79A03A1CE36F030035797B /* SDLUploadFileOperation.m */,
- 5D7F87E91CE3C1A1002DD7C4 /* SDLDeleteFileOperation.h */,
- 5D7F87EA1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m */,
+ 4A8BD3A724F948CE000945E3 /* SDLDeleteFileOperation.h */,
+ 4A8BD3A824F948CF000945E3 /* SDLDeleteFileOperation.m */,
+ 4ABB24FF24F596450061BF55 /* SDLListFilesOperation.h */,
+ 4ABB24FC24F596450061BF55 /* SDLListFilesOperation.m */,
+ 4ABB24FE24F596450061BF55 /* SDLUploadFileOperation.h */,
+ 4ABB24FB24F596440061BF55 /* SDLUploadFileOperation.m */,
);
name = "Transaction Operations";
sourceTree = "<group>";
@@ -5662,9 +5789,9 @@
5D7F87F71CE51CEE002DD7C4 /* Utilities */ = {
isa = PBXGroup;
children = (
- 5D7F87ED1CE3C294002DD7C4 /* SDLFileManagerConstants.h */,
- 5D7F87F11CE3C29E002DD7C4 /* SDLFileWrapper.h */,
- 5D7F87F21CE3C29E002DD7C4 /* SDLFileWrapper.m */,
+ 4ABB250E24F596C00061BF55 /* SDLFileManagerConstants.h */,
+ 4ABB250624F596920061BF55 /* SDLFileWrapper.h */,
+ 4ABB250724F596920061BF55 /* SDLFileWrapper.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -5672,15 +5799,15 @@
5D8204291BCEA91400D0A41B /* Permissions */ = {
isa = PBXGroup;
children = (
- 5D1665CC1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h */,
- 5D1665C61CF8CA3D00CC4CA1 /* SDLPermissionFilter.h */,
- 5D1665C71CF8CA3D00CC4CA1 /* SDLPermissionFilter.m */,
- 5D8204241BCEA8A600D0A41B /* SDLPermissionManager.h */,
- 5D8204251BCEA8A600D0A41B /* SDLPermissionManager.m */,
- 106412C4249FB80B0069A97A /* SDLPermissionElement.h */,
- 106412C5249FB80B0069A97A /* SDLPermissionElement.m */,
- 106982A824AA3B4700B1F649 /* SDLRPCPermissionStatus.h */,
- 106982A924AA3B4700B1F649 /* SDLRPCPermissionStatus.m */,
+ 4ABB255E24F7E59E0061BF55 /* SDLPermissionConstants.h */,
+ 4ABB255B24F7E5880061BF55 /* SDLPermissionFilter.h */,
+ 4ABB255A24F7E5880061BF55 /* SDLPermissionFilter.m */,
+ 4ABB256124F7E5AA0061BF55 /* SDLPermissionElement.h */,
+ 4ABB256024F7E5AA0061BF55 /* SDLPermissionElement.m */,
+ 4A8BD3CE24FE7CF1000945E3 /* SDLPermissionManager.h */,
+ 4A8BD3CF24FE7CF1000945E3 /* SDLPermissionManager.m */,
+ 4ABB256524F7E5B80061BF55 /* SDLRPCPermissionStatus.h */,
+ 4ABB256424F7E5B70061BF55 /* SDLRPCPermissionStatus.m */,
);
name = Permissions;
sourceTree = "<group>";
@@ -5689,11 +5816,11 @@
isa = PBXGroup;
children = (
880245A120F79BDA00ED195B /* Configuration */,
- 5D8204201BCEA89A00D0A41B /* SDLFileManager.h */,
- 5D8204211BCEA89A00D0A41B /* SDLFileManager.m */,
5D7F87F51CE51CD8002DD7C4 /* File Types */,
5D7F87F61CE51CE1002DD7C4 /* Transaction Operations */,
5D7F87F71CE51CEE002DD7C4 /* Utilities */,
+ 4A8BD3C024F994D5000945E3 /* SDLFileManager.h */,
+ 4A8BD3BF24F994D5000945E3 /* SDLFileManager.m */,
);
name = Files;
sourceTree = "<group>";
@@ -5703,12 +5830,12 @@
children = (
5D92936D20B5E07000FCC775 /* Operations */,
5D92936520B3600900FCC775 /* Delegates */,
- 5D92935820B33D4F00FCC775 /* SDLChoiceCell.h */,
- 5D92935920B33D4F00FCC775 /* SDLChoiceCell.m */,
- 5D92935C20B33FF700FCC775 /* SDLChoiceSet.h */,
- 5D92935D20B33FF700FCC775 /* SDLChoiceSet.m */,
- 5D92936620B3601700FCC775 /* SDLChoiceSetManager.h */,
- 5D92936720B3601700FCC775 /* SDLChoiceSetManager.m */,
+ 4ABB257D24F7E61E0061BF55 /* SDLChoiceCell.h */,
+ 4ABB257E24F7E61E0061BF55 /* SDLChoiceCell.m */,
+ 4ABB257F24F7E61E0061BF55 /* SDLChoiceSet.h */,
+ 4ABB257C24F7E61E0061BF55 /* SDLChoiceSet.m */,
+ 4ABB258A24F7E65C0061BF55 /* SDLChoiceSetManager.h */,
+ 4ABB258B24F7E65C0061BF55 /* SDLChoiceSetManager.m */,
);
name = "Choice Set";
sourceTree = "<group>";
@@ -5716,8 +5843,8 @@
5D92936520B3600900FCC775 /* Delegates */ = {
isa = PBXGroup;
children = (
- 5D92936020B354BE00FCC775 /* SDLChoiceSetDelegate.h */,
- 5D92936220B3551600FCC775 /* SDLKeyboardDelegate.h */,
+ 4ABB258424F7E62D0061BF55 /* SDLChoiceSetDelegate.h */,
+ 4ABB258E24F7E66C0061BF55 /* SDLKeyboardDelegate.h */,
);
name = Delegates;
sourceTree = "<group>";
@@ -5725,16 +5852,16 @@
5D92936D20B5E07000FCC775 /* Operations */ = {
isa = PBXGroup;
children = (
- 5D92937E20B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.h */,
- 5D92937F20B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.m */,
- 5D92936E20B5E0E500FCC775 /* SDLDeleteChoicesOperation.h */,
- 5D92936F20B5E0E500FCC775 /* SDLDeleteChoicesOperation.m */,
- 5D92937220B5EEA200FCC775 /* SDLPreloadChoicesOperation.h */,
- 5D92937320B5EEA200FCC775 /* SDLPreloadChoicesOperation.m */,
- 5D92937620B6FB6200FCC775 /* SDLPresentChoiceSetOperation.h */,
- 5D92937720B6FB6200FCC775 /* SDLPresentChoiceSetOperation.m */,
- 5D92937A20B70A3E00FCC775 /* SDLPresentKeyboardOperation.h */,
- 5D92937B20B70A3E00FCC775 /* SDLPresentKeyboardOperation.m */,
+ 4ABB256B24F7E5E70061BF55 /* SDLCheckChoiceVROptionalOperation.h */,
+ 4ABB256A24F7E5E70061BF55 /* SDLCheckChoiceVROptionalOperation.m */,
+ 4ABB256F24F7E5E80061BF55 /* SDLDeleteChoicesOperation.h */,
+ 4ABB256D24F7E5E70061BF55 /* SDLDeleteChoicesOperation.m */,
+ 4ABB256E24F7E5E80061BF55 /* SDLPreloadChoicesOperation.h */,
+ 4ABB256C24F7E5E70061BF55 /* SDLPresentChoiceSetOperation.h */,
+ 4ABB256824F7E5E70061BF55 /* SDLPreloadChoicesOperation.m */,
+ 4ABB256924F7E5E70061BF55 /* SDLPresentChoiceSetOperation.m */,
+ 4ABB257924F7E5FF0061BF55 /* SDLPresentKeyboardOperation.h */,
+ 4ABB257824F7E5FF0061BF55 /* SDLPresentKeyboardOperation.m */,
);
name = Operations;
sourceTree = "<group>";
@@ -5779,10 +5906,10 @@
5DA150C92271FDF90032928D /* Operations */ = {
isa = PBXGroup;
children = (
- 5DA150C52271FDC20032928D /* SDLSoftButtonTransitionOperation.h */,
- 5DA150C62271FDC20032928D /* SDLSoftButtonTransitionOperation.m */,
- 5DA150CB2271FE180032928D /* SDLSoftButtonReplaceOperation.h */,
- 5DA150CC2271FE180032928D /* SDLSoftButtonReplaceOperation.m */,
+ 4ABB25B024F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.h */,
+ 4ABB25B124F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.m */,
+ 4ABB25AF24F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.h */,
+ 4ABB25AE24F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.m */,
);
name = Operations;
sourceTree = "<group>";
@@ -5790,10 +5917,10 @@
5DA150CA2271FE030032928D /* Buttons */ = {
isa = PBXGroup;
children = (
- 5D0A7384203F24060001595D /* SDLSoftButtonState.h */,
- 5D0A7385203F24060001595D /* SDLSoftButtonState.m */,
- 5D0A7388203F24320001595D /* SDLSoftButtonObject.h */,
- 5D0A7389203F24320001595D /* SDLSoftButtonObject.m */,
+ 4ABB25B824F7E70E0061BF55 /* SDLSoftButtonObject.h */,
+ 4ABB25B724F7E70E0061BF55 /* SDLSoftButtonObject.m */,
+ 4ABB25B624F7E70E0061BF55 /* SDLSoftButtonState.h */,
+ 4ABB25B924F7E70E0061BF55 /* SDLSoftButtonState.m */,
);
name = Buttons;
sourceTree = "<group>";
@@ -5836,9 +5963,9 @@
5DA3F3511BC4477B0026F2D0 /* Developer API */ = {
isa = PBXGroup;
children = (
- 5DA3F3561BC4480E0026F2D0 /* Utilities */,
- 5DBAE0A61D355EF200CE00BF /* Managers */,
5DBAE0A71D355F0C00CE00BF /* Dispatchers */,
+ 5DBAE0A61D355EF200CE00BF /* Managers */,
+ 5DA3F3561BC4480E0026F2D0 /* Utilities */,
);
name = "Developer API";
sourceTree = "<group>";
@@ -5846,14 +5973,14 @@
5DA3F3561BC4480E0026F2D0 /* Utilities */ = {
isa = PBXGroup;
children = (
- 5DFFB9141BD7C89700DB3F04 /* SDLConnectionManagerType.h */,
- EE6CBF872064CAEE00EEE0CA /* SDLStreamingProtocolDelegate.h */,
+ 5DA3F3571BC448160026F2D0 /* Categories */,
5D616B501D59042B00553F6B /* Errors */,
5DA3F35C1BC4484B0026F2D0 /* Notifications */,
- 5DA3F3571BC448160026F2D0 /* Categories */,
5D6008871BE3ED470094A505 /* State Machine */,
- 5DD60D96221C5D7D00A82A4F /* SDLVersion.h */,
- 5DD60D97221C5D7D00A82A4F /* SDLVersion.m */,
+ 4ABB24D824F594190061BF55 /* SDLConnectionManagerType.h */,
+ 4ABB24C824F593090061BF55 /* SDLStreamingProtocolDelegate.h */,
+ 4ABB24D524F593ED0061BF55 /* SDLVersion.h */,
+ 4ABB24D424F593EC0061BF55 /* SDLVersion.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -5861,15 +5988,15 @@
5DA3F3571BC448160026F2D0 /* Categories */ = {
isa = PBXGroup;
children = (
- 5D1665CA1CF8CA6700CC4CA1 /* NSNumber+NumberType.h */,
- 5DA3F3521BC448060026F2D0 /* NSMapTable+Subscripting.h */,
- 5DA3F3531BC448060026F2D0 /* NSMapTable+Subscripting.m */,
- 5DA102A21D4122C700C15826 /* NSMutableDictionary+SafeRemove.h */,
- 5DA102A31D4122C700C15826 /* NSMutableDictionary+SafeRemove.m */,
- 5D3E48C91D7722FE0000BFEF /* NSBundle+SDLBundle.h */,
- 5D3E48CA1D7722FE0000BFEF /* NSBundle+SDLBundle.m */,
- 5D019274214994AC003500F6 /* NSMutableArray+Safe.h */,
- 5D019275214994AC003500F6 /* NSMutableArray+Safe.m */,
+ 4ABB24B624F592620061BF55 /* NSBundle+SDLBundle.h */,
+ 4ABB24B424F592620061BF55 /* NSBundle+SDLBundle.m */,
+ 4ABB24B924F592620061BF55 /* NSMapTable+Subscripting.h */,
+ 4ABB24B724F592620061BF55 /* NSMapTable+Subscripting.m */,
+ 4ABB24B224F592620061BF55 /* NSMutableArray+Safe.h */,
+ 4ABB24B324F592620061BF55 /* NSMutableArray+Safe.m */,
+ 4ABB24B824F592620061BF55 /* NSMutableDictionary+SafeRemove.h */,
+ 4ABB24B524F592620061BF55 /* NSMutableDictionary+SafeRemove.m */,
+ 4A8BD3AB24F98602000945E3 /* NSNumber+NumberType.h */,
);
name = Categories;
sourceTree = "<group>";
@@ -5877,8 +6004,8 @@
5DA3F35C1BC4484B0026F2D0 /* Notifications */ = {
isa = PBXGroup;
children = (
- 5DA3F35D1BC448590026F2D0 /* SDLNotificationConstants.h */,
- 5DA3F35E1BC448590026F2D0 /* SDLNotificationConstants.m */,
+ 4ABB24D024F593E00061BF55 /* SDLNotificationConstants.h */,
+ 4ABB24D124F593E00061BF55 /* SDLNotificationConstants.m */,
);
name = Notifications;
sourceTree = "<group>";
@@ -5910,8 +6037,8 @@
5DA49CE21F1EA77900E65FC5 /* Control Frame Payloads */ = {
isa = PBXGroup;
children = (
- 5D46310E1F2135850092EFDC /* SDLControlFramePayloadConstants.h */,
- 5D46310F1F2135850092EFDC /* SDLControlFramePayloadConstants.m */,
+ 4A8BD33624F945B4000945E3 /* SDLControlFramePayloadConstants.h */,
+ 4A8BD33524F945B4000945E3 /* SDLControlFramePayloadConstants.m */,
5DB996541F268E9D002D8795 /* Audio Service */,
5D4631161F223DEE0092EFDC /* General */,
5D46310D1F2133940092EFDC /* RPC Service */,
@@ -5924,10 +6051,10 @@
5DA5918E1F96820F003264C3 /* Focus / Haptic */ = {
isa = PBXGroup;
children = (
- 1FF7DAB71F75B28E00B46C30 /* SDLFocusableItemHitTester.h */,
- 1FF7DAB51F75B27300B46C30 /* SDLFocusableItemLocatorType.h */,
- 1FF7DAB91F75B2A800B46C30 /* SDLFocusableItemLocator.h */,
- 1FF7DABB1F75B2BF00B46C30 /* SDLFocusableItemLocator.m */,
+ 4ABB261924F7F3770061BF55 /* SDLFocusableItemHitTester.h */,
+ 4ABB261624F7F3770061BF55 /* SDLFocusableItemLocator.h */,
+ 4ABB261724F7F3770061BF55 /* SDLFocusableItemLocator.m */,
+ 4ABB261824F7F3770061BF55 /* SDLFocusableItemLocatorType.h */,
);
name = "Focus / Haptic";
sourceTree = "<group>";
@@ -5937,12 +6064,12 @@
children = (
884DFBCB2289F6FF00EA8846 /* Data Session */,
884DFBCA2289F6EA00EA8846 /* Control Session */,
- E9C32B891AB20BA200F283AF /* SDLIAPSession.h */,
- E9C32B8A1AB20BA200F283AF /* SDLIAPSession.m */,
- 5D61FADA1A84238A00846EE7 /* SDLIAPTransport.h */,
- 5D61FADB1A84238A00846EE7 /* SDLIAPTransport.m */,
- 880FE6252267AE5300723732 /* SDLIAPConstants.h */,
- 880FE6262267AE5300723732 /* SDLIAPConstants.m */,
+ 4A8BD38B24F94730000945E3 /* SDLIAPConstants.h */,
+ 4A8BD38F24F94731000945E3 /* SDLIAPConstants.m */,
+ 4A8BD38C24F94730000945E3 /* SDLIAPSession.h */,
+ 4A8BD38E24F94730000945E3 /* SDLIAPSession.m */,
+ 4A8BD38D24F94730000945E3 /* SDLIAPTransport.h */,
+ 4A8BD39024F94731000945E3 /* SDLIAPTransport.m */,
);
name = IAP;
sourceTree = "<group>";
@@ -5950,8 +6077,8 @@
5DAB5F592098E8CB00A020C8 /* TCP */ = {
isa = PBXGroup;
children = (
- 5D61FBD81A84238B00846EE7 /* SDLTCPTransport.h */,
- 5D61FBD91A84238B00846EE7 /* SDLTCPTransport.m */,
+ 4A8BD38324F94702000945E3 /* SDLTCPTransport.h */,
+ 4A8BD38424F94702000945E3 /* SDLTCPTransport.m */,
);
name = TCP;
sourceTree = "<group>";
@@ -5959,10 +6086,10 @@
5DAD5F8120507DE40025624C /* Screen */ = {
isa = PBXGroup;
children = (
- 88D0E5D42478656B009469AB /* Subscribe Button */,
5DE35E4320CAFBEA0034BE5A /* Choice Set */,
5DF40B24208FA7C500DD6FDA /* Menu */,
5DAD5F8220507DED0025624C /* Soft Button */,
+ 88D0E5D42478656B009469AB /* Subscribe Button */,
5DAD5F8320507DF30025624C /* Text and Graphic */,
5DAD5F8420507E1F0025624C /* SDLScreenManagerSpec.m */,
);
@@ -5984,6 +6111,8 @@
isa = PBXGroup;
children = (
5DAD5F86205087430025624C /* SDLTextAndGraphicManagerSpec.m */,
+ 4A404C67250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m */,
+ 4A404C65250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m */,
);
name = "Text and Graphic";
sourceTree = "<group>";
@@ -6078,8 +6207,8 @@
5DB996541F268E9D002D8795 /* Audio Service */ = {
isa = PBXGroup;
children = (
- 5DB996551F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.h */,
- 5DB996561F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.m */,
+ 4A8BD33224F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.h */,
+ 4A8BD33124F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.m */,
);
name = "Audio Service";
sourceTree = "<group>";
@@ -6087,10 +6216,10 @@
5DB996591F268F78002D8795 /* Video Service */ = {
isa = PBXGroup;
children = (
- 5DB9965A1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.h */,
- 5DB9965B1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.m */,
- 5DB9965E1F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.h */,
- 5DB9965F1F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.m */,
+ 4A8BD35424F945F6000945E3 /* SDLControlFramePayloadVideoStartService.h */,
+ 4A8BD35324F945F6000945E3 /* SDLControlFramePayloadVideoStartService.m */,
+ 4A8BD35124F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.h */,
+ 4A8BD35224F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.m */,
);
name = "Video Service";
sourceTree = "<group>";
@@ -6102,8 +6231,7 @@
5D6F7A301BC5B7100070BF37 /* Lock Screen UI */,
4A9D02C02497F9AA00FBE99B /* Status Manager */,
5D76E31F1D39731100647CFA /* Utilities */,
- 5D4D67B21D30161600468B4A /* SDLLockScreenManager.h */,
- 5D4D67B31D30161600468B4A /* SDLLockScreenManager.m */,
+ 4ABB255224F7E5460061BF55 /* SDLLockScreenManager.m */,
);
name = "Lock Screen";
sourceTree = "<group>";
@@ -6119,11 +6247,11 @@
5D0A736F203F0C450001595D /* Screen */,
DA8966E71E56937100413EAB /* Streaming */,
880E35B12088F73400181259 /* System Capabilities */,
- 5DA3F36E1BC4489A0026F2D0 /* SDLManager.h */,
- 5DA3F36F1BC4489A0026F2D0 /* SDLManager.m */,
- 5D82041C1BCD8E6100D0A41B /* SDLConfiguration.h */,
- 5D82041D1BCD8E6100D0A41B /* SDLConfiguration.m */,
- 5D2F58071D0717D5001085CE /* SDLManagerDelegate.h */,
+ 4ABB264D24F7F5720061BF55 /* SDLConfiguration.h */,
+ 4ABB264C24F7F5720061BF55 /* SDLConfiguration.m */,
+ 4ABB264724F7F5540061BF55 /* SDLManager.h */,
+ 4ABB264624F7F5540061BF55 /* SDLManager.m */,
+ 4ABB264A24F7F5580061BF55 /* SDLManagerDelegate.h */,
);
name = Managers;
sourceTree = "<group>";
@@ -6180,7 +6308,7 @@
5DD67CAD1E65DD9C009CD394 /* Apple SysLog */,
5DBF06401E64BDC500A5CF03 /* File */,
5DBF063F1E64BDBE00A5CF03 /* OS_LOG */,
- 5DBF06291E64A92C00A5CF03 /* SDLLogTarget.h */,
+ 4ABB26B224F7F9F60061BF55 /* SDLLogTarget.h */,
);
name = "Log Targets";
sourceTree = "<group>";
@@ -6188,8 +6316,8 @@
5DBF063F1E64BDBE00A5CF03 /* OS_LOG */ = {
isa = PBXGroup;
children = (
- 5DD67CBA1E661C84009CD394 /* SDLLogTargetOSLog.h */,
- 5DD67CBB1E661C84009CD394 /* SDLLogTargetOSLog.m */,
+ 4ABB26AF24F7F9DF0061BF55 /* SDLLogTargetOSLog.h */,
+ 4ABB26AE24F7F9DF0061BF55 /* SDLLogTargetOSLog.m */,
);
name = OS_LOG;
sourceTree = "<group>";
@@ -6197,8 +6325,8 @@
5DBF06401E64BDC500A5CF03 /* File */ = {
isa = PBXGroup;
children = (
- 5DD67CB61E661C4A009CD394 /* SDLLogTargetFile.h */,
- 5DD67CB71E661C4A009CD394 /* SDLLogTargetFile.m */,
+ 4ABB26AA24F7F9D70061BF55 /* SDLLogTargetFile.h */,
+ 4ABB26AB24F7F9D70061BF55 /* SDLLogTargetFile.m */,
);
name = File;
sourceTree = "<group>";
@@ -6228,10 +6356,10 @@
5DCD7AD91FCCA5BF00A0FC7F /* CarWindow */ = {
isa = PBXGroup;
children = (
- 5DCD7ADC1FCCA8D100A0FC7F /* SDLCarWindow.h */,
- 5DCD7ADD1FCCA8D200A0FC7F /* SDLCarWindow.m */,
- 5D293AFC1FE078A9000CBD7E /* SDLCarWindowViewController.h */,
- 5D293AFD1FE078A9000CBD7E /* SDLCarWindowViewController.m */,
+ 4ABB261224F7F3600061BF55 /* SDLCarWindow.h */,
+ 4ABB261324F7F3610061BF55 /* SDLCarWindow.m */,
+ 4ABB25E824F7E7C20061BF55 /* SDLCarWindowViewController.h */,
+ 4ABB25E924F7E7C20061BF55 /* SDLCarWindowViewController.m */,
);
name = CarWindow;
sourceTree = "<group>";
@@ -6239,8 +6367,8 @@
5DD67CAD1E65DD9C009CD394 /* Apple SysLog */ = {
isa = PBXGroup;
children = (
- 5DD67CAE1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.h */,
- 5DD67CAF1E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m */,
+ 4ABB26A624F7F9CE0061BF55 /* SDLLogTargetAppleSystemLog.h */,
+ 4ABB26A724F7F9CE0061BF55 /* SDLLogTargetAppleSystemLog.m */,
);
name = "Apple SysLog";
sourceTree = "<group>";
@@ -6248,10 +6376,10 @@
5DD67CC01E68AE66009CD394 /* Modules */ = {
isa = PBXGroup;
children = (
- 5DBF06251E64A91D00A5CF03 /* SDLLogFileModule.h */,
- 5DBF06261E64A91D00A5CF03 /* SDLLogFileModule.m */,
- 5DD67CC11E68AE82009CD394 /* SDLLogFileModuleMap.h */,
- 5DD67CC21E68AE82009CD394 /* SDLLogFileModuleMap.m */,
+ 4ABB26A224F7F9B90061BF55 /* SDLLogFileModule.h */,
+ 4ABB26A324F7F9B90061BF55 /* SDLLogFileModule.m */,
+ 4ABB269E24F7F98C0061BF55 /* SDLLogFileModuleMap.h */,
+ 4ABB269F24F7F98C0061BF55 /* SDLLogFileModuleMap.m */,
);
name = Modules;
sourceTree = "<group>";
@@ -6336,11 +6464,10 @@
755F175E229F14F70041B9CB /* Dynamic Menu Update Utilities */ = {
isa = PBXGroup;
children = (
- 756C62742289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h */,
- 756C62752289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m */,
- 752ECDB4228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h */,
- 752ECDB5228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m */,
- 755F176122A00B7C0041B9CB /* SDLMenuManagerConstants.h */,
+ 4ABB25A124F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.h */,
+ 4ABB259F24F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.m */,
+ 4ABB259E24F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.h */,
+ 4ABB25A024F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.m */,
);
name = "Dynamic Menu Update Utilities";
sourceTree = "<group>";
@@ -6348,8 +6475,8 @@
880245A120F79BDA00ED195B /* Configuration */ = {
isa = PBXGroup;
children = (
- 880245A220F79C3400ED195B /* SDLFileManagerConfiguration.h */,
- 880245A320F79C3400ED195B /* SDLFileManagerConfiguration.m */,
+ 4ABB24EB24F594F30061BF55 /* SDLFileManagerConfiguration.h */,
+ 4ABB24EA24F594F30061BF55 /* SDLFileManagerConfiguration.m */,
);
name = Configuration;
sourceTree = "<group>";
@@ -6358,8 +6485,8 @@
isa = PBXGroup;
children = (
5D75960E22972FB90013207C /* Utilities */,
- 880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */,
- 880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */,
+ 4ABB264224F7F5340061BF55 /* SDLSystemCapabilityManager.h */,
+ 4ABB264324F7F5340061BF55 /* SDLSystemCapabilityManager.m */,
);
name = "System Capabilities";
sourceTree = "<group>";
@@ -6405,7 +6532,7 @@
5D1FF2D721304746000EB9B4 /* PerformInteractionManager.swift */,
5D1FF2D321304745000EB9B4 /* ProxyManager.swift */,
5D1FF2D521304746000EB9B4 /* RPCPermissionsManager.swift */,
- 889E7BAD249CEDCF002E4BE1 /* SubscribeButtonManager.swift */,
+ 4A402558250026430080E159 /* SubscribeButtonManager.swift */,
5D1FF2D921304746000EB9B4 /* VehicleDataManager.swift */,
);
name = SDL;
@@ -6457,9 +6584,9 @@
884DFBCA2289F6EA00EA8846 /* Control Session */ = {
isa = PBXGroup;
children = (
- 88D99DB42289BFBE0039E047 /* SDLIAPControlSessionDelegate.h */,
- 88BCEA902266250B00BB7E70 /* SDLIAPControlSession.h */,
- 88BCEA912266250B00BB7E70 /* SDLIAPControlSession.m */,
+ 4A8BD39924F94740000945E3 /* SDLIAPControlSession.h */,
+ 4A8BD39824F94740000945E3 /* SDLIAPControlSession.m */,
+ 4A8BD39724F94740000945E3 /* SDLIAPControlSessionDelegate.h */,
);
name = "Control Session";
sourceTree = "<group>";
@@ -6467,9 +6594,9 @@
884DFBCB2289F6FF00EA8846 /* Data Session */ = {
isa = PBXGroup;
children = (
- 88D3EBC72267949D00493C38 /* SDLIAPDataSession.h */,
- 88D3EBC82267949D00493C38 /* SDLIAPDataSession.m */,
- 8817C27F2289F41D00DB2DEC /* SDLIAPDataSessionDelegate.h */,
+ 4A8BD39E24F9474B000945E3 /* SDLIAPDataSession.h */,
+ 4A8BD39F24F9474B000945E3 /* SDLIAPDataSession.m */,
+ 4A8BD39D24F9474B000945E3 /* SDLIAPDataSessionDelegate.h */,
);
name = "Data Session";
sourceTree = "<group>";
@@ -6477,10 +6604,10 @@
88A098AB2476F08F00A50005 /* Subscribe Button */ = {
isa = PBXGroup;
children = (
- 88A098AC2476F0C200A50005 /* SDLSubscribeButtonManager.h */,
- 88A098AD2476F0C200A50005 /* SDLSubscribeButtonManager.m */,
- 88A098B024770E7100A50005 /* SDLSubscribeButtonObserver.h */,
- 88A098B124770E7100A50005 /* SDLSubscribeButtonObserver.m */,
+ 4ABB25C424F7E73C0061BF55 /* SDLSubscribeButtonManager.h */,
+ 4ABB25C224F7E73C0061BF55 /* SDLSubscribeButtonManager.m */,
+ 4ABB25C524F7E73C0061BF55 /* SDLSubscribeButtonObserver.h */,
+ 4ABB25C324F7E73C0061BF55 /* SDLSubscribeButtonObserver.m */,
);
name = "Subscribe Button";
sourceTree = "<group>";
@@ -6506,8 +6633,8 @@
88A70C392233087500574CA4 /* Requests */ = {
isa = PBXGroup;
children = (
- 88D6F17E22319FE000D4BFB3 /* SDLRPCRequestNotification.h */,
- 88D6F17D22319FE000D4BFB3 /* SDLRPCRequestNotification.m */,
+ 4ABB265024F7F58D0061BF55 /* SDLRPCRequestNotification.h */,
+ 4ABB265124F7F58D0061BF55 /* SDLRPCRequestNotification.m */,
);
name = Requests;
sourceTree = "<group>";
@@ -6541,8 +6668,8 @@
children = (
88D0E5D524786580009469AB /* SDLSubscribeButtonManagerSpec.m */,
88D0E5D724786770009469AB /* SDLSubscribeButtonObserverSpec.m */,
- 88B8657524A0FEB7003491AD /* TestSubscribeButtonObserver.h */,
- 88B8657624A0FEB7003491AD /* TestSubscribeButtonObserver.m */,
+ 4A8BD3CB24F999BE000945E3 /* TestSubscribeButtonObserver.h */,
+ 4A8BD3CC24F999BE000945E3 /* TestSubscribeButtonObserver.m */,
);
name = "Subscribe Button";
sourceTree = "<group>";
@@ -6568,6 +6695,15 @@
path = iAP;
sourceTree = "<group>";
};
+ 88FBF7C62501343E005EA0A4 /* Utilities */ = {
+ isa = PBXGroup;
+ children = (
+ 88FBF7C32501330F005EA0A4 /* TestHapticRectViewController.h */,
+ 88FBF7C42501330F005EA0A4 /* TestHapticRectViewController.m */,
+ );
+ name = Utilities;
+ sourceTree = "<group>";
+ };
88FF4E792215FEAF00A71361 /* Notifications */ = {
isa = PBXGroup;
children = (
@@ -6580,6 +6716,7 @@
DA1166D71D14601C00438CEA /* Touches */ = {
isa = PBXGroup;
children = (
+ 88FBF7C62501343E005EA0A4 /* Utilities */,
DA4353E71D2721680099B8C4 /* SDLTouchManagerSpec.m */,
DA4353E81D2721680099B8C4 /* SDLTouchSpec.m */,
DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */,
@@ -6596,14 +6733,15 @@
5D23C9441FCF59F400002CA5 /* AudioManager */,
5DCD7AD91FCCA5BF00A0FC7F /* CarWindow */,
5DA5918E1F96820F003264C3 /* Focus / Haptic */,
+ DA8966E81E56938C00413EAB /* Lifecycle */,
DAC5724C1D0FE3B60004288B /* Touches */,
DA8966F01E56970C00413EAB /* Utilities */,
DAA41D521DF66B1100BC7337 /* Video Encoding */,
- DA8966E81E56938C00413EAB /* Lifecycle */,
- 5D53C46B1B7A99B9003526EA /* SDLStreamingMediaManager.h */,
- 5D53C46C1B7A99B9003526EA /* SDLStreamingMediaManager.m */,
- 5D8A09801F54B4E5002502A2 /* SDLStreamingMediaManagerDataSource.h */,
- 5DEF695A1FD6F82D004B8C2F /* SDLStreamingAudioManagerType.h */,
+ 4ABB25FE24F7E9230061BF55 /* SDLStreamingMediaManagerConstants.h */,
+ 4ABB25FF24F7E9230061BF55 /* SDLStreamingMediaManagerConstants.m */,
+ 4ABB260324F7E9650061BF55 /* SDLStreamingMediaManager.h */,
+ 4ABB260224F7E9650061BF55 /* SDLStreamingMediaManager.m */,
+ 4ABB260424F7E9650061BF55 /* SDLStreamingMediaManagerDataSource.h */,
);
name = Streaming;
sourceTree = "<group>";
@@ -6611,10 +6749,11 @@
DA8966E81E56938C00413EAB /* Lifecycle */ = {
isa = PBXGroup;
children = (
- 5D0C2A0220D947AB008B56CD /* SDLStreamingAudioLifecycleManager.h */,
- 5D0C2A0320D947AB008B56CD /* SDLStreamingAudioLifecycleManager.m */,
- 5D0C29FE20D9479B008B56CD /* SDLStreamingVideoLifecycleManager.h */,
- 5D0C29FF20D9479B008B56CD /* SDLStreamingVideoLifecycleManager.m */,
+ 4ABB260824F7E9720061BF55 /* SDLStreamingAudioManagerType.h */,
+ 4ABB263824F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.h */,
+ 4ABB263624F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.m */,
+ 4ABB263924F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.h */,
+ 4ABB263724F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.m */,
);
name = Lifecycle;
sourceTree = "<group>";
@@ -6634,12 +6773,10 @@
DA8966F01E56970C00413EAB /* Utilities */ = {
isa = PBXGroup;
children = (
- 883468F5234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.h */,
- 883468F6234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.m */,
- DA6223BB1E7B088200878689 /* CVPixelBufferRef+SDLUtil.h */,
- DA6223BC1E7B088200878689 /* CVPixelBufferRef+SDLUtil.m */,
- DA8966F11E56973700413EAB /* SDLStreamingMediaManagerConstants.h */,
- DA8966F31E56977C00413EAB /* SDLStreamingMediaManagerConstants.m */,
+ 4ABB262224F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.h */,
+ 4ABB262324F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.m */,
+ 4ABB25FA24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.h */,
+ 4ABB25FB24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.m */,
);
name = Utilities;
sourceTree = "<group>";
@@ -6647,14 +6784,14 @@
DAA41D521DF66B1100BC7337 /* Video Encoding */ = {
isa = PBXGroup;
children = (
- 5DA23FFC1F312DBA009C0313 /* SDLVideoEncoderDelegate.h */,
- DAA41D531DF66B2000BC7337 /* SDLH264VideoEncoder.h */,
- DAA41D541DF66B2000BC7337 /* SDLH264VideoEncoder.m */,
- EED5C9FD1F4D18D100F04000 /* SDLH264Packetizer.h */,
- EED5C9FF1F4D18DC00F04000 /* SDLRAWH264Packetizer.h */,
- EED5CA011F4D18EC00F04000 /* SDLRAWH264Packetizer.m */,
- EED5CA051F4D1E2300F04000 /* SDLRTPH264Packetizer.h */,
- EED5CA071F4D1E2E00F04000 /* SDLRTPH264Packetizer.m */,
+ 4ABB262A24F7F3C10061BF55 /* SDLVideoEncoderDelegate.h */,
+ 4ABB262724F7F3BC0061BF55 /* SDLH264VideoEncoder.h */,
+ 4ABB262624F7F3BC0061BF55 /* SDLH264VideoEncoder.m */,
+ 4ABB262C24F7F4150061BF55 /* SDLH264Packetizer.h */,
+ 4ABB262E24F7F4230061BF55 /* SDLRAWH264Packetizer.h */,
+ 4ABB262F24F7F4230061BF55 /* SDLRAWH264Packetizer.m */,
+ 4ABB263224F7F4300061BF55 /* SDLRTPH264Packetizer.h */,
+ 4ABB263324F7F4300061BF55 /* SDLRTPH264Packetizer.m */,
);
name = "Video Encoding";
sourceTree = "<group>";
@@ -6662,15 +6799,15 @@
DAC5724C1D0FE3B60004288B /* Touches */ = {
isa = PBXGroup;
children = (
- DAC572551D1067270004288B /* SDLTouchManager.h */,
- DAC572561D1067270004288B /* SDLTouchManager.m */,
- DAC5725F1D10BD690004288B /* SDLTouchManagerDelegate.h */,
- DAC5725A1D10B81E0004288B /* SDLTouch.h */,
- DAC572591D10B81E0004288B /* SDLTouch.m */,
- DAC572611D10C5020004288B /* SDLPinchGesture.h */,
- DAC572601D10C5020004288B /* SDLPinchGesture.m */,
- DAC572651D10C5640004288B /* CGPoint_Util.h */,
- DAC572641D10C5640004288B /* CGPoint_Util.m */,
+ 4ABB261E24F7F3870061BF55 /* CGPoint_Util.h */,
+ 4ABB261F24F7F3870061BF55 /* CGPoint_Util.m */,
+ 4ABB25EE24F7E7EF0061BF55 /* SDLPinchGesture.h */,
+ 4ABB25EC24F7E7EF0061BF55 /* SDLPinchGesture.m */,
+ 4ABB25EF24F7E7EF0061BF55 /* SDLTouch.h */,
+ 4ABB25ED24F7E7EF0061BF55 /* SDLTouch.m */,
+ 4ABB25F124F7E7EF0061BF55 /* SDLTouchManager.h */,
+ 4ABB25F224F7E7EF0061BF55 /* SDLTouchManager.m */,
+ 4ABB25F024F7E7EF0061BF55 /* SDLTouchManagerDelegate.h */,
);
name = Touches;
sourceTree = "<group>";
@@ -6678,12 +6815,12 @@
E9C32B831AB20B2900F283AF /* @categories */ = {
isa = PBXGroup;
children = (
- E9C32B981AB20C5900F283AF /* EAAccessory+SDLProtocols.h */,
- E9C32B991AB20C5900F283AF /* EAAccessory+SDLProtocols.m */,
- E9C32B9A1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.h */,
- E9C32B9B1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.m */,
- DA318C1D1DD0F06C00C035AC /* NSMutableDictionary+Store.h */,
- DA318C1E1DD0F06C00C035AC /* NSMutableDictionary+Store.m */,
+ 4ABB266724F7F61B0061BF55 /* EAAccessory+SDLProtocols.h */,
+ 4ABB266624F7F61B0061BF55 /* EAAccessory+SDLProtocols.m */,
+ 4ABB266524F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.h */,
+ 4ABB266424F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.m */,
+ 4ABB266D24F7F6350061BF55 /* NSMutableDictionary+Store.h */,
+ 4ABB266C24F7F6350061BF55 /* NSMutableDictionary+Store.m */,
);
name = "@categories";
sourceTree = "<group>";
@@ -6700,8 +6837,8 @@
EE798CA2205611DC008EDE8E /* Secondary Transport */ = {
isa = PBXGroup;
children = (
- EE798CA32056120F008EDE8E /* SDLSecondaryTransportManager.h */,
- EE798CA520561217008EDE8E /* SDLSecondaryTransportManager.m */,
+ 4A8BD38724F94711000945E3 /* SDLSecondaryTransportManager.h */,
+ 4A8BD38824F94712000945E3 /* SDLSecondaryTransportManager.m */,
);
name = "Secondary Transport";
sourceTree = "<group>";
@@ -6713,560 +6850,573 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
- 106412C824A13F160069A97A /* SDLPermissionManager.h in Headers */,
- 106412C6249FB80B0069A97A /* SDLPermissionElement.h in Headers */,
- 9F425AD222DD980200BE3245 /* SDLWindowCapability.h in Headers */,
- 9F425ADA22DD983500BE3245 /* SDLDisplayCapability.h in Headers */,
- 9F425ACE22DD97DE00BE3245 /* SDLTemplateConfiguration.h in Headers */,
- 9F425AD622DD981E00BE3245 /* SDLWindowTypeCapabilities.h in Headers */,
- 9FE2471522D77AD500F8D2FC /* SDLWindowType.h in Headers */,
- 9FE2471922D77AED00F8D2FC /* SDLPredefinedWindows.h in Headers */,
- 9FE2470D22D77A5A00F8D2FC /* SDLDeleteWindowResponse.h in Headers */,
- 9FE2470922D77A3600F8D2FC /* SDLDeleteWindow.h in Headers */,
- 9FE2471122D77AA400F8D2FC /* SDLCreateWindowResponse.h in Headers */,
- 9FD334E022DC6E7500F62736 /* SDLCreateWindow.h in Headers */,
- 8BA12B1122DCCE1F00371E82 /* SDLUnpublishAppService.h in Headers */,
- 8BA12B1522DCEACB00371E82 /* SDLUnpublishAppServiceResponse.h in Headers */,
- 1EB59CBF202DA26000343A61 /* SDLSeatControlData.h in Headers */,
- 1EB59CB3202D9B5F00343A61 /* SDLSeatMemoryActionType.h in Headers */,
- 88665B73220B80F400D9DA77 /* SDLWeatherAlert.h in Headers */,
- 008DB36122EA7482003F458C /* SDLGetInteriorVehicleDataConsent.h in Headers */,
- 1EB59CC3202DB40400343A61 /* SDLSeatControlCapabilities.h in Headers */,
- 1EB59CB7202D9C8100343A61 /* SDLSeatMemoryAction.h in Headers */,
- 1EB59CBB202DA1B400343A61 /* SDLSupportedSeat.h in Headers */,
- 1EB59CA7202D946500343A61 /* SDLMassageModeData.h in Headers */,
- 1EB59CAB202D96A200343A61 /* SDLMassageCushion.h in Headers */,
- 1EB59C9F202D925500343A61 /* SDLMassageZone.h in Headers */,
- 1EB59CA3202D92F600343A61 /* SDLMassageMode.h in Headers */,
- 8881AFB22225DED900EA870B /* SDLSetCloudAppPropertiesResponse.h in Headers */,
- 1EB59CAF202D97AC00343A61 /* SDLMassageCushionFirmness.h in Headers */,
- 1EAA470B2032BAE5000FE74B /* SDLOnRCStatus.h in Headers */,
- 2BF2F84F20ED004000A26EF2 /* SDLAudioStreamingIndicator.h in Headers */,
- 0055412E22D759BD003194D3 /* SDLSeatLocation.h in Headers */,
- 1EAA475120356CD2000FE74B /* SDLDistanceUnit.h in Headers */,
- 1EAA4755203583BC000FE74B /* SDLHMISettingsControlData.h in Headers */,
- 4A3BA4DC248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.h in Headers */,
- 1EAA4731203442C0000FE74B /* SDLLightName.h in Headers */,
- 1EAA472D20344108000FE74B /* SDLLightStatus.h in Headers */,
- 8831FA4222022AB300B8FFB7 /* SDLAppServiceCapability.h in Headers */,
- 1EAA474D20356B2D000FE74B /* SDLDisplayMode.h in Headers */,
- 1EAA473D203554B5000FE74B /* SDLLightState.h in Headers */,
- 1EAA4749203567FA000FE74B /* SDLHMISettingsControlCapabilities.h in Headers */,
- 1EAA47452035623B000FE74B /* SDLLightControlData.h in Headers */,
- 1EAA474120355FF3000FE74B /* SDLLightControlCapabilities.h in Headers */,
- 008DB36522EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.h in Headers */,
- 1EAA473920345B7A000FE74B /* SDLLightCapabilities.h in Headers */,
- 1EAA4725203416D3000FE74B /* SDLEqualizerSettings.h in Headers */,
- 1EAA47112033FE80000FE74B /* SDLStationIDNumber.h in Headers */,
- 5D9FC2A61FD8815800ACA5C2 /* SDLPCMAudioConverter.h in Headers */,
- 1EAA47292034388D000FE74B /* SDLAudioControlData.h in Headers */,
- 1EAA471D203410BB000FE74B /* SDLAudioControlCapabilities.h in Headers */,
- 1EAA4719203406B2000FE74B /* SDLSISData.h in Headers */,
- 8BBEA6061F324165003EEA26 /* SDLMetadataType.h in Headers */,
- E4139D1D1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.h in Headers */,
- 5DA3F35A1BC448480026F2D0 /* SDLError.h in Headers */,
- 5DA3F35F1BC448590026F2D0 /* SDLNotificationConstants.h in Headers */,
- 5DE5ABB71B0E38C90067BB02 /* SDLSystemRequest.h in Headers */,
- 5DA3F3701BC4489A0026F2D0 /* SDLManager.h in Headers */,
- 5DE5ABB81B0E38C90067BB02 /* SDLSystemRequestResponse.h in Headers */,
- 5D61FCA51A84238C00846EE7 /* SDLEndAudioPassThruResponse.h in Headers */,
- 5D3E48CB1D7722FE0000BFEF /* NSBundle+SDLBundle.h in Headers */,
- 5D61FD851A84238C00846EE7 /* SDLSetDisplayLayoutResponse.h in Headers */,
- 5D61FD751A84238C00846EE7 /* SDLRPCResponse.h in Headers */,
- 8B7B31A21F2F7FEA00BDC38D /* SDLVideoStreamingFormat.h in Headers */,
- 5D61FC901A84238C00846EE7 /* SDLDisplayCapabilities.h in Headers */,
- 5D3E420A20EAAD6500D8C622 /* SDLTPMS.h in Headers */,
- 5D61FCE81A84238C00846EE7 /* SDLLanguage.h in Headers */,
- 8817C2802289F4B900DB2DEC /* SDLIAPDataSessionDelegate.h in Headers */,
- 5D61FC841A84238C00846EE7 /* SDLDeviceLevelStatus.h in Headers */,
- 5DB92D321AC9C8BA00C15BB0 /* SDLRPCStruct.h in Headers */,
- 5D61FD151A84238C00846EE7 /* SDLOnLockScreenStatus.h in Headers */,
- 5D61FD291A84238C00846EE7 /* SDLPerformInteraction.h in Headers */,
- 884E702321FBA952008D53BA /* SDLAppServiceType.h in Headers */,
- DAC572571D1067270004288B /* SDLTouchManager.h in Headers */,
- 5D61FE0D1A84238C00846EE7 /* SDLVrCapabilities.h in Headers */,
- EEB1932E205028B700A8940C /* SDLControlFramePayloadTransportEventUpdate.h in Headers */,
- EE798CA420561210008EDE8E /* SDLSecondaryTransportManager.h in Headers */,
- 5DBF06271E64A91D00A5CF03 /* SDLLogFileModule.h in Headers */,
- 5D61FC531A84238C00846EE7 /* SDLButtonEventMode.h in Headers */,
- 88E6F1AD220E19DF006156F9 /* SDLMediaServiceData.h in Headers */,
- 1FF7DAB61F75B27300B46C30 /* SDLFocusableItemLocatorType.h in Headers */,
- 5D61FC781A84238C00846EE7 /* SDLDeleteFileResponse.h in Headers */,
- 5DA240001F325621009C0313 /* SDLStreamingMediaConfiguration.h in Headers */,
- 5D61FC5F1A84238C00846EE7 /* SDLCharacterSet.h in Headers */,
- 5DD67CC71E68B568009CD394 /* SDLLogMacros.h in Headers */,
- 5D61FCFF1A84238C00846EE7 /* SDLOnAppInterfaceUnregistered.h in Headers */,
- 5D61FDC51A84238C00846EE7 /* SDLTCPTransport.h in Headers */,
- 5D6CC8EF1C610E660027F60A /* SDLSecurityType.h in Headers */,
- 5D61FCF61A84238C00846EE7 /* SDLMediaClockFormat.h in Headers */,
- 5D92937820B6FB6200FCC775 /* SDLPresentChoiceSetOperation.h in Headers */,
- 5D61FD831A84238C00846EE7 /* SDLSetDisplayLayout.h in Headers */,
- 5D61FCC91A84238C00846EE7 /* SDLIgnitionStableStatus.h in Headers */,
- 884E701F21FB983F008D53BA /* SDLAppServiceManifest.h in Headers */,
- 4A3BA4EC24914801003E56B8 /* SDLLifecycleProtocolHandler.h in Headers */,
- DA9F7E6B1DCBFB0700ACAE48 /* SDLDeliveryMode.h in Headers */,
- DA9F7E871DCC049900ACAE48 /* SDLSubscribeWayPoints.h in Headers */,
- 88D99DB52289C82F0039E047 /* SDLIAPControlSessionDelegate.h in Headers */,
- 5D61FDBB1A84238C00846EE7 /* SDLSystemAction.h in Headers */,
- 5D8A09811F54B4E5002502A2 /* SDLStreamingMediaManagerDataSource.h in Headers */,
- 5D61FC9C1A84238C00846EE7 /* SDLEmergencyEventType.h in Headers */,
- 5D61FD131A84238C00846EE7 /* SDLOnLanguageChange.h in Headers */,
- 5D61FDE71A84238C00846EE7 /* SDLUnsubscribeButton.h in Headers */,
- 5DD8406220FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.h in Headers */,
- 5D61FCAB1A84238C00846EE7 /* SDLFuelCutoffStatus.h in Headers */,
- 5D9FC2A31FD8814A00ACA5C2 /* SDLAudioFile.h in Headers */,
- 5DB9965C1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.h in Headers */,
- 5D1665C81CF8CA3D00CC4CA1 /* SDLPermissionFilter.h in Headers */,
- E9C32B911AB20BA200F283AF /* SDLIAPSession.h in Headers */,
- 10893C162417D78300BA347E /* SDLIconArchiveFile.h in Headers */,
- 5D61FCD71A84238C00846EE7 /* SDLInteractionMode.h in Headers */,
- 8881AFBE2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h in Headers */,
- 880FE6272267AE5300723732 /* SDLIAPConstants.h in Headers */,
- 5D61FC391A84238C00846EE7 /* SDLAlertManeuver.h in Headers */,
- 5D61FC861A84238C00846EE7 /* SDLDeviceStatus.h in Headers */,
- DA0C46AF1DCD41E30001F2A8 /* SDLMacros.h in Headers */,
- 884E702721FBAC5B008D53BA /* SDLServiceUpdateReason.h in Headers */,
- 5D61FCC71A84238C00846EE7 /* SDLIAPTransport.h in Headers */,
- 5D61FC6D1A84238C00846EE7 /* SDLCreateInteractionChoiceSetResponse.h in Headers */,
- 5D8204221BCEA89A00D0A41B /* SDLFileManager.h in Headers */,
- 4A9D02BE2497EED400FBE99B /* SDLLifecycleRPCAdapter.h in Headers */,
- 5D4D67B41D30161600468B4A /* SDLLockScreenManager.h in Headers */,
- 5D00AC7B1F15287E004000D9 /* SDLPhoneCapability.h in Headers */,
- 5D61FE111A84238C00846EE7 /* SDLWarningLightStatus.h in Headers */,
- 008DB36922EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.h in Headers */,
- 5D61FC7A1A84238C00846EE7 /* SDLDeleteInteractionChoiceSet.h in Headers */,
- 10893C1A2418188600BA347E /* SDLCacheFileManager.h in Headers */,
- 5D61FC3B1A84238C00846EE7 /* SDLAlertManeuverResponse.h in Headers */,
- 5DB9964E1F26886C002D8795 /* SDLControlFramePayloadEndService.h in Headers */,
+ 4ABB255124F7E52B0061BF55 /* SDLLockScreenConfiguration.h in Headers */,
+ 4ABB26B124F7F9DF0061BF55 /* SDLLogTargetOSLog.h in Headers */,
+ 4ABB259624F7E6880061BF55 /* SDLMenuCell.h in Headers */,
+ 4ABB292E24F842A00061BF55 /* SDLDiagnosticMessage.h in Headers */,
+ 4ABB272424F7FCAE0061BF55 /* SDLComponentVolumeStatus.h in Headers */,
+ 4ABB254224F7E48D0061BF55 /* SDLViewControllerPresentable.h in Headers */,
+ 4ABB27B024F7FFDA0061BF55 /* SDLMassageCushion.h in Headers */,
+ 4ABB267324F7F6640061BF55 /* SDLPrioritizedObjectCollection.h in Headers */,
+ 4ABB26B324F7F9F60061BF55 /* SDLLogTarget.h in Headers */,
+ 4ABB2A3624F847980061BF55 /* SDLDialNumberResponse.h in Headers */,
+ 4ABB297724F844D30061BF55 /* SDLPerformAppServiceInteraction.h in Headers */,
+ 4ABB27E124F800CA0061BF55 /* SDLPowerModeQualificationStatus.h in Headers */,
+ 4A8BD2D124F93803000945E3 /* SDLTemperature.h in Headers */,
+ 4ABB282624F824E70061BF55 /* SDLTemperatureUnit.h in Headers */,
+ 4ABB262424F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.h in Headers */,
+ 4A8BD24424F93135000945E3 /* SDLMediaServiceManifest.h in Headers */,
+ 4ABB279B24F7FF0B0061BF55 /* SDLKeyboardLayout.h in Headers */,
+ 4ABB2ACE24F848130061BF55 /* SDLSubscribeButtonResponse.h in Headers */,
+ 4ABB27AC24F7FFDA0061BF55 /* SDLMediaClockFormat.h in Headers */,
+ 4ABB2A7024F847D40061BF55 /* SDLPerformAudioPassThruResponse.h in Headers */,
+ 4A8BD2EF24F93872000945E3 /* SDLTurn.h in Headers */,
+ 4ABB269624F7F9400061BF55 /* SDLRPCFunctionNames.h in Headers */,
+ 4ABB2B4024F84EF50061BF55 /* SDLCloudAppProperties.h in Headers */,
+ 4ABB2A5824F847B10061BF55 /* SDLGetInteriorVehicleDataConsentResponse.h in Headers */,
+ 4ABB271824F7FC4E0061BF55 /* SDLCompassDirection.h in Headers */,
+ 4ABB2B5924F84EF50061BF55 /* SDLDeviceStatus.h in Headers */,
+ 4A8BD2CF24F93803000945E3 /* SDLTouchEvent.h in Headers */,
+ 4ABB264B24F7F5580061BF55 /* SDLManagerDelegate.h in Headers */,
+ 4A8BD28B24F934F3000945E3 /* SDLRGBColor.h in Headers */,
+ 4ABB279624F7FF0B0061BF55 /* SDLKeyboardEvent.h in Headers */,
+ 4ABB26FA24F7FB8F0061BF55 /* SDLAppServiceType.h in Headers */,
+ 4ABB2A3C24F847980061BF55 /* SDLCreateInteractionChoiceSetResponse.h in Headers */,
+ 4ABB29DC24F846880061BF55 /* SDLUnregisterAppInterface.h in Headers */,
+ 4ABB28C224F82A6A0061BF55 /* SDLOnTouchEvent.h in Headers */,
+ 4ABB26C624F7FA5F0061BF55 /* SDLLogModel.h in Headers */,
+ 4ABB27EE24F801B50061BF55 /* SDLRadioBand.h in Headers */,
+ 4ABB266B24F7F61B0061BF55 /* EAAccessory+SDLProtocols.h in Headers */,
+ 4ABB262D24F7F4150061BF55 /* SDLH264Packetizer.h in Headers */,
+ 4A8BD39224F94731000945E3 /* SDLIAPSession.h in Headers */,
+ 4ABB255524F7E5460061BF55 /* SDLLockScreenManager.h in Headers */,
+ 4ABB2A6024F847B10061BF55 /* SDLGetInteriorVehicleDataResponse.h in Headers */,
+ 4A8BD28624F9343F000945E3 /* SDLRadioControlCapabilities.h in Headers */,
+ 4ABB2AAC24F847F40061BF55 /* SDLSetAppIconResponse.h in Headers */,
+ 4ABB264924F7F5540061BF55 /* SDLManager.h in Headers */,
+ 4ABB24D924F594190061BF55 /* SDLConnectionManagerType.h in Headers */,
+ 4ABB29BB24F845DB0061BF55 /* SDLSetGlobalProperties.h in Headers */,
+ 4ABB2AB524F847F40061BF55 /* SDLShowAppMenuResponse.h in Headers */,
+ 4A8BD3C724F998A8000945E3 /* SDLWindowState.h in Headers */,
+ 4ABB286424F828E00061BF55 /* SDLVehicleDataNotificationStatus.h in Headers */,
+ 4ABB287C24F8294A0061BF55 /* SDLVentilationMode.h in Headers */,
+ 4ABB292F24F842A00061BF55 /* SDLDeleteFile.h in Headers */,
+ 4ABB294924F843440061BF55 /* SDLEncodedSyncPData.h in Headers */,
+ 4ABB258F24F7E66C0061BF55 /* SDLKeyboardDelegate.h in Headers */,
+ 4ABB276E24F7FE480061BF55 /* SDLIgnitionStableStatus.h in Headers */,
+ 4ABB2AEA24F848270061BF55 /* SDLUpdateTurnListResponse.h in Headers */,
+ 4ABB28E824F82A6A0061BF55 /* SDLOnVehicleData.h in Headers */,
+ 4ABB2B6824F84FE50061BF55 /* SDLGearStatus.h in Headers */,
+ 4ABB2AE724F848270061BF55 /* SDLUnsubscribeWayPointsResponse.h in Headers */,
+ 4ABB264424F7F5340061BF55 /* SDLSystemCapabilityManager.h in Headers */,
+ 4ABB2AD324F848130061BF55 /* SDLSubtleAlertResponse.h in Headers */,
+ 4ABB27C224F8006D0061BF55 /* SDLMetadataType.h in Headers */,
+ 4A8BD35524F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.h in Headers */,
+ 4A8BD38524F94702000945E3 /* SDLTCPTransport.h in Headers */,
+ 4ABB2BA224F850AE0061BF55 /* SDLLightState.h in Headers */,
+ 4ABB296224F844020061BF55 /* SDLGetWayPoints.h in Headers */,
+ 4ABB28D524F82A6A0061BF55 /* SDLOnButtonEvent.h in Headers */,
+ 4ABB2B7024F84FE50061BF55 /* SDLFuelRange.h in Headers */,
+ 4ABB25D624F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.h in Headers */,
+ 4ABB299324F845440061BF55 /* SDLSetAppIcon.h in Headers */,
+ 4ABB2A3B24F847980061BF55 /* SDLDeleteInteractionChoiceSetResponse.h in Headers */,
+ 4ABB275324F7FD9C0061BF55 /* SDLECallConfirmationStatus.h in Headers */,
+ 4ABB27CD24F8006D0061BF55 /* SDLModuleType.h in Headers */,
+ 4A8BD31324F938D6000945E3 /* SDLWindowCapability.h in Headers */,
+ 4A8BD38924F94712000945E3 /* SDLSecondaryTransportManager.h in Headers */,
+ 4ABB28FE24F82BE90061BF55 /* SDLAddSubMenu.h in Headers */,
+ 4ABB299624F845440061BF55 /* SDLRegisterAppInterface.h in Headers */,
+ 4ABB27DE24F800CA0061BF55 /* SDLPredefinedLayout.h in Headers */,
+ 4ABB27E424F800CA0061BF55 /* SDLPrerecordedSpeech.h in Headers */,
+ 4ABB2A2E24F847980061BF55 /* SDLDeleteCommandResponse.h in Headers */,
+ 4ABB277524F7FE910061BF55 /* SDLIgnitionStatus.h in Headers */,
+ 4A8BD27924F9343F000945E3 /* SDLPermissionItem.h in Headers */,
+ 4ABB2B5024F84EF50061BF55 /* SDLClusterModeStatus.h in Headers */,
+ 4ABB26CA24F7FAAF0061BF55 /* SDLEnum.h in Headers */,
+ 4ABB251E24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.h in Headers */,
+ 4ABB260724F7E9650061BF55 /* SDLStreamingMediaManagerDataSource.h in Headers */,
+ 4ABB265224F7F58D0061BF55 /* SDLRPCRequestNotification.h in Headers */,
+ 4ABB2A6424F847BB0061BF55 /* SDLListFilesResponse.h in Headers */,
+ 4ABB2A3324F847980061BF55 /* SDLCreateWindowResponse.h in Headers */,
+ 4A8BD28424F9343F000945E3 /* SDLRDSData.h in Headers */,
+ 4ABB25BA24F7E70E0061BF55 /* SDLSoftButtonState.h in Headers */,
+ 4ABB295224F843440061BF55 /* SDLGetAppServiceData.h in Headers */,
+ 4ABB273A24F7FD1D0061BF55 /* SDLDirection.h in Headers */,
+ 4ABB25A224F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.h in Headers */,
+ 4A8BD3B024F98ACE000945E3 /* SDLLogManager.h in Headers */,
+ 4ABB26DE24F7FAFD0061BF55 /* SDLRPCRequest.h in Headers */,
+ 4ABB25D824F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.h in Headers */,
+ 4A8BD25124F93135000945E3 /* SDLModuleData.h in Headers */,
+ 4ABB26FF24F7FB8F0061BF55 /* SDLAppInterfaceUnregisteredReason.h in Headers */,
+ 4ABB250424F596450061BF55 /* SDLUploadFileOperation.h in Headers */,
+ 4A8BD2D824F93803000945E3 /* SDLTireStatus.h in Headers */,
+ 4ABB297424F844D30061BF55 /* SDLReadDID.h in Headers */,
+ 4ABB288024F82A200061BF55 /* SDLWindowType.h in Headers */,
+ 4ABB26A424F7F9B90061BF55 /* SDLLogFileModule.h in Headers */,
+ 4A8BD3C824F998A8000945E3 /* SDLWindowStatus.h in Headers */,
+ 4ABB26BE24F7FA1C0061BF55 /* SDLLogMacros.h in Headers */,
+ 4ABB29BA24F845DB0061BF55 /* SDLSpeak.h in Headers */,
+ 4ABB29DA24F846880061BF55 /* SDLSubscribeVehicleData.h in Headers */,
+ 4A8BD36224F9461A000945E3 /* SDLV1ProtocolMessage.h in Headers */,
+ 4ABB25E624F7E7A90061BF55 /* SDLAudioStreamManager.h in Headers */,
+ 4ABB294A24F843440061BF55 /* SDLGetFile.h in Headers */,
+ 4ABB27FF24F823F20061BF55 /* SDLRequestType.h in Headers */,
+ 4ABB29FA24F8477F0061BF55 /* SDLAddSubMenuResponse.h in Headers */,
+ 4ABB25DC24F7E77C0061BF55 /* SDLScreenManager.h in Headers */,
+ 4ABB262924F7F3BC0061BF55 /* SDLH264VideoEncoder.h in Headers */,
+ 4ABB294624F843440061BF55 /* SDLGetInteriorVehicleDataConsent.h in Headers */,
+ 4ABB24F224F595120061BF55 /* SDLArtwork.h in Headers */,
+ 4ABB265E24F7F5F20061BF55 /* SDLNotificationDispatcher.h in Headers */,
+ 4A8BD37524F9465E000945E3 /* SDLProtocolReceivedMessageRouter.h in Headers */,
+ 4ABB24E924F594CD0061BF55 /* SDLEncryptionManagerConstants.h in Headers */,
+ 4ABB2AA724F847F40061BF55 /* SDLShowConstantTBTResponse.h in Headers */,
+ 4ABB28ED24F82A6A0061BF55 /* SDLOnKeyboardInput.h in Headers */,
5D9FDA991F2A7D3F00A495C8 /* emhashmap.h in Headers */,
- 5D61FDB71A84238C00846EE7 /* SDLSyncPData.h in Headers */,
- 5D61FD011A84238C00846EE7 /* SDLOnAudioPassThru.h in Headers */,
- 8854682F2225BDAE00994D8D /* SDLHybridAppPreference.h in Headers */,
+ 4ABB255F24F7E59E0061BF55 /* SDLPermissionConstants.h in Headers */,
+ 4ABB270324F7FB8F0061BF55 /* SDLButtonName.h in Headers */,
+ 4ABB25B324F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.h in Headers */,
+ 4ABB24C624F592900061BF55 /* SDLError.h in Headers */,
5D9FDA901F2A7D3400A495C8 /* bson_array.h in Headers */,
- 5D61FDCB1A84238C00846EE7 /* SDLTextFieldName.h in Headers */,
- 880723EB23A2CFB4003D0489 /* SDLLockScreenRootViewController.h in Headers */,
- 5D61FD8B1A84238C00846EE7 /* SDLSetMediaClockTimer.h in Headers */,
- DA6223BD1E7B088200878689 /* CVPixelBufferRef+SDLUtil.h in Headers */,
- 5D61FD031A84238C00846EE7 /* SDLOnButtonEvent.h in Headers */,
- 5D61FDAF1A84238C00846EE7 /* SDLSubscribeButtonResponse.h in Headers */,
- 5D61FCB51A84238C00846EE7 /* SDLGetVehicleData.h in Headers */,
- 5D61FDEB1A84238C00846EE7 /* SDLUnsubscribeVehicleData.h in Headers */,
- 5DA3F3541BC448060026F2D0 /* NSMapTable+Subscripting.h in Headers */,
- 5D61FC591A84238C00846EE7 /* SDLCarModeStatus.h in Headers */,
- 5D1665C41CF8CA2700CC4CA1 /* SDLListFilesOperation.h in Headers */,
- 5D61FC2B1A84238C00846EE7 /* SDLTransportType.h in Headers */,
- 5D61FD791A84238C00846EE7 /* SDLScreenParams.h in Headers */,
- 5D61FDCF1A84238C00846EE7 /* SDLTireStatus.h in Headers */,
- 5D61FDFD1A84238C00846EE7 /* SDLVehicleDataActiveStatus.h in Headers */,
- 0055412622D40DAB003194D3 /* SDLModuleInfo.h in Headers */,
- 5D61FD811A84238C00846EE7 /* SDLSetAppIconResponse.h in Headers */,
- 5D61FC551A84238C00846EE7 /* SDLButtonName.h in Headers */,
- 5D616B531D59044400553F6B /* SDLErrorConstants.h in Headers */,
- 5DADA7751F4DFED60084D17D /* SDLRectangle.h in Headers */,
- 5D61FD9F1A84238C00846EE7 /* SDLSoftButton.h in Headers */,
- 5DD67CBC1E661C84009CD394 /* SDLLogTargetOSLog.h in Headers */,
- 5D61FD551A84238C00846EE7 /* SDLPutFile.h in Headers */,
- 88A7A3C6220CCEA100A9E435 /* SDLGetFileResponse.h in Headers */,
- 5D61FD091A84238C00846EE7 /* SDLOnDriverDistraction.h in Headers */,
- E9C32B9E1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.h in Headers */,
- 5DAD5F7F204DEDEB0025624C /* SDLScreenManager.h in Headers */,
- 5D92938020B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.h in Headers */,
- 5D339CEF207C08BA000CC364 /* SDLVoiceCommand.h in Headers */,
- 5D61FC4B1A84238C00846EE7 /* SDLBeltStatus.h in Headers */,
- DA9F7E991DCC052C00ACAE48 /* SDLLocationCoordinate.h in Headers */,
- 5D0A7382203F23F30001595D /* SDLSoftButtonManager.h in Headers */,
- 5D61FC351A84238C00846EE7 /* SDLAirbagStatus.h in Headers */,
- 5D61FC8A1A84238C00846EE7 /* SDLDiagnosticMessageResponse.h in Headers */,
- 5D61FC2D1A84238C00846EE7 /* SDLAddCommand.h in Headers */,
- 88B3BF9C20DA8BBC00943565 /* SDLFuelRange.h in Headers */,
- 7538765322D8D95100FE8484 /* SDLShowAppMenuResponse.h in Headers */,
- 5D61FD931A84238C00846EE7 /* SDLShowConstantTBTResponse.h in Headers */,
- 5DBF06391E64ABBE00A5CF03 /* SDLLogConfiguration.h in Headers */,
- 5D61FCCB1A84238C00846EE7 /* SDLIgnitionStatus.h in Headers */,
- 5D61FCB71A84238C00846EE7 /* SDLGetVehicleDataResponse.h in Headers */,
- 5D61FDA91A84238C00846EE7 /* SDLSpeechCapabilities.h in Headers */,
- 5D92935320B2F76500FCC775 /* SDLTemplateColorScheme.h in Headers */,
- 884E701B21FB8D0F008D53BA /* SDLPublishAppService.h in Headers */,
- 5DA23FFD1F312DBA009C0313 /* SDLVideoEncoderDelegate.h in Headers */,
- EE7B6124205BF97B00E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.h in Headers */,
- 5D61FCE01A84238C00846EE7 /* SDLKeyboardEvent.h in Headers */,
- 5D3E48751D6F3B330000BFEF /* SDLAsynchronousOperation.h in Headers */,
- 88AF11DC220B6B3D00A59985 /* SDLPerformAppServiceInteraction.h in Headers */,
- DA9F7E631DCBFAC800ACAE48 /* SDLDateTime.h in Headers */,
- 5D61FCEA1A84238C00846EE7 /* SDLLayoutMode.h in Headers */,
- DA318C1F1DD0F06C00C035AC /* NSMutableDictionary+Store.h in Headers */,
- 5D61FD7F1A84238C00846EE7 /* SDLSetAppIcon.h in Headers */,
- 5D61FDD11A84238C00846EE7 /* SDLTouchCoord.h in Headers */,
- 8881AFAC2225D61900EA870B /* SDLSetCloudAppProperties.h in Headers */,
- 5D61FC7E1A84238C00846EE7 /* SDLDeleteSubMenu.h in Headers */,
- 1EE48E901F2F0EE700B98D08 /* SDLTemperatureUnit.h in Headers */,
- 5D61FC451A84238C00846EE7 /* SDLAudioPassThruCapabilities.h in Headers */,
- 5D61FDC71A84238C00846EE7 /* SDLTextAlignment.h in Headers */,
- 5D61FD051A84238C00846EE7 /* SDLOnButtonPress.h in Headers */,
- 0055413222D75A7B003194D3 /* SDLSeatLocationCapability.h in Headers */,
- 5DA150C72271FDC20032928D /* SDLSoftButtonTransitionOperation.h in Headers */,
- 5D61FCC51A84238C00846EE7 /* SDLHMIZoneCapabilities.h in Headers */,
- 884AF94F220B488900E22928 /* SDLOnSystemCapabilityUpdated.h in Headers */,
- 880D267D220DE5DF00B3F496 /* SDLWeatherServiceManifest.h in Headers */,
- DAA41D551DF66B2000BC7337 /* SDLH264VideoEncoder.h in Headers */,
- 8B7B319A1F2F7B5700BDC38D /* SDLVideoStreamingCodec.h in Headers */,
- 005DF3CA22C62E00006E01A9 /* SDLEncryptionManagerConstants.h in Headers */,
- 5D61FCAF1A84238C00846EE7 /* SDLGenericResponse.h in Headers */,
- 885468352225C1F800994D8D /* SDLCloudAppProperties.h in Headers */,
- 5D61FC4F1A84238C00846EE7 /* SDLBodyInformation.h in Headers */,
- 5D61FDAB1A84238C00846EE7 /* SDLStartTime.h in Headers */,
- 5D61FD071A84238C00846EE7 /* SDLOnCommand.h in Headers */,
- 88D3EBC92267949D00493C38 /* SDLIAPDataSession.h in Headers */,
- 5D00AC671F140F0A004000D9 /* SDLSystemCapabilityType.h in Headers */,
- DA9F7E9B1DCC052C00ACAE48 /* SDLLocationDetails.h in Headers */,
- 5D61FD1D1A84238C00846EE7 /* SDLOnTBTClientState.h in Headers */,
- 5D61FD9D1A84238C00846EE7 /* SDLSliderResponse.h in Headers */,
- 5D61FDF31A84238C00846EE7 /* SDLUpdateTurnListResponse.h in Headers */,
- 5D61FDDA1A84238C00846EE7 /* SDLTransportDelegate.h in Headers */,
- 5D61FC411A84238C00846EE7 /* SDLAppHMIType.h in Headers */,
- 5D61FCEE1A84238C00846EE7 /* SDLListFilesResponse.h in Headers */,
- 8831FA48220235B000B8FFB7 /* SDLAppServicesCapabilities.h in Headers */,
- 880245A420F79C3400ED195B /* SDLFileManagerConfiguration.h in Headers */,
- 5D61FC491A84238C00846EE7 /* SDLAudioType.h in Headers */,
- 5D61FC761A84238C00846EE7 /* SDLDeleteFile.h in Headers */,
- 5D61FD211A84238C00846EE7 /* SDLOnVehicleData.h in Headers */,
- DA9F7E731DCC004C00ACAE48 /* SDLGetWayPointsResponse.h in Headers */,
- 88EED8381F33AE1700E6C42E /* SDLHapticRect.h in Headers */,
- 5DD67CC31E68AE82009CD394 /* SDLLogFileModuleMap.h in Headers */,
- EED5C9FE1F4D18D100F04000 /* SDLH264Packetizer.h in Headers */,
- 5D61FD7D1A84238C00846EE7 /* SDLScrollableMessageResponse.h in Headers */,
- 5D61FD431A84238C00846EE7 /* SDLProtocol.h in Headers */,
- 5D8B17531AC9E11B006A6E1C /* SDLDialNumberResponse.h in Headers */,
- 5DEF695B1FD6F82D004B8C2F /* SDLStreamingAudioManagerType.h in Headers */,
- 5D61FC921A84238C00846EE7 /* SDLDisplayType.h in Headers */,
- 5D61FD0D1A84238C00846EE7 /* SDLOnHashChange.h in Headers */,
- 5D61FC6B1A84238C00846EE7 /* SDLCreateInteractionChoiceSet.h in Headers */,
- 8855F9E3220CB04000A5C897 /* SDLOnAppServiceData.h in Headers */,
- 5D0A7386203F24060001595D /* SDLSoftButtonState.h in Headers */,
- 5D61FCE61A84238C00846EE7 /* SDLKeypressMode.h in Headers */,
- 5D61FD871A84238C00846EE7 /* SDLSetGlobalProperties.h in Headers */,
- 5D92936120B354BE00FCC775 /* SDLChoiceSetDelegate.h in Headers */,
- 5D61FC741A84238C00846EE7 /* SDLDeleteCommandResponse.h in Headers */,
- 5D61FDF11A84238C00846EE7 /* SDLUpdateTurnList.h in Headers */,
- 5DB996571F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.h in Headers */,
- 5D61FD671A84238C00846EE7 /* SDLResult.h in Headers */,
- 88A098AE2476F0C200A50005 /* SDLSubscribeButtonManager.h in Headers */,
- 755F176222A00B7C0041B9CB /* SDLMenuManagerConstants.h in Headers */,
- 5D61FD351A84238C00846EE7 /* SDLPowerModeStatus.h in Headers */,
- 5D61FD971A84238C00846EE7 /* SDLSingleTireStatus.h in Headers */,
- 5D61FCE21A84238C00846EE7 /* SDLKeyboardLayout.h in Headers */,
- 5D76E3241D39767000647CFA /* SDLLockScreenPresenter.h in Headers */,
- 5D00AC6F1F1511B9004000D9 /* SDLGetSystemCapability.h in Headers */,
- 5D61FD891A84238C00846EE7 /* SDLSetGlobalPropertiesResponse.h in Headers */,
- 5D61FD8D1A84238C00846EE7 /* SDLSetMediaClockTimerResponse.h in Headers */,
- 5D61FD3B1A84238C00846EE7 /* SDLPresetBankCapabilities.h in Headers */,
- 5D8204311BD001C700D0A41B /* SDLArtwork.h in Headers */,
- 5D53C46D1B7A99B9003526EA /* SDLStreamingMediaManager.h in Headers */,
- 5D61FD0F1A84238C00846EE7 /* SDLOnHMIStatus.h in Headers */,
- 5D61FD5F1A84238C00846EE7 /* SDLRegisterAppInterfaceResponse.h in Headers */,
- 5D61FD191A84238C00846EE7 /* SDLOnSyncPData.h in Headers */,
- 5D61FE091A84238C00846EE7 /* SDLVehicleDataType.h in Headers */,
- 5D61FDB11A84238C00846EE7 /* SDLSubscribeVehicleData.h in Headers */,
- 5DB996601F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.h in Headers */,
- 5DCF76F51ACDBAD300BB647B /* SDLSendLocation.h in Headers */,
- 5D75961122972FCA0013207C /* SDLSystemCapabilityObserver.h in Headers */,
- 5D61FC9E1A84238C00846EE7 /* SDLEncodedSyncPData.h in Headers */,
- 1FF7DABA1F75B2A800B46C30 /* SDLFocusableItemLocator.h in Headers */,
- 5D019276214994AC003500F6 /* NSMutableArray+Safe.h in Headers */,
- 5D61FDE11A84238C00846EE7 /* SDLTurn.h in Headers */,
- 5D9FC29B1FD8812F00ACA5C2 /* SDLAudioStreamManagerDelegate.h in Headers */,
- 5D61FC801A84238C00846EE7 /* SDLDeleteSubMenuResponse.h in Headers */,
- 5D00AC731F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h in Headers */,
- 5D61FDBD1A84238C00846EE7 /* SDLSystemContext.h in Headers */,
- 5D61FC511A84238C00846EE7 /* SDLButtonCapabilities.h in Headers */,
- 5D61FDE91A84238C00846EE7 /* SDLUnsubscribeButtonResponse.h in Headers */,
- 5D61FCD51A84238C00846EE7 /* SDLImageType.h in Headers */,
- 5D76750E22D8FB3700E8D71A /* SDLMenuLayout.h in Headers */,
- 8803DCEF22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h in Headers */,
- 5D61FC2F1A84238C00846EE7 /* SDLAddCommandResponse.h in Headers */,
- 5D0C2A0020D9479B008B56CD /* SDLStreamingVideoLifecycleManager.h in Headers */,
- 5D61FD631A84238C00846EE7 /* SDLResetGlobalProperties.h in Headers */,
- 88B58DC0222045320011B063 /* SDLNavigationJunction.h in Headers */,
- 5D61FDD71A84238C00846EE7 /* SDLTouchType.h in Headers */,
- 5D92935E20B33FF700FCC775 /* SDLChoiceSet.h in Headers */,
- 5D61FDD31A84238C00846EE7 /* SDLTouchEvent.h in Headers */,
- 5D61FD451A84238C00846EE7 /* SDLProtocolHeader.h in Headers */,
- 5D61FCFA1A84238C00846EE7 /* SDLMyKey.h in Headers */,
- 8B7B31A61F2F875200BDC38D /* SDLVideoStreamingCapability.h in Headers */,
- 5D61FC981A84238C00846EE7 /* SDLECallInfo.h in Headers */,
+ 4ABB2B8924F8504A0061BF55 /* SDLGrid.h in Headers */,
+ 4ABB263024F7F4230061BF55 /* SDLRAWH264Packetizer.h in Headers */,
+ 4ABB26F824F7FB8F0061BF55 /* SDLAudioType.h in Headers */,
+ 4ABB24CC24F5931B0061BF55 /* SDLStateMachine.h in Headers */,
+ 4ABB28DD24F82A6A0061BF55 /* SDLOnButtonPress.h in Headers */,
+ 4A8BD34524F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.h in Headers */,
+ 4ABB291D24F842560061BF55 /* SDLCreateWindow.h in Headers */,
+ 4ABB257324F7E5E80061BF55 /* SDLCheckChoiceVROptionalOperation.h in Headers */,
+ 4A8BD2D924F93803000945E3 /* SDLTemplateConfiguration.h in Headers */,
+ 4ABB25FC24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.h in Headers */,
+ 4A8BD2F324F93872000945E3 /* SDLVehicleDataResult.h in Headers */,
+ 4A8BD3AC24F98602000945E3 /* NSNumber+NumberType.h in Headers */,
+ 4A8BD29A24F93534000945E3 /* SDLSeatControlCapabilities.h in Headers */,
+ 4ABB274D24F7FD9C0061BF55 /* SDLEmergencyEventType.h in Headers */,
+ 4ABB2AC024F848050061BF55 /* SDLSpeakResponse.h in Headers */,
+ 4A8BD23B24F93135000945E3 /* SDLMassageCushionFirmness.h in Headers */,
+ 4ABB2B1924F84D950061BF55 /* SDLAppServiceCapability.h in Headers */,
+ 4ABB280124F823F20061BF55 /* SDLResult.h in Headers */,
+ 4ABB2B8624F8504A0061BF55 /* SDLHMISettingsControlCapabilities.h in Headers */,
+ 4ABB276924F7FE480061BF55 /* SDLHMIZoneCapabilities.h in Headers */,
+ 4ABB29DF24F846880061BF55 /* SDLSystemRequest.h in Headers */,
+ 4ABB290224F82BE90061BF55 /* SDLAddCommand.h in Headers */,
+ 4ABB260624F7E9650061BF55 /* SDLStreamingMediaManager.h in Headers */,
+ 4A8BD31024F938D6000945E3 /* SDLWeatherAlert.h in Headers */,
+ 4ABB282824F824E70061BF55 /* SDLSystemContext.h in Headers */,
+ 4ABB2B3D24F84EF50061BF55 /* SDLDeviceInfo.h in Headers */,
+ 4A8BD33024F9431B000945E3 /* SDLV2ProtocolHeader.h in Headers */,
+ 4ABB272624F7FCAE0061BF55 /* SDLDefrostZone.h in Headers */,
+ 4ABB2B4C24F84EF50061BF55 /* SDLButtonCapabilities.h in Headers */,
+ 4A8BD23F24F93135000945E3 /* SDLKeyboardProperties.h in Headers */,
+ 4ABB297324F844D30061BF55 /* SDLPublishAppService.h in Headers */,
+ 4ABB27C424F8006D0061BF55 /* SDLPermissionStatus.h in Headers */,
+ 4ABB24E524F594A20061BF55 /* SDLServiceEncryptionDelegate.h in Headers */,
+ 4A8BD24024F93135000945E3 /* SDLLocationCoordinate.h in Headers */,
+ 4ABB2BA924F850AE0061BF55 /* SDLImageResolution.h in Headers */,
+ 4A8BD32224F93964000945E3 /* SDLSeatLocation.h in Headers */,
+ 4ABB261124F7F3520061BF55 /* SDLPCMAudioConverter.h in Headers */,
+ 4ABB284824F828630061BF55 /* SDLTimerMode.h in Headers */,
+ 4ABB275E24F7FE1F0061BF55 /* SDLGlobalProperty.h in Headers */,
+ 4ABB29DE24F846880061BF55 /* SDLUnpublishAppService.h in Headers */,
+ 4ABB24DD24F594560061BF55 /* SDLEncryptionLifecycleManager.h in Headers */,
+ 4ABB25D924F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.h in Headers */,
+ 4ABB28EB24F82A6A0061BF55 /* SDLOnHashChange.h in Headers */,
+ 4A8BD39C24F94741000945E3 /* SDLIAPControlSession.h in Headers */,
+ 4ABB2AB024F847F40061BF55 /* SDLSetCloudAppPropertiesResponse.h in Headers */,
+ 4ABB28C524F82A6A0061BF55 /* SDLOnEncodedSyncPData.h in Headers */,
+ 4ABB2A5924F847B10061BF55 /* SDLGetCloudAppPropertiesResponse.h in Headers */,
+ 4ABB29BF24F845DB0061BF55 /* SDLSetMediaClockTimer.h in Headers */,
+ 4A8BD39324F94731000945E3 /* SDLIAPTransport.h in Headers */,
+ 4ABB2A2024F847980061BF55 /* SDLButtonPressResponse.h in Headers */,
+ 4ABB258124F7E61E0061BF55 /* SDLChoiceCell.h in Headers */,
+ 4ABB270124F7FB8F0061BF55 /* SDLBitsPerSample.h in Headers */,
+ 4ABB253224F7E43A0061BF55 /* SDLAsynchronousRPCOperation.h in Headers */,
+ 4ABB25CC24F7E74F0061BF55 /* SDLTextAndGraphicManager.h in Headers */,
+ 4A8BD3B824F98F64000945E3 /* SDLOnUpdateSubMenu.h in Headers */,
+ 4ABB291324F842160061BF55 /* SDLCreateInteractionChoiceSet.h in Headers */,
+ 4ABB257424F7E5E80061BF55 /* SDLPresentChoiceSetOperation.h in Headers */,
+ 4ABB2A3024F847980061BF55 /* SDLDiagnosticMessageResponse.h in Headers */,
+ 4ABB2A7224F847D40061BF55 /* SDLPutFileResponse.h in Headers */,
+ 4ABB24E224F5948D0061BF55 /* SDLEncryptionConfiguration.h in Headers */,
+ 4ABB27FD24F823F20061BF55 /* SDLSamplingRate.h in Headers */,
+ 4ABB28CD24F82A6A0061BF55 /* SDLOnSubtleAlertPressed.h in Headers */,
+ 4ABB297924F844D30061BF55 /* SDLPerformAudioPassThru.h in Headers */,
+ 4ABB24D724F593ED0061BF55 /* SDLVersion.h in Headers */,
+ 4ABB251B24F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.h in Headers */,
+ 4ABB279A24F7FF0B0061BF55 /* SDLInteractionMode.h in Headers */,
+ 4A8BD24B24F93135000945E3 /* SDLMediaServiceData.h in Headers */,
+ 4ABB287824F8294A0061BF55 /* SDLVrCapabilities.h in Headers */,
+ 4ABB2BA724F850AE0061BF55 /* SDLImage.h in Headers */,
+ 4ABB29FB24F8477F0061BF55 /* SDLAlertManeuverResponse.h in Headers */,
+ 4ABB2B1724F84D950061BF55 /* SDLAudioPassThruCapabilities.h in Headers */,
+ 4ABB279824F7FF0B0061BF55 /* SDLKeypressMode.h in Headers */,
+ 4ABB2B8824F8504A0061BF55 /* SDLHMIPermissions.h in Headers */,
+ 4ABB2B1624F84D950061BF55 /* SDLAudioControlCapabilities.h in Headers */,
+ 4ABB253024F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.h in Headers */,
+ 4A8BD31A24F93941000945E3 /* SDLModuleInfo.h in Headers */,
+ 4ABB26BB24F7FA1C0061BF55 /* SDLLogConfiguration.h in Headers */,
+ 4ABB276C24F7FE480061BF55 /* SDLHMILevel.h in Headers */,
+ 4ABB27CF24F8006D0061BF55 /* SDLNavigationJunction.h in Headers */,
+ 4A8BD33824F945B4000945E3 /* SDLControlFramePayloadConstants.h in Headers */,
+ 4ABB256724F7E5B80061BF55 /* SDLRPCPermissionStatus.h in Headers */,
+ 4ABB286724F828E00061BF55 /* SDLVehicleDataStatus.h in Headers */,
+ 4A8BD25024F93135000945E3 /* SDLMetadataTags.h in Headers */,
+ 4ABB2A3424F847980061BF55 /* SDLCancelInteractionResponse.h in Headers */,
+ 4ABB2AF424F849CF0061BF55 /* SDLGenericResponse.h in Headers */,
+ 4ABB280A24F824600061BF55 /* SDLServiceUpdateReason.h in Headers */,
+ 4ABB2B5124F84EF50061BF55 /* SDLDisplayCapability.h in Headers */,
+ 4ABB2ABD24F847FC0061BF55 /* SDLSliderResponse.h in Headers */,
+ 4ABB28D924F82A6A0061BF55 /* SDLOnSyncPData.h in Headers */,
+ 4A8BD2B924F935BC000945E3 /* SDLSoftButton.h in Headers */,
+ 4ABB28E024F82A6A0061BF55 /* SDLOnHMIStatus.h in Headers */,
+ 4A8BD26524F933C7000945E3 /* SDLOasisAddress.h in Headers */,
+ 4ABB279324F7FF0B0061BF55 /* SDLLayoutMode.h in Headers */,
+ 4ABB279124F7FF0B0061BF55 /* SDLImageFieldName.h in Headers */,
+ 4A8BD2B324F935BC000945E3 /* SDLSoftButtonCapabilities.h in Headers */,
+ 4ABB255D24F7E5880061BF55 /* SDLPermissionFilter.h in Headers */,
+ 4ABB24CF24F593C70061BF55 /* SDLErrorConstants.h in Headers */,
+ 4ABB273C24F7FD1D0061BF55 /* SDLDeviceLevelStatus.h in Headers */,
+ 4ABB25C024F7E7280061BF55 /* SDLSoftButtonManager.h in Headers */,
+ 4ABB2B3C24F84EF50061BF55 /* SDLClimateControlCapabilities.h in Headers */,
+ 4A8BD3BE24F99470000945E3 /* SDLSecurityType.h in Headers */,
+ 4ABB263C24F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.h in Headers */,
+ 4ABB290024F82BE90061BF55 /* SDLAlertManeuver.h in Headers */,
+ 4ABB273424F7FD1D0061BF55 /* SDLDistanceUnit.h in Headers */,
+ 4ABB2AEF24F848270061BF55 /* SDLUnsubscribeButtonResponse.h in Headers */,
+ 4ABB28DA24F82A6A0061BF55 /* SDLOnInteriorVehicleData.h in Headers */,
+ 4ABB28C824F82A6A0061BF55 /* SDLOnLanguageChange.h in Headers */,
+ 4ABB252624F7E40D0061BF55 /* SDLLifecycleSystemRequestHandler.h in Headers */,
+ 4ABB2AEC24F848270061BF55 /* SDLUnpublishAppServiceResponse.h in Headers */,
+ 4ABB2B8224F8504A0061BF55 /* SDLHapticRect.h in Headers */,
+ 4ABB27A824F7FFDA0061BF55 /* SDLMassageMode.h in Headers */,
+ 4A8BD32E24F9431B000945E3 /* SDLProtocolHeader.h in Headers */,
+ 4A8BD3C224F994D5000945E3 /* SDLFileManager.h in Headers */,
+ 4ABB29BC24F845DB0061BF55 /* SDLShowAppMenu.h in Headers */,
+ 4ABB293524F842A00061BF55 /* SDLDialNumber.h in Headers */,
+ 4A8BD37D24F94697000945E3 /* SDLFunctionID.h in Headers */,
+ 4A8BD34124F945CC000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.h in Headers */,
+ 4ABB2B1C24F84D950061BF55 /* SDLAppServiceManifest.h in Headers */,
+ 4ABB29B724F845DB0061BF55 /* SDLSlider.h in Headers */,
+ 4ABB2AB824F847F40061BF55 /* SDLSendHapticDataResponse.h in Headers */,
+ 4ABB268624F7F8E20061BF55 /* SDLMutableDataQueue.h in Headers */,
+ 4ABB27CE24F8006D0061BF55 /* SDLMediaType.h in Headers */,
+ 4ABB28E324F82A6A0061BF55 /* SDLOnTBTClientState.h in Headers */,
+ 4ABB2A5C24F847B10061BF55 /* SDLGetWayPointsResponse.h in Headers */,
+ 4ABB260024F7E9230061BF55 /* SDLStreamingMediaManagerConstants.h in Headers */,
+ 4ABB26FD24F7FB8F0061BF55 /* SDLAmbientLightStatus.h in Headers */,
+ 4ABB270924F7FB8F0061BF55 /* SDLAudioStreamingState.h in Headers */,
+ 4ABB25A524F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.h in Headers */,
+ 4ABB268224F7F8D60061BF55 /* SDLBackgroundTaskManager.h in Headers */,
+ 4A8BD3BB24F98F89000945E3 /* SDLDynamicUpdateCapabilities.h in Headers */,
+ 4A8BD31224F938D6000945E3 /* SDLWeatherData.h in Headers */,
+ 4ABB24C024F592620061BF55 /* NSMutableDictionary+SafeRemove.h in Headers */,
+ 4ABB26FB24F7FB8F0061BF55 /* SDLButtonEventMode.h in Headers */,
+ 4ABB260924F7E9720061BF55 /* SDLStreamingAudioManagerType.h in Headers */,
+ 4ABB266924F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.h in Headers */,
+ 4ABB25C824F7E73C0061BF55 /* SDLSubscribeButtonManager.h in Headers */,
+ 4ABB2B4624F84EF50061BF55 /* SDLDIDResult.h in Headers */,
+ 4ABB275224F7FD9C0061BF55 /* SDLFuelCutoffStatus.h in Headers */,
+ 4ABB24BE24F592620061BF55 /* NSBundle+SDLBundle.h in Headers */,
+ 4ABB286124F828E00061BF55 /* SDLVehicleDataResultCode.h in Headers */,
+ 4ABB2BA024F850AE0061BF55 /* SDLLightCapabilities.h in Headers */,
+ 4ABB284124F828630061BF55 /* SDLTurnSignal.h in Headers */,
+ 4ABB299D24F845440061BF55 /* SDLScrollableMessage.h in Headers */,
+ 4ABB261A24F7F3770061BF55 /* SDLFocusableItemLocator.h in Headers */,
+ 4ABB257724F7E5E80061BF55 /* SDLDeleteChoicesOperation.h in Headers */,
+ 4ABB24C124F592620061BF55 /* NSMapTable+Subscripting.h in Headers */,
+ 4ABB2A2C24F847980061BF55 /* SDLChangeRegistrationResponse.h in Headers */,
+ 4ABB264024F7F45B0061BF55 /* SDLSystemCapabilityObserver.h in Headers */,
+ 4ABB27E524F800CA0061BF55 /* SDLPrimaryAudioSource.h in Headers */,
+ 4ABB259D24F7E6B90061BF55 /* SDLMenuConfiguration.h in Headers */,
+ 4ABB267E24F7F68F0061BF55 /* SDLCacheFileManager.h in Headers */,
+ 4ABB2A3124F847980061BF55 /* SDLDeleteFileResponse.h in Headers */,
+ 4ABB294C24F843440061BF55 /* SDLEndAudioPassThru.h in Headers */,
+ 4ABB2AD524F848130061BF55 /* SDLSubscribeVehicleDataResponse.h in Headers */,
+ 4ABB251224F7E3A30061BF55 /* SDLLifecycleConfiguration.h in Headers */,
+ 4ABB25F624F7E7EF0061BF55 /* SDLTouch.h in Headers */,
+ 4ABB2A8324F847DF0061BF55 /* SDLResetGlobalPropertiesResponse.h in Headers */,
+ 4ABB2BA124F850AE0061BF55 /* SDLLightControlData.h in Headers */,
+ 4ABB293424F842A00061BF55 /* SDLDeleteWindow.h in Headers */,
+ 4A8BD26924F933C7000945E3 /* SDLParameterPermissions.h in Headers */,
+ 4ABB287524F8294A0061BF55 /* SDLWarningLightStatus.h in Headers */,
+ 4ABB28F124F82AFD0061BF55 /* SDLRPCPayload.h in Headers */,
+ 4A8BD3B724F98F64000945E3 /* SDLOnUpdateFile.h in Headers */,
+ 4ABB273924F7FD1D0061BF55 /* SDLDisplayType.h in Headers */,
+ 4ABB2A7824F847D40061BF55 /* SDLPerformAppServiceInteractionResponse.h in Headers */,
+ 4ABB2A8524F847DF0061BF55 /* SDLRegisterAppInterfaceResponse.h in Headers */,
+ 4A8BD24924F93135000945E3 /* SDLMenuParams.h in Headers */,
+ 4ABB2A3A24F847980061BF55 /* SDLEndAudioPassThruResponse.h in Headers */,
+ 4A8BD28324F9343F000945E3 /* SDLRadioControlData.h in Headers */,
+ 4A8BD2FA24F93872000945E3 /* SDLVideoStreamingCapability.h in Headers */,
+ 4ABB270424F7FB8F0061BF55 /* SDLButtonPressMode.h in Headers */,
+ 4A8BD29B24F93534000945E3 /* SDLScreenParams.h in Headers */,
+ 4ABB28D024F82A6A0061BF55 /* SDLOnWayPointChange.h in Headers */,
+ 4A8BD26724F933C7000945E3 /* SDLNavigationCapability.h in Headers */,
+ 4A8BD34624F945CC000945E3 /* SDLControlFramePayloadEndService.h in Headers */,
5D9FDA921F2A7D3400A495C8 /* bson_object.h in Headers */,
- 5D61FD7B1A84238C00846EE7 /* SDLScrollableMessage.h in Headers */,
- DA9F7E931DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.h in Headers */,
- 5D61FD3D1A84238C00846EE7 /* SDLPrimaryAudioSource.h in Headers */,
- 5D76751322D9088F00E8D71A /* SDLMenuConfiguration.h in Headers */,
- DAC5725C1D10B81E0004288B /* SDLTouch.h in Headers */,
- 5D6F7A2E1BC5650B0070BF37 /* SDLLifecycleConfiguration.h in Headers */,
- 5D61FCCD1A84238C00846EE7 /* SDLImage.h in Headers */,
- 5D61FD481A84238C00846EE7 /* SDLProtocolMessage.h in Headers */,
- 88AAD4BC2211B76800F1E6D7 /* SDLMediaServiceManifest.h in Headers */,
- 5D1665CD1CF8CA8A00CC4CA1 /* SDLPermissionConstants.h in Headers */,
- 5D61FC8C1A84238C00846EE7 /* SDLDIDResult.h in Headers */,
- 5D61FD1F1A84238C00846EE7 /* SDLOnTouchEvent.h in Headers */,
- 5D61FCB31A84238C00846EE7 /* SDLGetDTCsResponse.h in Headers */,
- 5DAB5F562098E5D100A020C8 /* SDLProtocolConstants.h in Headers */,
- 5D61FC4D1A84238C00846EE7 /* SDLBitsPerSample.h in Headers */,
- 5D61FD9B1A84238C00846EE7 /* SDLSlider.h in Headers */,
- 5D61FD111A84238C00846EE7 /* SDLOnKeyboardInput.h in Headers */,
- 5D76E3211D39742300647CFA /* SDLViewControllerPresentable.h in Headers */,
- 5DFFB9151BD7C89700DB3F04 /* SDLConnectionManagerType.h in Headers */,
- 88C37F632204EBF000901DC6 /* SDLAppServiceData.h in Headers */,
- 5D61FC941A84238C00846EE7 /* SDLDriverDistractionState.h in Headers */,
- 5D61FD571A84238C00846EE7 /* SDLPutFileResponse.h in Headers */,
- 5D61FD411A84238C00846EE7 /* SDLPRNDL.h in Headers */,
- 5D61FDE51A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.h in Headers */,
- 5D61FCF81A84238C00846EE7 /* SDLMenuParams.h in Headers */,
- 5D61FD651A84238C00846EE7 /* SDLResetGlobalPropertiesResponse.h in Headers */,
- DA9F7E671DCBFAD400ACAE48 /* SDLOasisAddress.h in Headers */,
- 5D61FD611A84238C00846EE7 /* SDLRequestType.h in Headers */,
- DA9F7E8B1DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.h in Headers */,
- 8855F9E9220CBA9200A5C897 /* SDLGetFile.h in Headers */,
- 5D61FCEC1A84238C00846EE7 /* SDLListFiles.h in Headers */,
- 5D2F58081D0717D5001085CE /* SDLManagerDelegate.h in Headers */,
- 5D61FC881A84238C00846EE7 /* SDLDiagnosticMessage.h in Headers */,
- 5D0A738A203F24320001595D /* SDLSoftButtonObject.h in Headers */,
- 5D61FDB31A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.h in Headers */,
- 5D92935A20B33D4F00FCC775 /* SDLChoiceCell.h in Headers */,
- 5D61FC961A84238C00846EE7 /* SDLECallConfirmationStatus.h in Headers */,
- 5D4D67AC1D2ED37A00468B4A /* SDLNotificationDispatcher.h in Headers */,
- 5D61FDA51A84238C00846EE7 /* SDLSpeak.h in Headers */,
- 5D82042D1BCEC32F00D0A41B /* SDLFile.h in Headers */,
- 5D61FD1B1A84238C00846EE7 /* SDLOnSystemRequest.h in Headers */,
- 5D61FD2F1A84238C00846EE7 /* SDLPermissionStatus.h in Headers */,
- 5D3E487F1D6F88A30000BFEF /* SDLRPCNotificationNotification.h in Headers */,
- 5D4D67B01D2FE2F900468B4A /* SDLResponseDispatcher.h in Headers */,
- 5D61FCF21A84238C00846EE7 /* SDLLockScreenStatus.h in Headers */,
- 5D00AC771F15283E004000D9 /* SDLNavigationCapability.h in Headers */,
- 88EED83E1F33C5A400E6C42E /* SDLSendHapticData.h in Headers */,
- 5D61FCD31A84238C00846EE7 /* SDLImageResolution.h in Headers */,
- 8B7B319E1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.h in Headers */,
- 88E6F1A7220E1588006156F9 /* SDLMediaType.h in Headers */,
- 88A5E7FD220B642200495E8A /* SDLGetAppServiceDataResponse.h in Headers */,
- 5D61FC5D1A84238C00846EE7 /* SDLChangeRegistrationResponse.h in Headers */,
- 5D61FDCD1A84238C00846EE7 /* SDLTimerMode.h in Headers */,
- E9C32B961AB20BA200F283AF /* SDLTimer.h in Headers */,
- 88D5EB37220CD95000EC3782 /* SDLWeatherServiceData.h in Headers */,
- 1FF7DAB81F75B28E00B46C30 /* SDLFocusableItemHitTester.h in Headers */,
- 5D61FC3D1A84238C00846EE7 /* SDLAlertResponse.h in Headers */,
- 5D61FDAD1A84238C00846EE7 /* SDLSubscribeButton.h in Headers */,
- 5D61FCF41A84238C00846EE7 /* SDLMaintenanceModeStatus.h in Headers */,
- 5D61FC571A84238C00846EE7 /* SDLButtonPressMode.h in Headers */,
- 5D3E487B1D6F888E0000BFEF /* SDLRPCResponseNotification.h in Headers */,
- 88665B69220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.h in Headers */,
- 5D92934D20AF4BEF00FCC775 /* SDLRGBColor.h in Headers */,
- 5D61FC471A84238C00846EE7 /* SDLAudioStreamingState.h in Headers */,
- 5D61FE071A84238C00846EE7 /* SDLVehicleDataStatus.h in Headers */,
- 5D61FD2D1A84238C00846EE7 /* SDLPermissionItem.h in Headers */,
- 5D61FCD11A84238C00846EE7 /* SDLImageFieldName.h in Headers */,
- 88B3BF9820DA859800943565 /* SDLFuelType.h in Headers */,
- 4A99D00E247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.h in Headers */,
- 5DBF062D1E64A93A00A5CF03 /* SDLLogFilter.h in Headers */,
- 5DCF76F91ACDD7CD00BB647B /* SDLSendLocationResponse.h in Headers */,
- 5D61FD391A84238C00846EE7 /* SDLPrerecordedSpeech.h in Headers */,
- 5D61FC671A84238C00846EE7 /* SDLComponentVolumeStatus.h in Headers */,
- 5D61FE0F1A84238C00846EE7 /* SDLVrHelpItem.h in Headers */,
- 5D60088A1BE3ED540094A505 /* SDLStateMachine.h in Headers */,
- 5D61FC721A84238C00846EE7 /* SDLDeleteCommand.h in Headers */,
- 8881AFB82225E5EE00EA870B /* SDLGetCloudAppProperties.h in Headers */,
- 5D61FC821A84238C00846EE7 /* SDLDeviceInfo.h in Headers */,
- 5DD60D98221C5D7D00A82A4F /* SDLVersion.h in Headers */,
- 5D61FCA91A84238C00846EE7 /* SDLFileType.h in Headers */,
- 756C62762289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h in Headers */,
- 8877F5EE1F34A72200DC128A /* SDLSendHapticDataResponse.h in Headers */,
- DA8966F21E56973700413EAB /* SDLStreamingMediaManagerConstants.h in Headers */,
- 883C22C8222ED84D00939C4C /* SDLRPCFunctionNames.h in Headers */,
- 5DD67CB81E661C4A009CD394 /* SDLLogTargetFile.h in Headers */,
- 5D61FD591A84238C00846EE7 /* SDLReadDID.h in Headers */,
- 5D82041A1BCD80BA00D0A41B /* SDLLockScreenConfiguration.h in Headers */,
- 880E35B52088F75A00181259 /* SDLSystemCapabilityManager.h in Headers */,
- 5D61FC611A84238C00846EE7 /* SDLChoice.h in Headers */,
- 5D92937420B5EEA200FCC775 /* SDLPreloadChoicesOperation.h in Headers */,
- 00E22CED22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h in Headers */,
- 5D7F87F31CE3C29E002DD7C4 /* SDLFileWrapper.h in Headers */,
- 5D61FC7C1A84238C00846EE7 /* SDLDeleteInteractionChoiceSetResponse.h in Headers */,
- 5D61FDB91A84238C00846EE7 /* SDLSyncPDataResponse.h in Headers */,
- DAC572631D10C5020004288B /* SDLPinchGesture.h in Headers */,
- 5D61FC311A84238C00846EE7 /* SDLAddSubMenu.h in Headers */,
- 5D0C2A0420D947AB008B56CD /* SDLStreamingAudioLifecycleManager.h in Headers */,
- 5D61FD171A84238C00846EE7 /* SDLOnPermissionsChange.h in Headers */,
- 5D4631081F21261A0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.h in Headers */,
- 5D61FDD51A84238C00846EE7 /* SDLTouchEventCapabilities.h in Headers */,
- 5D61FD0B1A84238C00846EE7 /* SDLOnEncodedSyncPData.h in Headers */,
- 5D61FC631A84238C00846EE7 /* SDLClusterModeStatus.h in Headers */,
- 5D61FD371A84238C00846EE7 /* SDLPredefinedLayout.h in Headers */,
- 4A99D0122475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.h in Headers */,
- 008DB36D22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.h in Headers */,
- 5D61FDE31A84238C00846EE7 /* SDLUnregisterAppInterface.h in Headers */,
- 5D61FD331A84238C00846EE7 /* SDLPowerModeQualificationStatus.h in Headers */,
- 005DF3C522C59191006E01A9 /* SDLEncryptionLifecycleManager.h in Headers */,
- 5D92937020B5E0E500FCC775 /* SDLDeleteChoicesOperation.h in Headers */,
- 5DA150CD2271FE180032928D /* SDLSoftButtonReplaceOperation.h in Headers */,
- 5D61FE011A84238C00846EE7 /* SDLVehicleDataNotificationStatus.h in Headers */,
- 5D61FDC91A84238C00846EE7 /* SDLTextField.h in Headers */,
- 5D6F7A351BC5B9B60070BF37 /* SDLLockScreenViewController.h in Headers */,
- DA9F7E7F1DCC028B00ACAE48 /* SDLOnWayPointChange.h in Headers */,
- 5D61FCE41A84238C00846EE7 /* SDLKeyboardProperties.h in Headers */,
- 5D61FDED1A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.h in Headers */,
- 5D4631041F2120A30092EFDC /* SDLControlFramePayloadType.h in Headers */,
- EED5CA061F4D1E2300F04000 /* SDLRTPH264Packetizer.h in Headers */,
- 5D61FCCF1A84238C00846EE7 /* SDLImageField.h in Headers */,
- 5D535DC51B72473800CF7760 /* SDLGlobals.h in Headers */,
- 5D79A03B1CE36F030035797B /* SDLUploadFileOperation.h in Headers */,
- 8880D24722205B1B00964F6A /* SDLNavigationInstruction.h in Headers */,
- 88EF8EB722D8E02E00CB06C2 /* SDLCancelInteraction.h in Headers */,
- DA9F7E6F1DCBFFDB00ACAE48 /* SDLGetWayPoints.h in Headers */,
- 5D61FD231A84238C00846EE7 /* SDLParameterPermissions.h in Headers */,
- 883468F7234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.h in Headers */,
- 5D61FCB91A84238C00846EE7 /* SDLGlobalProperty.h in Headers */,
- 5D61FE051A84238C00846EE7 /* SDLVehicleDataResultCode.h in Headers */,
- 5D61FD2B1A84238C00846EE7 /* SDLPerformInteractionResponse.h in Headers */,
- 5D61FDA11A84238C00846EE7 /* SDLSoftButtonCapabilities.h in Headers */,
- 5D61FDB51A84238C00846EE7 /* SDLSyncMsgVersion.h in Headers */,
- 1E5AD08C1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.h in Headers */,
- 1E5AD0701F209C880029B8AF /* SDLModuleData.h in Headers */,
- 8815D0EF22330753000F24E6 /* SDLRPCRequestNotification.h in Headers */,
- 1E5AD0981F20C0FB0029B8AF /* SDLOnInteriorVehicleData.h in Headers */,
- 1E5AD0641F207DD50029B8AF /* SDLTemperature.h in Headers */,
- 1E5AD0901F20BE820029B8AF /* SDLSetInteriorVehicleData.h in Headers */,
- 88A5E7F7220B5BBC00495E8A /* SDLGetAppServiceData.h in Headers */,
- 1E5AD0441F1F5A1F0029B8AF /* SDLRadioControlCapabilities.h in Headers */,
- 88F65136220C74FD00CAF321 /* SDLWeatherData.h in Headers */,
- 7538764F22D8CEDB00FE8484 /* SDLShowAppMenu.h in Headers */,
- 1E5AD0841F20B9290029B8AF /* SDLButtonPressResponse.h in Headers */,
- 1E5AD0681F2080B50029B8AF /* SDLRadioControlData.h in Headers */,
- 1E5AD0481F1F773E0029B8AF /* SDLModuleType.h in Headers */,
- 88B58DC622204AF10011B063 /* SDLNavigationAction.h in Headers */,
- 1E5AD06C1F208BAB0029B8AF /* SDLClimateControlData.h in Headers */,
- 1E5AD0381F1F4E390029B8AF /* SDLClimateControlCapabilities.h in Headers */,
- 5D0C29FC20D93D8C008B56CD /* SDLVideoStreamingState.h in Headers */,
- 1E5AD0501F1F7BF10029B8AF /* SDLRadioBand.h in Headers */,
- 1E5AD0401F1F58480029B8AF /* SDLVentilationMode.h in Headers */,
- 1E5AD0941F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.h in Headers */,
- 1E5AD0881F20B9AA0029B8AF /* SDLGetInteriorVehicleData.h in Headers */,
- 1E5AD04C1F1F79640029B8AF /* SDLDefrostZone.h in Headers */,
- 1E5AD0601F207AB10029B8AF /* SDLRadioState.h in Headers */,
- 1E5AD0801F20B73E0029B8AF /* SDLButtonPress.h in Headers */,
- 106187BA24AA76550045C4EC /* SDLRPCPermissionStatus.h in Headers */,
- 884554AC222453A800BAFB6C /* SDLNavigationServiceManifest.h in Headers */,
- 8816772C222097C3001FACFF /* SDLNavigationServiceData.h in Headers */,
- 1E5AD05C1F2064A80029B8AF /* SDLRDSData.h in Headers */,
- 1E5AD0341F1F3AA30029B8AF /* SDLRemoteControlCapabilities.h in Headers */,
- 5DA102A41D4122C700C15826 /* NSMutableDictionary+SafeRemove.h in Headers */,
- 5DBF062A1E64A92C00A5CF03 /* SDLLogTarget.h in Headers */,
- 5DA49CE51F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.h in Headers */,
- 0055412A22D5DC0B003194D3 /* SDLGrid.h in Headers */,
- 5D61FE031A84238C00846EE7 /* SDLVehicleDataResult.h in Headers */,
- 5D61FD911A84238C00846EE7 /* SDLShowConstantTBT.h in Headers */,
- 5D92937C20B70A3E00FCC775 /* SDLPresentKeyboardOperation.h in Headers */,
- 5D61FC331A84238C00846EE7 /* SDLAddSubMenuResponse.h in Headers */,
- 4A3BA4E724901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.h in Headers */,
- 5D61FD5D1A84238C00846EE7 /* SDLRegisterAppInterface.h in Headers */,
- 5D61FC9A1A84238C00846EE7 /* SDLEmergencyEvent.h in Headers */,
- 5D61FC651A84238C00846EE7 /* SDLCompassDirection.h in Headers */,
- 5D61FC8E1A84238C00846EE7 /* SDLDimension.h in Headers */,
- 5D61FD6B1A84238C00846EE7 /* SDLRPCMessageType.h in Headers */,
- 5D61FC3F1A84238C00846EE7 /* SDLAmbientLightStatus.h in Headers */,
- 5DE372A11ACB2ED300849FAA /* SDLHMICapabilities.h in Headers */,
- 88B58DBA222040FF0011B063 /* SDLDirection.h in Headers */,
- E9C32B9C1AB20C5900F283AF /* EAAccessory+SDLProtocols.h in Headers */,
- 5D61FE0B1A84238C00846EE7 /* SDLVehicleType.h in Headers */,
- 5D07C0312044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.h in Headers */,
- 5D61FCC31A84238C00846EE7 /* SDLHMIPermissions.h in Headers */,
- 5D61FE131A84238C00846EE7 /* SDLWiperStatus.h in Headers */,
- 5D07C02D2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.h in Headers */,
- 88EEC5BB220A327B005AA2F9 /* SDLPublishAppServiceResponse.h in Headers */,
- 5D16545A1D3E7A1600554D93 /* SDLLifecycleManager.h in Headers */,
- 5D61FCBD1A84238C00846EE7 /* SDLHeadLampStatus.h in Headers */,
- 5D61FDC31A84238C00846EE7 /* SDLTBTState.h in Headers */,
- 5D61FD951A84238C00846EE7 /* SDLShowResponse.h in Headers */,
- 5D61FCA31A84238C00846EE7 /* SDLEndAudioPassThru.h in Headers */,
- 88A795D22106787400056542 /* SDLStaticIconName.h in Headers */,
- 2B233530232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.h in Headers */,
- 5D61FCB11A84238C00846EE7 /* SDLGetDTCs.h in Headers */,
- 5D61FDFF1A84238C00846EE7 /* SDLVehicleDataEventStatus.h in Headers */,
- 5D61FC5B1A84238C00846EE7 /* SDLChangeRegistration.h in Headers */,
- 5D61FD5B1A84238C00846EE7 /* SDLReadDIDResponse.h in Headers */,
- 5D61FDEF1A84238C00846EE7 /* SDLUpdateMode.h in Headers */,
- EED5CA001F4D18DC00F04000 /* SDLRAWH264Packetizer.h in Headers */,
- 5D293AFE1FE078A9000CBD7E /* SDLCarWindowViewController.h in Headers */,
- 8818ADD82100FC18007D6F19 /* SDLTurnSignal.h in Headers */,
- 5D61FDDB1A84238C00846EE7 /* SDLTriggerSource.h in Headers */,
- 5D61FD8F1A84238C00846EE7 /* SDLShow.h in Headers */,
- 5D61FDDD1A84238C00846EE7 /* SDLTTSChunk.h in Headers */,
- 5D61FC371A84238C00846EE7 /* SDLAlert.h in Headers */,
- 5D61FCC11A84238C00846EE7 /* SDLHMILevel.h in Headers */,
- 8B9376D71F3349FC009605C4 /* SDLMetadataTags.h in Headers */,
- 5D61FD471A84238C00846EE7 /* SDLProtocolDelegate.h in Headers */,
- EE28F9E3209802A500B1B61D /* SDLStreamingProtocolDelegate.h in Headers */,
- 88BCEA922266250B00BB7E70 /* SDLIAPControlSession.h in Headers */,
- 5D61FCA01A84238C00846EE7 /* SDLEncodedSyncPDataResponse.h in Headers */,
- 5D61FD271A84238C00846EE7 /* SDLPerformAudioPassThruResponse.h in Headers */,
- 5D61FD251A84238C00846EE7 /* SDLPerformAudioPassThru.h in Headers */,
- 332A91501CED9CF10043824C /* SDLAppInfo.h in Headers */,
- 5D61FDA71A84238C00846EE7 /* SDLSpeakResponse.h in Headers */,
- 5D1665CB1CF8CA6700CC4CA1 /* NSNumber+NumberType.h in Headers */,
+ 4ABB26FC24F7FB8F0061BF55 /* SDLAudioStreamingIndicator.h in Headers */,
+ 4A8BD2A224F93534000945E3 /* SDLSeatControlData.h in Headers */,
+ 4ABB2B6724F84FE50061BF55 /* SDLEmergencyEvent.h in Headers */,
+ 4ABB287D24F8294A0061BF55 /* SDLWayPointType.h in Headers */,
+ 4ABB273F24F7FD1D0061BF55 /* SDLDimension.h in Headers */,
+ 4ABB2B5224F84EF50061BF55 /* SDLChoice.h in Headers */,
+ 4A8BD35024F945E8000945E3 /* SDLControlFramePayloadRPCStartService.h in Headers */,
+ 4ABB28E524F82A6A0061BF55 /* SDLOnDriverDistraction.h in Headers */,
+ 4ABB272524F7FCAE0061BF55 /* SDLDeliveryMode.h in Headers */,
+ 4ABB24F324F595120061BF55 /* SDLFile.h in Headers */,
+ 4ABB284224F828630061BF55 /* SDLTextFieldName.h in Headers */,
+ 4ABB2A3D24F847980061BF55 /* SDLEncodedSyncPDataResponse.h in Headers */,
+ 4ABB24C924F593090061BF55 /* SDLStreamingProtocolDelegate.h in Headers */,
+ 4ABB275F24F7FE1F0061BF55 /* SDLFuelType.h in Headers */,
+ 4A8BD3A024F9474B000945E3 /* SDLIAPDataSessionDelegate.h in Headers */,
+ 4A8BD2F724F93872000945E3 /* SDLVrHelpItem.h in Headers */,
+ 4ABB2A0024F8477F0061BF55 /* SDLAddCommandResponse.h in Headers */,
+ 4ABB291124F842160061BF55 /* SDLChangeRegistration.h in Headers */,
+ 4ABB25C924F7E73C0061BF55 /* SDLSubscribeButtonObserver.h in Headers */,
+ 4A8BD35A24F94603000945E3 /* SDLControlFramePayloadType.h in Headers */,
+ 4A8BD24D24F93135000945E3 /* SDLMsgVersion.h in Headers */,
+ 4ABB271724F7FC4E0061BF55 /* SDLCharacterSet.h in Headers */,
+ 4ABB24BA24F592620061BF55 /* NSMutableArray+Safe.h in Headers */,
+ 4ABB25E024F7E7980061BF55 /* SDLStreamingMediaConfiguration.h in Headers */,
+ 4A8BD2FE24F938A4000945E3 /* SDLVehicleType.h in Headers */,
+ 4ABB282B24F824E70061BF55 /* SDLTBTState.h in Headers */,
+ 4ABB26D724F7FAFD0061BF55 /* SDLRPCMessage.h in Headers */,
+ 4A8BD24A24F93135000945E3 /* SDLMyKey.h in Headers */,
+ 4ABB24F924F5959E0061BF55 /* SDLAsynchronousOperation.h in Headers */,
+ 4ABB29B324F845DB0061BF55 /* SDLShow.h in Headers */,
+ 4ABB25B424F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.h in Headers */,
+ 4ABB269C24F7F9710061BF55 /* SDLRPCParameterNames.h in Headers */,
+ 4ABB296324F844020061BF55 /* SDLGetSystemCapability.h in Headers */,
+ 4ABB280C24F824600061BF55 /* SDLSoftButtonType.h in Headers */,
+ 4A8BD2DE24F93803000945E3 /* SDLTemplateColorScheme.h in Headers */,
+ 4ABB250824F596920061BF55 /* SDLFileWrapper.h in Headers */,
+ 4ABB285C24F828E00061BF55 /* SDLVehicleDataEventStatus.h in Headers */,
+ 4ABB254324F7E48D0061BF55 /* SDLLockScreenPresenter.h in Headers */,
+ 4ABB26D624F7FAFD0061BF55 /* SDLRPCNotification.h in Headers */,
+ 4ABB291224F842160061BF55 /* SDLCancelInteraction.h in Headers */,
+ 4ABB297624F844D30061BF55 /* SDLPerformInteraction.h in Headers */,
+ 4ABB25EA24F7E7C20061BF55 /* SDLCarWindowViewController.h in Headers */,
+ 4A8BD2A124F93534000945E3 /* SDLSeatMemoryAction.h in Headers */,
+ 4ABB27C524F8006D0061BF55 /* SDLNavigationAction.h in Headers */,
+ 4ABB27E224F800CA0061BF55 /* SDLPowerModeStatus.h in Headers */,
+ 4ABB254D24F7E4C60061BF55 /* SDLLockScreenViewController.h in Headers */,
+ 4ABB27EF24F801B50061BF55 /* SDLRadioState.h in Headers */,
+ 4A8BD26324F933C7000945E3 /* SDLNavigationServiceManifest.h in Headers */,
+ 4ABB284B24F828630061BF55 /* SDLTransmissionType.h in Headers */,
+ 4ABB258324F7E61E0061BF55 /* SDLChoiceSet.h in Headers */,
+ 4ABB275424F7FD9C0061BF55 /* SDLElectronicParkBrakeStatus.h in Headers */,
+ 4ABB2B5524F84EF50061BF55 /* SDLDriverDistractionCapability.h in Headers */,
+ 4ABB257624F7E5E80061BF55 /* SDLPreloadChoicesOperation.h in Headers */,
+ 4ABB28E724F82A6A0061BF55 /* SDLOnAudioPassThru.h in Headers */,
+ 4ABB25AD24F7E6E10061BF55 /* SDLMenuManager.h in Headers */,
+ 88EE1A452502DB3100FFEBA9 /* SDLLockScreenConstants.h in Headers */,
+ 4ABB254124F7E48D0061BF55 /* SDLLockScreenRootViewController.h in Headers */,
+ 4ABB2A7124F847D40061BF55 /* SDLPublishAppServiceResponse.h in Headers */,
+ 4A8BD2D724F93803000945E3 /* SDLTextField.h in Headers */,
+ 4ABB260D24F7F3400061BF55 /* SDLAudioFile.h in Headers */,
+ 4A8BD2B224F935BC000945E3 /* SDLStartTime.h in Headers */,
+ 4A8BD31F24F93964000945E3 /* SDLSeatLocationCapability.h in Headers */,
+ 4ABB28CA24F82A6A0061BF55 /* SDLOnSystemRequest.h in Headers */,
+ 4ABB266F24F7F6350061BF55 /* NSMutableDictionary+Store.h in Headers */,
+ 4ABB257B24F7E5FF0061BF55 /* SDLPresentKeyboardOperation.h in Headers */,
+ 4A8BD38224F946D4000945E3 /* SDLTransportDelegate.h in Headers */,
+ 4ABB261C24F7F3770061BF55 /* SDLFocusableItemLocatorType.h in Headers */,
+ 4ABB274C24F7FD9C0061BF55 /* SDLFileType.h in Headers */,
+ 4ABB24ED24F594F30061BF55 /* SDLFileManagerConfiguration.h in Headers */,
+ 4A8BD3A924F948CF000945E3 /* SDLDeleteFileOperation.h in Headers */,
+ 4A8BD32D24F9431B000945E3 /* SDLV1ProtocolHeader.h in Headers */,
+ 4ABB275024F7FD9C0061BF55 /* SDLDriverDistractionState.h in Headers */,
+ 4ABB273824F7FD1D0061BF55 /* SDLDisplayMode.h in Headers */,
+ 4A8BD28C24F934F3000945E3 /* SDLRectangle.h in Headers */,
+ 4ABB29C024F845DB0061BF55 /* SDLShowConstantTBT.h in Headers */,
+ 4ABB2B4D24F84EF50061BF55 /* SDLDisplayCapabilities.h in Headers */,
+ 4ABB2B6A24F84FE50061BF55 /* SDLEqualizerSettings.h in Headers */,
+ 4ABB284024F828630061BF55 /* SDLTPMS.h in Headers */,
+ 4ABB2B6F24F84FE50061BF55 /* SDLECallInfo.h in Headers */,
+ 4ABB26F924F7FB8F0061BF55 /* SDLAppHMIType.h in Headers */,
+ 4ABB287424F8294A0061BF55 /* SDLWiperStatus.h in Headers */,
+ 4A8BD2DC24F93803000945E3 /* SDLTouchCoord.h in Headers */,
+ 4ABB254924F7E49D0061BF55 /* SDLLockScreenStatusManager.h in Headers */,
+ 4ABB291924F842160061BF55 /* SDLDeleteCommand.h in Headers */,
+ 4ABB267624F7F6720061BF55 /* SDLObjectWithPriority.h in Headers */,
+ 4A8BD2F024F93872000945E3 /* SDLVideoStreamingFormat.h in Headers */,
+ 4ABB25AC24F7E6E10061BF55 /* SDLVoiceCommandManager.h in Headers */,
+ 4ABB2B0C24F84D950061BF55 /* SDLAppServicesCapabilities.h in Headers */,
+ 4ABB28D824F82A6A0061BF55 /* SDLOnRCStatus.h in Headers */,
+ 4A8BD33424F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.h in Headers */,
+ 4ABB2B1524F84D950061BF55 /* SDLAirbagStatus.h in Headers */,
+ 4A40254224FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.h in Headers */,
+ 4ABB2AB324F847F40061BF55 /* SDLSetGlobalPropertiesResponse.h in Headers */,
+ 4ABB258C24F7E65C0061BF55 /* SDLChoiceSetManager.h in Headers */,
+ 4A8BD2F424F93872000945E3 /* SDLTTSChunk.h in Headers */,
+ 4A40254424FFDA660080E159 /* SDLTextAndGraphicState.h in Headers */,
+ 4ABB2AAA24F847F40061BF55 /* SDLShowResponse.h in Headers */,
+ 4ABB2AAD24F847F40061BF55 /* SDLScrollableMessageResponse.h in Headers */,
+ 4ABB29EE24F847360061BF55 /* SDLUnsubscribeWayPoints.h in Headers */,
+ 4ABB2A2B24F847980061BF55 /* SDLCloseApplicationResponse.h in Headers */,
+ 4ABB2B4824F84EF50061BF55 /* SDLBeltStatus.h in Headers */,
+ 4ABB2B8524F8504A0061BF55 /* SDLHMICapabilities.h in Headers */,
+ 4ABB25E524F7E7A90061BF55 /* SDLAudioStreamManagerDelegate.h in Headers */,
+ 4ABB29EA24F847360061BF55 /* SDLUnsubscribeButton.h in Headers */,
+ 4ABB2B9D24F850AE0061BF55 /* SDLLightControlCapabilities.h in Headers */,
+ 4ABB298F24F845440061BF55 /* SDLSendHapticData.h in Headers */,
+ 4A8BD2BB24F935BC000945E3 /* SDLStationIDNumber.h in Headers */,
+ 4A8BD35824F945F6000945E3 /* SDLControlFramePayloadVideoStartService.h in Headers */,
+ 4ABB251624F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.h in Headers */,
+ 4ABB265B24F7F5C10061BF55 /* SDLRPCResponseNotification.h in Headers */,
+ 4ABB29D924F846880061BF55 /* SDLSubscribeWayPoints.h in Headers */,
+ 4ABB2BA324F850AE0061BF55 /* SDLImageField.h in Headers */,
+ 4ABB25F524F7E7EF0061BF55 /* SDLPinchGesture.h in Headers */,
+ 4ABB261424F7F3610061BF55 /* SDLCarWindow.h in Headers */,
+ 4ABB262B24F7F3C20061BF55 /* SDLVideoEncoderDelegate.h in Headers */,
+ 4ABB277A24F7FEBA0061BF55 /* SDLLightStatus.h in Headers */,
+ 4ABB263D24F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.h in Headers */,
+ 4ABB29B224F845DB0061BF55 /* SDLSetDisplayLayout.h in Headers */,
+ 4A8BD30D24F938D6000945E3 /* SDLWeatherServiceData.h in Headers */,
+ 4A8BD3A124F9474B000945E3 /* SDLIAPDataSession.h in Headers */,
+ 4ABB2B1824F84D950061BF55 /* SDLAppServiceData.h in Headers */,
+ 4ABB291524F842160061BF55 /* SDLCloseApplication.h in Headers */,
+ 4ABB284624F828630061BF55 /* SDLTouchType.h in Headers */,
+ 4ABB250F24F596C00061BF55 /* SDLFileManagerConstants.h in Headers */,
+ 4ABB2ACD24F848130061BF55 /* SDLSyncPDataResponse.h in Headers */,
+ 4ABB281424F824A50061BF55 /* SDLSupportedSeat.h in Headers */,
+ 4ABB252A24F7E41D0061BF55 /* SDLLifecycleProtocolHandler.h in Headers */,
+ 4ABB28CC24F82A6A0061BF55 /* SDLOnPermissionsChange.h in Headers */,
+ 4ABB295E24F844020061BF55 /* SDLGetVehicleData.h in Headers */,
+ 4ABB29B624F845DB0061BF55 /* SDLSetInteriorVehicleData.h in Headers */,
+ 4ABB279724F7FF0B0061BF55 /* SDLImageType.h in Headers */,
+ 4ABB2B1424F84D950061BF55 /* SDLAudioControlData.h in Headers */,
+ 4ABB281724F824A50061BF55 /* SDLSpeechCapabilities.h in Headers */,
+ 4A8BD29C24F93534000945E3 /* SDLSingleTireStatus.h in Headers */,
+ 4A8BD37324F9465E000945E3 /* SDLProtocol.h in Headers */,
+ 4ABB26AC24F7F9D70061BF55 /* SDLLogTargetFile.h in Headers */,
+ 4ABB284324F828630061BF55 /* SDLTriggerSource.h in Headers */,
+ 4ABB294D24F843440061BF55 /* SDLGetDTCs.h in Headers */,
+ 4ABB29D424F846880061BF55 /* SDLSubtleAlert.h in Headers */,
+ 4ABB271424F7FC4E0061BF55 /* SDLCarModeStatus.h in Headers */,
+ 4A8BD24224F93135000945E3 /* SDLMassageModeData.h in Headers */,
+ 4ABB262024F7F3870061BF55 /* CGPoint_Util.h in Headers */,
+ 4ABB27CB24F8006D0061BF55 /* SDLMenuLayout.h in Headers */,
+ 4ABB299724F845440061BF55 /* SDLResetGlobalProperties.h in Headers */,
+ 4A8BD30F24F938D6000945E3 /* SDLWindowTypeCapabilities.h in Headers */,
+ 4A8BD36424F9461A000945E3 /* SDLV2ProtocolMessage.h in Headers */,
+ 4ABB292C24F842A00061BF55 /* SDLDeleteInteractionChoiceSet.h in Headers */,
+ 4ABB293324F842A00061BF55 /* SDLDeleteSubMenu.h in Headers */,
+ 4ABB2B5424F84EF50061BF55 /* SDLClimateControlData.h in Headers */,
+ 4A8BD2B624F935BC000945E3 /* SDLSystemCapability.h in Headers */,
+ 4ABB2AA624F847F40061BF55 /* SDLSetInteriorVehicleDataResponse.h in Headers */,
+ 4ABB264F24F7F5720061BF55 /* SDLConfiguration.h in Headers */,
+ 4ABB252224F7E3FC0061BF55 /* SDLLifecycleSyncPDataHandler.h in Headers */,
+ 4ABB29FD24F8477F0061BF55 /* SDLAlertResponse.h in Headers */,
+ 4ABB280B24F824600061BF55 /* SDLSeatMemoryActionType.h in Headers */,
+ 4ABB297C24F844D30061BF55 /* SDLPutFile.h in Headers */,
+ 4A8BD32424F94302000945E3 /* SDLProtocolDelegate.h in Headers */,
+ 4ABB253B24F7E46A0061BF55 /* SDLLifecycleManager.h in Headers */,
+ 4A8BD26124F933C7000945E3 /* SDLNavigationInstruction.h in Headers */,
+ 4A8BD36E24F94636000945E3 /* SDLProtocolMessageAssembler.h in Headers */,
+ 4ABB28C024F82A6A0061BF55 /* SDLOnCommand.h in Headers */,
+ 4ABB26A824F7F9CF0061BF55 /* SDLLogTargetAppleSystemLog.h in Headers */,
+ 4ABB250524F596450061BF55 /* SDLListFilesOperation.h in Headers */,
+ 4ABB268F24F7F8FC0061BF55 /* SDLHexUtility.h in Headers */,
+ 4A8BD28124F9343F000945E3 /* SDLRemoteControlCapabilities.h in Headers */,
+ 4ABB26DD24F7FAFD0061BF55 /* SDLRPCResponse.h in Headers */,
+ 4ABB2AAE24F847F40061BF55 /* SDLSendLocationResponse.h in Headers */,
+ 4A8BD36B24F94636000945E3 /* SDLProtocolMessageDisassembler.h in Headers */,
+ 4A8BD3A624F9485B000945E3 /* SDLVideoStreamingState.h in Headers */,
+ 4ABB288824F82A340061BF55 /* SDLVideoStreamingCodec.h in Headers */,
+ 4ABB29D724F846880061BF55 /* SDLSubscribeButton.h in Headers */,
+ 4ABB2A5224F847B10061BF55 /* SDLGetFileResponse.h in Headers */,
+ 4A402561250134CB0080E159 /* SDLStabilityControlsStatus.h in Headers */,
+ 4ABB25F724F7E7EF0061BF55 /* SDLTouchManagerDelegate.h in Headers */,
+ 4A8BD34424F945CC000945E3 /* SDLControlFramePayloadNak.h in Headers */,
+ 4A8BD36624F9461A000945E3 /* SDLProtocolMessage.h in Headers */,
+ 88BB8054250136670025E9C8 /* SDLLockScreenStatusInfo.h in Headers */,
+ 4ABB27B324F7FFDA0061BF55 /* SDLMaintenanceModeStatus.h in Headers */,
+ 4A8BD28524F9343F000945E3 /* SDLPhoneCapability.h in Headers */,
+ 4ABB27F024F801B50061BF55 /* SDLPRNDL.h in Headers */,
+ 4ABB259924F7E6A60061BF55 /* SDLMenuManagerConstants.h in Headers */,
+ 4ABB2AEE24F848270061BF55 /* SDLUnregisterAppInterfaceResponse.h in Headers */,
+ 4A8BD2D524F93803000945E3 /* SDLTouchEventCapabilities.h in Headers */,
+ 4ABB2A5124F847B10061BF55 /* SDLGetVehicleDataResponse.h in Headers */,
+ 4ABB26DC24F7FAFD0061BF55 /* SDLRPCStruct.h in Headers */,
+ 4ABB2A3824F847980061BF55 /* SDLDeleteWindowResponse.h in Headers */,
+ 4ABB296524F844020061BF55 /* SDLListFiles.h in Headers */,
+ 4ABB281824F824A50061BF55 /* SDLStaticIconName.h in Headers */,
+ 4ABB290524F82BE90061BF55 /* SDLAlert.h in Headers */,
+ 4ABB26BA24F7FA1C0061BF55 /* SDLLogConstants.h in Headers */,
+ 4ABB28DB24F82A6A0061BF55 /* SDLOnSystemCapabilityUpdated.h in Headers */,
+ 4ABB269324F7F9060061BF55 /* SDLTimer.h in Headers */,
+ 4A8BD2F924F93872000945E3 /* SDLVehicleDataType.h in Headers */,
+ 4ABB279924F7FF0B0061BF55 /* SDLLanguage.h in Headers */,
+ 4ABB285F24F828E00061BF55 /* SDLVehicleDataActiveStatus.h in Headers */,
+ 4ABB267A24F7F6840061BF55 /* SDLIconArchiveFile.h in Headers */,
+ 4ABB28EA24F82A6A0061BF55 /* SDLOnAppInterfaceUnregistered.h in Headers */,
+ 4ABB268A24F7F8F00061BF55 /* SDLGlobals.h in Headers */,
+ 4ABB299C24F845440061BF55 /* SDLSetCloudAppProperties.h in Headers */,
+ 4A8BD27D24F9343F000945E3 /* SDLPresetBankCapabilities.h in Headers */,
+ 4ABB282924F824E70061BF55 /* SDLSystemAction.h in Headers */,
+ 4ABB277424F7FE910061BF55 /* SDLLightName.h in Headers */,
+ 4ABB2A5D24F847B10061BF55 /* SDLGetAppServiceDataResponse.h in Headers */,
+ 4ABB286324F828E00061BF55 /* SDLUpdateMode.h in Headers */,
+ 4ABB271924F7FC4E0061BF55 /* SDLCapacityUnit.h in Headers */,
+ 4ABB298E24F845440061BF55 /* SDLReleaseInteriorVehicleDataModule.h in Headers */,
+ 4A8BD39124F94731000945E3 /* SDLIAPConstants.h in Headers */,
+ 4ABB2B1D24F84D950061BF55 /* SDLAppServiceRecord.h in Headers */,
+ 4ABB2A7924F847D40061BF55 /* SDLPerformInteractionResponse.h in Headers */,
+ 4ABB259324F7E6820061BF55 /* SDLVoiceCommand.h in Headers */,
+ 4ABB29D524F846880061BF55 /* SDLSyncPData.h in Headers */,
+ 4ABB276A24F7FE480061BF55 /* SDLHybridAppPreference.h in Headers */,
+ 4A8BD37A24F9468B000945E3 /* SDLProtocolConstants.h in Headers */,
+ 4ABB2B0F24F84D950061BF55 /* SDLAppInfo.h in Headers */,
+ 4ABB2AB124F847F40061BF55 /* SDLSetDisplayLayoutResponse.h in Headers */,
+ 4ABB2A5E24F847B10061BF55 /* SDLGetDTCsResponse.h in Headers */,
+ 4A8BD39A24F94741000945E3 /* SDLIAPControlSessionDelegate.h in Headers */,
+ 4ABB29F124F847360061BF55 /* SDLUpdateTurnList.h in Headers */,
+ 4ABB261D24F7F3770061BF55 /* SDLFocusableItemHitTester.h in Headers */,
+ 4ABB27E324F800CA0061BF55 /* SDLPredefinedWindows.h in Headers */,
5D9FDA941F2A7D3400A495C8 /* bson_util.h in Headers */,
- 88A098B224770E7100A50005 /* SDLSubscribeButtonObserver.h in Headers */,
- 5D61FD771A84238C00846EE7 /* SDLSamplingRate.h in Headers */,
- 5DF40B22208E761A00DD6FDA /* SDLVoiceCommandManager.h in Headers */,
- 001A08B52321ADD30078A31E /* SDLServiceEncryptionDelegate.h in Headers */,
- 5D61FCBB1A84238C00846EE7 /* SDLGPSData.h in Headers */,
- 5D61FDA31A84238C00846EE7 /* SDLSoftButtonType.h in Headers */,
- 5D61FC431A84238C00846EE7 /* SDLAppInterfaceUnregisteredReason.h in Headers */,
+ 4ABB2A2A24F847980061BF55 /* SDLDeleteSubMenuResponse.h in Headers */,
+ 4ABB295024F843440061BF55 /* SDLGetInteriorVehicleData.h in Headers */,
+ 4ABB265724F7F5B40061BF55 /* SDLRPCNotificationNotification.h in Headers */,
+ 4ABB27FB24F823F20061BF55 /* SDLRPCMessageType.h in Headers */,
+ 4ABB263424F7F4300061BF55 /* SDLRTPH264Packetizer.h in Headers */,
+ 4A8BD24624F93135000945E3 /* SDLLocationDetails.h in Headers */,
+ 4A8BD25F24F933C7000945E3 /* SDLNavigationServiceData.h in Headers */,
+ 4ABB299124F845440061BF55 /* SDLSendLocation.h in Headers */,
+ 4ABB2A8724F847DF0061BF55 /* SDLReadDIDResponse.h in Headers */,
+ 4A8BD3D024FE7CF1000945E3 /* SDLPermissionManager.h in Headers */,
+ 4ABB2A8824F847DF0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.h in Headers */,
+ 4ABB288C24F82A340061BF55 /* SDLVideoStreamingProtocol.h in Headers */,
+ 4A8BD2B424F935BC000945E3 /* SDLSISData.h in Headers */,
5D61FA211A84237100846EE7 /* SmartDeviceLink.h in Headers */,
- 5D61FD711A84238C00846EE7 /* SDLRPCRequest.h in Headers */,
- 5D61FD6D1A84238C00846EE7 /* SDLRPCNotification.h in Headers */,
- 5D0A7374203F0C730001595D /* SDLTextAndGraphicManager.h in Headers */,
- 5D61FD691A84238C00846EE7 /* SDLRPCMessage.h in Headers */,
- 5D61FCA71A84238C00846EE7 /* SDLEnum.h in Headers */,
- 5D8B174F1AC9D266006A6E1C /* SDLDialNumber.h in Headers */,
- 5D4631101F2135850092EFDC /* SDLControlFramePayloadConstants.h in Headers */,
- 5D7F87EF1CE3C294002DD7C4 /* SDLFileManagerConstants.h in Headers */,
- 5D61FCAD1A84238C00846EE7 /* SDLFunctionID.h in Headers */,
- DA9F7E831DCC047200ACAE48 /* SDLWayPointType.h in Headers */,
- 5D61FDF51A84238C00846EE7 /* SDLV1ProtocolHeader.h in Headers */,
- 752ECDB6228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h in Headers */,
- 5D92936320B3551600FCC775 /* SDLKeyboardDelegate.h in Headers */,
- 5D92936820B3601700FCC775 /* SDLChoiceSetManager.h in Headers */,
- 5DBF06351E64A9FE00A5CF03 /* SDLLogConstants.h in Headers */,
- 75FF2E3B22E0DD5400D0C13B /* SDLMsgVersion.h in Headers */,
- DAC572671D10C5640004288B /* CGPoint_Util.h in Headers */,
- 5D61FDF91A84238C00846EE7 /* SDLV2ProtocolHeader.h in Headers */,
- 884E702B21FBB151008D53BA /* SDLAppServiceRecord.h in Headers */,
- 5DBF06231E64A83F00A5CF03 /* SDLLogManager.h in Headers */,
- 5D82041E1BCD8E6100D0A41B /* SDLConfiguration.h in Headers */,
- 5D61FD4A1A84238C00846EE7 /* SDLProtocolMessageAssembler.h in Headers */,
- 5D61FD4C1A84238C00846EE7 /* SDLProtocolMessageDisassembler.h in Headers */,
- 5D4631141F2136B60092EFDC /* SDLControlFramePayloadNak.h in Headers */,
- 5D61FD4E1A84238C00846EE7 /* SDLProtocolReceivedMessageRouter.h in Headers */,
- 97E26DEC1E807AD70074A3C7 /* SDLMutableDataQueue.h in Headers */,
- 5D61FDF71A84238C00846EE7 /* SDLV1ProtocolMessage.h in Headers */,
- 5D61FDFB1A84238C00846EE7 /* SDLV2ProtocolMessage.h in Headers */,
- 5D339CEA207C066E000CC364 /* SDLMenuCell.h in Headers */,
- 5DBF06311E64A9C600A5CF03 /* SDLLogModel.h in Headers */,
- 5D7F87EB1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.h in Headers */,
- 5D61FCFC1A84238C00846EE7 /* SDLRPCParameterNames.h in Headers */,
- DA9F7E8F1DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.h in Headers */,
- 5D61FCFD1A84238C00846EE7 /* SDLObjectWithPriority.h in Headers */,
- 4A3BA4E1248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.h in Headers */,
- 88EF8EBD22D8FE5800CB06C2 /* SDLCancelInteractionResponse.h in Headers */,
- 888DBAEF22D528DE002A0AE2 /* SDLCloseApplicationResponse.h in Headers */,
- DAC5726C1D11B4840004288B /* SDLTouchManagerDelegate.h in Headers */,
- 5D61FD3F1A84238C00846EE7 /* SDLPrioritizedObjectCollection.h in Headers */,
- 5D9FC29E1FD8813900ACA5C2 /* SDLAudioStreamManager.h in Headers */,
- 5DD67CB01E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.h in Headers */,
- 5D61FCBF1A84238C00846EE7 /* SDLHexUtility.h in Headers */,
- 888DBAEB22D52431002A0AE2 /* SDLCloseApplication.h in Headers */,
- 5D00AC6B1F141339004000D9 /* SDLSystemCapability.h in Headers */,
- 5DCD7AE01FCCA8D200A0FC7F /* SDLCarWindow.h in Headers */,
- 88F89103221DE29A00E056AD /* SDLAsynchronousRPCOperation.h in Headers */,
- 5D61FD6F1A84238C00846EE7 /* SDLRPCPayload.h in Headers */,
- 5D339CF3207C0ACE000CC364 /* SDLMenuManager.h in Headers */,
- 5D61FCF01A84238C00846EE7 /* SDLLockScreenStatusManager.h in Headers */,
+ 4ABB253624F7E4540061BF55 /* SDLSequentialRPCRequestOperation.h in Headers */,
+ 4ABB283024F824E70061BF55 /* SDLSystemCapabilityType.h in Headers */,
+ 4ABB2AD124F848130061BF55 /* SDLSubscribeWayPointsResponse.h in Headers */,
+ 4ABB24D224F593E00061BF55 /* SDLNotificationConstants.h in Headers */,
+ 4ABB29EC24F847360061BF55 /* SDLUnsubscribeVehicleData.h in Headers */,
+ 4A8BD31524F938D6000945E3 /* SDLWeatherServiceManifest.h in Headers */,
+ 4ABB295524F843440061BF55 /* SDLGetCloudAppProperties.h in Headers */,
+ 4ABB2B8B24F8504A0061BF55 /* SDLHeadLampStatus.h in Headers */,
+ 4ABB2B6624F84FE50061BF55 /* SDLGPSData.h in Headers */,
+ 4ABB26A024F7F98C0061BF55 /* SDLLogFileModuleMap.h in Headers */,
+ 4ABB26BF24F7FA1C0061BF55 /* SDLLogFilter.h in Headers */,
+ 4ABB2B4B24F84EF50061BF55 /* SDLDateTime.h in Headers */,
+ 4ABB2B4224F84EF50061BF55 /* SDLBodyInformation.h in Headers */,
+ 4ABB28FD24F82BE90061BF55 /* SDLButtonPress.h in Headers */,
+ 4ABB28E624F82A6A0061BF55 /* SDLOnAppServiceData.h in Headers */,
+ 4ABB266224F7F6000061BF55 /* SDLResponseDispatcher.h in Headers */,
+ 4ABB2AB424F847F40061BF55 /* SDLSetMediaClockTimerResponse.h in Headers */,
+ 4ABB282E24F824E70061BF55 /* SDLTextAlignment.h in Headers */,
+ 4ABB2AD924F8481D0061BF55 /* SDLSystemRequestResponse.h in Headers */,
+ 4ABB2A5424F847B10061BF55 /* SDLGetSystemCapabilityResponse.h in Headers */,
+ 4ABB27AA24F7FFDA0061BF55 /* SDLMassageZone.h in Headers */,
+ 4A8BD38124F946D4000945E3 /* SDLTransportType.h in Headers */,
+ 4ABB25BC24F7E70E0061BF55 /* SDLSoftButtonObject.h in Headers */,
+ 4ABB256324F7E5AA0061BF55 /* SDLPermissionElement.h in Headers */,
+ 4ABB2AE624F848270061BF55 /* SDLUnsubscribeVehicleDataResponse.h in Headers */,
+ 4ABB258524F7E62D0061BF55 /* SDLChoiceSetDelegate.h in Headers */,
+ 4ABB2B8D24F8504A0061BF55 /* SDLHMISettingsControlData.h in Headers */,
+ 4ABB25F824F7E7EF0061BF55 /* SDLTouchManager.h in Headers */,
+ 4A8BD34F24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -7401,7 +7551,7 @@
};
5D61FA1B1A84237100846EE7 = {
CreatedOnToolsVersion = 6.1.1;
- LastSwiftMigration = 1150;
+ LastSwiftMigration = 1170;
};
5D61FA251A84237100846EE7 = {
CreatedOnToolsVersion = 6.1.1;
@@ -7518,7 +7668,7 @@
5D1FF2BF21304598000EB9B4 /* ConnectionAnimatedTransition.m in Sources */,
5D1FF2A721304531000EB9B4 /* Preferences.m in Sources */,
5D1FF2CC2130464E000EB9B4 /* main.m in Sources */,
- 889E7BB2249D0877002E4BE1 /* SubscribeButtonManager.m in Sources */,
+ 4A40255D250026830080E159 /* SubscribeButtonManager.m in Sources */,
5D1FF2C021304598000EB9B4 /* ConnectionTransitionContext.m in Sources */,
5D1FF2A221304515000EB9B4 /* ButtonManager.m in Sources */,
5D1FF2A021304515000EB9B4 /* AudioManager.m in Sources */,
@@ -7535,527 +7685,541 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 885468362225C1F800994D8D /* SDLCloudAppProperties.m in Sources */,
- 1E4920B31F6A6463008F2CC3 /* SDLOnInteriorVehicleData.m in Sources */,
- 1E4920B21F6A6455008F2CC3 /* SDLGetInteriorVehicleDataResponse.m in Sources */,
- 1EB59CB8202D9C8100343A61 /* SDLSeatMemoryAction.m in Sources */,
- 1E4920B11F6A6443008F2CC3 /* SDLRadioState.m in Sources */,
- 5D0C2A0120D9479B008B56CD /* SDLStreamingVideoLifecycleManager.m in Sources */,
- 5DA8A0EA1E955FE00039C50D /* SDLLogModel.m in Sources */,
- 5DA8A0E91E955F710039C50D /* SDLStreamingMediaManagerConstants.m in Sources */,
- 332A914F1CED9CC60043824C /* SDLAppInfo.m in Sources */,
- 1E5AD0491F1F773E0029B8AF /* SDLModuleType.m in Sources */,
- DA9F7E841DCC047200ACAE48 /* SDLWayPointType.m in Sources */,
- EE7B6123205BF6C800E0655B /* SDLControlFramePayloadRegisterSecondaryTransportNak.m in Sources */,
- 5D61FC561A84238C00846EE7 /* SDLButtonName.m in Sources */,
- 5D61FCC21A84238C00846EE7 /* SDLHMILevel.m in Sources */,
- 5D9FC2A71FD8815800ACA5C2 /* SDLPCMAudioConverter.m in Sources */,
- 5D61FDEC1A84238C00846EE7 /* SDLUnsubscribeVehicleData.m in Sources */,
- 5D61FDBE1A84238C00846EE7 /* SDLSystemContext.m in Sources */,
- 5D61FC441A84238C00846EE7 /* SDLAppInterfaceUnregisteredReason.m in Sources */,
- 5D0A7387203F24060001595D /* SDLSoftButtonState.m in Sources */,
- 5D61FDCA1A84238C00846EE7 /* SDLTextField.m in Sources */,
- DAA41D561DF66B2000BC7337 /* SDLH264VideoEncoder.m in Sources */,
- 5D61FC9D1A84238C00846EE7 /* SDLEmergencyEventType.m in Sources */,
- 5D61FCAC1A84238C00846EE7 /* SDLFuelCutoffStatus.m in Sources */,
- 5D61FC871A84238C00846EE7 /* SDLDeviceStatus.m in Sources */,
- 005DF3CB22C62E00006E01A9 /* SDLEncryptionManagerConstants.m in Sources */,
- 5D61FD561A84238C00846EE7 /* SDLPutFile.m in Sources */,
- 1EAA474E20356B2D000FE74B /* SDLDisplayMode.m in Sources */,
- 5D61FCE71A84238C00846EE7 /* SDLKeypressMode.m in Sources */,
- 5D9FC29F1FD8813900ACA5C2 /* SDLAudioStreamManager.m in Sources */,
- 5D7F87F41CE3C29E002DD7C4 /* SDLFileWrapper.m in Sources */,
- 5D61FD941A84238C00846EE7 /* SDLShowConstantTBTResponse.m in Sources */,
- 5D61FE0A1A84238C00846EE7 /* SDLVehicleDataType.m in Sources */,
- 5D293AFF1FE078A9000CBD7E /* SDLCarWindowViewController.m in Sources */,
- 5D61FD1A1A84238C00846EE7 /* SDLOnSyncPData.m in Sources */,
- 8B7B319F1F2F7CF700BDC38D /* SDLVideoStreamingProtocol.m in Sources */,
- 5D61FC461A84238C00846EE7 /* SDLAudioPassThruCapabilities.m in Sources */,
- 5D0C2A0520D947AB008B56CD /* SDLStreamingAudioLifecycleManager.m in Sources */,
- 5D61FD301A84238C00846EE7 /* SDLPermissionStatus.m in Sources */,
- 5D61FDEE1A84238C00846EE7 /* SDLUnsubscribeVehicleDataResponse.m in Sources */,
- 8B7B319B1F2F7B5700BDC38D /* SDLVideoStreamingCodec.m in Sources */,
- 5D535DC61B72473800CF7760 /* SDLGlobals.m in Sources */,
- 5D61FCAE1A84238C00846EE7 /* SDLFunctionID.m in Sources */,
- 5D61FC421A84238C00846EE7 /* SDLAppHMIType.m in Sources */,
- 5D61FD421A84238C00846EE7 /* SDLPRNDL.m in Sources */,
- E9C32B921AB20BA200F283AF /* SDLIAPSession.m in Sources */,
- 880245A520F79C3400ED195B /* SDLFileManagerConfiguration.m in Sources */,
- 5D61FD0C1A84238C00846EE7 /* SDLOnEncodedSyncPData.m in Sources */,
- 5D61FD0A1A84238C00846EE7 /* SDLOnDriverDistraction.m in Sources */,
- 5D61FCED1A84238C00846EE7 /* SDLListFiles.m in Sources */,
- DA9F7E801DCC028B00ACAE48 /* SDLOnWayPointChange.m in Sources */,
- 5D92935B20B33D4F00FCC775 /* SDLChoiceCell.m in Sources */,
- E4139D1E1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m in Sources */,
- 5D61FC6E1A84238C00846EE7 /* SDLCreateInteractionChoiceSetResponse.m in Sources */,
- 888DBAF022D528DE002A0AE2 /* SDLCloseApplicationResponse.m in Sources */,
- 5D61FD061A84238C00846EE7 /* SDLOnButtonPress.m in Sources */,
- 5D61FD5E1A84238C00846EE7 /* SDLRegisterAppInterface.m in Sources */,
- 5D61FCE11A84238C00846EE7 /* SDLKeyboardEvent.m in Sources */,
- 5D61FD491A84238C00846EE7 /* SDLProtocolMessage.m in Sources */,
- 5D61FCCE1A84238C00846EE7 /* SDLImage.m in Sources */,
- 5D61FD241A84238C00846EE7 /* SDLParameterPermissions.m in Sources */,
- 1E5AD0711F209C880029B8AF /* SDLModuleData.m in Sources */,
- 1EAA470C2032BAE5000FE74B /* SDLOnRCStatus.m in Sources */,
- 5D61FDD21A84238C00846EE7 /* SDLTouchCoord.m in Sources */,
- 5D61FCEF1A84238C00846EE7 /* SDLListFilesResponse.m in Sources */,
- 5D3E420B20EAAD6500D8C622 /* SDLTPMS.m in Sources */,
- 008DB36E22EA83E4003F458C /* SDLReleaseInteriorVehicleDataModuleResponse.m in Sources */,
- 5DD67CB11E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m in Sources */,
- 5D92935420B2F76500FCC775 /* SDLTemplateColorScheme.m in Sources */,
- 88D5EB38220CD95000EC3782 /* SDLWeatherServiceData.m in Sources */,
- 5D019277214994AC003500F6 /* NSMutableArray+Safe.m in Sources */,
- 5D61FD1C1A84238C00846EE7 /* SDLOnSystemRequest.m in Sources */,
- 5D61FC911A84238C00846EE7 /* SDLDisplayCapabilities.m in Sources */,
- 88C37F642204EBF000901DC6 /* SDLAppServiceData.m in Sources */,
- 88B58DC722204AF10011B063 /* SDLNavigationAction.m in Sources */,
- 8831FA4322022AB300B8FFB7 /* SDLAppServiceCapability.m in Sources */,
- 1EB59CC4202DB40400343A61 /* SDLSeatControlCapabilities.m in Sources */,
- 5D61FD261A84238C00846EE7 /* SDLPerformAudioPassThru.m in Sources */,
- 1EAA471E203410BB000FE74B /* SDLAudioControlCapabilities.m in Sources */,
- 88BCEA932266250B00BB7E70 /* SDLIAPControlSession.m in Sources */,
- 5D61FC971A84238C00846EE7 /* SDLECallConfirmationStatus.m in Sources */,
- 8816772D222097C3001FACFF /* SDLNavigationServiceData.m in Sources */,
- 1E5AD04D1F1F79640029B8AF /* SDLDefrostZone.m in Sources */,
- 5D61FC4A1A84238C00846EE7 /* SDLAudioType.m in Sources */,
- 5D61FDE61A84238C00846EE7 /* SDLUnregisterAppInterfaceResponse.m in Sources */,
- 5D61FC481A84238C00846EE7 /* SDLAudioStreamingState.m in Sources */,
- 5D61FCC81A84238C00846EE7 /* SDLIAPTransport.m in Sources */,
- 5D61FE101A84238C00846EE7 /* SDLVrHelpItem.m in Sources */,
- 5D07C0322044AD0C00D1ECDC /* SDLAsynchronousRPCRequestOperation.m in Sources */,
- 88A098AF2476F0C200A50005 /* SDLSubscribeButtonManager.m in Sources */,
- 8881AFBF2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.m in Sources */,
- 1E5AD0691F2080B50029B8AF /* SDLRadioControlData.m in Sources */,
- 888F86FE221DEE200052FE4C /* SDLAsynchronousRPCOperation.m in Sources */,
- 7538765422D8D95100FE8484 /* SDLShowAppMenuResponse.m in Sources */,
- 5D61FCC01A84238C00846EE7 /* SDLHexUtility.m in Sources */,
- 5DB9964F1F26886C002D8795 /* SDLControlFramePayloadEndService.m in Sources */,
- 5D61FD821A84238C00846EE7 /* SDLSetAppIconResponse.m in Sources */,
- 5D61FDF81A84238C00846EE7 /* SDLV1ProtocolMessage.m in Sources */,
- 5D61FDC81A84238C00846EE7 /* SDLTextAlignment.m in Sources */,
- 5D4631091F21261B0092EFDC /* SDLControlFramePayloadRPCStartServiceAck.m in Sources */,
- 5D82042E1BCEC32F00D0A41B /* SDLFile.m in Sources */,
- 4A99D00F247576B7009B43E6 /* SDLTextField+ScreenManagerExtensions.m in Sources */,
- 5DA3F3601BC448590026F2D0 /* SDLNotificationConstants.m in Sources */,
- 5D61FD5A1A84238C00846EE7 /* SDLReadDID.m in Sources */,
- 1EAA472E20344108000FE74B /* SDLLightStatus.m in Sources */,
- 1E5AD0351F1F3AA30029B8AF /* SDLRemoteControlCapabilities.m in Sources */,
- 5D61FC8F1A84238C00846EE7 /* SDLDimension.m in Sources */,
- 884554AD222453A800BAFB6C /* SDLNavigationServiceManifest.m in Sources */,
- 5D61FC9B1A84238C00846EE7 /* SDLEmergencyEvent.m in Sources */,
- 5D61FDFE1A84238C00846EE7 /* SDLVehicleDataActiveStatus.m in Sources */,
- 1E5AD0411F1F58480029B8AF /* SDLVentilationMode.m in Sources */,
- 4A3BA4E2248EB133003E56B8 /* SDLLifecycleSyncPDataHandler.m in Sources */,
- 5D61FCD01A84238C00846EE7 /* SDLImageField.m in Sources */,
- 5D0A738B203F24320001595D /* SDLSoftButtonObject.m in Sources */,
- 5D61FC3C1A84238C00846EE7 /* SDLAlertManeuverResponse.m in Sources */,
- DA9F7E741DCC004C00ACAE48 /* SDLGetWayPointsResponse.m in Sources */,
- 5D61FD4D1A84238C00846EE7 /* SDLProtocolMessageDisassembler.m in Sources */,
- 5D61FD4B1A84238C00846EE7 /* SDLProtocolMessageAssembler.m in Sources */,
- 5D61FCC41A84238C00846EE7 /* SDLHMIPermissions.m in Sources */,
- 5D61FE141A84238C00846EE7 /* SDLWiperStatus.m in Sources */,
- 5D61FC8B1A84238C00846EE7 /* SDLDiagnosticMessageResponse.m in Sources */,
- 5DBF063A1E64ABBE00A5CF03 /* SDLLogConfiguration.m in Sources */,
- 5D92937120B5E0E500FCC775 /* SDLDeleteChoicesOperation.m in Sources */,
- 8BA12B1222DCCE1F00371E82 /* SDLUnpublishAppService.m in Sources */,
- 1EAA475220356CD2000FE74B /* SDLDistanceUnit.m in Sources */,
- 5D61FD2E1A84238C00846EE7 /* SDLPermissionItem.m in Sources */,
- 5D61FD041A84238C00846EE7 /* SDLOnButtonEvent.m in Sources */,
- 5D61FD201A84238C00846EE7 /* SDLOnTouchEvent.m in Sources */,
- 5D92937920B6FB6200FCC775 /* SDLPresentChoiceSetOperation.m in Sources */,
- 8B7B31A71F2F875200BDC38D /* SDLVideoStreamingCapability.m in Sources */,
- 5DA3F35B1BC448480026F2D0 /* SDLError.m in Sources */,
- 884E702821FBAC5B008D53BA /* SDLServiceUpdateReason.m in Sources */,
- 5D61FD781A84238C00846EE7 /* SDLSamplingRate.m in Sources */,
- 1EAA472A2034388D000FE74B /* SDLAudioControlData.m in Sources */,
- 888DBAEC22D52431002A0AE2 /* SDLCloseApplication.m in Sources */,
- 5D61FC681A84238C00846EE7 /* SDLComponentVolumeStatus.m in Sources */,
- 5D61FDB61A84238C00846EE7 /* SDLSyncMsgVersion.m in Sources */,
- 5D61FC501A84238C00846EE7 /* SDLBodyInformation.m in Sources */,
- 88665B6A220B771A00D9DA77 /* SDLPerformAppServiceInteractionResponse.m in Sources */,
- 5D79A03C1CE36F030035797B /* SDLUploadFileOperation.m in Sources */,
- 5D61FD901A84238C00846EE7 /* SDLShow.m in Sources */,
- 5D8204271BCEA8A600D0A41B /* SDLPermissionManager.m in Sources */,
- 5D61FDB21A84238C00846EE7 /* SDLSubscribeVehicleData.m in Sources */,
- 5D61FC991A84238C00846EE7 /* SDLECallInfo.m in Sources */,
- 5D61FD601A84238C00846EE7 /* SDLRegisterAppInterfaceResponse.m in Sources */,
- 106982AB24AA3B4700B1F649 /* SDLRPCPermissionStatus.m in Sources */,
- 5DB996581F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.m in Sources */,
- DAC572621D10C5020004288B /* SDLPinchGesture.m in Sources */,
- 1EAA471A203406B2000FE74B /* SDLSISData.m in Sources */,
- 5D61FCF51A84238C00846EE7 /* SDLMaintenanceModeStatus.m in Sources */,
- 1EE48E911F2F0EE700B98D08 /* SDLTemperatureUnit.m in Sources */,
- 5D61FCD81A84238C00846EE7 /* SDLInteractionMode.m in Sources */,
- 5D61FCB01A84238C00846EE7 /* SDLGenericResponse.m in Sources */,
- 5D61FD681A84238C00846EE7 /* SDLResult.m in Sources */,
- 5D61FDE21A84238C00846EE7 /* SDLTurn.m in Sources */,
- 5D61FC5A1A84238C00846EE7 /* SDLCarModeStatus.m in Sources */,
- 5D82041B1BCD80BA00D0A41B /* SDLLockScreenConfiguration.m in Sources */,
- 0055412B22D5DC0B003194D3 /* SDLGrid.m in Sources */,
- 8815D0F122330781000F24E6 /* SDLRPCRequestNotification.m in Sources */,
- 5D3E48CC1D7722FE0000BFEF /* NSBundle+SDLBundle.m in Sources */,
- 005DF3C622C59191006E01A9 /* SDLEncryptionLifecycleManager.m in Sources */,
- 5D61FCBC1A84238C00846EE7 /* SDLGPSData.m in Sources */,
- 5D61FD341A84238C00846EE7 /* SDLPowerModeQualificationStatus.m in Sources */,
- 5D61FC891A84238C00846EE7 /* SDLDiagnosticMessage.m in Sources */,
- 5D61FD6E1A84238C00846EE7 /* SDLRPCNotification.m in Sources */,
- 5D8B17501AC9D266006A6E1C /* SDLDialNumber.m in Sources */,
- 5DBF06281E64A91D00A5CF03 /* SDLLogFileModule.m in Sources */,
- 88AF11DD220B6B3D00A59985 /* SDLPerformAppServiceInteraction.m in Sources */,
- 5D6F7A361BC5B9B60070BF37 /* SDLLockScreenViewController.m in Sources */,
- 5D61FDE81A84238C00846EE7 /* SDLUnsubscribeButton.m in Sources */,
- 5D61FCF71A84238C00846EE7 /* SDLMediaClockFormat.m in Sources */,
- 5D61FD8A1A84238C00846EE7 /* SDLSetGlobalPropertiesResponse.m in Sources */,
- 5D61FC4C1A84238C00846EE7 /* SDLBeltStatus.m in Sources */,
- DA9F7E8C1DCC04B000ACAE48 /* SDLSubscribeWayPointsResponse.m in Sources */,
- 4A3BA4ED24914801003E56B8 /* SDLLifecycleProtocolHandler.m in Sources */,
- 5D61FDA41A84238C00846EE7 /* SDLSoftButtonType.m in Sources */,
- 5D00AC6C1F141339004000D9 /* SDLSystemCapability.m in Sources */,
- 5D61FC521A84238C00846EE7 /* SDLButtonCapabilities.m in Sources */,
- 5D61FC791A84238C00846EE7 /* SDLDeleteFileResponse.m in Sources */,
- 5D3E48801D6F88A30000BFEF /* SDLRPCNotificationNotification.m in Sources */,
- DAC572581D1067270004288B /* SDLTouchManager.m in Sources */,
- 5D61FC641A84238C00846EE7 /* SDLClusterModeStatus.m in Sources */,
- 5DB9965D1F268F97002D8795 /* SDLControlFramePayloadVideoStartService.m in Sources */,
- 5D61FCF91A84238C00846EE7 /* SDLMenuParams.m in Sources */,
- 883468F8234BBBAF003F51E5 /* SDLStreamingVideoScaleManager.m in Sources */,
- 5D61FD7C1A84238C00846EE7 /* SDLScrollableMessage.m in Sources */,
- 5D4D67B11D2FE2F900468B4A /* SDLResponseDispatcher.m in Sources */,
- 5D61FD801A84238C00846EE7 /* SDLSetAppIcon.m in Sources */,
- 5D61FD3C1A84238C00846EE7 /* SDLPresetBankCapabilities.m in Sources */,
- 5D4631151F2136B60092EFDC /* SDLControlFramePayloadNak.m in Sources */,
- 5D61FDB81A84238C00846EE7 /* SDLSyncPData.m in Sources */,
- 880FE6282267AE5300723732 /* SDLIAPConstants.m in Sources */,
- 5D61FD221A84238C00846EE7 /* SDLOnVehicleData.m in Sources */,
- 5D61FCD41A84238C00846EE7 /* SDLImageResolution.m in Sources */,
- 5D61FDF41A84238C00846EE7 /* SDLUpdateTurnListResponse.m in Sources */,
- 5D61FCF31A84238C00846EE7 /* SDLLockScreenStatus.m in Sources */,
- 5D61FC731A84238C00846EE7 /* SDLDeleteCommand.m in Sources */,
- 5D61FD2A1A84238C00846EE7 /* SDLPerformInteraction.m in Sources */,
- 5D61FC541A84238C00846EE7 /* SDLButtonEventMode.m in Sources */,
- 008DB36622EA7F6F003F458C /* SDLGetInteriorVehicleDataConsentResponse.m in Sources */,
- 5D61FC8D1A84238C00846EE7 /* SDLDIDResult.m in Sources */,
- 5D61FC601A84238C00846EE7 /* SDLCharacterSet.m in Sources */,
- 5D07C02E2044AC9100D1ECDC /* SDLSequentialRPCRequestOperation.m in Sources */,
- 5DD67CB91E661C4A009CD394 /* SDLLogTargetFile.m in Sources */,
- 5D61FCBE1A84238C00846EE7 /* SDLHeadLampStatus.m in Sources */,
- 10893C1B2418188600BA347E /* SDLCacheFileManager.m in Sources */,
- 5D61FD921A84238C00846EE7 /* SDLShowConstantTBT.m in Sources */,
- 008DB36A22EA8261003F458C /* SDLReleaseInteriorVehicleDataModule.m in Sources */,
- 88E6F1A8220E1588006156F9 /* SDLMediaType.m in Sources */,
- 5D61FC4E1A84238C00846EE7 /* SDLBitsPerSample.m in Sources */,
- 880723EC23A2CFB4003D0489 /* SDLLockScreenRootViewController.m in Sources */,
- 5D00AC701F1511B9004000D9 /* SDLGetSystemCapability.m in Sources */,
- 5D61FDEA1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m in Sources */,
- 7538765022D8CEDB00FE8484 /* SDLShowAppMenu.m in Sources */,
- 1E5AD05D1F2064A80029B8AF /* SDLRDSData.m in Sources */,
- 5D61FCA61A84238C00846EE7 /* SDLEndAudioPassThruResponse.m in Sources */,
- 5D61FD281A84238C00846EE7 /* SDLPerformAudioPassThruResponse.m in Sources */,
- 1EB59CB0202D97AC00343A61 /* SDLMassageCushionFirmness.m in Sources */,
- 5D61FDCE1A84238C00846EE7 /* SDLTimerMode.m in Sources */,
- 5D61FD701A84238C00846EE7 /* SDLRPCPayload.m in Sources */,
- 5D61FD9C1A84238C00846EE7 /* SDLSlider.m in Sources */,
- 9FE2470A22D77A3600F8D2FC /* SDLDeleteWindow.m in Sources */,
- 5D0A7383203F23F30001595D /* SDLSoftButtonManager.m in Sources */,
- 5DCF76FA1ACDD7CD00BB647B /* SDLSendLocationResponse.m in Sources */,
- 88A098B324770E7100A50005 /* SDLSubscribeButtonObserver.m in Sources */,
+ 4ABB276D24F7FE480061BF55 /* SDLHMILevel.m in Sources */,
+ 4ABB293124F842A00061BF55 /* SDLDialNumber.m in Sources */,
+ 4ABB297A24F844D30061BF55 /* SDLReadDID.m in Sources */,
+ 4ABB29BD24F845DB0061BF55 /* SDLSetGlobalProperties.m in Sources */,
+ 4A8BD26624F933C7000945E3 /* SDLOasisAddress.m in Sources */,
+ 4ABB287B24F8294A0061BF55 /* SDLWayPointType.m in Sources */,
+ 4ABB274E24F7FD9C0061BF55 /* SDLFuelCutoffStatus.m in Sources */,
+ 4ABB255024F7E52B0061BF55 /* SDLLockScreenConfiguration.m in Sources */,
+ 4ABB290124F82BE90061BF55 /* SDLButtonPress.m in Sources */,
+ 4ABB271A24F7FC4E0061BF55 /* SDLCapacityUnit.m in Sources */,
+ 4ABB268724F7F8E20061BF55 /* SDLMutableDataQueue.m in Sources */,
+ 4ABB258D24F7E65C0061BF55 /* SDLChoiceSetManager.m in Sources */,
+ 4ABB291624F842160061BF55 /* SDLCloseApplication.m in Sources */,
+ 4ABB2B4F24F84EF50061BF55 /* SDLClimateControlData.m in Sources */,
+ 4ABB2A2824F847980061BF55 /* SDLDeleteCommandResponse.m in Sources */,
+ 4ABB2AD224F848130061BF55 /* SDLSubscribeWayPointsResponse.m in Sources */,
+ 4ABB286224F828E00061BF55 /* SDLVehicleDataResultCode.m in Sources */,
+ 4ABB2B8A24F8504A0061BF55 /* SDLHMISettingsControlCapabilities.m in Sources */,
+ 4ABB257A24F7E5FF0061BF55 /* SDLPresentKeyboardOperation.m in Sources */,
+ 4ABB27CA24F8006D0061BF55 /* SDLMediaType.m in Sources */,
+ 4ABB264524F7F5340061BF55 /* SDLSystemCapabilityManager.m in Sources */,
+ 4A8BD2B124F935BC000945E3 /* SDLSoftButtonCapabilities.m in Sources */,
+ 4ABB2A5524F847B10061BF55 /* SDLGetInteriorVehicleDataConsentResponse.m in Sources */,
+ 4ABB2AA924F847F40061BF55 /* SDLSetAppIconResponse.m in Sources */,
+ 4A8BD2D224F93803000945E3 /* SDLTemplateColorScheme.m in Sources */,
+ 4A8BD3C124F994D5000945E3 /* SDLFileManager.m in Sources */,
+ 4ABB25A324F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */,
+ 4A8BD30C24F938D6000945E3 /* SDLWeatherAlert.m in Sources */,
+ 4ABB250924F596920061BF55 /* SDLFileWrapper.m in Sources */,
+ 4ABB24E324F5948D0061BF55 /* SDLEncryptionConfiguration.m in Sources */,
+ 4ABB273D24F7FD1D0061BF55 /* SDLDimension.m in Sources */,
+ 4ABB267B24F7F6840061BF55 /* SDLIconArchiveFile.m in Sources */,
+ 4ABB2A2224F847980061BF55 /* SDLChangeRegistrationResponse.m in Sources */,
+ 4A8BD3A524F9485B000945E3 /* SDLVideoStreamingState.m in Sources */,
+ 4ABB285E24F828E00061BF55 /* SDLVehicleDataStatus.m in Sources */,
+ 4ABB291024F842160061BF55 /* SDLCreateInteractionChoiceSet.m in Sources */,
+ 4ABB251F24F7E3EC0061BF55 /* SDLLifecycleMobileHMIStateHandler.m in Sources */,
+ 4A8BD32124F93964000945E3 /* SDLSeatLocation.m in Sources */,
+ 4A8BD29F24F93534000945E3 /* SDLSeatMemoryAction.m in Sources */,
+ 4ABB2B5324F84EF50061BF55 /* SDLClimateControlCapabilities.m in Sources */,
+ 4ABB24BD24F592620061BF55 /* NSMutableDictionary+SafeRemove.m in Sources */,
+ 4ABB25B524F7E6F60061BF55 /* SDLSoftButtonReplaceOperation.m in Sources */,
+ 4ABB255C24F7E5880061BF55 /* SDLPermissionFilter.m in Sources */,
+ 4ABB27C624F8006D0061BF55 /* SDLModuleType.m in Sources */,
+ 4ABB25FD24F7E8E10061BF55 /* SDLStreamingVideoScaleManager.m in Sources */,
+ 4ABB26F724F7FB8F0061BF55 /* SDLAudioStreamingState.m in Sources */,
+ 4ABB265A24F7F5C10061BF55 /* SDLRPCResponseNotification.m in Sources */,
+ 4ABB2AB724F847F40061BF55 /* SDLSetGlobalPropertiesResponse.m in Sources */,
+ 4ABB2B0B24F84D950061BF55 /* SDLAppServiceData.m in Sources */,
+ 4ABB282C24F824E70061BF55 /* SDLTBTState.m in Sources */,
+ 4ABB27DF24F800CA0061BF55 /* SDLPowerModeQualificationStatus.m in Sources */,
+ 4ABB269D24F7F9710061BF55 /* SDLRPCParameterNames.m in Sources */,
+ 4A8BD34724F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.m in Sources */,
+ 4ABB2B1A24F84D950061BF55 /* SDLAppInfo.m in Sources */,
+ 4ABB28E224F82A6A0061BF55 /* SDLOnLanguageChange.m in Sources */,
+ 4ABB29DD24F846880061BF55 /* SDLSubscribeButton.m in Sources */,
+ 4ABB25F324F7E7EF0061BF55 /* SDLPinchGesture.m in Sources */,
+ 4A8BD39524F94731000945E3 /* SDLIAPConstants.m in Sources */,
+ 4ABB2B8C24F8504A0061BF55 /* SDLGrid.m in Sources */,
+ 4ABB299024F845440061BF55 /* SDLRegisterAppInterface.m in Sources */,
+ 4ABB28C424F82A6A0061BF55 /* SDLOnCommand.m in Sources */,
+ 4ABB273724F7FD1D0061BF55 /* SDLDisplayType.m in Sources */,
+ 4A8BD28E24F934F3000945E3 /* SDLRGBColor.m in Sources */,
+ 4A8BD23E24F93135000945E3 /* SDLMassageModeData.m in Sources */,
+ 4A8BD24E24F93135000945E3 /* SDLMediaServiceManifest.m in Sources */,
+ 4ABB2ACF24F848130061BF55 /* SDLSubtleAlertResponse.m in Sources */,
+ 4ABB253A24F7E46A0061BF55 /* SDLLifecycleManager.m in Sources */,
+ 4ABB2A7624F847D40061BF55 /* SDLPerformAppServiceInteractionResponse.m in Sources */,
+ 4ABB259724F7E6880061BF55 /* SDLMenuCell.m in Sources */,
+ 4ABB2B6E24F84FE50061BF55 /* SDLECallInfo.m in Sources */,
+ 4ABB29FC24F8477F0061BF55 /* SDLAlertResponse.m in Sources */,
+ 4ABB2AA424F847F40061BF55 /* SDLShowResponse.m in Sources */,
+ 4ABB278F24F7FF0B0061BF55 /* SDLKeyboardLayout.m in Sources */,
+ 4ABB25C124F7E7280061BF55 /* SDLSoftButtonManager.m in Sources */,
+ 4A8BD36D24F94636000945E3 /* SDLProtocolMessageAssembler.m in Sources */,
+ 4ABB2AAF24F847F40061BF55 /* SDLScrollableMessageResponse.m in Sources */,
+ 4ABB28F024F82AFD0061BF55 /* SDLRPCPayload.m in Sources */,
+ 4ABB2A5724F847B10061BF55 /* SDLGetFileResponse.m in Sources */,
+ 4ABB29FF24F8477F0061BF55 /* SDLAddSubMenuResponse.m in Sources */,
+ 4ABB2B0A24F84D950061BF55 /* SDLAudioControlCapabilities.m in Sources */,
+ 4ABB265624F7F5B40061BF55 /* SDLRPCNotificationNotification.m in Sources */,
+ 4ABB2B8424F8504A0061BF55 /* SDLHMISettingsControlData.m in Sources */,
+ 4ABB287624F8294A0061BF55 /* SDLVentilationMode.m in Sources */,
+ 4ABB25E724F7E7A90061BF55 /* SDLAudioStreamManager.m in Sources */,
+ 4ABB277B24F7FEBA0061BF55 /* SDLLightStatus.m in Sources */,
+ 4ABB2A7324F847D40061BF55 /* SDLPutFileResponse.m in Sources */,
+ 4A8BD38624F94702000945E3 /* SDLTCPTransport.m in Sources */,
+ 4ABB281624F824A50061BF55 /* SDLSpeechCapabilities.m in Sources */,
+ 4ABB291724F842160061BF55 /* SDLCancelInteraction.m in Sources */,
+ 4ABB279424F7FF0B0061BF55 /* SDLKeypressMode.m in Sources */,
+ 4A8BD34324F945CC000945E3 /* SDLControlFramePayloadEndService.m in Sources */,
+ 4A8BD26A24F933C7000945E3 /* SDLParameterPermissions.m in Sources */,
+ 4ABB25EB24F7E7C20061BF55 /* SDLCarWindowViewController.m in Sources */,
+ 4ABB284D24F828630061BF55 /* SDLTransmissionType.m in Sources */,
+ 4ABB24F424F595120061BF55 /* SDLFile.m in Sources */,
+ 4A8BD36324F9461A000945E3 /* SDLV1ProtocolMessage.m in Sources */,
+ 4ABB253324F7E43A0061BF55 /* SDLAsynchronousRPCRequestOperation.m in Sources */,
+ 4ABB2B1024F84D950061BF55 /* SDLAppServiceManifest.m in Sources */,
+ 4ABB24D324F593E00061BF55 /* SDLNotificationConstants.m in Sources */,
+ 4ABB277624F7FE910061BF55 /* SDLLightName.m in Sources */,
+ 4ABB26A924F7F9CF0061BF55 /* SDLLogTargetAppleSystemLog.m in Sources */,
+ 4ABB265324F7F58D0061BF55 /* SDLRPCRequestNotification.m in Sources */,
+ 4ABB28E124F82A6A0061BF55 /* SDLOnDriverDistraction.m in Sources */,
+ 4ABB27C324F8006D0061BF55 /* SDLMetadataType.m in Sources */,
+ 4ABB262524F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.m in Sources */,
+ 4ABB27DD24F800CA0061BF55 /* SDLPrimaryAudioSource.m in Sources */,
+ 4A8BD27F24F9343F000945E3 /* SDLRadioControlCapabilities.m in Sources */,
+ 4ABB29EF24F847360061BF55 /* SDLUnsubscribeButton.m in Sources */,
+ 4ABB24EC24F594F30061BF55 /* SDLFileManagerConfiguration.m in Sources */,
+ 4A8BD2D424F93803000945E3 /* SDLTouchCoord.m in Sources */,
+ 4ABB263B24F7F4470061BF55 /* SDLStreamingVideoLifecycleManager.m in Sources */,
+ 4ABB2B9E24F850AE0061BF55 /* SDLImage.m in Sources */,
+ 4A40254324FFDA660080E159 /* SDLTextAndGraphicUpdateOperation.m in Sources */,
+ 4ABB29C124F845DB0061BF55 /* SDLShow.m in Sources */,
+ 4ABB2BA524F850AE0061BF55 /* SDLLightControlData.m in Sources */,
+ 4ABB272724F7FCAE0061BF55 /* SDLDeliveryMode.m in Sources */,
+ 4ABB295F24F844020061BF55 /* SDLGetSystemCapability.m in Sources */,
+ 4ABB28CE24F82A6A0061BF55 /* SDLOnSubtleAlertPressed.m in Sources */,
+ 4ABB268B24F7F8F00061BF55 /* SDLGlobals.m in Sources */,
+ 4ABB275D24F7FE1F0061BF55 /* SDLGlobalProperty.m in Sources */,
+ 4ABB252324F7E3FC0061BF55 /* SDLLifecycleSyncPDataHandler.m in Sources */,
+ 4ABB287A24F8294A0061BF55 /* SDLVrCapabilities.m in Sources */,
+ 4ABB286824F828E00061BF55 /* SDLVehicleDataEventStatus.m in Sources */,
+ 4ABB253724F7E4540061BF55 /* SDLSequentialRPCRequestOperation.m in Sources */,
+ 4ABB25D524F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.m in Sources */,
+ 4ABB266324F7F6000061BF55 /* SDLResponseDispatcher.m in Sources */,
+ 4A402560250134CB0080E159 /* SDLStabilityControlsStatus.m in Sources */,
+ 4ABB291424F842160061BF55 /* SDLDeleteCommand.m in Sources */,
+ 4A8BD2B524F935BC000945E3 /* SDLStationIDNumber.m in Sources */,
+ 4ABB2A6524F847BB0061BF55 /* SDLListFilesResponse.m in Sources */,
+ 4ABB272324F7FCAE0061BF55 /* SDLComponentVolumeStatus.m in Sources */,
+ 4ABB28D624F82A6A0061BF55 /* SDLOnAudioPassThru.m in Sources */,
+ 4A8BD25224F93135000945E3 /* SDLKeyboardProperties.m in Sources */,
+ 4ABB2B1324F84D950061BF55 /* SDLAppServiceRecord.m in Sources */,
+ 4ABB290424F82BE90061BF55 /* SDLAlertManeuver.m in Sources */,
+ 4ABB27B224F7FFDA0061BF55 /* SDLMassageMode.m in Sources */,
+ 4ABB274F24F7FD9C0061BF55 /* SDLECallConfirmationStatus.m in Sources */,
+ 4ABB27AF24F7FFDA0061BF55 /* SDLMaintenanceModeStatus.m in Sources */,
+ 4ABB292D24F842A00061BF55 /* SDLDeleteWindow.m in Sources */,
+ 4ABB299A24F845440061BF55 /* SDLSendHapticData.m in Sources */,
+ 4ABB29DB24F846880061BF55 /* SDLUnregisterAppInterface.m in Sources */,
+ 4ABB270824F7FB8F0061BF55 /* SDLAppHMIType.m in Sources */,
+ 4ABB282A24F824E70061BF55 /* SDLSystemAction.m in Sources */,
+ 4ABB297824F844D30061BF55 /* SDLPublishAppService.m in Sources */,
+ 4ABB261024F7F3520061BF55 /* SDLPCMAudioConverter.m in Sources */,
+ 4ABB288A24F82A340061BF55 /* SDLVideoStreamingCodec.m in Sources */,
+ 4ABB27C924F8006D0061BF55 /* SDLMenuLayout.m in Sources */,
+ 4ABB2A5024F847B10061BF55 /* SDLGetInteriorVehicleDataResponse.m in Sources */,
+ 4A8BD23C24F93135000945E3 /* SDLMediaServiceData.m in Sources */,
+ 4ABB28DC24F82A6A0061BF55 /* SDLOnHashChange.m in Sources */,
+ 4A8BD26424F933C7000945E3 /* SDLNavigationServiceManifest.m in Sources */,
+ 4ABB29D824F846880061BF55 /* SDLSystemRequest.m in Sources */,
+ 4ABB271B24F7FC4E0061BF55 /* SDLCharacterSet.m in Sources */,
+ 4ABB26CB24F7FAAF0061BF55 /* SDLEnum.m in Sources */,
+ 4ABB28CF24F82A6A0061BF55 /* SDLOnSystemRequest.m in Sources */,
+ 4A8BD2BC24F935BC000945E3 /* SDLSISData.m in Sources */,
+ 4A8BD37924F9468B000945E3 /* SDLProtocolConstants.m in Sources */,
+ 4A8BD2BE24F935BC000945E3 /* SDLSystemCapability.m in Sources */,
+ 4A8BD24824F93135000945E3 /* SDLMassageCushionFirmness.m in Sources */,
+ 4ABB24DC24F594560061BF55 /* SDLEncryptionLifecycleManager.m in Sources */,
+ 4ABB275524F7FD9C0061BF55 /* SDLDriverDistractionState.m in Sources */,
+ 4ABB264124F7F45B0061BF55 /* SDLSystemCapabilityObserver.m in Sources */,
+ 4ABB25F924F7E7EF0061BF55 /* SDLTouchManager.m in Sources */,
+ 4ABB286024F828E00061BF55 /* SDLUpdateMode.m in Sources */,
+ 4A8BD23D24F93135000945E3 /* SDLMsgVersion.m in Sources */,
+ 4ABB29D624F846880061BF55 /* SDLSubtleAlert.m in Sources */,
+ 4A8BD24F24F93135000945E3 /* SDLMyKey.m in Sources */,
+ 4ABB286924F828E00061BF55 /* SDLVehicleDataActiveStatus.m in Sources */,
+ 4A8BD34224F945CC000945E3 /* SDLControlFramePayloadNak.m in Sources */,
+ 4A8BD36124F9461A000945E3 /* SDLProtocolMessage.m in Sources */,
+ 4ABB296024F844020061BF55 /* SDLListFiles.m in Sources */,
+ 4ABB295324F843440061BF55 /* SDLGetCloudAppProperties.m in Sources */,
+ 4ABB297224F844D30061BF55 /* SDLPerformInteraction.m in Sources */,
+ 4ABB27E024F800CA0061BF55 /* SDLPrerecordedSpeech.m in Sources */,
+ 4A8BD29E24F93534000945E3 /* SDLSeatControlCapabilities.m in Sources */,
+ 4ABB2AB224F847F40061BF55 /* SDLSendLocationResponse.m in Sources */,
+ 4ABB252724F7E40D0061BF55 /* SDLLifecycleSystemRequestHandler.m in Sources */,
+ 4ABB24BF24F592620061BF55 /* NSMapTable+Subscripting.m in Sources */,
+ 4ABB297524F844D30061BF55 /* SDLPerformAppServiceInteraction.m in Sources */,
+ 4ABB2AED24F848270061BF55 /* SDLUnsubscribeVehicleDataResponse.m in Sources */,
+ 4A8BD3D124FE7CF1000945E3 /* SDLPermissionManager.m in Sources */,
+ 4ABB27FC24F823F20061BF55 /* SDLRequestType.m in Sources */,
+ 4ABB260524F7E9650061BF55 /* SDLStreamingMediaManager.m in Sources */,
+ 4ABB27FE24F823F20061BF55 /* SDLSamplingRate.m in Sources */,
+ 4ABB2ABC24F847FC0061BF55 /* SDLSliderResponse.m in Sources */,
+ 4ABB294E24F843440061BF55 /* SDLGetInteriorVehicleData.m in Sources */,
+ 4ABB28DE24F82A6A0061BF55 /* SDLOnButtonPress.m in Sources */,
+ 4ABB28DF24F82A6A0061BF55 /* SDLOnAppServiceData.m in Sources */,
+ 4ABB292B24F842A00061BF55 /* SDLDeleteInteractionChoiceSet.m in Sources */,
+ 4ABB2B4124F84EF50061BF55 /* SDLDateTime.m in Sources */,
5D9FDA8F1F2A7D3400A495C8 /* bson_array.c in Sources */,
- 5D61FD661A84238C00846EE7 /* SDLResetGlobalPropertiesResponse.m in Sources */,
- 4A99D0132475773C009B43E6 /* SDLImageField+ScreenManagerExtensions.m in Sources */,
- 5D61FCFE1A84238C00846EE7 /* SDLObjectWithPriority.m in Sources */,
- 5D92937D20B70A3E00FCC775 /* SDLPresentKeyboardOperation.m in Sources */,
- 9FD334E122DC6E7500F62736 /* SDLCreateWindow.m in Sources */,
- 5DBF06241E64A83F00A5CF03 /* SDLLogManager.m in Sources */,
- 5D61FC401A84238C00846EE7 /* SDLAmbientLightStatus.m in Sources */,
- 9F425ADB22DD983500BE3245 /* SDLDisplayCapability.m in Sources */,
- 2B233531232BD8A5002118E5 /* SDLWindowCapability+ScreenManagerExtensions.m in Sources */,
- 88EEC5BC220A327B005AA2F9 /* SDLPublishAppServiceResponse.m in Sources */,
- 5D61FC951A84238C00846EE7 /* SDLDriverDistractionState.m in Sources */,
- 5DB996611F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.m in Sources */,
- 5D75961222972FCA0013207C /* SDLSystemCapabilityObserver.m in Sources */,
- 884E702021FB983F008D53BA /* SDLAppServiceManifest.m in Sources */,
- 5D61FD961A84238C00846EE7 /* SDLShowResponse.m in Sources */,
- 5D61FD981A84238C00846EE7 /* SDLSingleTireStatus.m in Sources */,
- 1EB59CA8202D946500343A61 /* SDLMassageModeData.m in Sources */,
- 4A3BA4E824901794003E56B8 /* SDLLifecycleMobileHMIStateHandler.m in Sources */,
- 8881AFB32225DED900EA870B /* SDLSetCloudAppPropertiesResponse.m in Sources */,
+ 4ABB28D724F82A6A0061BF55 /* SDLOnInteriorVehicleData.m in Sources */,
+ 4ABB256224F7E5AA0061BF55 /* SDLPermissionElement.m in Sources */,
+ 4A8BD2F124F93872000945E3 /* SDLVrHelpItem.m in Sources */,
+ 4ABB2B4924F84EF50061BF55 /* SDLDriverDistractionCapability.m in Sources */,
+ 4ABB2B7124F84FE50061BF55 /* SDLFuelRange.m in Sources */,
+ 4ABB28C724F82A6A0061BF55 /* SDLOnHMIStatus.m in Sources */,
+ 4ABB2A2D24F847980061BF55 /* SDLEncodedSyncPDataResponse.m in Sources */,
+ 4ABB2AE924F848270061BF55 /* SDLUnsubscribeWayPointsResponse.m in Sources */,
+ 4ABB280D24F824600061BF55 /* SDLServiceUpdateReason.m in Sources */,
+ 4ABB2AD024F848130061BF55 /* SDLSubscribeVehicleDataResponse.m in Sources */,
+ 4ABB2B0E24F84D950061BF55 /* SDLAppServiceCapability.m in Sources */,
+ 4ABB2A0124F8477F0061BF55 /* SDLAlertManeuverResponse.m in Sources */,
+ 4A8BD3CA24F998A8000945E3 /* SDLWindowState.m in Sources */,
+ 4ABB29D324F846880061BF55 /* SDLSyncPData.m in Sources */,
+ 4ABB276B24F7FE480061BF55 /* SDLHybridAppPreference.m in Sources */,
+ 4ABB2BA624F850AE0061BF55 /* SDLImageField.m in Sources */,
+ 4ABB2A8624F847DF0061BF55 /* SDLReleaseInteriorVehicleDataModuleResponse.m in Sources */,
+ 4A8BD36C24F94636000945E3 /* SDLProtocolMessageDisassembler.m in Sources */,
5D9FDA931F2A7D3400A495C8 /* bson_util.c in Sources */,
- 5D61FD461A84238C00846EE7 /* SDLProtocolHeader.m in Sources */,
- 5DD8406320FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.m in Sources */,
- 88EF8EB822D8E02E00CB06C2 /* SDLCancelInteraction.m in Sources */,
- 8BBEA6071F324165003EEA26 /* SDLMetadataType.m in Sources */,
- 5DA150C82271FDC20032928D /* SDLSoftButtonTransitionOperation.m in Sources */,
- 9FE2471222D77AA400F8D2FC /* SDLCreateWindowResponse.m in Sources */,
- 5D61FDBC1A84238C00846EE7 /* SDLSystemAction.m in Sources */,
- 5D61FC381A84238C00846EE7 /* SDLAlert.m in Sources */,
- 88AAD4BD2211B76800F1E6D7 /* SDLMediaServiceManifest.m in Sources */,
- 884E701C21FB8D0F008D53BA /* SDLPublishAppService.m in Sources */,
- 8831FA49220235B000B8FFB7 /* SDLAppServicesCapabilities.m in Sources */,
- 884E702421FBA952008D53BA /* SDLAppServiceType.m in Sources */,
- 88D3EBCA2267949D00493C38 /* SDLIAPDataSession.m in Sources */,
- 5D61FD2C1A84238C00846EE7 /* SDLPerformInteractionResponse.m in Sources */,
- 5D00AC7C1F15287E004000D9 /* SDLPhoneCapability.m in Sources */,
- 5D61FDF21A84238C00846EE7 /* SDLUpdateTurnList.m in Sources */,
- 5D61FD101A84238C00846EE7 /* SDLOnHMIStatus.m in Sources */,
- 5D61FC301A84238C00846EE7 /* SDLAddCommandResponse.m in Sources */,
- 5D61FCCC1A84238C00846EE7 /* SDLIgnitionStatus.m in Sources */,
- 1EAA473A20345B7A000FE74B /* SDLLightCapabilities.m in Sources */,
- 5D61FC3A1A84238C00846EE7 /* SDLAlertManeuver.m in Sources */,
- 5D61FC5E1A84238C00846EE7 /* SDLChangeRegistrationResponse.m in Sources */,
- 5D8204231BCEA89A00D0A41B /* SDLFileManager.m in Sources */,
- 1EB59CC0202DA26000343A61 /* SDLSeatControlData.m in Sources */,
- 8803DCF022C2B84B00FBB7CE /* SDLBackgroundTaskManager.m in Sources */,
- 5D61FC7D1A84238C00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m in Sources */,
- DAC572661D10C5640004288B /* CGPoint_Util.m in Sources */,
- 5D00AC681F140F0A004000D9 /* SDLSystemCapabilityType.m in Sources */,
- E9C32B9D1AB20C5900F283AF /* EAAccessory+SDLProtocols.m in Sources */,
- 5D61FCC61A84238C00846EE7 /* SDLHMIZoneCapabilities.m in Sources */,
- 5D61FD161A84238C00846EE7 /* SDLOnLockScreenStatus.m in Sources */,
- 5D61FDAE1A84238C00846EE7 /* SDLSubscribeButton.m in Sources */,
- DA9F7E6C1DCBFB0700ACAE48 /* SDLDeliveryMode.m in Sources */,
- 5D61FC581A84238C00846EE7 /* SDLButtonPressMode.m in Sources */,
- 5D00AC781F15283E004000D9 /* SDLNavigationCapability.m in Sources */,
- 5D61FDB01A84238C00846EE7 /* SDLSubscribeButtonResponse.m in Sources */,
- 5DCF76F61ACDBAD300BB647B /* SDLSendLocation.m in Sources */,
- 5D76E3251D39767000647CFA /* SDLLockScreenPresenter.m in Sources */,
- 5D61FC771A84238C00846EE7 /* SDLDeleteFile.m in Sources */,
- 5D61FC811A84238C00846EE7 /* SDLDeleteSubMenuResponse.m in Sources */,
- DA9F7E681DCBFAD400ACAE48 /* SDLOasisAddress.m in Sources */,
- EEB19330205028BE00A8940C /* SDLControlFramePayloadTransportEventUpdate.m in Sources */,
- 5D61FC7B1A84238C00846EE7 /* SDLDeleteInteractionChoiceSet.m in Sources */,
- 5D61FDC01A84238C00846EE7 /* SDLSystemRequest.m in Sources */,
- 5D92938120B70CD600FCC775 /* SDLCheckChoiceVROptionalOperation.m in Sources */,
- 5D61FD021A84238C00846EE7 /* SDLOnAudioPassThru.m in Sources */,
- 5D61FCE51A84238C00846EE7 /* SDLKeyboardProperties.m in Sources */,
- 5DBF062E1E64A93A00A5CF03 /* SDLLogFilter.m in Sources */,
- 5D61FDFA1A84238C00846EE7 /* SDLV2ProtocolHeader.m in Sources */,
- 5D61FDD01A84238C00846EE7 /* SDLTireStatus.m in Sources */,
- 883C22C9222ED84D00939C4C /* SDLRPCFunctionNames.m in Sources */,
- 5D92935F20B33FF700FCC775 /* SDLChoiceSet.m in Sources */,
- 8855F9E4220CB04000A5C897 /* SDLOnAppServiceData.m in Sources */,
- 5D61FC321A84238C00846EE7 /* SDLAddSubMenu.m in Sources */,
- 5D76751422D9088F00E8D71A /* SDLMenuConfiguration.m in Sources */,
- 5D61FDF61A84238C00846EE7 /* SDLV1ProtocolHeader.m in Sources */,
- EE798CA620561218008EDE8E /* SDLSecondaryTransportManager.m in Sources */,
- 88B58DC1222045320011B063 /* SDLNavigationJunction.m in Sources */,
- 5D61FDAA1A84238C00846EE7 /* SDLSpeechCapabilities.m in Sources */,
- 1E5AD0951F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m in Sources */,
- 5D61FDB41A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.m in Sources */,
- 885468302225BDAE00994D8D /* SDLHybridAppPreference.m in Sources */,
- 5D61FD121A84238C00846EE7 /* SDLOnKeyboardInput.m in Sources */,
- DA9F7E9A1DCC052C00ACAE48 /* SDLLocationCoordinate.m in Sources */,
- 5D61FCCA1A84238C00846EE7 /* SDLIgnitionStableStatus.m in Sources */,
- 88A795D32106787400056542 /* SDLStaticIconName.m in Sources */,
- 5D61FCFB1A84238C00846EE7 /* SDLMyKey.m in Sources */,
- 5D61FCAA1A84238C00846EE7 /* SDLFileType.m in Sources */,
- 1E5AD0651F207DD50029B8AF /* SDLTemperature.m in Sources */,
- DA9F7E901DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.m in Sources */,
- 88F65137220C74FD00CAF321 /* SDLWeatherData.m in Sources */,
- 5DA150CE2271FE180032928D /* SDLSoftButtonReplaceOperation.m in Sources */,
- 88EF8EBE22D8FE5800CB06C2 /* SDLCancelInteractionResponse.m in Sources */,
- 5DE372A21ACB2ED300849FAA /* SDLHMICapabilities.m in Sources */,
- 5D61FDD41A84238C00846EE7 /* SDLTouchEvent.m in Sources */,
- 5D61FD881A84238C00846EE7 /* SDLSetGlobalProperties.m in Sources */,
- 5D61FC7F1A84238C00846EE7 /* SDLDeleteSubMenu.m in Sources */,
- 5D61FCE91A84238C00846EE7 /* SDLLanguage.m in Sources */,
- 5D61FC3E1A84238C00846EE7 /* SDLAlertResponse.m in Sources */,
- 5D61FD8C1A84238C00846EE7 /* SDLSetMediaClockTimer.m in Sources */,
- 5D61FE121A84238C00846EE7 /* SDLWarningLightStatus.m in Sources */,
- 8855F9EA220CBA9200A5C897 /* SDLGetFile.m in Sources */,
- 5D61FCB81A84238C00846EE7 /* SDLGetVehicleDataResponse.m in Sources */,
- 5D61FC661A84238C00846EE7 /* SDLCompassDirection.m in Sources */,
- 5D61FD841A84238C00846EE7 /* SDLSetDisplayLayout.m in Sources */,
- DA9F7E701DCBFFDB00ACAE48 /* SDLGetWayPoints.m in Sources */,
- 1EAA4756203583BC000FE74B /* SDLHMISettingsControlData.m in Sources */,
- 008DB36222EA7482003F458C /* SDLGetInteriorVehicleDataConsent.m in Sources */,
- 5D00AC741F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m in Sources */,
- 5D61FE001A84238C00846EE7 /* SDLVehicleDataEventStatus.m in Sources */,
- 5D61FDC41A84238C00846EE7 /* SDLTBTState.m in Sources */,
- 5D61FDA61A84238C00846EE7 /* SDLSpeak.m in Sources */,
- 5D4631111F2135850092EFDC /* SDLControlFramePayloadConstants.m in Sources */,
- 5D339CF0207C08BA000CC364 /* SDLVoiceCommand.m in Sources */,
- 88E6F1AE220E19DF006156F9 /* SDLMediaServiceData.m in Sources */,
- DA9F7E881DCC049900ACAE48 /* SDLSubscribeWayPoints.m in Sources */,
- 5D61FDDE1A84238C00846EE7 /* SDLTTSChunk.m in Sources */,
- 5D61FD9E1A84238C00846EE7 /* SDLSliderResponse.m in Sources */,
- 1EAA47462035623B000FE74B /* SDLLightControlData.m in Sources */,
- 0055412F22D759BD003194D3 /* SDLSeatLocation.m in Sources */,
- 5D76750F22D8FB3700E8D71A /* SDLMenuLayout.m in Sources */,
- 5D61FC5C1A84238C00846EE7 /* SDLChangeRegistration.m in Sources */,
- 5D1665C91CF8CA3D00CC4CA1 /* SDLPermissionFilter.m in Sources */,
- 5D61FDBA1A84238C00846EE7 /* SDLSyncPDataResponse.m in Sources */,
- 1E5AD0511F1F7BF10029B8AF /* SDLRadioBand.m in Sources */,
- 88B3BF9D20DA8BBC00943565 /* SDLFuelRange.m in Sources */,
- 5D61FDDC1A84238C00846EE7 /* SDLTriggerSource.m in Sources */,
- 106412C7249FB80B0069A97A /* SDLPermissionElement.m in Sources */,
- 5DADA7761F4DFED60084D17D /* SDLRectangle.m in Sources */,
- 88EED83F1F33C5A400E6C42E /* SDLSendHapticData.m in Sources */,
- 5D16545B1D3E7A1600554D93 /* SDLLifecycleManager.m in Sources */,
- E9C32B971AB20BA200F283AF /* SDLTimer.m in Sources */,
- 10893C172417D78300BA347E /* SDLIconArchiveFile.m in Sources */,
- 5D61FCB61A84238C00846EE7 /* SDLGetVehicleData.m in Sources */,
- 5DAB5F572098E5D100A020C8 /* SDLProtocolConstants.m in Sources */,
- 5D61FC9F1A84238C00846EE7 /* SDLEncodedSyncPData.m in Sources */,
- 5D61FE061A84238C00846EE7 /* SDLVehicleDataResultCode.m in Sources */,
- 2BF2F85020ED004000A26EF2 /* SDLAudioStreamingIndicator.m in Sources */,
- 5D61FCA41A84238C00846EE7 /* SDLEndAudioPassThru.m in Sources */,
- 5D339CEB207C066E000CC364 /* SDLMenuCell.m in Sources */,
- 8818ADD92100FC18007D6F19 /* SDLTurnSignal.m in Sources */,
- 5D8B17541AC9E11B006A6E1C /* SDLDialNumberResponse.m in Sources */,
- DA6223BE1E7B088200878689 /* CVPixelBufferRef+SDLUtil.m in Sources */,
- 752ECDB7228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */,
- 1FF7DABC1F75B2BF00B46C30 /* SDLFocusableItemLocator.m in Sources */,
- EED5CA021F4D18EC00F04000 /* SDLRAWH264Packetizer.m in Sources */,
- 9FE2471622D77AD500F8D2FC /* SDLWindowType.m in Sources */,
- 5D61FC851A84238C00846EE7 /* SDLDeviceLevelStatus.m in Sources */,
+ 4ABB2B9C24F850AE0061BF55 /* SDLLightControlCapabilities.m in Sources */,
+ 4A8BD34E24F945E8000945E3 /* SDLControlFramePayloadRPCStartServiceAck.m in Sources */,
+ 4ABB263524F7F4300061BF55 /* SDLRTPH264Packetizer.m in Sources */,
+ 4A8BD34824F945CC000945E3 /* SDLControlFramePayloadRegisterSecondaryTransportNak.m in Sources */,
+ 4ABB26F624F7FB8F0061BF55 /* SDLAppServiceType.m in Sources */,
+ 4ABB25CD24F7E74F0061BF55 /* SDLTextAndGraphicManager.m in Sources */,
+ 4A8BD2D024F93803000945E3 /* SDLTextField.m in Sources */,
+ 4ABB2B6C24F84FE50061BF55 /* SDLGPSData.m in Sources */,
+ 4ABB26DB24F7FAFD0061BF55 /* SDLRPCMessage.m in Sources */,
+ 4A8BD2D624F93803000945E3 /* SDLTemperature.m in Sources */,
+ 4A8BD35624F945F6000945E3 /* SDLControlFramePayloadVideoStartServiceAck.m in Sources */,
+ 4ABB25BD24F7E70E0061BF55 /* SDLSoftButtonState.m in Sources */,
+ 4ABB282D24F824E70061BF55 /* SDLSystemContext.m in Sources */,
+ 4A8BD30E24F938D6000945E3 /* SDLWeatherServiceData.m in Sources */,
+ 4ABB27C724F8006D0061BF55 /* SDLPermissionStatus.m in Sources */,
+ 4ABB28BF24F82A6A0061BF55 /* SDLOnTBTClientState.m in Sources */,
+ 4A8BD39B24F94741000945E3 /* SDLIAPControlSession.m in Sources */,
+ 4ABB2A6124F847B10061BF55 /* SDLGetSystemCapabilityResponse.m in Sources */,
+ 4ABB26A524F7F9B90061BF55 /* SDLLogFileModule.m in Sources */,
+ 4ABB29E124F846880061BF55 /* SDLUnpublishAppService.m in Sources */,
+ 88BB8055250136670025E9C8 /* SDLLockScreenStatusInfo.m in Sources */,
+ 4ABB285D24F828E00061BF55 /* SDLVehicleDataType.m in Sources */,
+ 4ABB2A7424F847D40061BF55 /* SDLPerformAudioPassThruResponse.m in Sources */,
+ 4ABB250124F596450061BF55 /* SDLUploadFileOperation.m in Sources */,
+ 4ABB258224F7E61E0061BF55 /* SDLChoiceCell.m in Sources */,
+ 4ABB288D24F82A340061BF55 /* SDLVideoStreamingProtocol.m in Sources */,
+ 4ABB257024F7E5E80061BF55 /* SDLPreloadChoicesOperation.m in Sources */,
+ 4ABB2B3F24F84EF50061BF55 /* SDLCloudAppProperties.m in Sources */,
+ 4A8BD27C24F9343F000945E3 /* SDLPhoneCapability.m in Sources */,
+ 4ABB269724F7F9400061BF55 /* SDLRPCFunctionNames.m in Sources */,
+ 4A1FA09B25114833006B7851 /* SDLErrorConstants.m in Sources */,
+ 4ABB270624F7FB8F0061BF55 /* SDLButtonName.m in Sources */,
+ 4ABB258024F7E61E0061BF55 /* SDLChoiceSet.m in Sources */,
+ 4ABB296424F844020061BF55 /* SDLGetVehicleData.m in Sources */,
+ 4ABB299524F845440061BF55 /* SDLResetGlobalProperties.m in Sources */,
+ 4A8BD26824F933C7000945E3 /* SDLNavigationServiceData.m in Sources */,
+ 4ABB296124F844020061BF55 /* SDLGetWayPoints.m in Sources */,
+ 4ABB297D24F844D30061BF55 /* SDLPutFile.m in Sources */,
+ 4ABB28D424F82A6A0061BF55 /* SDLOnEncodedSyncPData.m in Sources */,
+ 4ABB2AA324F847F40061BF55 /* SDLShowConstantTBTResponse.m in Sources */,
+ 4A8BD37424F9465E000945E3 /* SDLProtocolReceivedMessageRouter.m in Sources */,
+ 4ABB25D424F7E7630061BF55 /* SDLWindowCapability+ScreenManagerExtensions.m in Sources */,
+ 4ABB269224F7F9060061BF55 /* SDLTimer.m in Sources */,
+ 4ABB25C624F7E73C0061BF55 /* SDLSubscribeButtonManager.m in Sources */,
+ 4ABB278E24F7FF0B0061BF55 /* SDLKeyboardEvent.m in Sources */,
+ 4ABB279024F7FF0B0061BF55 /* SDLImageType.m in Sources */,
+ 4ABB28CB24F82A6A0061BF55 /* SDLOnTouchEvent.m in Sources */,
+ 4ABB2B4E24F84EF50061BF55 /* SDLClusterModeStatus.m in Sources */,
+ 4ABB2AA824F847F40061BF55 /* SDLSetDisplayLayoutResponse.m in Sources */,
+ 4ABB273E24F7FD1D0061BF55 /* SDLDisplayMode.m in Sources */,
+ 4A40254124FFDA660080E159 /* SDLTextAndGraphicState.m in Sources */,
+ 4ABB27AB24F7FFDA0061BF55 /* SDLMassageZone.m in Sources */,
+ 4A8BD2DD24F93803000945E3 /* SDLTouchEvent.m in Sources */,
+ 4ABB26BD24F7FA1C0061BF55 /* SDLLogConfiguration.m in Sources */,
+ 4ABB28E424F82A6A0061BF55 /* SDLOnPermissionsChange.m in Sources */,
+ 4ABB24CD24F5931B0061BF55 /* SDLStateMachine.m in Sources */,
+ 4ABB2B8324F8504A0061BF55 /* SDLHMICapabilities.m in Sources */,
+ 4ABB2B6924F84FE50061BF55 /* SDLEqualizerSettings.m in Sources */,
+ 4ABB276F24F7FE480061BF55 /* SDLIgnitionStableStatus.m in Sources */,
+ 4ABB280824F824600061BF55 /* SDLSeatMemoryActionType.m in Sources */,
+ 4ABB2A5324F847B10061BF55 /* SDLGetVehicleDataResponse.m in Sources */,
+ 4ABB2B4A24F84EF50061BF55 /* SDLChoice.m in Sources */,
+ 4ABB2B8124F8504A0061BF55 /* SDLHMIPermissions.m in Sources */,
+ 4ABB29ED24F847360061BF55 /* SDLUnsubscribeVehicleData.m in Sources */,
+ 4ABB2A2124F847980061BF55 /* SDLButtonPressResponse.m in Sources */,
+ 4ABB270224F7FB8F0061BF55 /* SDLButtonEventMode.m in Sources */,
+ 4A8BD24C24F93135000945E3 /* SDLLocationDetails.m in Sources */,
+ 4ABB275C24F7FE1F0061BF55 /* SDLFuelType.m in Sources */,
+ 4ABB2B4324F84EF50061BF55 /* SDLDisplayCapabilities.m in Sources */,
+ 4ABB267724F7F6720061BF55 /* SDLObjectWithPriority.m in Sources */,
+ 4ABB29FE24F8477F0061BF55 /* SDLAddCommandResponse.m in Sources */,
+ 4ABB251324F7E3A30061BF55 /* SDLLifecycleConfiguration.m in Sources */,
+ 4ABB294824F843440061BF55 /* SDLGetAppServiceData.m in Sources */,
+ 4ABB262124F7F3870061BF55 /* CGPoint_Util.m in Sources */,
+ 4ABB2A8924F847DF0061BF55 /* SDLReadDIDResponse.m in Sources */,
+ 4A8BD24524F93135000945E3 /* SDLModuleData.m in Sources */,
+ 4ABB2BA424F850AE0061BF55 /* SDLLightCapabilities.m in Sources */,
+ 4ABB272224F7FCAE0061BF55 /* SDLDefrostZone.m in Sources */,
+ 4ABB24BB24F592620061BF55 /* NSMutableArray+Safe.m in Sources */,
+ 4ABB25AA24F7E6E10061BF55 /* SDLMenuManager.m in Sources */,
+ 4ABB25DD24F7E77C0061BF55 /* SDLScreenManager.m in Sources */,
+ 4A8BD3C924F998A8000945E3 /* SDLWindowStatus.m in Sources */,
+ 4A8BD32B24F9431B000945E3 /* SDLV1ProtocolHeader.m in Sources */,
+ 4ABB294F24F843440061BF55 /* SDLGetFile.m in Sources */,
+ 4A8BD37E24F94697000945E3 /* SDLFunctionID.m in Sources */,
+ 4A8BD2DB24F93803000945E3 /* SDLTemplateConfiguration.m in Sources */,
+ 4ABB25B224F7E6F60061BF55 /* SDLSoftButtonTransitionOperation.m in Sources */,
+ 4ABB270B24F7FB8F0061BF55 /* SDLAudioType.m in Sources */,
+ 4ABB291C24F842560061BF55 /* SDLCreateWindow.m in Sources */,
+ 4ABB26B024F7F9DF0061BF55 /* SDLLogTargetOSLog.m in Sources */,
+ 4ABB27DC24F800CA0061BF55 /* SDLPredefinedLayout.m in Sources */,
+ 4A8BD30B24F938D6000945E3 /* SDLWeatherData.m in Sources */,
+ 4ABB271624F7FC4E0061BF55 /* SDLCarModeStatus.m in Sources */,
+ 4A8BD2F624F93872000945E3 /* SDLVehicleDataResult.m in Sources */,
+ 4ABB254824F7E49D0061BF55 /* SDLLockScreenStatusManager.m in Sources */,
+ 4A8BD2B724F935BC000945E3 /* SDLSoftButton.m in Sources */,
+ 4ABB2AD824F8481D0061BF55 /* SDLSystemRequestResponse.m in Sources */,
+ 4ABB28E924F82A6A0061BF55 /* SDLOnWayPointChange.m in Sources */,
+ 4A8BD24324F93135000945E3 /* SDLMetadataTags.m in Sources */,
+ 4ABB283124F824E70061BF55 /* SDLTemperatureUnit.m in Sources */,
+ 4ABB266A24F7F61B0061BF55 /* EAAccessory+SDLProtocols.m in Sources */,
+ 4ABB294724F843440061BF55 /* SDLEncodedSyncPData.m in Sources */,
+ 4ABB2AB924F847F40061BF55 /* SDLSetInteriorVehicleDataResponse.m in Sources */,
+ 4ABB295424F843440061BF55 /* SDLEndAudioPassThru.m in Sources */,
+ 4ABB2A2924F847980061BF55 /* SDLDeleteFileResponse.m in Sources */,
+ 4ABB284524F828630061BF55 /* SDLTouchType.m in Sources */,
+ 4ABB2B8024F8504A0061BF55 /* SDLHapticRect.m in Sources */,
+ 4A8BD38A24F94712000945E3 /* SDLSecondaryTransportManager.m in Sources */,
+ 4ABB25C724F7E73C0061BF55 /* SDLSubscribeButtonObserver.m in Sources */,
+ 4ABB26DA24F7FAFD0061BF55 /* SDLRPCResponse.m in Sources */,
+ 4ABB2A2524F847980061BF55 /* SDLDeleteWindowResponse.m in Sources */,
+ 4ABB287724F8294A0061BF55 /* SDLWarningLightStatus.m in Sources */,
+ 4ABB29B524F845DB0061BF55 /* SDLShowConstantTBT.m in Sources */,
+ 4ABB260124F7E9230061BF55 /* SDLStreamingMediaManagerConstants.m in Sources */,
+ 4A8BD31924F93941000945E3 /* SDLModuleInfo.m in Sources */,
+ 4ABB270A24F7FB8F0061BF55 /* SDLAppInterfaceUnregisteredReason.m in Sources */,
+ 4ABB28EC24F82A6A0061BF55 /* SDLOnVehicleData.m in Sources */,
+ 4ABB26C524F7FA5F0061BF55 /* SDLLogModel.m in Sources */,
+ 4ABB28C924F82A6A0061BF55 /* SDLOnRCStatus.m in Sources */,
+ 4ABB253124F7E43A0061BF55 /* SDLAsynchronousRPCOperation.m in Sources */,
+ 4ABB2A7524F847D40061BF55 /* SDLPublishAppServiceResponse.m in Sources */,
+ 4A8BD3AA24F948CF000945E3 /* SDLDeleteFileOperation.m in Sources */,
+ 4ABB2B4524F84EF50061BF55 /* SDLBodyInformation.m in Sources */,
+ 4ABB25BB24F7E70E0061BF55 /* SDLSoftButtonObject.m in Sources */,
+ 4ABB28D124F82A6A0061BF55 /* SDLOnButtonEvent.m in Sources */,
+ 4ABB2AD424F848130061BF55 /* SDLSubscribeButtonResponse.m in Sources */,
+ 4A8BD24724F93135000945E3 /* SDLLocationCoordinate.m in Sources */,
+ 4ABB2B6B24F84FE50061BF55 /* SDLGearStatus.m in Sources */,
+ 4A8BD2DA24F93803000945E3 /* SDLTouchEventCapabilities.m in Sources */,
+ 4ABB2AF024F848270061BF55 /* SDLUnsubscribeButtonResponse.m in Sources */,
+ 4ABB2A3724F847980061BF55 /* SDLDialNumberResponse.m in Sources */,
+ 4A8BD28024F9343F000945E3 /* SDLRadioControlData.m in Sources */,
+ 4ABB251724F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.m in Sources */,
+ 4ABB24F824F5959E0061BF55 /* SDLAsynchronousOperation.m in Sources */,
+ 4A8BD37624F9465E000945E3 /* SDLProtocol.m in Sources */,
+ 4A8BD34D24F945E8000945E3 /* SDLControlFramePayloadRPCStartService.m in Sources */,
+ 4A8BD36524F9461A000945E3 /* SDLV2ProtocolMessage.m in Sources */,
+ 4ABB29BE24F845DB0061BF55 /* SDLSlider.m in Sources */,
+ 4ABB27DB24F800CA0061BF55 /* SDLPowerModeStatus.m in Sources */,
+ 4ABB282724F824E70061BF55 /* SDLSystemCapabilityType.m in Sources */,
+ 4ABB2B9F24F850AE0061BF55 /* SDLImageResolution.m in Sources */,
+ 4ABB29B424F845DB0061BF55 /* SDLSpeak.m in Sources */,
+ 4A8BD3AF24F98ACE000945E3 /* SDLLogManager.m in Sources */,
+ 4ABB257124F7E5E80061BF55 /* SDLPresentChoiceSetOperation.m in Sources */,
+ 4ABB2A5624F847B10061BF55 /* SDLGetWayPointsResponse.m in Sources */,
+ 4ABB24F524F595120061BF55 /* SDLArtwork.m in Sources */,
+ 4ABB27B124F7FFDA0061BF55 /* SDLMassageCushion.m in Sources */,
+ 4A8BD2F224F93872000945E3 /* SDLVideoStreamingCapability.m in Sources */,
+ 4ABB276824F7FE480061BF55 /* SDLHMIZoneCapabilities.m in Sources */,
+ 4ABB297B24F844D30061BF55 /* SDLPerformAudioPassThru.m in Sources */,
+ 4ABB282F24F824E70061BF55 /* SDLTextAlignment.m in Sources */,
+ 4A8BD31124F938D6000945E3 /* SDLWeatherServiceManifest.m in Sources */,
+ 4ABB271524F7FC4E0061BF55 /* SDLCompassDirection.m in Sources */,
+ 4ABB254424F7E48D0061BF55 /* SDLLockScreenRootViewController.m in Sources */,
+ 4ABB265F24F7F5F20061BF55 /* SDLNotificationDispatcher.m in Sources */,
+ 4A8BD31624F938D6000945E3 /* SDLWindowTypeCapabilities.m in Sources */,
+ 4ABB280924F824600061BF55 /* SDLSoftButtonType.m in Sources */,
+ 4ABB28FF24F82BE90061BF55 /* SDLAlert.m in Sources */,
+ 4ABB292A24F842A00061BF55 /* SDLDiagnosticMessage.m in Sources */,
+ 4A8BD33724F945B4000945E3 /* SDLControlFramePayloadConstants.m in Sources */,
+ 4ABB27FA24F823F20061BF55 /* SDLRPCMessageType.m in Sources */,
+ 4ABB273524F7FD1D0061BF55 /* SDLDirection.m in Sources */,
+ 4ABB27C824F8006D0061BF55 /* SDLNavigationAction.m in Sources */,
+ 4ABB29D224F846880061BF55 /* SDLSubscribeVehicleData.m in Sources */,
+ 4ABB2AEB24F848270061BF55 /* SDLUpdateTurnListResponse.m in Sources */,
+ 4ABB263124F7F4230061BF55 /* SDLRAWH264Packetizer.m in Sources */,
+ 4ABB2B5724F84EF50061BF55 /* SDLDIDResult.m in Sources */,
5D9FDA981F2A7D3F00A495C8 /* emhashmap.c in Sources */,
- 5D61FD1E1A84238C00846EE7 /* SDLOnTBTClientState.m in Sources */,
- 5D0C29FD20D93D8C008B56CD /* SDLVideoStreamingState.m in Sources */,
- 9F425AD722DD981E00BE3245 /* SDLWindowTypeCapabilities.m in Sources */,
- 5DD67CBD1E661C84009CD394 /* SDLLogTargetOSLog.m in Sources */,
- DA9F7E641DCBFAC800ACAE48 /* SDLDateTime.m in Sources */,
- 5D61FD581A84238C00846EE7 /* SDLPutFileResponse.m in Sources */,
- 5D61FCB21A84238C00846EE7 /* SDLGetDTCs.m in Sources */,
- 8881AFB92225E5EE00EA870B /* SDLGetCloudAppProperties.m in Sources */,
- 5D61FD441A84238C00846EE7 /* SDLProtocol.m in Sources */,
- 75FF2E3C22E0DD5400D0C13B /* SDLMsgVersion.m in Sources */,
- 5DF40B23208E761A00DD6FDA /* SDLVoiceCommandManager.m in Sources */,
- 5D61FC341A84238C00846EE7 /* SDLAddSubMenuResponse.m in Sources */,
- 5DA240011F325621009C0313 /* SDLStreamingMediaConfiguration.m in Sources */,
- 5D6F7A2F1BC5650B0070BF37 /* SDLLifecycleConfiguration.m in Sources */,
- 5D61FD141A84238C00846EE7 /* SDLOnLanguageChange.m in Sources */,
- 1E5AD0891F20B9AA0029B8AF /* SDLGetInteriorVehicleData.m in Sources */,
- 5D61FE041A84238C00846EE7 /* SDLVehicleDataResult.m in Sources */,
- 88B58DBB222040FF0011B063 /* SDLDirection.m in Sources */,
- 5D61FD5C1A84238C00846EE7 /* SDLReadDIDResponse.m in Sources */,
- 884AF950220B488900E22928 /* SDLOnSystemCapabilityUpdated.m in Sources */,
- 1EB59CB4202D9B5F00343A61 /* SDLSeatMemoryActionType.m in Sources */,
- 5D61FC621A84238C00846EE7 /* SDLChoice.m in Sources */,
- 1E5AD0811F20B73E0029B8AF /* SDLButtonPress.m in Sources */,
- 5D92937520B5EEA200FCC775 /* SDLPreloadChoicesOperation.m in Sources */,
- DAC5725B1D10B81E0004288B /* SDLTouch.m in Sources */,
- 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 */,
- 5D61FDD61A84238C00846EE7 /* SDLTouchEventCapabilities.m in Sources */,
- 5DA49CE61F1EA83300E65FC5 /* SDLControlFramePayloadRPCStartService.m in Sources */,
- 5DA102A51D4122C700C15826 /* NSMutableDictionary+SafeRemove.m in Sources */,
- 5DD60D99221C5D7D00A82A4F /* SDLVersion.m in Sources */,
- 5D61FCF11A84238C00846EE7 /* SDLLockScreenStatusManager.m in Sources */,
- 5D61FDAC1A84238C00846EE7 /* SDLStartTime.m in Sources */,
- 5D61FDA01A84238C00846EE7 /* SDLSoftButton.m in Sources */,
- 5D61FCD21A84238C00846EE7 /* SDLImageFieldName.m in Sources */,
- 5D61FD761A84238C00846EE7 /* SDLRPCResponse.m in Sources */,
- 5D3E48761D6F3B330000BFEF /* SDLAsynchronousOperation.m in Sources */,
- 5D92934E20AF4BEF00FCC775 /* SDLRGBColor.m in Sources */,
- 1E5AD06D1F208BAB0029B8AF /* SDLClimateControlData.m in Sources */,
- 5D61FE081A84238C00846EE7 /* SDLVehicleDataStatus.m in Sources */,
- 880D267E220DE5DF00B3F496 /* SDLWeatherServiceManifest.m in Sources */,
- 5D9FC2A21FD8814A00ACA5C2 /* SDLAudioFile.m in Sources */,
- E9C32B9F1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.m in Sources */,
- 756C62772289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m in Sources */,
- 5D61FDA81A84238C00846EE7 /* SDLSpeakResponse.m in Sources */,
- 0055413322D75A7B003194D3 /* SDLSeatLocationCapability.m in Sources */,
- 5DB92D331AC9C8BA00C15BB0 /* SDLRPCStruct.m in Sources */,
- 1EAA474220355FF3000FE74B /* SDLLightControlCapabilities.m in Sources */,
- 8B7B31A31F2F7FEA00BDC38D /* SDLVideoStreamingFormat.m in Sources */,
- DA0C46AD1DCD35080001F2A8 /* SDLRPCParameterNames.m in Sources */,
- 9F425AD322DD980200BE3245 /* SDLWindowCapability.m in Sources */,
- 5DA3F3551BC448060026F2D0 /* NSMapTable+Subscripting.m in Sources */,
- 5D61FCD61A84238C00846EE7 /* SDLImageType.m in Sources */,
- 5D4D67AD1D2ED37A00468B4A /* SDLNotificationDispatcher.m in Sources */,
- 88665B74220B80F400D9DA77 /* SDLWeatherAlert.m in Sources */,
- 88EED8391F33AE1700E6C42E /* SDLHapticRect.m in Sources */,
- DA9F7E9C1DCC052C00ACAE48 /* SDLLocationDetails.m in Sources */,
- 8880D24822205B1B00964F6A /* SDLNavigationInstruction.m in Sources */,
- 5D61FD7A1A84238C00846EE7 /* SDLScreenParams.m in Sources */,
- 1EAA47122033FE80000FE74B /* SDLStationIDNumber.m in Sources */,
- 5D61FC831A84238C00846EE7 /* SDLDeviceInfo.m in Sources */,
- DA318C201DD0F06C00C035AC /* NSMutableDictionary+Store.m in Sources */,
- 9F425ACF22DD97DE00BE3245 /* SDLTemplateConfiguration.m in Sources */,
- 5D7F87EC1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m in Sources */,
- 1EB59CBC202DA1B400343A61 /* SDLSupportedSeat.m in Sources */,
- 97E26DED1E807AD70074A3C7 /* SDLMutableDataQueue.m in Sources */,
- 5D61FD641A84238C00846EE7 /* SDLResetGlobalProperties.m in Sources */,
- 5DCD7AE11FCCA8D200A0FC7F /* SDLCarWindow.m in Sources */,
- 1E5AD0911F20BE820029B8AF /* SDLSetInteriorVehicleData.m in Sources */,
- 884E702C21FBB151008D53BA /* SDLAppServiceRecord.m in Sources */,
- 5D60088B1BE3ED540094A505 /* SDLStateMachine.m in Sources */,
- 8877F5EF1F34A72200DC128A /* SDLSendHapticDataResponse.m in Sources */,
- 5D61FD181A84238C00846EE7 /* SDLOnPermissionsChange.m in Sources */,
- 0055412722D40DAB003194D3 /* SDLModuleInfo.m in Sources */,
- 8881AFAD2225D61900EA870B /* SDLSetCloudAppProperties.m in Sources */,
- 1EB59CAC202D96A200343A61 /* SDLMassageCushion.m in Sources */,
- 5D61FD3E1A84238C00846EE7 /* SDLPrimaryAudioSource.m in Sources */,
- 88A7A3C7220CCEA100A9E435 /* SDLGetFileResponse.m in Sources */,
- 1E5AD0851F20B9290029B8AF /* SDLButtonPressResponse.m in Sources */,
- 9FE2470E22D77A5A00F8D2FC /* SDLDeleteWindowResponse.m in Sources */,
- 5D82041F1BCD8E6100D0A41B /* SDLConfiguration.m in Sources */,
- 00E22CEC22C2F1B300BC6B08 /* SDLEncryptionConfiguration.m in Sources */,
- 5D61FD381A84238C00846EE7 /* SDLPredefinedLayout.m in Sources */,
- 5D3E487C1D6F888E0000BFEF /* SDLRPCResponseNotification.m in Sources */,
- 5D61FD0E1A84238C00846EE7 /* SDLOnHashChange.m in Sources */,
- 5D4D67B51D30161600468B4A /* SDLLockScreenManager.m in Sources */,
- 4A26370C2493F0CF00278BE3 /* SDLRPCMessageType.m in Sources */,
- 5D61FDE41A84238C00846EE7 /* SDLUnregisterAppInterface.m in Sources */,
- 88A5E7FE220B642200495E8A /* SDLGetAppServiceDataResponse.m in Sources */,
- 5D61FC361A84238C00846EE7 /* SDLAirbagStatus.m in Sources */,
- 5D61FD7E1A84238C00846EE7 /* SDLScrollableMessageResponse.m in Sources */,
- 4A3BA4DD248E8F0F003E56B8 /* SDLLifecycleSystemRequestHandler.m in Sources */,
- 5D61FD3A1A84238C00846EE7 /* SDLPrerecordedSpeech.m in Sources */,
- 5D61FCA11A84238C00846EE7 /* SDLEncodedSyncPDataResponse.m in Sources */,
- 88B3BF9920DA859800943565 /* SDLFuelType.m in Sources */,
- 5DD67CC41E68AE82009CD394 /* SDLLogFileModuleMap.m in Sources */,
- 88A5E7F8220B5BBC00495E8A /* SDLGetAppServiceData.m in Sources */,
- 5D61FD401A84238C00846EE7 /* SDLPrioritizedObjectCollection.m in Sources */,
- 5D61FDC61A84238C00846EE7 /* SDLTCPTransport.m in Sources */,
- 5D61FE0E1A84238C00846EE7 /* SDLVrCapabilities.m in Sources */,
- 5DAD5F80204DEDEB0025624C /* SDLScreenManager.m in Sources */,
- 1EAA4732203442C0000FE74B /* SDLLightName.m in Sources */,
- 5D61FDC21A84238C00846EE7 /* SDLSystemRequestResponse.m in Sources */,
+ 4ABB260C24F7F3400061BF55 /* SDLAudioFile.m in Sources */,
+ 4A8BD2F524F93872000945E3 /* SDLTTSChunk.m in Sources */,
+ 4ABB257524F7E5E80061BF55 /* SDLDeleteChoicesOperation.m in Sources */,
+ 4ABB2B1224F84D950061BF55 /* SDLAudioPassThruCapabilities.m in Sources */,
+ 4A8BD27E24F9343F000945E3 /* SDLPresetBankCapabilities.m in Sources */,
+ 4A8BD39624F94731000945E3 /* SDLIAPTransport.m in Sources */,
+ 4ABB2A8224F847DF0061BF55 /* SDLRegisterAppInterfaceResponse.m in Sources */,
+ 4ABB266E24F7F6350061BF55 /* NSMutableDictionary+Store.m in Sources */,
+ 4ABB28C624F82A6A0061BF55 /* SDLOnKeyboardInput.m in Sources */,
+ 4ABB268324F7F8D60061BF55 /* SDLBackgroundTaskManager.m in Sources */,
+ 4ABB2ACC24F848130061BF55 /* SDLSyncPDataResponse.m in Sources */,
+ 4ABB26DF24F7FAFD0061BF55 /* SDLRPCNotification.m in Sources */,
+ 4ABB254C24F7E4C60061BF55 /* SDLLockScreenViewController.m in Sources */,
+ 4ABB270024F7FB8F0061BF55 /* SDLAmbientLightStatus.m in Sources */,
+ 4ABB299224F845440061BF55 /* SDLScrollableMessage.m in Sources */,
+ 4ABB29B924F845DB0061BF55 /* SDLShowAppMenu.m in Sources */,
+ 4A8BD28D24F934F3000945E3 /* SDLRectangle.m in Sources */,
+ 4ABB26FE24F7FB8F0061BF55 /* SDLBitsPerSample.m in Sources */,
+ 4ABB290324F82BE90061BF55 /* SDLAddSubMenu.m in Sources */,
+ 4ABB254524F7E48D0061BF55 /* SDLLockScreenPresenter.m in Sources */,
+ 4ABB29F024F847360061BF55 /* SDLUpdateTurnList.m in Sources */,
+ 4A8BD3B524F98F64000945E3 /* SDLOnUpdateFile.m in Sources */,
+ 4ABB26D924F7FAFD0061BF55 /* SDLRPCRequest.m in Sources */,
+ 4ABB275624F7FD9C0061BF55 /* SDLFileType.m in Sources */,
+ 4ABB288B24F82A340061BF55 /* SDLVideoStreamingFormat.m in Sources */,
+ 4ABB2A2424F847980061BF55 /* SDLDeleteInteractionChoiceSetResponse.m in Sources */,
+ 4A8BD2A024F93534000945E3 /* SDLSingleTireStatus.m in Sources */,
+ 4ABB2B4424F84EF50061BF55 /* SDLDeviceInfo.m in Sources */,
+ 4A8BD28224F9343F000945E3 /* SDLPermissionItem.m in Sources */,
+ 4ABB26D824F7FAFD0061BF55 /* SDLRPCStruct.m in Sources */,
+ 4ABB25D724F7E7630061BF55 /* SDLImageField+ScreenManagerExtensions.m in Sources */,
+ 4ABB284724F828630061BF55 /* SDLTextFieldName.m in Sources */,
+ 4ABB2A8424F847DF0061BF55 /* SDLResetGlobalPropertiesResponse.m in Sources */,
+ 4A8BD32F24F9431B000945E3 /* SDLProtocolHeader.m in Sources */,
+ 4ABB2B1124F84D950061BF55 /* SDLAudioControlData.m in Sources */,
+ 4ABB27A924F7FFDA0061BF55 /* SDLMediaClockFormat.m in Sources */,
+ 4ABB2AB624F847F40061BF55 /* SDLShowAppMenuResponse.m in Sources */,
+ 4ABB2B0D24F84D950061BF55 /* SDLAirbagStatus.m in Sources */,
+ 4ABB2B6D24F84FE50061BF55 /* SDLEmergencyEvent.m in Sources */,
+ 4ABB278C24F7FF0B0061BF55 /* SDLLanguage.m in Sources */,
+ 4ABB267224F7F6640061BF55 /* SDLPrioritizedObjectCollection.m in Sources */,
+ 4ABB2AC124F848050061BF55 /* SDLSpeakResponse.m in Sources */,
+ 4ABB259224F7E6820061BF55 /* SDLVoiceCommand.m in Sources */,
+ 4ABB2A3524F847980061BF55 /* SDLDeleteSubMenuResponse.m in Sources */,
+ 4ABB2A2624F847980061BF55 /* SDLEndAudioPassThruResponse.m in Sources */,
+ 4ABB284424F828630061BF55 /* SDLTurnSignal.m in Sources */,
+ 4ABB281924F824A50061BF55 /* SDLStaticIconName.m in Sources */,
+ 4A8BD33324F9437B000945E3 /* SDLControlFramePayloadAudioStartServiceAck.m in Sources */,
+ 4A8BD2BD24F935BC000945E3 /* SDLStartTime.m in Sources */,
+ 4ABB251A24F7E3DA0061BF55 /* SDLLifecycleRPCAdapter.m in Sources */,
+ 4ABB281524F824A50061BF55 /* SDLSupportedSeat.m in Sources */,
+ 4ABB262824F7F3BC0061BF55 /* SDLH264VideoEncoder.m in Sources */,
+ 4ABB2A5B24F847B10061BF55 /* SDLGetCloudAppPropertiesResponse.m in Sources */,
+ 4ABB25F424F7E7EF0061BF55 /* SDLTouch.m in Sources */,
+ 4ABB2B3E24F84EF50061BF55 /* SDLDeviceStatus.m in Sources */,
+ 4ABB28BE24F82A6A0061BF55 /* SDLOnSyncPData.m in Sources */,
+ 4ABB275724F7FD9C0061BF55 /* SDLEmergencyEventType.m in Sources */,
+ 4ABB29B824F845DB0061BF55 /* SDLSetMediaClockTimer.m in Sources */,
+ 4ABB293024F842A00061BF55 /* SDLDeleteSubMenu.m in Sources */,
+ 4ABB270724F7FB8F0061BF55 /* SDLAudioStreamingIndicator.m in Sources */,
+ 4ABB2AF124F848270061BF55 /* SDLUnregisterAppInterfaceResponse.m in Sources */,
+ 4A8BD27A24F9343F000945E3 /* SDLRemoteControlCapabilities.m in Sources */,
+ 4ABB291824F842160061BF55 /* SDLChangeRegistration.m in Sources */,
+ 4A8BD26224F933C7000945E3 /* SDLNavigationInstruction.m in Sources */,
+ 4ABB29EB24F847360061BF55 /* SDLUnsubscribeWayPoints.m in Sources */,
+ 4ABB25E124F7E7980061BF55 /* SDLStreamingMediaConfiguration.m in Sources */,
+ 4ABB299424F845440061BF55 /* SDLSendLocation.m in Sources */,
+ 4ABB266824F7F61B0061BF55 /* EAAccessoryManager+SDLProtocols.m in Sources */,
+ 4A8BD3BC24F98F89000945E3 /* SDLDynamicUpdateCapabilities.m in Sources */,
+ 4ABB2A2324F847980061BF55 /* SDLCreateInteractionChoiceSetResponse.m in Sources */,
+ 4ABB299B24F845440061BF55 /* SDLSetCloudAppProperties.m in Sources */,
+ 4ABB273B24F7FD1D0061BF55 /* SDLDeviceLevelStatus.m in Sources */,
+ 4A8BD2FD24F938A4000945E3 /* SDLVehicleType.m in Sources */,
+ 4ABB299924F845440061BF55 /* SDLSetAppIcon.m in Sources */,
+ 4A8BD39424F94731000945E3 /* SDLIAPSession.m in Sources */,
+ 4ABB2A3924F847980061BF55 /* SDLDiagnosticMessageResponse.m in Sources */,
+ 4A8BD29924F93534000945E3 /* SDLScreenParams.m in Sources */,
+ 4ABB28C324F82A6A0061BF55 /* SDLOnAppInterfaceUnregistered.m in Sources */,
+ 4ABB2A3224F847980061BF55 /* SDLCancelInteractionResponse.m in Sources */,
+ 4ABB259C24F7E6B90061BF55 /* SDLMenuConfiguration.m in Sources */,
+ 4ABB24C724F592900061BF55 /* SDLError.m in Sources */,
+ 4ABB273624F7FD1D0061BF55 /* SDLDistanceUnit.m in Sources */,
+ 4ABB263A24F7F4470061BF55 /* SDLStreamingAudioLifecycleManager.m in Sources */,
+ 4ABB268E24F7F8FC0061BF55 /* SDLHexUtility.m in Sources */,
+ 4ABB284C24F828630061BF55 /* SDLTPMS.m in Sources */,
+ 4ABB278D24F7FF0B0061BF55 /* SDLImageFieldName.m in Sources */,
+ 4ABB24D624F593ED0061BF55 /* SDLVersion.m in Sources */,
+ 4ABB27CC24F8006D0061BF55 /* SDLNavigationJunction.m in Sources */,
+ 4ABB261B24F7F3770061BF55 /* SDLFocusableItemLocator.m in Sources */,
+ 4ABB29B124F845DB0061BF55 /* SDLSetDisplayLayout.m in Sources */,
+ 4A8BD29D24F93534000945E3 /* SDLSeatControlData.m in Sources */,
+ 4ABB2A5A24F847B10061BF55 /* SDLGetDTCsResponse.m in Sources */,
+ 4ABB27ED24F801B50061BF55 /* SDLRadioState.m in Sources */,
+ 4ABB257224F7E5E80061BF55 /* SDLCheckChoiceVROptionalOperation.m in Sources */,
+ 4ABB28D324F82A6A0061BF55 /* SDLOnSystemCapabilityUpdated.m in Sources */,
+ 4ABB2B1B24F84D950061BF55 /* SDLAppServicesCapabilities.m in Sources */,
+ 4ABB2BA824F850AE0061BF55 /* SDLLightState.m in Sources */,
+ 4ABB250224F596450061BF55 /* SDLListFilesOperation.m in Sources */,
+ 4A8BD2EE24F93872000945E3 /* SDLTurn.m in Sources */,
+ 4ABB2A7724F847D40061BF55 /* SDLPerformInteractionResponse.m in Sources */,
+ 4ABB279524F7FF0B0061BF55 /* SDLLayoutMode.m in Sources */,
+ 4ABB288124F82A200061BF55 /* SDLWindowType.m in Sources */,
+ 4ABB26A124F7F98C0061BF55 /* SDLLogFileModuleMap.m in Sources */,
+ 4ABB25AB24F7E6E10061BF55 /* SDLVoiceCommandManager.m in Sources */,
+ 4ABB279224F7FF0B0061BF55 /* SDLInteractionMode.m in Sources */,
+ 4A8BD27B24F9343F000945E3 /* SDLRDSData.m in Sources */,
5D9FDA911F2A7D3400A495C8 /* bson_object.c in Sources */,
- 5D61FD001A84238C00846EE7 /* SDLOnAppInterfaceUnregistered.m in Sources */,
- 5D61FC6C1A84238C00846EE7 /* SDLCreateInteractionChoiceSet.m in Sources */,
- 1EB59CA4202D92F600343A61 /* SDLMassageMode.m in Sources */,
- 5D61FD081A84238C00846EE7 /* SDLOnCommand.m in Sources */,
- 5D53C46E1B7A99B9003526EA /* SDLStreamingMediaManager.m in Sources */,
- 5D339CF4207C0ACE000CC364 /* SDLMenuManager.m in Sources */,
- 1EB59CA0202D925500343A61 /* SDLMassageZone.m in Sources */,
- 5D61FD6A1A84238C00846EE7 /* SDLRPCMessage.m in Sources */,
- 1E5AD0391F1F4E390029B8AF /* SDLClimateControlCapabilities.m in Sources */,
- 5D92936920B3601700FCC775 /* SDLChoiceSetManager.m in Sources */,
- 5D61FDA21A84238C00846EE7 /* SDLSoftButtonCapabilities.m in Sources */,
- 5D8204321BD001C700D0A41B /* SDLArtwork.m in Sources */,
- 5D61FD8E1A84238C00846EE7 /* SDLSetMediaClockTimerResponse.m in Sources */,
- 5D61FD721A84238C00846EE7 /* SDLRPCRequest.m in Sources */,
- EED5CA081F4D1E2E00F04000 /* SDLRTPH264Packetizer.m in Sources */,
- 5D61FDF01A84238C00846EE7 /* SDLUpdateMode.m in Sources */,
- 5D61FC931A84238C00846EE7 /* SDLDisplayType.m in Sources */,
- 5D61FCE31A84238C00846EE7 /* SDLKeyboardLayout.m in Sources */,
- 5D61FE0C1A84238C00846EE7 /* SDLVehicleType.m in Sources */,
- 880E35B42088F75A00181259 /* SDLSystemCapabilityManager.m in Sources */,
- 1EAA474A203567FA000FE74B /* SDLHMISettingsControlCapabilities.m in Sources */,
- DA9F7E941DCC04E400ACAE48 /* SDLUnsubscribeWayPoints.m in Sources */,
- 5D61FDCC1A84238C00846EE7 /* SDLTextFieldName.m in Sources */,
- 5D61FC751A84238C00846EE7 /* SDLDeleteCommandResponse.m in Sources */,
- 5DA3F3711BC4489A0026F2D0 /* SDLManager.m in Sources */,
- 4A9D02BF2497EED400FBE99B /* SDLLifecycleRPCAdapter.m in Sources */,
- 5D61FD861A84238C00846EE7 /* SDLSetDisplayLayoutResponse.m in Sources */,
- 5D61FCB41A84238C00846EE7 /* SDLGetDTCsResponse.m in Sources */,
- 5D61FDFC1A84238C00846EE7 /* SDLV2ProtocolMessage.m in Sources */,
- 1EAA4726203416D3000FE74B /* SDLEqualizerSettings.m in Sources */,
- 8BA12B1622DCEACB00371E82 /* SDLUnpublishAppServiceResponse.m in Sources */,
- 5D61FD361A84238C00846EE7 /* SDLPowerModeStatus.m in Sources */,
- 5D61FD621A84238C00846EE7 /* SDLRequestType.m in Sources */,
- 1EAA473E203554B5000FE74B /* SDLLightState.m in Sources */,
- 5D61FCBA1A84238C00846EE7 /* SDLGlobalProperty.m in Sources */,
- 5D61FD4F1A84238C00846EE7 /* SDLProtocolReceivedMessageRouter.m in Sources */,
- 5D0A7375203F0C730001595D /* SDLTextAndGraphicManager.m in Sources */,
- 1E5AD0451F1F5A1F0029B8AF /* SDLRadioControlCapabilities.m in Sources */,
+ 4A8BD26024F933C7000945E3 /* SDLNavigationCapability.m in Sources */,
+ 4ABB29E024F846880061BF55 /* SDLSubscribeWayPoints.m in Sources */,
+ 4ABB2B5824F84EF50061BF55 /* SDLButtonCapabilities.m in Sources */,
+ 4A8BD32C24F9431B000945E3 /* SDLV2ProtocolHeader.m in Sources */,
+ 4ABB2B4724F84EF50061BF55 /* SDLBeltStatus.m in Sources */,
+ 4ABB2AAB24F847F40061BF55 /* SDLSetMediaClockTimerResponse.m in Sources */,
+ 4ABB275124F7FD9C0061BF55 /* SDLElectronicParkBrakeStatus.m in Sources */,
+ 4ABB2AE824F848270061BF55 /* SDLUnpublishAppServiceResponse.m in Sources */,
+ 4ABB264824F7F5540061BF55 /* SDLManager.m in Sources */,
+ 4ABB29B024F845DB0061BF55 /* SDLSetInteriorVehicleData.m in Sources */,
+ 4ABB2AA224F847F40061BF55 /* SDLSetCloudAppPropertiesResponse.m in Sources */,
+ 4A8BD3A224F9474B000945E3 /* SDLIAPDataSession.m in Sources */,
+ 4A8BD3B624F98F64000945E3 /* SDLOnUpdateSubMenu.m in Sources */,
+ 4ABB256624F7E5B80061BF55 /* SDLRPCPermissionStatus.m in Sources */,
+ 4ABB299824F845440061BF55 /* SDLReleaseInteriorVehicleDataModule.m in Sources */,
+ 4ABB277724F7FE910061BF55 /* SDLIgnitionStatus.m in Sources */,
+ 4ABB2B5624F84EF50061BF55 /* SDLDisplayCapability.m in Sources */,
+ 4ABB267F24F7F68F0061BF55 /* SDLCacheFileManager.m in Sources */,
+ 4A8BD24124F93135000945E3 /* SDLMenuParams.m in Sources */,
+ 4ABB28FC24F82BE90061BF55 /* SDLAddCommand.m in Sources */,
+ 4ABB294B24F843440061BF55 /* SDLGetInteriorVehicleDataConsent.m in Sources */,
+ 4ABB26AD24F7F9D70061BF55 /* SDLLogTargetFile.m in Sources */,
+ 4ABB25A424F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.m in Sources */,
+ 4ABB2A2F24F847980061BF55 /* SDLCreateWindowResponse.m in Sources */,
+ 4ABB261524F7F3610061BF55 /* SDLCarWindow.m in Sources */,
+ 4A8BD32024F93964000945E3 /* SDLSeatLocationCapability.m in Sources */,
+ 4A8BD31424F938D6000945E3 /* SDLWindowCapability.m in Sources */,
+ 4ABB252B24F7E41D0061BF55 /* SDLLifecycleProtocolHandler.m in Sources */,
+ 4ABB284924F828630061BF55 /* SDLTriggerSource.m in Sources */,
+ 4ABB2B8724F8504A0061BF55 /* SDLHeadLampStatus.m in Sources */,
+ 4A8BD2D324F93803000945E3 /* SDLTireStatus.m in Sources */,
+ 4ABB2A5F24F847B10061BF55 /* SDLGetAppServiceDataResponse.m in Sources */,
+ 4ABB26BC24F7FA1C0061BF55 /* SDLLogFilter.m in Sources */,
+ 4ABB2AA524F847F40061BF55 /* SDLSendHapticDataResponse.m in Sources */,
+ 4ABB2AF524F849CF0061BF55 /* SDLGenericResponse.m in Sources */,
+ 4ABB287924F8294A0061BF55 /* SDLWiperStatus.m in Sources */,
+ 4ABB27F124F801B50061BF55 /* SDLPRNDL.m in Sources */,
+ 4A8BD35724F945F6000945E3 /* SDLControlFramePayloadVideoStartService.m in Sources */,
+ 4ABB286524F828E00061BF55 /* SDLVehicleDataNotificationStatus.m in Sources */,
+ 4ABB27EC24F801B50061BF55 /* SDLRadioBand.m in Sources */,
+ 4ABB284A24F828630061BF55 /* SDLTimerMode.m in Sources */,
+ 4ABB24BC24F592620061BF55 /* NSBundle+SDLBundle.m in Sources */,
+ 4ABB264E24F7F5720061BF55 /* SDLConfiguration.m in Sources */,
+ 4ABB280024F823F20061BF55 /* SDLResult.m in Sources */,
+ 4ABB2A2724F847980061BF55 /* SDLCloseApplicationResponse.m in Sources */,
+ 4ABB293224F842A00061BF55 /* SDLDeleteFile.m in Sources */,
+ 4ABB295124F843440061BF55 /* SDLGetDTCs.m in Sources */,
+ 4ABB255424F7E5460061BF55 /* SDLLockScreenManager.m in Sources */,
+ 4ABB270524F7FB8F0061BF55 /* SDLButtonPressMode.m in Sources */,
+ 4ABB24E824F594CD0061BF55 /* SDLEncryptionManagerConstants.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -8097,6 +8261,7 @@
4A4AD8A424894260008FC414 /* TestOldConfigurationUpdateManagerDelegate.m in Sources */,
162E838A1A9BDE8B00906325 /* SDLSingleTireStatusSpec.m in Sources */,
5D6EB4CC1BF28DC600693731 /* NSMapTable+SubscriptingSpec.m in Sources */,
+ B3F7918324E062C200DB5CAF /* SDLGetVehicleDataSpec.m in Sources */,
88F37A4D226F84BE00DF119B /* SDLIAPDataSessionSpec.m in Sources */,
9FA0D00322DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m in Sources */,
162E83051A9BDE8B00906325 /* SDLVehicleDataActiveStatusSpec.m in Sources */,
@@ -8119,6 +8284,7 @@
5D0A9F951F15585B00CC80DD /* SDLPhoneCapabilitySpec.m in Sources */,
1EE8C4561F38788A00FDC2CF /* SDLButtonPressSpec.m in Sources */,
1680B1151A9CD7AD00DBD79E /* SDLV2ProtocolHeaderSpec.m in Sources */,
+ 4A8BD3CD24F999BE000945E3 /* TestSubscribeButtonObserver.m in Sources */,
1EE8C4541F38762E00FDC2CF /* SDLOnInteriorVehicleDataSpec.m in Sources */,
5DE35E4720CB0AB90034BE5A /* SDLChoiceSetSpec.m in Sources */,
162E83101A9BDE8B00906325 /* SDLOnAudioPassThruSpec.m in Sources */,
@@ -8159,6 +8325,8 @@
88B58DBD222042500011B063 /* SDLDirectionSpec.m in Sources */,
162E83721A9BDE8B00906325 /* SDLAudioPassThruCapabilitiesSpec.m in Sources */,
162E83681A9BDE8B00906325 /* SDLSpeakResponseSpec.m in Sources */,
+ B38D8E8224A1F53500B977D0 /* SDLCapacityUnitSpec.m in Sources */,
+ 88FBF7C52501330F005EA0A4 /* TestHapticRectViewController.m in Sources */,
1EB59CD8202DCCD500343A61 /* SDLMassageCushionFirmnessSpec.m in Sources */,
162E83661A9BDE8B00906325 /* SDLShowResponseSpec.m in Sources */,
5D9F50831BEA5C6100FEF399 /* SDLFileManagerSpec.m in Sources */,
@@ -8203,7 +8371,6 @@
5D6035D5202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m in Sources */,
162E83691A9BDE8B00906325 /* SDLSubscribeButtonResponseSpec.m in Sources */,
9FA0CFFA22DF064D009CF344 /* SDLPredefinedWindowsSpec.m in Sources */,
- 88B8657924A102AB003491AD /* TestSubscribeButtonObserver.m in Sources */,
5DAE06751BDEC6D600F9B498 /* SDLArtworkSpec.m in Sources */,
5DA23FF01F2FA0FF009C0313 /* SDLControlFramePayloadEndServiceSpec.m in Sources */,
162E83591A9BDE8B00906325 /* SDLListFilesResponseSpec.m in Sources */,
@@ -8242,6 +8409,7 @@
162E82CE1A9BDE8A00906325 /* SDLAudioTypeSpec.m in Sources */,
162E831C1A9BDE8B00906325 /* SDLOnSyncPDataSpec.m in Sources */,
00EADD3322DFE54B0088B608 /* SDLEncryptionLifecycleManagerSpec.m in Sources */,
+ 4A1B036F24CF484E008C6B13 /* SDLDriverDistractionCapabilitySpec.m in Sources */,
5D9F50871BED412E00FEF399 /* TestConnectionManager.m in Sources */,
1EAA47802036C2C9000FE74B /* SDLStationIDNumberSpec.m in Sources */,
162E83341A9BDE8B00906325 /* SDLPutFileSpec.m in Sources */,
@@ -8272,7 +8440,6 @@
8BBEA6091F324832003EEA26 /* SDLMetadataTypeSpec.m in Sources */,
5DAD5F8B20508F140025624C /* SDLSoftButtonObjectSpec.m in Sources */,
DA9F7E9E1DCC05B900ACAE48 /* SDLWaypointTypeSpec.m in Sources */,
- 162E838E1A9BDE8B00906325 /* SDLSyncMsgVersionSpec.m in Sources */,
5D76E31C1D3805FF00647CFA /* SDLLockScreenManagerSpec.m in Sources */,
162E82DA1A9BDE8B00906325 /* SDLDriverDistractionStateSpec.m in Sources */,
162E83631A9BDE8B00906325 /* SDLSetGlobalPropertiesResponseSpec.m in Sources */,
@@ -8280,6 +8447,7 @@
5D92935620B2FD7300FCC775 /* SDLTemplateColorSchemeSpec.m in Sources */,
162E82DE1A9BDE8B00906325 /* SDLFuelCutoffStatusSpec.m in Sources */,
162E83271A9BDE8B00906325 /* SDLCreateInteractionChoiceSetSpec.m in Sources */,
+ 4A404C68250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m in Sources */,
5DAD5F8920508F090025624C /* SDLSoftButtonStateSpec.m in Sources */,
1098F03824A39699004F53CC /* SDLPermissionElementSpec.m in Sources */,
9FA0D01222DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m in Sources */,
@@ -8309,6 +8477,7 @@
162E83761A9BDE8B00906325 /* SDLChoiceSpec.m in Sources */,
162E83571A9BDE8B00906325 /* SDLGetDTCsResponseSpec.m in Sources */,
5D4346471E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m in Sources */,
+ 889D0B9824D06E52008AD494 /* SDLSubtleAlertSpec.m in Sources */,
88A1CF1E21669AC7001ACC75 /* SDLLifecycleConfigurationUpdateSpec.m in Sources */,
1EE8C4581F387ABD00FDC2CF /* SDLButtonPressResponseSpec.m in Sources */,
884554AF2224554300BAFB6C /* SDLNavigationServiceManifestSpec.m in Sources */,
@@ -8324,12 +8493,15 @@
5DD8406520FCE21A0082CE04 /* SDLElectronicParkBrakeStatusSpec.m in Sources */,
162E82F61A9BDE8B00906325 /* SDLRequestTypeSpec.m in Sources */,
5DE35E4520CAFC5D0034BE5A /* SDLChoiceCellSpec.m in Sources */,
+ B38D8E8024A1E3D000B977D0 /* SDLTransmissionTypeSpec.m in Sources */,
162E82FB1A9BDE8B00906325 /* SDLSpeechCapabilitiesSpec.m in Sources */,
5D0A9F9C1F1565EB00CC80DD /* SDLGetSystemCapabilityResponseSpec.m in Sources */,
162E830D1A9BDE8B00906325 /* SDLWiperStatusSpec.m in Sources */,
+ B38D8E7E24A118BD00B977D0 /* SDLGearStatusSpec.m in Sources */,
5D60DF26202B7A97001EDA01 /* SDLSequentialRPCRequestOperationSpec.m in Sources */,
162E832C1A9BDE8B00906325 /* SDLDiagnosticMessageSpec.m in Sources */,
162E83381A9BDE8B00906325 /* SDLScrollableMessageSpec.m in Sources */,
+ 889D0B9624D065EE008AD494 /* SDLSubtleAlertResponseSpec.m in Sources */,
162E82E81A9BDE8B00906325 /* SDLKeyboardLayoutSpec.m in Sources */,
5D64FE6F20DA9E4300792F9F /* SDLStreamingVideoLifecycleManagerSpec.m in Sources */,
DA9F7EA41DCC05EE00ACAE48 /* SDLSubscribeWaypointsSpec.m in Sources */,
@@ -8361,7 +8533,6 @@
1E89B0DE2031636000A47992 /* SDLSeatControlDataSpec.m in Sources */,
88A4A0FA22242AB400C6F01D /* SDLNavigationServiceDataSpec.m in Sources */,
8831FA3D220207DA00B8FFB7 /* SDLServiceUpdateReasonSpec.m in Sources */,
- 162E831A1A9BDE8B00906325 /* SDLOnLockScreenStatusSpec.m in Sources */,
000DD57422EF0957005AB7A7 /* SDLReleaseInteriorVehicleDataModuleSpec.m in Sources */,
162E83431A9BDE8B00906325 /* SDLSyncPDataSpec.m in Sources */,
167ED9461A9BCE5D00797BE5 /* SwiftSpec.swift in Sources */,
@@ -8370,6 +8541,7 @@
1680B11B1A9CD7AD00DBD79E /* SDLFunctionIDSpec.m in Sources */,
5DB1BCDA1D243D85002FFC37 /* SDLStateMachineSpec.m in Sources */,
7538765622DCAF5400FE8484 /* SDLShowAppMenuSpec.m in Sources */,
+ 4A404C66250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m in Sources */,
8831FA4B2202402B00B8FFB7 /* SDLAppServicesCapabilitiesSpec.m in Sources */,
5D4346731E6F617D00B639C6 /* TestLogTarget.m in Sources */,
1EE8C43C1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m in Sources */,
@@ -8426,7 +8598,6 @@
162E82E71A9BDE8B00906325 /* SDLKeyboardEventSpec.m in Sources */,
162E834E1A9BDE8B00906325 /* SDLCreateInteractionChoiceSetResponseSpec.m in Sources */,
DA9F7EB61DCC086A00ACAE48 /* SDLOasisAddressSpec.m in Sources */,
- 162E83301A9BDE8B00906325 /* SDLGetVehicleDataSpec.m in Sources */,
162E833F1A9BDE8B00906325 /* SDLSliderSpec.m in Sources */,
162E838C1A9BDE8B00906325 /* SDLSoftButtonSpec.m in Sources */,
5DA23FF81F2FAF2D009C0313 /* SDLControlFramePayloadRPCStartServiceAckSpec.m in Sources */,
@@ -8451,6 +8622,7 @@
5DC978261B7A38640012C2F1 /* SDLGlobalsSpec.m in Sources */,
162E82FF1A9BDE8B00906325 /* SDLTextAlignmentSpec.m in Sources */,
000DD57222EF063F005AB7A7 /* SDLGetInteriorVehicleDataConsentResponseSpec.m in Sources */,
+ 889D0B9E24D07FF8008AD494 /* SDLOnSubtleAlertPressedSpec.m in Sources */,
162E831F1A9BDE8B00906325 /* SDLOnTouchEventSpec.m in Sources */,
162E83921A9BDE8B00906325 /* SDLTouchEventCapabilitiesSpec.m in Sources */,
162E837F1A9BDE8B00906325 /* SDLHeadLampStatusSpec.m in Sources */,
@@ -8462,6 +8634,7 @@
88D2AAE41F682BB20078D5B2 /* SDLLogConstantsSpec.m in Sources */,
162E836B1A9BDE8B00906325 /* SDLSyncPDataResponseSpec.m in Sources */,
8B7B31AF1F2FBA0200BDC38D /* SDLVideoStreamingCapabilitySpec.m in Sources */,
+ 88FBF7C2250132C1005EA0A4 /* SDLOnLockScreenStatusSpec.m in Sources */,
8B05F88922DD011300666CD8 /* SDLUnpublishAppServiceSpec.m in Sources */,
162E839B1A9BDE8B00906325 /* SDLRPCNotificationSpec.m in Sources */,
162E83581A9BDE8B00906325 /* SDLGetVehicleDataResponseSpec.m in Sources */,
@@ -8559,7 +8732,6 @@
1EB59CD0202DC9F200343A61 /* SDLSupportedSeatSpec.m in Sources */,
162E82EB1A9BDE8B00906325 /* SDLLayoutModeSpec.m in Sources */,
1680B1181A9CD7AD00DBD79E /* SDLV1ProtocolMessageSpec.m in Sources */,
- 162E82EC1A9BDE8B00906325 /* SDLLockScreenStatusSpec.m in Sources */,
DA96C0661D4D4F730022F520 /* SDLAppInfoSpec.m in Sources */,
75FF2E3822DF9D5900D0C13B /* SDLShowAppMenuResponseSpec.m in Sources */,
);
@@ -8579,12 +8751,12 @@
5DC49BDD237314B500B2B8F2 /* SceneDelegate.swift in Sources */,
5D1FF2DC21304746000EB9B4 /* AlertManager.swift in Sources */,
5D1FF2EB2130479C000EB9B4 /* ConnectionContainerViewController.swift in Sources */,
- 889E7BAF249CEE07002E4BE1 /* SubscribeButtonManager.swift in Sources */,
5D1FF2E021304746000EB9B4 /* MenuManager.swift in Sources */,
5D1FF2DF21304746000EB9B4 /* PerformInteractionManager.swift in Sources */,
5D1FF2ED2130479C000EB9B4 /* ConnectionIAPTableViewController.swift in Sources */,
5D1FF2DD21304746000EB9B4 /* RPCPermissionsManager.swift in Sources */,
5D1FF2E721304761000EB9B4 /* TextValidator.swift in Sources */,
+ 4A402559250026430080E159 /* SubscribeButtonManager.swift in Sources */,
5D1FF2F8213047C1000EB9B4 /* AppDelegate.swift in Sources */,
5D1FF2DE21304746000EB9B4 /* AudioManager.swift in Sources */,
);
@@ -8795,9 +8967,9 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = NCVC2MHU7M;
INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 6.6.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
PRODUCT_NAME = "SDL Example";
SWIFT_VERSION = 5.0;
@@ -8811,9 +8983,9 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = NCVC2MHU7M;
INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 6.6.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
PRODUCT_NAME = "SDL Example";
SWIFT_VERSION = 5.0;
@@ -8853,10 +9025,10 @@
GCC_WARN_UNKNOWN_PRAGMAS = YES;
INFOPLIST_FILE = SmartDeviceLink/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = "$(inherited)";
- MARKETING_VERSION = 6.7.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.smartdevicelink;
PRODUCT_NAME = "$(TARGET_NAME)";
RUN_CLANG_STATIC_ANALYZER = YES;
@@ -8898,10 +9070,10 @@
GCC_WARN_UNKNOWN_PRAGMAS = YES;
INFOPLIST_FILE = SmartDeviceLink/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = "$(inherited)";
- MARKETING_VERSION = 6.7.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.smartdevicelink;
PRODUCT_NAME = "$(TARGET_NAME)";
RUN_CLANG_STATIC_ANALYZER = YES;
@@ -8992,7 +9164,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 6.6.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
PRODUCT_NAME = "SDL Example Swift";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -9014,7 +9186,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 6.6.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp;
PRODUCT_NAME = "SDL Example Swift";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -9058,10 +9230,10 @@
GCC_WARN_UNKNOWN_PRAGMAS = YES;
INFOPLIST_FILE = SmartDeviceLinkSwift/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = "$(inherited)";
- MARKETING_VERSION = 6.6.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SmartDeviceLinkSwift;
PRODUCT_NAME = "$(TARGET_NAME)";
RUN_CLANG_STATIC_ANALYZER = YES;
@@ -9108,10 +9280,10 @@
GCC_WARN_UNKNOWN_PRAGMAS = YES;
INFOPLIST_FILE = SmartDeviceLinkSwift/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = "$(inherited)";
- MARKETING_VERSION = 6.6.0;
+ MARKETING_VERSION = "7.0.0-rc.1";
PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SmartDeviceLinkSwift;
PRODUCT_NAME = "$(TARGET_NAME)";
RUN_CLANG_STATIC_ANALYZER = YES;
diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec
index b4ba3d3fe..b45f67e97 100644
--- a/SmartDeviceLink.podspec
+++ b/SmartDeviceLink.podspec
@@ -1,12 +1,12 @@
Pod::Spec.new do |s|
s.name = "SmartDeviceLink"
-s.version = "6.7.0"
+s.version = "7.0.0-rc.1"
s.summary = "Connect your app with cars!"
s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS"
s.license = { :type => "New BSD", :file => "LICENSE" }
s.author = { "SmartDeviceLink Team" => "developer@smartdevicelink.com" }
-s.platform = :ios, "8.0"
+s.platform = :ios, "10.0"
s.dependency 'BiSON', '~> 1.2.0'
s.source = { :git => "https://github.com/smartdevicelink/sdl_ios.git", :tag => s.version.to_s }
s.requires_arc = true
@@ -15,446 +15,11 @@ s.swift_version = '5.2'
s.default_subspec = 'Default'
s.subspec 'Default' do |sdefault|
-sdefault.source_files = 'SmartDeviceLink/*.{h,m}'
+sdefault.source_files = 'SmartDeviceLink/public/*.{h,m}', 'SmartDeviceLink/private/*.{h,m}'
sdefault.resource_bundles = { 'SmartDeviceLink' => ['SmartDeviceLink/Assets/**/*'] }
-sdefault.public_header_files = [
-'SmartDeviceLink/NSNumber+NumberType.h',
-'SmartDeviceLink/SDLAddCommand.h',
-'SmartDeviceLink/SDLAddCommandResponse.h',
-'SmartDeviceLink/SDLAddSubMenu.h',
-'SmartDeviceLink/SDLAddSubMenuResponse.h',
-'SmartDeviceLink/SDLAirbagStatus.h',
-'SmartDeviceLink/SDLAlert.h',
-'SmartDeviceLink/SDLAlertManeuver.h',
-'SmartDeviceLink/SDLAlertManeuverResponse.h',
-'SmartDeviceLink/SDLAlertResponse.h',
-'SmartDeviceLink/SDLAppServiceCapability.h',
-'SmartDeviceLink/SDLAppServiceData.h',
-'SmartDeviceLink/SDLAppServiceManifest.h',
-'SmartDeviceLink/SDLAppServiceRecord.h',
-'SmartDeviceLink/SDLAppServicesCapabilities.h',
-'SmartDeviceLink/SDLAppServiceType.h',
-'SmartDeviceLink/SDLButtonPressResponse.h',
-'SmartDeviceLink/SDLAmbientLightStatus.h',
-'SmartDeviceLink/SDLAppHMIType.h',
-'SmartDeviceLink/SDLAppInfo.h',
-'SmartDeviceLink/SDLAppInterfaceUnregisteredReason.h',
-'SmartDeviceLink/SDLArtwork.h',
-'SmartDeviceLink/SDLAudioControlData.h',
-'SmartDeviceLink/SDLAudioControlCapabilities.h',
-'SmartDeviceLink/SDLAudioPassThruCapabilities.h',
-'SmartDeviceLink/SDLAudioFile.h',
-'SmartDeviceLink/SDLAudioStreamingState.h',
-'SmartDeviceLink/SDLAudioStreamingIndicator.h',
-'SmartDeviceLink/SDLAudioStreamManager.h',
-'SmartDeviceLink/SDLAudioStreamManagerDelegate.h',
-'SmartDeviceLink/SDLStreamingAudioManagerType.h',
-'SmartDeviceLink/SDLAudioType.h',
-'SmartDeviceLink/SDLBeltStatus.h',
-'SmartDeviceLink/SDLBitsPerSample.h',
-'SmartDeviceLink/SDLBodyInformation.h',
-'SmartDeviceLink/SDLButtonCapabilities.h',
-'SmartDeviceLink/SDLButtonEventMode.h',
-'SmartDeviceLink/SDLButtonName.h',
-'SmartDeviceLink/SDLButtonPress.h',
-'SmartDeviceLink/SDLButtonPressMode.h',
-'SmartDeviceLink/SDLCancelInteraction.h',
-'SmartDeviceLink/SDLCancelInteractionResponse.h',
-'SmartDeviceLink/SDLCarModeStatus.h',
-'SmartDeviceLink/SDLCarWindowViewController.h',
-'SmartDeviceLink/SDLChangeRegistration.h',
-'SmartDeviceLink/SDLChangeRegistrationResponse.h',
-'SmartDeviceLink/SDLCharacterSet.h',
-'SmartDeviceLink/SDLChoice.h',
-'SmartDeviceLink/SDLChoiceCell.h',
-'SmartDeviceLink/SDLChoiceSet.h',
-'SmartDeviceLink/SDLChoiceSetDelegate.h',
-'SmartDeviceLink/SDLClimateControlCapabilities.h',
-'SmartDeviceLink/SDLClimateControlData.h',
-'SmartDeviceLink/SDLCloseApplication.h',
-'SmartDeviceLink/SDLCloseApplicationResponse.h',
-'SmartDeviceLink/SDLCloudAppProperties.h',
-'SmartDeviceLink/SDLClusterModeStatus.h',
-'SmartDeviceLink/SDLCompassDirection.h',
-'SmartDeviceLink/SDLComponentVolumeStatus.h',
-'SmartDeviceLink/SDLConfiguration.h',
-'SmartDeviceLink/SDLCreateInteractionChoiceSet.h',
-'SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h',
-'SmartDeviceLink/SDLCreateWindow.h',
-'SmartDeviceLink/SDLCreateWindowResponse.h',
-'SmartDeviceLink/SDLDateTime.h',
-'SmartDeviceLink/SDLDefrostZone.h',
-'SmartDeviceLink/SDLDeleteCommand.h',
-'SmartDeviceLink/SDLDeleteCommandResponse.h',
-'SmartDeviceLink/SDLDeleteFile.h',
-'SmartDeviceLink/SDLDeleteFileResponse.h',
-'SmartDeviceLink/SDLDeleteInteractionChoiceSet.h',
-'SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.h',
-'SmartDeviceLink/SDLDeleteSubMenu.h',
-'SmartDeviceLink/SDLDeleteSubMenuResponse.h',
-'SmartDeviceLink/SDLDeleteWindow.h',
-'SmartDeviceLink/SDLDeleteWindowResponse.h',
-'SmartDeviceLink/SDLDeliveryMode.h',
-'SmartDeviceLink/SDLDeviceInfo.h',
-'SmartDeviceLink/SDLDeviceLevelStatus.h',
-'SmartDeviceLink/SDLDeviceStatus.h',
-'SmartDeviceLink/SDLDiagnosticMessage.h',
-'SmartDeviceLink/SDLDiagnosticMessageResponse.h',
-'SmartDeviceLink/SDLDialNumber.h',
-'SmartDeviceLink/SDLDialNumberResponse.h',
-'SmartDeviceLink/SDLDIDResult.h',
-'SmartDeviceLink/SDLDimension.h',
-'SmartDeviceLink/SDLDirection.h',
-'SmartDeviceLink/SDLDisplayCapability.h',
-'SmartDeviceLink/SDLDisplayCapabilities.h',
-'SmartDeviceLink/SDLDisplayMode.h',
-'SmartDeviceLink/SDLDisplayType.h',
-'SmartDeviceLink/SDLDistanceUnit.h',
-'SmartDeviceLink/SDLDriverDistractionState.h',
-'SmartDeviceLink/SDLECallConfirmationStatus.h',
-'SmartDeviceLink/SDLECallInfo.h',
-'SmartDeviceLink/SDLElectronicParkBrakeStatus.h',
-'SmartDeviceLink/SDLEncryptionConfiguration.h',
-'SmartDeviceLink/SDLEmergencyEvent.h',
-'SmartDeviceLink/SDLEmergencyEventType.h',
-'SmartDeviceLink/SDLEncodedSyncPData.h',
-'SmartDeviceLink/SDLEncodedSyncPDataResponse.h',
-'SmartDeviceLink/SDLEndAudioPassThru.h',
-'SmartDeviceLink/SDLEndAudioPassThruResponse.h',
-'SmartDeviceLink/SDLEqualizerSettings.h',
-'SmartDeviceLink/SDLEnum.h',
-'SmartDeviceLink/SDLErrorConstants.h',
-'SmartDeviceLink/SDLFile.h',
-'SmartDeviceLink/SDLFileManager.h',
-'SmartDeviceLink/SDLFileManagerConfiguration.h',
-'SmartDeviceLink/SDLFileManagerConstants.h',
-'SmartDeviceLink/SDLFileType.h',
-'SmartDeviceLink/SDLFuelCutoffStatus.h',
-'SmartDeviceLink/SDLFuelRange.h',
-'SmartDeviceLink/SDLFuelType.h',
-'SmartDeviceLink/SDLFunctionID.h',
-'SmartDeviceLink/SDLGenericResponse.h',
-'SmartDeviceLink/SDLGetAppServiceData.h',
-'SmartDeviceLink/SDLGetAppServiceDataResponse.h',
-'SmartDeviceLink/SDLGetDTCs.h',
-'SmartDeviceLink/SDLGetCloudAppProperties.h',
-'SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h',
-'SmartDeviceLink/SDLGetDTCsResponse.h',
-'SmartDeviceLink/SDLGetFile.h',
-'SmartDeviceLink/SDLGetFileResponse.h',
-'SmartDeviceLink/SDLGetInteriorVehicleData.h',
-'SmartDeviceLink/SDLGetInteriorVehicleDataConsent.h',
-'SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h',
-'SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h',
-'SmartDeviceLink/SDLGetSystemCapability.h',
-'SmartDeviceLink/SDLGetSystemCapabilityResponse.h',
-'SmartDeviceLink/SDLGetVehicleData.h',
-'SmartDeviceLink/SDLGetVehicleDataResponse.h',
-'SmartDeviceLink/SDLGetWaypoints.h',
-'SmartDeviceLink/SDLGetWaypointsResponse.h',
-'SmartDeviceLink/SDLGlobalProperty.h',
-'SmartDeviceLink/SDLGPSData.h',
-'SmartDeviceLink/SDLGrid.h',
-'SmartDeviceLink/SDLHapticRect.h',
-'SmartDeviceLink/SDLHeadLampStatus.h',
-'SmartDeviceLink/SDLHMICapabilities.h',
-'SmartDeviceLink/SDLHMILevel.h',
-'SmartDeviceLink/SDLHMIPermissions.h',
-'SmartDeviceLink/SDLHMISettingsControlCapabilities.h',
-'SmartDeviceLink/SDLHMISettingsControlData.h',
-'SmartDeviceLink/SDLHMIZoneCapabilities.h',
-'SmartDeviceLink/SDLHybridAppPreference.h',
-'SmartDeviceLink/SDLIgnitionStableStatus.h',
-'SmartDeviceLink/SDLIgnitionStatus.h',
-'SmartDeviceLink/SDLImage.h',
-'SmartDeviceLink/SDLImageField.h',
-'SmartDeviceLink/SDLImageFieldName.h',
-'SmartDeviceLink/SDLImageResolution.h',
-'SmartDeviceLink/SDLImageType.h',
-'SmartDeviceLink/SDLInteractionMode.h',
-'SmartDeviceLink/SDLKeyboardDelegate.h',
-'SmartDeviceLink/SDLKeyboardEvent.h',
-'SmartDeviceLink/SDLKeyboardLayout.h',
-'SmartDeviceLink/SDLKeyboardProperties.h',
-'SmartDeviceLink/SDLKeypressMode.h',
-'SmartDeviceLink/SDLLanguage.h',
-'SmartDeviceLink/SDLLayoutMode.h',
-'SmartDeviceLink/SDLLifecycleConfiguration.h',
-'SmartDeviceLink/SDLLifecycleConfigurationUpdate.h',
-'SmartDeviceLink/SDLLightCapabilities.h',
-'SmartDeviceLink/SDLLightControlCapabilities.h',
-'SmartDeviceLink/SDLLightControlData.h',
-'SmartDeviceLink/SDLLightName.h',
-'SmartDeviceLink/SDLLightState.h',
-'SmartDeviceLink/SDLLightStatus.h',
-'SmartDeviceLink/SDLListFiles.h',
-'SmartDeviceLink/SDLListFilesResponse.h',
-'SmartDeviceLink/SDLLocationCoordinate.h',
-'SmartDeviceLink/SDLLocationDetails.h',
-'SmartDeviceLink/SDLLockScreenConfiguration.h',
-'SmartDeviceLink/SDLLockScreenStatus.h',
-'SmartDeviceLink/SDLLockScreenViewController.h',
-'SmartDeviceLink/SDLLogConfiguration.h',
-'SmartDeviceLink/SDLLogConstants.h',
-'SmartDeviceLink/SDLLogFileModule.h',
-'SmartDeviceLink/SDLLogFilter.h',
-'SmartDeviceLink/SDLLogMacros.h',
-'SmartDeviceLink/SDLLogManager.h',
-'SmartDeviceLink/SDLLogTarget.h',
-'SmartDeviceLink/SDLLogTargetAppleSystemLog.h',
-'SmartDeviceLink/SDLLogTargetFile.h',
-'SmartDeviceLink/SDLLogTargetOSLog.h',
-'SmartDeviceLink/SDLMacros.h',
-'SmartDeviceLink/SDLMaintenanceModeStatus.h',
-'SmartDeviceLink/SDLManager.h',
-'SmartDeviceLink/SDLManagerDelegate.h',
-'SmartDeviceLink/SDLMassageCushionFirmness.h',
-'SmartDeviceLink/SDLMassageModeData.h',
-'SmartDeviceLink/SDLMassageCushion.h',
-'SmartDeviceLink/SDLMassageMode.h',
-'SmartDeviceLink/SDLMassageZone.h',
-'SmartDeviceLink/SDLMediaClockFormat.h',
-'SmartDeviceLink/SDLMediaServiceData.h',
-'SmartDeviceLink/SDLMediaServiceManifest.h',
-'SmartDeviceLink/SDLMediaType.h',
-'SmartDeviceLink/SDLMenuCell.h',
-'SmartDeviceLink/SDLMenuConfiguration.h',
-'SmartDeviceLink/SDLMenuLayout.h',
-'SmartDeviceLink/SDLMenuManagerConstants.h',
-'SmartDeviceLink/SDLMenuParams.h',
-'SmartDeviceLink/SDLMetadataTags.h',
-'SmartDeviceLink/SDLMetadataType.h',
-'SmartDeviceLink/SDLModuleData.h',
-'SmartDeviceLink/SDLModuleInfo.h',
-'SmartDeviceLink/SDLModuleType.h',
-'SmartDeviceLink/SDLMyKey.h',
-'SmartDeviceLink/SDLNavigationAction.h',
-'SmartDeviceLink/SDLNavigationCapability.h',
-'SmartDeviceLink/SDLNavigationInstruction.h',
-'SmartDeviceLink/SDLNavigationJunction.h',
-'SmartDeviceLink/SDLNavigationServiceData.h',
-'SmartDeviceLink/SDLNavigationServiceManifest.h',
-'SmartDeviceLink/SDLNotificationConstants.h',
-'SmartDeviceLink/SDLOasisAddress.h',
-'SmartDeviceLink/SDLOnAppInterfaceUnregistered.h',
-'SmartDeviceLink/SDLOnAppServiceData.h',
-'SmartDeviceLink/SDLOnAudioPassThru.h',
-'SmartDeviceLink/SDLOnButtonEvent.h',
-'SmartDeviceLink/SDLOnButtonPress.h',
-'SmartDeviceLink/SDLOnCommand.h',
-'SmartDeviceLink/SDLOnDriverDistraction.h',
-'SmartDeviceLink/SDLOnEncodedSyncPData.h',
-'SmartDeviceLink/SDLOnHashChange.h',
-'SmartDeviceLink/SDLOnInteriorVehicleData.h',
-'SmartDeviceLink/SDLOnHMIStatus.h',
-'SmartDeviceLink/SDLOnKeyboardInput.h',
-'SmartDeviceLink/SDLOnLanguageChange.h',
-'SmartDeviceLink/SDLOnLockScreenStatus.h',
-'SmartDeviceLink/SDLOnPermissionsChange.h',
-'SmartDeviceLink/SDLOnRCStatus.h',
-'SmartDeviceLink/SDLOnSyncPData.h',
-'SmartDeviceLink/SDLOnSystemCapabilityUpdated.h',
-'SmartDeviceLink/SDLOnSystemRequest.h',
-'SmartDeviceLink/SDLOnTBTClientState.h',
-'SmartDeviceLink/SDLOnTouchEvent.h',
-'SmartDeviceLink/SDLOnVehicleData.h',
-'SmartDeviceLink/SDLOnWayPointChange.h',
-'SmartDeviceLink/SDLParameterPermissions.h',
-'SmartDeviceLink/SDLPerformAppServiceInteraction.h',
-'SmartDeviceLink/SDLPerformAppServiceInteractionResponse.h',
-'SmartDeviceLink/SDLPerformAudioPassThru.h',
-'SmartDeviceLink/SDLPerformAudioPassThruResponse.h',
-'SmartDeviceLink/SDLPerformInteraction.h',
-'SmartDeviceLink/SDLPerformInteractionResponse.h',
-'SmartDeviceLink/SDLPermissionConstants.h',
-'SmartDeviceLink/SDLPermissionElement.h',
-'SmartDeviceLink/SDLPermissionItem.h',
-'SmartDeviceLink/SDLPermissionManager.h',
-'SmartDeviceLink/SDLPermissionStatus.h',
-'SmartDeviceLink/SDLPhoneCapability.h',
-'SmartDeviceLink/SDLPinchGesture.h',
-'SmartDeviceLink/SDLPowerModeQualificationStatus.h',
-'SmartDeviceLink/SDLPowerModeStatus.h',
-'SmartDeviceLink/SDLPredefinedLayout.h',
-'SmartDeviceLink/SDLPredefinedWindows.h',
-'SmartDeviceLink/SDLPrerecordedSpeech.h',
-'SmartDeviceLink/SDLPresetBankCapabilities.h',
-'SmartDeviceLink/SDLPrimaryAudioSource.h',
-'SmartDeviceLink/SDLPRNDL.h',
-'SmartDeviceLink/SDLProtocolConstants.h',
-'SmartDeviceLink/SDLPublishAppService.h',
-'SmartDeviceLink/SDLPublishAppServiceResponse.h',
-'SmartDeviceLink/SDLPutFile.h',
-'SmartDeviceLink/SDLPutFileResponse.h',
-'SmartDeviceLink/SDLRadioBand.h',
-'SmartDeviceLink/SDLRadioControlCapabilities.h',
-'SmartDeviceLink/SDLRadioControlData.h',
-'SmartDeviceLink/SDLRadioState.h',
-'SmartDeviceLink/SDLRDSData.h',
-'SmartDeviceLink/SDLReadDID.h',
-'SmartDeviceLink/SDLRectangle.h',
-'SmartDeviceLink/SDLReadDIDResponse.h',
-'SmartDeviceLink/SDLRectangle.h',
-'SmartDeviceLink/SDLRegisterAppInterface.h',
-'SmartDeviceLink/SDLRegisterAppInterfaceResponse.h',
-'SmartDeviceLink/SDLRemoteControlCapabilities.h',
-'SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.h',
-'SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.h',
-'SmartDeviceLink/SDLRequestType.h',
-'SmartDeviceLink/SDLResetGlobalProperties.h',
-'SmartDeviceLink/SDLResetGlobalPropertiesResponse.h',
-'SmartDeviceLink/SDLResult.h',
-'SmartDeviceLink/SDLRGBColor.h',
-'SmartDeviceLink/SDLRPCFunctionNames.h',
-'SmartDeviceLink/SDLRPCMessage.h',
-'SmartDeviceLink/SDLRPCMessageType.h',
-'SmartDeviceLink/SDLRPCNotification.h',
-'SmartDeviceLink/SDLRPCNotificationNotification.h',
-'SmartDeviceLink/SDLRPCPermissionStatus.h',
-'SmartDeviceLink/SDLRPCRequest.h',
-'SmartDeviceLink/SDLRPCRequestNotification.h',
-'SmartDeviceLink/SDLRPCResponse.h',
-'SmartDeviceLink/SDLRPCResponseNotification.h',
-'SmartDeviceLink/SDLRPCStruct.h',
-'SmartDeviceLink/SDLSamplingRate.h',
-'SmartDeviceLink/SDLScreenParams.h',
-'SmartDeviceLink/SDLScreenManager.h',
-'SmartDeviceLink/SDLScrollableMessage.h',
-'SmartDeviceLink/SDLScrollableMessageResponse.h',
-'SmartDeviceLink/SDLSeatControlCapabilities.h',
-'SmartDeviceLink/SDLSeatControlData.h',
-'SmartDeviceLink/SDLSeatLocation.h',
-'SmartDeviceLink/SDLSeatLocationCapability.h',
-'SmartDeviceLink/SDLSeatMemoryAction.h',
-'SmartDeviceLink/SDLSeatMemoryActionType.h',
-'SmartDeviceLink/SDLSecurityType.h',
-'SmartDeviceLink/SDLSendHapticData.h',
-'SmartDeviceLink/SDLSendHapticDataResponse.h',
-'SmartDeviceLink/SDLSendLocation.h',
-'SmartDeviceLink/SDLSendLocationResponse.h',
-'SmartDeviceLink/SDLServiceEncryptionDelegate.h',
-'SmartDeviceLink/SDLServiceUpdateReason.h',
-'SmartDeviceLink/SDLSetAppIcon.h',
-'SmartDeviceLink/SDLSetAppIconResponse.h',
-'SmartDeviceLink/SDLSetCloudAppProperties.h',
-'SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h',
-'SmartDeviceLink/SDLSetDisplayLayout.h',
-'SmartDeviceLink/SDLSetDisplayLayoutResponse.h',
-'SmartDeviceLink/SDLSetGlobalProperties.h',
-'SmartDeviceLink/SDLSetInteriorVehicleData.h',
-'SmartDeviceLink/SDLSetGlobalPropertiesResponse.h',
-'SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h',
-'SmartDeviceLink/SDLSetMediaClockTimer.h',
-'SmartDeviceLink/SDLSetMediaClockTimerResponse.h',
-'SmartDeviceLink/SDLShow.h',
-'SmartDeviceLink/SDLShowAppMenu.h',
-'SmartDeviceLink/SDLShowAppMenuResponse.h',
-'SmartDeviceLink/SDLShowConstantTBT.h',
-'SmartDeviceLink/SDLShowConstantTBTResponse.h',
-'SmartDeviceLink/SDLShowResponse.h',
-'SmartDeviceLink/SDLSingleTireStatus.h',
-'SmartDeviceLink/SDLSISData.h',
-'SmartDeviceLink/SDLSlider.h',
-'SmartDeviceLink/SDLSliderResponse.h',
-'SmartDeviceLink/SDLSoftButton.h',
-'SmartDeviceLink/SDLSoftButtonCapabilities.h',
-'SmartDeviceLink/SDLSoftButtonObject.h',
-'SmartDeviceLink/SDLSoftButtonState.h',
-'SmartDeviceLink/SDLSoftButtonType.h',
-'SmartDeviceLink/SDLSpeak.h',
-'SmartDeviceLink/SDLSpeakResponse.h',
-'SmartDeviceLink/SDLSpeechCapabilities.h',
-'SmartDeviceLink/SDLStartTime.h',
-'SmartDeviceLink/SDLStaticIconName.h',
-'SmartDeviceLink/SDLStationIDNumber.h',
-'SmartDeviceLink/SDLStreamingMediaConfiguration.h',
-'SmartDeviceLink/SDLStreamingMediaManager.h',
-'SmartDeviceLink/SDLStreamingMediaManagerConstants.h',
-'SmartDeviceLink/SDLStreamingMediaManagerDataSource.h',
-'SmartDeviceLink/SDLStreamingVideoScaleManager.h',
-'SmartDeviceLink/SDLSubscribeButton.h',
-'SmartDeviceLink/SDLSubscribeButtonResponse.h',
-'SmartDeviceLink/SDLSubscribeVehicleData.h',
-'SmartDeviceLink/SDLSubscribeVehicleDataResponse.h',
-'SmartDeviceLink/SDLSubscribeWaypoints.h',
-'SmartDeviceLink/SDLSubscribeWaypointsResponse.h',
-'SmartDeviceLink/SDLSupportedSeat.h',
-'SmartDeviceLink/SDLSyncMsgVersion.h',
-'SmartDeviceLink/SDLMsgVersion.h',
-'SmartDeviceLink/SDLSyncPData.h',
-'SmartDeviceLink/SDLSyncPDataResponse.h',
-'SmartDeviceLink/SDLSystemAction.h',
-'SmartDeviceLink/SDLSystemCapability.h',
-'SmartDeviceLink/SDLSystemCapabilityManager.h',
-'SmartDeviceLink/SDLSystemCapabilityType.h',
-'SmartDeviceLink/SDLSystemContext.h',
-'SmartDeviceLink/SDLSystemRequest.h',
-'SmartDeviceLink/SDLTBTState.h',
-'SmartDeviceLink/SDLTemperature.h',
-'SmartDeviceLink/SDLTemperatureUnit.h',
-'SmartDeviceLink/SDLTemplateConfiguration.h',
-'SmartDeviceLink/SDLTemplateColorScheme.h',
-'SmartDeviceLink/SDLTextAlignment.h',
-'SmartDeviceLink/SDLTextField.h',
-'SmartDeviceLink/SDLTextFieldName.h',
-'SmartDeviceLink/SDLTimerMode.h',
-'SmartDeviceLink/SDLTireStatus.h',
-'SmartDeviceLink/SDLTouch.h',
-'SmartDeviceLink/SDLTouchCoord.h',
-'SmartDeviceLink/SDLTouchEvent.h',
-'SmartDeviceLink/SDLTouchEventCapabilities.h',
-'SmartDeviceLink/SDLTouchManager.h',
-'SmartDeviceLink/SDLTouchManagerDelegate.h',
-'SmartDeviceLink/SDLTouchType.h',
-'SmartDeviceLink/SDLTPMS.h',
-'SmartDeviceLink/SDLTriggerSource.h',
-'SmartDeviceLink/SDLTTSChunk.h',
-'SmartDeviceLink/SDLTurn.h',
-'SmartDeviceLink/SDLTurnSignal.h',
-'SmartDeviceLink/SDLUnpublishAppService.h',
-'SmartDeviceLink/SDLUnpublishAppServiceResponse.h',
-'SmartDeviceLink/SDLUnregisterAppInterface.h',
-'SmartDeviceLink/SDLUnregisterAppInterfaceResponse.h',
-'SmartDeviceLink/SDLUnsubscribeButton.h',
-'SmartDeviceLink/SDLUnsubscribeButtonResponse.h',
-'SmartDeviceLink/SDLUnsubscribeVehicleData.h',
-'SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h',
-'SmartDeviceLink/SDLUnsubscribeWaypoints.h',
-'SmartDeviceLink/SDLUnsubscribeWaypointsResponse.h',
-'SmartDeviceLink/SDLUpdateMode.h',
-'SmartDeviceLink/SDLUpdateTurnList.h',
-'SmartDeviceLink/SDLUpdateTurnListResponse.h',
-'SmartDeviceLink/SDLVehicleDataActiveStatus.h',
-'SmartDeviceLink/SDLVehicleDataEventStatus.h',
-'SmartDeviceLink/SDLVehicleDataNotificationStatus.h',
-'SmartDeviceLink/SDLVehicleDataResult.h',
-'SmartDeviceLink/SDLVehicleDataResultCode.h',
-'SmartDeviceLink/SDLVehicleDataStatus.h',
-'SmartDeviceLink/SDLVehicleDataType.h',
-'SmartDeviceLink/SDLVentilationMode.h',
-'SmartDeviceLink/SDLVehicleType.h',
-'SmartDeviceLink/SDLVersion.h',
-'SmartDeviceLink/SDLVideoStreamingCapability.h',
-'SmartDeviceLink/SDLVideoStreamingCodec.h',
-'SmartDeviceLink/SDLVideoStreamingFormat.h',
-'SmartDeviceLink/SDLVideoStreamingProtocol.h',
-'SmartDeviceLink/SDLVideoStreamingState.h',
-'SmartDeviceLink/SDLVoiceCommand.h',
-'SmartDeviceLink/SDLVrCapabilities.h',
-'SmartDeviceLink/SDLVrHelpItem.h',
-'SmartDeviceLink/SDLWarningLightStatus.h',
-'SmartDeviceLink/SDLWayPointType.h',
-'SmartDeviceLink/SDLWeatherAlert.h',
-'SmartDeviceLink/SDLWeatherData.h',
-'SmartDeviceLink/SDLWeatherServiceData.h',
-'SmartDeviceLink/SDLWeatherServiceManifest.h',
-'SmartDeviceLink/SDLWiperStatus.h',
-'SmartDeviceLink/SDLWindowCapability.h',
-'SmartDeviceLink/SDLWindowType.h',
-'SmartDeviceLink/SDLWindowTypeCapabilities.h',
-'SmartDeviceLink/SmartDeviceLink.h',
-]
+sdefault.public_header_files = 'SmartDeviceLink/public/*.h'
+sdefault.private_header_files = 'SmartDeviceLink/private/*.h'
end
s.subspec 'Swift' do |sswift|
diff --git a/SmartDeviceLink/NSMutableDictionary+Store.h b/SmartDeviceLink/NSMutableDictionary+Store.h
deleted file mode 100644
index 26493a1b8..000000000
--- a/SmartDeviceLink/NSMutableDictionary+Store.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// NSMutableDictionary+Store.h
-// SmartDeviceLink-iOS
-//
-// Created by Muller, Alexander (A.) on 11/7/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import "SDLMacros.h"
-#import "SDLLogMacros.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString* SDLRPCParameterName SDL_SWIFT_ENUM;
-typedef NSString* SDLEnum SDL_SWIFT_ENUM;
-
-@interface NSDictionary (Store)
-
-- (void)sdl_setObject:(nullable NSObject *)object forName:(SDLRPCParameterName)name;
-
-- (nullable SDLEnum)sdl_enumForName:(SDLRPCParameterName)name error:(NSError * _Nullable *)error;
-- (nullable NSArray<SDLEnum> *)sdl_enumsForName:(SDLRPCParameterName)name error:(NSError * _Nullable *)error;
-
-/**
- * @param classType expected class of returned object
- * @param error if stored value isn't classType
- * @return object of classType or nil
-*/
-- (nullable id)sdl_objectForName:(SDLRPCParameterName)name ofClass:(Class)classType error:(NSError * _Nullable *)error;
-
-/**
- * @param classType expected class of array objects
- * @param error if array objects value isn't classType or stored objects aren't array
- * @return return array of classType or nil
-*/
-- (nullable NSArray *)sdl_objectsForName:(SDLRPCParameterName)name ofClass:(Class)classType error:(NSError * _Nullable *)error;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAddCommand.h b/SmartDeviceLink/SDLAddCommand.h
deleted file mode 100644
index 8265395f5..000000000
--- a/SmartDeviceLink/SDLAddCommand.h
+++ /dev/null
@@ -1,161 +0,0 @@
-// SDLAddCommand.h
-
-
-#import "SDLRPCRequest.h"
-
-#import "SDLImageType.h"
-#import "SDLNotificationConstants.h"
-
-@class SDLImage;
-@class SDLMenuParams;
-
-/**
- * This class will add a command to the application's Command Menu
- *
- * A command will be added to the end of the list of elements in the Command Menu under the following conditions:
- * 1. When a SDLAddCommand is added with no SDLMenuParams value provided.
- * 2. When a SDLMenuParams value is provided with a SDLMenuParam.position value greater than or equal to the number of menu items currently defined in the menu specified by the SDLMenuParam.parentID value.
- *
- * The set of choices which the application builds using SDLAddCommand can be a mixture of:
- * 1. Choices having only VR synonym definitions, but no SDLMenuParams definitions
- * 2. Choices having only SDLMenuParams definitions, but no VR synonym definitions
- * 3. Choices having both SDLMenuParams and VR synonym definitions
- *
- * HMILevel needs to be FULL, LIMITED or BACKGROUD
- * @since SDL 1.0
- * @see SDLDeleteCommand, SDLAddSubMenu, SDLDeleteSubMenu
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLAddCommand : SDLRPCRequest
-
-/**
- * Constructs a SDLAddCommand with a handler callback when an event occurs.
- *
- * @param handler A callback that is called when a button event occurs for the command.
- *
- * @return A SDLAddCommand object
- */
-- (instancetype)initWithHandler:(nullable SDLRPCCommandNotificationHandler)handler;
-
-/**
- * Convenience init for creating a voice command menu item.
- *
- * @discussion This menu item can only be triggered by the VR system and does not show up in the HMI application menu.
- *
- * @param commandId A unique id for the menu item.
- * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
- * @param handler Called when the VR system recognizes a phrase in `vrCommands`
- * @return A SDLAddCommand object
- */
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands handler:(nullable SDLRPCCommandNotificationHandler)handler;
-
-/**
- * Convenience init for creating a menu item with text.
- *
- * @param commandId A unique id for the menu item.
- * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
- * @param menuName The text that will appear in the menu.
- * @param handler Called when the menu item is selected and/or when the VR system recognizes a phrase in `vrCommands`
- * @return A SDLAddCommand object
- */
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName handler:(nullable SDLRPCCommandNotificationHandler)handler;
-
-/**
- * Convenience init for creating a menu item with text and a custom icon.
- *
- * @warning The icon must be uploaded to Core before being displayed in the menu.
- *
- * @param commandId A unique id for the menu item.
- * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
- * @param menuName The text that will appear in the menu.
- * @param parentId The command id of the parent menu if menu item is in a submenu. If not in a submenu, the parentId is 0.
- * @param position The menu item's row number in the menu.
- * @param iconValue The unique name used to upload the image to Core.
- * @param iconType Whether the image is static or dynamic.
- * @param handler Called when the menu item is selected and/or when the VR system recognizes a phrase in `vrCommands`
- * @return A SDLAddCommand object
- */
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position iconValue:(nullable NSString *)iconValue iconType:(nullable SDLImageType)iconType handler:(nullable SDLRPCCommandNotificationHandler)handler __deprecated_msg("Use initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:iconIsTemplate:handler: instead");
-
-/**
- * Convenience init for creating a menu item with text and a custom icon.
- *
- * @warning The icon must be uploaded to Core before being displayed in the menu.
- *
- * @param commandId A unique id for the menu item.
- * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
- * @param menuName The text that will appear in the menu.
- * @param parentId The command id of the parent menu if menu item is in a submenu. If not in a submenu, the parentId is 0.
- * @param position The menu item's row number in the menu.
- * @param iconValue The unique name used to upload the image to Core.
- * @param iconType Whether the image is static or dynamic.
- * @param iconIsTemplate Whether or not the image is a template that can be (re)colored by the SDL HMI
- * @param handler Called when the menu item is selected and/or when the VR system recognizes a phrase in `vrCommands`
- * @return A SDLAddCommand object
- */
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position iconValue:(nullable NSString *)iconValue iconType:(nullable SDLImageType)iconType iconIsTemplate:(BOOL)iconIsTemplate handler:(nullable SDLRPCCommandNotificationHandler)handler;
-
-/**
- * Convenience init for creating a menu item with text and a custom icon.
- *
- * @warning The icon must be uploaded to Core before being displayed in the menu.
- *
- * @param commandId A unique id for the menu item.
- * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
- * @param menuName The text that will appear in the menu.
- * @param parentId The command id of the parent menu if menu item is in a submenu. If not in a submenu, the parentId is 0.
- * @param position The menu item's row number in the menu.
- * @param icon A image that appears next to the `menuName` text.
- * @param handler Called when the menu item is selected and/or when the VR system recognizes a phrase in `vrCommands`
- * @return A SDLAddCommand object
- */
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position icon:(nullable SDLImage *)icon handler:(nullable SDLRPCCommandNotificationHandler)handler;
-
-/**
- * A handler that will let you know when the button you created is subscribed.
- *
- * @warning This will only work if you use `SDLManager`.
- */
-@property (nullable, copy, nonatomic) SDLRPCCommandNotificationHandler handler;
-
-/**
- * A unique id that identifies the command.
- *
- * @discussion Is returned in an `SDLOnCommand` notification to identify the command selected by the user
- *
- * Required, Integer, 0 - 2,000,000,000
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *cmdID;
-
-/**
- * A `SDLMenuParams` pointer which defines the command and how it is added to the command menu.
- *
- * @discussion If provided, this will define the command and how it is added to the command menu. If null, commands will not be accessible through the HMI application menu.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLMenuParams *menuParams;
-
-/**
- * An array of strings to be used as VR synonyms for this command.
- *
- * @discussion If provided, defines one or more VR phrases the recognition of any of which triggers the `SDLOnCommand` notification with this cmdID. If null, commands will not be accessible by voice commands (when the user hits push-to-talk).
- *
- * Optional, Array of Strings, Max String length 99 chars, Array size 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<NSString *> *vrCommands;
-
-/**
- * Image struct containing a static or dynamic icon.
- *
- * @discussion If provided, defines the image to be be shown along with a command. If omitted on supported displays, no (or the default if applicable) icon will be displayed
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLImage *cmdIcon;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAddCommand.m b/SmartDeviceLink/SDLAddCommand.m
deleted file mode 100644
index 0613f3193..000000000
--- a/SmartDeviceLink/SDLAddCommand.m
+++ /dev/null
@@ -1,150 +0,0 @@
-// SDLAddCommand.m
-//
-
-
-#import "SDLAddCommand.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLImage.h"
-#import "SDLMenuParams.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLAddCommand
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameAddCommand]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithHandler:(nullable SDLRPCCommandNotificationHandler)handler {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- _handler = handler;
-
- return self;
-}
-
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands handler:(nullable SDLRPCCommandNotificationHandler)handler {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.cmdID = @(commandId);
- self.vrCommands = [vrCommands mutableCopy];
- self.handler = handler;
-
- return self;
-}
-
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName handler:(nullable SDLRPCCommandNotificationHandler)handler {
- self = [self initWithId:commandId vrCommands:vrCommands handler:handler];
- if (!self) {
- return nil;
- }
-
- self.menuParams = [[SDLMenuParams alloc] initWithMenuName:menuName];
-
- return self;
-}
-
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position iconValue:(nullable NSString *)iconValue iconType:(nullable SDLImageType)iconType handler:(nullable SDLRPCCommandNotificationHandler)handler {
- self = [self initWithId:commandId vrCommands:vrCommands menuName:menuName handler:handler];
- if (!self) {
- return nil;
- }
-
- self.menuParams.parentID = @(parentId);
- self.menuParams.position = @(position);
-
- if (iconValue != nil && iconType != nil) {
- self.cmdIcon = [[SDLImage alloc] initWithName:iconValue ofType:iconType isTemplate:NO];
- }
-
- return self;
-}
-
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position iconValue:(nullable NSString *)iconValue iconType:(nullable SDLImageType)iconType iconIsTemplate:(BOOL)iconIsTemplate handler:(nullable SDLRPCCommandNotificationHandler)handler {
- self = [self initWithId:commandId vrCommands:vrCommands menuName:menuName handler:handler];
- if (!self) {
- return nil;
- }
-
- self.menuParams.parentID = @(parentId);
- self.menuParams.position = @(position);
-
- if (iconValue != nil && iconType != nil) {
- self.cmdIcon = [[SDLImage alloc] initWithName:iconValue ofType:iconType isTemplate:iconIsTemplate];
- }
-
- return self;
-}
-
-- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position icon:(nullable SDLImage *)icon handler:(nullable SDLRPCCommandNotificationHandler)handler {
- self = [self initWithId:commandId vrCommands:vrCommands menuName:menuName handler:handler];
- if (!self) {
- return nil;
- }
-
- self.menuParams.parentID = @(parentId);
- self.menuParams.position = @(position);
- self.cmdIcon = icon;
-
- return self;
-}
-
-#pragma mark - Getters / Setters
-
-- (void)setCmdID:(NSNumber<SDLInt> *)cmdID {
- [self.parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId];
-}
-
-- (NSNumber<SDLInt> *)cmdID {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error];
-}
-
-- (void)setMenuParams:(nullable SDLMenuParams *)menuParams {
- [self.parameters sdl_setObject:menuParams forName:SDLRPCParameterNameMenuParams];
-}
-
-- (nullable SDLMenuParams *)menuParams {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuParams ofClass:SDLMenuParams.class error:nil];
-}
-
-- (void)setVrCommands:(nullable NSArray<NSString *> *)vrCommands {
- [self.parameters sdl_setObject:vrCommands forName:SDLRPCParameterNameVRCommands];
-}
-
-- (nullable NSArray<NSString *> *)vrCommands {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRCommands ofClass:NSString.class error:nil];
-}
-
-- (void)setCmdIcon:(nullable SDLImage *)cmdIcon {
- [self.parameters sdl_setObject:cmdIcon forName:SDLRPCParameterNameCommandIcon];
-}
-
-- (nullable SDLImage *)cmdIcon {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandIcon ofClass:SDLImage.class error:nil];
-}
-
--(id)copyWithZone:(nullable NSZone *)zone {
- SDLAddCommand *newCommand = [super copyWithZone:zone];
- newCommand->_handler = self.handler;
-
- return newCommand;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAddSubMenu.h b/SmartDeviceLink/SDLAddSubMenu.h
deleted file mode 100644
index 6f289e811..000000000
--- a/SmartDeviceLink/SDLAddSubMenu.h
+++ /dev/null
@@ -1,109 +0,0 @@
-// SDLAddSubMenu.h
-
-
-#import "SDLRPCRequest.h"
-
-#import "SDLMenuLayout.h"
-
-@class SDLImage;
-
-/**
- * Add a SDLSubMenu to the Command Menu
- * <p>
- * A SDLSubMenu can only be added to the Top Level Menu (i.e.a SDLSubMenu cannot be
- * added to a SDLSubMenu), and may only contain commands as children
- * <p>
- * <p>
- * <b>HMILevel needs to be FULL, LIMITED or BACKGROUD</b>
- * </p>
- *
- * Since <b>SmartDeviceLink 1.0</b><br>
- * see SDLDeleteSubMenu SDLAddCommand SDLDeleteCommand
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLAddSubMenu : SDLRPCRequest
-
-
-/// Convenience init for creating an add submenu
-///
-/// @param menuId A menu id
-/// @param menuName The menu name
-/// @return An SDLAddSubMenu object
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName;
-
-/// Convenience init for creating an add submenu
-///
-/// @param menuId A menu id
-/// @param menuName The menu name
-/// @param position The position within the menu to add
-/// @return An SDLAddSubMenu object
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName position:(UInt8)position __deprecated_msg("Use initWithId:menuName:menuLayout:menuIcon:position: instead");
-
-/// Convenience init for creating an add submenu
-///
-/// @param menuId A menu id
-/// @param menuName The menu name
-/// @param icon The icon to show on the menu item
-/// @param position The position within the menu to add
-/// @return An SDLAddSubMenu object
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName menuIcon:(nullable SDLImage *)icon position:(UInt8)position __deprecated_msg("Use initWithId:menuName:menuLayout:menuIcon:position: instead");
-
-/// Convenience init for creating an add submenu with all properties.
-///
-/// @param menuId A menu id
-/// @param menuName The menu name
-/// @param menuLayout The sub-menu layout
-/// @param icon The icon to show on the menu item
-/// @param position The position within the menu to add
-/// @return An SDLAddSubMenu object
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName menuLayout:(nullable SDLMenuLayout)menuLayout menuIcon:(nullable SDLImage *)icon position:(UInt8)position;
-
-/**
- * a Menu ID that identifies a sub menu
- * @discussion This value is used in
- * <i>SDLAddCommand</i> to which SDLSubMenu is the parent of the command being added
- * <p>
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *menuID;
-
-/**
- * a position of menu
- * @discussion An NSNumber pointer representing the position within the items
- * of the top level Command Menu. 0 will insert at the front, 1
- * will insert after the first existing element, etc. Position of
- * any submenu will always be located before the return and exit
- * options
- * <p>
- * <b>Notes: </b><br/>
- * <ul>
- * <li>
- * Min Value: 0; Max Value: 1000</li>
- * <li>If position is greater or equal than the number of items
- * on top level, the sub menu will be appended by the end</li>
- * <li>If this parameter is omitted, the entry will be added at
- * the end of the list</li>
- * </ul>
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLInt> *position;
-
-/**
- * a menuName which is displayed representing this submenu item
- * @discussion NSString which will be displayed representing this submenu item
- */
-@property (strong, nonatomic) NSString *menuName;
-
-/**
- An image that is displayed alongside this submenu item
- */
-@property (strong, nonatomic, nullable) SDLImage *menuIcon;
-
-/**
- The sub-menu layout. See available menu layouts on SDLWindowCapability.menuLayoutsAvailable. Defaults to LIST.
- */
-@property (strong, nonatomic, nullable) SDLMenuLayout menuLayout;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAddSubMenu.m b/SmartDeviceLink/SDLAddSubMenu.m
deleted file mode 100644
index 649a10a31..000000000
--- a/SmartDeviceLink/SDLAddSubMenu.m
+++ /dev/null
@@ -1,98 +0,0 @@
-// SDLAddSubMenu.m
-
-#import "SDLAddSubMenu.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLImage.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLAddSubMenu
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameAddSubMenu]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.menuID = @(menuId);
- self.menuName = menuName;
-
- return self;
-}
-
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName position:(UInt8)position {
- return [self initWithId:menuId menuName:menuName menuLayout:nil menuIcon:nil position:position];
-}
-
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName menuIcon:(nullable SDLImage *)icon position:(UInt8)position {
- return [self initWithId:menuId menuName:menuName menuLayout:nil menuIcon:icon position:position];
-}
-
-- (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName menuLayout:(nullable SDLMenuLayout)menuLayout menuIcon:(nullable SDLImage *)icon position:(UInt8)position {
- self = [self initWithId:menuId menuName:menuName];
- if (!self) { return nil; }
-
- self.position = @(position);
- self.menuIcon = icon;
- self.menuLayout = menuLayout;
-
- return self;
-}
-
-- (void)setMenuID:(NSNumber<SDLInt> *)menuID {
- [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuId];
-}
-
-- (NSNumber<SDLInt> *)menuID {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuId ofClass:NSNumber.class error:&error];
-}
-
-- (void)setPosition:(nullable NSNumber<SDLInt> *)position {
- [self.parameters sdl_setObject:position forName:SDLRPCParameterNamePosition];
-}
-
-- (nullable NSNumber<SDLInt> *)position {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setMenuName:(NSString *)menuName {
- [self.parameters sdl_setObject:menuName forName:SDLRPCParameterNameMenuName];
-}
-
-- (NSString *)menuName {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:&error];
-}
-
-- (void)setMenuIcon:(nullable SDLImage *)menuIcon {
- [self.parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon];
-}
-
-- (nullable SDLImage *)menuIcon {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:[SDLImage class] error:nil];
-}
-
-- (void)setMenuLayout:(nullable SDLMenuLayout)menuLayout {
- [self.parameters sdl_setObject:menuLayout forName:SDLRPCParameterNameMenuLayout];
-}
-
-- (nullable SDLMenuLayout)menuLayout {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameMenuLayout error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAlert.h b/SmartDeviceLink/SDLAlert.h
deleted file mode 100644
index 6a9a25e57..000000000
--- a/SmartDeviceLink/SDLAlert.h
+++ /dev/null
@@ -1,264 +0,0 @@
-// SDLAlert.h
-//
-
-
-#import "SDLRPCRequest.h"
-
-@class SDLImage;
-@class SDLSoftButton;
-@class SDLTTSChunk;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Shows an alert which typically consists of text-to-speech message and text on the display. Either `alertText1`, `alertText2` or `TTSChunks` needs to be set or the request will be rejected.
-
- If connecting to SDL Core v.6.0+, the alert can be canceled programmatically using the `cancelID`. Canceling will not dismiss the alert's speech - only the modal view will be dismissed. On older versions of SDL Core, the alert will persist until the user has interacted with the alert or the specified timeout has elapsed.
-
- @since SDL 1.0
- */
-@interface SDLAlert : SDLRPCRequest
-
-/**
- Convenience init for creating a modal view with text, buttons, and optional sound cues.
-
- @param alertText The string to be displayed in the first field of the display
- @param softButtons Soft buttons to be displayed
- @param playTone Whether the alert tone should be played before the TTS (if any) is spoken
- @param ttsChunks Speech or a sound file to be played when the alert shows
- @param cancelID An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC
- @param icon Image to be displayed in the alert
- @return An SDLAlert object
- */
-- (instancetype)initWithAlertText:(nullable NSString *)alertText softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID;
-
-/**
- Convenience init for creating a sound-only alert.
-
- @param ttsChunks Speech or a sound file to be played when the alert shows
- @param playTone Whether the alert tone should be played before the TTS is spoken
- @return An SDLAlert object
- */
-- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks playTone:(BOOL)playTone;
-
-/**
- Convenience init for setting all alert parameters.
-
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param alertText3 The third line of the alert
- @param softButtons Buttons for the alert
- @param playTone Whether the alert tone should be played before the TTS (if any) is spoken
- @param ttsChunks An array of text chunks to be spoken or a prerecorded sound file
- @param duration The duration of the displayed portion of the alert, in milliseconds
- @param progressIndicator Whether an animation indicating that loading of a feature is progressing should be shown
- @param cancelID An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC
- @param icon Image to be displayed in the alert
- @return An SDLAlert object
- */
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(UInt16)duration progressIndicator:(BOOL)progressIndicator alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID;
-
-/**
- Convenience init for creating an alert with two lines of text and a timeout.
-
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param duration The duration of the displayed portion of the alert, in milliseconds
- @return An SDLAlert object
- */
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 duration:(UInt16)duration __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- Convenience init for creating an alert with three lines of text.
-
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param alertText3 The third line of the alert
- @return An SDLAlert object
- */
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- Convenience init for creating an alert with three lines of text and a timeout.
-
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param alertText3 The third line of the alert
- @param duration The duration of the displayed portion of the alert, in milliseconds
- @return An SDLAlert object
- */
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 duration:(UInt16)duration __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- Convenience init for creating an alert with three lines of text and a timeout.
-
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param alertText3 The third line of the alert
- @param duration The duration of the displayed portion of the alert, in milliseconds
- @param softButtons Buttons for the alert
- @return An SDLAlert object
- */
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 duration:(UInt16)duration softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- Convenience init for creating a speech-only alert.
-
- @param ttsText Speech to be played
- @param playTone Whether the alert tone should be played before the TTS is spoken
- @return An SDLAlert object
- */
-- (instancetype)initWithTTS:(nullable NSString *)ttsText playTone:(BOOL)playTone __deprecated_msg("Use initWithTTS:playTone: instead");
-
-/**
- Convenience init for creating an alert with two lines of text, optional sound cues, and a timout.
-
- @param ttsText Speech to be played
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param playTone Whether the alert tone should be played before the TTS is spoken
- @param duration The duration of the displayed portion of the alert, in milliseconds
- @return An SDLAlert object
- */
-- (instancetype)initWithTTS:(nullable NSString *)ttsText alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 playTone:(BOOL)playTone duration:(UInt16)duration __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- Convenience init for creating an alert with three lines of text, optional sound cues, and a timout.
-
- @param ttsText Speech to be played
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param alertText3 The third line of the alert
- @param playTone Whether the alert tone should be played before the TTS is spoken
- @param duration The duration of the displayed portion of the alert, in milliseconds
- @return An SDLAlert object
- */
-- (instancetype)initWithTTS:(nullable NSString *)ttsText alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 playTone:(BOOL)playTone duration:(UInt16)duration __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- Convenience init for creating an alert with three lines of text, soft buttons, and optional sound cues.
-
- @param ttsChunks Speech or a sound file to be played when the alert shows
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param alertText3 The third line of the alert
- @param playTone Whether the alert tone should be played before the TTS is spoken
- @param softButtons Buttons for the alert
- @return An SDLAlert object
- */
-- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 playTone:(BOOL)playTone softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- Convenience init for creating an alert with three lines of text, soft buttons, optional sound cues, and a timout.
-
- @param ttsChunks Speech or a sound file to be played when the alert shows
- @param alertText1 The first line of the alert
- @param alertText2 The second line of the alert
- @param alertText3 The third line of the alert
- @param playTone Whether the alert tone should be played before the TTS is spoken
- @param duration The duration of the displayed portion of the alert, in milliseconds
- @param softButtons Buttons for the alert
- @return An SDLAlert object
- */
-- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 playTone:(BOOL)playTone duration:(UInt16)duration softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons __deprecated_msg("Use initWithAlertText1:alertText2:alertText3:softButtons:playTone:ttsChunks:duration:progressIndicator:alertIcon:cancelID: instead");
-
-/**
- The first line of the alert text field.
-
- @discussion At least either `alertText1`, `alertText2` or `ttsChunks` need to be provided.
- @discussion If supported, the `displayCapabilities` will have a `TextField` with a `name` of `alertText1`.
-
- String, Optional, Max length 500 chars
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSString *alertText1;
-
-/**
- The second line of the alert text field.
-
- @discussion At least either `alertText1`, `alertText2` or `ttsChunks` need to be provided.
- @discussion If supported, the `displayCapabilities` will have a `TextField` with a `name` of `alertText2`
-
- String, Optional, Max length 500 chars
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSString *alertText2;
-
-/**
- The optional third line of the alert text field.
-
- @discussion If supported, the `displayCapabilities` will have a `TextField` with a `name` of `alertText3`
-
- String, Optional, Max length 500 chars
- @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSString *alertText3;
-
-/**
- An array of text chunks to be spoken or a prerecorded sound file.
-
- @discussion At least either `alertText1`, `alertText2` or `ttsChunks` need to be provided.
-
- Array of SDLTTSChunk, Optional, Array length 1 - 100
-
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *ttsChunks;
-
-/**
- The duration of the displayed portion of the alert, in milliseconds. Typical timeouts are 3 - 5 seconds. If omitted, the timeout is set to a default of 5 seconds.
-
- Integer, Optional, Min value: 3000, Max value: 10000
-
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *duration;
-
-/**
- Whether the alert tone should be played before the TTS (if any) is spoken. If omitted or set to false, no tone is played.
-
- Boolean, Optional
-
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *playTone;
-
-/**
- If supported on the given platform, the alert GUI will include some sort of animation indicating that loading of a feature is progressing (e.g. a spinning wheel or hourglass, etc.).
-
- Boolean, Optional
-
- @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *progressIndicator;
-
-/**
- Buttons for the displayed alert. If omitted on supported displays, the displayed alert shall not have any buttons.
-
- Array of SDLSoftButton, Optional, Array size 0 - 4
-
- @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLSoftButton *> *softButtons;
-
-/**
- An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.
-
- Integer, Optional
-
- @see SDLCancelInteraction
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
-
-/**
- Image to be displayed in the alert. If omitted on supported displays, no (or the default if applicable) icon should be displayed.
-
- SDLImage, Optional
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) SDLImage *alertIcon;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAlert.m b/SmartDeviceLink/SDLAlert.m
deleted file mode 100644
index 041943a29..000000000
--- a/SmartDeviceLink/SDLAlert.m
+++ /dev/null
@@ -1,179 +0,0 @@
-// SDLAlert.m
-
-#import "SDLAlert.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLImage.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLSoftButton.h"
-#import "SDLTTSChunk.h"
-
-static UInt16 const DefaultAlertDuration = 5000;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLAlert
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameAlert]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithAlertText:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(nullable NSNumber *)duration progressIndicator:(BOOL)progressIndicator alertIcon:(nullable SDLImage *)icon cancelID:(nullable NSNumber *)cancelID {
- self = [self init];
- if (!self) {
- return nil;
- }
- self.alertText1 = alertText1;
- self.alertText2 = alertText2;
- self.alertText3 = alertText3;
- self.ttsChunks = ttsChunks;
- self.duration = duration;
- self.playTone = @(playTone);
- self.progressIndicator = @(progressIndicator);
- self.softButtons = softButtons;
- self.alertIcon = icon;
- self.cancelID = cancelID;
-
- return self;
-}
-
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(UInt16)duration progressIndicator:(BOOL)progressIndicator alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID {
- return [self initWithAlertText:alertText1 alertText2:alertText2 alertText3:alertText3 softButtons:softButtons playTone:playTone ttsChunks:ttsChunks duration:@(duration) progressIndicator:progressIndicator alertIcon:icon cancelID:@(cancelID)];
-}
-
-- (instancetype)initWithTTS:(nullable NSString *)ttsText playTone:(BOOL)playTone {
- return [self initWithTTS:ttsText alertText1:nil alertText2:nil playTone:playTone duration:DefaultAlertDuration];
-}
-
-- (instancetype)initWithAlertText:(nullable NSString *)alertText softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID {
- return [self initWithAlertText:alertText alertText2:nil alertText3:nil softButtons:softButtons playTone:playTone ttsChunks:ttsChunks duration:nil progressIndicator:false alertIcon:icon cancelID:@(cancelID)];
-}
-
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 {
- return [self initWithAlertText1:alertText1 alertText2:alertText2 alertText3:alertText3 duration:DefaultAlertDuration];
-}
-
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 duration:(UInt16)duration {
- return [self initWithAlertText1:alertText1 alertText2:alertText2 alertText3:nil duration:duration];
-}
-
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 duration:(UInt16)duration {
- return [self initWithAlertText1:alertText1 alertText2:alertText2 alertText3:alertText3 duration:duration softButtons:nil];
-}
-
-- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 duration:(UInt16)duration softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
- return [self initWithTTSChunks:nil alertText1:alertText1 alertText2:alertText2 alertText3:alertText3 playTone:NO duration:duration softButtons:softButtons];
-}
-
-- (instancetype)initWithTTS:(nullable NSString *)ttsText alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 playTone:(BOOL)playTone duration:(UInt16)duration {
- return [self initWithTTS:ttsText alertText1:alertText1 alertText2:alertText2 alertText3:nil playTone:playTone duration:duration];
-}
-
-- (instancetype)initWithTTS:(nullable NSString *)ttsText alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 playTone:(BOOL)playTone duration:(UInt16)duration {
- NSArray *ttsChunks = [SDLTTSChunk textChunksFromString:ttsText];
- return [self initWithTTSChunks:ttsChunks alertText1:alertText1 alertText2:alertText2 alertText3:alertText3 playTone:playTone duration:duration softButtons:nil];
-}
-
-- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks playTone:(BOOL)playTone {
- return [self initWithAlertText:nil alertText2:nil alertText3:nil softButtons:nil playTone:playTone ttsChunks:ttsChunks duration:nil progressIndicator:false alertIcon:nil cancelID:nil];
-}
-
-- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 playTone:(BOOL)playTone softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
- return [self initWithTTSChunks:ttsChunks alertText1:alertText1 alertText2:alertText2 alertText3:alertText3 playTone:playTone duration:DefaultAlertDuration softButtons:softButtons];
-}
-
-- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 playTone:(BOOL)playTone duration:(UInt16)duration softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
- return [self initWithAlertText:alertText1 alertText2:alertText2 alertText3:alertText3 softButtons:softButtons playTone:playTone ttsChunks:ttsChunks duration:@(duration) progressIndicator:false alertIcon:nil cancelID:nil];
-}
-
-#pragma mark - Getters and Setters
-
-- (void)setAlertText1:(nullable NSString *)alertText1 {
- [self.parameters sdl_setObject:alertText1 forName:SDLRPCParameterNameAlertText1];
-}
-
-- (nullable NSString *)alertText1 {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText1 ofClass:NSString.class error:nil];
-}
-
-- (void)setAlertText2:(nullable NSString *)alertText2 {
- [self.parameters sdl_setObject:alertText2 forName:SDLRPCParameterNameAlertText2];
-}
-
-- (nullable NSString *)alertText2 {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText2 ofClass:NSString.class error:nil];
-}
-
-- (void)setAlertText3:(nullable NSString *)alertText3 {
- [self.parameters sdl_setObject:alertText3 forName:SDLRPCParameterNameAlertText3];
-}
-
-- (nullable NSString *)alertText3 {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText3 ofClass:NSString.class error:nil];
-}
-
-- (void)setTtsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks {
- [self.parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks];
-}
-
-- (nullable NSArray<SDLTTSChunk *> *)ttsChunks {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:nil];
-}
-
-- (void)setDuration:(nullable NSNumber<SDLInt> *)duration {
- [self.parameters sdl_setObject:duration forName:SDLRPCParameterNameDuration];
-}
-
-- (nullable NSNumber<SDLInt> *)duration {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDuration ofClass:NSNumber.class error:nil];
-}
-
-- (void)setPlayTone:(nullable NSNumber<SDLBool> *)playTone {
- [self.parameters sdl_setObject:playTone forName:SDLRPCParameterNamePlayTone];
-}
-
-- (nullable NSNumber<SDLBool> *)playTone {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePlayTone ofClass:NSNumber.class error:nil];
-}
-
-- (void)setProgressIndicator:(nullable NSNumber<SDLBool> *)progressIndicator {
- [self.parameters sdl_setObject:progressIndicator forName:SDLRPCParameterNameProgressIndicator];
-}
-
-- (nullable NSNumber<SDLBool> *)progressIndicator {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameProgressIndicator ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSoftButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
- [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons];
-}
-
-- (nullable NSArray<SDLSoftButton *> *)softButtons {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil];
-}
-
-- (void)setAlertIcon:(nullable SDLImage *)alertIcon {
- [self.parameters sdl_setObject:alertIcon forName:SDLRPCParameterNameAlertIcon];
-}
-
-- (nullable SDLImage *)alertIcon {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertIcon ofClass:SDLImage.class error:nil];
-}
-
-- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
- [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
-}
-
-- (nullable NSNumber<SDLInt> *)cancelID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAmbientLightStatus.h b/SmartDeviceLink/SDLAmbientLightStatus.h
deleted file mode 100644
index f4663ec61..000000000
--- a/SmartDeviceLink/SDLAmbientLightStatus.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// SDLAmbientLightStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of the ambient light sensor for headlamps
- *
- * @since SDL 3.0
- */
-typedef SDLEnum SDLAmbientLightStatus SDL_SWIFT_ENUM;
-
-/**
- * Represents a "night" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusNight;
-
-/**
- * Represents a "twilight 1" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight1;
-
-/**
- * Represents a "twilight 2" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight2;
-
-/**
- * Represents a "twilight 3" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight3;
-
-/**
- * Represents a "twilight 4" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight4;
-
-/**
- * Represents a "day" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusDay;
-
-/**
- * Represents an "unknown" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusUnknown;
-
-/**
- * Represents a "invalid" ambient light status
- */
-extern SDLAmbientLightStatus const SDLAmbientLightStatusInvalid;
diff --git a/SmartDeviceLink/SDLAppHMIType.h b/SmartDeviceLink/SDLAppHMIType.h
deleted file mode 100644
index 21ff96e61..000000000
--- a/SmartDeviceLink/SDLAppHMIType.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// SDLAppHMIType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration listing possible app hmi types.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLAppHMIType SDL_SWIFT_ENUM;
-
-/**
- * The App will have default rights.
- */
-extern SDLAppHMIType const SDLAppHMITypeDefault;
-
-/**
- * Communication type of App
- */
-extern SDLAppHMIType const SDLAppHMITypeCommunication;
-
-/**
- * App dealing with Media
- */
-extern SDLAppHMIType const SDLAppHMITypeMedia;
-
-/**
- * Messaging App
- */
-extern SDLAppHMIType const SDLAppHMITypeMessaging;
-
-/**
- * Navigation App
- */
-extern SDLAppHMIType const SDLAppHMITypeNavigation;
-
-/**
- * Information App
- */
-extern SDLAppHMIType const SDLAppHMITypeInformation;
-
-/**
- * App dealing with social media
- */
-extern SDLAppHMIType const SDLAppHMITypeSocial;
-
-/**
- * App dealing with Mobile Projection applications
- */
-extern SDLAppHMIType const SDLAppHMITypeProjection;
-
-/**
- * App designed for use in the background
- */
-extern SDLAppHMIType const SDLAppHMITypeBackgroundProcess;
-
-/**
- * App only for Testing purposes
- */
-extern SDLAppHMIType const SDLAppHMITypeTesting;
-
-/**
- * System App
- */
-extern SDLAppHMIType const SDLAppHMITypeSystem;
-
-/**
- * Remote control */
-extern SDLAppHMIType const SDLAppHMITypeRemoteControl;
diff --git a/SmartDeviceLink/SDLAppHMIType.m b/SmartDeviceLink/SDLAppHMIType.m
deleted file mode 100644
index 070ad089b..000000000
--- a/SmartDeviceLink/SDLAppHMIType.m
+++ /dev/null
@@ -1,18 +0,0 @@
-// SDLAppHMIType.m
-//
-
-
-#import "SDLAppHMIType.h"
-
-SDLAppHMIType const SDLAppHMITypeDefault = @"DEFAULT";
-SDLAppHMIType const SDLAppHMITypeCommunication = @"COMMUNICATION";
-SDLAppHMIType const SDLAppHMITypeMedia = @"MEDIA";
-SDLAppHMIType const SDLAppHMITypeMessaging = @"MESSAGING";
-SDLAppHMIType const SDLAppHMITypeNavigation = @"NAVIGATION";
-SDLAppHMIType const SDLAppHMITypeInformation = @"INFORMATION";
-SDLAppHMIType const SDLAppHMITypeSocial = @"SOCIAL";
-SDLAppHMIType const SDLAppHMITypeProjection = @"PROJECTION";
-SDLAppHMIType const SDLAppHMITypeBackgroundProcess = @"BACKGROUND_PROCESS";
-SDLAppHMIType const SDLAppHMITypeTesting = @"TESTING";
-SDLAppHMIType const SDLAppHMITypeSystem = @"SYSTEM";
-SDLAppHMIType const SDLAppHMITypeRemoteControl = @"REMOTE_CONTROL";
diff --git a/SmartDeviceLink/SDLAppInterfaceUnregisteredReason.h b/SmartDeviceLink/SDLAppInterfaceUnregisteredReason.h
deleted file mode 100644
index 8b30c6438..000000000
--- a/SmartDeviceLink/SDLAppInterfaceUnregisteredReason.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// SDLAppInterfaceUnregisteredReason.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Indicates reason why app interface was unregistered. The application is being disconnected by SDL.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLAppInterfaceUnregisteredReason SDL_SWIFT_ENUM;
-
-
-/**
- * Vehicle ignition turned off.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonIgnitionOff;
-
-/**
- * Bluetooth was turned off, causing termination of a necessary Bluetooth connection.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonBluetoothOff;
-
-/**
- * USB was disconnected, causing termination of a necessary iAP connection.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUSBDisconnected;
-
-/**
- * Application attempted SmartDeviceLink RPC request while HMILevel = NONE. App must have HMILevel other than NONE to issue RPC requests or get notifications or RPC responses.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel;
-
-/**
- * Either too many -- or too many per unit of time -- requests were made by the application.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonTooManyRequests;
-
-/**
- * The application has issued requests which cause driver distraction rules to be violated.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonDriverDistractionViolation;
-
-/**
- * The user performed a language change on the SDL platform, causing the application to need to be reregistered for the new language.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonLanguageChange;
-
-/**
- * The user performed a MASTER RESET on the SDL platform, causing removal of a necessary Bluetooth pairing.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonMasterReset;
-
-/**
- * The user restored settings to FACTORY DEFAULTS on the SDL platform.
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonFactoryDefaults;
-
-/**
- * The app is not being authorized to be connected to SDL.
- *
- * @since SDL 2.0
- */
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonAppUnauthorized;
-
-/// The app could not register due to a protocol violation
-///
-/// @since RPC 4.0
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonProtocolViolation;
-
-/// The HMI resource is unsupported
-///
-/// @since RPC 4.1
-extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource;
diff --git a/SmartDeviceLink/SDLAppInterfaceUnregisteredReason.m b/SmartDeviceLink/SDLAppInterfaceUnregisteredReason.m
deleted file mode 100644
index 8bc3231cf..000000000
--- a/SmartDeviceLink/SDLAppInterfaceUnregisteredReason.m
+++ /dev/null
@@ -1,18 +0,0 @@
-// SDLAppInterfaceUnregisteredReason.m
-//
-
-#import "SDLAppInterfaceUnregisteredReason.h"
-
-
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonIgnitionOff = @"IGNITION_OFF";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonBluetoothOff = @"BLUETOOTH_OFF";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUSBDisconnected = @"USB_DISCONNECTED";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel = @"REQUEST_WHILE_IN_NONE_HMI_LEVEL";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonTooManyRequests = @"TOO_MANY_REQUESTS";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonDriverDistractionViolation = @"DRIVER_DISTRACTION_VIOLATION";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonLanguageChange = @"LANGUAGE_CHANGE";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonMasterReset = @"MASTER_RESET";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonFactoryDefaults = @"FACTORY_DEFAULTS";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonAppUnauthorized = @"APP_UNAUTHORIZED";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonProtocolViolation = @"PROTOCOL_VIOLATION";
-SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource = @"UNSUPPORTED_HMI_RESOURCE";
diff --git a/SmartDeviceLink/SDLAppServiceManifest.h b/SmartDeviceLink/SDLAppServiceManifest.h
deleted file mode 100644
index 1548181a1..000000000
--- a/SmartDeviceLink/SDLAppServiceManifest.h
+++ /dev/null
@@ -1,219 +0,0 @@
-//
-// SDLAppServiceManifest.h
-// SmartDeviceLink
-//
-// Created by Nicole on 1/25/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLRPCRequest.h"
-
-#import "SDLAppServiceType.h"
-
-@class SDLFunctionID;
-@class SDLImage;
-@class SDLMediaServiceManifest;
-@class SDLNavigationServiceManifest;
-@class SDLSyncMsgVersion;
-@class SDLMsgVersion;
-@class SDLWeatherServiceManifest;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * This manifest contains all the information necessary for the service to be published, activated, and allow consumers to interact with it
- */
-@interface SDLAppServiceManifest : SDLRPCStruct
-
-/**
- * Convenience init for serviceType.
- *
- * @param serviceType The type of service that is to be offered by this app
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithAppServiceType:(SDLAppServiceType)serviceType NS_DESIGNATED_INITIALIZER;
-
-/**
- * Convenience init for a media service manifest.
- *
- * @param serviceName Unique name of this service
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param rpcSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param mediaServiceManifest A media service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithMediaServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest __deprecated_msg(("Use initWithMediaServiceName:serviceIcon:allowAppConsumers:maxRPCSpecVersion:handledRPCs:mediaServiceManifest instead"));
-
-/**
- * Convenience init for a media service manifest.
- *
- * @param serviceName Unique name of this service
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param mediaServiceManifest A media service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithMediaServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest;
-
-/**
- * Convenience init for a weather service manifest.
- *
- * @param serviceName Unique name of this service
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param rpcSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param weatherServiceManifest A weather service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithWeatherServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest __deprecated_msg(("Use initWithWeatherServiceName:serviceIcon:allowAppConsumers::maxRPCSpecVersion:handledRPCs:weatherServiceManifest instead"));
-
-/**
- * Convenience init for a weather service manifest.
- *
- * @param serviceName Unique name of this service
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param weatherServiceManifest A weather service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithWeatherServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest;
-
-/**
- * Convenience init for a navigation service manifest.
- *
- * @param serviceName Unique name of this service
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param rpcSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param navigationServiceManifest A navigation service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithNavigationServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest __deprecated_msg(("Use initWithNavigationServiceName:serviceIcon:allowAppConsumers:macRPCSpecVersion:handledRPCs:navigationServiceManifest instead"));
-
-/**
- * Convenience init for a navigation service manifest.
- *
- * @param serviceName Unique name of this service
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param navigationServiceManifest A navigation service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithNavigationServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest;
-
-/**
- * Convenience init for all parameters.
- *
- * @param serviceName Unique name of this service
- * @param serviceType The type of service that is to be offered by this app
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param rpcSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param mediaServiceManifest A media service manifest
- * @param weatherServiceManifest A weather service manifest
- * @param navigationServiceManifest A navigation service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithServiceName:(nullable NSString *)serviceName serviceType:(SDLAppServiceType)serviceType serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest __deprecated_msg(("Use initWithServiceName:serviceType:serviceIcon:allowAppConsumers:maxRPCSpecVersion:handledRPCs:mediaServiceManifest:weatherServiceManifest:navigationServiceManifest instead"));
-
-/**
- * Convenience init for all parameters.
- *
- * @param serviceName Unique name of this service
- * @param serviceType The type of service that is to be offered by this app
- * @param serviceIcon The file name of the icon to be associated with this service
- * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
- * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
- * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
- * @param mediaServiceManifest A media service manifest
- * @param weatherServiceManifest A weather service manifest
- * @param navigationServiceManifest A navigation service manifest
- * @return A SDLAppServiceManifest object
- */
-- (instancetype)initWithServiceName:(nullable NSString *)serviceName serviceType:(SDLAppServiceType)serviceType serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest;
-
-/**
- * Unique name of this service.
- *
- * String, Optional
- */
-@property (nullable, strong, nonatomic) NSString *serviceName;
-
-/**
- * The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.
- *
- * String, See `SDLAppServiceType`, Required
- */
-@property (strong, nonatomic) NSString *serviceType;
-
-/**
- * The file name of the icon to be associated with this service. Most likely the same as the appIcon.
- *
- * String, Optional
- */
-@property (nullable, strong, nonatomic) SDLImage *serviceIcon;
-
-/**
- * If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false.
- *
- * Boolean, Optional, default = NO
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *allowAppConsumers;
-
-/**
- * This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable.
- *
- * SyncMsgVersion, Optional
- */
-@property (nullable, strong, nonatomic) SDLSyncMsgVersion *rpcSpecVersion __deprecated_msg(("Use maxRPCSpecVersion instead"));
-
-/**
- * This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable.
- *
- * SDLMsgVersion, Optional
- */
-@property (nullable, strong, nonatomic) SDLMsgVersion *maxRPCSpecVersion;
-
-/**
- * This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. See FunctionID for enum equivalent values. This parameter is an integer to allow for new function IDs to be used by apps on older versions of SDL Core.
- *
- * Array of Integers, See `SDLFunctionID`, Optional
- */
-@property (nullable, strong, nonatomic) NSArray<NSNumber *> *handledRPCs;
-
-/**
- * A media service manifest.
- *
- * SDLMediaServiceManifest, Optional
- */
-@property (nullable, strong, nonatomic) SDLMediaServiceManifest *mediaServiceManifest;
-
-/**
- * A weather service manifest.
- *
- * SDLWeatherServiceManifest, Optional
- */
-@property (nullable, strong, nonatomic) SDLWeatherServiceManifest *weatherServiceManifest;
-
-/**
- * A navigation service manifest.
- *
- * SDLNavigationServiceManifest, Optional
- */
-@property (nullable, strong, nonatomic) SDLNavigationServiceManifest *navigationServiceManifest;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAppServiceManifest.m b/SmartDeviceLink/SDLAppServiceManifest.m
deleted file mode 100644
index fe5849145..000000000
--- a/SmartDeviceLink/SDLAppServiceManifest.m
+++ /dev/null
@@ -1,205 +0,0 @@
-//
-// SDLAppServiceManifest.m
-// SmartDeviceLink
-//
-// Created by Nicole on 1/25/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLAppServiceManifest.h"
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-#import "SDLFunctionID.h"
-#import "SDLImage.h"
-#import "SDLMediaServiceManifest.h"
-#import "SDLNavigationServiceManifest.h"
-#import "SDLSyncMsgVersion.h"
-#import "SDLMsgVersion.h"
-#import "SDLWeatherServiceManifest.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLAppServiceManifest
-
-- (instancetype)initWithAppServiceType:(SDLAppServiceType)serviceType {
- self = [super init];
- if (!self) {
- return self;
- }
-
- self.serviceType = serviceType;
-
- return self;
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)initWithMediaServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest {
- return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeMedia serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers rpcSpecVersion:rpcSpecVersion handledRPCs:handledRPCs mediaServiceManifest:mediaServiceManifest weatherServiceManifest:nil navigationServiceManifest:nil];
-}
-#pragma clang diagnostic pop
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)initWithWeatherServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest {
- return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeWeather serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers rpcSpecVersion:rpcSpecVersion handledRPCs:handledRPCs mediaServiceManifest:nil weatherServiceManifest:weatherServiceManifest navigationServiceManifest:nil];
-}
-#pragma clang diagnostic pop
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)initWithNavigationServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
- return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeNavigation serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers rpcSpecVersion:rpcSpecVersion handledRPCs:handledRPCs mediaServiceManifest:nil weatherServiceManifest:nil navigationServiceManifest:navigationServiceManifest];
-}
-#pragma clang diagnostic pop
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)initWithServiceName:(nullable NSString *)serviceName serviceType:(SDLAppServiceType)serviceType serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers rpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
- self = [self initWithAppServiceType:serviceType];
- if (!self) {
- return self;
- }
-
- self.serviceName = serviceName;
- self.serviceIcon = serviceIcon;
- self.allowAppConsumers = @(allowAppConsumers);
- self.rpcSpecVersion = rpcSpecVersion;
- self.handledRPCs = handledRPCs;
- self.mediaServiceManifest = mediaServiceManifest;
- self.weatherServiceManifest = weatherServiceManifest;
- self.navigationServiceManifest = navigationServiceManifest;
-
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithMediaServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest {
- return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeMedia serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers maxRPCSpecVersion:maxRPCSpecVersion handledRPCs:handledRPCs mediaServiceManifest:mediaServiceManifest weatherServiceManifest:nil navigationServiceManifest:nil];
-}
-
-- (instancetype)initWithWeatherServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest {
- return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeWeather serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers maxRPCSpecVersion:maxRPCSpecVersion handledRPCs:handledRPCs mediaServiceManifest:nil weatherServiceManifest:weatherServiceManifest navigationServiceManifest:nil];
-}
-
-- (instancetype)initWithNavigationServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
- return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeNavigation serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers maxRPCSpecVersion:maxRPCSpecVersion handledRPCs:handledRPCs mediaServiceManifest:nil weatherServiceManifest:nil navigationServiceManifest:navigationServiceManifest];
-}
-
-- (instancetype)initWithServiceName:(nullable NSString *)serviceName serviceType:(SDLAppServiceType)serviceType serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
- self = [self initWithAppServiceType:serviceType];
- if (!self) {
- return self;
- }
-
- self.serviceName = serviceName;
- self.serviceIcon = serviceIcon;
- self.allowAppConsumers = @(allowAppConsumers);
- self.maxRPCSpecVersion = maxRPCSpecVersion;
- self.handledRPCs = handledRPCs;
- self.mediaServiceManifest = mediaServiceManifest;
- self.weatherServiceManifest = weatherServiceManifest;
- self.navigationServiceManifest = navigationServiceManifest;
-
- return self;
-}
-
-- (void)setServiceName:(nullable NSString *)serviceName {
- [self.store sdl_setObject:serviceName forName:SDLRPCParameterNameServiceName];
-}
-
-- (nullable NSString *)serviceName {
- return [self.store sdl_objectForName:SDLRPCParameterNameServiceName ofClass:NSString.class error:nil];
-}
-
-- (void)setServiceType:(NSString *)serviceType {
- [self.store sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType];
-}
-
-- (NSString *)serviceType {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error];
-}
-
-- (void)setServiceIcon:(nullable SDLImage *)serviceIcon {
- [self.store sdl_setObject:serviceIcon forName:SDLRPCParameterNameServiceIcon];
-}
-
-- (nullable SDLImage *)serviceIcon {
- return [self.store sdl_objectForName:SDLRPCParameterNameServiceIcon ofClass:SDLImage.class error:nil];
-}
-
-- (void)setAllowAppConsumers:(nullable NSNumber<SDLBool> *)allowAppConsumers {
- [self.store sdl_setObject:allowAppConsumers forName:SDLRPCParameterNameAllowAppConsumers];
-}
-
-- (nullable NSNumber<SDLBool> *)allowAppConsumers {
- return [self.store sdl_objectForName:SDLRPCParameterNameAllowAppConsumers ofClass:NSNumber.class error:nil];
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (void)setRpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion {
- if (rpcSpecVersion == nil) {
- [self.store sdl_setObject:nil forName:SDLRPCParameterNameRPCSpecVersion];
- return;
- }
- SDLMsgVersion *maxRPCSpecVersion = [[SDLMsgVersion alloc] initWithMajorVersion:(uint8_t)rpcSpecVersion.majorVersion.unsignedIntValue minorVersion:(uint8_t)rpcSpecVersion.minorVersion.unsignedIntValue patchVersion:(uint8_t)rpcSpecVersion.patchVersion.unsignedIntValue];
- [self.store sdl_setObject:maxRPCSpecVersion forName:SDLRPCParameterNameRPCSpecVersion];
-}
-
-- (nullable SDLSyncMsgVersion *)rpcSpecVersion {
- SDLMsgVersion *maxRPCSpecVersion = [self.store sdl_objectForName:SDLRPCParameterNameRPCSpecVersion ofClass:SDLMsgVersion.class error:nil];
-
- if(maxRPCSpecVersion == nil) {
- return [self.store sdl_objectForName:SDLRPCParameterNameRPCSpecVersion ofClass:SDLSyncMsgVersion.class error:nil];
- }
-
- return [[SDLSyncMsgVersion alloc] initWithMajorVersion:(uint8_t)maxRPCSpecVersion.majorVersion.unsignedIntValue minorVersion:(uint8_t)maxRPCSpecVersion.minorVersion.unsignedIntValue patchVersion:(uint8_t)maxRPCSpecVersion.patchVersion.unsignedIntValue];
-}
-#pragma clang diagnostic pop
-
-- (void)setMaxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion {
- [self.store sdl_setObject:maxRPCSpecVersion forName:SDLRPCParameterNameRPCSpecVersion];
-}
-
-- (nullable SDLMsgVersion *)maxRPCSpecVersion {
- return [self.store sdl_objectForName:SDLRPCParameterNameRPCSpecVersion ofClass:SDLMsgVersion.class error:nil];
-}
-
-- (void)setHandledRPCs:(nullable NSArray<NSNumber *> *)handledRPCs {
- [self.store sdl_setObject:handledRPCs forName:SDLRPCParameterNameHandledRPCs];
-}
-
-- (nullable NSArray<NSNumber *> *)handledRPCs {
- return [self.store sdl_objectsForName:SDLRPCParameterNameHandledRPCs ofClass:NSNumber.class error:nil];
-}
-
-- (void)setWeatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest {
- [self.store sdl_setObject:weatherServiceManifest forName:SDLRPCParameterNameWeatherServiceManifest];
-}
-
-- (nullable SDLWeatherServiceManifest *)weatherServiceManifest {
- return [self.store sdl_objectForName:SDLRPCParameterNameWeatherServiceManifest ofClass:SDLWeatherServiceManifest.class error:nil];
-}
-
-- (void)setMediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest {
- [self.store sdl_setObject:mediaServiceManifest forName:SDLRPCParameterNameMediaServiceManifest];
-}
-
-- (nullable SDLMediaServiceManifest *)mediaServiceManifest {
- return [self.store sdl_objectForName:SDLRPCParameterNameMediaServiceManifest ofClass:SDLMediaServiceManifest.class error:nil];
-}
-
-- (void)setNavigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
- [self.store sdl_setObject:navigationServiceManifest forName:SDLRPCParameterNameNavigationServiceManifest];
-}
-
-- (nullable SDLNavigationServiceManifest *)navigationServiceManifest {
- return [self.store sdl_objectForName:SDLRPCParameterNameNavigationServiceManifest ofClass:SDLNavigationServiceManifest.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAppServiceType.h b/SmartDeviceLink/SDLAppServiceType.h
deleted file mode 100644
index 920f5109b..000000000
--- a/SmartDeviceLink/SDLAppServiceType.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// SDLAppServiceType.h
-// SmartDeviceLink
-//
-// Created by Nicole on 1/25/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration listing possible app service types.
- */
-typedef SDLEnum SDLAppServiceType SDL_SWIFT_ENUM;
-
-/**
- * The app will have a service type of media.
- */
-extern SDLAppServiceType const SDLAppServiceTypeMedia;
-
-/**
- * The app will have a service type of weather.
- */
-extern SDLAppServiceType const SDLAppServiceTypeWeather;
-
-/**
- * The app will have a service type of navigation.
- */
-extern SDLAppServiceType const SDLAppServiceTypeNavigation;
diff --git a/SmartDeviceLink/SDLArtwork.h b/SmartDeviceLink/SDLArtwork.h
deleted file mode 100644
index 0e8bd6180..000000000
--- a/SmartDeviceLink/SDLArtwork.h
+++ /dev/null
@@ -1,154 +0,0 @@
-//
-// SDLArtwork.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/15/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-#import "SDLFile.h"
-#import "SDLStaticIconName.h"
-
-@class SDLImage;
-
-/// Image format of an artwork file
-typedef NS_ENUM(NSUInteger, SDLArtworkImageFormat) {
-
- /// Image format: PNG
- SDLArtworkImageFormatPNG,
-
- /// Image format: JPG
- SDLArtworkImageFormatJPG
-};
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- An SDLFile subclass specifically designed for images
- */
-@interface SDLArtwork : SDLFile
-
-/**
- * Describes whether or not the image is a template that can be (re)colored by the SDL HMI. To make the artwork a template, set the `UIImage`s rendering mode to `UIImageRenderingModeAlwaysTemplate`. In order for templates to work successfully, the icon must be one solid color with a clear background. The artwork should be created using the PNG image format.
- *
- * @discussion An image should be templated if it is intended to be used as an icon in a button or menu.
- */
-@property (assign, nonatomic, readonly) BOOL isTemplate;
-
-/**
- The Image RPC representing this artwork. Generally for use internally, you should instead pass an artwork to a Screen Manager method.
- */
-@property (strong, nonatomic, readonly) SDLImage *imageRPC;
-
-/**
- * Convenience helper to create an ephemeral artwork from an image.
- *
- * This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
- *
- * Persistent files should be created using `persistentArtworkWithImage:name:asImageFormat:`
- *
- * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
- *
- * @param image The UIImage to be sent to the remote head unit
- * @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
- * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
- *
- * @return An instance of this class to be passed to the file manager.
- */
-+ (instancetype)artworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to false");
-
-/**
- * Convenience helper to create an ephemeral artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image's data which is created by hashing the data using the MD5 algorithm.
- *
- * This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
- *
- * Persistent files should be created using `persistentArtworkWithImage:name:asImageFormat:`
- *
- * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
- *
- * @param image The UIImage to be sent to the remote head unit
- * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
- *
- * @return An instance of this class to be passed to the file manager.
- */
-+ (instancetype)artworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to false");
-
-/**
- Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.
-
- @param staticIcon The static icon to be shown on the remote system.
-
- @return An instance of this class to be passed to a screen manager.
- */
-+ (instancetype)artworkWithStaticIcon:(SDLStaticIconName)staticIcon NS_SWIFT_UNAVAILABLE("Use the standard initializer");
-
-/**
- * Convenience helper to create a persistent artwork from an image.
- *
- * This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
- *
- * Ephemeral files should be created using `ephemeralArtworkWithImage:name:asImageFormat:`
- *
- * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
- *
- * @param image The UIImage to be sent to the remote head unit
- * @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
- * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
- *
- * @return An instance of this class to be passed to the file manager.
- */
-+ (instancetype)persistentArtworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");
-
-/**
- * Convenience helper to create a persistent artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image's data which is created by hashing the data using the MD5 algorithm.
- *
- * This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
- *
- * Ephemeral files should be created using `ephemeralArtworkWithImage:name:asImageFormat:`
- *
- * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
- *
- * @param image The UIImage to be sent to the remote head unit
- * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
- *
- * @return An instance of this class to be passed to the file manager.
- */
-+ (instancetype)persistentArtworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");
-
-/**
- * Create a file for transmission to the remote system from a UIImage.
- *
- * @param image The UIImage to be sent to the remote head unit
- * @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
- * @param persistent Whether or not the artwork should be persistent.
- * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
- *
- * @return An instance of this class to be passed to the file manager.
- */
-- (instancetype)initWithImage:(UIImage *)image name:(NSString *)name persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat;
-
-/**
- * Create a file for transmission to the remote system from a UIImage. A unique name will be assigned to the image. This name is a string representation of the image's data which is created by hashing the data using the MD5 algorithm.
-
- * @param image The UIImage to be sent to the remote head unit
- * @param persistent Whether or not the artwork should be persistent.
- * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
- *
- * @return An instance of this class to be passed to the file manager.
- */
-- (instancetype)initWithImage:(UIImage *)image persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat;
-
-/**
- Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.
-
- @param staticIcon The static icon to be shown on the remote system.
-
- @return An instance of this class to be passed to a screen manager.
- */
-- (instancetype)initWithStaticIcon:(SDLStaticIconName)staticIcon;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLArtwork.m b/SmartDeviceLink/SDLArtwork.m
deleted file mode 100644
index adb339115..000000000
--- a/SmartDeviceLink/SDLArtwork.m
+++ /dev/null
@@ -1,186 +0,0 @@
-//
-// SDLArtwork.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/15/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <CommonCrypto/CommonDigest.h>
-
-#import "SDLArtwork.h"
-#import "SDLFileType.h"
-#import "SDLImage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLFile ()
-
-@property (assign, nonatomic, readwrite) BOOL isStaticIcon;
-
-@end
-
-@interface SDLArtwork ()
-
-@property (strong, nonatomic) UIImage *image;
-@property (assign, nonatomic, readwrite) BOOL isTemplate;
-
-@end
-
-
-@implementation SDLArtwork
-
-#pragma mark - Lifecycle
-
-+ (instancetype)artworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat {
- return [[self alloc] initWithImage:image name:name persistent:NO asImageFormat:imageFormat];
-}
-
-+ (instancetype)artworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat {
- return [[self alloc] initWithImage:image persistent:NO asImageFormat:imageFormat];
-}
-
-+ (instancetype)artworkWithStaticIcon:(SDLStaticIconName)staticIcon {
- return [[self alloc] initWithStaticIcon:staticIcon];
-}
-
-+ (instancetype)persistentArtworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat {
- return [[self alloc] initWithImage:image name:name persistent:YES asImageFormat:imageFormat];
-}
-
-+ (instancetype)persistentArtworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat {
- return [[self alloc] initWithImage:image persistent:YES asImageFormat:imageFormat];
-}
-
-
-#pragma mark Private Lifecycle
-
-- (instancetype)initWithImage:(UIImage *)image name:(NSString *)name persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat {
- self.image = image;
- return [super initWithData:[self.class sdl_dataForUIImage:image imageFormat:imageFormat] name:name fileExtension:[self.class sdl_fileExtensionForImageFormat:imageFormat] persistent:persistent];
-}
-
-- (instancetype)initWithImage:(UIImage *)image persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat {
- self.image = image;
- NSData *imageData = [self.class sdl_dataForUIImage:image imageFormat:imageFormat];
- NSString *imageName = [self.class sdl_md5HashFromNSData:imageData];
- return [super initWithData:[self.class sdl_dataForUIImage:image imageFormat:imageFormat] name:(imageName != nil ? imageName : @"") fileExtension:[self.class sdl_fileExtensionForImageFormat:imageFormat] persistent:persistent];
-}
-
-- (instancetype)initWithStaticIcon:(SDLStaticIconName)staticIcon {
- self = [super initWithData:[staticIcon dataUsingEncoding:NSASCIIStringEncoding] name:staticIcon fileExtension:@"" persistent:NO];
- self.isStaticIcon = true;
-
- return self;
-}
-
-#pragma mark - Setters and Getters
-
-- (void)setImage:(UIImage *)image {
- _image = image;
- _isTemplate = (image.renderingMode == UIImageRenderingModeAlwaysTemplate);
-}
-
-- (SDLImage *)imageRPC {
- if (self.isStaticIcon) {
- return [[SDLImage alloc] initWithStaticIconName:self.name];
- } else {
- return [[SDLImage alloc] initWithName:self.name isTemplate:self.isTemplate];
- }
-}
-
-#pragma mark - Helper Methods
-
-/**
- * Returns the JPG or PNG image data for a UIImage.
- *
- * @param image A UIImage
- * @param imageFormat The image format to use when converting the UIImage to NSData
- * @return The image data
- */
-+ (NSData *)sdl_dataForUIImage:(UIImage *)image imageFormat:(SDLArtworkImageFormat)imageFormat {
- NSData *imageData = nil;
- switch (imageFormat) {
- case SDLArtworkImageFormatPNG: {
- imageData = UIImagePNGRepresentation(image);
- } break;
- case SDLArtworkImageFormatJPG: {
- imageData = UIImageJPEGRepresentation(image, 0.85);
- } break;
- }
- return imageData;
-}
-
-/**
- * Returns the file extension for the image format.
- *
- * @param imageFormat Whether the image is a PNG or JPG
- * @return The file extension for the image format
- */
-+ (NSString *)sdl_fileExtensionForImageFormat:(SDLArtworkImageFormat)imageFormat {
- NSString *fileExtension = nil;
- switch (imageFormat) {
- case SDLArtworkImageFormatPNG: {
- fileExtension = @"png";
- } break;
- case SDLArtworkImageFormatJPG: {
- fileExtension = @"jpg";
- } break;
- }
- return fileExtension;
-}
-
-/**
- * Creates a string representation of NSData by hashing the data using the MD5 hash function. This string is not guaranteed to be unique as collisions can occur, however collisions are extremely rare.
- *
- * HAX: A MD5 hash always creates a string with 32 characters (128-bits). Due to some implementations of Core not following the spec, file names that are too long are being rejected. To try to accommodate this setup, hashed file names are being truncated to 16 characters.
- *
- * Sourced from https://stackoverflow.com/questions/2018550/how-do-i-create-an-md5-hash-of-a-string-in-cocoa
- *
- * @param data The data to hash
- * @return A MD5 hash of the data
- */
-+ (NSString *)sdl_md5HashFromNSData:(NSData *)data {
- if (data == nil) { return nil; }
-
- unsigned char hash[CC_MD5_DIGEST_LENGTH];
- CC_MD5([data bytes], (CC_LONG)[data length], hash);
- NSMutableString *formattedHash = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
- // HAX: To shorten the string to 16 characters, the loop has been shortened to 8 fom 16.
- for (int i = 0; i < CC_MD5_DIGEST_LENGTH / 2; i += 1) {
- [formattedHash appendFormat:@"%02x", hash[i]];
- }
- return formattedHash;
-}
-
-#pragma mark - NSObject overrides
-
-- (NSUInteger)hash {
- return self.name.hash ^ self.data.hash;
-}
-
-- (BOOL)isEqual:(id)object {
- if (self == object) { return YES; }
-
- if (![object isKindOfClass:[SDLArtwork class]]) { return NO; }
-
- return [self isEqualToArtwork:(SDLArtwork *)object];
-}
-
-- (BOOL)isEqualToArtwork:(SDLArtwork *)artwork {
- if (!artwork) { return NO; }
-
- BOOL haveEqualNames = [self.name isEqualToString:artwork.name];
- BOOL haveEqualData = [self.data isEqualToData:artwork.data];
- BOOL haveEqualFormats = [self.fileType isEqualToEnum:artwork.fileType];
-
- return haveEqualNames && haveEqualData && haveEqualFormats;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"SDLArtwork name: %@, image: %@, isTemplate: %@, isStaticIcon: %@", self.name, self.image, (self.isTemplate ? @"YES" : @"NO"), (self.isStaticIcon ? @"YES" : @"NO")];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAudioControlCapabilities.h b/SmartDeviceLink/SDLAudioControlCapabilities.h
deleted file mode 100644
index 7c2d6bba4..000000000
--- a/SmartDeviceLink/SDLAudioControlCapabilities.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// SDLAudioControlCapabilities.h
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLModuleInfo.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Describes a head unit's audio control capabilities.
-
- @since RPC 5.0
- */
-@interface SDLAudioControlCapabilities : SDLRPCStruct
-
-/**
- Constructs a newly allocated SDLAudioControlCapabilities object with audio control module name (max 100 chars)
-
- @param name The short friendly name of the audio control module.
- @return An instance of the SDLAudioControlCapabilities class.
- */
-- (instancetype)initWithModuleName:(NSString *)name __deprecated_msg("Use initWithModuleName:moduleInfo: instead");
-
-/**
- Constructs a newly allocated SDLAudioControlCapabilities object with audio control module name (max 100 chars)
-
- @param name The short friendly name of the audio control module.
- @param moduleInfo Information about a RC module, including its id.
- @return An instance of the SDLAudioControlCapabilities class.
- */
-- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo;
-
-/**
- Constructs a newly allocated SDLAudioControlCapabilities object with given parameters
-
- @param name The short friendly name of the audio control module.
- @param sourceAvailable Availability of the control of audio source.
- @param volumeAvailable Availability of the volume of audio source.
- @param equalizerAvailable Availability of the equalizer of audio source.
- @param equalizerMaxChannelID Equalizer channel ID (between 1-100).
- @return An instance of the SDLAudioControlCapabilities class.
- */
-- (instancetype)initWithModuleName:(NSString *)name sourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable keepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable volumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable equalizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable equalizerMaxChannelID:(nullable NSNumber<SDLInt> *)equalizerMaxChannelID __deprecated_msg("Use initWithModuleName:moduleInfo:sourceAvailable:keepContextAvailable:volumeAvailable:equalizerAvailable:equalizerMaxChannelID: instead");
-
-/**
- Constructs a newly allocated SDLAudioControlCapabilities object with given parameters
-
- @param name The short friendly name of the audio control module.
- @param moduleInfo Information about a RC module, including its id.
- @param sourceAvailable Availability of the control of audio source.
- @param volumeAvailable Availability of the volume of audio source.
- @param equalizerAvailable Availability of the equalizer of audio source.
- @param equalizerMaxChannelID Equalizer channel ID (between 1-100).
- @return An instance of the SDLAudioControlCapabilities class.
- */
-- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo sourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable keepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable volumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable equalizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable equalizerMaxChannelID:(nullable NSNumber<SDLInt> *)equalizerMaxChannelID;
-
-/**
- * @abstract The short friendly name of the audio control module.
- * It should not be used to identify a module by mobile application.
- *
- * Required, Max String length 100 chars
- */
-@property (strong, nonatomic) NSString *moduleName;
-
-/**
- * @abstract Availability of the control of audio source.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *sourceAvailable;
-
-/**
- Availability of the keepContext parameter.
-
- Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *keepContextAvailable;
-
-/**
- * @abstract Availability of the control of audio volume.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *volumeAvailable;
-
-/**
- * @abstract Availability of the control of Equalizer Settings.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *equalizerAvailable;
-
-/**
- * @abstract Must be included if equalizerAvailable=true,
- * and assume all IDs starting from 1 to this value are valid
- *
- * Optional, Integer 1 - 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *equalizerMaxChannelId;
-
-/**
- * Information about a RC module, including its id.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAudioControlCapabilities.m b/SmartDeviceLink/SDLAudioControlCapabilities.m
deleted file mode 100644
index bc7ff568d..000000000
--- a/SmartDeviceLink/SDLAudioControlCapabilities.m
+++ /dev/null
@@ -1,126 +0,0 @@
-// SDLAudioControlCapabilities.m
-//
-
-#import "SDLAudioControlCapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLAudioControlCapabilities
-
-- (instancetype)initWithModuleName:(NSString *)name {
- self = [self init];
- if (!self) {
- return nil;
- }
- self.moduleName = name;
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo {
- self = [self init];
- if (!self) {
- return nil;
- }
- self.moduleName = name;
- self.moduleInfo = moduleInfo;
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)name sourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable keepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable volumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable equalizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable equalizerMaxChannelID:(nullable NSNumber<SDLInt> *)equalizerMaxChannelID {
- self = [self init];
- if (!self) {
- return nil;
- }
- self.moduleName = name;
- self.sourceAvailable = sourceAvailable;
- self.keepContextAvailable = keepContextAvailable;
- self.volumeAvailable = volumeAvailable;
- self.equalizerAvailable = equalizerAvailable;
- self.equalizerMaxChannelId = equalizerMaxChannelID;
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo sourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable keepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable volumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable equalizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable equalizerMaxChannelID:(nullable NSNumber<SDLInt> *)equalizerMaxChannelID {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleName = name;
- self.moduleInfo = moduleInfo;
- self.sourceAvailable = sourceAvailable;
- self.keepContextAvailable = keepContextAvailable;
- self.volumeAvailable = volumeAvailable;
- self.equalizerAvailable = equalizerAvailable;
- self.equalizerMaxChannelId = equalizerMaxChannelID;
-
- return self;
-
-}
-
-
-- (void)setModuleName:(NSString *)moduleName {
- [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
-}
-
-- (NSString *)moduleName {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
-}
-
-- (void)setSourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable {
- [self.store sdl_setObject:sourceAvailable forName:SDLRPCParameterNameSourceAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)sourceAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameSourceAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setKeepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable {
- [self.store sdl_setObject:keepContextAvailable forName:SDLRPCParameterNameKeepContextAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)keepContextAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameKeepContextAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVolumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable {
- [self.store sdl_setObject:volumeAvailable forName:SDLRPCParameterNameVolumeAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)volumeAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameVolumeAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEqualizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable {
- [self.store sdl_setObject:equalizerAvailable forName:SDLRPCParameterNameEqualizerAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)equalizerAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameEqualizerAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEqualizerMaxChannelId:(nullable NSNumber<SDLInt> *)equalizerMaxChannelId {
- [self.store sdl_setObject:equalizerMaxChannelId forName:SDLRPCParameterNameEqualizerMaxChannelId];
-}
-
-- (nullable NSNumber<SDLInt> *)equalizerMaxChannelId {
- return [self.store sdl_objectForName:SDLRPCParameterNameEqualizerMaxChannelId ofClass:NSNumber.class error:nil];
-}
-
-- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
- [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
-}
-
-- (nullable SDLModuleInfo *)moduleInfo {
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAudioStreamManager.m b/SmartDeviceLink/SDLAudioStreamManager.m
deleted file mode 100755
index f8486272a..000000000
--- a/SmartDeviceLink/SDLAudioStreamManager.m
+++ /dev/null
@@ -1,181 +0,0 @@
-//
-// SDLBinaryAudioManager.m
-// SmartDeviceLink-Example
-//
-// Created by Joel Fischer on 10/24/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLAudioStreamManager.h"
-
-#import "SDLAudioFile.h"
-#import "SDLAudioStreamManagerDelegate.h"
-#import "SDLError.h"
-#import "SDLFile.h"
-#import "SDLGlobals.h"
-#import "SDLLogMacros.h"
-#import "SDLManager.h"
-#import "SDLPCMAudioConverter.h"
-#import "SDLStreamingAudioManagerType.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLAudioStreamManager ()
-
-@property (weak, nonatomic) id<SDLStreamingAudioManagerType> streamManager;
-@property (strong, nonatomic) NSMutableArray<SDLAudioFile *> *mutableQueue;
-@property (strong, nonatomic) dispatch_queue_t audioQueue;
-@property (assign, nonatomic, readwrite, getter=isPlaying) BOOL playing;
-
-@property (assign, nonatomic) BOOL shouldPlayWhenReady;
-
-@end
-
-@implementation SDLAudioStreamManager
-
-- (instancetype)initWithManager:(id<SDLStreamingAudioManagerType>)streamManager {
- self = [super init];
- if (!self) { return nil; }
-
- _mutableQueue = [NSMutableArray array];
- _shouldPlayWhenReady = NO;
-
- if (@available(iOS 10.0, *)) {
- _audioQueue = dispatch_queue_create_with_target("com.sdl.audiomanager.transcode", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
- } else {
- _audioQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- }
-
- _streamManager = streamManager;
-
- return self;
-}
-
-- (void)stop {
- dispatch_async(_audioQueue, ^{
- self.shouldPlayWhenReady = NO;
- [self.mutableQueue removeAllObjects];
- });
-}
-
-#pragma mark - Getters
-
-- (NSArray<SDLFile *> *)queue {
- return [_mutableQueue copy];
-}
-
-#pragma mark - Pushing to the Queue
-#pragma mark Files
-
-- (void)pushWithFileURL:(NSURL *)fileURL {
- dispatch_async(_audioQueue, ^{
- [self sdl_pushWithContentsOfURL:fileURL];
- });
-}
-
-- (void)sdl_pushWithContentsOfURL:(NSURL *)fileURL {
- // Convert and store in the queue
- NSError *error = nil;
- SDLPCMAudioConverter *converter = [[SDLPCMAudioConverter alloc] initWithFileURL:fileURL];
- NSURL *_Nullable outputFileURL = [converter convertFileWithError:&error];
- UInt32 estimatedDuration = converter.estimatedDuration;
-
- if (outputFileURL == nil) {
- SDLLogE(@"Error converting file to CAF / PCM: %@", error);
- if (self.delegate != nil) {
- [self.delegate audioStreamManager:self errorDidOccurForFile:fileURL error:error];
- }
- return;
- }
-
- SDLAudioFile *audioFile = [[SDLAudioFile alloc] initWithInputFileURL:fileURL outputFileURL:outputFileURL estimatedDuration:estimatedDuration];
- [self.mutableQueue addObject:audioFile];
-
- if (self.shouldPlayWhenReady) {
- [self sdl_playNextWhenReady];
- }
-}
-
-#pragma mark Raw Data
-
-- (void)pushWithData:(NSData *)data {
- dispatch_async(_audioQueue, ^{
- [self sdl_pushWithData:data];
- });
-}
-
-- (void)sdl_pushWithData:(NSData *)data {
- SDLAudioFile *audioFile = [[SDLAudioFile alloc] initWithData:data];
- [self.mutableQueue addObject:audioFile];
-}
-
-#pragma mark Playing from the Queue
-
-- (void)playNextWhenReady {
- dispatch_async(_audioQueue, ^{
- [self sdl_playNextWhenReady];
- });
-}
-
-- (void)sdl_playNextWhenReady {
- if (self.mutableQueue.count == 0) {
- self.shouldPlayWhenReady = YES;
- return;
- }
-
- if (!self.streamManager.isAudioConnected) {
- if (self.delegate != nil) {
- NSError *error = [NSError sdl_audioStreamManager_notConnected];
- [self.delegate audioStreamManager:self errorDidOccurForFile:self.mutableQueue.firstObject.inputFileURL error:error];
- }
- return;
- }
-
- self.shouldPlayWhenReady = NO;
- __block SDLAudioFile *file = self.mutableQueue.firstObject;
- [self.mutableQueue removeObjectAtIndex:0];
-
- // Strip the first bunch of bytes (because of how Apple outputs the data) and send to the audio stream, if we don't do this, it will make a weird click sound
- NSData *audioData = nil;
- if (file.inputFileURL != nil) {
- audioData = [file.data subdataWithRange:NSMakeRange(5760, (file.data.length - 5760))];
- } else {
- audioData = file.data;
- }
-
- // Send the audio file, which starts it playing immediately
- SDLLogD(@"Playing audio file: %@", file);
- __block BOOL success = [self.streamManager sendAudioData:audioData];
- self.playing = YES;
-
- // Determine the length of the audio PCM data and perform a few items once the audio has finished playing
- float audioLengthSecs = (float)audioData.length / (float)32000.0;
- __weak typeof(self) weakself = self;
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(audioLengthSecs * NSEC_PER_SEC)), [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
- __strong typeof(weakself) strongSelf = weakself;
-
- strongSelf.playing = NO;
- NSError *error = nil;
- if (strongSelf.delegate != nil) {
- if (file.inputFileURL != nil) {
- [strongSelf.delegate audioStreamManager:strongSelf fileDidFinishPlaying:file.inputFileURL successfully:success];
- } else if ([strongSelf.delegate respondsToSelector:@selector(audioStreamManager:dataBufferDidFinishPlayingSuccessfully:)]) {
- [strongSelf.delegate audioStreamManager:strongSelf dataBufferDidFinishPlayingSuccessfully:success];
- }
- }
-
- SDLLogD(@"Ending Audio file: %@", file);
- [[NSFileManager defaultManager] removeItemAtURL:file.outputFileURL error:&error];
- if (strongSelf.delegate != nil && error != nil) {
- if (file.inputFileURL != nil) {
- [strongSelf.delegate audioStreamManager:strongSelf errorDidOccurForFile:file.inputFileURL error:error];
- } else if ([strongSelf.delegate respondsToSelector:@selector(audioStreamManager:errorDidOccurForDataBuffer:)]) {
- [strongSelf.delegate audioStreamManager:strongSelf errorDidOccurForDataBuffer:error];
- }
- }
- });
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAudioStreamingIndicator.h b/SmartDeviceLink/SDLAudioStreamingIndicator.h
deleted file mode 100644
index 61590002f..000000000
--- a/SmartDeviceLink/SDLAudioStreamingIndicator.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// SDLAudioStreamingIndicator.h
-//
-
-#import "SDLEnum.h"
-
-
-/**
- * Enumeration listing possible indicators of audio streaming changes
- *
- * @since SDL 4.6
- */
-typedef SDLEnum SDLAudioStreamingIndicator SDL_SWIFT_ENUM;
-
-/**
- * Default playback indicator.
- * By default the playback indicator should be PLAY_PAUSE when:
- * - the media app is newly registered on the head unit (after RegisterAppInterface)
- * - the media app was closed by the user (App enteres HMI_NONE)
- * - the app sends SetMediaClockTimer with audioStreamingIndicator not set to any value
- */
-extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorPlayPause;
-
-/**
- * Indicates that a button press of the Play/Pause button starts the audio playback.
- */
-extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorPlay;
-
-/**
- * Indicates that a button press of the Play/Pause button pauses the current audio playback.
- */
-extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorPause;
-
-/**
- * Indicates that a button press of the Play/Pause button stops the current audio playback.
- */
-extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorStop;
diff --git a/SmartDeviceLink/SDLAudioStreamingState.h b/SmartDeviceLink/SDLAudioStreamingState.h
deleted file mode 100644
index 6aa746757..000000000
--- a/SmartDeviceLink/SDLAudioStreamingState.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// SDLAudioStreamingState.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Describes whether or not streaming audio is currently audible to the user. Though provided in every OnHMIStatus notification, this information is only relevant for applications that declare themselves as media apps in RegisterAppInterface
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLAudioStreamingState SDL_SWIFT_ENUM;
-
-/**
- * Currently streaming audio, if any, is audible to user.
- */
-extern SDLAudioStreamingState const SDLAudioStreamingStateAudible;
-
-/**
- * Some kind of audio mixing is taking place. Currently streaming audio, if any, is audible to the user at a lowered volume.
- *
- * @since SDL 2.0
- */
-extern SDLAudioStreamingState const SDLAudioStreamingStateAttenuated;
-
-/**
- * Currently streaming audio, if any, is not audible to user. made via VR session.
- */
-extern SDLAudioStreamingState const SDLAudioStreamingStateNotAudible;
diff --git a/SmartDeviceLink/SDLAudioType.h b/SmartDeviceLink/SDLAudioType.h
deleted file mode 100644
index 283be1ea8..000000000
--- a/SmartDeviceLink/SDLAudioType.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// SDLAudioType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Describes different audio type options for PerformAudioPassThru
- */
-typedef SDLEnum SDLAudioType SDL_SWIFT_ENUM;
-
-/**
- * PCM raw audio
- *
- * @since SDL 2.0
- */
-extern SDLAudioType const SDLAudioTypePCM;
-
diff --git a/SmartDeviceLink/SDLBitsPerSample.h b/SmartDeviceLink/SDLBitsPerSample.h
deleted file mode 100644
index 366dab9ef..000000000
--- a/SmartDeviceLink/SDLBitsPerSample.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// SDLBitsPerSample.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Describes different bit depth options for PerformAudioPassThru
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLBitsPerSample SDL_SWIFT_ENUM;
-
-/**
- * 8 bits per sample
- */
-extern SDLBitsPerSample const SDLBitsPerSample8Bit;
-
-/**
- * 16 bits per sample
- */
-extern SDLBitsPerSample const SDLBitsPerSample16Bit;
diff --git a/SmartDeviceLink/SDLButtonEventMode.h b/SmartDeviceLink/SDLButtonEventMode.h
deleted file mode 100644
index 5facb9f73..000000000
--- a/SmartDeviceLink/SDLButtonEventMode.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// SDLButtonEventMode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Indicates whether the button was depressed or released. A BUTTONUP event will always be preceded by a BUTTONDOWN event.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLButtonEventMode SDL_SWIFT_ENUM;
-
-/**
- * The button was released
- */
-extern SDLButtonEventMode const SDLButtonEventModeButtonUp;
-
-/**
- * The button was depressed
- */
-extern SDLButtonEventMode const SDLButtonEventModeButtonDown;
diff --git a/SmartDeviceLink/SDLButtonName.h b/SmartDeviceLink/SDLButtonName.h
deleted file mode 100644
index 4f6007fb5..000000000
--- a/SmartDeviceLink/SDLButtonName.h
+++ /dev/null
@@ -1,286 +0,0 @@
-// SDLButtonName.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Defines logical buttons which, on a given SDL unit, would correspond to either physical or soft (touchscreen) buttons. These logical buttons present a standard functional abstraction which the developer can rely upon, independent of the SDL unit. For example, the developer can rely upon the OK button having the same meaning to the user across SDL platforms.
-
- * The preset buttons (0-9) can typically be interpreted by the application as corresponding to some user-configured choices, though the application is free to interpret these button presses as it sees fit.
- *
- * The application can discover which buttons a given SDL unit implements by interrogating the ButtonCapabilities parameter of the RegisterAppInterface response.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLButtonName SDL_SWIFT_ENUM;
-
-/**
- * Represents the button usually labeled "OK". A typical use of this button is for the user to press it to make a selection. Prior to SDL Core 5.0 (iOS Proxy v.6.1), Ok was used for both "OK" buttons *AND* PlayPause. In 5.0, PlayPause was introduced to reduce confusion, and you should use the one you intend for your use case (usually PlayPause). Until the next proxy breaking change, however, subscribing to this button name will continue to subscribe you to PlayPause so that your code does not break. That means that if you subscribe to both Ok and PlayPause, you will receive duplicate notifications.
- */
-extern SDLButtonName const SDLButtonNameOk;
-
-/**
- * Represents the play/pause button for media apps. Replaces "OK" on sub-5.0 head units, compliments it on 5.0 head units and later.
- */
-extern SDLButtonName const SDLButtonNamePlayPause;
-
-/**
- * Represents the seek-left button. A typical use of this button is for the user to scroll to the left through menu choices one menu item per press.
- */
-extern SDLButtonName const SDLButtonNameSeekLeft;
-
-/**
- * Represents the seek-right button. A typical use of this button is for the user to scroll to the right through menu choices one menu item per press.
- */
-extern SDLButtonName const SDLButtonNameSeekRight;
-
-/**
- * Represents a turn of the tuner knob in the clockwise direction one tick.
- */
-extern SDLButtonName const SDLButtonNameTuneUp;
-
-/**
- * Represents a turn of the tuner knob in the counter-clockwise direction one tick.
- */
-extern SDLButtonName const SDLButtonNameTuneDown;
-
-/**
- * Represents the preset 0 button.
- */
-extern SDLButtonName const SDLButtonNamePreset0;
-
-/**
- * Represents the preset 1 button.
- */
-extern SDLButtonName const SDLButtonNamePreset1;
-
-/**
- * Represents the preset 2 button.
- */
-extern SDLButtonName const SDLButtonNamePreset2;
-
-/**
- * Represents the preset 3 button.
- */
-extern SDLButtonName const SDLButtonNamePreset3;
-
-/**
- * Represents the preset 4 button.
- */
-extern SDLButtonName const SDLButtonNamePreset4;
-
-/**
- * Represents the preset 5 button.
- */
-extern SDLButtonName const SDLButtonNamePreset5;
-
-/**
- * Represents the preset 6 button.
- */
-extern SDLButtonName const SDLButtonNamePreset6;
-
-/**
- * Represents the preset 7 button.
- */
-extern SDLButtonName const SDLButtonNamePreset7;
-
-/**
- * Represents the preset 8 button.
- */
-extern SDLButtonName const SDLButtonNamePreset8;
-
-/**
- * Represents the preset 9 button.
- */
-extern SDLButtonName const SDLButtonNamePreset9;
-
-/**
- * Represents the Custom button.
- *
- */
-extern SDLButtonName const SDLButtonNameCustomButton;
-
-/**
- * Represents the SEARCH button.
- *
- */
-extern SDLButtonName const SDLButtonNameSearch;
-
-#pragma mark - Climate Buttons
-
-/**
- * Represents AC max button *
- */
-extern SDLButtonName const SDLButtonNameACMax;
-
-/**
- * Represents AC button *
- */
-extern SDLButtonName const SDLButtonNameAC;
-
-/**
- * Represents a Recirculate button
- */
-extern SDLButtonName const SDLButtonNameRecirculate;
-
-/**
- * Represents a Fan up button
- */
-extern SDLButtonName const SDLButtonNameFanUp;
-
-/**
- * Represents a fan down button
- */
-extern SDLButtonName const SDLButtonNameFanDown;
-
-/**
- * Represents a temperature up button
- */
-extern SDLButtonName const SDLButtonNameTempUp;
-
-/**
- * Represents a temperature down button
- */
-extern SDLButtonName const SDLButtonNameTempDown;
-
-/**
- * Represents a Defrost max button.
- *
- */
-extern SDLButtonName const SDLButtonNameDefrostMax;
-
-/**
- * Represents a Defrost button.
- *
- */
-extern SDLButtonName const SDLButtonNameDefrost;
-
-/**
- * Represents a Defrost rear button.
- *
- */
-extern SDLButtonName const SDLButtonNameDefrostRear;
-
-/**
- * Represents a Upper Vent button.
- *
- */
-extern SDLButtonName const SDLButtonNameUpperVent;
-
-/**
- * Represents a Lower vent button.
- *
- */
-extern SDLButtonName const SDLButtonNameLowerVent;
-
-#pragma mark - Radio Buttons
-/**
- * Represents a volume up button.
- */
-extern SDLButtonName const SDLButtonNameVolumeUp;
-
-/**
- * Represents a volume down button.
- *
- */
-extern SDLButtonName const SDLButtonNameVolumeDown;
-
-/**
- * Represents a Eject Button.
- *
- */
-extern SDLButtonName const SDLButtonNameEject;
-
-/**
- * Represents a Source button.
- *
- */
-extern SDLButtonName const SDLButtonNameSource;
-
-/**
- * Represents a SHUFFLE button.
- *
- */
-extern SDLButtonName const SDLButtonNameShuffle;
-
-/**
- * Represents a Repeat button.
- */
-extern SDLButtonName const SDLButtonNameRepeat;
-
-#pragma mark - Navigation Buttons
-/**
- * Represents a Navigate to center button.
- */
-extern SDLButtonName const SDLButtonNameNavCenterLocation;
-
-/**
- * Represents a Zoom in button.
- */
-extern SDLButtonName const SDLButtonNameNavZoomIn;
-
-/**
- * Represents a Zoom out button.
- */
-extern SDLButtonName const SDLButtonNameNavZoomOut;
-
-/**
- * Represents a Pan up button
- */
-extern SDLButtonName const SDLButtonNameNavPanUp;
-
-/**
- * Represents a Pan up/right button
- */
-extern SDLButtonName const SDLButtonNameNavPanUpRight;
-
-/**
- * Represents a Pan right button
- */
-extern SDLButtonName const SDLButtonNameNavPanRight;
-
-/**
- * Represents a Pan down/right button
- */
-extern SDLButtonName const SDLButtonNameNavPanDownRight;
-
-/**
- * Represents a Pan down button
- */
-extern SDLButtonName const SDLButtonNameNavPanDown;
-
-/**
- * Represents a Pan down left button
- */
-extern SDLButtonName const SDLButtonNameNavPanDownLeft;
-
-/**
- * Represents a Pan left button
- */
-extern SDLButtonName const SDLButtonNameNavPanLeft;
-
-/**
- * Represents a Pan up left button
- */
-extern SDLButtonName const SDLButtonNameNavPanUpLeft;
-
-/**
- * Represents a Tilt button. If supported, this toggles between a top-down view and an angled/3D view. If your app supports different, but substantially similar options, then you may implement those. If you don't implement these or similar options, do not subscribe to this button.
- */
-extern SDLButtonName const SDLButtonNameNavTiltToggle;
-
-/**
- * Represents a Rotate clockwise button
- */
-extern SDLButtonName const SDLButtonNameNavRotateClockwise;
-
-/**
- * Represents a Rotate counterclockwise button
- */
-extern SDLButtonName const SDLButtonNameNavRotateCounterClockwise;
-
-/**
- * Represents a Heading toggle button. If supported, this toggles between locking the orientation to north or to the vehicle's heading. If your app supports different, but substantially similar options, then you may implement those. If you don't implement these or similar options, do not subscribe to this button.
- */
-extern SDLButtonName const SDLButtonNameNavHeadingToggle;
diff --git a/SmartDeviceLink/SDLButtonPress.h b/SmartDeviceLink/SDLButtonPress.h
deleted file mode 100644
index c5769ca6d..000000000
--- a/SmartDeviceLink/SDLButtonPress.h
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// SDLButtonPress.h
-//
-
-#import "SDLRPCRequest.h"
-#import "SDLModuleType.h"
-#import "SDLButtonName.h"
-#import "SDLButtonPressMode.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- This RPC allows a remote control type mobile application to simulate a hardware button press event.
-
- @since RPC 4.5
-*/
-@interface SDLButtonPress : SDLRPCRequest
-
-/**
-Constructs a newly allocated SDLButtonPress object with the given parameters
-
-@param buttonName the name of the button
-@param moduleType the module where the button should be pressed
-
-@return An instance of the SDLButtonPress class.
-*/
-- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType)moduleType __deprecated_msg(("Use initWithButtonName:moduleType:moduleId:buttonPressMode: instead"));;
-
-/**
-Constructs a newly allocated SDLButtonPress object with the given parameters
-
-@param buttonName the name of the button
-@param moduleType the module where the button should be pressed
-@param moduleId the id of the module
-
-@return An instance of the SDLButtonPress class.
-*/
-- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType)moduleType moduleId:(nullable NSString *)moduleId __deprecated_msg(("Use initWithButtonName:moduleType:moduleId:buttonPressMode: instead"));;
-
-/**
-Constructs a newly allocated SDLButtonPress object with the given parameters
-
-@param buttonName the name of the button
-@param moduleType the module where the button should be pressed
-@param moduleId the id of the module
-@param buttonPressMode indicates LONG or SHORT button press event
-
-@return An instance of the SDLButtonPress class.
-*/
-- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType)moduleType moduleId:(nullable NSString *)moduleId buttonPressMode:(SDLButtonPressMode)buttonPressMode;
-
-/**
- * The module where the button should be pressed.
- *
- */
-@property (strong, nonatomic) SDLModuleType moduleType;
-
-/**
- * Id of a module, published by System Capability.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) NSString *moduleId;
-
-/**
- * The name of supported RC climate or radio button.
- *
- */
-@property (strong, nonatomic) SDLButtonName buttonName;
-
-/**
- * Indicates whether this is a LONG or SHORT button press event.
- *
- */
-@property (strong, nonatomic) SDLButtonPressMode buttonPressMode;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLButtonPress.m b/SmartDeviceLink/SDLButtonPress.m
deleted file mode 100644
index 419f0d7f6..000000000
--- a/SmartDeviceLink/SDLButtonPress.m
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// SDLButtonPress.m
-//
-
-#import "SDLButtonPress.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLButtonPress
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameButtonPress]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithButtonName:(SDLButtonName) buttonName moduleType:(SDLModuleType)moduleType {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.buttonName = buttonName;
- self.moduleType = moduleType;
-
- return self;
-}
-
-- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType)moduleType moduleId:(nullable NSString *)moduleId {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.buttonName = buttonName;
- self.moduleType = moduleType;
- self.moduleId = moduleId;
-
- return self;
-}
-
-- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType)moduleType moduleId:(nullable NSString *)moduleId buttonPressMode:(SDLButtonPressMode)buttonPressMode {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.buttonName = buttonName;
- self.moduleType = moduleType;
- self.moduleId = moduleId;
- self.buttonPressMode = buttonPressMode;
-
- return self;
-}
-
-- (void)setModuleType:(SDLModuleType)moduleType {
- [self.parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType];
-}
-
-- (SDLModuleType)moduleType {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error];
-}
-
-- (void)setButtonName:(SDLButtonName)buttonName {
- [self.parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName];
-}
-
-- (SDLButtonName)buttonName {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error];
-}
-
-- (void)setButtonPressMode:(SDLButtonPressMode)buttonPressMode {
- [self.parameters sdl_setObject:buttonPressMode forName:SDLRPCParameterNameButtonPressMode];
-}
-
-- (SDLButtonPressMode)buttonPressMode {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonPressMode error:&error];
-}
-
-- (void)setModuleId:(nullable NSString *)moduleId {
- [self.parameters sdl_setObject:moduleId forName:SDLRPCParameterNameModuleId];
-}
-
-- (nullable NSString *)moduleId {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleId ofClass:NSString.class error:&error];
-}
-
-@end
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLButtonPressMode.h b/SmartDeviceLink/SDLButtonPressMode.h
deleted file mode 100644
index 0272e0eab..000000000
--- a/SmartDeviceLink/SDLButtonPressMode.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// SDLButtonPressMode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Indicates whether this is a LONG or SHORT button press
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLButtonPressMode SDL_SWIFT_ENUM;
-
-/**
- * A button was released, after it was pressed for a long time. Actual timing is defined by the head unit and may vary.
- */
-extern SDLButtonPressMode const SDLButtonPressModeLong;
-
-/**
- * A button was released, after it was pressed for a short time. Actual timing is defined by the head unit and may vary.
- */
-extern SDLButtonPressMode const SDLButtonPressModeShort;
diff --git a/SmartDeviceLink/SDLCancelInteraction.h b/SmartDeviceLink/SDLCancelInteraction.h
deleted file mode 100644
index 20b097699..000000000
--- a/SmartDeviceLink/SDLCancelInteraction.h
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// SDLCancelInteraction.h
-// SmartDeviceLink
-//
-// Created by Nicole on 7/12/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLRPCRequest.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Used to dismiss a modal view programmatically without needing to wait for the timeout to complete. Can be used to dismiss alerts, scrollable messages, sliders, and perform interactions (i.e. pop-up menus).
-
- @see SDLAlert, SDLScrollableMessage, SDLSlider, SDLPerformInteraction
- */
-@interface SDLCancelInteraction : SDLRPCRequest
-
-/**
- Convenience init for dismissing the currently presented modal view (either an alert, slider, scrollable message, or perform interation).
-
- @param functionID The ID of the type of modal view to dismiss
- @return A SDLCancelInteraction object
- */
-- (instancetype)initWithFunctionID:(UInt32)functionID;
-
-/**
- Convenience init for dismissing a specific view.
-
- @param functionID The ID of the type of interaction to dismiss
- @param cancelID The ID of the specific interaction to dismiss
- @return A SDLCancelInteraction object
- */
-- (instancetype)initWithFunctionID:(UInt32)functionID cancelID:(UInt32)cancelID;
-
-/**
- Convenience init for dismissing an alert.
-
- @param cancelID The ID of the specific interaction to dismiss
- @return A SDLCancelInteraction object
- */
-- (instancetype)initWithAlertCancelID:(UInt32)cancelID;
-
-/**
- Convenience init for dismissing a slider.
-
- @param cancelID The ID of the specific interaction to dismiss
- @return A SDLCancelInteraction object
- */
-- (instancetype)initWithSliderCancelID:(UInt32)cancelID;
-
-/**
- Convenience init for dismissing a scrollable message.
-
- @param cancelID The ID of the specific interaction to dismiss
- @return A SDLCancelInteraction object
- */
-- (instancetype)initWithScrollableMessageCancelID:(UInt32)cancelID;
-
-/**
- Convenience init for dismissing a perform interaction.
-
- @param cancelID The ID of the specific interaction to dismiss
- @return A SDLCancelInteraction object
- */
-- (instancetype)initWithPerformInteractionCancelID:(UInt32)cancelID;
-
-/**
- Convenience init for dismissing the currently presented alert.
-
- @return A SDLCancelInteraction object
- */
-+ (instancetype)alert;
-
-/**
- Convenience init for dismissing the currently presented slider.
-
- @return A SDLCancelInteraction object
- */
-+ (instancetype)slider;
-
-/**
- Convenience init for dismissing the currently presented scrollable message.
-
- @return A SDLCancelInteraction object
- */
-+ (instancetype)scrollableMessage;
-
-/**
- Convenience init for dismissing the currently presented perform interaction.
-
- @return A SDLCancelInteraction object
- */
-+ (instancetype)performInteraction NS_SWIFT_NAME(performInteraction());
-
-/**
- The ID of the specific interaction to dismiss. If not set, the most recent of the RPC type set in functionID will be dismissed.
-
- Integer, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
-
-/**
- The ID of the type of interaction to dismiss.
-
- Only values 10 (PerformInteractionID), 12 (AlertID), 25 (ScrollableMessageID), and 26 (SliderID) are permitted.
-
- Integer, Required
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *functionID;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCancelInteraction.m b/SmartDeviceLink/SDLCancelInteraction.m
deleted file mode 100644
index 40de4fbef..000000000
--- a/SmartDeviceLink/SDLCancelInteraction.m
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-// SDLCancelInteraction.m
-// SmartDeviceLink
-//
-// Created by Nicole on 7/12/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLCancelInteraction.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLFunctionID.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLCancelInteraction
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameCancelInteraction]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-
-- (instancetype)initWithFunctionID:(UInt32)functionID {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.functionID = @(functionID);
-
- return self;
-}
-
-- (instancetype)initWithFunctionID:(UInt32)functionID cancelID:(UInt32)cancelID {
- self = [self initWithFunctionID:functionID];
- if (!self) {
- return nil;
- }
-
- self.cancelID = @(cancelID);
-
- return self;
-}
-
-- (instancetype)initWithAlertCancelID:(UInt32)cancelID {
- return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameAlert].unsignedIntValue cancelID:cancelID];
-}
-
-- (instancetype)initWithSliderCancelID:(UInt32)cancelID {
- return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSlider].unsignedIntValue cancelID:cancelID];
-}
-
-- (instancetype)initWithScrollableMessageCancelID:(UInt32)cancelID {
- return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameScrollableMessage].unsignedIntValue cancelID:cancelID];
-}
-
-- (instancetype)initWithPerformInteractionCancelID:(UInt32)cancelID {
- return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNamePerformInteraction].unsignedIntValue cancelID:cancelID];
-}
-
-+ (instancetype)alert {
- return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameAlert].unsignedIntValue];
-}
-
-+ (instancetype)slider {
- return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSlider].unsignedIntValue];
-}
-
-+ (instancetype)scrollableMessage {
- return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameScrollableMessage].unsignedIntValue];
-}
-
-+ (instancetype)performInteraction {
- return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNamePerformInteraction].unsignedIntValue];
-}
-
-- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
- [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
-}
-
-- (nullable NSNumber<SDLInt> *)cancelID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFunctionID:(NSNumber<SDLInt> *)functionID {
- [self.parameters sdl_setObject:functionID forName:SDLRPCParameterNameFunctionID];
-}
-
-- (NSNumber<SDLInt> *)functionID {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFunctionID ofClass:NSNumber.class error:&error];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCarModeStatus.h b/SmartDeviceLink/SDLCarModeStatus.h
deleted file mode 100644
index e98ada744..000000000
--- a/SmartDeviceLink/SDLCarModeStatus.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// SDLCarModeStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Describes the carmode the vehicle is in. Used in ClusterModeStatus
-
- * Since SmartDeviceLink 2.0
- */
-typedef SDLEnum SDLCarModeStatus SDL_SWIFT_ENUM;
-
-/**
- Provides carmode NORMAL to each module.
- */
-extern SDLCarModeStatus const SDLCarModeStatusNormal;
-
-/**
- Provides carmode FACTORY to each module.
- */
-extern SDLCarModeStatus const SDLCarModeStatusFactory;
-
-/**
- Provides carmode TRANSPORT to each module.
- */
-extern SDLCarModeStatus const SDLCarModeStatusTransport;
-
-/**
- Provides carmode CRASH to each module.
- */
-extern SDLCarModeStatus const SDLCarModeStatusCrash;
diff --git a/SmartDeviceLink/SDLCharacterSet.h b/SmartDeviceLink/SDLCharacterSet.h
deleted file mode 100644
index 51771fe77..000000000
--- a/SmartDeviceLink/SDLCharacterSet.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// SDLCharacterSet.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Character sets supported by SDL. Used to describe text field capabilities.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLCharacterSet SDL_SWIFT_ENUM;
-
-/**
- Character Set Type 2
- */
-extern SDLCharacterSet const SDLCharacterSetType2;
-
-/**
- Character Set Type 5
- */
-extern SDLCharacterSet const SDLCharacterSetType5;
-
-/**
- Character Set CID1
- */
-extern SDLCharacterSet const SDLCharacterSetCID1;
-
-/**
- Character Set CID2
- */
-extern SDLCharacterSet const SDLCharacterSetCID2;
-
diff --git a/SmartDeviceLink/SDLCharacterSet.m b/SmartDeviceLink/SDLCharacterSet.m
deleted file mode 100644
index 64733c0dc..000000000
--- a/SmartDeviceLink/SDLCharacterSet.m
+++ /dev/null
@@ -1,10 +0,0 @@
-// SDLCharacterSet.m
-//
-
-
-#import "SDLCharacterSet.h"
-
-SDLCharacterSet const SDLCharacterSetType2 = @"TYPE2SET";
-SDLCharacterSet const SDLCharacterSetType5 = @"TYPE5SET";
-SDLCharacterSet const SDLCharacterSetCID1 = @"CID1SET";
-SDLCharacterSet const SDLCharacterSetCID2 = @"CID2SET";
diff --git a/SmartDeviceLink/SDLChoiceSetManager.m b/SmartDeviceLink/SDLChoiceSetManager.m
deleted file mode 100644
index a8d3468b7..000000000
--- a/SmartDeviceLink/SDLChoiceSetManager.m
+++ /dev/null
@@ -1,610 +0,0 @@
-//
-// SDLChoiceSetManager.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 5/21/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLChoiceSetManager.h"
-
-#import "SDLCheckChoiceVROptionalOperation.h"
-#import "SDLChoice.h"
-#import "SDLChoiceCell.h"
-#import "SDLChoiceSet.h"
-#import "SDLChoiceSetDelegate.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLCreateInteractionChoiceSet.h"
-#import "SDLCreateInteractionChoiceSetResponse.h"
-#import "SDLDeleteChoicesOperation.h"
-#import "SDLDisplayCapability.h"
-#import "SDLError.h"
-#import "SDLFileManager.h"
-#import "SDLGlobals.h"
-#import "SDLHMILevel.h"
-#import "SDLKeyboardProperties.h"
-#import "SDLLogMacros.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLPerformInteraction.h"
-#import "SDLPerformInteractionResponse.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLPreloadChoicesOperation.h"
-#import "SDLPresentChoiceSetOperation.h"
-#import "SDLPresentKeyboardOperation.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLSetDisplayLayoutResponse.h"
-#import "SDLStateMachine.h"
-#import "SDLSystemCapability.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLWindowCapability.h"
-#import "SDLWindowCapability+ScreenManagerExtensions.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-SDLChoiceManagerState *const SDLChoiceManagerStateShutdown = @"Shutdown";
-SDLChoiceManagerState *const SDLChoiceManagerStateCheckingVoiceOptional = @"CheckingVoiceOptional";
-SDLChoiceManagerState *const SDLChoiceManagerStateReady = @"Ready";
-SDLChoiceManagerState *const SDLChoiceManagerStateStartupError = @"StartupError";
-
-typedef NSNumber * SDLChoiceId;
-
-@interface SDLChoiceCell()
-
-@property (assign, nonatomic) UInt16 choiceId;
-
-@end
-
-@interface SDLChoiceSetManager()
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic) SDLFileManager *fileManager;
-@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
-
-@property (strong, nonatomic, readonly) SDLStateMachine *stateMachine;
-@property (strong, nonatomic) NSOperationQueue *transactionQueue;
-@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
-
-@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
-@property (copy, nonatomic, nullable) SDLWindowCapability *currentWindowCapability;
-
-@property (strong, nonatomic) NSMutableSet<SDLChoiceCell *> *preloadedMutableChoices;
-@property (strong, nonatomic, readonly) NSSet<SDLChoiceCell *> *pendingPreloadChoices;
-@property (strong, nonatomic) NSMutableSet<SDLChoiceCell *> *pendingMutablePreloadChoices;
-@property (strong, nonatomic, nullable) SDLChoiceSet *pendingPresentationSet;
-@property (strong, nonatomic, nullable) SDLAsynchronousOperation *pendingPresentOperation;
-
-@property (assign, nonatomic) UInt16 nextChoiceId;
-@property (assign, nonatomic) UInt16 nextCancelId;
-@property (assign, nonatomic, getter=isVROptional) BOOL vrOptional;
-
-@end
-
-UInt16 const ChoiceCellIdMin = 1;
-UInt16 const ChoiceCellCancelIdMin = 1;
-
-@implementation SDLChoiceSetManager
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager {
- self = [super init];
- if (!self) { return nil; }
-
- _connectionManager = connectionManager;
- _fileManager = fileManager;
- _systemCapabilityManager = systemCapabilityManager;
- _stateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLChoiceManagerStateShutdown states:[self.class sdl_stateTransitionDictionary]];
- _transactionQueue = [self sdl_newTransactionQueue];
-
- if (@available(iOS 10.0, *)) {
- _readWriteQueue = dispatch_queue_create_with_target("com.sdl.screenManager.choiceSetManager.readWriteQueue", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
- } else {
- _readWriteQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- }
-
- _preloadedMutableChoices = [NSMutableSet set];
- _pendingMutablePreloadChoices = [NSMutableSet set];
-
- _nextChoiceId = ChoiceCellIdMin;
- _nextCancelId = ChoiceCellCancelIdMin;
- _vrOptional = YES;
- _keyboardConfiguration = [self sdl_defaultKeyboardConfiguration];
- _currentHMILevel = SDLHMILevelNone;
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
-
- return self;
-}
-
-- (void)start {
- SDLLogD(@"Starting manager");
-
- [self.systemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self selector:@selector(sdl_displayCapabilityDidUpdate:)];
-
- if ([self.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
- [self.stateMachine transitionToState:SDLChoiceManagerStateCheckingVoiceOptional];
- }
-
- // Else, we're already started
-}
-
-- (void)stop {
- SDLLogD(@"Stopping manager");
-
- [self sdl_runSyncOnQueue:^{
- [self.stateMachine transitionToState:SDLChoiceManagerStateShutdown];
- }];
-}
-
-+ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_stateTransitionDictionary {
- return @{
- SDLChoiceManagerStateShutdown: @[SDLChoiceManagerStateCheckingVoiceOptional],
- SDLChoiceManagerStateCheckingVoiceOptional: @[SDLChoiceManagerStateShutdown, SDLChoiceManagerStateReady, SDLChoiceManagerStateStartupError],
- SDLChoiceManagerStateReady: @[SDLChoiceManagerStateShutdown],
- SDLChoiceManagerStateStartupError: @[SDLChoiceManagerStateShutdown]
- };
-}
-
-- (NSOperationQueue *)sdl_newTransactionQueue {
- NSOperationQueue *queue = [[NSOperationQueue alloc] init];
- queue.name = @"com.sdl.screenManager.choiceSetManager.transactionQueue";
- queue.maxConcurrentOperationCount = 1;
- queue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
- queue.suspended = YES;
-
- return queue;
-}
-
-/// Suspend the transaction queue if we are in HMI NONE
-/// OR if the text field name "menu name" (i.e. is the primary choice text) cannot be used, we assume we cannot present a PI.
-- (void)sdl_updateTransactionQueueSuspended {
- if ([self.currentHMILevel isEqualToEnum:SDLHMILevelNone]
- || (![self.currentWindowCapability hasTextFieldOfName:SDLTextFieldNameMenuName])) {
- SDLLogD(@"Suspending the transaction queue. Current HMI level is: %@, window capability has MenuName (choice primary text): %@", self.currentHMILevel, ([self.currentWindowCapability hasTextFieldOfName:SDLTextFieldNameMenuName] ? @"YES" : @"NO"));
- self.transactionQueue.suspended = YES;
- } else {
- SDLLogD(@"Starting the transaction queue");
- self.transactionQueue.suspended = NO;
- }
-}
-
-#pragma mark - State Management
-
-- (void)didEnterStateShutdown {
- SDLLogV(@"Manager shutting down");
-
- NSAssert(dispatch_get_specific(SDLProcessingQueueName) != nil, @"%@ must only be called on the SDL serial queue", NSStringFromSelector(_cmd));
-
- _currentHMILevel = SDLHMILevelNone;
-
- [self.transactionQueue cancelAllOperations];
- self.transactionQueue = [self sdl_newTransactionQueue];
- _preloadedMutableChoices = [NSMutableSet set];
- _pendingMutablePreloadChoices = [NSMutableSet set];
- _pendingPresentationSet = nil;
-
- _vrOptional = YES;
- _nextChoiceId = ChoiceCellIdMin;
- _nextCancelId = ChoiceCellCancelIdMin;
-}
-
-- (void)didEnterStateCheckingVoiceOptional {
- // Setup by sending a Choice Set without VR, seeing if there's an error. If there is, send one with VR. This choice set will be used for `presentKeyboard` interactions.
- SDLCheckChoiceVROptionalOperation *checkOp = [[SDLCheckChoiceVROptionalOperation alloc] initWithConnectionManager:self.connectionManager];
-
- __weak typeof(self) weakSelf = self;
- __weak typeof(checkOp) weakOp = checkOp;
- checkOp.completionBlock = ^{
- if ([self.currentState isEqualToString:SDLChoiceManagerStateShutdown]) { return; }
-
- weakSelf.vrOptional = weakOp.isVROptional;
- if (weakOp.error != nil) {
- [weakSelf.stateMachine transitionToState:SDLChoiceManagerStateStartupError];
- } else {
- [weakSelf.stateMachine transitionToState:SDLChoiceManagerStateReady];
- }
- };
-
- [self.transactionQueue addOperation:checkOp];
-}
-
-- (void)didEnterStateStartupError {
- // TODO
-}
-
-#pragma mark - Choice Management
-
-#pragma mark Upload / Delete
-
-- (void)preloadChoices:(NSArray<SDLChoiceCell *> *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler {
- SDLLogV(@"Request to preload choices: %@", choices);
- if ([self.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
- NSError *error = [NSError sdl_choiceSetManager_incorrectState:self.currentState];
- SDLLogE(@"Attempted to preload choices but the choice set manager is shut down: %@", error);
- if (handler != nil) {
- handler(error);
- }
- return;
- }
-
- NSMutableSet<SDLChoiceCell *> *choicesToUpload = [[self sdl_choicesToBeUploadedWithArray:choices] mutableCopy];
-
- [self sdl_runSyncOnQueue:^{
- [choicesToUpload minusSet:self.preloadedMutableChoices];
- [choicesToUpload minusSet:self.pendingMutablePreloadChoices];
- }];
-
- if (choicesToUpload.count == 0) {
- SDLLogD(@"All choices already preloaded. No need to perform a preload");
- if (handler != nil) {
- handler(nil);
- }
-
- return;
- }
-
- [self sdl_updateIdsOnChoices:choicesToUpload];
-
- // Add the preload cells to the pending preloads
- [self sdl_runSyncOnQueue:^{
- [self.pendingMutablePreloadChoices unionSet:choicesToUpload];
- }];
-
- // Upload pending preloads
- // For backward compatibility with Gen38Inch display type head units
- SDLLogD(@"Preloading choices");
- SDLLogV(@"Choices to be uploaded: %@", choicesToUpload);
- NSString *displayName = self.systemCapabilityManager.displays.firstObject.displayName;
- SDLPreloadChoicesOperation *preloadOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:self.connectionManager fileManager:self.fileManager displayName:displayName windowCapability:self.systemCapabilityManager.defaultMainWindowCapability isVROptional:self.isVROptional cellsToPreload:choicesToUpload];
-
- __weak typeof(self) weakSelf = self;
- __weak typeof(preloadOp) weakPreloadOp = preloadOp;
- preloadOp.completionBlock = ^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- SDLLogD(@"Choices finished preloading");
-
- if (handler != nil) {
- handler(weakPreloadOp.error);
- }
-
- // Check if the manager has shutdown because the list of uploaded and pending choices should not be updated
- if ([strongSelf.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
- SDLLogD(@"Cancelling preloading choices because the manager is shut down");
- return;
- }
-
- [strongSelf sdl_runSyncOnQueue:^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- [strongSelf.preloadedMutableChoices unionSet:choicesToUpload];
- [strongSelf.pendingMutablePreloadChoices minusSet:choicesToUpload];
- }];
- };
- [self.transactionQueue addOperation:preloadOp];
-}
-
-- (void)deleteChoices:(NSArray<SDLChoiceCell *> *)choices {
- SDLLogV(@"Request to delete choices: %@", choices);
- if (![self.currentState isEqualToString:SDLChoiceManagerStateReady]) {
- SDLLogE(@"Attempted to delete choices in an incorrect state: %@, they will not be deleted", self.currentState);
- return;
- }
-
- // Find cells to be deleted that are already uploaded or are pending upload
- NSSet<SDLChoiceCell *> *cellsToBeDeleted = [self sdl_choicesToBeDeletedWithArray:choices];
- NSSet<SDLChoiceCell *> *cellsToBeRemovedFromPending = [self sdl_choicesToBeRemovedFromPendingWithArray:choices];
-
- // If choices are deleted that are already uploaded or pending and are used by a pending presentation, cancel it and send an error
- NSSet<SDLChoiceCell *> *pendingPresentationChoices = [NSSet setWithArray:self.pendingPresentationSet.choices];
- if ((!self.pendingPresentOperation.isCancelled && !self.pendingPresentOperation.isFinished)
- && ([cellsToBeDeleted intersectsSet:pendingPresentationChoices] || [cellsToBeRemovedFromPending intersectsSet:pendingPresentationChoices])) {
- [self.pendingPresentOperation cancel];
- if (self.pendingPresentationSet.delegate != nil) {
- [self.pendingPresentationSet.delegate choiceSet:self.pendingPresentationSet didReceiveError:[NSError sdl_choiceSetManager_choicesDeletedBeforePresentation:@{@"deletedChoices": choices}]];
- }
- self.pendingPresentationSet = nil;
- }
-
- // Remove the cells from pending and delete choices
- [self sdl_runSyncOnQueue:^{
- [self.pendingMutablePreloadChoices minusSet:cellsToBeRemovedFromPending];
- }];
-
- for (SDLAsynchronousOperation *op in self.transactionQueue.operations) {
- if (![op isMemberOfClass:[SDLPreloadChoicesOperation class]]) { continue; }
-
- SDLPreloadChoicesOperation *preloadOp = (SDLPreloadChoicesOperation *)op;
- [preloadOp removeChoicesFromUpload:cellsToBeRemovedFromPending];
- }
-
- // Find choices to delete
- if (cellsToBeDeleted.count == 0) { return; }
-
- [self sdl_findIdsOnChoices:cellsToBeDeleted];
- SDLDeleteChoicesOperation *deleteOp = [[SDLDeleteChoicesOperation alloc] initWithConnectionManager:self.connectionManager cellsToDelete:cellsToBeDeleted];
-
- __weak typeof(self) weakSelf = self;
- __weak typeof(deleteOp) weakOp = deleteOp;
- deleteOp.completionBlock = ^{
- SDLLogD(@"Finished deleting choices");
-
- __strong typeof(weakSelf) strongSelf = weakSelf;
- if (weakOp.error != nil) {
- SDLLogE(@"Failed to delete choices: %@", weakOp.error);
- return;
- }
-
- // Check if the manager has shutdown because the list of uploaded choices should not be updated
- if ([strongSelf.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
- SDLLogD(@"Cancelling deleting choices because manager is shut down");
- return;
- }
-
- [strongSelf sdl_runSyncOnQueue:^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- [strongSelf.preloadedMutableChoices minusSet:cellsToBeDeleted];
- }];
- };
- [self.transactionQueue addOperation:deleteOp];
-}
-
-#pragma mark Present
-
-- (void)presentChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode withKeyboardDelegate:(nullable id<SDLKeyboardDelegate>)delegate {
- if (![self.currentState isEqualToString:SDLChoiceManagerStateReady]) {
- SDLLogE(@"Attempted to present choices in an incorrect state: %@, it will not be presented", self.currentState);
- return;
- }
-
- if (choiceSet == nil) {
- SDLLogW(@"Attempted to present a nil choice set, ignoring.");
- return;
- }
-
- if (self.pendingPresentationSet != nil && !self.pendingPresentOperation.isFinished) {
- SDLLogW(@"A choice set is pending: %@. We will try to cancel it in favor of presenting a different choice set: %@. If it's already on screen it cannot be cancelled", self.pendingPresentationSet, choiceSet);
- [self.pendingPresentOperation cancel];
- }
-
- SDLLogD(@"Preloading and presenting choice set: %@", choiceSet);
- self.pendingPresentationSet = choiceSet;
-
- [self preloadChoices:self.pendingPresentationSet.choices withCompletionHandler:^(NSError * _Nullable error) {
- if (error != nil) {
- [choiceSet.delegate choiceSet:choiceSet didReceiveError:error];
- return;
- }
- }];
-
- [self sdl_findIdsOnChoiceSet:self.pendingPresentationSet];
-
- SDLPresentChoiceSetOperation *presentOp = nil;
- if (delegate == nil) {
- // Non-searchable choice set
- presentOp = [[SDLPresentChoiceSetOperation alloc] initWithConnectionManager:self.connectionManager choiceSet:self.pendingPresentationSet mode:mode keyboardProperties:nil keyboardDelegate:nil cancelID:self.nextCancelId];
- } else {
- // Searchable choice set
- presentOp = [[SDLPresentChoiceSetOperation alloc] initWithConnectionManager:self.connectionManager choiceSet:self.pendingPresentationSet mode:mode keyboardProperties:self.keyboardConfiguration keyboardDelegate:delegate cancelID:self.nextCancelId];
- }
- self.pendingPresentOperation = presentOp;
-
- __weak typeof(self) weakSelf = self;
- __weak typeof(presentOp) weakOp = presentOp;
- self.pendingPresentOperation.completionBlock = ^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- __strong typeof(weakOp) strongOp = weakOp;
-
- SDLLogD(@"Finished presenting choice set: %@", strongOp.choiceSet);
- if (strongOp.error != nil && strongOp.choiceSet.delegate != nil) {
- [strongOp.choiceSet.delegate choiceSet:strongOp.choiceSet didReceiveError:strongOp.error];
- } else if (strongOp.selectedCell != nil && strongOp.choiceSet.delegate != nil) {
- [strongOp.choiceSet.delegate choiceSet:strongOp.choiceSet didSelectChoice:strongOp.selectedCell withSource:strongOp.selectedTriggerSource atRowIndex:strongOp.selectedCellRow];
- }
-
- strongSelf.pendingPresentOperation = nil;
- strongSelf.pendingPresentationSet = nil;
- };
-
- [self.transactionQueue addOperation:presentOp];
-}
-
-- (nullable NSNumber<SDLInt> *)presentKeyboardWithInitialText:(NSString *)initialText delegate:(id<SDLKeyboardDelegate>)delegate {
- if (![self.currentState isEqualToString:SDLChoiceManagerStateReady]) {
- SDLLogE(@"Attempted to present keyboard in an incorrect state: %@, it will not be presented", self.currentState);
- return nil;
- }
-
- if (self.pendingPresentationSet != nil) {
- SDLLogW(@"There's already a pending presentation set, cancelling it in favor of a keyboard");
- [self.pendingPresentOperation cancel];
- self.pendingPresentationSet = nil;
- }
-
- SDLLogD(@"Presenting keyboard with initial text: %@", initialText);
- // Present a keyboard with the choice set that we used to test VR's optional state
- UInt16 keyboardCancelId = self.nextCancelId;
- self.pendingPresentOperation = [[SDLPresentKeyboardOperation alloc] initWithConnectionManager:self.connectionManager keyboardProperties:self.keyboardConfiguration initialText:initialText keyboardDelegate:delegate cancelID:keyboardCancelId];
- [self.transactionQueue addOperation:self.pendingPresentOperation];
- return @(keyboardCancelId);
-}
-
-- (void)dismissKeyboardWithCancelID:(NSNumber<SDLInt> *)cancelID {
- for (SDLAsynchronousOperation *op in self.transactionQueue.operations) {
- if (![op isKindOfClass:SDLPresentKeyboardOperation.class]) { continue; }
-
- SDLPresentKeyboardOperation *keyboardOperation = (SDLPresentKeyboardOperation *)op;
- if (keyboardOperation.cancelId != cancelID.unsignedShortValue) { continue; }
-
- SDLLogD(@"Dismissing keyboard with cancel ID: %@", cancelID);
- [keyboardOperation dismissKeyboard];
- break;
- }
-}
-
-#pragma mark - Choice Management Helpers
-
-/// Checks the passed list of choices to be uploaded and returns the items that have not yet been uploaded to the module.
-/// @param choices The choices to be uploaded
-/// @return The choices that have not yet been uploaded to the module
-- (NSSet<SDLChoiceCell *> *)sdl_choicesToBeUploadedWithArray:(NSArray<SDLChoiceCell *> *)choices {
- NSMutableSet<SDLChoiceCell *> *choicesSet = [NSMutableSet setWithArray:choices];
- [choicesSet minusSet:self.preloadedChoices];
-
- return [choicesSet copy];
-}
-
-/// Checks the passed list of choices to be deleted and returns the items that have been uploaded to the module.
-/// @param choices The choices to be deleted
-/// @return The choices that have been uploaded to the module
-- (NSSet<SDLChoiceCell *> *)sdl_choicesToBeDeletedWithArray:(NSArray<SDLChoiceCell *> *)choices {
- NSMutableSet<SDLChoiceCell *> *choicesSet = [NSMutableSet setWithArray:choices];
- [choicesSet intersectSet:self.preloadedChoices];
-
- return [choicesSet copy];
-}
-
-/// Checks the passed list of choices to be deleted and returns the items that are waiting to be uploaded to the module.
-/// @param choices The choices to be deleted
-/// @return The choices that are waiting to be uploaded to the module
-- (NSSet<SDLChoiceCell *> *)sdl_choicesToBeRemovedFromPendingWithArray:(NSArray<SDLChoiceCell *> *)choices {
- NSMutableSet<SDLChoiceCell *> *choicesSet = [NSMutableSet setWithArray:choices];
- [choicesSet intersectSet:self.pendingPreloadChoices];
-
- return [choicesSet copy];
-}
-
-/// Assigns a unique id to each choice item.
-/// @param choices An array of choices
-- (void)sdl_updateIdsOnChoices:(NSSet<SDLChoiceCell *> *)choices {
- for (SDLChoiceCell *cell in choices) {
- cell.choiceId = self.nextChoiceId;
- }
-}
-
-/// Checks each choice item to find out if it has already been uploaded or if it is the the process of being uploaded. If so, the choice item is assigned the unique id of the uploaded item.
-/// @param choiceSet A set of choice items
-- (void)sdl_findIdsOnChoiceSet:(SDLChoiceSet *)choiceSet {
- [self sdl_findIdsOnChoices:[NSSet setWithArray:choiceSet.choices]];
-}
-
-/// Checks each choice item to find out if it has already been uploaded or if it is the the process of being uploaded. If so, the choice item is assigned the unique id of the uploaded item.
-/// @param choices An array of choice items
-- (void)sdl_findIdsOnChoices:(NSSet<SDLChoiceCell *> *)choices {
- for (SDLChoiceCell *cell in choices) {
- SDLChoiceCell *uploadCell = [self.pendingPreloadChoices member:cell] ?: [self.preloadedChoices member:cell];
- if (uploadCell == nil) { continue; }
- cell.choiceId = uploadCell.choiceId;
- }
-}
-
-#pragma mark - Keyboard Configuration
-
-- (void)setKeyboardConfiguration:(nullable SDLKeyboardProperties *)keyboardConfiguration {
- if (keyboardConfiguration == nil) {
- SDLLogD(@"Updating keyboard configuration to the default");
- _keyboardConfiguration = [self sdl_defaultKeyboardConfiguration];
- } else {
- SDLLogD(@"Updating keyboard configuration to a new configuration: %@", keyboardConfiguration);
- _keyboardConfiguration = [[SDLKeyboardProperties alloc] initWithLanguage:keyboardConfiguration.language layout:keyboardConfiguration.keyboardLayout keypressMode:SDLKeypressModeResendCurrentEntry limitedCharacterList:keyboardConfiguration.limitedCharacterList autoCompleteText:keyboardConfiguration.autoCompleteText autoCompleteList:keyboardConfiguration.autoCompleteList];
-
- if (keyboardConfiguration.keypressMode != SDLKeypressModeResendCurrentEntry) {
- SDLLogW(@"Attempted to set a keyboard configuration with an invalid keypress mode; only .resentCurrentEntry is valid. This value will be ignored, the rest of the properties will be set.");
- }
- }
-}
-
-- (SDLKeyboardProperties *)sdl_defaultKeyboardConfiguration {
- return [[SDLKeyboardProperties alloc] initWithLanguage:SDLLanguageEnUs layout:SDLKeyboardLayoutQWERTY keypressMode:SDLKeypressModeResendCurrentEntry limitedCharacterList:nil autoCompleteText:nil autoCompleteList:nil];
-}
-
-#pragma mark - Getters
-
-- (NSSet<SDLChoiceCell *> *)preloadedChoices {
- __block NSSet<SDLChoiceCell *> *set = nil;
- [self sdl_runSyncOnQueue:^{
- set = [self->_preloadedMutableChoices copy];
- }];
-
- return set;
-}
-
-- (NSSet<SDLChoiceCell *> *)pendingPreloadChoices {
- __block NSSet<SDLChoiceCell *> *set = nil;
- [self sdl_runSyncOnQueue:^{
- set = [self->_pendingMutablePreloadChoices copy];
- }];
-
- return set;
-}
-
-- (UInt16)nextChoiceId {
- __block UInt16 choiceId = 0;
- [self sdl_runSyncOnQueue:^{
- choiceId = self->_nextChoiceId;
- self->_nextChoiceId = choiceId + 1;
- }];
-
- return choiceId;
-}
-
-- (UInt16)nextCancelId {
- __block UInt16 cancelId = 0;
- [self sdl_runSyncOnQueue:^{
- cancelId = self->_nextCancelId;
- self->_nextCancelId = cancelId + 1;
- }];
-
- return cancelId;
-}
-
-- (NSString *)currentState {
- return self.stateMachine.currentState;
-}
-
-#pragma mark Utilities
-
-/// Checks if we are already on a serial queue. If so, the block is added to the queue; if not, the block is dispatched to the serial `readWrite` queue.
-/// @discussion Used to synchronize access to class properties.
-/// @param block The block to be executed.
-- (void)sdl_runSyncOnQueue:(void (^)(void))block {
- if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
- block();
- } else {
- dispatch_sync(self.readWriteQueue, block);
- }
-}
-
-#pragma mark - RPC Responses / Notifications
-
-- (void)sdl_displayCapabilityDidUpdate:(SDLSystemCapability *)systemCapability {
- NSArray<SDLDisplayCapability *> *capabilities = systemCapability.displayCapabilities;
- if (capabilities == nil || capabilities.count == 0) {
- self.currentWindowCapability = nil;
- } else {
- SDLDisplayCapability *mainDisplay = capabilities[0];
- for (SDLWindowCapability *windowCapability in mainDisplay.windowCapabilities) {
- NSUInteger currentWindowID = windowCapability.windowID != nil ? windowCapability.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
- if (currentWindowID != SDLPredefinedWindowsDefaultWindow) { continue; }
-
- self.currentWindowCapability = windowCapability;
- break;
- }
- }
-
- [self sdl_updateTransactionQueueSuspended];
-}
-
-- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
- // We can only present a choice set if we're in FULL
- SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
- if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) { return; }
-
- self.currentHMILevel = hmiStatus.hmiLevel;
-
- [self sdl_updateTransactionQueueSuspended];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLClimateControlCapabilities.h b/SmartDeviceLink/SDLClimateControlCapabilities.h
deleted file mode 100644
index 351b8dd79..000000000
--- a/SmartDeviceLink/SDLClimateControlCapabilities.h
+++ /dev/null
@@ -1,239 +0,0 @@
-//
-// SDLClimateControlCapabilities.h
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLDefrostZone.h"
-#import "SDLVentilationMode.h"
-#import "SDLModuleInfo.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Contains information about a climate control module's capabilities.
- */
-@interface SDLClimateControlCapabilities : SDLRPCStruct
-
-/// Convenience init to describe the climate control capabilities.
-///
-/// @param moduleName The short friendly name of the climate control module
-/// @param fanSpeedAvailable Availability of the control of fan speed
-/// @param desiredTemperatureAvailable Availability of the control of desired temperature
-/// @param acEnableAvailable Availability of the control of turn on/off AC
-/// @param acMaxEnableAvailable Availability of the control of enable/disable air conditioning is ON on the maximum level
-/// @param circulateAirEnableAvailable Availability of the control of enable/disable circulate Air mode
-/// @param autoModeEnableAvailable Availability of the control of enable/disable auto mode
-/// @param dualModeEnableAvailable Availability of the control of enable/disable dual mode
-/// @param defrostZoneAvailable Availability of the control of defrost zones
-/// @param ventilationModeAvailable Availability of the control of air ventilation mode
-/// @return An SDLClimateControlCapabilities object
-- (instancetype)initWithModuleName:(NSString *)moduleName fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable __deprecated_msg("Use initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable: dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable: heatedSteeringWheelAvailable:heatedWindshieldAvailable: heatedRearWindowAvailable:heatedMirrorsAvailable: climateEnableAvailable: instead");
-
-
-/// Convenience init to describe the climate control capabilities.
-///
-/// @param moduleName The short friendly name of the climate control module
-/// @param fanSpeedAvailable Availability of the control of fan speed
-/// @param desiredTemperatureAvailable Availability of the control of desired temperature
-/// @param acEnableAvailable Availability of the control of turn on/off AC
-/// @param acMaxEnableAvailable Availability of the control of enable/disable air conditioning is ON on the maximum level
-/// @param circulateAirEnableAvailable Availability of the control of enable/disable circulate Air mode
-/// @param autoModeEnableAvailable Availability of the control of enable/disable auto mode
-/// @param dualModeEnableAvailable Availability of the control of enable/disable dual mode
-/// @param defrostZoneAvailable Availability of the control of defrost zones
-/// @param ventilationModeAvailable Availability of the control of air ventilation mode
-/// @param heatedSteeringWheelAvailable Availability of the control (enable/disable) of heated Steering Wheel
-/// @param heatedWindshieldAvailable Availability of the control (enable/disable) of heated Windshield
-/// @param heatedRearWindowAvailable Availability of the control (enable/disable) of heated Rear Window
-/// @param heatedMirrorsAvailable Availability of the control (enable/disable) of heated Mirrors
-/// @return An SDLClimateControlCapabilities object
-- (instancetype)initWithModuleName:(NSString *)moduleName fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)heatedSteeringWheelAvailable heatedWindshieldAvailable:(BOOL)heatedWindshieldAvailable heatedRearWindowAvailable:(BOOL)heatedRearWindowAvailable heatedMirrorsAvailable:(BOOL)heatedMirrorsAvailable __deprecated_msg("Use initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable: dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable: heatedSteeringWheelAvailable:heatedWindshieldAvailable: heatedRearWindowAvailable:heatedMirrorsAvailable: climateEnableAvailable: instead");
-
-/// Convenience init to describe the climate control capabilities.
-///
-/// @param moduleName The short friendly name of the climate control module
-/// @param fanSpeedAvailable Availability of the control of fan speed
-/// @param desiredTemperatureAvailable Availability of the control of desired temperature
-/// @param acEnableAvailable Availability of the control of turn on/off AC
-/// @param acMaxEnableAvailable Availability of the control of enable/disable air conditioning is ON on the maximum level
-/// @param circulateAirEnableAvailable Availability of the control of enable/disable circulate Air mode
-/// @param autoModeEnableAvailable Availability of the control of enable/disable auto mode
-/// @param dualModeEnableAvailable Availability of the control of enable/disable dual mode
-/// @param defrostZoneAvailable Availability of the control of defrost zones
-/// @param ventilationModeAvailable Availability of the control of air ventilation mode
-/// @param heatedSteeringWheelAvailable Availability of the control (enable/disable) of heated Steering Wheel
-/// @param heatedWindshieldAvailable Availability of the control (enable/disable) of heated Windshield
-/// @param heatedRearWindowAvailable Availability of the control (enable/disable) of heated Rear Window
-/// @param heatedMirrorsAvailable Availability of the control (enable/disable) of heated Mirrors
-/// @param climateEnableAvailable Availability of the control of enable/disable climate control
-/// @return An SDLClimateControlCapabilities object
-- (instancetype)initWithModuleName:(NSString *)moduleName fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)heatedSteeringWheelAvailable heatedWindshieldAvailable:(BOOL)heatedWindshieldAvailable heatedRearWindowAvailable:(BOOL)heatedRearWindowAvailable heatedMirrorsAvailable:(BOOL)heatedMirrorsAvailable climateEnableAvailable:(BOOL)climateEnableAvailable __deprecated_msg("Use initWithModuleName: moduleId:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable: dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable: heatedSteeringWheelAvailable:heatedWindshieldAvailable: heatedRearWindowAvailable:heatedMirrorsAvailable: climateEnableAvailable: instead");
-
-/// Convenience init to describe the climate control capabilities with all properities.
-///
-/// @param moduleName The short friendly name of the climate control module.
-/// @param moduleInfo Information about a RC module, including its id
-/// @param fanSpeedAvailable Availability of the control of fan speed
-/// @param desiredTemperatureAvailable Availability of the control of desired temperature
-/// @param acEnableAvailable Availability of the control of turn on/off AC
-/// @param acMaxEnableAvailable Availability of the control of enable/disable air conditioning is ON on the maximum level
-/// @param circulateAirEnableAvailable Availability of the control of enable/disable circulate Air mode.
-/// @param autoModeEnableAvailable Availability of the control of enable/disable auto mode
-/// @param dualModeEnableAvailable Availability of the control of enable/disable dual mode
-/// @param defrostZoneAvailable Availability of the control of defrost zones
-/// @param ventilationModeAvailable Availability of the control of air ventilation mode
-/// @param heatedSteeringWheelAvailable Availability of the control (enable/disable) of heated Steering Wheel
-/// @param heatedWindshieldAvailable Availability of the control (enable/disable) of heated Windshield
-/// @param heatedRearWindowAvailable Availability of the control (enable/disable) of heated Rear Window
-/// @param heatedMirrorsAvailable Availability of the control (enable/disable) of heated Mirrors
-/// @param climateEnableAvailable Availability of the control of enable/disable climate control
-/// @return An SDLClimateControlCapabilities object
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)heatedSteeringWheelAvailable heatedWindshieldAvailable:(BOOL)heatedWindshieldAvailable heatedRearWindowAvailable:(BOOL)heatedRearWindowAvailable heatedMirrorsAvailable:(BOOL)heatedMirrorsAvailable climateEnableAvailable:(BOOL)climateEnableAvailable;
-
-/**
- * The short friendly name of the climate control module.
- * It should not be used to identify a module by mobile application.
- *
- * Max string length 100 chars
-
- Required
- */
-@property (strong, nonatomic) NSString *moduleName;
-
-/**
- * Availability of the control of fan speed.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *fanSpeedAvailable;
-
-/**
- * Availability of the control of desired temperature.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *desiredTemperatureAvailable;
-
-/**
- * Availability of the control of turn on/off AC.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acEnableAvailable;
-
-/**
- * Availability of the control of enable/disable air conditioning is ON on the maximum level.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acMaxEnableAvailable;
-
-/**
- * Availability of the control of enable/disable circulate Air mode.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *circulateAirEnableAvailable;
-
-/**
- * Availability of the control of enable/disable auto mode.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *autoModeEnableAvailable;
-
-/**
- * Availability of the control of enable/disable dual mode.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *dualModeEnableAvailable;
-
-/**
- * Availability of the control of defrost zones.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *defrostZoneAvailable;
-
-/**
- * A set of all defrost zones that are controllable.
- *
- * Optional, NSArray of type SDLDefrostZone minsize="1" maxsize="100"
- */
-@property (nullable, strong, nonatomic) NSArray<SDLDefrostZone > *defrostZone;
-
-/**
- * Availability of the control of air ventilation mode.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *ventilationModeAvailable;
-
-/**
- * A set of all ventilation modes that are controllable.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, NSArray of type SDLVentilationMode minsize="1" maxsize="100"
- */
-@property (nullable, strong, nonatomic) NSArray<SDLVentilationMode> *ventilationMode;
-
-/**
- * @abstract Availability of the control (enable/disable) of heated Steering Wheel.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedSteeringWheelAvailable;
-
-/**
- * @abstract Availability of the control (enable/disable) of heated Windshield.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedWindshieldAvailable;
-
-/**
- * @abstract Availability of the control (enable/disable) of heated Rear Window.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedRearWindowAvailable;
-
-/**
- * @abstract Availability of the control (enable/disable) of heated Mirrors.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedMirrorsAvailable;
-
-/**
- * @abstract Availability of the control of enable/disable climate control.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *climateEnableAvailable;
-
-/**
- * Information about a RC module, including its id.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLClimateControlCapabilities.m b/SmartDeviceLink/SDLClimateControlCapabilities.m
deleted file mode 100644
index 5742cb82c..000000000
--- a/SmartDeviceLink/SDLClimateControlCapabilities.m
+++ /dev/null
@@ -1,197 +0,0 @@
-//
-// SDLClimateControlCapabilities.m
-//
-
-#import "SDLClimateControlCapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLClimateControlCapabilities
-
-- (instancetype)initWithModuleName:(NSString *)moduleName fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable {
- return [self initWithModuleName:moduleName fanSpeedAvailable:fanSpeedAvailable desiredTemperatureAvailable:desiredTemperatureAvailable acEnableAvailable:acEnableAvailable acMaxEnableAvailable:acMaxEnableAvailable circulateAirAvailable:circulateAirEnableAvailable autoModeEnableAvailable:autoModeEnableAvailable dualModeEnableAvailable:dualModeEnableAvailable defrostZoneAvailable:defrostZoneAvailable ventilationModeAvailable:ventilationModeAvailable heatedSteeringWheelAvailable:NO heatedWindshieldAvailable:NO heatedRearWindowAvailable:NO heatedMirrorsAvailable:NO];
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)steeringWheelAvailable heatedWindshieldAvailable:(BOOL)windshieldAvailable heatedRearWindowAvailable:(BOOL)rearWindowAvailable heatedMirrorsAvailable:(BOOL)mirrorsAvailable {
- return [self initWithModuleName:moduleName fanSpeedAvailable:fanSpeedAvailable desiredTemperatureAvailable:desiredTemperatureAvailable acEnableAvailable:acEnableAvailable acMaxEnableAvailable:acMaxEnableAvailable circulateAirAvailable:circulateAirEnableAvailable autoModeEnableAvailable:autoModeEnableAvailable dualModeEnableAvailable:dualModeEnableAvailable defrostZoneAvailable:defrostZoneAvailable ventilationModeAvailable:ventilationModeAvailable heatedSteeringWheelAvailable:steeringWheelAvailable heatedWindshieldAvailable:windshieldAvailable heatedRearWindowAvailable:rearWindowAvailable heatedMirrorsAvailable:mirrorsAvailable climateEnableAvailable:NO];
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)steeringWheelAvailable heatedWindshieldAvailable:(BOOL)windshieldAvailable heatedRearWindowAvailable:(BOOL)rearWindowAvailable heatedMirrorsAvailable:(BOOL)mirrorsAvailable climateEnableAvailable:(BOOL)climateEnableAvailable{
- return [self initWithModuleName:moduleName moduleInfo:nil fanSpeedAvailable:fanSpeedAvailable desiredTemperatureAvailable:desiredTemperatureAvailable acEnableAvailable:acEnableAvailable acMaxEnableAvailable:acMaxEnableAvailable circulateAirAvailable:circulateAirEnableAvailable autoModeEnableAvailable:autoModeEnableAvailable dualModeEnableAvailable:dualModeEnableAvailable defrostZoneAvailable:defrostZoneAvailable ventilationModeAvailable:ventilationModeAvailable heatedSteeringWheelAvailable:steeringWheelAvailable heatedWindshieldAvailable:windshieldAvailable heatedRearWindowAvailable:rearWindowAvailable heatedMirrorsAvailable:mirrorsAvailable climateEnableAvailable:NO];
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)steeringWheelAvailable heatedWindshieldAvailable:(BOOL)windshieldAvailable heatedRearWindowAvailable:(BOOL)rearWindowAvailable heatedMirrorsAvailable:(BOOL)mirrorsAvailable climateEnableAvailable:(BOOL)climateEnableAvailable{
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleName = moduleName;
- self.moduleInfo = moduleInfo;
- self.fanSpeedAvailable = @(fanSpeedAvailable);
- self.desiredTemperatureAvailable = @(desiredTemperatureAvailable);
- self.acEnableAvailable = @(acEnableAvailable);
- self.acMaxEnableAvailable = @(acMaxEnableAvailable);
- self.circulateAirEnableAvailable = @(circulateAirEnableAvailable);
- self.autoModeEnableAvailable = @(autoModeEnableAvailable);
- self.dualModeEnableAvailable = @(dualModeEnableAvailable);
- self.defrostZoneAvailable = @(defrostZoneAvailable);
- self.ventilationModeAvailable = @(ventilationModeAvailable);
- self.heatedSteeringWheelAvailable = @(steeringWheelAvailable);
- self.heatedWindshieldAvailable = @(windshieldAvailable);
- self.heatedRearWindowAvailable = @(rearWindowAvailable);
- self.heatedMirrorsAvailable = @(mirrorsAvailable);
- self.climateEnableAvailable = @(climateEnableAvailable);
- return self;
-}
-
-- (void)setModuleName:(NSString *)moduleName {
- [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
-}
-
-- (NSString *)moduleName {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
-}
-
-- (void)setFanSpeedAvailable:(nullable NSNumber<SDLBool> *)fanSpeedAvailable {
- [self.store sdl_setObject:fanSpeedAvailable forName:SDLRPCParameterNameFanSpeedAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)fanSpeedAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameFanSpeedAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDesiredTemperatureAvailable:(nullable NSNumber<SDLBool> *)desiredTemperatureAvailable {
- [self.store sdl_setObject:desiredTemperatureAvailable forName:SDLRPCParameterNameDesiredTemperatureAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)desiredTemperatureAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameDesiredTemperatureAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAcEnableAvailable:(nullable NSNumber<SDLBool> *)acEnableAvailable {
- [self.store sdl_setObject:acEnableAvailable forName:SDLRPCParameterNameACEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)acEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameACEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAcMaxEnableAvailable:(nullable NSNumber<SDLBool> *)acMaxEnableAvailable {
- [self.store sdl_setObject:acMaxEnableAvailable forName:SDLRPCParameterNameACMaxEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)acMaxEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameACMaxEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCirculateAirEnableAvailable:(nullable NSNumber<SDLBool> *)circulateAirEnableAvailable {
- [self.store sdl_setObject:circulateAirEnableAvailable forName:SDLRPCParameterNameCirculateAirEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)circulateAirEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameCirculateAirEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAutoModeEnableAvailable:(nullable NSNumber<SDLBool> *)autoModeEnableAvailable {
- [self.store sdl_setObject:autoModeEnableAvailable forName:SDLRPCParameterNameAutoModeEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)autoModeEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameAutoModeEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDualModeEnableAvailable:(nullable NSNumber<SDLBool> *)dualModeEnableAvailable {
- [self.store sdl_setObject:dualModeEnableAvailable forName:SDLRPCParameterNameDualModeEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)dualModeEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameDualModeEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDefrostZoneAvailable:(nullable NSNumber<SDLBool> *)defrostZoneAvailable {
- [self.store sdl_setObject:defrostZoneAvailable forName:SDLRPCParameterNameDefrostZoneAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)defrostZoneAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameDefrostZoneAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDefrostZone:(nullable NSArray <SDLDefrostZone>*)defrostZone {
- [self.store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone];
-}
-
-- (nullable NSArray<SDLDefrostZone> *)defrostZone {
- return [self.store sdl_enumsForName:SDLRPCParameterNameDefrostZone error:nil];
-}
-
-- (void)setVentilationModeAvailable:(nullable NSNumber<SDLBool> *)ventilationModeAvailable {
- [self.store sdl_setObject:ventilationModeAvailable forName:SDLRPCParameterNameVentilationModeAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)ventilationModeAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameVentilationModeAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVentilationMode:(nullable NSArray<SDLVentilationMode> *)ventilationMode {
- [self.store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode];
-}
-
-- (nullable NSArray<SDLVentilationMode> *)ventilationMode {
- return [self.store sdl_enumsForName:SDLRPCParameterNameVentilationMode error:nil];
-}
-
-- (void)setHeatedSteeringWheelAvailable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelAvailable {
- [self.store sdl_setObject:heatedSteeringWheelAvailable forName:SDLRPCParameterNameHeatedSteeringWheelAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedSteeringWheelAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeatedWindshieldAvailable:(nullable NSNumber<SDLBool> *)heatedWindshieldAvailable {
- [self.store sdl_setObject:heatedWindshieldAvailable forName:SDLRPCParameterNameHeatedWindshieldAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedWindshieldAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeatedRearWindowAvailable:(nullable NSNumber<SDLBool> *)heatedRearWindowAvailable {
- [self.store sdl_setObject:heatedRearWindowAvailable forName:SDLRPCParameterNameHeatedRearWindowAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedRearWindowAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeatedMirrorsAvailable:(nullable NSNumber<SDLBool> *)heatedMirrorsAvailable {
- [self.store sdl_setObject:heatedMirrorsAvailable forName:SDLRPCParameterNameHeatedMirrorsAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedMirrorsAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setClimateEnableAvailable:(nullable NSNumber<SDLBool> *)climateEnableAvailable {
- [self.store sdl_setObject:climateEnableAvailable forName:SDLRPCParameterNameClimateEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)climateEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameClimateEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
- [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
-}
-
-- (nullable SDLModuleInfo *)moduleInfo {
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLClimateControlData.h b/SmartDeviceLink/SDLClimateControlData.h
deleted file mode 100644
index f811967d5..000000000
--- a/SmartDeviceLink/SDLClimateControlData.h
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// SDLClimateControlData.h
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLDefrostZone.h"
-#import "SDLVentilationMode.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class SDLTemperature;
-
-
-/**
- The current information for the Climate Remote Control Module
- */
-@interface SDLClimateControlData : SDLRPCStruct
-
-/// Convenience init for climate control data.
-/// @param fanSpeed Speed of Fan in integer
-/// @param desiredTemperature Desired Temperature in SDLTemperature
-/// @param acEnable Represents if AC is enabled
-/// @param circulateAirEnable Represents if circulation of air is enabled
-/// @param autoModeEnable Represents if auto mode is enabled
-/// @param defrostZone Represents the kind of defrost zone
-/// @param dualModeEnable Represents if dual mode is enabled
-/// @param acMaxEnable Represents if ac max is enabled
-/// @param ventilationMode Represents the kind of ventilation zone
-/// @return An SDLClimateControlData object
-- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode __deprecated_msg("Use initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone: dualModeEnable:acMaxEnable:ventilationMode:heatedSteeringWheelEnable: heatedWindshieldEnable:heatedRearWindowEnable:heatedMirrorsEnable:climateEnable instead");
-
-/// Convenience init for climate control data.
-/// @param fanSpeed Speed of Fan in integer
-/// @param desiredTemperature Desired Temperature in SDLTemperature
-/// @param acEnable Represents if AC is enabled
-/// @param circulateAirEnable Represents if circulation of air is enabled
-/// @param autoModeEnable Represents if auto mode is enabled
-/// @param defrostZone Represents the kind of defrost zone
-/// @param dualModeEnable Represents if dual mode is enabled
-/// @param acMaxEnable Represents if ac max is enabled
-/// @param ventilationMode Represents the kind of ventilation zone
-/// @param heatedSteeringWheelEnable Represents if heated steering wheel is enabled
-/// @param heatedWindshieldEnable Represents if heated windshield is enabled
-/// @param heatedRearWindowEnable Represents if heated rear window is enabled
-/// @param heatedMirrorsEnable Represents if heated mirrors are enabled
-/// @return An SDLClimateControlData object
-- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode heatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable heatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable heatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable heatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable __deprecated_msg("Use initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone: dualModeEnable:acMaxEnable:ventilationMode:heatedSteeringWheelEnable: heatedWindshieldEnable:heatedRearWindowEnable:heatedMirrorsEnable:climateEnable instead");
-
-/// Convenience init for climate control data with all properties.
-/// @param fanSpeed Speed of Fan in integer
-/// @param desiredTemperature Desired Temperature in SDLTemperature
-/// @param acEnable Represents if AC is enabled
-/// @param circulateAirEnable Represents if circulation of air is enabled
-/// @param autoModeEnable Represents if auto mode is enabled
-/// @param defrostZone Represents the kind of defrost zone
-/// @param dualModeEnable Represents if dual mode is enabled
-/// @param acMaxEnable Represents if ac max is enabled
-/// @param ventilationMode Represents the kind of ventilation zone
-/// @param heatedSteeringWheelEnable Represents if heated steering wheel is enabled
-/// @param heatedWindshieldEnable Represents if heated windshield is enabled
-/// @param heatedRearWindowEnable Represents if heated rear window is enabled
-/// @param heatedMirrorsEnable Represents if heated mirrors are enabled
-/// @param climateEnable Represents if climate is enabled
-/// @return An SDLClimateControlData object
-- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode heatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable heatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable heatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable heatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable climateEnable:(nullable NSNumber<SDLBool> *)climateEnable;
-
-/**
- * Speed of Fan in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *fanSpeed;
-
-/**
- * The Current Temperature in SDLTemperature
- *
- * @warning This property is readonly and cannot be set on the module.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLTemperature *currentTemperature;
-
-/**
- * Desired Temperature in SDLTemperature
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLTemperature *desiredTemperature;
-
-/**
- * Represents if AC is enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acEnable;
-
-/**
- * Represents if circulation of air is enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *circulateAirEnable;
-
-/**
- * Represents if auto mode is enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *autoModeEnable;
-
-/**
- * Represents the kind of defrost zone.
- *
- * Optional, SDLDefrostZone
- */
-@property (nullable, strong, nonatomic) SDLDefrostZone defrostZone;
-
-/**
- * Represents if dual mode is enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *dualModeEnable;
-
-/**
- * Represents if ac max is enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acMaxEnable;
-
-/**
- * Represents the kind of Ventilation zone.
- *
- * Optional, SDLVentilationMode
- */
-@property (nullable, strong, nonatomic) SDLVentilationMode ventilationMode;
-
-/**
- * @abstract value false means disabled/turn off, value true means enabled/turn on.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedSteeringWheelEnable;
-
-/**
- * @abstract value false means disabled, value true means enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedWindshieldEnable;
-
-/**
- * @abstract value false means disabled, value true means enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedRearWindowEnable;
-
-/**
- * @abstract Value false means disabled, value true means enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedMirrorsEnable;
-
-/**
- * @abstract Value false means disabled, value true means enabled.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *climateEnable;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLClimateControlData.m b/SmartDeviceLink/SDLClimateControlData.m
deleted file mode 100644
index bed8ba365..000000000
--- a/SmartDeviceLink/SDLClimateControlData.m
+++ /dev/null
@@ -1,187 +0,0 @@
-//
-// SDLClimateControlData.m
-//
-
-#import "SDLClimateControlData.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLTemperature.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLClimateControlData
-
-- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode {
- return [self initWithFanSpeed:fanSpeed desiredTemperature:desiredTemperature acEnable:acEnable circulateAirEnable:circulateAirEnable autoModeEnable:autoModeEnable defrostZone:defrostZone dualModeEnable:dualModeEnable acMaxEnable:acMaxEnable ventilationMode:ventilationMode heatedSteeringWheelEnable:@NO heatedWindshieldEnable:@NO heatedRearWindowEnable:@NO heatedMirrorsEnable:@NO];
-}
-
-- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode heatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable heatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable heatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable heatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.fanSpeed = fanSpeed;
- self.desiredTemperature = desiredTemperature;
- self.acEnable = acEnable;
- self.circulateAirEnable = circulateAirEnable;
- self.autoModeEnable = autoModeEnable;
- self.defrostZone = defrostZone;
- self.dualModeEnable = dualModeEnable;
- self.acMaxEnable = acMaxEnable;
- self.ventilationMode = ventilationMode;
- self.heatedSteeringWheelEnable = heatedSteeringWheelEnable;
- self.heatedWindshieldEnable = heatedWindshieldEnable;
- self.heatedRearWindowEnable = heatedRearWindowEnable;
- self.heatedMirrorsEnable = heatedMirrorsEnable;
-
- return self;
-}
-
-- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode heatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable heatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable heatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable heatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable climateEnable:(nullable NSNumber<SDLBool> *)climateEnable {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.fanSpeed = fanSpeed;
- self.desiredTemperature = desiredTemperature;
- self.acEnable = acEnable;
- self.circulateAirEnable = circulateAirEnable;
- self.autoModeEnable = autoModeEnable;
- self.defrostZone = defrostZone;
- self.dualModeEnable = dualModeEnable;
- self.acMaxEnable = acMaxEnable;
- self.ventilationMode = ventilationMode;
- self.heatedSteeringWheelEnable = heatedSteeringWheelEnable;
- self.heatedWindshieldEnable = heatedWindshieldEnable;
- self.heatedRearWindowEnable = heatedRearWindowEnable;
- self.heatedMirrorsEnable = heatedMirrorsEnable;
- self.climateEnable = climateEnable;
-
- return self;
-}
-
-- (void)setFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed {
- [self.store sdl_setObject:fanSpeed forName:SDLRPCParameterNameFanSpeed];
-}
-
-- (nullable NSNumber<SDLInt> *)fanSpeed {
- return [self.store sdl_objectForName:SDLRPCParameterNameFanSpeed ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCurrentTemperature:(nullable SDLTemperature *)currentTemperature {
- [self.store sdl_setObject:currentTemperature forName:SDLRPCParameterNameCurrentTemperature];
-}
-
-- (nullable SDLTemperature *)currentTemperature {
- return [self.store sdl_objectForName:SDLRPCParameterNameCurrentTemperature ofClass:SDLTemperature.class error:nil];
-}
-
-- (void)setDesiredTemperature:(nullable SDLTemperature *)desiredTemperature {
- [self.store sdl_setObject:desiredTemperature forName:SDLRPCParameterNameDesiredTemperature];
-}
-
-- (nullable SDLTemperature *)desiredTemperature {
- return [self.store sdl_objectForName:SDLRPCParameterNameDesiredTemperature ofClass:SDLTemperature.class error:nil];
-}
-
-- (void)setAcEnable:(nullable NSNumber<SDLBool> *)acEnable {
- [self.store sdl_setObject:acEnable forName:SDLRPCParameterNameACEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)acEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameACEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCirculateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable {
- [self.store sdl_setObject:circulateAirEnable forName:SDLRPCParameterNameCirculateAirEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)circulateAirEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameCirculateAirEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAutoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable {
- [self.store sdl_setObject:autoModeEnable forName:SDLRPCParameterNameAutoModeEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)autoModeEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameAutoModeEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDefrostZone:(nullable SDLDefrostZone)defrostZone {
- [self.store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone];
-}
-
-- (nullable SDLDefrostZone)defrostZone {
- return [self.store sdl_enumForName:SDLRPCParameterNameDefrostZone error:nil];
-}
-
-- (void)setDualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable {
- [self.store sdl_setObject:dualModeEnable forName:SDLRPCParameterNameDualModeEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)dualModeEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameDualModeEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAcMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable {
- [self.store sdl_setObject:acMaxEnable forName:SDLRPCParameterNameACMaxEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)acMaxEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameACMaxEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVentilationMode:(nullable SDLVentilationMode)ventilationMode {
- [self.store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode];
-}
-
-- (nullable SDLVentilationMode)ventilationMode {
- return [self.store sdl_enumForName:SDLRPCParameterNameVentilationMode error:nil];
-}
-
-- (void)setHeatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable {
- [self.store sdl_setObject:heatedSteeringWheelEnable forName:SDLRPCParameterNameHeatedSteeringWheelEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable {
- [self.store sdl_setObject:heatedWindshieldEnable forName:SDLRPCParameterNameHeatedWindshieldEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedWindshieldEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable {
- [self.store sdl_setObject:heatedRearWindowEnable forName:SDLRPCParameterNameHeatedRearWindowEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedRearWindowEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable {
- [self.store sdl_setObject:heatedMirrorsEnable forName:SDLRPCParameterNameHeatedMirrorsEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatedMirrorsEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setClimateEnable:(nullable NSNumber<SDLBool> *)climateEnable {
- [self.store sdl_setObject:climateEnable forName:SDLRPCParameterNameClimateEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)climateEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameClimateEnable ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCompassDirection.h b/SmartDeviceLink/SDLCompassDirection.h
deleted file mode 100644
index ed11f0310..000000000
--- a/SmartDeviceLink/SDLCompassDirection.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// SDLCompassDirection.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * The list of potential compass directions. Used in GPS data
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLCompassDirection SDL_SWIFT_ENUM;
-
-/**
- * Direction North
- */
-extern SDLCompassDirection const SDLCompassDirectionNorth;
-
-/**
- * Direction Northwest
- */
-extern SDLCompassDirection const SDLCompassDirectionNorthwest;
-
-/**
- * Direction West
- */
-extern SDLCompassDirection const SDLCompassDirectionWest;
-
-/**
- * Direction Southwest
- */
-extern SDLCompassDirection const SDLCompassDirectionSouthwest;
-
-/**
- * Direction South
- */
-extern SDLCompassDirection const SDLCompassDirectionSouth;
-
-/**
- * Direction Southeast
- */
-extern SDLCompassDirection const SDLCompassDirectionSoutheast;
-
-/**
- * Direction East
- */
-extern SDLCompassDirection const SDLCompassDirectionEast;
-
-/**
- * Direction Northeast
- */
-extern SDLCompassDirection const SDLCompassDirectionNortheast;
diff --git a/SmartDeviceLink/SDLComponentVolumeStatus.h b/SmartDeviceLink/SDLComponentVolumeStatus.h
deleted file mode 100644
index dc710a573..000000000
--- a/SmartDeviceLink/SDLComponentVolumeStatus.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// SDLComponentVolumeStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * The volume status of a vehicle component. Used in SingleTireStatus and VehicleData Fuel Level
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLComponentVolumeStatus SDL_SWIFT_ENUM;
-
-/**
- * Unknown SDLComponentVolumeStatus
- */
-extern SDLComponentVolumeStatus const SDLComponentVolumeStatusUnknown;
-
-/**
- * Normal SDLComponentVolumeStatus
- */
-extern SDLComponentVolumeStatus const SDLComponentVolumeStatusNormal;
-
-/**
- * Low SDLComponentVolumeStatus
- */
-extern SDLComponentVolumeStatus const SDLComponentVolumeStatusLow;
-
-/**
- * Fault SDLComponentVolumeStatus
- */
-extern SDLComponentVolumeStatus const SDLComponentVolumeStatusFault;
-
-/**
- * Alert SDLComponentVolumeStatus
- */
-extern SDLComponentVolumeStatus const SDLComponentVolumeStatusAlert;
-
-/**
- * Not supported SDLComponentVolumeStatus
- */
-extern SDLComponentVolumeStatus const SDLComponentVolumeStatusNotSupported;
diff --git a/SmartDeviceLink/SDLConfiguration.h b/SmartDeviceLink/SDLConfiguration.h
deleted file mode 100644
index 17c7dc6ee..000000000
--- a/SmartDeviceLink/SDLConfiguration.h
+++ /dev/null
@@ -1,171 +0,0 @@
-//
-// SDLConfiguration.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/13/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-@class SDLFileManagerConfiguration;
-@class SDLLifecycleConfiguration;
-@class SDLLockScreenConfiguration;
-@class SDLLogConfiguration;
-@class SDLStreamingMediaConfiguration;
-@class SDLEncryptionConfiguration;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Contains information about the app's configurtion, such as lifecycle, lockscreen, encryption, etc.
-@interface SDLConfiguration : NSObject <NSCopying>
-
-/**
- * The lifecycle configuration.
- */
-@property (copy, nonatomic, readonly) SDLLifecycleConfiguration *lifecycleConfig;
-
-/**
- * The lock screen configuration.
- */
-@property (copy, nonatomic, readonly) SDLLockScreenConfiguration *lockScreenConfig;
-
-/**
- * The log configuration.
- */
-@property (copy, nonatomic, readonly) SDLLogConfiguration *loggingConfig;
-
-/**
- * The streaming media configuration.
- */
-@property (copy, nonatomic, readonly, nullable) SDLStreamingMediaConfiguration *streamingMediaConfig;
-
-/**
- * The file manager configuration.
- */
-@property (copy, nonatomic, readonly) SDLFileManagerConfiguration *fileManagerConfig;
-
-/**
- * The encryption configuration.
- */
-@property (copy, nonatomic, readonly) SDLEncryptionConfiguration *encryptionConfig;
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, file manager and encryption configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
- * @param encryptionConfig The encryption configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @return The configuration
- */
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig;
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media, file manager and encryption configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
- * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
- * @param encryptionConfig The encryption configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @return The configuration
- */
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig;
-
-
-#pragma mark - Deprecated Initializers
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @return The configuration
- */
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:fileManager:encryption: instead");
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
- * @return The configuration
- */
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:fileManager:encryption: instead");
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
- * @return The configuration
- */
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:encryption: instead");
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
- * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
- * @return The configuration
- */
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:encryption: instead");
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
- * @return The configuration
- */
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:fileManager:encryption: instead") NS_SWIFT_UNAVAILABLE("Use an initializer instead");
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
- * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
- * @return The configuration
- */
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:encryption: instead") NS_SWIFT_UNAVAILABLE("Use an initializer instead");
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
- * @return The configuration
- */
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:encryption: instead") NS_SWIFT_UNAVAILABLE("Use an initializer instead");
-
-/**
- * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.
- *
- * @param lifecycleConfig The lifecycle configuration to be used.
- * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
- * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
- * @return The configuration
- */
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:fileManager:encryption: instead") NS_SWIFT_UNAVAILABLE("Use an initializer instead");
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLConfiguration.m b/SmartDeviceLink/SDLConfiguration.m
deleted file mode 100644
index bd1e85fdc..000000000
--- a/SmartDeviceLink/SDLConfiguration.m
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// SDLConfiguration.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/13/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLConfiguration.h"
-
-#import "SDLFileManagerConfiguration.h"
-#import "SDLLifecycleConfiguration.h"
-#import "SDLLockScreenConfiguration.h"
-#import "SDLLogConfiguration.h"
-#import "SDLStreamingMediaConfiguration.h"
-#import "SDLEncryptionConfiguration.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLConfiguration
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfiguration {
- return [self initWithLifecycle:lifecycleConfiguration lockScreen:nil];
-}
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig {
- return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:nil fileManager:nil encryption:nil];
-}
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig {
- return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig fileManager:nil encryption:nil];
-}
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig {
- return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig fileManager:fileManagerConfig encryption:nil];
-}
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig {
- return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig streamingMedia:nil fileManager:fileManagerConfig encryption:encryptionConfig];
-}
-
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfiguration {
- return [self configurationWithLifecycle:lifecycleConfiguration lockScreen:nil];
-}
-
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig {
- return [[self alloc] initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:nil fileManager:nil encryption:nil];
-}
-
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig {
- return [self configurationWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig fileManager:nil];
-}
-
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig {
- return [[self alloc] initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig fileManager:fileManagerConfig encryption:nil];
-}
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig {
- return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig streamingMedia:streamingMediaConfig fileManager:nil encryption:nil];
-}
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig {
- return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig streamingMedia:streamingMediaConfig fileManager:fileManagerConfig encryption:nil];
-}
-
-- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _lifecycleConfig = lifecycleConfig;
- _lockScreenConfig = lockScreenConfig ?: [SDLLockScreenConfiguration enabledConfiguration];
- _loggingConfig = logConfig ?: [SDLLogConfiguration defaultConfiguration];
-
- _streamingMediaConfig = streamingMediaConfig;
- if (_streamingMediaConfig != nil) {
- // If we have a streaming config, the apptype MUST be navigation or projection
- NSAssert(([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeNavigation] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeProjection]), @"You should only set a streaming media configuration if your app is a NAVIGATION or PROJECTION HMI type");
- _streamingMediaConfig = streamingMediaConfig;
- } else {
- // If we don't have a streaming config, we MUST NOT be navigation or projection
- NSAssert(!([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeNavigation] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeProjection]), @"If your app is a NAVIGATION or PROJECTION HMI type, you must set a streaming media configuration on SDLConfiguration");
- }
-
- _fileManagerConfig = fileManagerConfig ?: [SDLFileManagerConfiguration defaultConfiguration];
- _encryptionConfig = encryptionConfig ?: [SDLEncryptionConfiguration defaultConfiguration];
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- if (_encryptionConfig.securityManagers == nil && _streamingMediaConfig.securityManagers != nil) {
- _encryptionConfig.securityManagers = _streamingMediaConfig.securityManagers;
- }
-#pragma clang diagnostic pop
-
- return self;
-}
-
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig {
- return [self configurationWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig streamingMedia:streamingMediaConfig fileManager:nil];
-}
-
-+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig {
- return [[self alloc] initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig streamingMedia:streamingMediaConfig fileManager:fileManagerConfig encryption:nil];
-}
-
-#pragma mark - NSCopying
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- SDLConfiguration *new = [[SDLConfiguration allocWithZone:zone] initWithLifecycle:_lifecycleConfig lockScreen:_lockScreenConfig logging:_loggingConfig streamingMedia:_streamingMediaConfig fileManager:_fileManagerConfig encryption:_encryptionConfig];
- return new;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLControlFramePayloadNak.h b/SmartDeviceLink/SDLControlFramePayloadNak.h
deleted file mode 100644
index 41781cb2e..000000000
--- a/SmartDeviceLink/SDLControlFramePayloadNak.h
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// SDLControlFramePayloadNak.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/20/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLControlFramePayloadType.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLControlFramePayloadNak : NSObject <SDLControlFramePayloadType>
-
-/// An array of rejected parameters such as: [`hashId`]
-@property (copy, nonatomic, readonly, nullable) NSArray<NSString *> *rejectedParams;
-
-- (instancetype)initWithRejectedParams:(nullable NSArray<NSString *> *)rejectedParams;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLControlFramePayloadNak.m b/SmartDeviceLink/SDLControlFramePayloadNak.m
deleted file mode 100644
index 55b9a6dad..000000000
--- a/SmartDeviceLink/SDLControlFramePayloadNak.m
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// SDLControlFramePayloadNak.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/20/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLControlFramePayloadNak.h"
-
-#import "bson_object.h"
-#import "SDLControlFramePayloadConstants.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLControlFramePayloadNak ()
-
-@property (copy, nonatomic, readwrite, nullable) NSArray<NSString *> *rejectedParams;
-
-@end
-
-@implementation SDLControlFramePayloadNak
-
-- (instancetype)initWithRejectedParams:(nullable NSArray<NSString *> *)rejectedParams {
- self = [super init];
- if (!self) return nil;
-
- _rejectedParams = rejectedParams;
-
- return self;
-}
-
-- (instancetype)initWithData:(nullable NSData *)data {
- self = [super init];
- if (!self) return nil;
-
- if (data.length > 0) {
- [self sdl_parse:data];
- }
-
- return self;
-}
-
-- (nullable NSData *)data {
- if (self.rejectedParams == nil) {
- return nil;
- }
-
- BsonObject payloadObject;
- bson_object_initialize_default(&payloadObject);
-
- if (self.rejectedParams != nil) {
- BsonArray arrayObject;
- bson_array_initialize(&arrayObject, 512);
-
- for (NSString *param in self.rejectedParams) {
- bson_array_add_string(&arrayObject, (char *)param.UTF8String);
- }
-
- bson_object_put_array(&payloadObject, SDLControlFrameRejectedParams, &arrayObject);
- }
-
- BytePtr bsonData = bson_object_to_bytes(&payloadObject);
- NSUInteger length = bson_object_size(&payloadObject);
-
- bson_object_deinitialize(&payloadObject);
-
- return [[NSData alloc] initWithBytes:bsonData length:length];
-}
-
-- (void)sdl_parse:(NSData *)data {
- BsonObject payloadObject;
- size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length);
- if (retval <= 0) {
- return;
- }
-
- BsonArray *arrayObject = bson_object_get_array(&payloadObject, SDLControlFrameRejectedParams);
- if (arrayObject == NULL) {
- return;
- }
-
- NSMutableArray<NSString *> *rejectedParams = [NSMutableArray array];
- char *paramString;
- size_t index = 0;
-
- paramString = bson_array_get_string(arrayObject, index);
- while (paramString != NULL) {
- [rejectedParams addObject:[NSString stringWithUTF8String:paramString]];
- index++;
- paramString = bson_array_get_string(arrayObject, index);
- }
-
- self.rejectedParams = [rejectedParams copy];
- bson_object_deinitialize(&payloadObject);
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"<%@>: Rejected params: %@", NSStringFromClass(self.class), self.rejectedParams];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLDefrostZone.h b/SmartDeviceLink/SDLDefrostZone.h
deleted file mode 100644
index 04519a6a2..000000000
--- a/SmartDeviceLink/SDLDefrostZone.h
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// SDLDefrostZone.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration listing possible defrost zones. Used in ClimateControlCapabilities and Data.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLDefrostZone SDL_SWIFT_ENUM;
-
-/**
- * A SDLDefrostZone with the value of *FRONT*
- */
-extern SDLDefrostZone const SDLDefrostZoneFront;
-
-/**
- * A SDLDefrostZone with the value of *REAR*
- */
-extern SDLDefrostZone const SDLDefrostZoneRear;
-
-/**
- * A SDLDefrostZone with the value of *All*
- */
-extern SDLDefrostZone const SDLDefrostZoneAll;
-
-/**
- * A SDLDefrostZone with the value of *None*
- */
-extern SDLDefrostZone const SDLDefrostZoneNone;
diff --git a/SmartDeviceLink/SDLDeleteSubMenu.m b/SmartDeviceLink/SDLDeleteSubMenu.m
deleted file mode 100644
index 2fd29100e..000000000
--- a/SmartDeviceLink/SDLDeleteSubMenu.m
+++ /dev/null
@@ -1,46 +0,0 @@
-// SDLDeleteSubMenu.m
-//
-
-
-#import "SDLDeleteSubMenu.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLDeleteSubMenu
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameDeleteSubMenu]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithId:(UInt32)menuId {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.menuID = @(menuId);
-
- return self;
-}
-
-- (void)setMenuID:(NSNumber<SDLInt> *)menuID {
- [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuId];
-}
-
-- (NSNumber<SDLInt> *)menuID {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuId ofClass:NSNumber.class error:&error];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLDeliveryMode.h b/SmartDeviceLink/SDLDeliveryMode.h
deleted file mode 100644
index 61f9dcf29..000000000
--- a/SmartDeviceLink/SDLDeliveryMode.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// SDLDeliveryMode.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * Specifies the mode in which the sendLocation request is sent. Used in SendLocation.
- */
-typedef SDLEnum SDLDeliveryMode SDL_SWIFT_ENUM;
-
-/**
- * User is prompted on HMI
- */
-extern SDLDeliveryMode const SDLDeliveryModePrompt;
-
-/**
- * Set the location as destination without prompting the user
- */
-extern SDLDeliveryMode const SDLDeliveryModeDestination;
-
-/**
- * Adds the current location to navigation queue
- */
-extern SDLDeliveryMode const SDLDeliveryModeQueue;
diff --git a/SmartDeviceLink/SDLDeviceLevelStatus.h b/SmartDeviceLink/SDLDeviceLevelStatus.h
deleted file mode 100644
index fb6a58d24..000000000
--- a/SmartDeviceLink/SDLDeviceLevelStatus.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// SDLDeviceLevelStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the reported battery status of the connected device, if reported. Used in DeviceStatus.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLDeviceLevelStatus SDL_SWIFT_ENUM;
-
-/**
- * Device battery level is zero bars
- */
-extern SDLDeviceLevelStatus const SDLDeviceLevelStatusZeroBars;
-
-/**
- * Device battery level is one bar
- */
-extern SDLDeviceLevelStatus const SDLDeviceLevelStatusOneBar;
-
-/**
- * Device battery level is two bars
- */
-extern SDLDeviceLevelStatus const SDLDeviceLevelStatusTwoBars;
-
-/**
- * Device battery level is three bars
- */
-extern SDLDeviceLevelStatus const SDLDeviceLevelStatusThreeBars;
-
-/**
- * Device battery level is four bars
- */
-extern SDLDeviceLevelStatus const SDLDeviceLevelStatusFourBars;
-
-/**
- * Device battery level is unknown
- */
-extern SDLDeviceLevelStatus const SDLDeviceLevelStatusNotProvided;
diff --git a/SmartDeviceLink/SDLDimension.h b/SmartDeviceLink/SDLDimension.h
deleted file mode 100644
index a1c5ab858..000000000
--- a/SmartDeviceLink/SDLDimension.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLDimension.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * The supported dimensions of the GPS. Used in GPSData
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLDimension SDL_SWIFT_ENUM;
-
-/**
- * No GPS at all
- */
-extern SDLDimension const SDLDimensionNoFix;
-
-/**
- * Longitude and latitude of the GPS
- */
-extern SDLDimension const SDLDimension2D;
-
-/**
- * Longitude and latitude and altitude of the GPS
- */
-extern SDLDimension const SDLDimension3D;
diff --git a/SmartDeviceLink/SDLDirection.h b/SmartDeviceLink/SDLDirection.h
deleted file mode 100644
index 7f21ca385..000000000
--- a/SmartDeviceLink/SDLDirection.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// SDLDirection.h
-// SmartDeviceLink
-//
-// Created by Nicole on 2/22/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * A navigation direction.
- */
-typedef SDLEnum SDLDirection SDL_SWIFT_ENUM;
-
-/**
- * Direction left
- */
-extern SDLDirection const SDLDirectionLeft;
-
-/**
- * Direction right
- */
-extern SDLDirection const SDLDirectionRight;
-
-
diff --git a/SmartDeviceLink/SDLDisplayCapability.h b/SmartDeviceLink/SDLDisplayCapability.h
deleted file mode 100644
index 7be6a589e..000000000
--- a/SmartDeviceLink/SDLDisplayCapability.h
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// SDLDisplayCapability.h
-// SmartDeviceLink
-
-#import "SDLRPCStruct.h"
-
-@class SDLWindowCapability;
-@class SDLWindowTypeCapabilities;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Contain the display related information and all windows related to that display.
-
- @since SDL 6.0
- */
-@interface SDLDisplayCapability : SDLRPCStruct
-
-/**
- Init with required properties
-
- @param displayName Name of the display.
- */
-- (instancetype)initWithDisplayName:(NSString *)displayName;
-
-/// This method is broken (the types don't match the parameter names) and will always return nil. Use initWithDisplayName:windowCapabilities:windowTypeSupported: instead.
-- (instancetype)initWithDisplayName:(NSString *)displayName windowTypeSupported:(nullable NSArray<SDLWindowCapability *> *)windowTypeSupported windowCapabilities:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowCapabilities __deprecated_msg("This method is broken and will return nil every time. Use initWithDisplayName:windowCapabilities:windowTypeSupported: instead");
-
-/**
- Init with all the properities
-
- @param displayName Name of the display.
- @param windowCapabilities Contains a list of capabilities of all windows related to the app. @see windowCapabilities
- @param windowTypeSupported Informs the application how many windows the app is allowed to create per type.
- */
-- (instancetype)initWithDisplayName:(NSString *)displayName windowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities windowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported;
-
-
-/**
- Name of the display.
- */
-@property (strong, nonatomic, nullable) NSString *displayName;
-
-/**
- Informs the application how many windows the app is allowed to create per type.
-
- Min size 1
- Max size 100
- */
-@property (strong, nonatomic, nullable) NSArray<SDLWindowTypeCapabilities *> *windowTypeSupported;
-
-/**
- Contains a list of capabilities of all windows related to the app. Once the app has registered the capabilities of all windows will be provided, but GetSystemCapability still allows requesting window capabilities of all windows.
-
- After registration, only windows with capabilities changed will be included. Following cases will cause only affected windows to be included:
-
- 1. App creates a new window. After the window is created, a system capability notification will be sent related only to the created window.
- 2. App sets a new template to the window. The new template changes window capabilties. The notification will reflect those changes to the single window.
-
- Min size 1, Max size 1000
- */
-@property (strong, nonatomic, nullable) NSArray<SDLWindowCapability *> *windowCapabilities;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLDisplayCapability.m b/SmartDeviceLink/SDLDisplayCapability.m
deleted file mode 100644
index 04c23cca2..000000000
--- a/SmartDeviceLink/SDLDisplayCapability.m
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// SDLDisplayCapability.m
-// SmartDeviceLink
-
-#import "SDLDisplayCapability.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLWindowTypeCapabilities.h"
-#import "SDLWindowCapability.h"
-
-@implementation SDLDisplayCapability
-
-- (instancetype)init {
- self = [super init];
- if (!self) {
- return nil;
- }
- return self;
-}
-
-- (instancetype)initWithDisplayName:(NSString *)displayName {
- self = [self init];
- if (!self) {
- return nil;
- }
- self.displayName = displayName;
- return self;
-}
-
-- (instancetype)initWithDisplayName:(NSString *)displayName windowTypeSupported:(NSArray<SDLWindowCapability *> *)windowTypeSupported windowCapabilities:(NSArray<SDLWindowTypeCapabilities *> *)windowCapabilities {
- SDLLogE(@"This method is broken (the types don't match the parameter names) and will always return nil. Use initWithDisplayName:windowCapabilities:windowTypeSupported: instead.");
-
- return nil;
-}
-
-- (instancetype)initWithDisplayName:(NSString *)displayName windowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities windowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
- self = [self initWithDisplayName:displayName];
- if (!self) {
- return nil;
- }
- self.windowTypeSupported = windowTypeSupported;
- self.windowCapabilities = windowCapabilities;
- return self;
-}
-
-- (void)setDisplayName:(NSString *)displayName {
- [self.store sdl_setObject:displayName forName:SDLRPCParameterNameDisplayName];
-}
-
-- (NSString *)displayName {
- return [self.store sdl_objectForName:SDLRPCParameterNameDisplayName ofClass:NSString.class error:nil];
-}
-
-- (void)setWindowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
- [self.store sdl_setObject:windowTypeSupported forName:SDLRPCParameterNameWindowTypeSupported];
-}
-
-- (nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
- return [self.store sdl_objectsForName:SDLRPCParameterNameWindowTypeSupported ofClass:SDLWindowTypeCapabilities.class error:nil];
-}
-
-- (void)setWindowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities {
- [self.store sdl_setObject:windowCapabilities forName:SDLRPCParameterNameWindowCapabilities];
-}
-
-- (nullable NSArray<SDLWindowCapability *> *)windowCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameWindowCapabilities ofClass:SDLWindowCapability.class error:nil];
-}
-
-
-@end
diff --git a/SmartDeviceLink/SDLDisplayMode.h b/SmartDeviceLink/SDLDisplayMode.h
deleted file mode 100644
index e570243f5..000000000
--- a/SmartDeviceLink/SDLDisplayMode.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// SDLDisplayMode.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * Identifies the various display types used by SDL.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLDisplayMode SDL_SWIFT_ENUM;
-
-/**
- * @abstract Display Mode : DAY
- */
-extern SDLDisplayMode const SDLDisplayModeDay;
-
-/**
- * @abstract Display Mode : NIGHT.
- */
-extern SDLDisplayMode const SDLDisplayModeNight;
-
-/**
- * @abstract Display Mode : AUTO.
- */
-extern SDLDisplayMode const SDLDisplayModeAuto;
diff --git a/SmartDeviceLink/SDLDisplayType.h b/SmartDeviceLink/SDLDisplayType.h
deleted file mode 100644
index 14ee845f9..000000000
--- a/SmartDeviceLink/SDLDisplayType.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// SDLDisplayType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Identifies the various display types used by SDL. Used in DisplayCapabilities.
-
- @warning This should not be used to identify features of a display, this is a deprecated parameter.
-
- @since SDL 1.0
- */
-typedef SDLEnum SDLDisplayType SDL_SWIFT_ENUM;
-
-/**
- * This display type provides a 2-line x 20 character "dot matrix" display.
- */
-extern SDLDisplayType const SDLDisplayTypeCID;
-
-/**
- * Display type 2
- */
-extern SDLDisplayType const SDLDisplayTypeType2;
-
-/**
- * Display type 5
- */
-extern SDLDisplayType const SDLDisplayTypeType5;
-
-/**
- * This display type provides an 8 inch touchscreen display.
- */
-extern SDLDisplayType const SDLDisplayTypeNGN;
-
-/**
- * Display type Gen 28 DMA
- */
-extern SDLDisplayType const SDLDisplayTypeGen28DMA;
-
-/**
- * Display type Gen 26 DMA
- */
-extern SDLDisplayType const SDLDisplayTypeGen26DMA;
-
-/**
- * Display type MFD3
- */
-extern SDLDisplayType const SDLDisplayTypeMFD3;
-
-/**
- * Display type MFD4
- */
-extern SDLDisplayType const SDLDisplayTypeMFD4;
-
-/**
- * Display type MFD5
- */
-extern SDLDisplayType const SDLDisplayTypeMFD5;
-
-/**
- * Display type Gen 3 8-inch
- */
-extern SDLDisplayType const SDLDisplayTypeGen38Inch;
-
-/**
- * Display type Generic
- */
-extern SDLDisplayType const SDLDisplayTypeGeneric;
diff --git a/SmartDeviceLink/SDLDistanceUnit.h b/SmartDeviceLink/SDLDistanceUnit.h
deleted file mode 100644
index 12092b92e..000000000
--- a/SmartDeviceLink/SDLDistanceUnit.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// SDLDistanceUnit.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * Wiper Status
- */
-typedef SDLEnum SDLDistanceUnit SDL_SWIFT_ENUM;
-
-/**
- * @abstract SDLDistanceUnit: *MILES*
- */
-extern SDLDistanceUnit const SDLDistanceUnitMiles;
-
-/**
- * @abstract SDLDistanceUnit: *KILOMETERS*
- */
-extern SDLDistanceUnit const SDLDistanceUnitKilometers;
diff --git a/SmartDeviceLink/SDLDriverDistractionState.h b/SmartDeviceLink/SDLDriverDistractionState.h
deleted file mode 100644
index 88b26b36b..000000000
--- a/SmartDeviceLink/SDLDriverDistractionState.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// SDLDriverDistractionState.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration that describes possible states of driver distraction. Used in OnDriverDistraction.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLDriverDistractionState SDL_SWIFT_ENUM;
-
-/**
- * Driver distraction rules are in effect.
- */
-extern SDLDriverDistractionState const SDLDriverDistractionStateOn;
-
-/**
- * Driver distraction rules are NOT in effect.
- */
-extern SDLDriverDistractionState const SDLDriverDistractionStateOff;
-
diff --git a/SmartDeviceLink/SDLECallConfirmationStatus.h b/SmartDeviceLink/SDLECallConfirmationStatus.h
deleted file mode 100644
index 763cf0ec2..000000000
--- a/SmartDeviceLink/SDLECallConfirmationStatus.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SDLECallConfirmationStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Reflects the status of the eCall Notification. Used in ECallInfo
-
- Since SmartDeviceLink 2.0
- */
-typedef SDLEnum SDLECallConfirmationStatus SDL_SWIFT_ENUM;
-
-/**
- No E-Call signal triggered.
- */
-extern SDLECallConfirmationStatus const SDLECallConfirmationStatusNormal;
-
-/**
- An E-Call is being in progress.
- */
-extern SDLECallConfirmationStatus const SDLECallConfirmationStatusInProgress;
-
-/**
- An E-Call was cancelled by the user.
- */
-extern SDLECallConfirmationStatus const SDLECallConfirmationStatusCancelled;
-
-/**
- The E-Call sequence is completed.
- */
-extern SDLECallConfirmationStatus const SDLECallConfirmationStatusCompleted;
-
-/**
- An E-Call could not be connected.
- */
-extern SDLECallConfirmationStatus const SDLECallConfirmationStatusUnsuccessful;
-
-/**
- E-Call is not configured on this vehicle.
- */
-extern SDLECallConfirmationStatus const SDLECallConfirmationStatusConfiguredOff;
-
-/**
- E-Call is considered to be complete without Emergency Operator contact.
- */
-extern SDLECallConfirmationStatus const SDLECallConfirmationStatusCompleteDTMFTimeout;
diff --git a/SmartDeviceLink/SDLElectronicParkBrakeStatus.h b/SmartDeviceLink/SDLElectronicParkBrakeStatus.h
deleted file mode 100644
index c0faaad55..000000000
--- a/SmartDeviceLink/SDLElectronicParkBrakeStatus.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// SDLElectronicParkBrakeStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Reflects the status of the Electronic Parking Brake. A Vehicle Data Type.
- */
-typedef SDLEnum SDLElectronicParkBrakeStatus SDL_SWIFT_ENUM;
-
-/**
- Parking brake actuators have been fully applied.
- */
-extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusClosed;
-
-/**
- Parking brake actuators are transitioning to either Apply/Closed or Release/Open state.
- */
-extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusTransition;
-
-/**
- Parking brake actuators are released.
- */
-extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusOpen;
-
-/**
- When driver pulls the Electronic Parking Brake switch while driving "at speed".
- */
-extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusDriveActive;
-
-/**
- When system has a fault or is under maintenance.
- */
-extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusFault;
diff --git a/SmartDeviceLink/SDLElectronicParkBrakeStatus.m b/SmartDeviceLink/SDLElectronicParkBrakeStatus.m
deleted file mode 100644
index 23b55caa3..000000000
--- a/SmartDeviceLink/SDLElectronicParkBrakeStatus.m
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// SDLElectronicParkBrakeStatus.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 7/16/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLElectronicParkBrakeStatus.h"
-
-typedef SDLEnum SDLElectronicParkBrakeStatus SDL_SWIFT_ENUM;
-
-
-SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusClosed = @"CLOSED";
-SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusTransition = @"TRANSITION";
-SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusOpen = @"OPEN";
-SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusDriveActive = @"DRIVE_ACTIVE";
-SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusFault = @"FAULT";
diff --git a/SmartDeviceLink/SDLEmergencyEventType.h b/SmartDeviceLink/SDLEmergencyEventType.h
deleted file mode 100644
index 4b93558f5..000000000
--- a/SmartDeviceLink/SDLEmergencyEventType.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SDLEmergencyEventType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Reflects the emergency event status of the vehicle. Used in EmergencyEvent
-
- Since SmartDeviceLink 2.0
- */
-typedef SDLEnum SDLEmergencyEventType SDL_SWIFT_ENUM;
-
-/**
- No emergency event has happened.
- */
-extern SDLEmergencyEventType const SDLEmergencyEventTypeNoEvent;
-
-/**
- Frontal collision has happened.
- */
-extern SDLEmergencyEventType const SDLEmergencyEventTypeFrontal;
-
-/**
- Side collision has happened.
- */
-extern SDLEmergencyEventType const SDLEmergencyEventTypeSide;
-
-/**
- Rear collision has happened.
- */
-extern SDLEmergencyEventType const SDLEmergencyEventTypeRear;
-
-/**
- A rollover event has happened.
- */
-extern SDLEmergencyEventType const SDLEmergencyEventTypeRollover;
-
-/**
- The signal is not supported
- */
-extern SDLEmergencyEventType const SDLEmergencyEventTypeNotSupported;
-
-/**
- Emergency status cannot be determined
- */
-extern SDLEmergencyEventType const SDLEmergencyEventTypeFault;
diff --git a/SmartDeviceLink/SDLEncryptionLifecycleManager.m b/SmartDeviceLink/SDLEncryptionLifecycleManager.m
deleted file mode 100644
index b141080e4..000000000
--- a/SmartDeviceLink/SDLEncryptionLifecycleManager.m
+++ /dev/null
@@ -1,327 +0,0 @@
-//
-// SDLEncryptionLifecycleManager.m
-// SmartDeviceLink
-//
-// Created by standa1 on 6/27/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLAsynchronousRPCRequestOperation.h"
-#import "SDLConfiguration.h"
-#import "SDLEncryptionLifecycleManager.h"
-#import "SDLEncryptionManagerConstants.h"
-#import "SDLEncryptionConfiguration.h"
-#import "SDLError.h"
-#import "SDLLifecycleConfiguration.h"
-#import "SDLLogMacros.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLOnPermissionsChange.h"
-#import "SDLPermissionItem.h"
-#import "SDLPermissionConstants.h"
-#import "SDLProtocol.h"
-#import "SDLProtocolMessage.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLServiceEncryptionDelegate.h"
-#import "SDLStateMachine.h"
-#import "SDLVehicleType.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString SDLVehicleMake;
-
-@interface SDLEncryptionLifecycleManager() <SDLProtocolDelegate>
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic) SDLProtocol *protocol;
-
-@property (strong, nonatomic, readwrite) SDLStateMachine *encryptionStateMachine;
-@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
-@property (strong, nonatomic, nullable) NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> *permissions;
-@property (assign, nonatomic) BOOL requiresEncryption;
-@property (strong, nonatomic) SDLConfiguration *configuration;
-
-@property (nonatomic, strong) NSMutableDictionary<SDLVehicleMake *, Class> *securityManagers;
-
-@end
-
-@implementation SDLEncryptionLifecycleManager
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- SDLLogV(@"Creating EncryptionLifecycleManager");
- _connectionManager = connectionManager;
- _currentHMILevel = nil;
- _requiresEncryption = NO;
- _securityManagers = [NSMutableDictionary dictionary];
- _encryptionStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLEncryptionLifecycleManagerStateStopped states:[self.class sdl_encryptionStateTransitionDictionary]];
- _permissions = [NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> dictionary];
- _configuration = configuration;
-
- for (Class securityManagerClass in _configuration.encryptionConfig.securityManagers) {
- if (![securityManagerClass conformsToProtocol:@protocol(SDLSecurityType)]) {
- NSString *reason = [NSString stringWithFormat:@"Invalid security manager: Class %@ does not conform to SDLSecurityType protocol", NSStringFromClass(securityManagerClass)];
- @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:reason userInfo:nil];
- }
-
- NSSet<NSString *> *vehicleMakes = [securityManagerClass availableMakes];
- if (vehicleMakes == nil || vehicleMakes.count == 0) {
- NSString *reason = [NSString stringWithFormat:@"Invalid security manager: Failed to retrieve makes for class %@", NSStringFromClass(securityManagerClass)];
- @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:reason userInfo:nil];
- }
-
- for (NSString *vehicleMake in vehicleMakes) {
- self.securityManagers[vehicleMake] = securityManagerClass;
- }
- }
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerAppInterfaceResponseReceived:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_permissionsDidChange:) name:SDLDidChangePermissionsNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiLevelDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
-
- return self;
-}
-
-#pragma mark - Lifecycle
-
-- (void)startWithProtocol:(SDLProtocol *)protocol {
- SDLLogD(@"Starting encryption manager");
- _protocol = protocol;
-
- @synchronized(self.protocol.protocolDelegateTable) {
- if (![self.protocol.protocolDelegateTable containsObject:self]) {
- [self.protocol.protocolDelegateTable addObject:self];
- }
- }
-}
-
-- (void)stop {
- SDLLogD(@"Stopping encryption manager");
-
- [_permissions removeAllObjects];
- _protocol = nil;
- _currentHMILevel = nil;
- _requiresEncryption = NO;
-
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
-}
-
-- (BOOL)isEncryptionReady {
- return [self.encryptionStateMachine isCurrentState:SDLEncryptionLifecycleManagerStateReady];
-}
-
-- (void)startEncryptionService {
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStarting];
-}
-
-- (void)sdl_startEncryptionService {
- SDLLogV(@"Attempting to start Encryption Service");
- if (!self.protocol || !self.currentHMILevel) {
- SDLLogV(@"Encryption manager is not yet started");
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
- return;
- }
-
- if (![self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
- if ([self sdl_appRequiresEncryption]) {
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStarting];
- } else {
- SDLLogE(@"Encryption Manager is not ready to encrypt.");
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
- }
- }
-}
-
-- (void)sdl_sendEncryptionStartService {
- SDLLogD(@"Sending secure rpc start service");
- [self.protocol startSecureServiceWithType:SDLServiceTypeRPC payload:nil tlsInitializationHandler:^(BOOL success, NSError *error) {
- if (error) {
- SDLLogE(@"TLS setup error: %@", error);
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:error];
- }
- }];
-}
-
-#pragma mark - State Machine
-
-+ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_encryptionStateTransitionDictionary {
- return @{
- SDLEncryptionLifecycleManagerStateStopped : @[SDLEncryptionLifecycleManagerStateStarting],
- SDLEncryptionLifecycleManagerStateStarting : @[SDLEncryptionLifecycleManagerStateStopped, SDLEncryptionLifecycleManagerStateReady],
- SDLEncryptionLifecycleManagerStateReady : @[SDLEncryptionLifecycleManagerStateStopped]
- };
-}
-
-- (void)didEnterStateEncryptionStarting {
- SDLLogD(@"Encryption manager is starting");
- [self sdl_sendEncryptionStartService];
-}
-
-- (void)didEnterStateEncryptionReady {
- SDLLogD(@"Encryption manager is ready");
-}
-
-- (void)didEnterStateEncryptionStopped {
- SDLLogD(@"Encryption manager stopped");
-}
-
-#pragma mark - SDLProtocolDelegate
-#pragma mark Encryption Start Service ACK
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
- switch (startServiceACK.header.serviceType) {
- case SDLServiceTypeRPC: {
- [self sdl_handleEncryptionStartServiceACK:startServiceACK];
- } break;
- default: break;
- }
-}
-
-- (void)sdl_handleEncryptionStartServiceACK:(SDLProtocolMessage *)encryptionStartServiceAck {
- if (encryptionStartServiceAck.header.encrypted) {
- SDLLogD(@"Encryption service started");
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateReady];
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:YES error:nil];
- } else {
- SDLLogD(@"Encryption service ACK received encryption = OFF");
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_encryption_off]];
- }
-}
-
-#pragma mark Encryption Start Service NAK
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
- switch (startServiceNAK.header.serviceType) {
- case SDLServiceTypeRPC: {
- [self sdl_handleEncryptionStartServiceNAK:startServiceNAK];
- } break;
- default: break;
- }
-}
-
-- (void)sdl_handleEncryptionStartServiceNAK:(SDLProtocolMessage *)audioStartServiceNak {
- SDLLogW(@"Encryption service failed to start due to NAK");
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_nak]];
-}
-
-#pragma mark Encryption End Service
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
- switch (endServiceACK.header.serviceType) {
- case SDLServiceTypeRPC: {
- SDLLogW(@"Encryption RPC service ended with end service ACK");
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
- } break;
- default: break;
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
- switch (endServiceNAK.header.serviceType) {
- case SDLServiceTypeRPC: {
- SDLLogW(@"Encryption RPC service ended with end service NAK");
- [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
- [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
- } break;
- default: break;
- }
-}
-
-#pragma mark - Notifications
-
-- (void)sdl_registerAppInterfaceResponseReceived:(SDLRPCResponseNotification *)notification {
- if (![notification isResponseMemberOfClass:[SDLRegisterAppInterfaceResponse class]]) { return; }
-
- SDLRegisterAppInterfaceResponse *registerResponse = notification.response;
- self.protocol.securityManager = [self sdl_securityManagerForMake:registerResponse.vehicleType.make];
- if (self.protocol.securityManager && [self.protocol.securityManager respondsToSelector:@selector(setAppId:)]) {
- self.protocol.securityManager.appId = self.configuration.lifecycleConfig.fullAppId ? self.configuration.lifecycleConfig.fullAppId : self.configuration.lifecycleConfig.appId;
- }
-}
-
-- (void)sdl_hmiLevelDidChange:(SDLRPCNotificationNotification *)notification {
- if (![notification isNotificationMemberOfClass:[SDLOnHMIStatus class]]) { return; }
-
- SDLOnHMIStatus *hmiStatus = notification.notification;
- self.currentHMILevel = hmiStatus.hmiLevel;
-
- // if startWithProtocol has not been called yet, abort here
- if (!self.protocol) { return; }
-
- if ([self.encryptionStateMachine isCurrentState:SDLEncryptionLifecycleManagerStateStopped]) {
- [self sdl_startEncryptionService];
- }
-}
-
-- (void)sdl_permissionsDidChange:(SDLRPCNotificationNotification *)notification {
- if (![notification isNotificationMemberOfClass:[SDLOnPermissionsChange class]]) {
- return;
- }
-
- SDLOnPermissionsChange *onPermissionChange = notification.notification;
- NSArray<SDLPermissionItem *> *permissionItems = onPermissionChange.permissionItem;
- [self.permissions removeAllObjects];
-
- for (SDLPermissionItem *item in permissionItems) {
- self.permissions[item.rpcName] = item;
- }
-
- self.requiresEncryption = (onPermissionChange.requireEncryption != nil) ? onPermissionChange.requireEncryption.boolValue : [self sdl_containsAtLeastOneRPCThatRequiresEncryption];
-
- // if startWithProtocol has not been called yet, abort here
- if (!self.protocol) { return; }
-
- if ([self.encryptionStateMachine isCurrentState:SDLEncryptionLifecycleManagerStateStopped]) {
- [self sdl_startEncryptionService];
- }
-}
-
-
-#pragma mark - Utilities
-
-- (nullable id<SDLSecurityType>)sdl_securityManagerForMake:(NSString *)make {
- if ((make != nil) && (self.securityManagers[make] != nil)) {
- Class securityManagerClass = self.securityManagers[make];
- return [[securityManagerClass alloc] init];
- }
-
- return nil;
-}
-
-#pragma mark Encryption Status
-
-- (BOOL)sdl_appRequiresEncryption {
- if (self.requiresEncryption && [self sdl_containsAtLeastOneRPCThatRequiresEncryption]) {
- return YES;
- }
- return NO;
-}
-
-- (BOOL)rpcRequiresEncryption:(__kindof SDLRPCMessage *)rpc {
- if (self.permissions[rpc.name].requireEncryption != nil) {
- return self.permissions[rpc.name].requireEncryption.boolValue;
- }
- return NO;
-}
-
-- (BOOL)sdl_containsAtLeastOneRPCThatRequiresEncryption {
- for (SDLPermissionItem *item in self.permissions.allValues) {
- if (item.requireEncryption) {
- return YES;
- }
- }
- return NO;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLEnum.h b/SmartDeviceLink/SDLEnum.h
deleted file mode 100644
index c62a733e5..000000000
--- a/SmartDeviceLink/SDLEnum.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// SDLEnum.h
-//
-
-
-#import <Foundation/Foundation.h>
-#import "SDLMacros.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// NSString SDLEnum typedef
-typedef NSString* SDLEnum SDL_SWIFT_ENUM;
-
-/// Extensions to NSString specifically for SDL string enums
-@interface NSString (SDLEnum)
-
-/**
- * Returns whether or not two enums are equal.
- *
- * @param enumObj A SDLEnum object
- * @return YES if the two enums are equal. NO if not.
- */
-- (BOOL)isEqualToEnum:(SDLEnum)enumObj;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLError.h b/SmartDeviceLink/SDLError.h
deleted file mode 100644
index 622da44b0..000000000
--- a/SmartDeviceLink/SDLError.h
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// SDLErrorConstants.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/5/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLErrorConstants.h"
-
-#import "SDLResult.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-#pragma mark Error Domains
-typedef NSString SDLErrorDomain;
-extern SDLErrorDomain *const SDLErrorDomainLifecycleManager;
-extern SDLErrorDomain *const SDLErrorDomainFileManager;
-extern SDLErrorDomain *const SDLErrorDomainTextAndGraphicManager;
-extern SDLErrorDomain *const SDLErrorDomainSoftButtonManager;
-extern SDLErrorDomain *const SDLErrorDomainMenuManager;
-extern SDLErrorDomain *const SDLErrorDomainChoiceSetManager;
-extern SDLErrorDomain *const SDLErrorDomainSystemCapabilityManager;
-extern SDLErrorDomain *const SDLErrorDomainTransport;
-extern SDLErrorDomain *const SDLErrorDomainRPCStore;
-extern SDLErrorDomain *const SDLErrorDomainCacheFileManager;
-extern SDLErrorDomain *const SDLErrorDomainAudioStreamManager;
-
-
-@interface NSError (SDLErrors)
-
-#pragma mark SDLEncryptionLifecycleManager
-+ (NSError *)sdl_encryption_lifecycle_notReadyError;
-+ (NSError *)sdl_encryption_lifecycle_encryption_off;
-+ (NSError *)sdl_encryption_lifecycle_nak;
-
-#pragma mark SDLManager
-
-+ (NSError *)sdl_lifecycle_rpcErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason;
-+ (NSError *)sdl_lifecycle_notConnectedError;
-+ (NSError *)sdl_lifecycle_notReadyError;
-+ (NSError *)sdl_lifecycle_unknownRemoteErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason;
-+ (NSError *)sdl_lifecycle_managersFailedToStart;
-+ (NSError *)sdl_lifecycle_startedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info;
-+ (NSError *)sdl_lifecycle_startedWithWarning:(nullable SDLResult)result info:(nullable NSString *)info;
-+ (NSError *)sdl_lifecycle_failedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info;
-+ (NSError *)sdl_lifecycle_multipleRequestsCancelled;
-
-#pragma mark SDLFileManager
-
-+ (NSError *)sdl_fileManager_cannotOverwriteError;
-+ (NSError *)sdl_fileManager_noKnownFileError;
-+ (NSError *)sdl_fileManager_unableToStartError;
-+ (NSError *)sdl_fileManager_unableToUploadError;
-+ (NSError *)sdl_fileManager_unableToUpload_ErrorWithUserInfo:(NSDictionary *)userInfo;
-+ (NSError *)sdl_fileManager_unableToDelete_ErrorWithUserInfo:(NSDictionary *)userInfo;
-+ (NSError *)sdl_fileManager_fileDoesNotExistError;
-+ (NSError *)sdl_fileManager_fileUploadCanceled;
-+ (NSError *)sdl_fileManager_dataMissingError;
-+ (NSError *)sdl_fileManager_staticIconError;
-
-#pragma mark Screen Managers
-
-+ (NSError *)sdl_softButtonManager_pendingUpdateSuperseded;
-+ (NSError *)sdl_subscribeButtonManager_notSubscribed;
-+ (NSError *)sdl_textAndGraphicManager_pendingUpdateSuperseded;
-
-#pragma mark Menu Manager
-
-+ (NSError *)sdl_menuManager_failedToUpdateWithDictionary:(NSDictionary *)userInfo;
-
-#pragma mark Choice Set Manager
-
-+ (NSError *)sdl_choiceSetManager_choicesDeletedBeforePresentation:(NSDictionary *)userInfo;
-+ (NSError *)sdl_choiceSetManager_choiceDeletionFailed:(NSDictionary *)userInfo;
-+ (NSError *)sdl_choiceSetManager_choiceUploadFailed:(NSDictionary *)userInfo;
-+ (NSError *)sdl_choiceSetManager_failedToCreateMenuItems;
-+ (NSError *)sdl_choiceSetManager_incorrectState:(NSString *)state;
-
-
-#pragma mark System Capability Manager
-
-+ (NSError *)sdl_systemCapabilityManager_moduleDoesNotSupportSystemCapabilities;
-+ (NSError *)sdl_systemCapabilityManager_cannotUpdateInHMINONE;
-+ (NSError *)sdl_systemCapabilityManager_cannotUpdateTypeDISPLAYS;
-
-#pragma mark Transport
-
-+ (NSError *)sdl_transport_unknownError;
-+ (NSError *)sdl_transport_connectionRefusedError;
-+ (NSError *)sdl_transport_connectionTimedOutError;
-+ (NSError *)sdl_transport_networkDownError;
-
-#pragma mark Store
-
-+ (NSError *)sdl_rpcStore_invalidObjectErrorWithObject:(id)wrongObject expectedType:(Class)type;
-
-#pragma mark Cache File Manager
-
-+ (NSError *)sdl_cacheFileManager_updateIconArchiveFileFailed;
-
-#pragma mark Audio Stream Manager
-
-+ (NSError *)sdl_audioStreamManager_notConnected;
-
-@end
-
-@interface NSException (SDLExceptions)
-
-+ (NSException *)sdl_missingHandlerException;
-+ (NSException *)sdl_missingIdException;
-+ (NSException *)sdl_missingFilesException;
-+ (NSException *)sdl_invalidSoftButtonStateException;
-+ (NSException *)sdl_carWindowOrientationException;
-+ (NSException *)sdl_invalidLockscreenSetupException;
-+ (NSException *)sdl_invalidSystemCapabilitySelectorExceptionWithSelector:(SEL)selector;
-+ (NSException *)sdl_invalidSubscribeButtonSelectorExceptionWithSelector:(SEL)selector;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLError.m b/SmartDeviceLink/SDLError.m
deleted file mode 100644
index 19e37950f..000000000
--- a/SmartDeviceLink/SDLError.m
+++ /dev/null
@@ -1,466 +0,0 @@
-//
-// SDLErrorConstants.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/5/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLError.h"
-
-#import "SDLChoiceSetManager.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-#pragma mark Error Domains
-
-SDLErrorDomain *const SDLErrorDomainLifecycleManager = @"com.sdl.lifecyclemanager.error";
-SDLErrorDomain *const SDLErrorDomainEncryptionLifecycleManager = @"com.sdl.encryptionlifecyclemanager.error";
-SDLErrorDomain *const SDLErrorDomainFileManager = @"com.sdl.filemanager.error";
-SDLErrorDomain *const SDLErrorDomainTextAndGraphicManager = @"com.sdl.textandgraphicmanager.error";
-SDLErrorDomain *const SDLErrorDomainSoftButtonManager = @"com.sdl.softbuttonmanager.error";
-SDLErrorDomain *const SDLErrorDomainSubscribeButtonManager = @"com.sdl.subscribebuttonmanager.error";
-SDLErrorDomain *const SDLErrorDomainMenuManager = @"com.sdl.menumanager.error";
-SDLErrorDomain *const SDLErrorDomainChoiceSetManager = @"com.sdl.choicesetmanager.error";
-SDLErrorDomain *const SDLErrorDomainSystemCapabilityManager = @"com.sdl.systemcapabilitymanager.error";
-SDLErrorDomain *const SDLErrorDomainTransport = @"com.sdl.transport.error";
-SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error";
-SDLErrorDomain *const SDLErrorDomainCacheFileManager = @"com.sdl.cachefilemanager.error";
-SDLErrorDomain *const SDLErrorDomainAudioStreamManager = @"com.sdl.extension.pcmAudioStreamManager";
-
-@implementation NSError (SDLErrors)
-
-#pragma mark - SDLEncryptionLifecycleManager
-+ (NSError *)sdl_encryption_lifecycle_notReadyError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Encryption Lifecycle manager not ready",
- NSLocalizedFailureReasonErrorKey: @"The SDL library is not finished setting up the connection, please wait until the encryption lifecycleState is SDLEncryptionLifecycleStateReady",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure HMI is not NONE and at least one RPC requires encryption in permissions?"
- };
-
- return [NSError errorWithDomain:SDLErrorDomainEncryptionLifecycleManager
- code:SDLEncryptionLifecycleManagerErrorNotConnected
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_encryption_lifecycle_encryption_off {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Encryption Lifecycle received a ACK with encryption bit = 0",
- NSLocalizedFailureReasonErrorKey: @"The SDL library received ACK with encryption = OFF.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure you are on a supported remote head unit with proper policies and your app id is approved."
- };
-
- return [NSError errorWithDomain:SDLErrorDomainEncryptionLifecycleManager
- code:SDLEncryptionLifecycleManagerErrorEncryptionOff
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_encryption_lifecycle_nak {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Encryption Lifecycle received a negative acknowledgement",
- NSLocalizedFailureReasonErrorKey: @"The remote head unit sent a NAK. Encryption service failed to start due to NAK.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure your certificates are valid."
- };
-
- return [NSError errorWithDomain:SDLErrorDomainEncryptionLifecycleManager
- code:SDLEncryptionLifecycleManagerErrorNAK
- userInfo:userInfo];
-
-}
-
-#pragma mark - SDLManager
-
-+ (NSError *)sdl_lifecycle_rpcErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason {
- NSString *descriptionString = description ?: @"";
- NSString *reasonString = reason ?: @"";
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: descriptionString,
- NSLocalizedFailureReasonErrorKey: reasonString
- };
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorRPCRequestFailed
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_lifecycle_notConnectedError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Could not find a connection",
- NSLocalizedFailureReasonErrorKey: @"The SDL library could not find a current connection to an SDL hardware device"
- };
-
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorNotConnected
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_lifecycle_notReadyError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Lifecycle manager not ready",
- NSLocalizedFailureReasonErrorKey: @"The SDL library is not finished setting up the connection, please wait until the lifecycleState is SDLLifecycleStateReady"
- };
-
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorNotConnected
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_lifecycle_unknownRemoteErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason {
- NSString *descriptionString = description ?: @"";
- NSString *reasonString = reason ?: @"";
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: descriptionString,
- NSLocalizedFailureReasonErrorKey: reasonString
- };
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorUnknownRemoteError
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_lifecycle_managersFailedToStart {
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorManagersFailedToStart
- userInfo:nil];
-}
-
-+ (NSError *)sdl_lifecycle_startedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info {
- NSString *resultString = result ?: @"";
- NSString *infoString = info ?: @"";
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: resultString,
- NSLocalizedFailureReasonErrorKey: infoString
- };
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorRegistrationFailed
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_lifecycle_startedWithWarning:(nullable SDLResult)result info:(nullable NSString *)info {
- NSString *resultString = result ?: @"";
- NSString *infoString = info ?: @"";
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: resultString,
- NSLocalizedFailureReasonErrorKey: infoString
- };
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorRegistrationSuccessWithWarning
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_lifecycle_failedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info {
- NSString *resultString = result ?: @"";
- NSString *infoString = info ?: @"";
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: resultString,
- NSLocalizedFailureReasonErrorKey: infoString
- };
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorRegistrationFailed
- userInfo:userInfo];
-}
-
-+ (NSError *)sdl_lifecycle_multipleRequestsCancelled {
- return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
- code:SDLManagerErrorCancelled
- userInfo:nil];
-}
-
-
-#pragma mark SDLFileManager
-
-+ (NSError *)sdl_fileManager_cannotOverwriteError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Cannot overwrite remote file",
- NSLocalizedFailureReasonErrorKey: @"The remote file system already has a file of this name, and the file manager is set to not automatically overwrite files",
- NSLocalizedRecoverySuggestionErrorKey: @"Set SDLFileManager autoOverwrite to YES, or call forceUploadFile:completion:"
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorCannotOverwrite userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_noKnownFileError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"No such remote file is currently known",
- NSLocalizedFailureReasonErrorKey: @"The remote file is not currently known by the file manager. It could be that this file does not exist on the remote system or that the file manager has not completed its initialization and received a list of files from the remote system.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure a file with this name is present on the remote system and that the file manager has finished its initialization."
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorNoKnownFile userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_unableToStartError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"The file manager was unable to start",
- NSLocalizedFailureReasonErrorKey: @"This may be because files are not supported on this unit and / or LISTFILES returned an error",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the system is sending back a proper LIST FILES response"
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorUnableToStart userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_unableToUploadError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"The file manager was unable to send this file",
- NSLocalizedFailureReasonErrorKey: @"This could be because the file manager has not started, or the head unit does not support files",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the system is sending back a proper LIST FILES response and check the file manager's state"
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorUnableToUpload userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_unableToUpload_ErrorWithUserInfo:(NSDictionary *)userInfo {
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerMultipleFileUploadTasksFailed userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_unableToDelete_ErrorWithUserInfo:(NSDictionary *)userInfo {
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerMultipleFileDeleteTasksFailed userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_fileUploadCanceled {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"The file upload was canceled",
- NSLocalizedFailureReasonErrorKey: @"The file upload transaction was canceled before it could be completed",
- NSLocalizedRecoverySuggestionErrorKey: @"The file upload was canceled"
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerUploadCanceled userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_dataMissingError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"The file upload was canceled",
- NSLocalizedFailureReasonErrorKey: @"The data for the file is missing",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure the data used to create the file is valid"
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorFileDataMissing userInfo:userInfo];
-}
-
-+ (NSError *)sdl_fileManager_staticIconError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"The file upload was canceled",
- NSLocalizedFailureReasonErrorKey: @"The file is a static icon, which cannot be uploaded",
- NSLocalizedRecoverySuggestionErrorKey: @"Stop trying to upload a static icon, set it via the screen manager or create an SDLImage instead"
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorStaticIcon userInfo:userInfo];
-}
-
-#pragma mark SDLUploadFileOperation
-
-+ (NSError *)sdl_fileManager_fileDoesNotExistError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"The file manager was unable to send the file",
- NSLocalizedFailureReasonErrorKey: @"This could be because the file does not exist at the specified file path or that passed data is invalid",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the the correct file path is being set and that the passed data is valid"
- };
- return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorFileDoesNotExist userInfo:userInfo];
-}
-
-#pragma mark Screen Managers
-
-+ (NSError *)sdl_textAndGraphicManager_pendingUpdateSuperseded {
- return [NSError errorWithDomain:SDLErrorDomainTextAndGraphicManager code:SDLTextAndGraphicManagerErrorPendingUpdateSuperseded userInfo:nil];
-}
-
-+ (NSError *)sdl_softButtonManager_pendingUpdateSuperseded {
- return [NSError errorWithDomain:SDLErrorDomainSoftButtonManager code:SDLSoftButtonManagerErrorPendingUpdateSuperseded userInfo:nil];
-}
-
-+ (NSError *)sdl_subscribeButtonManager_notSubscribed {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Subscribe Button Manager error",
- NSLocalizedFailureReasonErrorKey: @"The subscribe button manager has not yet subscribed to the button being unsubscribed.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure you have used the Subscribe Button Manager to subscribe to the button name that you are attempting to unsubscribe."
- };
- return [NSError errorWithDomain:SDLErrorDomainSubscribeButtonManager code:SDLSubscribeButtonManagerErrorNotSubscribed userInfo:userInfo];
-}
-
-#pragma mark Menu Manager
-
-+ (NSError *)sdl_menuManager_failedToUpdateWithDictionary:(NSDictionary *)userInfo {
- return [NSError errorWithDomain:SDLErrorDomainMenuManager code:SDLMenuManagerErrorRPCsFailed userInfo:userInfo];
-}
-
-#pragma mark Choice Set Manager
-
-+ (NSError *)sdl_choiceSetManager_choicesDeletedBeforePresentation:(NSDictionary *)userInfo {
- return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorPendingPresentationDeleted userInfo:userInfo];
-}
-
-+ (NSError *)sdl_choiceSetManager_choiceDeletionFailed:(NSDictionary *)userInfo {
- return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorDeletionFailed userInfo:userInfo];
-}
-
-+ (NSError *)sdl_choiceSetManager_choiceUploadFailed:(NSDictionary *)userInfo {
- return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorUploadFailed userInfo:userInfo];
-}
-
-+ (NSError *)sdl_choiceSetManager_failedToCreateMenuItems {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Choice Set Manager error",
- NSLocalizedFailureReasonErrorKey: @"Choice set manager failed to create menu items due to menuName being empty.",
- NSLocalizedRecoverySuggestionErrorKey: @"If you are setting the menuName, it is possible that the head unit is sending incorrect displayCapabilities."
- };
- return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorFailedToCreateMenuItems userInfo:userInfo];
-}
-
-+ (NSError *)sdl_choiceSetManager_incorrectState:(SDLChoiceManagerState *)state {
- NSString *errorString = [NSString stringWithFormat:@"Choice Set Manager error invalid state: %@", state];
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: errorString,
- NSLocalizedFailureReasonErrorKey: @"The choice set manager could be in an invalid state because the head unit doesn't support choice sets or the manager failed to set up correctly.",
- NSLocalizedRecoverySuggestionErrorKey: @"If you are setting the menuName, it is possible that the head unit is sending incorrect displayCapabilities."
- };
- return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorInvalidState userInfo:userInfo];
-}
-
-#pragma mark System Capability Manager
-
-+ (NSError *)sdl_systemCapabilityManager_moduleDoesNotSupportSystemCapabilities {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Module does not understand system capabilities",
- NSLocalizedFailureReasonErrorKey: @"The connected module does not support system capabilities",
- NSLocalizedRecoverySuggestionErrorKey: @"Use isCapabilitySupported to find out if the feature is supported on the head unit, but no more information about the feature is available on this module"
- };
- return [NSError errorWithDomain:SDLErrorDomainSystemCapabilityManager code:SDLSystemCapabilityManagerErrorModuleDoesNotSupportSystemCapabilities userInfo:userInfo];
-}
-
-+ (NSError *)sdl_systemCapabilityManager_cannotUpdateInHMINONE {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"System capabilities cannot be updated in HMI NONE.",
- NSLocalizedFailureReasonErrorKey: @"The system capability manager attempted to subscribe or update a system capability in HMI NONE, which is not allowed.",
- NSLocalizedRecoverySuggestionErrorKey: @"Wait until you are in HMI BACKGROUND, LIMITED, OR FULL before subscribing or updating a capability."
- };
- return [NSError errorWithDomain:SDLErrorDomainSystemCapabilityManager code:SDLSystemCapabilityManagerErrorHMINone userInfo:userInfo];
-}
-
-+ (NSError *)sdl_systemCapabilityManager_cannotUpdateTypeDISPLAYS {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"System capability type DISPLAYS cannot be updated.",
- NSLocalizedFailureReasonErrorKey: @"The system capability manager attempted to update system capability type DISPLAYS, which is not allowed.",
- NSLocalizedRecoverySuggestionErrorKey: @"Subscribe to DISPLAYS to automatically receive updates or retrieve a cached display capability value directly from the SystemCapabilityManager."
- };
- return [NSError errorWithDomain:SDLErrorDomainSystemCapabilityManager code:SDLSystemCapabilityManagerErrorCannotUpdateTypeDisplays userInfo:userInfo];
-}
-
-#pragma mark Transport
-
-+ (NSError *)sdl_transport_unknownError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"TCP connection error",
- NSLocalizedFailureReasonErrorKey: @"TCP connection cannot be established due to unknown error.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that correct IP address and TCP port number are specified, and the phone is connected to the correct Wi-Fi network."
- };
- return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorUnknown userInfo:userInfo];
-}
-
-+ (NSError *)sdl_transport_connectionRefusedError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"TCP connection cannot be established",
- NSLocalizedFailureReasonErrorKey: @"The TCP connection is refused by head unit. Possible causes are that the specified TCP port number is not correct, or SDL Core is not running properly on the head unit.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that correct IP address and TCP port number are specified. Also, make sure that SDL Core on the head unit enables TCP transport."
- };
- return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorConnectionRefused userInfo:userInfo];
-}
-
-+ (NSError *)sdl_transport_connectionTimedOutError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"TCP connection timed out",
- NSLocalizedFailureReasonErrorKey: @"The TCP connection cannot be established within a given time. Possible causes are that the specified IP address is not correct, or the connection is blocked by a firewall.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that correct IP address and TCP port number are specified. Also, make sure that the head unit's system configuration accepts TCP connections."
- };
- return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorConnectionTimedOut userInfo:userInfo];
-}
-
-+ (NSError *)sdl_transport_networkDownError {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Network is not available",
- NSLocalizedFailureReasonErrorKey: @"TCP connection cannot be established because the phone is not connected to the network. Possible causes are: Wi-Fi being disabled on the phone or the phone is connected to a wrong Wi-Fi network.",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the phone is connected to the Wi-Fi network that has the head unit on it. Also, make sure that correct IP address and TCP port number are specified."
- };
- return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorNetworkDown userInfo:userInfo];
-}
-
-#pragma mark Store
-
-+ (NSError *)sdl_rpcStore_invalidObjectErrorWithObject:(id)wrongObject expectedType:(Class)type {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Type of stored value doesn't match with requested",
- NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"Requested %@ but returned %@", NSStringFromClass(type), NSStringFromClass([wrongObject class])],
- NSLocalizedRecoverySuggestionErrorKey: @"Check the object type returned from the head unit system"
- };
- return [NSError errorWithDomain:SDLErrorDomainRPCStore code:SDLRPCStoreErrorGetInvalidObject userInfo:userInfo];
-}
-
-#pragma mark Cache File Manager
-
-+ (NSError *)sdl_cacheFileManager_updateIconArchiveFileFailed {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Failed to update the icon archive file",
- NSLocalizedFailureReasonErrorKey: @"Unable to archive icon archive file to file path",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that file path is valid"
- };
- return [NSError errorWithDomain:SDLErrorDomainCacheFileManager code:SDLCacheManagerErrorUpdateIconArchiveFileFailure userInfo:userInfo];
-}
-
-#pragma mark Audio Stream Manager
-+ (NSError *)sdl_audioStreamManager_notConnected {
- NSDictionary<NSString *, NSString *> *userInfo = @{
- NSLocalizedDescriptionKey: @"Couldn't send audio data, the audio service is not connected",
- NSLocalizedFailureReasonErrorKey: @"The audio service must be connected before sending audio data",
- NSLocalizedRecoverySuggestionErrorKey: @"Make sure that a connection has been established, you are a NAVIGATION app and have the NAVIGATION app type in your configuration, and you are the active NAVIGATION app"
- };
-
- return [NSError errorWithDomain:SDLErrorDomainAudioStreamManager code:SDLAudioStreamManagerErrorNotConnected userInfo:userInfo];
-}
-
-@end
-
-
-@implementation NSException (SDLExceptions)
-
-+ (NSException *)sdl_missingHandlerException {
- return [NSException
- exceptionWithName:@"MissingHandlerException"
- reason:@"This request requires a handler to be specified using the <RPC>WithHandler class"
- userInfo:nil];
-}
-
-+ (NSException *)sdl_missingIdException {
- return [NSException
- exceptionWithName:@"MissingIdException"
- reason:@"This request requires an ID (command, softbutton, etc) to be specified"
- userInfo:nil];
-}
-
-+ (NSException *)sdl_missingFilesException {
- return [NSException
- exceptionWithName:@"MissingFilesNames"
- reason:@"This request requires that the array of files not be empty"
- userInfo:nil];
-}
-
-+ (NSException *)sdl_invalidSoftButtonStateException {
- return [NSException exceptionWithName:@"InvalidSoftButtonState" reason:@"Attempting to transition to a state that does not exist" userInfo:nil];
-}
-
-+ (NSException *)sdl_carWindowOrientationException {
- return [NSException exceptionWithName:@"com.sdl.carwindow.orientationException"
- reason:@"SDLCarWindow rootViewController must support only a single interface orientation"
- userInfo:nil];
-}
-
-+ (NSException *)sdl_invalidLockscreenSetupException {
- return [NSException exceptionWithName:@"com.sdl.lockscreen.setupException"
- reason:@"SDL must be setup _after_ your app's window already exists"
- userInfo:nil];
-}
-
-+ (NSException *)sdl_invalidSystemCapabilitySelectorExceptionWithSelector:(SEL)selector {
- return [NSException exceptionWithName:@"com.sdl.systemCapabilityManager.selectorException"
- reason:[NSString stringWithFormat:@"Capability observation selector: %@ does not match possible selectors, which must have between 0 and 3 parameters, or is not a selector on the observer object. Check that your selector is formatted correctly, and that your observer is not nil. You should unsubscribe an observer before it goes to nil.", NSStringFromSelector(selector)]
- userInfo:nil];
-}
-
-+ (NSException *)sdl_invalidSubscribeButtonSelectorExceptionWithSelector:(SEL)selector {
- return [NSException exceptionWithName:@"com.sdl.subscribeButtonManager.selectorException"
- reason:[NSString stringWithFormat:@"Subscribe button observation selector: %@ does not match possible selectors, which must have between 0 and 4 parameters, or is not a selector on the observer object. Check that your selector is formatted correctly, and that your observer is not nil. You should unsubscribe an observer before it goes to nil.", NSStringFromSelector(selector)]
- userInfo:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLErrorConstants.h b/SmartDeviceLink/SDLErrorConstants.h
deleted file mode 100644
index 89e46c133..000000000
--- a/SmartDeviceLink/SDLErrorConstants.h
+++ /dev/null
@@ -1,223 +0,0 @@
-//
-// SDLErrorConstants.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 8/8/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-/**
- * Errors associated with the SDLManager class.
- */
-typedef NS_ENUM(NSInteger, SDLEncryptionLifecycleManagerError) {
- /**
- * Some action was attempted that requires a connection to the remote head unit.
- */
- SDLEncryptionLifecycleManagerErrorNotConnected = -1,
- /**
- * Received ACK with encryption bit set to false from the remote head unit
- */
- SDLEncryptionLifecycleManagerErrorEncryptionOff = -2,
- /**
- * Received NAK from the remote head unit.
- */
- SDLEncryptionLifecycleManagerErrorNAK = -3
-};
-
-/**
- * Errors associated with the SDLManager class.
- */
-typedef NS_ENUM(NSInteger, SDLManagerError) {
- /**
- * An RPC request failed to send.
- */
- SDLManagerErrorRPCRequestFailed = -1,
- /**
- * Some action was attempted that requires a connection to the remote head unit.
- */
- SDLManagerErrorNotConnected = -2,
- /**
- * Some action was attempted before the ready state was reached.
- */
- SDLManagerErrorNotReady = -3,
- /**
- * The remote system encountered an unknown error.
- */
- SDLManagerErrorUnknownRemoteError = -4,
- /**
- * One or more of the sub-managers failed to start.
- */
- SDLManagerErrorManagersFailedToStart = -5,
- /**
- * Registering with the remote system failed.
- */
- SDLManagerErrorRegistrationFailed = -6,
- /**
- * Registering with the remote system was successful, but had a warning.
- */
- SDLManagerErrorRegistrationSuccessWithWarning = -7,
- /**
- * Request operations were cancelled before they could be sent
- */
- SDLManagerErrorCancelled = -8
-};
-
-/**
- * Errors associated with the SDLFileManager class.
- */
-typedef NS_ENUM(NSInteger, SDLFileManagerError) {
- /**
- * A file attempted to send, but a file with that name already exists on the remote head unit, and the file was not configured to overwrite.
- */
- SDLFileManagerErrorCannotOverwrite = -1,
- /**
- * A file was attempted to be accessed but it does not exist.
- */
- SDLFileManagerErrorNoKnownFile = -2,
- /**
- * The file manager attempted to start but encountered an error.
- */
- SDLFileManagerErrorUnableToStart = -3,
- /**
- * The file manager was unable to send this file.
- */
- SDLFileManagerErrorUnableToUpload = -4,
- /**
- * The file manager could not find the local file.
- */
- SDLFileManagerErrorFileDoesNotExist = -5,
- /**
- * The file upload was canceled.
- */
- SDLFileManagerUploadCanceled = -6,
- /**
- * One or more of multiple files being uploaded or deleted failed.
- */
- SDLFileManagerMultipleFileUploadTasksFailed = -7,
- /**
- * One or more of multiple files being uploaded or deleted failed.
- */
- SDLFileManagerMultipleFileDeleteTasksFailed = -8,
- /**
- * The file data is nil or empty.
- */
- SDLFileManagerErrorFileDataMissing = -9,
- /**
- * The file is a static icon, which cannot be uploaded
- */
- SDLFileManagerErrorStaticIcon = -10,
-};
-
-/**
- Errors associated with the ScreenManager class
- */
-typedef NS_ENUM(NSInteger, SDLTextAndGraphicManagerError) {
- /// A pending update was superseded by a newer requested update. The old update will not be sent
- SDLTextAndGraphicManagerErrorPendingUpdateSuperseded = -1
-};
-
-/**
- Errors associated with the Soft Button Manager class
- */
-typedef NS_ENUM(NSInteger, SDLSoftButtonManagerError) {
- /// A pending update was superseded by a newer requested update. The old update will not be sent
- SDLSoftButtonManagerErrorPendingUpdateSuperseded = -1
-};
-
-/**
- Errors associated with the Subscribe Button Manager class
- */
-typedef NS_ENUM(NSInteger, SDLSubscribeButtonManagerError) {
- /// Attempting to unsubscribe to a subscribe button that has not yet been subscribed to yet.
- SDLSubscribeButtonManagerErrorNotSubscribed = -1
-};
-
-/**
- Errors associated with the ScreenManager class
- */
-typedef NS_ENUM(NSInteger, SDLMenuManagerError) {
- /// Sending menu-related RPCs returned an error from the remote system
- SDLMenuManagerErrorRPCsFailed = -1
-};
-
-/// Errors associated with Choice Set class
-typedef NS_ENUM(NSInteger, SDLChoiceSetManagerError) {
- /// The choice set has been deleted before it was presented
- SDLChoiceSetManagerErrorPendingPresentationDeleted = -1,
-
- /// The choice set failed to delete
- SDLChoiceSetManagerErrorDeletionFailed = -2,
-
- /// The upload failed
- SDLChoiceSetManagerErrorUploadFailed = -3,
-
- /// The menu items failed to be created
- SDLChoiceSetManagerErrorFailedToCreateMenuItems = -4,
-
- /// Invalid state
- SDLChoiceSetManagerErrorInvalidState = -5
-};
-
-/// Errors associated with the system capability manager
-typedef NS_ENUM(NSInteger, SDLSystemCapabilityManagerError) {
- /// The connected head unit does not support any system capabilities
- SDLSystemCapabilityManagerErrorModuleDoesNotSupportSystemCapabilities = -1,
-
- /// You must be in an HMI Level other than NONE to request or subscribe to capabilites other than DISPLAYS
- SDLSystemCapabilityManagerErrorHMINone = -2,
-
- /// You may not update the system capability type DISPLAYS because it is always subscribed
- SDLSystemCapabilityManagerErrorCannotUpdateTypeDisplays = -3
-};
-
-/**
- * Errors associated with transport.
- */
-typedef NS_ENUM(NSInteger, SDLTransportError) {
- /**
- * Connection cannot be established due to a reason not listed here.
- */
- SDLTransportErrorUnknown = -1,
- /**
- * TCP connection is refused.
- * Probably specified port number is invalid, or SDL Core is not running on the head unit.
- */
- SDLTransportErrorConnectionRefused = -2,
- /**
- * TCP connection cannot be established within given time.
- * Probably because of wrong IP address, or the connection may be blocked by a firewall.
- */
- SDLTransportErrorConnectionTimedOut = -3,
- /**
- * TCP connection cannot be established since network is down.
- * Probably the phone is not connected to the correct network.
- */
- SDLTransportErrorNetworkDown = -4,
-};
-
-/**
- * Errors associated with store.
- */
-typedef NS_ENUM(NSInteger, SDLRPCStoreError) {
- /**
- * In dictionary stored value with unexpected type
- */
- SDLRPCStoreErrorGetInvalidObject = -1,
-};
-
-/// Errors related to the cache file manager
-typedef NS_ENUM(NSInteger, SDLCacheFileManagerError) {
- /// Failed to update archive file
- SDLCacheManagerErrorUpdateIconArchiveFileFailure = -1,
-};
-
-/// Errors related to the audio stream manager
-typedef NS_ENUM(NSInteger, SDLAudioStreamManagerError) {
- /// The audio stream is not currently connected
- SDLAudioStreamManagerErrorNotConnected = -1,
-
- /// Attempted to play but there's no audio in the queue
- SDLAudioStreamManagerErrorNoQueuedAudio = -2
-};
diff --git a/SmartDeviceLink/SDLFileManager.h b/SmartDeviceLink/SDLFileManager.h
deleted file mode 100644
index 91a0201d5..000000000
--- a/SmartDeviceLink/SDLFileManager.h
+++ /dev/null
@@ -1,186 +0,0 @@
-//
-// SDLFileManager.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/14/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLArtwork.h"
-#import "SDLFileManagerConstants.h"
-
-@class SDLFile;
-@class SDLFileManagerConfiguration;
-@protocol SDLConnectionManagerType;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// The handler that is called when the manager is set up or failed to set up with an error.
-/// This is for internal use only.
-///
-/// @param success True if every request succeeded, false if any failed.
-/// @param error The error that occurred during the request if any occurred.
-typedef void (^SDLFileManagerStartupCompletionHandler)(BOOL success, NSError *__nullable error);
-
-
-/**
- * The SDLFileManager is an RPC manager for the remote file system. After it starts, it will attempt to communicate with the remote file system to get the names of all files. Deleting and Uploading will them queue these changes as transactions. If a delete succeeds, the local list of remote files will remove that file name, and likewise, if an upload succeeds, the local list of remote files will now include that file name.
- */
-@interface SDLFileManager : NSObject
-
-/**
- * A set of all names of files known on the remote head unit. Known files can be used or deleted on the remote system.
- */
-@property (copy, nonatomic, readonly) NSSet<SDLFileName *> *remoteFileNames;
-
-/**
- * The number of bytes still available for files for this app.
- */
-@property (assign, nonatomic, readonly) NSUInteger bytesAvailable;
-
-/**
- * The state of the file manager.
- */
-@property (copy, nonatomic, readonly) NSString *currentState;
-
-/**
- * The currently pending transactions (Upload, Delete, and List Files) in the file manager
- */
-@property (copy, nonatomic, readonly) NSArray<__kindof NSOperation *> *pendingTransactions;
-
-/**
- * Whether or not the file manager is suspended. If suspended, the file manager can continue to queue uploads and deletes, but will not actually perform any of those until it is no longer suspended. This can be used for throttling down the file manager if other, important operations are taking place over the accessory connection.
- */
-@property (assign, nonatomic) BOOL suspended;
-
-/**
- * Initialize the class...or not, since this method is unavailable. Dependencies must be injected using initWithConnectionManager:
- *
- * @return nil
- */
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- * Creates a new file manager with a specified connection manager
- *
- * @param manager A connection manager to use to forward on RPCs
- *
- * @return An instance of SDLFileManager
- */
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager __deprecated_msg("Use initWithConnectionManager:configuration: instead");
-
-/**
- * Creates a new file manager with a specified connection manager and configuration
- *
- * @param manager A connection manager to use to forward on RPCs
- * @param configuration A configuration for this file manager session
- *
- * @return An instance of SDLFileManager
- */
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager configuration:(SDLFileManagerConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
-
-/**
- * The manager stars up and attempts to fetch its initial list and transfer initial files.
- *
- * @param completionHandler The handler called when the manager is set up or failed to set up with an error. Use weak self when accessing self from the completion handler.
- */
-- (void)startWithCompletionHandler:(nullable SDLFileManagerStartupCompletionHandler)completionHandler;
-
-/**
- * Cancels all file manager operations and deletes all associated data.
- */
-- (void)stop;
-
-/**
- Check if the remote system contains a file
-
- @param file The file to check
- @return Whether or not the remote system has the file
- */
-- (BOOL)hasUploadedFile:(SDLFile *)file;
-
-/**
- * Delete a file stored on the remote system
- *
- * @param name The name of the remote file. It should be a name currently stored in remoteFileNames
- * @param completion An optional completion handler that sends an error should one occur.
- */
-- (void)deleteRemoteFileWithName:(SDLFileName *)name completionHandler:(nullable SDLFileManagerDeleteCompletionHandler)completion NS_SWIFT_NAME(delete(fileName:completionHandler:));
-
-/**
- * Deletes an array of files on the remote file system. The files are deleted in the order in which they are added to the array, with the first file to be deleted at index 0. The delete queue is sequential, meaning that once a delete request is sent to Core, the queue waits until a response is received from Core before the next the next delete request is sent.
- *
- * @param names The names of the files to be deleted
- * @param completionHandler an optional SDLFileManagerMultiDeleteCompletionHandler
- */
-- (void)deleteRemoteFilesWithNames:(NSArray<SDLFileName *> *)names completionHandler:(nullable SDLFileManagerMultiDeleteCompletionHandler)completionHandler NS_SWIFT_NAME(delete(fileNames:completionHandler:));
-
-/**
- * Upload a file to the remote file system. If a file with the [SDLFile name] already exists, this will overwrite that file. If you do not want that to happen, check remoteFileNames before uploading, or change allowOverwrite to NO.
- *
- * @param file An SDLFile that contains metadata about the file to be sent
- * @param completion An optional completion handler that sends an error should one occur.
- */
-- (void)uploadFile:(SDLFile *)file completionHandler:(nullable SDLFileManagerUploadCompletionHandler)completion NS_SWIFT_NAME(upload(file:completionHandler:));
-
-/**
- * Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
- *
- * The optional progress handler can be used to keep track of the upload progress. After each file upload, the progress handler returns the upload percentage and an error, if one occured during the upload process. The progress handler also includes an option to cancel the upload of all remaining files in queue.
- *
- * @param files An array of SDLFiles to be sent
- * @param progressHandler an optional SDLFileManagerMultiUploadProgressHandler
- * @param completionHandler an optional SDLFileManagerMultiUploadCompletionHandler
- */
-- (void)uploadFiles:(NSArray<SDLFile *> *)files progressHandler:(nullable SDLFileManagerMultiUploadProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler NS_SWIFT_NAME(upload(files:progressHandler:completionHandler:));
-
-/**
- * Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
- *
- * @param files An array of SDLFiles to be sent
- * @param completionHandler An optional SDLFileManagerMultiUploadCompletionHandler
- */
-- (void)uploadFiles:(NSArray<SDLFile *> *)files completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler NS_SWIFT_NAME(upload(files:completionHandler:));
-
-/**
- * Uploads an artwork file to the remote file system and returns the name of the uploaded artwork once completed. If an artwork with the same name is already on the remote system, the artwork is not uploaded and the artwork name is simply returned.
- *
- * @param artwork A SDLArwork containing an image to be sent
- * @param completion An optional completion handler that returns the name of the uploaded artwork. It also returns an error if the upload fails.
- */
-- (void)uploadArtwork:(SDLArtwork *)artwork completionHandler:(nullable SDLFileManagerUploadArtworkCompletionHandler)completion NS_SWIFT_NAME(upload(artwork:completionHandler:));
-
-/**
- * Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
- *
- * @param artworks An array of SDLArtworks to be sent
- * @param completion An optional SDLFileManagerMultiUploadArtworkCompletionHandler
- */
-- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion NS_SWIFT_NAME(upload(artworks:completionHandler:));
-
-/**
- * Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
- *
- * The optional progress handler can be used to keep track of the upload progress. After each artwork upload, the progress handler returns the artwork name, the upload percentage and an error, if one occured during the upload process. The progress handler also includes an option to cancel the upload of all remaining files in queue.
- *
- * @param artworks An array of SDLArtworks to be sent
- * @param progressHandler An optional SDLFileManagerMultiUploadArtworkProgressHandler
- * @param completion An optional SDLFileManagerMultiUploadArtworkCompletionHandler
- */
-- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks progressHandler:(nullable SDLFileManagerMultiUploadArtworkProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion NS_SWIFT_NAME(upload(artworks:progressHandler:completionHandler:));
-
-/**
- * A URL to the directory where temporary files are stored. When an SDLFile is created with NSData, it writes to a temporary file until the file manager finishes uploading it.
- *
- * The SDL library manages the creation and deletion of these files and you should not have to touch this directory at all.
- *
- * @return An NSURL pointing to the location on disk where SDL's temporary files are stored.
- */
-+ (NSURL *)temporaryFileDirectory;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFileManager.m b/SmartDeviceLink/SDLFileManager.m
deleted file mode 100644
index 0e34ab3f5..000000000
--- a/SmartDeviceLink/SDLFileManager.m
+++ /dev/null
@@ -1,606 +0,0 @@
-//
-// SDLFileManager.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/14/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLFileManager.h"
-
-#import "SDLConnectionManagerType.h"
-#import "SDLLogMacros.h"
-#import "SDLDeleteFileOperation.h"
-#import "SDLError.h"
-#import "SDLFile.h"
-#import "SDLFileManagerConfiguration.h"
-#import "SDLFileWrapper.h"
-#import "SDLGlobals.h"
-#import "SDLListFilesOperation.h"
-#import "SDLManager.h"
-#import "SDLNotificationConstants.h"
-#import "SDLPutFile.h"
-#import "SDLStateMachine.h"
-#import "SDLUploadFileOperation.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString SDLFileManagerState;
-SDLFileManagerState *const SDLFileManagerStateShutdown = @"Shutdown";
-SDLFileManagerState *const SDLFileManagerStateFetchingInitialList = @"FetchingInitialList";
-SDLFileManagerState *const SDLFileManagerStateReady = @"Ready";
-SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError";
-
-
-#pragma mark - SDLFileManager class
-
-@interface SDLFileManager ()
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-
-// Remote state
-@property (strong, nonatomic) NSMutableSet<SDLFileName *> *mutableRemoteFileNames;
-@property (assign, nonatomic, readwrite) NSUInteger bytesAvailable;
-
-// Local state
-@property (strong, nonatomic) NSOperationQueue *transactionQueue;
-@property (strong, nonatomic) NSMutableSet<SDLFileName *> *uploadedEphemeralFileNames;
-@property (strong, nonatomic) SDLStateMachine *stateMachine;
-@property (copy, nonatomic, nullable) SDLFileManagerStartupCompletionHandler startupCompletionHandler;
-
-@property (strong, nonatomic) NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *failedFileUploadsCount;
-@property (assign, nonatomic) NSUInteger maxFileUploadAttempts;
-@property (assign, nonatomic) NSUInteger maxArtworkUploadAttempts;
-
-@end
-
-#pragma mark Constants
-
-@implementation SDLFileManager
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager {
- return [self initWithConnectionManager:manager configuration:[SDLFileManagerConfiguration defaultConfiguration]];
-}
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager configuration:(SDLFileManagerConfiguration *)configuration {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _connectionManager = manager;
- _bytesAvailable = 0;
-
- _mutableRemoteFileNames = [NSMutableSet set];
- _transactionQueue = [[NSOperationQueue alloc] init];
- _transactionQueue.name = @"com.sdl.fileManager.transactionQueue";
- _transactionQueue.underlyingQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- _transactionQueue.maxConcurrentOperationCount = 1;
- _uploadedEphemeralFileNames = [[NSMutableSet<SDLFileName *> alloc] init];
-
- _stateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLFileManagerStateShutdown states:[self.class sdl_stateTransitionDictionary]];
-
- _failedFileUploadsCount = [NSMutableDictionary dictionary];
- _maxFileUploadAttempts = configuration.fileRetryCount + 1;
- _maxArtworkUploadAttempts = configuration.artworkRetryCount + 1;
-
- return self;
-}
-
-#pragma mark - Setup / Shutdown
-
-- (void)startWithCompletionHandler:(nullable SDLFileManagerStartupCompletionHandler)handler {
- if ([self.currentState isEqualToString:SDLFileManagerStateShutdown]) {
- self.startupCompletionHandler = handler;
- [self.stateMachine transitionToState:SDLFileManagerStateFetchingInitialList];
- } else {
- // If we already started, just tell the handler we're started.
- handler(YES, nil);
- }
-}
-
-- (void)stop {
- [self.stateMachine transitionToState:SDLFileManagerStateShutdown];
-}
-
-- (void)dealloc {
- if (self.currentState != SDLFileManagerStateShutdown) {
- [self.stateMachine transitionToState:SDLFileManagerStateShutdown];
- }
-}
-
-#pragma mark - Getters
-
-- (NSSet<SDLFileName *> *)remoteFileNames {
- return [NSSet setWithSet:self.mutableRemoteFileNames];
-}
-
-- (NSString *)currentState {
- return self.stateMachine.currentState;
-}
-
-- (NSArray<__kindof NSOperation *> *)pendingTransactions {
- return self.transactionQueue.operations;
-}
-
-- (BOOL)suspended {
- return self.transactionQueue.suspended;
-}
-
-
-#pragma mark Setters
-
-- (void)setSuspended:(BOOL)suspended {
- self.transactionQueue.suspended = suspended;
-}
-
-
-#pragma mark - State
-
-+ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_stateTransitionDictionary {
- return @{
- SDLFileManagerStateShutdown: @[SDLFileManagerStateFetchingInitialList],
- SDLFileManagerStateFetchingInitialList: @[SDLFileManagerStateShutdown, SDLFileManagerStateReady, SDLFileManagerStateStartupError],
- SDLFileManagerStateReady: @[SDLFileManagerStateShutdown],
- SDLFileManagerStateStartupError: @[SDLFileManagerStateShutdown]
- };
-}
-
-- (void)didEnterStateStartupError {
- if (self.startupCompletionHandler != nil) {
- self.startupCompletionHandler(NO, [NSError sdl_fileManager_unableToStartError]);
- self.startupCompletionHandler = nil;
- }
-}
-
-- (void)didEnterStateShutdown {
- [self.transactionQueue cancelAllOperations];
- [self.mutableRemoteFileNames removeAllObjects];
- [self.class sdl_clearTemporaryFileDirectory];
- self.bytesAvailable = 0;
-
- // Clear the failed uploads tracking so failed files can be uploaded again when a new connection has been established with Core
- _failedFileUploadsCount = [NSMutableDictionary dictionary];
-
- if (self.startupCompletionHandler != nil) {
- self.startupCompletionHandler(NO, [NSError sdl_fileManager_unableToStartError]);
- self.startupCompletionHandler = nil;
- }
-}
-
-- (void)didEnterStateFetchingInitialList {
- __weak typeof(self) weakSelf = self;
- [self sdl_listRemoteFilesWithCompletionHandler:^(BOOL success, NSUInteger bytesAvailable, NSArray<NSString *> *_Nonnull fileNames, NSError *_Nullable error) {
- // If we've already shut down by this point, just stay in the shutdown state
- if ([weakSelf.stateMachine.currentState isEqualToString:SDLFileManagerStateShutdown]) {
- BLOCK_RETURN;
- }
-
- // If there was an error, we'll pass the error to the startup handler and cancel out
- if (error != nil) {
- // HAX: In the case we are DISALLOWED we still want to transition to a ready state. Some head units return DISALLOWED for this RPC but otherwise work.
- if([error.userInfo[@"resultCode"] isEqualToEnum:SDLResultDisallowed]) {
- SDLLogW(@"ListFiles is disallowed. Certain file manager APIs may not work properly.");
- [weakSelf.stateMachine transitionToState:SDLFileManagerStateReady];
- BLOCK_RETURN;
- }
- [weakSelf.stateMachine transitionToState:SDLFileManagerStateStartupError];
- BLOCK_RETURN;
- }
-
- // If no error, make sure we're in the ready state
- [weakSelf.stateMachine transitionToState:SDLFileManagerStateReady];
- }];
-}
-
-- (void)didEnterStateReady {
- if (self.startupCompletionHandler != nil) {
- self.startupCompletionHandler(YES, nil);
- self.startupCompletionHandler = nil;
- }
-}
-
-
-#pragma mark - Private Listing Remote Files
-
-- (void)sdl_listRemoteFilesWithCompletionHandler:(SDLFileManagerListFilesCompletionHandler)handler {
- __weak typeof(self) weakSelf = self;
- SDLListFilesOperation *listOperation = [[SDLListFilesOperation alloc] initWithConnectionManager:self.connectionManager completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSArray<NSString *> *_Nonnull fileNames, NSError *_Nullable error) {
- if (error != nil || !success) {
- handler(success, bytesAvailable, fileNames, error);
- BLOCK_RETURN;
- }
-
- // If there was no error, set our properties and call back to the startup completion handler
- [weakSelf.mutableRemoteFileNames addObjectsFromArray:fileNames];
- weakSelf.bytesAvailable = bytesAvailable;
-
- handler(success, bytesAvailable, fileNames, error);
- }];
-
- [self.transactionQueue addOperation:listOperation];
-}
-
-
-#pragma mark - Deleting
-
-- (void)deleteRemoteFileWithName:(SDLFileName *)name completionHandler:(nullable SDLFileManagerDeleteCompletionHandler)handler {
- if ((![self.remoteFileNames containsObject:name]) && (handler != nil)) {
- handler(NO, self.bytesAvailable, [NSError sdl_fileManager_noKnownFileError]);
- return;
- }
-
- __weak typeof(self) weakSelf = self;
- SDLDeleteFileOperation *deleteOperation = [[SDLDeleteFileOperation alloc] initWithFileName:name connectionManager:self.connectionManager completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError *_Nullable error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
-
- // Mutate self based on the changes
- if (success) {
- strongSelf.bytesAvailable = bytesAvailable;
- [strongSelf.mutableRemoteFileNames removeObject:name];
- }
-
- if (handler != nil) {
- handler(success, bytesAvailable, error);
- }
- }];
-
- [self.transactionQueue addOperation:deleteOperation];
-}
-
-- (void)deleteRemoteFilesWithNames:(NSArray<SDLFileName *> *)names completionHandler:(nullable SDLFileManagerMultiDeleteCompletionHandler)completionHandler {
- if (names.count == 0) {
- @throw [NSException sdl_missingFilesException];
- }
-
- NSMutableDictionary *failedDeletes = [[NSMutableDictionary alloc] init];
-
- dispatch_group_t deleteFilesTask = dispatch_group_create();
- dispatch_group_enter(deleteFilesTask);
- for(NSString *name in names) {
- dispatch_group_enter(deleteFilesTask);
- [self deleteRemoteFileWithName:name completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) {
- if(!success) {
- failedDeletes[name] = error;
- }
- dispatch_group_leave(deleteFilesTask);
- }];
- }
- dispatch_group_leave(deleteFilesTask);
-
- // Wait for all files to be deleted
- dispatch_group_notify(deleteFilesTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
- if (completionHandler == nil) { return; }
- if (failedDeletes.count > 0) {
- return completionHandler([NSError sdl_fileManager_unableToDelete_ErrorWithUserInfo:failedDeletes]);
- }
- return completionHandler(nil);
- });
-}
-
-#pragma mark - Uploading
-#pragma mark Files
-
-- (BOOL)hasUploadedFile:(SDLFile *)file {
- // HAX: [#827](https://github.com/smartdevicelink/sdl_ios/issues/827) Older versions of Core had a bug where list files would cache incorrectly.
- if (file.persistent && [self.remoteFileNames containsObject:file.name]) {
- // If it's a persistant file, the bug won't present itself; just check if it's on the remote system
- return true;
- } else if (!file.persistent && [self.remoteFileNames containsObject:file.name] && [self.uploadedEphemeralFileNames containsObject:file.name]) {
- // If it's an ephemeral file, the bug will present itself; check that it's a remote file AND that we've uploaded it this session
- return true;
- }
-
- return false;
-}
-
-- (void)uploadFiles:(NSArray<SDLFile *> *)files completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler {
- [self uploadFiles:files progressHandler:nil completionHandler:completionHandler];
-}
-
-- (void)uploadFiles:(NSArray<SDLFile *> *)files progressHandler:(nullable SDLFileManagerMultiUploadProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler {
- if (files.count == 0) {
- @throw [NSException sdl_missingFilesException];
- }
-
- NSMutableDictionary *failedUploads = [[NSMutableDictionary alloc] init];
- float totalBytesToUpload = (progressHandler == nil ? 0.0 : [self sdl_totalBytesToUpload:files]);
- __block float totalBytesUploaded = 0.0;
-
- dispatch_group_t uploadFilesTask = dispatch_group_create();
- dispatch_group_enter(uploadFilesTask);
-
- // Wait for all files to be uploaded
- dispatch_group_notify(uploadFilesTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
- if (completionHandler == nil) { return; }
- if (failedUploads.count > 0) {
- return completionHandler([NSError sdl_fileManager_unableToUpload_ErrorWithUserInfo:failedUploads]);
- }
- return completionHandler(nil);
- });
-
- for(NSUInteger i = 0; i < files.count; i++) {
- SDLFile *file = files[i];
- dispatch_group_enter(uploadFilesTask);
- __weak typeof(self) weakself = self;
- [self uploadFile:file completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) {
- if(!success) {
- failedUploads[file.name] = error;
- }
-
- // Send an update for each file sent to the remote
- if (progressHandler != nil) {
- totalBytesUploaded += file.fileSize;
- float uploadPercentage = [weakself sdl_uploadPercentage:totalBytesToUpload uploadedBytes:totalBytesUploaded];
- BOOL continueWithRemainingUploads = progressHandler(file.name, uploadPercentage, error);
- if (!continueWithRemainingUploads) {
- // Cancel any remaining files waiting to be uploaded
- for(NSUInteger j = i + 1; j < files.count; j++) {
- SDLFile *cancelFile = files[j];
- for (SDLUploadFileOperation *op in weakself.transactionQueue.operations) {
- if ([op.fileWrapper.file isEqual:cancelFile]) {
- [op cancel];
- break;
- }
- }
- }
-
- dispatch_group_leave(uploadFilesTask);
- BLOCK_RETURN;
- }
- }
- dispatch_group_leave(uploadFilesTask);
- }];
- }
- dispatch_group_leave(uploadFilesTask);
-}
-
-- (void)uploadFile:(SDLFile *)file completionHandler:(nullable SDLFileManagerUploadCompletionHandler)handler {
- if (file == nil || file.data.length == 0) {
- if (handler != nil) {
- handler(NO, self.bytesAvailable, [NSError sdl_fileManager_dataMissingError]);
- }
- return;
- }
-
- if (file.isStaticIcon) {
- if (handler != nil) {
- handler(NO, self.bytesAvailable, [NSError sdl_fileManager_staticIconError]);
- }
- return;
- }
-
- // Make sure we are able to send files
- if (![self.currentState isEqualToString:SDLFileManagerStateReady]) {
- if (handler != nil) {
- handler(NO, self.bytesAvailable, [NSError sdl_fileManager_unableToUploadError]);
- }
- return;
- }
-
- // HAX: [#827](https://github.com/smartdevicelink/sdl_ios/issues/827) Older versions of Core had a bug where list files would cache incorrectly. This led to attempted uploads failing due to the system thinking they were already there when they were not.
- if (!file.persistent && ![self hasUploadedFile:file]) {
- file.overwrite = true;
- }
-
- // Check our overwrite settings and error out if it would overwrite
- if (!file.overwrite && [self.remoteFileNames containsObject:file.name]) {
- if (handler != nil) {
- handler(NO, self.bytesAvailable, [NSError sdl_fileManager_cannotOverwriteError]);
- }
- return;
- }
-
- // If we didn't error out over the overwrite, then continue on
- [self sdl_uploadFile:file completionHandler:handler];
-}
-
-- (void)sdl_uploadFile:(SDLFile *)file completionHandler:(nullable SDLFileManagerUploadCompletionHandler)handler {
- __block NSString *fileName = file.name;
- __block SDLFileManagerUploadCompletionHandler uploadCompletion = [handler copy];
-
- __weak typeof(self) weakSelf = self;
- SDLFileWrapper *fileWrapper = [SDLFileWrapper wrapperWithFile:file completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError *_Nullable error) {
- if (success) {
- weakSelf.bytesAvailable = bytesAvailable;
- [weakSelf.mutableRemoteFileNames addObject:fileName];
- [weakSelf.uploadedEphemeralFileNames addObject:fileName];
- } else {
- weakSelf.failedFileUploadsCount = [weakSelf.class sdl_incrementFailedUploadCountForFileName:file.name failedFileUploadsCount:weakSelf.failedFileUploadsCount];
-
- NSUInteger maxUploadCount = [file isMemberOfClass:[SDLArtwork class]] ? weakSelf.maxArtworkUploadAttempts : self.maxFileUploadAttempts;
- if ([weakSelf sdl_canFileBeUploadedAgain:file maxUploadCount:maxUploadCount failedFileUploadsCount:weakSelf.failedFileUploadsCount]) {
- SDLLogD(@"Attempting to resend file with name %@ after a failed upload attempt", file.name);
- return [weakSelf sdl_uploadFile:file completionHandler:handler];
- }
- }
-
- if (uploadCompletion != nil) {
- uploadCompletion(success, bytesAvailable, error);
- }
- }];
-
- SDLUploadFileOperation *uploadOperation = [[SDLUploadFileOperation alloc] initWithFile:fileWrapper connectionManager:self.connectionManager];
-
- [self.transactionQueue addOperation:uploadOperation];
-}
-
-#pragma mark Artworks
-
-- (void)uploadArtwork:(SDLArtwork *)artwork completionHandler:(nullable SDLFileManagerUploadArtworkCompletionHandler)completion {
- __weak typeof(self) weakself = self;
- [self uploadFile:artwork completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) {
- if (completion == nil) { return; }
- if ([weakself sdl_isErrorCannotOverwriteError:error]) {
- // Artwork with same name already uploaded to remote
- return completion(YES, artwork.name, bytesAvailable, nil);
- }
- completion(success, artwork.name, bytesAvailable, error);
- }];
-}
-
-- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion {
- [self uploadArtworks:artworks progressHandler:nil completionHandler:completion];
-}
-
-- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks progressHandler:(nullable SDLFileManagerMultiUploadArtworkProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion {
- if (artworks.count == 0) {
- @throw [NSException sdl_missingFilesException];
- }
-
- __weak typeof(self) weakself = self;
- [self uploadFiles:artworks progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) {
- if (progressHandler == nil) { return YES; }
- if ([weakself sdl_isErrorCannotOverwriteError:error]) {
- return progressHandler(fileName, uploadPercentage, nil);
- }
- return progressHandler(fileName, uploadPercentage, error);
- } completionHandler:^(NSError * _Nullable error) {
- if (completion == nil) { return; }
-
- NSMutableSet<NSString *> *successfulArtworkUploadNames = [NSMutableSet set];
- for (SDLArtwork *artwork in artworks) {
- [successfulArtworkUploadNames addObject:artwork.name];
- }
- NSMutableDictionary *unsuccessfulArtworkUploadErrorUserInfo = [[NSMutableDictionary alloc] initWithDictionary:error.userInfo];
-
- if (error != nil) {
- for (NSString *erroredArtworkName in error.userInfo) {
- if (![weakself sdl_isErrorCannotOverwriteError:error.userInfo[erroredArtworkName]]) {
- [successfulArtworkUploadNames removeObject:erroredArtworkName];
- } else {
- // An overwrite error means that an artwork with the same name is already uploaded to the remote
- [unsuccessfulArtworkUploadErrorUserInfo removeObjectForKey:erroredArtworkName];
- }
- }
- }
-
- return completion([NSArray arrayWithArray:[successfulArtworkUploadNames allObjects]], unsuccessfulArtworkUploadErrorUserInfo.count == 0 ? nil : [[NSError alloc] initWithDomain:error.domain code:error.code userInfo:unsuccessfulArtworkUploadErrorUserInfo]);
- }];
-}
-
-#pragma mark Helpers
-
-/**
- * Checks an error returned by Core to see if it is a "can not overwrite" error.
- *
- * @param error The error returned by SDL Core
- * @return True if the error is an overwrite error; false if not
- */
-- (BOOL)sdl_isErrorCannotOverwriteError:(NSError * _Nullable)error {
- if (error != nil && error.domain == SDLErrorDomainFileManager && error.code == SDLFileManagerErrorCannotOverwrite) {
- return YES;
- }
- return NO;
-}
-
-/**
- * Computes the total amount of bytes to be uploaded to the remote. This total is computed by summing up the file size of all files to be uploaded to the remote
- *
- * @param files All the files being uploaded to the remote
- * @return The total byte count
- */
-- (float)sdl_totalBytesToUpload:(NSArray<SDLFile *> *)files {
- float totalBytes = 0.0;
- for(SDLFile *file in files) {
- totalBytes += file.fileSize;
- }
-
- return totalBytes;
-}
-
-/**
- * Computes the percentage of files uploaded to the remote. This percentage is a decimal number between 0.0 - 1.0. It is calculated by dividing the total number of bytes in files successfully or unsuccessfully uploaded by the total number of bytes in all files to be uploaded.
- *
- * @param totalBytes The total number of bytes in all files to be uploaded
- * @param uploadedBytes The total number of bytes in files successfully or unsuccessfully uploaded
- * @return The upload percentage
- */
-- (float)sdl_uploadPercentage:(float)totalBytes uploadedBytes:(float)uploadedBytes {
- if (totalBytes == 0 || uploadedBytes == 0) {
- return 0.0;
- }
- return uploadedBytes / totalBytes;
-}
-
-#pragma mark Reuploads
-
-/**
- * Checks if an artwork needs to be uploaded to Core. The arwork should not be sent to Core if the artwork is already on Core or if the artwork is not on Core after the maximum number of repeated upload attempts has been reached.
- *
- * @param file The file to be uploaded to Core
- * @param maxUploadCount The max number of times the file is allowed to be uploaded to Core
- * @return True if the file still needs to be (re)sent to Core; false if not.
- */
-- (BOOL)sdl_canFileBeUploadedAgain:(nullable SDLFile *)file maxUploadCount:(NSUInteger)maxUploadCount failedFileUploadsCount:(NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *)failedFileUploadsCount {
- if (![self.currentState isEqualToString:SDLFileManagerStateReady]) {
- SDLLogW(@"File named %@ failed to upload. The file manager has shutdown so the file upload will not retry.", file.name);
- return NO;
- }
-
- if (!file) {
- SDLLogE(@"File can not be uploaded because it is not a valid file.");
- return NO;
- }
-
- if ([self hasUploadedFile:file]) {
- SDLLogD(@"File named %@ has already been uploaded.", file.name);
- return NO;
- }
-
- NSNumber *failedUploadCount = failedFileUploadsCount[file.name];
- BOOL canFileBeUploadedAgain = (failedUploadCount == nil) ? YES : (failedUploadCount.unsignedIntegerValue < maxUploadCount);
- if (!canFileBeUploadedAgain) {
- SDLLogE(@"File named %@ failed to upload. Max number of upload attempts reached.", file.name);
- }
-
- return canFileBeUploadedAgain;
-}
-
-/**
- * Increments the number of upload attempts for a file name by 1.
- *
- * @param fileName The name used to upload the file to Core
- */
-+ (NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *)sdl_incrementFailedUploadCountForFileName:(SDLFileName *)fileName failedFileUploadsCount:(NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *)failedFileUploadsCount {
- NSNumber *currentFailedUploadCount = failedFileUploadsCount[fileName];
- NSNumber *newFailedUploadCount = (currentFailedUploadCount != nil) ? @(currentFailedUploadCount.integerValue + 1) : @1;
- failedFileUploadsCount[fileName] = newFailedUploadCount;
- SDLLogW(@"File with name %@ failed to upload %@ times", fileName, newFailedUploadCount);
- return failedFileUploadsCount;
-}
-
-#pragma mark - Temporary Files
-
-+ (NSURL *)temporaryFileDirectory {
- NSURL *directoryURL = [self.class sdl_temporaryFileDirectoryName];
- if (![[NSFileManager defaultManager] fileExistsAtPath:[directoryURL path]]) {
- [[NSFileManager defaultManager] createDirectoryAtURL:directoryURL withIntermediateDirectories:NO attributes:nil error:nil];
- }
-
- return directoryURL;
-}
-
-+ (NSURL *)sdl_temporaryFileDirectoryName {
- return [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"SDL"]];
-}
-
-+ (void)sdl_clearTemporaryFileDirectory {
- NSError *error = nil;
- if (![[NSFileManager defaultManager] fileExistsAtPath:[self.class sdl_temporaryFileDirectoryName].absoluteString]) {
- [[NSFileManager defaultManager] removeItemAtURL:[self.class sdl_temporaryFileDirectoryName] error:&error];
- }
-
- if (error != nil) {
- SDLLogW(@"[Error clearing temporary file directory] %@", error);
- }
-}
-
-
-@end
-
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFileType.h b/SmartDeviceLink/SDLFileType.h
deleted file mode 100644
index 00612e1d0..000000000
--- a/SmartDeviceLink/SDLFileType.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// SDLFileType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration listing possible file types. Used in SDLFile, PutFile, ImageField, OnSystemRequest
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLFileType SDL_SWIFT_ENUM;
-
-/**
- * file type: Bitmap (BMP)
- */
-extern SDLFileType const SDLFileTypeBMP;
-
-/**
- * file type: JPEG
- */
-extern SDLFileType const SDLFileTypeJPEG;
-
-/**
- * file type: PNG
- */
-extern SDLFileType const SDLFileTypePNG;
-
-/**
- * file type: WAVE (WAV)
- */
-extern SDLFileType const SDLFileTypeWAV;
-
-/**
- * file type: MP3
- */
-extern SDLFileType const SDLFileTypeMP3;
-
-/**
- * file type: AAC
- */
-extern SDLFileType const SDLFileTypeAAC;
-
-/**
- * file type: BINARY
- */
-extern SDLFileType const SDLFileTypeBinary;
-
-/**
- * file type: JSON
- */
-extern SDLFileType const SDLFileTypeJSON;
diff --git a/SmartDeviceLink/SDLFocusableItemLocator.m b/SmartDeviceLink/SDLFocusableItemLocator.m
deleted file mode 100644
index e416c2a3a..000000000
--- a/SmartDeviceLink/SDLFocusableItemLocator.m
+++ /dev/null
@@ -1,194 +0,0 @@
-//
-// SDLHapticManager.m
-// SmartDeviceLink-iOS
-//
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLFocusableItemLocator.h"
-#import "SDLLogMacros.h"
-#import "SDLNotificationConstants.h"
-#import "SDLRectangle.h"
-#import "SDLHapticRect.h"
-#import "SDLSendHapticData.h"
-#import "SDLStreamingVideoScaleManager.h"
-#import "SDLTouch.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLFocusableItemLocator()
-
-/**
- Array of focusable view objects extracted from the projection window
- */
-@property (nonatomic, strong) NSMutableArray<UIView *> *focusableViews;
-@property (nonatomic, weak) id<SDLConnectionManagerType> connectionManager;
-
-/**
- The scale manager that scales from the display screen coordinate system to the app's viewport coordinate system
-*/
-@property (strong, nonatomic) SDLStreamingVideoScaleManager *videoScaleManager;
-
-@end
-
-@implementation SDLFocusableItemLocator
-
-- (instancetype)initWithViewController:(UIViewController *)viewController connectionManager:(id<SDLConnectionManagerType>)connectionManager videoScaleManager:(SDLStreamingVideoScaleManager *)videoScaleManager {
- self = [super init];
- if(!self) {
- return nil;
- }
-
- _viewController = viewController;
- _connectionManager = connectionManager;
- _videoScaleManager = videoScaleManager;
- _focusableViews = [NSMutableArray array];
-
- _enableHapticDataRequests = NO;
-
- return self;
-}
-
-- (void)start {
- SDLLogD(@"Starting");
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_projectionViewUpdated:) name:SDLDidUpdateProjectionView object:nil];
-}
-
-- (void)stop {
- SDLLogD(@"Stopping");
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [self.focusableViews removeAllObjects];
-}
-
-- (void)updateInterfaceLayout {
- if (@available(iOS 9.0, *)) {
- [self.focusableViews removeAllObjects];
- [self sdl_parseViewHierarchy:self.viewController.view];
-
- // If there is a preferred view, move it to the front of the array
- NSUInteger preferredViewIndex = [self.focusableViews indexOfObject:self.viewController.view.subviews.lastObject.preferredFocusedView];
- if (preferredViewIndex != NSNotFound && self.focusableViews.count > 1) {
- [self.focusableViews exchangeObjectAtIndex:preferredViewIndex withObjectAtIndex:0];
- }
-
- SDLLogD(@"Updated VC layout, sending new haptic rects");
- SDLLogV(@"For focusable views: %@", self.focusableViews);
- [self sdl_sendHapticRPC];
- } else {
- SDLLogE(@"Attempted to update user interface layout, but it only works on iOS 9.0+");
- }
-}
-
-/**
- Crawls through the views recursively and adds focusable view into the member array
-
- @param currentView is the view hierarchy to be processed
- */
-- (void)sdl_parseViewHierarchy:(UIView *)currentView {
- if (currentView == nil) {
- SDLLogW(@"Error: Cannot parse nil view");
- return;
- }
-
- SDLLogD(@"Parsing UIView heirarchy");
- SDLLogV(@"UIView: %@", currentView);
- if (@available(iOS 9.0, *)) {
- // Finding focusable subviews
- NSArray *focusableSubviews = [currentView.subviews filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(UIView * _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
- return (evaluatedObject.canBecomeFocused || [evaluatedObject isKindOfClass:[UIButton class]]);
- }]];
- SDLLogV(@"Found focusable subviews: %@", focusableSubviews);
-
- BOOL isButton = [currentView isKindOfClass:[UIButton class]];
- if ((currentView.canBecomeFocused || isButton) && focusableSubviews.count == 0) {
- //if current view is focusable and it doesn't have any focusable sub views then add the current view and return
- [self.focusableViews addObject:currentView];
- return;
- } else if (currentView.subviews.count > 0) {
- // if current view has focusable sub views parse them recursively
- NSArray<UIView *> *subviews = currentView.subviews;
-
- for (UIView *childView in subviews) {
- [self sdl_parseViewHierarchy:childView];
- }
- } else {
- return;
- }
- }
-}
-
-/**
- Iterates through the focusable views, extracts rectangular parameters, creates Haptic RPC request and sends it
- */
-- (void)sdl_sendHapticRPC {
- if (!self.enableHapticDataRequests) {
- SDLLogV(@"Attempting to send haptic data to a head unit that does not support haptic data. Haptic data will not be sent.");
- return;
- }
-
- if (self.focusableViews.count == 0) {
- SDLLogV(@"No haptic data to send for this view.");
- return;
- }
-
- NSMutableArray<SDLHapticRect *> *hapticRects = [[NSMutableArray alloc] init];
- for (UIView *view in self.focusableViews) {
- CGPoint originOnScreen = [self.viewController.view convertPoint:view.frame.origin toView:nil];
- CGRect convertedRect = {originOnScreen, view.bounds.size};
- SDLRectangle *rect = [[SDLRectangle alloc] initWithCGRect:convertedRect];
- // using the view index as the id field in SendHapticData request (should be guaranteed unique)
- NSUInteger rectId = [self.focusableViews indexOfObject:view];
- SDLHapticRect *hapticRect = [[SDLHapticRect alloc] initWithId:(UInt32)rectId rect:rect];
- hapticRect = [self.videoScaleManager scaleHapticRect:hapticRect];
-
- [hapticRects addObject:hapticRect];
- }
-
- SDLLogV(@"Sending haptic data: %@", hapticRects);
- SDLSendHapticData *hapticRPC = [[SDLSendHapticData alloc] initWithHapticRectData:hapticRects];
- [self.connectionManager sendConnectionManagerRequest:hapticRPC withResponseHandler:nil];
-}
-
-#pragma mark SDLFocusableItemHitTester functions
-- (nullable UIView *)viewForPoint:(CGPoint)point {
- UIView *selectedView = nil;
-
- for (UIView *view in self.focusableViews) {
- //Convert the absolute location to local location and check if that falls within view boundary
- CGPoint localPoint = [view convertPoint:point fromView:self.viewController.view];
- if ([view pointInside:localPoint withEvent:nil]) {
- if (selectedView != nil) {
- selectedView = nil;
- break;
- //the point has been indentified in two views. We cannot identify which with confidence.
- } else {
- selectedView = view;
- }
- }
- }
-
- SDLLogD(@"Found a focusable view: %@, for point: %@", selectedView, NSStringFromCGPoint(point));
- return selectedView;
-}
-
-#pragma mark notifications
-/**
- Function that gets called when projection view updated notification occurs.
-
- @param notification object with notification data
- */
-- (void)sdl_projectionViewUpdated:(NSNotification *)notification {
- if ([NSThread isMainThread]) {
- [self updateInterfaceLayout];
- } else {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self updateInterfaceLayout];
- });
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFuelCutoffStatus.h b/SmartDeviceLink/SDLFuelCutoffStatus.h
deleted file mode 100644
index 22adb18c0..000000000
--- a/SmartDeviceLink/SDLFuelCutoffStatus.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLFuelCutoffStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of the Restraints Control Module fuel pump cutoff. The fuel pump is cut off typically after the vehicle has had a collision. Used in EmergencyEvent.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLFuelCutoffStatus SDL_SWIFT_ENUM;
-
-/**
- * Fuel is cut off
- */
-extern SDLFuelCutoffStatus const SDLFuelCutoffStatusTerminateFuel;
-
-/**
- * Fuel is not cut off
- */
-extern SDLFuelCutoffStatus const SDLFuelCutoffStatusNormalOperation;
-
-/**
- * Status of the fuel pump cannot be determined
- */
-extern SDLFuelCutoffStatus const SDLFuelCutoffStatusFault;
diff --git a/SmartDeviceLink/SDLFuelRange.h b/SmartDeviceLink/SDLFuelRange.h
deleted file mode 100644
index 3220256cb..000000000
--- a/SmartDeviceLink/SDLFuelRange.h
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// SDLFuelRange.h
-// SmartDeviceLink
-//
-// Created by Nicole on 6/20/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLFuelType.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Describes the distance a vehicle can travel with the current level of fuel.
- */
-@interface SDLFuelRange : SDLRPCStruct
-
-/**
- * The vehicle's fuel type
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLFuelType type;
-
-/**
- * The estimate range in KM the vehicle can travel based on fuel level and consumption.
- *
- * Optional, Float, 0 - 10,000
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *range;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFuelRange.m b/SmartDeviceLink/SDLFuelRange.m
deleted file mode 100644
index 1512a0957..000000000
--- a/SmartDeviceLink/SDLFuelRange.m
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// SDLFuelRange.m
-// SmartDeviceLink
-//
-// Created by Nicole on 6/20/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLFuelRange.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLFuelRange
-
-- (void)setType:(nullable SDLFuelType)type {
- [self.store sdl_setObject:type forName:SDLRPCParameterNameType];
-}
-
-- (nullable SDLFuelType)type {
- return [self.store sdl_enumForName:SDLRPCParameterNameType error:nil];
-}
-
-- (void)setRange:(nullable NSNumber<SDLFloat> *)range {
- [self.store sdl_setObject:range forName:SDLRPCParameterNameRange];
-}
-
-- (nullable NSNumber<SDLFloat> *)range {
- return [self.store sdl_objectForName:SDLRPCParameterNameRange ofClass:NSNumber.class error:nil];
-}
-
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFuelType.h b/SmartDeviceLink/SDLFuelType.h
deleted file mode 100644
index a87c1f332..000000000
--- a/SmartDeviceLink/SDLFuelType.h
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// SDLFuelType.h
-// SmartDeviceLink
-//
-// Created by Nicole on 6/20/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration listing possible fuel types.
- */
-typedef SDLEnum SDLFuelType SDL_SWIFT_ENUM;
-
-/**
- * Fuel type: Gasoline
- */
-extern SDLFuelType const SDLFuelTypeGasoline;
-
-/**
- * Fuel type: Diesel
- */
-extern SDLFuelType const SDLFuelTypeDiesel;
-
-/**
- * Fuel type: CNG
- *
- * @discussion For vehicles using compressed natural gas
- */
-extern SDLFuelType const SDLFuelTypeCNG;
-
-/**
- * Fuel type: LPG
- *
- * @discussion For vehicles using liquefied petroleum gas
- */
-extern SDLFuelType const SDLFuelTypeLPG;
-
-/**
- * Fuel type: Hydrogen
- *
- * @discussion For FCEV (fuel cell electric vehicle)
- */
-extern SDLFuelType const SDLFuelTypeHydrogen;
-
-/**
- * Fuel type: Battery
- *
- * @discussion For BEV (Battery Electric Vehicle), PHEV (Plug-in Hybrid Electric Vehicle), solar vehicles and other vehicles which run on a battery.
- */
-extern SDLFuelType const SDLFuelTypeBattery;
diff --git a/SmartDeviceLink/SDLFunctionID.m b/SmartDeviceLink/SDLFunctionID.m
deleted file mode 100644
index 1a3b93bbb..000000000
--- a/SmartDeviceLink/SDLFunctionID.m
+++ /dev/null
@@ -1,140 +0,0 @@
-// SDLFunctionID.m
-//
-
-
-#import "SDLFunctionID.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLFunctionID ()
-
-@property (nonatomic, strong, nonnull) NSDictionary* functionIds;
-
-@end
-
-@implementation SDLFunctionID
-
-+ (instancetype)sharedInstance {
- static SDLFunctionID* functionId = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- functionId = [[SDLFunctionID alloc] init];
- });
- return functionId;
-}
-
-- (instancetype)init {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- self.functionIds = @{
- @0: SDLRPCFunctionNameReserved,
- @1: SDLRPCFunctionNameRegisterAppInterface,
- @2: SDLRPCFunctionNameUnregisterAppInterface,
- @3: SDLRPCFunctionNameSetGlobalProperties,
- @4: SDLRPCFunctionNameResetGlobalProperties,
- @5: SDLRPCFunctionNameAddCommand,
- @6: SDLRPCFunctionNameDeleteCommand,
- @7: SDLRPCFunctionNameAddSubMenu,
- @8: SDLRPCFunctionNameDeleteSubMenu,
- @9: SDLRPCFunctionNameCreateInteractionChoiceSet,
- @10: SDLRPCFunctionNamePerformInteraction,
- @11: SDLRPCFunctionNameDeleteInteractionChoiceSet,
- @12: SDLRPCFunctionNameAlert,
- @13: SDLRPCFunctionNameShow,
- @14: SDLRPCFunctionNameSpeak,
- @15: SDLRPCFunctionNameSetMediaClockTimer,
- @16: SDLRPCFunctionNamePerformAudioPassThru,
- @17: SDLRPCFunctionNameEndAudioPassThru,
- @18: SDLRPCFunctionNameSubscribeButton,
- @19: SDLRPCFunctionNameUnsubscribeButton,
- @20: SDLRPCFunctionNameSubscribeVehicleData,
- @21: SDLRPCFunctionNameUnsubscribeVehicleData,
- @22: SDLRPCFunctionNameGetVehicleData,
- @23: SDLRPCFunctionNameReadDID,
- @24: SDLRPCFunctionNameGetDTCs,
- @25: SDLRPCFunctionNameScrollableMessage,
- @26: SDLRPCFunctionNameSlider,
- @27: SDLRPCFunctionNameShowConstantTBT,
- @28: SDLRPCFunctionNameAlertManeuver,
- @29: SDLRPCFunctionNameUpdateTurnList,
- @30: SDLRPCFunctionNameChangeRegistration,
- @31: SDLRPCFunctionNameGenericResponse,
- @32: SDLRPCFunctionNamePutFile,
- @33: SDLRPCFunctionNameDeleteFile,
- @34: SDLRPCFunctionNameListFiles,
- @35: SDLRPCFunctionNameSetAppIcon,
- @36: SDLRPCFunctionNameSetDisplayLayout,
- @37: SDLRPCFunctionNameDiagnosticMessage,
- @38: SDLRPCFunctionNameSystemRequest,
- @39: SDLRPCFunctionNameSendLocation,
- @40: SDLRPCFunctionNameDialNumber,
- @41: SDLRPCFunctionNameButtonPress,
- @43: SDLRPCFunctionNameGetInteriorVehicleData,
- @44: SDLRPCFunctionNameSetInteriorVehicleData,
- @45: SDLRPCFunctionNameGetWayPoints,
- @46: SDLRPCFunctionNameSubscribeWayPoints,
- @47: SDLRPCFunctionNameUnsubscribeWayPoints,
- @48: SDLRPCFunctionNameGetSystemCapability,
- @49: SDLRPCFunctionNameSendHapticData,
- @50: SDLRPCFunctionNameSetCloudAppProperties,
- @51: SDLRPCFunctionNameGetCloudAppProperties,
- @52: SDLRPCFunctionNamePublishAppService,
- @53: SDLRPCFunctionNameGetAppServiceData,
- @54: SDLRPCFunctionNameGetFile,
- @55: SDLRPCFunctionNamePerformAppServiceInteraction,
- @56: SDLRPCFunctionNameUnpublishAppService,
- @57: SDLRPCFunctionNameCancelInteraction,
- @58: SDLRPCFunctionNameCloseApplication,
- @59: SDLRPCFunctionNameShowAppMenu,
- @60: SDLRPCFunctionNameCreateWindow,
- @61: SDLRPCFunctionNameDeleteWindow,
- @62: SDLRPCFunctionNameGetInteriorVehicleDataConsent,
- @63: SDLRPCFunctionNameReleaseInteriorVehicleDataModule,
- @32768: SDLRPCFunctionNameOnHMIStatus,
- @32769: SDLRPCFunctionNameOnAppInterfaceUnregistered,
- @32770: SDLRPCFunctionNameOnButtonEvent,
- @32771: SDLRPCFunctionNameOnButtonPress,
- @32772: SDLRPCFunctionNameOnVehicleData,
- @32773: SDLRPCFunctionNameOnCommand,
- @32774: SDLRPCFunctionNameOnTBTClientState,
- @32775: SDLRPCFunctionNameOnDriverDistraction,
- @32776: SDLRPCFunctionNameOnPermissionsChange,
- @32777: SDLRPCFunctionNameOnAudioPassThru,
- @32778: SDLRPCFunctionNameOnLanguageChange,
- @32779: SDLRPCFunctionNameOnKeyboardInput,
- @32780: SDLRPCFunctionNameOnTouchEvent,
- @32781: SDLRPCFunctionNameOnSystemRequest,
- @32782: SDLRPCFunctionNameOnHashChange,
- @32783: SDLRPCFunctionNameOnInteriorVehicleData,
- @32784: SDLRPCFunctionNameOnWayPointChange,
- @32785: SDLRPCFunctionNameOnRCStatus,
- @32786: SDLRPCFunctionNameOnAppServiceData,
- @32787: SDLRPCFunctionNameOnSystemCapabilityUpdated,
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- @65536: SDLRPCFunctionNameEncodedSyncPData,
- @65537: SDLRPCFunctionNameSyncPData,
- @98304: SDLRPCFunctionNameOnEncodedSyncPData,
- @98305: SDLRPCFunctionNameOnSyncPData
-#pragma clang diagnostic pop
- };
- return self;
-}
-
-- (nullable SDLRPCFunctionName)functionNameForId:(UInt32)functionID {
- return self.functionIds[@(functionID)];
-}
-
-- (nullable NSNumber<SDLInt> *)functionIdForName:(SDLRPCFunctionName)functionName {
- return [[self.functionIds allKeysForObject:functionName] firstObject];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetFile.m b/SmartDeviceLink/SDLGetFile.m
deleted file mode 100644
index 239a034ba..000000000
--- a/SmartDeviceLink/SDLGetFile.m
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-// SDLGetFile.m
-// SmartDeviceLink
-//
-// Created by Nicole on 2/7/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLGetFile.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLGetFile
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameGetFile]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithFileName:(NSString *)fileName {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.fileName = fileName;
-
- return self;
-}
-
-- (instancetype)initWithFileName:(NSString *)fileName appServiceId:(nullable NSString *)appServiceId fileType:(nullable SDLFileType)fileType {
- self = [self initWithFileName:fileName];
- if (!self) {
- return nil;
- }
-
- self.appServiceId = appServiceId;
- self.fileType = fileType;
-
- return self;
-}
-
-- (instancetype)initWithFileName:(NSString *)fileName appServiceId:(nullable NSString *)appServiceId fileType:(nullable SDLFileType)fileType offset:(UInt32)offset length:(UInt32)length {
- self = [self initWithFileName:fileName appServiceId:appServiceId fileType:fileType];
- if (!self) {
- return nil;
- }
-
- self.offset = @(offset);
- self.length = @(length);
-
- return self;
-}
-
-- (void)setFileName:(NSString *)fileName {
- [self.parameters sdl_setObject:fileName forName:SDLRPCParameterNameFilename];
-}
-
-- (NSString *)fileName {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFilename ofClass:NSString.class error:&error];
-}
-
-- (void)setAppServiceId:(nullable NSString *)appServiceId {
- [self.parameters sdl_setObject:appServiceId forName:SDLRPCParameterNameAppServiceId];
-}
-
-- (nullable NSString *)appServiceId {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAppServiceId ofClass:NSString.class error:nil];
-}
-
-- (void)setFileType:(nullable SDLFileType)fileType {
- [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType];
-}
-
-- (nullable SDLFileType)fileType {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil];
-}
-
-- (void)setOffset:(nullable NSNumber<SDLUInt> *)offset {
- [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset];
-}
-
-- (nullable NSNumber<SDLUInt> *)offset {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil];
-}
-
-- (void)setLength:(nullable NSNumber<SDLUInt> *)length {
- [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength];
-}
-
-- (nullable NSNumber<SDLUInt> *)length {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleData.h b/SmartDeviceLink/SDLGetInteriorVehicleData.h
deleted file mode 100644
index baddec94d..000000000
--- a/SmartDeviceLink/SDLGetInteriorVehicleData.h
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// SDLGetInteriorVehicleData.h
-//
-
-#import "SDLRPCRequest.h"
-#import "SDLModuleType.h"
-#import "SDLModuleInfo.h"
-
-/**
- * Reads the current status value of specified remote control module (type).
- * When subscribe is true, subscribes for specific remote control module data items.
- * When subscribe is false, unsubscribes for specific remote control module data items.
- * Once subscribed, the application will be notified by the onInteriorVehicleData RPC notification
- * whenever new data is available for the module.
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLGetInteriorVehicleData : SDLRPCRequest
-
-/// Convenience init to get information of a particular module type with a module ID.
-///
-/// @param moduleType The type of a RC module to retrieve module data from the vehicle
-/// @param moduleId Id of a module, published by System Capability
-/// @return An SDLGetInteriorVehicleData object
-- (instancetype)initWithModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId;
-
-/// Convenience init to get information and subscribe to a particular module type with a module ID.
-///
-/// @param moduleType The type of a RC module to retrieve module data from the vehicle
-/// @param moduleId Id of a module, published by System Capability
-/// @return An SDLGetInteriorVehicleData object
-- (instancetype)initAndSubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId;
-
-/// Convenience init to unsubscribe from particular module with a module ID.
-///
-/// @param moduleType The type of a RC module to retrieve module data from the vehicle
-/// @param moduleId Id of a module, published by System Capability
-/// @return An SDLGetInteriorVehicleData object
-- (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId;
-
-/// Convenience init to get information of a particular module type.
-///
-/// @param moduleType The type of a RC module to retrieve module data from the vehicle
-/// @return An SDLGetInteriorVehicleData object
-- (instancetype)initWithModuleType:(SDLModuleType)moduleType __deprecated_msg("Use initWithModuleType:moduleId: instead");
-
-/// Convenience init to get information and subscribe to a particular module type.
-///
-/// @param moduleType The type of a RC module to retrieve module data from the vehicle
-/// @return An SDLGetInteriorVehicleData object
-- (instancetype)initAndSubscribeToModuleType:(SDLModuleType)moduleType __deprecated_msg("Use initAndSubscribeToModuleType:moduleId: instead");
-
-/// Convenience init to unsubscribe from particular module type.
-///
-/// @param moduleType The type of a RC module to retrieve module data from the vehicle
-/// @return An SDLGetInteriorVehicleData object
-- (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType __deprecated_msg("Use initAndUnsubscribeToModuleType:moduleId:");
-
-/**
- * The type of a RC module to retrieve module data from the vehicle.
- *
- */
-@property (strong, nonatomic) SDLModuleType moduleType;
-
-/**
- * Id of a module, published by System Capability.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) NSString *moduleId;
-
-/**
- * If subscribe is true, the head unit will register OnInteriorVehicleData notifications for the requested module (moduleId and moduleType).
- * If subscribe is false, the head unit will unregister OnInteriorVehicleData notifications for the requested module (moduleId and moduleType).
- * If subscribe is not included, the subscription status of the app for the requested module (moduleId and moduleType) will remain unchanged.
- *
- * optional, Boolean, default Value = false
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *subscribe;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleData.m b/SmartDeviceLink/SDLGetInteriorVehicleData.m
deleted file mode 100755
index 57f0aa833..000000000
--- a/SmartDeviceLink/SDLGetInteriorVehicleData.m
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// SDLGetInteriorVehicleData.m
-//
-
-#import "SDLGetInteriorVehicleData.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLGetInteriorVehicleData
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameGetInteriorVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleType = moduleType;
- self.moduleId = moduleId;
-
- return self;
-}
-
-- (instancetype)initAndSubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleType = moduleType;
- self.moduleId = moduleId;
- self.subscribe = @(YES);
-
- return self;
-}
-
-- (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleType = moduleType;
- self.moduleId = moduleId;
- self.subscribe = @(NO);
-
- return self;
-}
-
-- (instancetype)initWithModuleType:(SDLModuleType)moduleType; {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleType = moduleType;
-
- return self;
-}
-
-- (instancetype)initAndSubscribeToModuleType:(SDLModuleType)moduleType {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleType = moduleType;
- self.subscribe = @(YES);
-
- return self;
-}
-
-- (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.moduleType = moduleType;
- self.subscribe = @(NO);
-
- return self;
-}
-
-- (void)setModuleType:(SDLModuleType)moduleType {
- [self.parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType];
-}
-
-- (SDLModuleType)moduleType {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error];
-}
-
-- (void)setSubscribe:(nullable NSNumber<SDLBool> *)subscribe {
- [self.parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe];
-}
-
-- (nullable NSNumber<SDLBool> *)subscribe {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil];
-}
-
-- (void)setModuleId:(nullable NSString *)moduleId {
- [self.parameters sdl_setObject:moduleId forName:SDLRPCParameterNameModuleId];
-}
-
-- (nullable NSString *)moduleId {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleId ofClass:NSString.class error:&error];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleData.h b/SmartDeviceLink/SDLGetVehicleData.h
deleted file mode 100644
index 8e7082037..000000000
--- a/SmartDeviceLink/SDLGetVehicleData.h
+++ /dev/null
@@ -1,297 +0,0 @@
-// SDLGetVehicleData.h
-//
-
-
-#import "SDLRPCRequest.h"
-
-/**
- * Requests current values of specific published vehicle data items.
- *
- * Function Group: Location, VehicleInfo and DrivingChara
- * HMILevel needs to be FULL, LIMITED or BACKGROUND
- * Since SmartDeviceLink 2.0
- * See SDLSubscribeVehicleData, SDLUnsubscribeVehicleData
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLGetVehicleData : SDLRPCRequest
-
-/**
- * Convenience init for getting data for all possible vehicle data items.
- *
- * @param accelerationPedalPosition Get accelerationPedalPosition data
- * @param airbagStatus Get airbagStatus data
- * @param beltStatus Get beltStatus data
- * @param bodyInformation Get bodyInformation data
- * @param clusterModeStatus Get clusterModeStatus data
- * @param deviceStatus Get deviceStatus data
- * @param driverBraking Get driverBraking data
- * @param eCallInfo Get eCallInfo data
- * @param emergencyEvent Get emergencyEvent data
- * @param engineTorque Get engineTorque data
- * @param externalTemperature Get externalTemperature data
- * @param fuelLevel Get fuelLevel data
- * @param fuelLevelState Get fuelLevelState data
- * @param gps Get gps data
- * @param headLampStatus Get headLampStatus data
- * @param instantFuelConsumption Get instantFuelConsumption data
- * @param myKey Get myKey data
- * @param odometer Get odometer data
- * @param prndl Get prndl data
- * @param rpm Get rpm data
- * @param speed Get speed data
- * @param steeringWheelAngle Get steeringWheelAngle data
- * @param tirePressure Get tirePressure data
- * @param vin Get vin data
- * @param wiperStatus Get wiperStatus data
- * @return A SDLGetVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
-
-/**
- * Convenience init for getting data for all possible vehicle data items.
- *
- * @param accelerationPedalPosition Get accelerationPedalPosition data
- * @param airbagStatus Get airbagStatus data
- * @param beltStatus Get beltStatus data
- * @param bodyInformation Get bodyInformation data
- * @param clusterModeStatus Get clusterModeStatus data
- * @param deviceStatus Get deviceStatus data
- * @param driverBraking Get driverBraking data
- * @param eCallInfo Get eCallInfo data
- * @param electronicParkBrakeStatus Get electronicParkBrakeStatus data
- * @param emergencyEvent Get emergencyEvent data
- * @param engineOilLife Get engineOilLife data
- * @param engineTorque Get engineTorque data
- * @param externalTemperature Get externalTemperature data
- * @param fuelLevel Get fuelLevel data
- * @param fuelLevelState Get fuelLevelState data
- * @param fuelRange Get fuelRange data
- * @param gps Get gps data
- * @param headLampStatus Get headLampStatus data
- * @param instantFuelConsumption Get instantFuelConsumption data
- * @param myKey Get myKey data
- * @param odometer Get odometer data
- * @param prndl Get prndl data
- * @param rpm Get rpm data
- * @param speed Get speed data
- * @param steeringWheelAngle Get steeringWheelAngle data
- * @param tirePressure Get tirePressure data
- * @param turnSignal Get turnSignal data
- * @param vin Get vin data
- * @param wiperStatus Get wiperStatus data
- * @return A SDLGetVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
-
-/**
- * Convenience init for getting data for all possible vehicle data items.
- *
- * @param accelerationPedalPosition Get accelerationPedalPosition data
- * @param airbagStatus Get airbagStatus data
- * @param beltStatus Get beltStatus data
- * @param bodyInformation Get bodyInformation data
- * @param cloudAppVehicleID Get cloudAppVehicleID data
- * @param clusterModeStatus Get clusterModeStatus data
- * @param deviceStatus Get deviceStatus data
- * @param driverBraking Get driverBraking data
- * @param eCallInfo Get eCallInfo data
- * @param electronicParkBrakeStatus Get electronicParkBrakeStatus data
- * @param emergencyEvent Get emergencyEvent data
- * @param engineOilLife Get engineOilLife data
- * @param engineTorque Get engineTorque data
- * @param externalTemperature Get externalTemperature data
- * @param fuelLevel Get fuelLevel data
- * @param fuelLevelState Get fuelLevelState data
- * @param fuelRange Get fuelRange data
- * @param gps Get gps data
- * @param headLampStatus Get headLampStatus data
- * @param instantFuelConsumption Get instantFuelConsumption data
- * @param myKey Get myKey data
- * @param odometer Get odometer data
- * @param prndl Get prndl data
- * @param rpm Get rpm data
- * @param speed Get speed data
- * @param steeringWheelAngle Get steeringWheelAngle data
- * @param tirePressure Get tirePressure data
- * @param turnSignal Get turnSignal data
- * @param vin Get vin data
- * @param wiperStatus Get wiperStatus data
- * @return A SDLGetVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus;
-
-/**
- * A boolean value. If true, requests GPS data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *gps;
-
-/**
- * A boolean value. If true, requests Speed data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *speed;
-
-/**
- * A boolean value. If true, requests RPM data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rpm;
-
-/**
- * A boolean value. If true, requests Fuel Level data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *fuelLevel;
-
-/**
- * A boolean value. If true, requests Fuel Level State data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *fuelLevel_State;
-
-/**
- * A boolean value. If true, requests Fuel Range data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *fuelRange;
-
-/**
- * A boolean value. If true, requests Instant Fuel Consumption data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *instantFuelConsumption;
-
-/**
- * A boolean value. If true, requests External Temperature data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *externalTemperature;
-
-/**
- * A boolean value. If true, requests the Vehicle Identification Number.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *vin;
-
-/**
- * A boolean value. If true, requests PRNDL data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *prndl;
-
-/**
- * A boolean value. If true, requests Tire Pressure data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *tirePressure;
-
-/**
- * A boolean value. If true, requests Odometer data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *odometer;
-
-/**
- * A boolean value. If true, requests Belt Status data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *beltStatus;
-
-/**
- * A boolean value. If true, requests Body Information data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *bodyInformation;
-
-/**
- * A boolean value. If true, requests Device Status data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *deviceStatus;
-
-/**
- * A boolean value. If true, requests Driver Braking data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *driverBraking;
-
-/**
- * A boolean value. If true, requests Wiper Status data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *wiperStatus;
-
-/**
- * A boolean value. If true, requests Head Lamp Status data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *headLampStatus;
-
-/**
- * A boolean value. If true, requests Engine Oil Life data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineOilLife;
-
-/**
- * A boolean value. If true, requests Engine Torque data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *engineTorque;
-
-/**
- * A boolean value. If true, requests Acc Pedal Position data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *accPedalPosition;
-
-/**
- * A boolean value. If true, requests Steering Wheel Angle data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *steeringWheelAngle;
-
-/**
- * A boolean value. If true, requests Emergency Call Info data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *eCallInfo;
-
-/**
- * A boolean value. If true, requests Air Bag Status data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *airbagStatus;
-
-/**
- * A boolean value. If true, requests Emergency Event (if it occurred) data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *emergencyEvent;
-
-/**
- * A boolean value. If true, requests Cluster Mode Status data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *clusterModeStatus;
-
-/**
- * A boolean value. If true, requests MyKey data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *myKey;
-
-/**
- A boolean value. If true, requests Electronic Parking Brake status data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *electronicParkBrakeStatus;
-
-/**
- A boolean value. If true, requests Turn Signal data.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *turnSignal;
-
-/**
- A boolean value. If true, requests the Cloud App Vehicle ID.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *cloudAppVehicleID;
-
-/**
- Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @param vehicleDataState A boolean value. If true, requests the OEM custom vehicle data item.
-
- Added in SmartDeviceLink 6.0
- */
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
-
-/**
- Gets the OEM custom vehicle data value for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @return The state of an OEM custom vehicle data item for the given vehicle data name.
-
- Added in SmartDeviceLink 6.0
- */
-- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleData.m b/SmartDeviceLink/SDLGetVehicleData.m
deleted file mode 100644
index 30b8dfe81..000000000
--- a/SmartDeviceLink/SDLGetVehicleData.m
+++ /dev/null
@@ -1,322 +0,0 @@
-// SDLGetVehicleData.m
-//
-
-
-#import "SDLGetVehicleData.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLGetVehicleData
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameGetVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus {
- return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:NO emergencyEvent:emergencyEvent engineOilLife:NO engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:NO gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:NO vin:vin wiperStatus:wiperStatus];
-}
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus {
- return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation cloudAppVehicleID:NO clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:electronicParkBrakeStatus emergencyEvent:emergencyEvent engineOilLife:engineOilLife engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:fuelRange gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:turnSignal vin:vin wiperStatus:wiperStatus];
-}
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.accPedalPosition = @(accelerationPedalPosition);
- self.airbagStatus = @(airbagStatus);
- self.beltStatus = @(beltStatus);
- self.bodyInformation = @(bodyInformation);
- self.cloudAppVehicleID = @(cloudAppVehicleID);
- self.clusterModeStatus = @(clusterModeStatus);
- self.deviceStatus = @(deviceStatus);
- self.driverBraking = @(driverBraking);
- self.eCallInfo = @(eCallInfo);
- self.electronicParkBrakeStatus = @(electronicParkBrakeStatus);
- self.emergencyEvent = @(emergencyEvent);
- self.engineOilLife = @(engineOilLife);
- self.engineTorque = @(engineTorque);
- self.externalTemperature = @(externalTemperature);
- self.fuelLevel = @(fuelLevel);
- self.fuelLevel_State = @(fuelLevelState);
- self.fuelRange = @(fuelRange);
- self.myKey = @(myKey);
- self.odometer = @(odometer);
- self.gps = @(gps);
- self.headLampStatus = @(headLampStatus);
- self.instantFuelConsumption = @(instantFuelConsumption);
- self.prndl = @(prndl);
- self.rpm = @(rpm);
- self.speed = @(speed);
- self.steeringWheelAngle = @(steeringWheelAngle);
- self.tirePressure = @(tirePressure);
- self.turnSignal = @(turnSignal);
- self.vin = @(vin);
- self.wiperStatus = @(wiperStatus);
-
- return self;
-}
-
-- (void)setGps:(nullable NSNumber<SDLBool> *)gps {
- [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
-}
-
-- (nullable NSNumber<SDLBool> *)gps {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSpeed:(nullable NSNumber<SDLBool> *)speed {
- [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
-}
-
-- (nullable NSNumber<SDLBool> *)speed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRpm:(nullable NSNumber<SDLBool> *)rpm {
- [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
-}
-
-- (nullable NSNumber<SDLBool> *)rpm {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel:(nullable NSNumber<SDLBool> *)fuelLevel {
- [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelLevel {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel_State:(nullable NSNumber<SDLBool> *)fuelLevel_State {
- [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelLevel_State {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelRange:(nullable NSNumber<SDLBool> *)fuelRange {
- [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelRange {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil];
-}
-
-- (void)setInstantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption {
- [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
-}
-
-- (nullable NSNumber<SDLBool> *)instantFuelConsumption {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
-}
-
-- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
- [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
-}
-
-- (nullable NSNumber<SDLBool> *)externalTemperature {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVin:(nullable NSNumber<SDLBool> *)vin {
- [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN];
-}
-
-- (nullable NSNumber<SDLBool> *)vin {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSNumber.class error:nil];
-}
-
-- (void)setPrndl:(nullable NSNumber<SDLBool> *)prndl {
- [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
-}
-
-- (nullable NSNumber<SDLBool> *)prndl {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTirePressure:(nullable NSNumber<SDLBool> *)tirePressure {
- [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
-}
-
-- (nullable NSNumber<SDLBool> *)tirePressure {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil];
-}
-
-- (void)setOdometer:(nullable NSNumber<SDLBool> *)odometer {
- [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
-}
-
-- (nullable NSNumber<SDLBool> *)odometer {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBeltStatus:(nullable NSNumber<SDLBool> *)beltStatus {
- [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)beltStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation {
- [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
-}
-
-- (nullable NSNumber<SDLBool> *)bodyInformation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDeviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus {
- [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)deviceStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDriverBraking:(nullable NSNumber<SDLBool> *)driverBraking {
- [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
-}
-
-- (nullable NSNumber<SDLBool> *)driverBraking {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil];
-}
-
-- (void)setWiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus {
- [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)wiperStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeadLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus {
- [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)headLampStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife {
- [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
-}
-
-- (nullable NSNumber<SDLBool> *)engineOilLife {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineTorque:(nullable NSNumber<SDLBool> *)engineTorque {
- [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
-}
-
-- (nullable NSNumber<SDLBool> *)engineTorque {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAccPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition {
- [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
-}
-
-- (nullable NSNumber<SDLBool> *)accPedalPosition {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSteeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle {
- [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
-}
-
-- (nullable NSNumber<SDLBool> *)steeringWheelAngle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
-}
-
-- (void)setECallInfo:(nullable NSNumber<SDLBool> *)eCallInfo {
- [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
-}
-
-- (nullable NSNumber<SDLBool> *)eCallInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAirbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus {
- [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)airbagStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEmergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent {
- [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
-}
-
-- (nullable NSNumber<SDLBool> *)emergencyEvent {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil];
-}
-
-- (void)setClusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus {
- [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)clusterModeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setMyKey:(nullable NSNumber<SDLBool> *)myKey {
- [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
-}
-
-- (nullable NSNumber<SDLBool> *)myKey {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil];
-}
-
-- (void)setElectronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
- [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTurnSignal:(nullable NSNumber<SDLBool> *)turnSignal {
- [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
-}
-
-- (nullable NSNumber<SDLBool> *)turnSignal {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
- [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
-}
-
-- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
-}
-
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
- [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
-}
-
-- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
- return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleDataResponse.h b/SmartDeviceLink/SDLGetVehicleDataResponse.h
deleted file mode 100644
index 7e727aebd..000000000
--- a/SmartDeviceLink/SDLGetVehicleDataResponse.h
+++ /dev/null
@@ -1,211 +0,0 @@
-// SDLGetVehicleDataResponse.h
-//
-
-#import "SDLRPCResponse.h"
-
-#import "SDLComponentVolumeStatus.h"
-#import "SDLElectronicParkBrakeStatus.h"
-#import "SDLPRNDL.h"
-#import "SDLTurnSignal.h"
-#import "SDLVehicleDataEventStatus.h"
-#import "SDLWiperStatus.h"
-
-@class SDLAirbagStatus;
-@class SDLBeltStatus;
-@class SDLBodyInformation;
-@class SDLClusterModeStatus;
-@class SDLDeviceStatus;
-@class SDLECallInfo;
-@class SDLEmergencyEvent;
-@class SDLFuelRange;
-@class SDLGPSData;
-@class SDLHeadLampStatus;
-@class SDLMyKey;
-@class SDLTireStatus;
-
-
-/**
- * Response to SDLGetVehicleData
- *
- * Since SmartDeviceLink 2.0
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLGetVehicleDataResponse : SDLRPCResponse
-
-/**
- The car current GPS coordinates
- */
-@property (nullable, strong, nonatomic) SDLGPSData *gps;
-
-/**
- The vehicle speed in kilometers per hour
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *speed;
-
-/**
- The number of revolutions per minute of the engine.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *rpm;
-
-/**
- The fuel level in the tank (percentage)
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *fuelLevel;
-
-/**
- The fuel level state
- */
-@property (nullable, strong, nonatomic) SDLComponentVolumeStatus fuelLevel_State;
-
-/**
- The estimate range in KM the vehicle can travel based on fuel level and consumption
-
- Optional, Array of length 0 - 100, of SDLFuelRange
- */
-@property (nullable, strong, nonatomic) NSArray<SDLFuelRange *> *fuelRange;
-
-/**
- The instantaneous fuel consumption in microlitres
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *instantFuelConsumption;
-
-/**
- The external temperature in degrees celsius.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature;
-
-/**
- The Vehicle Identification Number
- */
-@property (nullable, strong, nonatomic) NSString *vin;
-
-/**
- The current gear shift state of the user's vehicle
- */
-@property (nullable, strong, nonatomic) SDLPRNDL prndl;
-
-/**
- The current pressure warnings for the user's vehicle
- */
-@property (nullable, strong, nonatomic) SDLTireStatus *tirePressure;
-
-/**
- Odometer reading in km
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *odometer;
-
-/**
- The status of the seat belts
- */
-@property (nullable, strong, nonatomic) SDLBeltStatus *beltStatus;
-
-/**
- The body information including power modes
- */
-@property (nullable, strong, nonatomic) SDLBodyInformation *bodyInformation;
-
-/**
- The IVI system status including signal and battery strength
- */
-@property (nullable, strong, nonatomic) SDLDeviceStatus *deviceStatus;
-
-/**
- The status of the brake pedal
- */
-@property (nullable, strong, nonatomic) SDLVehicleDataEventStatus driverBraking;
-
-/**
- The status of the wipers
- */
-@property (nullable, strong, nonatomic) SDLWiperStatus wiperStatus;
-
-/**
- Status of the head lamps
- */
-@property (nullable, strong, nonatomic) SDLHeadLampStatus *headLampStatus;
-
-/**
- The estimated percentage (0% - 100%) of remaining oil life of the engine
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLFloat> *engineOilLife;
-
-/**
- Torque value for engine (in Nm) on non-diesel variants
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *engineTorque;
-
-/**
- Accelerator pedal position (percentage depressed)
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *accPedalPosition;
-
-/**
- Current angle of the steering wheel (in deg)
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *steeringWheelAngle;
-
-/**
- Emergency Call notification and confirmation data
- */
-@property (nullable, strong, nonatomic) SDLECallInfo *eCallInfo;
-
-/**
- The status of the air bags
- */
-@property (nullable, strong, nonatomic) SDLAirbagStatus *airbagStatus;
-
-/**
- Information related to an emergency event (and if it occurred)
- */
-@property (nullable, strong, nonatomic) SDLEmergencyEvent *emergencyEvent;
-
-/**
- The status modes of the cluster
- */
-@property (nullable, strong, nonatomic) SDLClusterModeStatus *clusterModeStatus;
-
-/**
- Information related to the MyKey feature
- */
-@property (nullable, strong, nonatomic) SDLMyKey *myKey;
-
-/**
- The status of the electronic parking brake
- */
-@property (nullable, strong, nonatomic) SDLElectronicParkBrakeStatus electronicParkBrakeStatus;
-
-/**
- The status of the turn signal
- */
-@property (nullable, strong, nonatomic) SDLTurnSignal turnSignal;
-
-/**
- The cloud app vehicle ID
- */
-@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
-
-/**
- Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @param vehicleDataState An object containing the OEM custom vehicle data item.
-
- Added in SmartDeviceLink 6.0
- */
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
-
-/**
- Gets the OEM custom vehicle data item for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @return An OEM custom vehicle data object for the given vehicle data name.
-
- Added in SmartDeviceLink 6.0
- */
-- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetVehicleDataResponse.m b/SmartDeviceLink/SDLGetVehicleDataResponse.m
deleted file mode 100644
index 25ddde3f4..000000000
--- a/SmartDeviceLink/SDLGetVehicleDataResponse.m
+++ /dev/null
@@ -1,286 +0,0 @@
-// SDLGetVehicleDataResponse.m
-//
-
-
-#import "SDLGetVehicleDataResponse.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLAirbagStatus.h"
-#import "SDLBeltStatus.h"
-#import "SDLBodyInformation.h"
-#import "SDLClusterModeStatus.h"
-#import "SDLDeviceStatus.h"
-#import "SDLECallInfo.h"
-#import "SDLEmergencyEvent.h"
-#import "SDLFuelRange.h"
-#import "SDLGPSData.h"
-#import "SDLHeadLampStatus.h"
-#import "SDLMyKey.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLTireStatus.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLGetVehicleDataResponse
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameGetVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (void)setGps:(nullable SDLGPSData *)gps {
- [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
-}
-
-- (nullable SDLGPSData *)gps {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil];
-}
-
-- (void)setSpeed:(nullable NSNumber<SDLFloat> *)speed {
- [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
-}
-
-- (nullable NSNumber<SDLFloat> *)speed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRpm:(nullable NSNumber<SDLInt> *)rpm {
- [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
-}
-
-- (nullable NSNumber<SDLInt> *)rpm {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel:(nullable NSNumber<SDLFloat> *)fuelLevel {
- [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
-}
-
-- (nullable NSNumber<SDLFloat> *)fuelLevel {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel_State:(nullable SDLComponentVolumeStatus)fuelLevel_State {
- [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
-}
-
-- (nullable SDLComponentVolumeStatus)fuelLevel_State {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil];
-}
-
-- (void)setInstantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption {
- [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
-}
-
-- (void)setFuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange {
- [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
-}
-
-- (nullable NSArray<SDLFuelRange *> *)fuelRange {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil];
-}
-
-- (nullable NSNumber<SDLFloat> *)instantFuelConsumption {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
-}
-
-- (void)setExternalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature {
- [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
-}
-
-- (nullable NSNumber<SDLFloat> *)externalTemperature {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVin:(nullable NSString *)vin {
- [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN];
-}
-
-- (nullable NSString *)vin {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil];
-}
-
-- (void)setPrndl:(nullable SDLPRNDL)prndl {
- [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
-}
-
-- (nullable SDLPRNDL)prndl {
- return [self.parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil];
-}
-
-- (void)setTirePressure:(nullable SDLTireStatus *)tirePressure {
- [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
-}
-
-- (nullable SDLTireStatus *)tirePressure {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil];
-}
-
-- (void)setOdometer:(nullable NSNumber<SDLInt> *)odometer {
- [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
-}
-
-- (nullable NSNumber<SDLInt> *)odometer {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBeltStatus:(nullable SDLBeltStatus *)beltStatus {
- [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
-}
-
-- (nullable SDLBeltStatus *)beltStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil];
-}
-
-- (void)setBodyInformation:(nullable SDLBodyInformation *)bodyInformation {
- [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
-}
-
-- (nullable SDLBodyInformation *)bodyInformation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil];
-}
-
-- (void)setDeviceStatus:(nullable SDLDeviceStatus *)deviceStatus {
- [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
-}
-
-- (nullable SDLDeviceStatus *)deviceStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil];
-}
-
-- (void)setDriverBraking:(nullable SDLVehicleDataEventStatus)driverBraking {
- [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
-}
-
-- (nullable SDLVehicleDataEventStatus)driverBraking {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil];
-}
-
-- (void)setWiperStatus:(nullable SDLWiperStatus)wiperStatus {
- [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
-}
-
-- (nullable SDLWiperStatus)wiperStatus {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil];
-}
-
-- (void)setHeadLampStatus:(nullable SDLHeadLampStatus *)headLampStatus {
- [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
-}
-
-- (nullable SDLHeadLampStatus *)headLampStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil];
-}
-
-- (void)setEngineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife {
- [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
-}
-
-- (nullable NSNumber<SDLFloat> *)engineOilLife {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineTorque:(nullable NSNumber<SDLFloat> *)engineTorque {
- [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
-}
-
-- (nullable NSNumber<SDLFloat> *)engineTorque {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAccPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition {
- [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
-}
-
-- (nullable NSNumber<SDLFloat> *)accPedalPosition {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSteeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle {
- [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
-}
-
-- (nullable NSNumber<SDLFloat> *)steeringWheelAngle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
-}
-
-- (void)setECallInfo:(nullable SDLECallInfo *)eCallInfo {
- [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
-}
-
-- (nullable SDLECallInfo *)eCallInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil];
-}
-
-- (void)setAirbagStatus:(nullable SDLAirbagStatus *)airbagStatus {
- [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
-}
-
-- (nullable SDLAirbagStatus *)airbagStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil];
-}
-
-- (void)setEmergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent {
- [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
-}
-
-- (nullable SDLEmergencyEvent *)emergencyEvent {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil];
-}
-
-- (void)setClusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus {
- [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
-}
-
-- (nullable SDLClusterModeStatus *)clusterModeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil];
-}
-
-- (void)setMyKey:(nullable SDLMyKey *)myKey {
- [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
-}
-
-- (nullable SDLMyKey *)myKey {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil];
-}
-
-- (void)setElectronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
- [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
-}
-
-- (nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil];
-}
-
-- (void)setTurnSignal:(nullable SDLTurnSignal)turnSignal {
- [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
-}
-
-- (nullable SDLTurnSignal)turnSignal {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil];
-}
-
-- (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID {
- [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
-}
-
-- (nullable NSString *)cloudAppVehicleID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil];
-}
-
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState {
- [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
-}
-
-- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
- return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGlobalProperty.h b/SmartDeviceLink/SDLGlobalProperty.h
deleted file mode 100644
index 9175288cb..000000000
--- a/SmartDeviceLink/SDLGlobalProperty.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// SDLGlobalProperty.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Properties of a user-initiated VR interaction (i.e. interactions started by the user pressing the PTT button). Used in RPCs related to ResetGlobalProperties
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLGlobalProperty SDL_SWIFT_ENUM;
-
-/**
- * The help prompt to be spoken if the user needs assistance during a user-initiated interaction.
- */
-extern SDLGlobalProperty const SDLGlobalPropertyHelpPrompt;
-
-/**
- * The prompt to be spoken if the user-initiated interaction times out waiting for the user's verbal input.
- */
-extern SDLGlobalProperty const SDLGlobalPropertyTimeoutPrompt;
-
-/**
- * The title of the menu displayed when the user requests help via voice recognition.
- */
-extern SDLGlobalProperty const SDLGlobalPropertyVoiceRecognitionHelpTitle;
-
-/**
- * Items of the menu displayed when the user requests help via voice recognition.
- */
-extern SDLGlobalProperty const SDLGlobalPropertyVoiceRecognitionHelpItems;
-
-/**
- * The name of the menu button displayed in templates
- */
-extern SDLGlobalProperty const SDLGlobalPropertyMenuName;
-
-/**
- * An icon on the menu button displayed in templates
- */
-extern SDLGlobalProperty const SDLGlobalPropertyMenuIcon;
-
-/**
- * Property related to the keyboard
- */
-extern SDLGlobalProperty const SDLGlobalPropertyKeyboard;
-
-/**
- * Location of the user's seat of setGlobalProperties
- */
-extern SDLGlobalProperty const SDLGlobalPropertyUserLocation;
diff --git a/SmartDeviceLink/SDLGlobals.h b/SmartDeviceLink/SDLGlobals.h
deleted file mode 100644
index 004a0e8d9..000000000
--- a/SmartDeviceLink/SDLGlobals.h
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// SDLGlobals.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 8/5/15.
-// Copyright (c) 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLProtocolConstants.h"
-
-@class SDLProtocolHeader;
-@class SDLVersion;
-
-NS_ASSUME_NONNULL_BEGIN
-
-#define SDL_SYSTEM_VERSION_LESS_THAN(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] == NSOrderedAscending)
-#define SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] != NSOrderedAscending)
-#define BLOCK_RETURN return
-
-extern NSString *const SDLMaxProxyProtocolVersion;
-extern NSString *const SDLMaxProxyRPCVersion;
-
-extern NSUInteger const SDLDefaultMTUSize;
-extern NSUInteger const SDLV1MTUSize;
-extern NSUInteger const SDLV3MTUSize;
-
-extern void *const SDLProcessingQueueName;
-extern void *const SDLConcurrentQueueName;
-
-@interface SDLGlobals : NSObject
-
-@property (copy, nonatomic, readonly) SDLVersion *protocolVersion;
-@property (strong, nonatomic) SDLVersion *rpcVersion;
-@property (copy, nonatomic) SDLVersion *maxHeadUnitProtocolVersion;
-
-@property (copy, nonatomic) dispatch_queue_t sdlProcessingQueue;
-@property (copy, nonatomic) dispatch_queue_t sdlConcurrentQueue;
-
-+ (instancetype)sharedGlobals;
-
-- (void)setDynamicMTUSize:(NSUInteger)maxMTUSize forServiceType:(SDLServiceType)serviceType;
-- (NSUInteger)mtuSizeForServiceType:(SDLServiceType)serviceType;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGlobals.m b/SmartDeviceLink/SDLGlobals.m
deleted file mode 100644
index dc78e7a56..000000000
--- a/SmartDeviceLink/SDLGlobals.m
+++ /dev/null
@@ -1,129 +0,0 @@
-//
-// SDLGlobals.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 8/5/15.
-// Copyright (c) 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLGlobals.h"
-
-#import "SDLLogMacros.h"
-#import "SDLProtocolHeader.h"
-#import "SDLVersion.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-// VERSION DEPENDENT CODE
-NSString *const SDLMaxProxyProtocolVersion = @"5.2.0";
-NSString *const SDLMaxProxyRPCVersion = @"6.0.0";
-
-NSUInteger const SDLDefaultMTUSize = UINT32_MAX;
-NSUInteger const SDLV1MTUSize = 1024;
-NSUInteger const SDLV3MTUSize = 131024;
-
-void *const SDLProcessingQueueName = "com.sdl.serialProcessing";
-void *const SDLConcurrentQueueName = "com.sdl.concurrentProcessing";
-
-typedef NSNumber *ServiceTypeBox;
-typedef NSNumber *MTUBox;
-
-
-@interface SDLGlobals ()
-
-@property (strong, nonatomic) NSMutableDictionary<ServiceTypeBox, MTUBox> *dynamicMTUDict;
-@property (copy, nonatomic, readwrite) SDLVersion *protocolVersion;
-
-@end
-
-
-@implementation SDLGlobals
-
-+ (instancetype)sharedGlobals {
- static SDLGlobals *sharedGlobals = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedGlobals = [[SDLGlobals alloc] init];
- });
-
- return sharedGlobals;
-}
-
-- (instancetype)init {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _protocolVersion = [[SDLVersion alloc] initWithString:@"1.0.0"];
- _maxHeadUnitProtocolVersion = [[SDLVersion alloc] initWithString:@"0.0.0"];
- _rpcVersion = [[SDLVersion alloc] initWithString:@"1.0.0"];
- _dynamicMTUDict = [NSMutableDictionary dictionary];
-
- dispatch_queue_attr_t qosSerial = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, 0);
- dispatch_queue_attr_t qosConcurrent = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INITIATED, 0);
-
- _sdlProcessingQueue = dispatch_queue_create(SDLProcessingQueueName, qosSerial);
- dispatch_queue_set_specific(_sdlProcessingQueue, SDLProcessingQueueName, SDLProcessingQueueName, NULL);
- _sdlConcurrentQueue = dispatch_queue_create(SDLConcurrentQueueName, qosConcurrent);
- dispatch_queue_set_specific(_sdlConcurrentQueue, SDLConcurrentQueueName, SDLConcurrentQueueName, NULL);
-
- return self;
-}
-
-
-#pragma mark - Custom Getters / Setters
-
-- (void)setMaxHeadUnitProtocolVersion:(SDLVersion *)maxHeadUnitVersion {
- SDLVersion *maxProxyProtocolVersion = [SDLVersion versionWithString:SDLMaxProxyProtocolVersion];
- self.protocolVersion = [maxHeadUnitVersion isGreaterThanVersion:maxProxyProtocolVersion] ? maxProxyProtocolVersion : maxHeadUnitVersion;
-
- _maxHeadUnitProtocolVersion = maxHeadUnitVersion;
-}
-
-- (void)setDynamicMTUSize:(NSUInteger)maxMTUSize forServiceType:(SDLServiceType)serviceType {
- SDLLogV(@"Setting dynamic MTU size: %lu for service %u", (unsigned long)maxMTUSize, serviceType);
- self.dynamicMTUDict[@(serviceType)] = @(maxMTUSize);
-}
-
-- (NSUInteger)mtuSizeForServiceType:(SDLServiceType)serviceType {
- if (self.dynamicMTUDict[@(serviceType)] != nil) {
- return self.dynamicMTUDict[@(serviceType)].unsignedIntegerValue;
- } else if (self.dynamicMTUDict[@(SDLServiceTypeRPC)]) {
- return self.dynamicMTUDict[@(SDLServiceTypeRPC)].unsignedIntegerValue;
- } else {
- return [self sdl_defaultMaxMTUSize];
- }
-}
-
-
-#pragma mark - Helpers
-
-- (NSUInteger)sdl_defaultMaxMTUSize {
- // VERSION DEPENDENT CODE
- switch (self.protocolVersion.major) {
- case 1: // fallthrough
- case 2: {
- // HAX: This was set to 1024 at some point, for an unknown reason. We can't change it because of backward compatibility & validation concerns. The actual MTU for v1/2 is 1500 bytes.
- return SDLV1MTUSize;
- } break;
- case 3: // fallthrough
- case 4: // fallthrough
- case 5: {
- // If the head unit isn't running v3/4, but that's the connection scheme we're using, then we have to know that they could be running an MTU that's not 128k, so we default back to the v1/2 MTU for safety.
- if ([self.maxHeadUnitProtocolVersion isGreaterThanVersion:[SDLVersion versionWithString:SDLMaxProxyProtocolVersion]]) {
- return SDLV1MTUSize;
- } else {
- return SDLV3MTUSize;
- }
- } break;
- default: {
- NSAssert(NO, @"Unknown MTU size for protocol version: %@", self.protocolVersion);
- return 0;
- }
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLH264VideoEncoder.h b/SmartDeviceLink/SDLH264VideoEncoder.h
deleted file mode 100644
index 58bde0508..000000000
--- a/SmartDeviceLink/SDLH264VideoEncoder.h
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// SDLH264VideoEncoder
-// SmartDeviceLink-iOS
-//
-// Created by Muller, Alexander (A.) on 12/5/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <VideoToolbox/VideoToolbox.h>
-
-#import "SDLMacros.h"
-#import "SDLVideoStreamingProtocol.h"
-#import "SDLVideoEncoderDelegate.h"
-
-@protocol SDLH264Packetizer;
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NS_ENUM(NSInteger, SDLVideoEncoderError) {
- SDLVideoEncoderErrorConfigurationCompressionSessionCreationFailure = 0,
- SDLVideoEncoderErrorConfigurationAllocationFailure = 1,
- SDLVideoEncoderErrorConfigurationCompressionSessionSetPropertyFailure = 2,
- SDLVideoEncoderErrorProtocolUnknown = 3
-};
-
-extern NSString *const SDLErrorDomainVideoEncoder;
-
-
-@interface SDLH264VideoEncoder : NSObject
-
-@property (nonatomic, weak, nullable) id<SDLVideoEncoderDelegate> delegate;
-
-/**
- * The settings used in a VTCompressionSessionRef encoder. These will be verified when the video stream is started. Acceptable properties for this are located in VTCompressionProperties.
- *
- */
-@property (strong, nonatomic, readonly) NSDictionary<NSString *, id> *videoEncoderSettings;
-
-@property (strong, nonatomic) id<SDLH264Packetizer> packetizer;
-
-/**
- * Provides default video encoder settings used.
- */
-#if SDL_SUPPORTS_CLASS_PROPERTIES
-@property (class, strong, nonatomic, readonly) NSDictionary<NSString *, id> *defaultVideoEncoderSettings;
-#else
-+ (NSDictionary<NSString *, id>*)defaultVideoEncoderSettings;
-#endif
-
-/**
- * The pixel buffer pool reference returned back from an active VTCompressionSessionRef encoder.
- *
- * @warning This will only return a valid pixel buffer pool after the encoder has been initialized (when the video session has started).
- * @discussion Clients may call this once and retain the resulting pool, this call is cheap enough that it's OK to call it once per frame.
- */
-@property (assign, nonatomic, readonly) CVPixelBufferPoolRef CV_NULLABLE pixelBufferPool;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-- (instancetype)initWithProtocol:(SDLVideoStreamingProtocol)protocol dimensions:(CGSize)dimensions ssrc:(UInt32)ssrc properties:(NSDictionary<NSString *, id> *)properties delegate:(id<SDLVideoEncoderDelegate> __nullable)delegate error:(NSError **)error NS_DESIGNATED_INITIALIZER;
-
-- (void)stop;
-
-- (BOOL)encodeFrame:(CVImageBufferRef)imageBuffer;
-
-- (BOOL)encodeFrame:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp;
-
-/**
- * Creates a new pixel buffer using the pixelBufferPool property.
- */
-- (CVPixelBufferRef CV_NULLABLE)newPixelBuffer;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLHMICapabilities.h b/SmartDeviceLink/SDLHMICapabilities.h
deleted file mode 100644
index 84a2eecf7..000000000
--- a/SmartDeviceLink/SDLHMICapabilities.h
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// SDLHMICapabilities.h
-// SmartDeviceLink-iOS
-
-#import "SDLRPCStruct.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Contains information about the HMI capabilities.
-
- Since SDL 3.0
-**/
-@interface SDLHMICapabilities : SDLRPCStruct
-
-/**
- Availability of built in Nav. True: Available, False: Not Available
-
- Boolean value. Optional.
-
- Since SDL 3.0
- */
-@property (nullable, copy, nonatomic) NSNumber<SDLBool> *navigation;
-
-/**
- Availability of built in phone. True: Available, False: Not Available
-
- Boolean value. Optional.
-
- Since SDL 3.0
- */
-@property (nullable, copy, nonatomic) NSNumber<SDLBool> *phoneCall;
-
-/**
- Availability of built in video streaming. True: Available, False: Not Available
-
- Boolean value. Optional.
-
- Since SDL 4.5
- */
-@property (nullable, copy, nonatomic) NSNumber<SDLBool> *videoStreaming;
-
-/**
- Availability of built in remote control. True: Available, False: Not Available
-
- Boolean value. Optional.
-
- Since SDL 4.5
-**/
-@property (nullable, copy, nonatomic) NSNumber<SDLBool> *remoteControl;
-
-/**
- Availability of app services. True: Available, False: Not Available
-
- App services is supported since SDL 5.1. If your connection is 5.1+, you can assume that app services is available even though between v5.1 and v6.0 this parameter is `nil`.
-
- Boolean value. Optional.
-
- Since SDL 6.0
-**/
-@property (nullable, copy, nonatomic) NSNumber<SDLBool> *appServices;
-
-/**
- Availability of displays. True: Available, False: Not Available
-
- Boolean value. Optional.
-
- Since SDL 6.0
-**/
-@property (nullable, copy, nonatomic) NSNumber<SDLBool> *displays;
-
-/**
- Availability of seatLocation. True: Available, False: Not Available
-
- Boolean value. Optional.
-
- Since SDL 6.0
- **/
-@property (nullable, copy, nonatomic) NSNumber<SDLBool> *seatLocation;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLHMICapabilities.m b/SmartDeviceLink/SDLHMICapabilities.m
deleted file mode 100644
index fd0104e5e..000000000
--- a/SmartDeviceLink/SDLHMICapabilities.m
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// SDLHMICapabilities.m
-// SmartDeviceLink-iOS
-
-#import "SDLHMICapabilities.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLHMICapabilities
-
-- (void)setNavigation:(nullable NSNumber<SDLBool> *)navigation {
- [self.store sdl_setObject:navigation forName:SDLRPCParameterNameNavigation];
-}
-
-- (nullable NSNumber<SDLBool> *)navigation {
- return [self.store sdl_objectForName:SDLRPCParameterNameNavigation ofClass:NSNumber.class error:nil];
-}
-
-- (void)setPhoneCall:(nullable NSNumber<SDLBool> *)phoneCall {
- [self.store sdl_setObject:phoneCall forName:SDLRPCParameterNamePhoneCall];
-}
-
-- (nullable NSNumber<SDLBool> *)phoneCall {
- return [self.store sdl_objectForName:SDLRPCParameterNamePhoneCall ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVideoStreaming:(nullable NSNumber<SDLBool> *)videoStreaming {
- [self.store sdl_setObject:videoStreaming forName:SDLRPCParameterNameVideoStreaming];
-}
-
-- (nullable NSNumber<SDLBool> *)videoStreaming {
- return [self.store sdl_objectForName:SDLRPCParameterNameVideoStreaming ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRemoteControl:(nullable NSNumber<SDLBool> *)remoteControl {
- [self.store sdl_setObject:remoteControl forName:SDLRPCParameterNameRemoteControl];
-}
-
-- (nullable NSNumber<SDLBool> *)remoteControl {
- return [self.store sdl_objectForName:SDLRPCParameterNameRemoteControl ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAppServices:(nullable NSNumber<SDLBool> *)appServices {
- [self.store sdl_setObject:appServices forName:SDLRPCParameterNameAppServices];
-}
-
-- (nullable NSNumber<SDLBool> *)appServices {
- return [self.store sdl_objectForName:SDLRPCParameterNameAppServices ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDisplays:(nullable NSNumber<SDLBool> *)displays {
- [self.store sdl_setObject:displays forName:SDLRPCParameterNameDisplays];
-}
-
-- (nullable NSNumber<SDLBool> *)displays {
- return [self.store sdl_objectForName:SDLRPCParameterNameDisplays ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSeatLocation:(nullable NSNumber<SDLBool> *)seatLocation {
- [self.store sdl_setObject:seatLocation forName:SDLRPCParameterNameSeatLocation];
-}
-
-- (nullable NSNumber<SDLBool> *)seatLocation {
- return [self.store sdl_objectForName:SDLRPCParameterNameSeatLocation ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLHMILevel.h b/SmartDeviceLink/SDLHMILevel.h
deleted file mode 100644
index ff457519c..000000000
--- a/SmartDeviceLink/SDLHMILevel.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// SDLHMILevel.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Specifies current level of the HMI. An HMI level indicates the degree of user interaction possible through the HMI (e.g. TTS only, display only, VR, etc.). The HMI level varies for an application based on the type of display (i.e. Nav or non-Nav) and the user directing "focus" to other applications (e.g. phone, other mobile applications, etc.). Used in OnHMIStatus
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLHMILevel SDL_SWIFT_ENUM;
-
-/**
- * The application has full use of the SDL HMI. The app may output via TTS, display, or streaming audio and may gather input via VR, Menu, and button presses
- */
-extern SDLHMILevel const SDLHMILevelFull;
-
-/**
- * This HMI Level is only defined for a media application using an HMI with an 8 inch touchscreen (Nav) system. The application's Show text is displayed and it receives button presses from media-oriented buttons (SEEKRIGHT, SEEKLEFT, TUNEUP, TUNEDOWN, PRESET_0-9)
- */
-extern SDLHMILevel const SDLHMILevelLimited;
-
-/**
- * App cannot interact with user via TTS, VR, Display or Button Presses. App can perform the following operations:
- *
- * AddCommand, DeleteCommand, AddSubMenu, DeleteSubMenu, CreateInteractionChoiceSet, DeleteInteractionChoiceSet, SubscribeButton, UnsubscribeButton, Show, UnregisterAppInterface, ResetGlobalProperties, SetGlobalProperties
- */
-extern SDLHMILevel const SDLHMILevelBackground;
-
-/**
- * Application has been discovered by SDL, but it cannot send any requests or receive any notifications
- *
- * An HMILevel of NONE can also mean that the user has exited the application by saying "exit appname" or selecting "exit" from the application's menu. When this happens, the application still has an active interface registration with SDL and all SDL resources the application has created (e.g. Choice Sets, subscriptions, etc.) still exist. But while the HMILevel is NONE, the application cannot send any messages to SYNC, except UnregisterAppInterface
- */
-extern SDLHMILevel const SDLHMILevelNone;
diff --git a/SmartDeviceLink/SDLHMISettingsControlCapabilities.h b/SmartDeviceLink/SDLHMISettingsControlCapabilities.h
deleted file mode 100644
index b79ec606b..000000000
--- a/SmartDeviceLink/SDLHMISettingsControlCapabilities.h
+++ /dev/null
@@ -1,96 +0,0 @@
-// SDLHMISettingsControlCapabilities.h
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLModuleInfo.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// HMI data struct for HMI control settings
-///
-/// @since 5.0
-@interface SDLHMISettingsControlCapabilities : SDLRPCStruct
-
-/**
- Constructs a newly allocated SDLHMISettingsControlCapabilities object with moduleName
-
- @param moduleName The short friendly name of the hmi setting module
-
- @return An instance of the SDLHMISettingsControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName __deprecated_msg("Use initWithModuleName:moduleInfo:");
-
-/**
- Constructs a newly allocated SDLHMISettingsControlCapabilities object with moduleName
-
- @param moduleName The short friendly name of the hmi setting module
- @param moduleInfo Information about a RC module, including its id.
-
- @return An instance of the SDLHMISettingsControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo;
-
-/**
- Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters
-
- @param moduleName The short friendly name of the hmi setting module
- @param distanceUnitAvailable Availability of the control of distance unit.
- @param temperatureUnitAvailable Availability of the control of temperature unit.
- @param displayModeUnitAvailable Availability of the control of displayMode unit.
-
- @return An instance of the SDLHMISettingsControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName distanceUnitAvailable:(BOOL)distanceUnitAvailable temperatureUnitAvailable:(BOOL)temperatureUnitAvailable displayModeUnitAvailable:(BOOL)displayModeUnitAvailable __deprecated_msg("Use initWithModuleName:moduleInfo:distanceUnitAvailable:distanceUnitAvailable:temperatureUnitAvailable:displayModeUnitAvailable:");
-
-/**
- Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters
-
- @param moduleName The short friendly name of the hmi setting module.
- @param moduleInfo Information about a RC module, including its id.
- @param distanceUnitAvailable Availability of the control of distance unit.
- @param temperatureUnitAvailable Availability of the control of temperature unit.
- @param displayModeUnitAvailable Availability of the control of displayMode unit.
-
- @return An instance of the SDLHMISettingsControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo distanceUnitAvailable:(BOOL)distanceUnitAvailable temperatureUnitAvailable:(BOOL)temperatureUnitAvailable displayModeUnitAvailable:(BOOL)displayModeUnitAvailable;
-
-/**
- * @abstract The short friendly name of the hmi setting module.
- * It should not be used to identify a module by mobile application.
- *
- * Required, Max String length 100 chars
- */
-@property (strong, nonatomic) NSString *moduleName;
-
-/**
- * @abstract Availability of the control of distance unit.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *distanceUnitAvailable;
-
-/**
- * @abstract Availability of the control of temperature unit.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *temperatureUnitAvailable;
-
-/**
- * @abstract Availability of the control of HMI display mode.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *displayModeUnitAvailable;
-
-/**
- * Information about a RC module, including its id.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLHMISettingsControlCapabilities.m b/SmartDeviceLink/SDLHMISettingsControlCapabilities.m
deleted file mode 100644
index d7dab5f6f..000000000
--- a/SmartDeviceLink/SDLHMISettingsControlCapabilities.m
+++ /dev/null
@@ -1,104 +0,0 @@
-// SDLHMISettingsControlCapabilities.m
-//
-
-#import "SDLHMISettingsControlCapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLHMISettingsControlCapabilities
-
-- (instancetype)initWithModuleName:(NSString *)moduleName {
- self = [self init];
- if(!self) {
- return nil;
- }
- self.moduleName = moduleName;
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo {
- self = [self init];
- if(!self) {
- return nil;
- }
- self.moduleName = moduleName;
- self.moduleInfo = moduleInfo;
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName distanceUnitAvailable:(BOOL)distanceUnitAvailable temperatureUnitAvailable:(BOOL)temperatureUnitAvailable displayModeUnitAvailable:(BOOL)displayModeUnitAvailable {
- self = [self init];
- if(!self) {
- return nil;
- }
- self.moduleName = moduleName;
- self.distanceUnitAvailable = @(distanceUnitAvailable);
- self.temperatureUnitAvailable = @(temperatureUnitAvailable);
- self.displayModeUnitAvailable = @(displayModeUnitAvailable);
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo distanceUnitAvailable:(BOOL)distanceUnitAvailable temperatureUnitAvailable:(BOOL)temperatureUnitAvailable displayModeUnitAvailable:(BOOL)displayModeUnitAvailable {
- self = [self init];
- if(!self) {
- return nil;
- }
- self.moduleName = moduleName;
- self.moduleInfo = moduleInfo;
- self.distanceUnitAvailable = @(distanceUnitAvailable);
- self.temperatureUnitAvailable = @(temperatureUnitAvailable);
- self.displayModeUnitAvailable = @(displayModeUnitAvailable);
-
- return self;
-}
-
-- (void)setModuleName:(NSString *)moduleName {
- [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
-}
-
-- (NSString *)moduleName {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
-}
-
-
-- (void)setDistanceUnitAvailable:(nullable NSNumber<SDLBool> *)distanceUnitAvailable {
- [self.store sdl_setObject:distanceUnitAvailable forName:SDLRPCParameterNameDistanceUnitAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)distanceUnitAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameDistanceUnitAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTemperatureUnitAvailable:(nullable NSNumber<SDLBool> *)temperatureUnitAvailable {
- [self.store sdl_setObject:temperatureUnitAvailable forName:SDLRPCParameterNameTemperatureUnitAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)temperatureUnitAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameTemperatureUnitAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDisplayModeUnitAvailable:(nullable NSNumber<SDLBool> *)displayModeUnitAvailable {
- [self.store sdl_setObject:displayModeUnitAvailable forName:SDLRPCParameterNameDisplayModeUnitAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)displayModeUnitAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameDisplayModeUnitAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
- [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
-}
-
-- (nullable SDLModuleInfo *)moduleInfo {
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLHMIZoneCapabilities.h b/SmartDeviceLink/SDLHMIZoneCapabilities.h
deleted file mode 100644
index b4b023fa0..000000000
--- a/SmartDeviceLink/SDLHMIZoneCapabilities.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// SDLHmiZoneCapabilities.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Specifies HMI Zones in the vehicle. Used in RegisterAppInterfaceResponse
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLHMIZoneCapabilities SDL_SWIFT_ENUM;
-
-/**
- * Indicates HMI available for front seat passengers.
- */
-extern SDLHMIZoneCapabilities const SDLHMIZoneCapabilitiesFront;
-
-/**
- * Indicates HMI available for rear seat passengers.
- */
-extern SDLHMIZoneCapabilities const SDLHMIZoneCapabilitiesBack;
diff --git a/SmartDeviceLink/SDLHybridAppPreference.h b/SmartDeviceLink/SDLHybridAppPreference.h
deleted file mode 100644
index 171edba2c..000000000
--- a/SmartDeviceLink/SDLHybridAppPreference.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// SDLHybridAppPreference.h
-// SmartDeviceLink
-//
-// Created by Nicole on 2/26/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration for the user's preference of which app type to use when both are available.
- */
-typedef SDLEnum SDLHybridAppPreference SDL_SWIFT_ENUM;
-
-/**
- * App preference of mobile.
- */
-extern SDLHybridAppPreference const SDLHybridAppPreferenceMobile;
-
-/**
- * App preference of cloud.
- */
-extern SDLHybridAppPreference const SDLHybridAppPreferenceCloud;
-
-/**
- * App preference of both. Allows both the mobile and the cloud versions of the app to attempt to connect at the same time, however the first app that is registered is the one that is allowed to stay registered.
- */
-extern SDLHybridAppPreference const SDLHybridAppPreferenceBoth;
diff --git a/SmartDeviceLink/SDLIgnitionStableStatus.h b/SmartDeviceLink/SDLIgnitionStableStatus.h
deleted file mode 100644
index 4dc750eca..000000000
--- a/SmartDeviceLink/SDLIgnitionStableStatus.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLIgnitionStableStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the ignition switch stability. Used in BodyInformation
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLIgnitionStableStatus SDL_SWIFT_ENUM;
-
-/**
- * The current ignition switch status is considered not to be stable.
- */
-extern SDLIgnitionStableStatus const SDLIgnitionStableStatusNotStable;
-
-/**
- * The current ignition switch status is considered to be stable.
- */
-extern SDLIgnitionStableStatus const SDLIgnitionStableStatusStable;
-
-/**
- * The current ignition switch status is considered to be missing from the transmitter
- */
-extern SDLIgnitionStableStatus const SDLIgnitionStableStatusMissingFromTransmitter;
diff --git a/SmartDeviceLink/SDLIgnitionStatus.h b/SmartDeviceLink/SDLIgnitionStatus.h
deleted file mode 100644
index 519031218..000000000
--- a/SmartDeviceLink/SDLIgnitionStatus.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// SDLIgnitionStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of ignition. Used in BodyInformation.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLIgnitionStatus SDL_SWIFT_ENUM;
-
-/**
- * Ignition status currently unknown
- */
-extern SDLIgnitionStatus const SDLIgnitionStatusUnknown;
-
-/**
- * Ignition is off
- */
-extern SDLIgnitionStatus const SDLIgnitionStatusOff;
-
-/**
- * Ignition is in mode accessory
- */
-extern SDLIgnitionStatus const SDLIgnitionStatusAccessory;
-
-/**
- * Ignition is in mode run
- */
-extern SDLIgnitionStatus const SDLIgnitionStatusRun;
-
-/**
- * Ignition is in mode start
- */
-extern SDLIgnitionStatus const SDLIgnitionStatusStart;
-
-/**
- * Signal is invalid
- */
-extern SDLIgnitionStatus const SDLIgnitionStatusInvalid;
diff --git a/SmartDeviceLink/SDLImage.h b/SmartDeviceLink/SDLImage.h
deleted file mode 100644
index 83a05b664..000000000
--- a/SmartDeviceLink/SDLImage.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// SDLImage.h
-//
-
-#import "SDLRPCMessage.h"
-
-#import "SDLImageType.h"
-#import "SDLStaticIconName.h"
-
-/**
- * Specifies which image shall be used e.g. in SDLAlerts or on SDLSoftbuttons provided the display supports it.
- *
- * @since SDL 2.0
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLImage : SDLRPCStruct
-
-/**
- * Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.
- *
- * @param name The unique name used to upload the image to SDL Core
- * @param imageType Describes whether the image is static or dynamic
- * @return A SDLImage object
- */
-- (instancetype)initWithName:(NSString *)name ofType:(SDLImageType)imageType __deprecated_msg("Use initWithName:ofType:isTemplate: instead");
-
-/**
- * Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.
- *
- * @param name The unique name used to upload the image to SDL Core
- * @param imageType Describes whether the image is static or dynamic
- * @param isTemplate Whether or not the image is a template that can be (re)colored by the SDL HMI. Static images are templates by default.
- * @return A SDLImage object
- */
-- (instancetype)initWithName:(NSString *)name ofType:(SDLImageType)imageType isTemplate:(BOOL)isTemplate;
-
-/**
- * Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.
- *
- * @param name The unique name used to upload the image to SDL Core
- * @return A SDLImage object
- */
-- (instancetype)initWithName:(NSString *)name __deprecated_msg("Use initWithName:isTemplate: instead");
-
-/**
- * Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.
- *
- * @param name The unique name used to upload the image to SDL Core
- * @param isTemplate Whether or not the image is a template that can be (re)colored by the SDL HMI
- * @return A SDLImage object
- */
-- (instancetype)initWithName:(NSString *)name isTemplate:(BOOL)isTemplate;
-
-/**
- * Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image's value.
- *
- * @param staticImageValue The image value assigned to the static image
- * @return A SDLImage object
- */
-- (instancetype)initWithStaticImageValue:(UInt16)staticImageValue;
-
-/**
- * Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image's value.
- *
- * @param staticIconName A SDLStaticIconName value
- * @return A SDLImage object
- */
-- (instancetype)initWithStaticIconName:(SDLStaticIconName)staticIconName;
-
-/**
- * The static hex icon value or the binary image file name identifier (sent by SDLPutFile)
- *
- * Required, max length = 65535
- */
-@property (strong, nonatomic) NSString *value;
-
-/**
- * Describes whether the image is static or dynamic
- *
- * Required
- */
-@property (strong, nonatomic) SDLImageType imageType;
-
-/**
- * Indicates that this image can be (re)colored by the HMI to best fit the current color scheme.
- */
-@property (assign, nonatomic) NSNumber<SDLBool> *isTemplate;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLImage.m b/SmartDeviceLink/SDLImage.m
deleted file mode 100644
index 740cb4584..000000000
--- a/SmartDeviceLink/SDLImage.m
+++ /dev/null
@@ -1,87 +0,0 @@
-// SDLImage.m
-//
-
-#import "SDLImage.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLImage
-
-- (instancetype)initWithName:(NSString *)name ofType:(SDLImageType)imageType {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.value = name;
- self.imageType = imageType;
- self.isTemplate = @NO;
-
- return self;
-}
-
-- (instancetype)initWithName:(NSString *)name ofType:(SDLImageType)imageType isTemplate:(BOOL)isTemplate {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.value = name;
- self.imageType = imageType;
- self.isTemplate = @(isTemplate);
-
- return self;
-}
-
-- (instancetype)initWithName:(NSString *)name {
- return [self initWithName:name ofType:SDLImageTypeDynamic];
-}
-
-- (instancetype)initWithName:(NSString *)name isTemplate:(BOOL)isTemplate {
- return [self initWithName:name ofType:SDLImageTypeDynamic isTemplate:isTemplate];
-}
-
-- (instancetype)initWithStaticImageValue:(UInt16)staticImageValue {
- NSString *value = [NSString stringWithFormat:@"%hu", staticImageValue];
- // All static images are templated by default
- return [self initWithName:value ofType:SDLImageTypeStatic isTemplate:YES];
-}
-
-- (instancetype)initWithStaticIconName:(SDLStaticIconName)staticIconName {
- return [self initWithName:staticIconName ofType:SDLImageTypeStatic isTemplate:YES];
-}
-
-#pragma mark - Getters / Setters
-
-- (void)setValue:(NSString *)value {
- [self.store sdl_setObject:value forName:SDLRPCParameterNameValue];
-}
-
-- (NSString *)value {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameValue ofClass:NSString.class error:&error];
-}
-
-- (void)setImageType:(SDLImageType)imageType {
- [self.store sdl_setObject:imageType forName:SDLRPCParameterNameImageType];
-}
-
-- (SDLImageType)imageType {
- return [self.store sdl_enumForName:SDLRPCParameterNameImageType error:nil];
-}
-
-- (void)setIsTemplate:(NSNumber<SDLBool> *)isTemplate {
- [self.store sdl_setObject:isTemplate forName:SDLRPCParameterNameImageTemplate];
-}
-
-- (NSNumber<SDLBool> *)isTemplate {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameImageTemplate ofClass:NSNumber.class error:&error];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLImageFieldName.h b/SmartDeviceLink/SDLImageFieldName.h
deleted file mode 100644
index cd3e101c9..000000000
--- a/SmartDeviceLink/SDLImageFieldName.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// SDLImageFieldName.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- The name that identifies the filed. Used in DisplayCapabilities.
-
- @since SmartDeviceLink 3.0
- */
-typedef SDLEnum SDLImageFieldName SDL_SWIFT_ENUM;
-
-/**
- The image field for Alert
- */
-extern SDLImageFieldName const SDLImageFieldNameAlertIcon;
-
-/**
- The image field for SoftButton
- */
-extern SDLImageFieldName const SDLImageFieldNameSoftButtonImage;
-
-/**
- The first image field for Choice.
- */
-extern SDLImageFieldName const SDLImageFieldNameChoiceImage;
-
-/**
- The scondary image field for Choice.
- */
-extern SDLImageFieldName const SDLImageFieldNameChoiceSecondaryImage;
-
-/**
- The image field for vrHelpItem.
- */
-extern SDLImageFieldName const SDLImageFieldNameVoiceRecognitionHelpItem;
-
-/**
- The image field for Turn.
- */
-extern SDLImageFieldName const SDLImageFieldNameTurnIcon;
-
-/**
- The image field for the menu icon in SetGlobalProperties.
- */
-extern SDLImageFieldName const SDLImageFieldNameMenuIcon;
-
-/** The image field for AddCommand.
- *
- */
-extern SDLImageFieldName const SDLImageFieldNameCommandIcon;
-
-/**
- The image field for the app icon (set by setAppIcon).
- */
-extern SDLImageFieldName const SDLImageFieldNameAppIcon;
-
-/** The primary image field for Show.
- *
- */
-extern SDLImageFieldName const SDLImageFieldNameGraphic;
-
-/** The secondary image field for Show.
- *
- */
-extern SDLImageFieldName const SDLImageFieldNameSecondaryGraphic;
-
-/** The primary image field for ShowConstant TBT.
- *
- */
-extern SDLImageFieldName const SDLImageFieldNameShowConstantTBTIcon;
-
-/**
- The secondary image field for ShowConstant TBT.
- */
-extern SDLImageFieldName const SDLImageFieldNameShowConstantTBTNextTurnIcon;
-
-/**
- The optional image of a destination / location
-
- @since SDL 4.0
- */
-extern SDLImageFieldName const SDLImageFieldNameLocationImage;
diff --git a/SmartDeviceLink/SDLImageFieldName.m b/SmartDeviceLink/SDLImageFieldName.m
deleted file mode 100644
index 0282f25b6..000000000
--- a/SmartDeviceLink/SDLImageFieldName.m
+++ /dev/null
@@ -1,20 +0,0 @@
-// SDLImageFieldName.m
-//
-
-
-#import "SDLImageFieldName.h"
-
-SDLImageFieldName const SDLImageFieldNameAlertIcon = @"alertIcon";
-SDLImageFieldName const SDLImageFieldNameSoftButtonImage = @"softButtonImage";
-SDLImageFieldName const SDLImageFieldNameChoiceImage = @"choiceImage";
-SDLImageFieldName const SDLImageFieldNameChoiceSecondaryImage = @"choiceSecondaryImage";
-SDLImageFieldName const SDLImageFieldNameVoiceRecognitionHelpItem = @"vrHelpItem";
-SDLImageFieldName const SDLImageFieldNameTurnIcon = @"turnIcon";
-SDLImageFieldName const SDLImageFieldNameMenuIcon = @"menuIcon";
-SDLImageFieldName const SDLImageFieldNameCommandIcon = @"cmdIcon";
-SDLImageFieldName const SDLImageFieldNameAppIcon = @"appIcon";
-SDLImageFieldName const SDLImageFieldNameGraphic = @"graphic";
-SDLImageFieldName const SDLImageFieldNameSecondaryGraphic = @"secondaryGraphic";
-SDLImageFieldName const SDLImageFieldNameShowConstantTBTIcon = @"showConstantTBTIcon";
-SDLImageFieldName const SDLImageFieldNameShowConstantTBTNextTurnIcon = @"showConstantTBTNextTurnIcon";
-SDLImageFieldName const SDLImageFieldNameLocationImage = @"locationImage";
diff --git a/SmartDeviceLink/SDLImageType.h b/SmartDeviceLink/SDLImageType.h
deleted file mode 100644
index f06245ed3..000000000
--- a/SmartDeviceLink/SDLImageType.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// SDLImageType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Contains information about the type of image. Used in Image.
-
- @since SDL 2.0
- */
-typedef SDLEnum SDLImageType SDL_SWIFT_ENUM;
-
-/**
- Activate an icon that shipped with the IVI system by passing a hex value.
- */
-extern SDLImageType const SDLImageTypeStatic;
-
-/**
- An icon referencing an image uploaded by the app (identifier to be sent by SDLPutFile)
-
- @see SDLPutFile
- */
-extern SDLImageType const SDLImageTypeDynamic;
diff --git a/SmartDeviceLink/SDLInteractionMode.h b/SmartDeviceLink/SDLInteractionMode.h
deleted file mode 100644
index f0ff203a0..000000000
--- a/SmartDeviceLink/SDLInteractionMode.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// SDLInteractionMode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- For application-initiated interactions (SDLPerformInteraction), this specifies the mode by which the user is prompted and by which the user's selection is indicated. Used in PerformInteraction.
-
- @since SDL 1.0
- */
-typedef SDLEnum SDLInteractionMode SDL_SWIFT_ENUM;
-
-/**
- Interaction Mode : Manual Only
-
- This mode causes the interaction to occur only on the display, meaning the choices are presented and selected only via the display. Selections are viewed with the SEEKRIGHT, SEEKLEFT, TUNEUP, TUNEDOWN buttons. User's selection is indicated with the OK button
- */
-extern SDLInteractionMode const SDLInteractionModeManualOnly;
-
-/**
- Interaction Mode : VR Only
-
- This mode causes the interaction to occur only through TTS and VR. The user is prompted via TTS to select a choice by saying one of the choice's synonyms
- */
-extern SDLInteractionMode const SDLInteractionModeVoiceRecognitionOnly;
-
-/**
- Interaction Mode : Manual & VR
-
- @discussion This mode is a combination of MANUAL_ONLY and VR_ONLY, meaning the user is prompted both visually and audibly. The user can make a selection either using the mode described in MANUAL_ONLY or using the mode described in VR_ONLY.
-
- If the user views selections as described in MANUAL_ONLY mode, the interaction becomes strictly, and irreversibly, a MANUAL_ONLY interaction (i.e. the VR session is cancelled, although the interaction itself is still in progress). If the user interacts with the VR session in any way (e.g. speaks a phrase, even if it is not a recognized choice), the interaction becomes strictly, and irreversibly, a VR_ONLY interaction (i.e. the MANUAL_ONLY mode forms of interaction will no longer be honored)
-
- The TriggerSource parameter of the *PerformInteraction* response will indicate which interaction mode the user finally chose to attempt the selection (even if the interaction did not end with a selection being made)
- */
-extern SDLInteractionMode const SDLInteractionModeBoth;
diff --git a/SmartDeviceLink/SDLKeyboardDelegate.h b/SmartDeviceLink/SDLKeyboardDelegate.h
deleted file mode 100644
index 5637a2a45..000000000
--- a/SmartDeviceLink/SDLKeyboardDelegate.h
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// SDLKeyboardDelegate.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 5/21/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLKeyboardEvent.h"
-
-@class SDLKeyboardProperties;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- This handler is called when you wish to update your autocomplete text in response to the user's input
-
- @param updatedAutocompleteText The autocomplete results to use
- */
-typedef void(^SDLKeyboardAutocompleteCompletionHandler)(NSString *_Nullable updatedAutocompleteText);
-
-/**
- This handler is called when you wish to update your autocomplete text in response to the user's input.
-
- @param updatedAutoCompleteList The list of autocomplete results to use, a max of 100 items are allowed
- */
-typedef void(^SDLKeyboardAutoCompleteResultsHandler)(NSArray<NSString *> *_Nullable updatedAutoCompleteList);
-
-/**
- This handler is called when you wish to update your keyboard's limitedCharacterSet in response to the user's input
-
- @param updatedCharacterSet The new set of characters to use
- */
-typedef void(^SDLKeyboardCharacterSetCompletionHandler)(NSArray<NSString *> *_Nullable updatedCharacterSet);
-
-/// They delegate of a keyboard popup allowing customization at runtime of the keyboard.
-@protocol SDLKeyboardDelegate <NSObject>
-
-/**
- The keyboard session completed with some input.
-
- This will be sent upon ENTRY_SUBMITTED or ENTRY_VOICE. If the event is ENTRY_VOICE, the user requested to start a voice session in order to submit input to this keyboard. This MUST be handled by you. Start an Audio Pass Thru session if supported.
-
- @param inputText The submitted input text on the keyboard
- @param source ENTRY_SUBMITTED if the user pressed the submit button on the keyboard, ENTRY_VOICE if the user requested that a voice session begin
- */
-- (void)userDidSubmitInput:(NSString *)inputText withEvent:(SDLKeyboardEvent)source;
-
-/**
- The keyboard session aborted.
-
- This will be sent if the keyboard event ENTRY_CANCELLED or ENTRY_ABORTED is sent
-
- @param event ENTRY_CANCELLED if the user cancelled the keyboard input, or ENTRY_ABORTED if the system aborted the input due to a higher priority event
- */
-- (void)keyboardDidAbortWithReason:(SDLKeyboardEvent)event;
-
-@optional
-/**
- Implement this in order to provide a custom keyboard configuration to just this keyboard. To apply default settings to all keyboards, see SDLScreenManager.keyboardConfiguration
-
- @return The custom keyboard configuration to use.
- */
-- (SDLKeyboardProperties *)customKeyboardConfiguration;
-
-/**
- Implement this if you wish to update the KeyboardProperties.autoCompleteText as the user updates their input. This is called upon a KEYPRESS event.
-
- @param currentInputText The user's full current input text
- @param completionHandler A completion handler to update the autoCompleteText
- */
-- (void)updateAutocompleteWithInput:(NSString *)currentInputText completionHandler:(SDLKeyboardAutocompleteCompletionHandler)completionHandler __deprecated_msg("Use updateAutocompleteWithInput:autoCompleteResultsHandler:");
-
-/**
- Implement this if you wish to updated the KeyboardProperties.autoCompleteList as the user updates their input. This is called upon a KEYPRESS event.
-
- This allows you to present a list of options that the user can use to fill in the search / text box with suggestions you provide.
-
- @param currentInputText The user's full current input text
- @param resultsHandler A completion handler to update the autoCompleteList
- */
-- (void)updateAutocompleteWithInput:(NSString *)currentInputText autoCompleteResultsHandler:(SDLKeyboardAutoCompleteResultsHandler)resultsHandler;
-
-/**
- Implement this if you wish to update the limitedCharacterSet as the user updates their input. This is called upon a KEYPRESS event.
-
- @param currentInputText The user's full current input text
- @param completionHandler A completion handler to update the limitedCharacterSet
- */
--(void)updateCharacterSetWithInput:(NSString *)currentInputText completionHandler:(SDLKeyboardCharacterSetCompletionHandler)completionHandler;
-
-// This will be sent for any event that occurs with the event and the current input text
-
-/**
- Implement this to be notified of all events occurring on the keyboard
-
- @param event The event that occurred
- @param currentInputText The user's full current input text
- */
-- (void)keyboardDidSendEvent:(SDLKeyboardEvent)event text:(NSString *)currentInputText;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLKeyboardEvent.h b/SmartDeviceLink/SDLKeyboardEvent.h
deleted file mode 100644
index 02fbf7554..000000000
--- a/SmartDeviceLink/SDLKeyboardEvent.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// SDLKeyboardEvent.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Enumeration listing possible keyboard events. Used in OnKeyboardInput.
-
- @since SmartDeviceLink 3.0
- */
-typedef SDLEnum SDLKeyboardEvent SDL_SWIFT_ENUM;
-
-/**
- The use has pressed the keyboard key (applies to both SINGLE_KEYPRESS and RESEND_CURRENT_ENTRY modes).
- */
-extern SDLKeyboardEvent const SDLKeyboardEventKeypress;
-
-/**
- The User has finished entering text from the keyboard and submitted the entry.
- */
-extern SDLKeyboardEvent const SDLKeyboardEventSubmitted;
-
-/**
- The User has pressed the HMI-defined "Cancel" button.
- */
-extern SDLKeyboardEvent const SDLKeyboardEventCancelled;
-
-/**
- The User has not finished entering text and the keyboard is aborted with the event of higher priority.
- */
-extern SDLKeyboardEvent const SDLKeyboardEventAborted;
-
-/**
- The user used voice as input for the keyboard
-
- @since SDL 4.0
- */
-extern SDLKeyboardEvent const SDLKeyboardEventVoice;
diff --git a/SmartDeviceLink/SDLKeyboardLayout.h b/SmartDeviceLink/SDLKeyboardLayout.h
deleted file mode 100644
index ea36434ff..000000000
--- a/SmartDeviceLink/SDLKeyboardLayout.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLKeyboardLayout.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Enumeration listing possible keyboard layouts. Used in KeyboardProperties.
-
- Since SmartDeviceLink 3.0
- */
-typedef SDLEnum SDLKeyboardLayout SDL_SWIFT_ENUM;
-
-/**
- QWERTY layout (the name comes from the first six keys<br> appearing on the top left letter row of the keyboard and read from left to right)
- */
-extern SDLKeyboardLayout const SDLKeyboardLayoutQWERTY;
-
-/**
- QWERTZ layout (the name comes from the first six keys<br> appearing on the top left letter row of the keyboard and read from left to right)
- */
-extern SDLKeyboardLayout const SDLKeyboardLayoutQWERTZ;
-
-/**
- AZERTY layout (the name comes from the first six keys<br> appearing on the top left letter row of the keyboard and read from left to right)
- */
-extern SDLKeyboardLayout const SDLKeyboardLayoutAZERTY;
diff --git a/SmartDeviceLink/SDLKeyboardProperties.h b/SmartDeviceLink/SDLKeyboardProperties.h
deleted file mode 100644
index 19b494eb2..000000000
--- a/SmartDeviceLink/SDLKeyboardProperties.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// SDLKeyboardProperties.h
-//
-
-#import "SDLRPCMessage.h"
-
-#import "SDLKeyboardLayout.h"
-#import "SDLKeypressMode.h"
-#import "SDLLanguage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Configuration of on-screen keyboard (if available)
- */
-@interface SDLKeyboardProperties : SDLRPCStruct
-
-/**
- Create a Keyboard Properties RPC object
-
- @param language The language to set the keyboard to
- @param layout The layout of the keyboard
- @param keypressMode The mode of keypresses to use
- @param limitedCharacterList A list of characters restricting what the user is allowed to press
- @param autoCompleteText A string to show the user to complete what they are typing
- @return The RPC object
- */
-- (instancetype)initWithLanguage:(nullable SDLLanguage)language layout:(nullable SDLKeyboardLayout)layout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteText:(nullable NSString *)autoCompleteText __deprecated_msg(("use initWithLanguagelayout:keypressMode:limitedCharacterList:autoCompleteText:autoCompleteList: instead"));
-
-/**
- Create a Keyboard Properties RPC object
-
- @param language The language to set the keyboard to
- @param layout The layout of the keyboard
- @param keypressMode The mode of keypresses to use
- @param limitedCharacterList A list of characters restricting what the user is allowed to press
- @param autoCompleteText A string to show to user to complete what they are typing
- @param autoCompleteList A list of strings to show the user to complete what they are typing.
- @return The RPC object
- */
-- (instancetype)initWithLanguage:(nullable SDLLanguage)language layout:(nullable SDLKeyboardLayout)layout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteText:(nullable NSString *)autoCompleteText autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList;
-
-/**
- The keyboard language
-
- Optional
- */
-@property (nullable, strong, nonatomic) SDLLanguage language;
-
-/**
- Desired keyboard layout
-
- Optional
- */
-@property (nullable, strong, nonatomic) SDLKeyboardLayout keyboardLayout;
-
-/**
- Desired keypress mode.
-
- If omitted, this value will be set to RESEND_CURRENT_ENTRY.
-
- Optional
- */
-@property (nullable, strong, nonatomic) SDLKeypressMode keypressMode;
-
-/**
- Array of keyboard characters to enable. All omitted characters will be greyed out (disabled) on the keyboard. If omitted, the entire keyboard will be enabled.
-
- Optional
- */
-@property (nullable, strong, nonatomic) NSArray<NSString *> *limitedCharacterList;
-
-/**
- Allows an app to prepopulate the text field with a suggested or completed entry as the user types
-
- Optional
- */
-@property (nullable, strong, nonatomic) NSString *autoCompleteText;
-
-/**
- Allows an app to show a list of possible autocomplete suggestions as the user types
-
- Optional, 1-100 items, max string length 1000 characters (note that these may not all be displayed on the screen)
- */
-@property (nullable, strong, nonatomic) NSArray<NSString *> *autoCompleteList;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLKeyboardProperties.m b/SmartDeviceLink/SDLKeyboardProperties.m
deleted file mode 100644
index 0adb701e2..000000000
--- a/SmartDeviceLink/SDLKeyboardProperties.m
+++ /dev/null
@@ -1,83 +0,0 @@
-// SDLKeyboardProperties.m
-//
-
-#import "SDLKeyboardProperties.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLKeyboardProperties
-
-- (instancetype)initWithLanguage:(nullable SDLLanguage)language layout:(nullable SDLKeyboardLayout)layout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteText:(nullable NSString *)autoCompleteText {
- return [self initWithLanguage:language layout:layout keypressMode:keypressMode limitedCharacterList:limitedCharacterList autoCompleteText:autoCompleteText autoCompleteList:nil];
-}
-
-- (instancetype)initWithLanguage:(nullable SDLLanguage)language layout:(nullable SDLKeyboardLayout)layout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteText:(nullable NSString *)autoCompleteText autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.language = language;
- self.keyboardLayout = layout;
- self.keypressMode = keypressMode;
- self.limitedCharacterList = [limitedCharacterList mutableCopy];
- self.autoCompleteText = autoCompleteText;
- self.autoCompleteList = autoCompleteList;
-
- return self;
-}
-
-- (void)setLanguage:(nullable SDLLanguage)language {
- [self.store sdl_setObject:language forName:SDLRPCParameterNameLanguage];
-}
-
-- (nullable SDLLanguage)language {
- return [self.store sdl_enumForName:SDLRPCParameterNameLanguage error:nil];
-}
-
-- (void)setKeyboardLayout:(nullable SDLKeyboardLayout)keyboardLayout {
- [self.store sdl_setObject:keyboardLayout forName:SDLRPCParameterNameKeyboardLayout];
-}
-
-- (nullable SDLKeyboardLayout)keyboardLayout {
- return [self.store sdl_enumForName:SDLRPCParameterNameKeyboardLayout error:nil];
-}
-
-- (void)setKeypressMode:(nullable SDLKeypressMode)keypressMode {
- [self.store sdl_setObject:keypressMode forName:SDLRPCParameterNameKeypressMode];
-}
-
-- (nullable SDLKeypressMode)keypressMode {
- return [self.store sdl_enumForName:SDLRPCParameterNameKeypressMode error:nil];
-}
-
-- (void)setLimitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList {
- [self.store sdl_setObject:limitedCharacterList forName:SDLRPCParameterNameLimitedCharacterList];
-}
-
-- (nullable NSArray<NSString *> *)limitedCharacterList {
- return [self.store sdl_objectsForName:SDLRPCParameterNameLimitedCharacterList ofClass:NSString.class error:nil];
-}
-
-- (void)setAutoCompleteText:(nullable NSString *)autoCompleteText {
- [self.store sdl_setObject:autoCompleteText forName:SDLRPCParameterNameAutoCompleteText];
-}
-
-- (nullable NSString *)autoCompleteText {
- return [self.store sdl_objectForName:SDLRPCParameterNameAutoCompleteText ofClass:NSString.class error:nil];
-}
-
-- (void)setAutoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList {
- [self.store sdl_setObject:autoCompleteList forName:SDLRPCParameterNameAutoCompleteList];
-}
-
-- (nullable NSArray<NSString *> *)autoCompleteList {
- return [self.store sdl_objectsForName:SDLRPCParameterNameAutoCompleteList ofClass:NSString.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLKeypressMode.h b/SmartDeviceLink/SDLKeypressMode.h
deleted file mode 100644
index 839926c5f..000000000
--- a/SmartDeviceLink/SDLKeypressMode.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// SDLKeypressMode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Enumeration listing possible keyboard events.
-
- Note: Depending on keypressMode value (from keyboardProperties structure of UI.SetGlobalProperties), HMI must send the onKeyboardInput notification with the following data:
-
- SINGLE_KEYPRESS,QUEUE_KEYPRESSES,RESEND_CURRENT_ENTRY.
-
- @since SmartDeviceLink 3.0
- */
-typedef SDLEnum SDLKeypressMode SDL_SWIFT_ENUM;
-
-/**
- SINGLE_KEYPRESS:<br>Each and every User`s keypress must be reported (new notification for every newly entered single symbol).
- */
-extern SDLKeypressMode const SDLKeypressModeSingleKeypress;
-
-/**
- QUEUE_KEYPRESSES:<br>The whole entry is reported only after the User submits it (by ‘Search’ button click displayed on touchscreen keyboard)
- */
-extern SDLKeypressMode const SDLKeypressModeQueueKeypresses;
-
-/**
- RESEND_CURRENT_ENTRY:<br>The whole entry must be reported each and every time the User makes a new keypress<br> (new notification with all previously entered symbols and a newly entered one appended).
- */
-extern SDLKeypressMode const SDLKeypressModeResendCurrentEntry;
diff --git a/SmartDeviceLink/SDLLanguage.h b/SmartDeviceLink/SDLLanguage.h
deleted file mode 100644
index 0224475b6..000000000
--- a/SmartDeviceLink/SDLLanguage.h
+++ /dev/null
@@ -1,207 +0,0 @@
-// SDLLanguage.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Specifies the language to be used for TTS, VR, displayed messages/menus. Used in ChangeRegistration and RegisterAppInterface.
-
- @since SDL 1.0
- */
-typedef SDLEnum SDLLanguage SDL_SWIFT_ENUM;
-
-/**
- English_SA
- */
-extern SDLLanguage const SDLLanguageEnSa;
-
-/**
- Hebrew_IL
- */
-extern SDLLanguage const SDLLanguageHeIl;
-
-/**
- Romainian_RO
- */
-extern SDLLanguage const SDLLanguageRoRo;
-
-/**
- Ukrainian_UA
- */
-extern SDLLanguage const SDLLanguageUkUa;
-
-/**
- Indonesian_ID
- */
-extern SDLLanguage const SDLLanguageIdId;
-
-/**
- Vietnamese_VN
- */
-extern SDLLanguage const SDLLanguageViVn;
-
-/**
- Malay_MY
- */
-extern SDLLanguage const SDLLanguageMsMy;
-
-/**
- Hindi_IN
- */
-extern SDLLanguage const SDLLanguageHiIn;
-
-/**
- Dutch(Flemish)_BE
- */
-extern SDLLanguage const SDLLanguageNlBe;
-
-/**
- Greek_GR
- */
-extern SDLLanguage const SDLLanguageElGr;
-
-/**
- Hungarian_HU
- */
-extern SDLLanguage const SDLLanguageHuHu;
-
-/**
- Finnish_FI
- */
-extern SDLLanguage const SDLLanguageFiFi;
-
-/**
- Slovak_SK
- */
-extern SDLLanguage const SDLLanguageSkSk;
-
-/**
- English_US
- */
-extern SDLLanguage const SDLLanguageEnUs;
-
-/**
- English - India
- */
-extern SDLLanguage const SDLLanguageEnIn;
-
-/**
- Thai - Thailand
- */
-extern SDLLanguage const SDLLanguageThTh;
-
-/**
- Spanish - Mexico
- */
-extern SDLLanguage const SDLLanguageEsMx;
-
-/**
- French - Canada
- */
-extern SDLLanguage const SDLLanguageFrCa;
-
-/**
- German - Germany
- */
-extern SDLLanguage const SDLLanguageDeDe;
-
-/**
- * Spanish - Spain
- */
-extern SDLLanguage const SDLLanguageEsEs;
-
-/**
- English - Great Britain
- */
-extern SDLLanguage const SDLLanguageEnGb;
-
-/**
-Russian - Russia
- */
-extern SDLLanguage const SDLLanguageRuRu;
-
-/**
- Turkish - Turkey
- */
-extern SDLLanguage const SDLLanguageTrTr;
-
-/**
- Polish - Poland
- */
-extern SDLLanguage const SDLLanguagePlPl;
-
-/**
- French - France
- */
-extern SDLLanguage const SDLLanguageFrFr;
-
-/**
- Italian - Italy
- */
-extern SDLLanguage const SDLLanguageItIt;
-
-/**
- Swedish - Sweden
- */
-extern SDLLanguage const SDLLanguageSvSe;
-
-/**
- Portuguese - Portugal
- */
-extern SDLLanguage const SDLLanguagePtPt;
-
-/**
- Dutch (Standard) - Netherlands
- */
-extern SDLLanguage const SDLLanguageNlNl;
-
-/**
- English - Australia
- */
-extern SDLLanguage const SDLLanguageEnAu;
-
-/**
- Mandarin - China
- */
-extern SDLLanguage const SDLLanguageZhCn;
-
-/**
- Mandarin - Taiwan
- */
-extern SDLLanguage const SDLLanguageZhTw;
-
-/**
- Japanese - Japan
- */
-extern SDLLanguage const SDLLanguageJaJp;
-
-/**
- Arabic - Saudi Arabia
- */
-extern SDLLanguage const SDLLanguageArSa;
-
-/**
- Korean - South Korea
- */
-extern SDLLanguage const SDLLanguageKoKr;
-
-/**
- Portuguese - Brazil
- */
-extern SDLLanguage const SDLLanguagePtBr;
-
-/**
- Czech - Czech Republic
- */
-extern SDLLanguage const SDLLanguageCsCz;
-
-/**
- Danish - Denmark
- */
-extern SDLLanguage const SDLLanguageDaDk;
-
-/**
- Norwegian - Norway
- */
-extern SDLLanguage const SDLLanguageNoNo;
diff --git a/SmartDeviceLink/SDLLayoutMode.h b/SmartDeviceLink/SDLLayoutMode.h
deleted file mode 100644
index 3cb7db7ba..000000000
--- a/SmartDeviceLink/SDLLayoutMode.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// SDLLayoutMode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * For touchscreen interactions, the mode of how the choices are presented. Used in PerformInteraction.
- *
- * @since SDL 3.0
- */
-typedef SDLEnum SDLLayoutMode SDL_SWIFT_ENUM;
-
-/**
- * This mode causes the interaction to display the previous set of choices as icons.
- */
-extern SDLLayoutMode const SDLLayoutModeIconOnly;
-
-/**
- * This mode causes the interaction to display the previous set of choices as icons along with a search field in the HMI.
- */
-extern SDLLayoutMode const SDLLayoutModeIconWithSearch;
-
-/**
- * This mode causes the interaction to display the previous set of choices as a list.
- */
-extern SDLLayoutMode const SDLLayoutModeListOnly;
-
-/**
- * This mode causes the interaction to display the previous set of choices as a list along with a search field in the HMI.
- */
-extern SDLLayoutMode const SDLLayoutModeListWithSearch;
-
-/**
- * This mode causes the interaction to immediately display a keyboard entry through the HMI.
- */
-extern SDLLayoutMode const SDLLayoutModeKeyboard;
diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.h b/SmartDeviceLink/SDLLifecycleConfiguration.h
deleted file mode 100644
index f2b59301b..000000000
--- a/SmartDeviceLink/SDLLifecycleConfiguration.h
+++ /dev/null
@@ -1,202 +0,0 @@
-//
-// SDLManagerConfiguration.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/7/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLAppHMIType.h"
-#import "SDLLanguage.h"
-
-@class SDLFile;
-@class SDLTemplateColorScheme;
-@class SDLTTSChunk;
-@class SDLVersion;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// List of secondary transports
-typedef NS_OPTIONS(NSUInteger, SDLSecondaryTransports) {
- /// No secondary transport
- SDLSecondaryTransportsNone = 0,
-
- /// TCP as secondary transport
- SDLSecondaryTransportsTCP = 1 << 0
-};
-
-/**
- * Configuration options for SDLManager
- */
-@interface SDLLifecycleConfiguration : NSObject <NSCopying>
-
-/// Initializer unavailable
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- * A production configuration that runs using IAP. Additional functionality should be customized on the properties.
- *
- * @param appName The name of the app.
- * @param appId The app id to be used. This should be registered with the head unit's manufacturer.
- *
- * @return The lifecycle configuration
- */
-+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId NS_SWIFT_NAME(init(appName:appId:)) __deprecated_msg("Use defaultConfigurationWithAppName:fullAppId: instead");
-
-/**
- * A production configuration that runs using IAP. Additional functionality should be customized on the properties.
- *
- * @param appName The name of the app.
- * @param fullAppId The full app id to be used. This should be registered with the head unit's manufacturer. When set, the `appId` parameter will be set automatically to the first 10 non-dash characters of the `fullAppId`.
- *
- * @return The lifecycle configuration
- */
-+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId NS_SWIFT_NAME(init(appName:fullAppId:));
-
-/**
- * A debug configuration that runs using TCP. Additional functionality should be customized on the properties.
- *
- * @param appName The name of the app.
- * @param appId The app id to be used. This should be registered with the head unit's manufacturer.
- * @param ipAddress The ip address of the server to connect to
- * @param port The port of the server to connect to
- *
- * @return The lifecycle configuration
- */
-+ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port NS_SWIFT_NAME(init(appName:appId:ipAddress:port:)) __deprecated_msg("Use debugConfigurationWithAppName:fullAppId:ipAddress:port: instead");
-
-/**
- * A debug configuration that runs using TCP. Additional functionality should be customized on the properties.
- *
- * @param appName The name of the app.
- * @param fullAppId The full app id to be used. This should be registered with the head unit's manufacturer. When set, the `appId` parameter will be set automatically to the first 10 non-dash characters of the `fullAppId`.
- * @param ipAddress The ip address of the server to connect to
- * @param port The port of the server to connect to
- *
- * @return The lifecycle configuration
- */
-+ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId ipAddress:(NSString *)ipAddress port:(UInt16)port NS_SWIFT_NAME(init(appName:fullAppId:ipAddress:port:));
-
-/**
- * Whether or not debug mode is enabled
- */
-@property (assign, nonatomic, readonly) BOOL tcpDebugMode;
-
-/**
- * The ip address at which the library will look for a server
- */
-@property (copy, nonatomic, readonly, null_resettable) NSString *tcpDebugIPAddress;
-
-/**
- * The port at which the library will look for a server
- */
-@property (assign, nonatomic, readonly) UInt16 tcpDebugPort;
-
-/**
- * The full name of the app
- */
-@property (copy, nonatomic) NSString *appName;
-
-/**
- * The app id. This must be the same as the app id received from the SDL developer portal.
- *
- * @see `fullAppId`
- *
- * Required
- */
-@property (copy, nonatomic, readonly) NSString *appId;
-
-/**
- * The full app id. This must be the same as the full app id received from the SDL developer portal.
- *
- * Optional
- *
- * @discussion The `fullAppId` is used to authenticate apps that connect with head units that implement SDL Core v.5.0 and newer. If connecting with older head units, the `fullAppId` can be truncated to create the required `appId` needed to register the app. The `appId` is the first 10 non-dash ("-") characters of the `fullAppId` (e.g. if you have a `fullAppId` of 123e4567-e89b-12d3-a456-426655440000, the `appId` will be 123e4567e8).
- */
-@property (copy, nonatomic, nullable, readonly) NSString *fullAppId;
-
-/**
- * A hash id which should be passed to the remote system in the RegisterAppInterface
- */
-@property (copy, nonatomic, nullable) NSString *resumeHash;
-
-/**
- * This is an automatically set based on the app type
- */
-@property (assign, nonatomic, readonly) BOOL isMedia;
-
-/**
- * The application type
- */
-@property (strong, nonatomic, null_resettable) SDLAppHMIType appType;
-
-/**
- * Additional application types beyond `appType`
- */
-@property (copy, nonatomic, nullable) NSArray<SDLAppHMIType> *additionalAppTypes;
-
-/**
- * The default language to use
- */
-@property (strong, nonatomic) SDLLanguage language;
-
-/**
- * An array of all the supported languages
- */
-@property (strong, nonatomic) NSArray<SDLLanguage> *languagesSupported;
-
-/**
- * The application icon to be used on an app launching screen
- */
-@property (strong, nonatomic, nullable) SDLFile *appIcon;
-
-/**
- * An abbrevited application name that will be used on the app launching screen if the full one would be truncated
- */
-@property (copy, nonatomic, nullable) NSString *shortAppName;
-
-/**
- * A Text to Speech String for voice recognition of the mobile application name.
- */
-@property (copy, nonatomic, nullable) NSArray<SDLTTSChunk *> *ttsName;
-
-/**
- * Additional voice recognition commands. May not interfere with any other app name or global commands.
- */
-@property (copy, nonatomic, nullable) NSArray<NSString *> *voiceRecognitionCommandNames;
-
-/**
- * The color scheme to use when the head unit is in a light / day situation.
- */
-@property (copy, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
-
-/**
- * The color scheme to use when the head unit is in a dark / night situation.
- */
-@property (copy, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
-
-/**
- The minimum protocol version that will be permitted to connect. This defaults to 1.0.0. If the protocol version of the head unit connected is below this version, the app will disconnect with an EndService protocol message and will not register.
- */
-@property (strong, nonatomic) SDLVersion *minimumProtocolVersion;
-
-/**
- The minimum RPC version that will be permitted to connect. This defaults to 1.0.0. If the RPC version of the head unit connected is below this version, an UnregisterAppInterface will be sent.
- */
-@property (strong, nonatomic) SDLVersion *minimumRPCVersion;
-
-/**
- Which transports are permitted to be used as secondary transports. A secondary transport is a transport that is connected as an alternate, higher bandwidth transport for situations when a low-bandwidth primary transport (such as Bluetooth) will restrict certain features (such as video streaming navigation).
-
- The only currently available secondary transport is TCP over WiFi. This is set to permit TCP by default, but it can be disabled by using SDLSecondaryTransportsNone instead.
-
- This will only affect apps that have high-bandwidth requirements; currently that is only video streaming navigation apps.
- */
-@property (assign, nonatomic) SDLSecondaryTransports allowedSecondaryTransports;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.m b/SmartDeviceLink/SDLLifecycleConfiguration.m
deleted file mode 100644
index 09847120d..000000000
--- a/SmartDeviceLink/SDLLifecycleConfiguration.m
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// SDLManagerConfiguration.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/7/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLifecycleConfiguration.h"
-
-#import "SDLFile.h"
-#import "SDLVersion.h"
-
-static NSString *const DefaultTCPIPAddress = @"192.168.0.1";
-static UInt16 const DefaultTCPIPPort = 12345;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLifecycleConfiguration ()
-
-@property (assign, nonatomic, readwrite) BOOL tcpDebugMode;
-@property (copy, nonatomic, readwrite, null_resettable) NSString *tcpDebugIPAddress;
-@property (assign, nonatomic, readwrite) UInt16 tcpDebugPort;
-
-@end
-
-static NSUInteger const AppIdCharacterCount = 10;
-
-@implementation SDLLifecycleConfiguration
-
-#pragma mark Lifecycle
-
-+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId {
- return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:nil appId:appId];
-}
-
-+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId {
- return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:fullAppId appId:fullAppId];
-}
-
-+ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port {
- return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:nil appId:appId ipAddress:ipAddress port:port];
-}
-
-+ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId ipAddress:(NSString *)ipAddress port:(UInt16)port {
- return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:fullAppId appId:fullAppId ipAddress:ipAddress port:port];
-}
-
-#pragma mark Initalization Helpers
-
-- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName fullAppId:(nullable NSString *)fullAppId appId:(NSString *)appId {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _tcpDebugMode = NO;
- _tcpDebugIPAddress = DefaultTCPIPAddress;
- _tcpDebugPort = DefaultTCPIPPort;
-
- _appName = appName;
- _appType = SDLAppHMITypeDefault;
- _language = SDLLanguageEnUs;
- _languagesSupported = @[_language];
- _appIcon = nil;
- _shortAppName = nil;
- _ttsName = nil;
- _voiceRecognitionCommandNames = nil;
- _minimumProtocolVersion = [SDLVersion versionWithString:@"1.0.0"];
- _minimumRPCVersion = [SDLVersion versionWithString:@"1.0.0"];
- _allowedSecondaryTransports = SDLSecondaryTransportsTCP;
-
- _fullAppId = fullAppId;
- _appId = fullAppId != nil ? [self.class sdlex_shortAppIdFromFullAppId:fullAppId] : appId;
-
- return self;
-}
-
-- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName fullAppId:(nullable NSString *)fullAppId appId:(nullable NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port {
- SDLLifecycleConfiguration *config = [self initDefaultConfigurationWithAppName:appName fullAppId:fullAppId appId:appId];
-
- config.tcpDebugMode = YES;
- config.tcpDebugIPAddress = ipAddress;
- config.tcpDebugPort = port;
-
- return config;
-}
-
-#pragma mark - Computed Properties
-
-- (BOOL)isMedia {
- if ([self.appType isEqualToEnum:SDLAppHMITypeMedia] || [self.additionalAppTypes containsObject:SDLAppHMITypeMedia]) {
- return YES;
- }
-
- return NO;
-}
-
-- (void)setTcpDebugIPAddress:(nullable NSString *)tcpDebugIPAddress {
- if (tcpDebugIPAddress == nil) {
- _tcpDebugIPAddress = DefaultTCPIPAddress;
- } else {
- _tcpDebugIPAddress = tcpDebugIPAddress;
- }
-}
-
-- (void)setAppType:(nullable SDLAppHMIType)appType {
- if (appType == nil) {
- _appType = SDLAppHMITypeDefault;
- return;
- }
-
- _appType = appType;
-}
-
-#pragma mark - Full App ID Helpers
-
-/**
- * Generates the `appId` from the `fullAppId`
- *
- * @discussion When an app is registered with an OEM, it is assigned an `appID` and a `fullAppID`. The `fullAppID` is the full UUID appID. The `appID` is the first 10 non-dash (i.e. "-") characters of the `fullAppID`.
- *
- * @param fullAppId A `fullAppId`
- * @return An `appID` made of the first 10 non-dash characters of the "fullAppID"
- */
-+ (NSString *)sdlex_shortAppIdFromFullAppId:(NSString *)fullAppId {
- NSString *filteredString = [self sdlex_filterDashesFromText:fullAppId];
- return [filteredString substringToIndex:MIN(AppIdCharacterCount, filteredString.length)];
-}
-
-/**
- * Filters the dash characters from a string
- *
- * @param text The string
- * @return The string with all dash characters removed
- */
-+ (NSString *)sdlex_filterDashesFromText:(NSString *)text {
- NSCharacterSet *supportedCharacters = [NSCharacterSet characterSetWithCharactersInString:@"-"];
- return [[text componentsSeparatedByCharactersInSet:supportedCharacters] componentsJoinedByString:@""];
-}
-
-#pragma mark - NSCopying
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- SDLLifecycleConfiguration *newConfig = [[self.class allocWithZone:zone] initDefaultConfigurationWithAppName:_appName fullAppId:_fullAppId appId:_appId];
- newConfig->_tcpDebugMode = _tcpDebugMode;
- newConfig->_tcpDebugIPAddress = _tcpDebugIPAddress;
- newConfig->_tcpDebugPort = _tcpDebugPort;
- newConfig->_appType = _appType;
- newConfig->_additionalAppTypes = _additionalAppTypes;
- newConfig->_language = _language;
- newConfig->_languagesSupported = _languagesSupported;
- newConfig->_appIcon = _appIcon;
- newConfig->_shortAppName = _shortAppName;
- newConfig->_ttsName = _ttsName;
- newConfig->_voiceRecognitionCommandNames = _voiceRecognitionCommandNames;
- newConfig->_dayColorScheme = _dayColorScheme;
- newConfig->_nightColorScheme = _nightColorScheme;
- newConfig->_allowedSecondaryTransports = _allowedSecondaryTransports;
-
- return newConfig;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m
deleted file mode 100644
index f6896133c..000000000
--- a/SmartDeviceLink/SDLLifecycleManager.m
+++ /dev/null
@@ -1,993 +0,0 @@
-//
-// SDLLifecycleManager.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/19/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLLifecycleManager.h"
-
-#import "NSMapTable+Subscripting.h"
-#import "SDLLifecycleRPCAdapter.h"
-#import "SDLAsynchronousRPCOperation.h"
-#import "SDLAsynchronousRPCRequestOperation.h"
-#import "SDLBackgroundTaskManager.h"
-#import "SDLChangeRegistration.h"
-#import "SDLConfiguration.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLEncryptionConfiguration.h"
-#import "SDLLogMacros.h"
-#import "SDLError.h"
-#import "SDLEncryptionLifecycleManager.h"
-#import "SDLFile.h"
-#import "SDLFileManager.h"
-#import "SDLFileManagerConfiguration.h"
-#import "SDLGlobals.h"
-#import "SDLIAPTransport.h"
-#import "SDLLifecycleConfiguration.h"
-#import "SDLLifecycleConfigurationUpdate.h"
-#import "SDLLifecycleMobileHMIStateHandler.h"
-#import "SDLLifecycleSyncPDataHandler.h"
-#import "SDLLifecycleSystemRequestHandler.h"
-#import "SDLLockScreenConfiguration.h"
-#import "SDLLockScreenManager.h"
-#import "SDLLockScreenPresenter.h"
-#import "SDLLogConfiguration.h"
-#import "SDLLogFileModuleMap.h"
-#import "SDLLogManager.h"
-#import "SDLManagerDelegate.h"
-#import "SDLNotificationDispatcher.h"
-#import "SDLOnAppInterfaceUnregistered.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLOnHashChange.h"
-#import "SDLPermissionManager.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLProtocol.h"
-#import "SDLLifecycleProtocolHandler.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRegisterAppInterface.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLResponseDispatcher.h"
-#import "SDLResult.h"
-#import "SDLScreenManager.h"
-#import "SDLSecondaryTransportManager.h"
-#import "SDLSequentialRPCRequestOperation.h"
-#import "SDLSetAppIcon.h"
-#import "SDLStateMachine.h"
-#import "SDLStreamingMediaConfiguration.h"
-#import "SDLStreamingMediaManager.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLTCPTransport.h"
-#import "SDLUnregisterAppInterface.h"
-#import "SDLVersion.h"
-#import "SDLWindowCapability.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-SDLLifecycleState *const SDLLifecycleStateStopped = @"Stopped";
-SDLLifecycleState *const SDLLifecycleStateStarted = @"Started";
-SDLLifecycleState *const SDLLifecycleStateReconnecting = @"Reconnecting";
-SDLLifecycleState *const SDLLifecycleStateConnected = @"Connected";
-SDLLifecycleState *const SDLLifecycleStateRegistered = @"Registered";
-SDLLifecycleState *const SDLLifecycleStateUpdatingConfiguration = @"UpdatingConfiguration";
-SDLLifecycleState *const SDLLifecycleStateSettingUpManagers = @"SettingUpManagers";
-SDLLifecycleState *const SDLLifecycleStateSettingUpAppIcon = @"SettingUpAppIcon";
-SDLLifecycleState *const SDLLifecycleStateSettingUpHMI = @"SettingUpHMI";
-SDLLifecycleState *const SDLLifecycleStateUnregistering = @"Unregistering";
-SDLLifecycleState *const SDLLifecycleStateReady = @"Ready";
-
-NSString *const BackgroundTaskTransportName = @"com.sdl.transport.backgroundTask";
-
-#pragma mark - Protected Class Interfaces
-@interface SDLStreamingMediaManager ()
-
-@property (strong, nonatomic, nullable) SDLSecondaryTransportManager *secondaryTransportManager;
-
-@end
-
-#pragma mark - SDLLifecycleManager Private Interface
-
-@interface SDLLifecycleManager () <SDLConnectionManagerType>
-
-// Readonly public properties
-@property (copy, nonatomic, readwrite) SDLConfiguration *configuration;
-@property (strong, nonatomic, readwrite, nullable) NSString *authToken;
-@property (strong, nonatomic, readwrite) SDLNotificationDispatcher *notificationDispatcher;
-@property (strong, nonatomic, readwrite) SDLResponseDispatcher *responseDispatcher;
-@property (strong, nonatomic, readwrite) SDLStateMachine *lifecycleStateMachine;
-
-// Private Managers
-@property (strong, nonatomic, nullable) SDLSecondaryTransportManager *secondaryTransportManager;
-@property (strong, nonatomic) SDLEncryptionLifecycleManager *encryptionLifecycleManager;
-
-// Private properties
-@property (copy, nonatomic) SDLManagerReadyBlock readyHandler;
-@property (copy, nonatomic) dispatch_queue_t lifecycleQueue;
-@property (assign, nonatomic) int32_t lastCorrelationId;
-@property (copy, nonatomic) SDLBackgroundTaskManager *backgroundTaskManager;
-@property (strong, nonatomic) SDLLanguage currentVRLanguage;
-
-// RPC Handlers
-@property (strong, nonatomic) SDLLifecycleSyncPDataHandler *syncPDataHandler;
-@property (strong, nonatomic) SDLLifecycleSystemRequestHandler *systemRequestHandler;
-@property (strong, nonatomic) SDLLifecycleMobileHMIStateHandler *mobileHMIStateHandler;
-
-// Protocol and Transport
-@property (strong, nonatomic, nullable) SDLLifecycleProtocolHandler *protocolHandler;
-
-@end
-
-
-@implementation SDLLifecycleManager
-
-#pragma mark Lifecycle
-
-- (instancetype)init {
- return [self initWithConfiguration:[[SDLConfiguration alloc] initWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" fullAppId:@"001"] lockScreen:[SDLLockScreenConfiguration enabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:nil] delegate:nil];
-}
-
-- (instancetype)initWithConfiguration:(SDLConfiguration *)configuration delegate:(nullable id<SDLManagerDelegate>)delegate {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- // Dependencies
- _configuration = [configuration copy];
- _delegate = delegate;
-
- // Logging
- [SDLLogManager setConfiguration:_configuration.loggingConfig];
-
- SDLLogD(@"Initializing Lifecycle Manager");
- SDLLogD(@"SDL iOS Library Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"CFBundleShortVersionString"]);
- SDLLogD(@"iOS Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"DTPlatformVersion"]);
- SDLLogD(@"SDK Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"DTSDKName"]);
- SDLLogD(@"Minimum OS Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"MinimumOSVersion"]);
-
- // Private properties
- _lifecycleStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLLifecycleStateStopped states:[self.class sdl_stateTransitionDictionary]];
- _lastCorrelationId = 0;
- _notificationDispatcher = [[SDLNotificationDispatcher alloc] init];
- _responseDispatcher = [[SDLResponseDispatcher alloc] initWithNotificationDispatcher:_notificationDispatcher];
- _registerResponse = nil;
-
- _rpcOperationQueue = [[NSOperationQueue alloc] init];
- _rpcOperationQueue.name = @"com.sdl.lifecycle.rpcOperation.concurrent";
- _rpcOperationQueue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
-
- if (@available(iOS 10.0, *)) {
- _lifecycleQueue = dispatch_queue_create_with_target("com.sdl.lifecycle", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
- } else {
- _lifecycleQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- }
-
- _currentVRLanguage = _configuration.lifecycleConfig.language;
-
- // Managers
- _fileManager = [[SDLFileManager alloc] initWithConnectionManager:self configuration:_configuration.fileManagerConfig];
- _permissionManager = [[SDLPermissionManager alloc] init];
- _lockScreenManager = [[SDLLockScreenManager alloc] initWithConfiguration:_configuration.lockScreenConfig notificationDispatcher:_notificationDispatcher presenter:[[SDLLockScreenPresenter alloc] init]];
- _systemCapabilityManager = [[SDLSystemCapabilityManager alloc] initWithConnectionManager:self];
- _screenManager = [[SDLScreenManager alloc] initWithConnectionManager:self fileManager:_fileManager systemCapabilityManager:_systemCapabilityManager];
-
- if ([self.class sdl_isStreamingConfiguration:self.configuration]) {
- _streamManager = [[SDLStreamingMediaManager alloc] initWithConnectionManager:self configuration:configuration systemCapabilityManager:self.systemCapabilityManager];
- } else {
- SDLLogV(@"Skipping StreamingMediaManager setup due to app type");
- }
-
- if (configuration.encryptionConfig.securityManagers != nil) {
- _encryptionLifecycleManager = [[SDLEncryptionLifecycleManager alloc] initWithConnectionManager:self configuration:_configuration];
- }
-
- // RPC Handlers
- _syncPDataHandler = [[SDLLifecycleSyncPDataHandler alloc] initWithConnectionManager:self];
- _systemRequestHandler = [[SDLLifecycleSystemRequestHandler alloc] initWithConnectionManager:self];
- _mobileHMIStateHandler = [[SDLLifecycleMobileHMIStateHandler alloc] initWithConnectionManager:self];
-
- // Notifications
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_rpcServiceDidConnect) name:SDLRPCServiceDidConnect object:_notificationDispatcher];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_transportDidDisconnect) name:SDLTransportDidDisconnect object:_notificationDispatcher];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hmiStatusDidChange:) name:SDLDidChangeHMIStatusNotification object:_notificationDispatcher];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(remoteHardwareDidUnregister:) name:SDLDidReceiveAppUnregisteredNotification object:_notificationDispatcher];
-
- _backgroundTaskManager = [[SDLBackgroundTaskManager alloc] initWithBackgroundTaskName:BackgroundTaskTransportName];
-
- return self;
-}
-
-- (void)startWithReadyHandler:(SDLManagerReadyBlock)readyHandler {
- [self sdl_runOnProcessingQueue:^{
- [self sdl_startWithReadyHandler:readyHandler];
- }];
-}
-
-- (void)sdl_startWithReadyHandler:(SDLManagerReadyBlock)readyHandler {
- if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateStopped]) {
- SDLLogW(@"Warning: SDL has already been started, this attempt will be ignored");
- return;
- }
-
- SDLLogD(@"Starting lifecycle manager");
- self.readyHandler = [readyHandler copy];
-
- [self sdl_transitionToState:SDLLifecycleStateStarted];
-}
-
-- (void)stop {
- [self sdl_runOnProcessingQueue:^{
- SDLLogD(@"Lifecycle manager stopped");
- if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
- [self sdl_transitionToState:SDLLifecycleStateUnregistering];
- } else {
- [self sdl_transitionToState:SDLLifecycleStateStopped];
- }
- }];
-}
-
-- (void)startRPCEncryption {
- [self.encryptionLifecycleManager startEncryptionService];
-}
-
-#pragma mark Getters
-
-- (SDLState *)lifecycleState {
- return self.lifecycleStateMachine.currentState;
-}
-
-
-#pragma mark State Machine
-
-+ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_stateTransitionDictionary {
- return @{
- SDLLifecycleStateStopped: @[SDLLifecycleStateStarted],
- SDLLifecycleStateStarted: @[SDLLifecycleStateConnected, SDLLifecycleStateStopped, SDLLifecycleStateReconnecting],
- SDLLifecycleStateReconnecting: @[SDLLifecycleStateStarted, SDLLifecycleStateStopped],
- SDLLifecycleStateConnected: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateRegistered],
- SDLLifecycleStateRegistered: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateUnregistering, SDLLifecycleStateSettingUpManagers, SDLLifecycleStateUpdatingConfiguration],
- SDLLifecycleStateUpdatingConfiguration: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateSettingUpManagers],
- SDLLifecycleStateSettingUpManagers: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateSettingUpAppIcon],
- SDLLifecycleStateSettingUpAppIcon: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateSettingUpHMI],
- SDLLifecycleStateSettingUpHMI: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateReady],
- SDLLifecycleStateUnregistering: @[SDLLifecycleStateStopped],
- SDLLifecycleStateReady: @[SDLLifecycleStateUnregistering, SDLLifecycleStateStopped, SDLLifecycleStateReconnecting]
- };
-}
-
-- (void)didEnterStateStarted {
- // Start a background task so a session can be established even when the app is backgrounded.
- [self.backgroundTaskManager startBackgroundTask];
-
- // Start up the internal protocol, transport, and other internal managers
- self.secondaryTransportManager = nil;
- SDLLifecycleConfiguration *lifecycleConfig = self.configuration.lifecycleConfig;
- id<SDLTransportType> newTransport = nil;
-
- if (lifecycleConfig.tcpDebugMode) {
- newTransport = [[SDLTCPTransport alloc] initWithHostName:lifecycleConfig.tcpDebugIPAddress portNumber:@(lifecycleConfig.tcpDebugPort).stringValue];
- } else {
- newTransport = [[SDLIAPTransport alloc] init];
-
- if (self.configuration.lifecycleConfig.allowedSecondaryTransports != SDLSecondaryTransportsNone
- && [self.class sdl_isStreamingConfiguration:self.configuration]) {
- // Reuse the queue to run the secondary transport manager's state machine
- self.secondaryTransportManager = [[SDLSecondaryTransportManager alloc] initWithStreamingProtocolDelegate:(id<SDLStreamingProtocolDelegate>)self.streamManager serialQueue:self.lifecycleQueue];
- self.streamManager.secondaryTransportManager = self.secondaryTransportManager;
- }
- }
-
- SDLProtocol *newProtocol = [[SDLProtocol alloc] initWithTransport:newTransport encryptionManager:self.encryptionLifecycleManager];
- self.protocolHandler = [[SDLLifecycleProtocolHandler alloc] initWithProtocol:newProtocol notificationDispatcher:self.notificationDispatcher configuration:self.configuration];
- [self.protocolHandler start];
-
- [self.secondaryTransportManager startWithPrimaryProtocol:self.protocolHandler.protocol]; // Will not run if secondaryTransportManager is nil
-}
-
-- (void)didEnterStateStopped {
- [self sdl_stopManager:NO];
-}
-
-- (void)didEnterStateReconnecting {
- [self sdl_stopManager:YES];
-}
-
-/// Shuts down the all the managers used to manage the lifecycle of the SDL app after the connection between the phone and SDL enabled accessory has closed. If a restart is desired, attempt to start looking for another SDL enabled accessory. If no restart is desired, another connection will not be made with a SDL enabled accessory during the current app session
-/// @param shouldRestart Whether or not to start looking for another SDL enabled accessory.
-- (void)sdl_stopManager:(BOOL)shouldRestart {
- SDLLogV(@"Stopping manager, %@", (shouldRestart ? @"will restart" : @"will not restart"));
-
- dispatch_group_t stopManagersTask = dispatch_group_create();
- dispatch_group_enter(stopManagersTask);
-
- if (self.protocolHandler != nil) {
- dispatch_group_enter(stopManagersTask);
- [self.protocolHandler stopWithCompletionHandler:^{
- dispatch_group_leave(stopManagersTask);
- }];
- }
- if (self.secondaryTransportManager != nil) {
- dispatch_group_enter(stopManagersTask);
- [self.secondaryTransportManager stopWithCompletionHandler:^{
- dispatch_group_leave(stopManagersTask);
- }];
- }
-
- dispatch_group_leave(stopManagersTask);
-
- // This will always run after all `leave`s
- __weak typeof(self) weakSelf = self;
- dispatch_group_notify(stopManagersTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- [strongSelf sdl_stopManagersAndRestart:shouldRestart];
- });
-}
-
-/// Helper method for shutting down the remaining managers that do not need extra time to shutdown. Once all the managers have been shutdown, attempt to start looking for another SDL enabled accessory.
-/// @param shouldRestart Whether or not to start looking for another SDL enabled accessory.
-- (void)sdl_stopManagersAndRestart:(BOOL)shouldRestart {
- [self.fileManager stop];
- [self.permissionManager stop];
- [self.lockScreenManager stop];
- [self.screenManager stop];
- [self.encryptionLifecycleManager stop];
- [self.streamManager stop];
- [self.systemCapabilityManager stop];
- [self.responseDispatcher clear];
-
- [self.rpcOperationQueue cancelAllOperations];
-
- [self.syncPDataHandler stop];
- [self.systemRequestHandler stop];
- [self.mobileHMIStateHandler stop];
-
- self.registerResponse = nil;
- self.lastCorrelationId = 0;
- self.hmiLevel = nil;
- self.audioStreamingState = nil;
- self.videoStreamingState = nil;
- self.systemContext = nil;
-
- // Due to a race condition internally with EAStream, we cannot immediately attempt to restart the proxy, as we will randomly crash.
- // Apple Bug ID #30059457
- __weak typeof(self) weakSelf = self;
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), self.lifecycleQueue, ^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- if (!strongSelf) { return; }
-
- [strongSelf.delegate managerDidDisconnect];
-
- if (shouldRestart) {
- [strongSelf sdl_transitionToState:SDLLifecycleStateStarted];
- } else {
- // End the background task because a session will not be established
- [strongSelf.backgroundTaskManager endBackgroundTask];
- }
- });
-}
-
-- (void)didEnterStateConnected {
- // If the negotiated protocol version is greater than the minimum allowable version, we need to end service and disconnect
- if ([self.configuration.lifecycleConfig.minimumProtocolVersion isGreaterThanVersion:[SDLGlobals sharedGlobals].protocolVersion]) {
- SDLLogW(@"Disconnecting from head unit, protocol version %@ is less than configured minimum version %@", [SDLGlobals sharedGlobals].protocolVersion.stringVersion, self.configuration.lifecycleConfig.minimumProtocolVersion.stringVersion);
- [self.protocolHandler.protocol endServiceWithType:SDLServiceTypeRPC];
- [self sdl_transitionToState:SDLLifecycleStateStopped];
- return;
- }
-
- // Build a register app interface request with the configuration data
- SDLRegisterAppInterface *regRequest = [[SDLRegisterAppInterface alloc] initWithLifecycleConfiguration:self.configuration.lifecycleConfig];
-
- // Send the request and depending on the response, post the notification
- __weak typeof(self) weakSelf = self;
- [self sendConnectionManagerRequest:regRequest withResponseHandler:^(__kindof SDLRPCRequest *_Nullable request, __kindof SDLRPCResponse *_Nullable response, NSError *_Nullable error) {
- // If the success BOOL is NO or we received an error at this point, we failed. Call the ready handler and transition to the DISCONNECTED state.
- if (error != nil || ![response.success boolValue]) {
- SDLLogE(@"Failed to register the app. Error: %@, Response: %@", error, response);
- if (weakSelf.readyHandler) {
- weakSelf.readyHandler(NO, error);
- }
-
- if (weakSelf.lifecycleState != SDLLifecycleStateReconnecting) {
- [weakSelf sdl_transitionToState:SDLLifecycleStateStopped];
- }
-
- return;
- }
-
- weakSelf.registerResponse = (SDLRegisterAppInterfaceResponse *)response;
- [SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithSDLMsgVersion:weakSelf.registerResponse.sdlMsgVersion];
- [weakSelf sdl_transitionToState:SDLLifecycleStateRegistered];
- }];
-}
-
-- (void)didEnterStateRegistered {
- // If the negotiated RPC version is greater than the minimum allowable version, we need to unregister and disconnect
- if ([self.configuration.lifecycleConfig.minimumRPCVersion isGreaterThanVersion:[SDLGlobals sharedGlobals].rpcVersion]) {
- SDLLogW(@"Disconnecting from head unit, RPC version %@ is less than configured minimum version %@", [SDLGlobals sharedGlobals].rpcVersion.stringVersion, self.configuration.lifecycleConfig.minimumRPCVersion.stringVersion);
- [self sdl_transitionToState:SDLLifecycleStateUnregistering];
- return;
- }
-
- NSArray<SDLLanguage> *supportedLanguages = self.configuration.lifecycleConfig.languagesSupported;
- SDLLanguage desiredHMILanguage = self.configuration.lifecycleConfig.language;
- SDLLanguage desiredVRLanguage = self.currentVRLanguage;
-
- SDLLanguage actualHMILanguage = self.registerResponse.hmiDisplayLanguage;
- SDLLanguage actualVRLanguage = self.registerResponse.language;
-
- BOOL oldDelegateCanUpdateLifecycle = [self.delegate respondsToSelector:@selector(managerShouldUpdateLifecycleToLanguage:)];
- BOOL delegateCanUpdateLifecycle = [self.delegate respondsToSelector:@selector(managerShouldUpdateLifecycleToLanguage:hmiLanguage:)];
-
- // language mismatch? but actual language is a supported language? and delegate has implemented method?
- if ((delegateCanUpdateLifecycle || oldDelegateCanUpdateLifecycle)
- && ([supportedLanguages containsObject:actualHMILanguage] || [supportedLanguages containsObject:actualVRLanguage])
- && (![actualHMILanguage isEqualToEnum:desiredHMILanguage] || ![actualVRLanguage isEqualToEnum:desiredVRLanguage])) {
- // If the delegate is implemented, AND the new HMI / VR language is a supported language, AND the new HMI / VR language is not the current language, THEN go to the updating configuration state and see if the dev wants to change the registration.
- [self sdl_transitionToState:SDLLifecycleStateUpdatingConfiguration];
- } else {
- [self sdl_transitionToState:SDLLifecycleStateSettingUpManagers];
- }
-}
-
-- (void)didEnterStateUpdatingConfiguration {
- // We can expect that the delegate has implemented the update method and the actual language is a supported language
- SDLLanguage actualHMILanguage = self.registerResponse.hmiDisplayLanguage;
- SDLLanguage actualLanguage = self.registerResponse.language;
- SDLLogD(@"Updating configuration due to language mismatch. New language: %@, new hmiLanguage: %@", actualLanguage, actualHMILanguage);
-
- SDLLifecycleConfigurationUpdate *configUpdate = nil;
- BOOL supportsNewDelegate = [self.delegate respondsToSelector:@selector(managerShouldUpdateLifecycleToLanguage:hmiLanguage:)];
- BOOL supportsOldDelegate = [self.delegate respondsToSelector:@selector(managerShouldUpdateLifecycleToLanguage:)];
- if (supportsNewDelegate) {
- configUpdate = [self.delegate managerShouldUpdateLifecycleToLanguage:actualLanguage hmiLanguage:actualHMILanguage];
- } else if (supportsOldDelegate) {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- configUpdate = [self.delegate managerShouldUpdateLifecycleToLanguage:actualLanguage];
-#pragma clang diagnostic pop
- }
-
- if (configUpdate) {
- self.configuration.lifecycleConfig.language = actualHMILanguage;
- self.currentVRLanguage = actualLanguage;
- if (configUpdate.appName) {
- self.configuration.lifecycleConfig.appName = configUpdate.appName;
- }
- if (configUpdate.shortAppName) {
- self.configuration.lifecycleConfig.shortAppName = configUpdate.shortAppName;
- }
- if (configUpdate.ttsName) {
- self.configuration.lifecycleConfig.ttsName = configUpdate.ttsName;
- }
- if (configUpdate.voiceRecognitionCommandNames) {
- self.configuration.lifecycleConfig.voiceRecognitionCommandNames = configUpdate.voiceRecognitionCommandNames;
- }
-
- SDLChangeRegistration *changeRegistration = [[SDLChangeRegistration alloc] initWithLanguage:actualLanguage hmiDisplayLanguage:actualHMILanguage];
- changeRegistration.appName = configUpdate.appName;
- changeRegistration.ngnMediaScreenAppName = configUpdate.shortAppName;
- changeRegistration.ttsName = configUpdate.ttsName;
- changeRegistration.vrSynonyms = configUpdate.voiceRecognitionCommandNames;
-
- [self sendConnectionManagerRequest:changeRegistration withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogW(@"Failed to update language with change registration. Request: %@, Response: %@, error: %@", request, response, error);
- return;
- }
-
- SDLLogD(@"Successfully updated language with change registration. Request sent: %@", request);
- }];
- }
-
- [self sdl_transitionToState:SDLLifecycleStateSettingUpManagers];
-}
-
-- (void)didEnterStateSettingUpManagers {
- dispatch_group_t managerGroup = dispatch_group_create();
-
- // Make sure there's at least one group_enter until we have synchronously run through all the startup calls
- dispatch_group_enter(managerGroup);
- SDLLogD(@"Setting up assistant managers");
- [self.lockScreenManager start];
- [self.systemCapabilityManager start];
-
- dispatch_group_enter(managerGroup);
- [self.fileManager startWithCompletionHandler:^(BOOL success, NSError *_Nullable error) {
- if (!success) {
- SDLLogW(@"File manager was unable to start; error: %@", error);
- }
-
- dispatch_group_leave(managerGroup);
- }];
-
- dispatch_group_enter(managerGroup);
- [self.permissionManager startWithCompletionHandler:^(BOOL success, NSError *_Nullable error) {
- if (!success) {
- SDLLogW(@"Permission manager was unable to start; error: %@", error);
- }
-
- dispatch_group_leave(managerGroup);
- }];
-
- if (self.encryptionLifecycleManager != nil) {
- [self.encryptionLifecycleManager startWithProtocol:self.protocolHandler.protocol];
- }
-
- // Starts the streaming media manager if only using the primary transport (i.e. secondary transports has been disabled in the lifecyle configuration). If using a secondary transport, setup is handled by the stream manager.
- if (self.secondaryTransportManager == nil && self.streamManager != nil) {
- [self.streamManager startWithProtocol:self.protocolHandler.protocol];
- }
-
- dispatch_group_enter(managerGroup);
- [self.screenManager startWithCompletionHandler:^(NSError * _Nullable error) {
- if (error != nil) {
- SDLLogW(@"Screen Manager was unable to start; error: %@", error);
- }
-
- dispatch_group_leave(managerGroup);
- }];
-
- // We're done synchronously calling all startup methods, so we can now wait.
- dispatch_group_leave(managerGroup);
-
- // When done, we want to transition, even if there were errors. They may be expected, e.g. on head units that do not support files.
- dispatch_group_notify(managerGroup, self.lifecycleQueue, ^{
- // We could have been shut down while waiting for the completion of starting file manager and permission manager.
- if (self.lifecycleState == SDLLifecycleStateSettingUpManagers) {
- [self sdl_transitionToState:SDLLifecycleStateSettingUpAppIcon];
- }
- });
-}
-
-- (void)didEnterStateSettingUpAppIcon {
- if (self.registerResponse.iconResumed.boolValue) {
- [self sdl_transitionToState:SDLLifecycleStateSettingUpHMI];
- return;
- }
-
- // We only want to send the app icon when the file manager is complete, and when that's done, wait for hmi status to be ready
- __weak typeof(self) weakself = self;
- [self sdl_sendAppIcon:self.configuration.lifecycleConfig.appIcon withCompletion:^() {
- dispatch_async(weakself.lifecycleQueue, ^{
- // We could have been shut down while setting up the app icon, make sure we still want to continue or we could crash
- if (weakself.lifecycleState == SDLLifecycleStateSettingUpAppIcon) {
- [weakself sdl_transitionToState:SDLLifecycleStateSettingUpHMI];
- }
- });
- }];
-}
-
-- (void)didEnterStateSettingUpHMI {
- // We want to make sure we've gotten a SDLOnHMIStatus notification
- if (self.hmiLevel == nil) {
- // If nil, return and wait until we get a notification
- return;
- }
-
- // We are sure to have a HMIStatus, set state to ready
- [self sdl_transitionToState:SDLLifecycleStateReady];
-}
-
-- (void)didEnterStateReady {
- SDLResult registerResult = self.registerResponse.resultCode;
- NSString *registerInfo = self.registerResponse.info;
- NSError *startError = nil;
-
- // If the resultCode isn't success, we got a warning. Errors were handled in `didEnterStateConnected`.
- if (![registerResult isEqualToEnum:SDLResultSuccess]) {
- startError = [NSError sdl_lifecycle_startedWithWarning:registerResult info:registerInfo];
- }
-
- // If we got to this point, we succeeded, send the error if there was a warning.
- self.readyHandler(YES, startError);
-
- [self.notificationDispatcher postNotificationName:SDLDidBecomeReady infoObject:nil];
-
- // Send the hmi level going from NONE to whatever we're at now (could still be NONE)
- [self.delegate hmiLevel:SDLHMILevelNone didChangeToLevel:self.hmiLevel];
-
- // Send the audio streaming state going from NOT_AUDIBLE to whatever we're at now (could still be NOT_AUDIBLE)
- if ([self.delegate respondsToSelector:@selector(audioStreamingState:didChangeToState:)]) {
- [self.delegate audioStreamingState:SDLAudioStreamingStateNotAudible didChangeToState:self.audioStreamingState];
- }
-
- if ([self.delegate respondsToSelector:@selector(videoStreamingState:didChangetoState:)]) {
- [self.delegate videoStreamingState:SDLVideoStreamingStateNotStreamable didChangetoState:self.videoStreamingState];
- }
-
- // Stop the background task now that setup has completed
- [self.backgroundTaskManager endBackgroundTask];
-}
-
-- (void)didEnterStateUnregistering {
- SDLUnregisterAppInterface *unregisterRequest = [[SDLUnregisterAppInterface alloc] init];
-
- __weak typeof(self) weakSelf = self;
- [self sdl_sendConnectionRequest:unregisterRequest
- withResponseHandler:^(__kindof SDLRPCRequest *_Nullable request, __kindof SDLRPCResponse *_Nullable response, NSError *_Nullable error) {
- if (error != nil || ![response.success boolValue]) {
- SDLLogE(@"SDL Error unregistering, we are going to hard disconnect: %@, response: %@", error, response);
- }
-
- [weakSelf sdl_transitionToState:SDLLifecycleStateStopped];
- }];
-}
-
-
-#pragma mark Post Manager Setup Processing
-
-- (void)sdl_sendAppIcon:(nullable SDLFile *)appIcon withCompletion:(void (^)(void))completion {
- // If no app icon was set, just move on to ready
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- if (appIcon == nil || ![self.systemCapabilityManager.defaultMainWindowCapability.imageTypeSupported containsObject:SDLImageTypeDynamic]) {
- completion();
- return;
- }
-#pragma clang diagnostic pop
-
- [self.fileManager uploadFile:appIcon completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError *_Nullable error) {
- // These errors could be recoverable (particularly "cannot overwrite"), so we'll still attempt to set the app icon
- if (error != nil) {
- if (error.code == SDLFileManagerErrorCannotOverwrite) {
- SDLLogW(@"Failed to upload app icon: A file with this name already exists on the system");
- } else {
- SDLLogW(@"Unexpected error uploading app icon: %@", error);
- completion();
- return;
- }
- }
-
- // Once we've tried to put the file on the remote system, try to set the app icon
- SDLSetAppIcon *setAppIcon = [[SDLSetAppIcon alloc] init];
- setAppIcon.syncFileName = appIcon.name;
-
- [self sendConnectionManagerRequest:setAppIcon
- withResponseHandler:^(__kindof SDLRPCRequest *_Nullable request, __kindof SDLRPCResponse *_Nullable response, NSError *_Nullable error) {
- if (error != nil) {
- SDLLogW(@"Error setting up app icon: %@", error);
- }
-
- // We've succeeded or failed
- completion();
- }];
- }];
-}
-
-
-#pragma mark Sending Requests
-
-- (void)sendRPC:(__kindof SDLRPCMessage *)rpc {
- if ([rpc isKindOfClass:SDLRPCRequest.class]) {
- SDLRPCRequest *requestRPC = (SDLRPCRequest *)rpc;
- [self sendRequest:requestRPC withResponseHandler:nil];
- } else if ([rpc isKindOfClass:SDLRPCResponse.class] || [rpc isKindOfClass:SDLRPCNotification.class]) {
- [self sdl_sendRPC:rpc];
- } else {
- NSAssert(false, @"The request should be of type `Request`, `Response` or `Notification");
- }
-}
-
-- (void)sdl_sendRPC:(__kindof SDLRPCMessage *)rpc {
- SDLAsynchronousRPCOperation *op = [[SDLAsynchronousRPCOperation alloc] initWithConnectionManager:self rpc:rpc];
- [self.rpcOperationQueue addOperation:op];
-}
-
-- (void)sendRequest:(SDLRPCRequest *)request withResponseHandler:(nullable SDLResponseHandler)handler {
- SDLAsynchronousRPCRequestOperation *op = [[SDLAsynchronousRPCRequestOperation alloc] initWithConnectionManager:self request:request responseHandler:handler];
- [self.rpcOperationQueue addOperation:op];
-}
-
-- (void)sendRequests:(NSArray<SDLRPCRequest *> *)requests progressHandler:(nullable SDLMultipleAsyncRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler {
- if (requests.count == 0) {
- completionHandler(YES);
- return;
- }
-
- SDLAsynchronousRPCRequestOperation *op = [[SDLAsynchronousRPCRequestOperation alloc] initWithConnectionManager:self requests:requests progressHandler:progressHandler completionHandler:completionHandler];
- [self.rpcOperationQueue addOperation:op];
-}
-
-- (void)sendSequentialRequests:(NSArray<SDLRPCRequest *> *)requests progressHandler:(nullable SDLMultipleSequentialRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler {
- if (requests.count == 0) {
- completionHandler(YES);
- return;
- }
-
- SDLSequentialRPCRequestOperation *op = [[SDLSequentialRPCRequestOperation alloc] initWithConnectionManager:self requests:requests progressHandler:progressHandler completionHandler:completionHandler];
- [self.rpcOperationQueue addOperation:op];
-}
-
-/// Send a request immediately without going through the RPC operation queue
-/// @param rpc The RPC to send
-- (void)sendConnectionRPC:(__kindof SDLRPCMessage *)rpc {
- NSAssert(([rpc isKindOfClass:SDLRPCResponse.class] || [rpc isKindOfClass:SDLRPCNotification.class]), @"Only RPCs of type `Response` or `Notfication` can be sent using this method. To send RPCs of type `Request` use sendConnectionRequest:withResponseHandler:.");
-
- if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
- SDLLogW(@"Manager not ready, message not sent (%@)", rpc);
- return;
- }
-
- [self sdl_runOnProcessingQueue:^{
- [self sdl_sendConnectionRequest:rpc withResponseHandler:nil];
- }];
-}
-
-/// Send a non-request RPC immediately without going through the RPC operation queue, and allow requests to be sent before the managers have completed setup.
-/// @param rpc The RPC to send
-- (void)sendConnectionManagerRPC:(__kindof SDLRPCMessage *)rpc {
- NSAssert(([rpc isKindOfClass:SDLRPCResponse.class] || [rpc isKindOfClass:SDLRPCNotification.class]), @"Only RPCs of type `Response` or `Notfication` can be sent using this method. To send RPCs of type `Request` use sendConnectionRequest:withResponseHandler:.");
-
- [self sdl_runOnProcessingQueue:^{
- [self sdl_sendConnectionRequest:rpc withResponseHandler:nil];
- }];
-}
-
-/// Send a request immediately without going through the RPC operation queue
-/// @param request The request to send
-/// @param handler A callback handler for responses to the request
-- (void)sendConnectionRequest:(__kindof SDLRPCRequest *)request withResponseHandler:(nullable SDLResponseHandler)handler {
- if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
- SDLLogW(@"Manager not ready, request not sent (%@)", request);
- if (handler) {
- handler(request, nil, [NSError sdl_lifecycle_notReadyError]);
- }
-
- return;
- }
-
- if (!request.isPayloadProtected && [self.encryptionLifecycleManager rpcRequiresEncryption:request]) {
- request.payloadProtected = YES;
- }
-
- if (request.isPayloadProtected && !self.encryptionLifecycleManager.isEncryptionReady) {
- SDLLogW(@"Encryption Manager not ready, request not sent (%@)", request);
- if (handler) {
- handler(request, nil, [NSError sdl_encryption_lifecycle_notReadyError]);
- }
-
- return;
- }
-
- [self sdl_runOnProcessingQueue:^{
- [self sdl_sendConnectionRequest:request withResponseHandler:handler];
- }];
-}
-
-/// Send a request immediately without going through the RPC operation queue, and allow requests to be sent before the managers have completed setup.
-/// @param request The request to send
-/// @param handler A callback handler for responses to the request
-- (void)sendConnectionManagerRequest:(__kindof SDLRPCMessage *)request withResponseHandler:(nullable SDLResponseHandler)handler {
- [self sdl_runOnProcessingQueue:^{
- [self sdl_sendConnectionRequest:request withResponseHandler:handler];
- }];
-}
-
-/// Send a request by sending it directly through the protocol, without going through the RPC operation queue
-/// @param request The request to send
-/// @param handler A callback handler for responses to the request
-- (void)sdl_sendConnectionRequest:(__kindof SDLRPCMessage *)request withResponseHandler:(nullable SDLResponseHandler)handler {
- // We will allow things to be sent in a "SDLLifecycleStateConnected" state in the private method, but block it in the public method sendRequest:withCompletionHandler: so that the lifecycle manager can complete its setup without being bothered by developer error
- NSParameterAssert(request != nil);
-
- // If, for some reason, the request is nil we should error out.
- if (request == nil) {
- NSError *error = [NSError sdl_lifecycle_rpcErrorWithDescription:@"Nil Request Sent" andReason:@"A nil RPC request was passed and cannot be sent."];
- SDLLogW(@"%@", error);
- if (handler) {
- handler(nil, nil, error);
- }
- return;
- }
-
- // Before we send a message, we have to check if we need to adapt the RPC. When adapting the RPC, there could be multiple RPCs that need to be sent.
- NSArray<SDLRPCMessage *> *messages = [SDLLifecycleRPCAdapter adaptRPC:request direction:SDLRPCDirectionOutgoing];
- for (SDLRPCMessage *message in messages) {
- if ([request isKindOfClass:SDLRPCRequest.class]) {
- // Generate and add a correlation ID to the request. When a response for the request is returned from Core, it will have the same correlation ID
- SDLRPCRequest *requestRPC = (SDLRPCRequest *)message;
- NSNumber *corrID = [self sdl_getNextCorrelationId];
- requestRPC.correlationID = corrID;
- [self.responseDispatcher storeRequest:requestRPC handler:handler];
- [self.protocolHandler.protocol sendRPC:requestRPC];
- } else if ([request isKindOfClass:SDLRPCResponse.class] || [request isKindOfClass:SDLRPCNotification.class]) {
- [self.protocolHandler.protocol sendRPC:message];
- } else {
- SDLLogE(@"Will not send an RPC with unknown type, %@. The request should be of type SDLRPCRequest, SDLRPCResponse, or SDLRPCNotification.", request.class);
- }
- }
-}
-
-#pragma mark Helper Methods
-
-/// Returns true if the app type set in the configuration is `NAVIGATION` or `PROJECTION`; false for any other app type.
-/// @param configuration This session's configuration
-+ (BOOL)sdl_isStreamingConfiguration:(SDLConfiguration *)configuration {
- if ([configuration.lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] ||
- [configuration.lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection] ||
- [configuration.lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeNavigation] ||
- [configuration.lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeProjection]) {
- return YES;
- }
-
- return NO;
-}
-
-- (NSNumber<SDLInt> *)sdl_getNextCorrelationId {
- if (self.lastCorrelationId == INT32_MAX) {
- self.lastCorrelationId = 0;
- }
-
- return @(++self.lastCorrelationId);
-}
-
-+ (BOOL)sdl_checkNotification:(NSNotification *)notification containsKindOfClass:(Class) class {
- NSAssert([notification.userInfo[SDLNotificationUserInfoObject] isKindOfClass:class], @"A notification was sent with an unanticipated object");
- if (![notification.userInfo[SDLNotificationUserInfoObject] isKindOfClass:class]) {
- return NO;
- }
-
- return YES;
-}
-
-// this is to make sure that the transition happens on the dedicated queue
-- (void)sdl_runOnProcessingQueue:(void (^)(void))block {
- if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
- block();
- } else {
- dispatch_sync(self.lifecycleQueue, block);
- }
-}
-
-- (void)sdl_transitionToState:(SDLState *)state {
- [self sdl_runOnProcessingQueue:^{
- [self.lifecycleStateMachine transitionToState:state];
- }];
-}
-
-/**
- * Gets the authentication token returned by the `StartServiceACK` header
- *
- * @return An authentication token
- */
-- (nullable NSString *)authToken {
- return self.protocolHandler.protocol.authToken;
-}
-
-#pragma mark SDL notification observers
-
-- (void)sdl_rpcServiceDidConnect {
- // Ignore the connection while we are reconnecting. The proxy needs to be disposed and restarted in order to ensure correct state. https://github.com/smartdevicelink/sdl_ios/issues/1172
- if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]
- && ![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReconnecting]) {
- SDLLogD(@"Transport connected");
-
- dispatch_async(self.lifecycleQueue, ^{
- [self sdl_transitionToState:SDLLifecycleStateConnected];
- });
- }
-}
-
-- (void)sdl_transportDidDisconnect {
- SDLLogD(@"Transport Disconnected");
-
- [self sdl_runOnProcessingQueue:^{
- if (self.lifecycleState == SDLLifecycleStateUnregistering || self.lifecycleState == SDLLifecycleStateStopped) {
- [self sdl_transitionToState:SDLLifecycleStateStopped];
- } else {
- [self sdl_transitionToState:SDLLifecycleStateReconnecting];
- }
- }];
-}
-
-- (void)hmiStatusDidChange:(SDLRPCNotificationNotification *)notification {
- [self sdl_runOnProcessingQueue:^{
- [self sdl_hmiStatusDidChange:notification];
- }];
-}
-
-- (void)sdl_hmiStatusDidChange:(SDLRPCNotificationNotification *)notification {
- if (![notification isNotificationMemberOfClass:[SDLOnHMIStatus class]]) {
- return;
- }
-
- SDLOnHMIStatus *hmiStatusNotification = notification.notification;
-
- if (hmiStatusNotification.windowID != nil && hmiStatusNotification.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
- return;
- }
-
- SDLHMILevel oldHMILevel = self.hmiLevel;
- self.hmiLevel = hmiStatusNotification.hmiLevel;
-
- SDLAudioStreamingState oldAudioStreamingState = self.audioStreamingState;
- self.audioStreamingState = hmiStatusNotification.audioStreamingState;
-
- SDLVideoStreamingState oldVideoStreamingState = self.videoStreamingState;
- self.videoStreamingState = hmiStatusNotification.videoStreamingState;
-
- SDLSystemContext oldSystemContext = self.systemContext;
- self.systemContext = hmiStatusNotification.systemContext;
-
- if (![oldHMILevel isEqualToEnum:self.hmiLevel]) {
- SDLLogD(@"HMI level changed from %@ to %@", oldHMILevel, self.hmiLevel);
- }
-
- if (![oldAudioStreamingState isEqualToEnum:self.audioStreamingState]) {
- SDLLogD(@"Audio streaming state changed from %@ to %@", oldAudioStreamingState, self.audioStreamingState);
- }
-
- if (![oldVideoStreamingState isEqualToEnum:self.videoStreamingState]) {
- SDLLogD(@"Video streaming state changed from %@ to %@", oldVideoStreamingState, self.videoStreamingState);
- }
-
- if (![oldSystemContext isEqualToEnum:self.systemContext]) {
- SDLLogD(@"System context changed from %@ to %@", oldSystemContext, self.systemContext);
- }
-
- if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateSettingUpHMI]) {
- [self sdl_transitionToState:SDLLifecycleStateReady];
- }
-
- if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
- return;
- }
-
- if (![oldHMILevel isEqualToEnum:self.hmiLevel]
- && !(oldHMILevel == nil && self.hmiLevel == nil)) {
- [self.delegate hmiLevel:oldHMILevel didChangeToLevel:self.hmiLevel];
- }
-
- if (![oldAudioStreamingState isEqualToEnum:self.audioStreamingState]
- && !(oldAudioStreamingState == nil && self.audioStreamingState == nil)
- && [self.delegate respondsToSelector:@selector(audioStreamingState:didChangeToState:)]) {
- [self.delegate audioStreamingState:oldAudioStreamingState didChangeToState:self.audioStreamingState];
- }
-
- if (![oldVideoStreamingState isEqualToEnum:self.videoStreamingState]
- && !(oldVideoStreamingState == nil && self.videoStreamingState == nil)
- && [self.delegate respondsToSelector:@selector(videoStreamingState:didChangetoState:)]) {
- [self.delegate videoStreamingState:oldVideoStreamingState didChangetoState:self.videoStreamingState];
- }
-
- if (![oldSystemContext isEqualToEnum:self.systemContext]
- && !(oldSystemContext == nil && self.systemContext == nil)
- && [self.delegate respondsToSelector:@selector(systemContext:didChangeToContext:)]) {
- [self.delegate systemContext:oldSystemContext didChangeToContext:self.systemContext];
- }
-}
-
-- (void)remoteHardwareDidUnregister:(SDLRPCNotificationNotification *)notification {
- [self sdl_runOnProcessingQueue:^{
- [self sdl_remoteHardwareDidUnregister:notification];
- }];
-}
-
-- (void)sdl_remoteHardwareDidUnregister:(SDLRPCNotificationNotification *)notification {
- if (![notification isNotificationMemberOfClass:[SDLOnAppInterfaceUnregistered class]]) {
- return;
- }
-
- SDLOnAppInterfaceUnregistered *appUnregisteredNotification = notification.notification;
- SDLLogE(@"Remote Device forced unregistration for reason: %@", appUnregisteredNotification.reason);
-
- if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateUnregistering]) {
- [self sdl_transitionToState:SDLLifecycleStateStopped];
- } else if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateStopped]) {
- return;
- } else if (appUnregisteredNotification.reason != nil
- && ([appUnregisteredNotification.reason isEqualToEnum:SDLAppInterfaceUnregisteredReasonAppUnauthorized]
- || [appUnregisteredNotification.reason isEqualToEnum:SDLAppInterfaceUnregisteredReasonProtocolViolation])) {
- [self sdl_transitionToState:SDLLifecycleStateStopped];
- } else {
- [self sdl_transitionToState:SDLLifecycleStateReconnecting];
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleProtocolHandler.m b/SmartDeviceLink/SDLLifecycleProtocolHandler.m
deleted file mode 100644
index 49a789637..000000000
--- a/SmartDeviceLink/SDLLifecycleProtocolHandler.m
+++ /dev/null
@@ -1,215 +0,0 @@
-//
-// SDLProtocolDelegateHandler.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 6/10/20.
-// Copyright © 2020 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLifecycleProtocolHandler.h"
-
-#import "SDLConfiguration.h"
-#import "SDLControlFramePayloadRPCStartService.h"
-#import "SDLError.h"
-#import "SDLGlobals.h"
-#import "SDLLifecycleConfiguration.h"
-#import "SDLLifecycleRPCAdapter.h"
-#import "SDLLogMacros.h"
-#import "SDLNotificationConstants.h"
-#import "SDLNotificationDispatcher.h"
-#import "SDLProtocol.h"
-#import "SDLProtocolHeader.h"
-#import "SDLProtocolMessage.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLRPCMessage.h"
-#import "SDLRPCMessageType.h"
-#import "SDLTimer.h"
-
-static const float StartSessionTime = 10.0;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLifecycleProtocolHandler ()
-
-@property (weak, nonatomic) SDLNotificationDispatcher *notificationDispatcher;
-
-@property (strong, nonatomic) SDLTimer *rpcStartServiceTimeoutTimer;
-@property (copy, nonatomic) NSString *appId;
-
-@end
-
-@implementation SDLLifecycleProtocolHandler
-
-- (instancetype)initWithProtocol:(SDLProtocol *)protocol notificationDispatcher:(SDLNotificationDispatcher *)notificationDispatcher configuration:(SDLConfiguration *)configuration {
- self = [super init];
- if (!self) { return nil; }
-
- _protocol = protocol;
- _notificationDispatcher = notificationDispatcher;
-
- _appId = configuration.lifecycleConfig.fullAppId ? configuration.lifecycleConfig.fullAppId : configuration.lifecycleConfig.appId;
- _protocol.appId = _appId;
-
- [_protocol.protocolDelegateTable addObject:self];
-
- return self;
-}
-
-- (void)start {
- [self.protocol start];
-}
-
-- (void)stopWithCompletionHandler:(void (^)(void))disconnectCompletionHandler {
- [self.protocol stopWithCompletionHandler:^{
- disconnectCompletionHandler();
- }];
-}
-
-
-#pragma mark - SDLProtocolDelegate
-
-/// Called when the transport is opened. We will send the RPC Start Service and wait for the RPC Start Service ACK
-- (void)protocolDidOpen:(SDLProtocol *)protocol {
- if (self.protocol != protocol) { return; }
-
- SDLLogD(@"Transport opened, sending an RPC Start Service, and starting timer for RPC Start Service ACK to be received.");
- [self.notificationDispatcher postNotificationName:SDLTransportDidConnect infoObject:nil];
-
- SDLControlFramePayloadRPCStartService *startServicePayload = [[SDLControlFramePayloadRPCStartService alloc] initWithVersion:SDLMaxProxyProtocolVersion];
- [self.protocol startServiceWithType:SDLServiceTypeRPC payload:startServicePayload.data];
-
- if (self.rpcStartServiceTimeoutTimer == nil) {
- self.rpcStartServiceTimeoutTimer = [[SDLTimer alloc] initWithDuration:StartSessionTime repeat:NO];
- __weak typeof(self) weakSelf = self;
- self.rpcStartServiceTimeoutTimer.elapsedBlock = ^{
- SDLLogE(@"Start session timed out after %f seconds, closing the connection.", StartSessionTime);
- [weakSelf.protocol stopWithCompletionHandler:^{}];
- };
- }
- [self.rpcStartServiceTimeoutTimer start];
-}
-
-/// Called when the transport is closed.
-- (void)protocolDidClose:(SDLProtocol *)protocol {
- if (self.protocol != protocol) { return; }
-
- SDLLogW(@"Transport disconnected");
- [self.notificationDispatcher postNotificationName:SDLTransportDidDisconnect infoObject:nil];
-}
-
-- (void)protocol:(SDLProtocol *)protocol transportDidError:(NSError *)error {
- if (self.protocol != protocol) { return; }
-
- SDLLogW(@"Transport error: %@", error);
- [self.notificationDispatcher postNotificationName:SDLTransportConnectError infoObject:error];
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
- if (self.protocol != protocol) { return; }
-
- SDLLogD(@"Start Service (ACK) SessionId: %d for serviceType %d", startServiceACK.header.sessionID, startServiceACK.header.serviceType);
-
- if (startServiceACK.header.serviceType == SDLServiceTypeRPC) {
- [self.rpcStartServiceTimeoutTimer cancel];
- [self.notificationDispatcher postNotificationName:SDLRPCServiceDidConnect infoObject:nil];
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
- if (self.protocol != protocol) { return; }
-
- SDLLogD(@"Start Service (NAK): SessionId: %d for serviceType %d", startServiceNAK.header.sessionID, startServiceNAK.header.serviceType);
-
- if (startServiceNAK.header.serviceType == SDLServiceTypeRPC) {
- [self.rpcStartServiceTimeoutTimer cancel];
- [self.notificationDispatcher postNotificationName:SDLRPCServiceConnectionDidError infoObject:nil];
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
- if (self.protocol != protocol) { return; }
-
- SDLLogD(@"End Service (ACK): SessionId: %d for serviceType %d", endServiceACK.header.sessionID, endServiceACK.header.serviceType);
-
- if (endServiceACK.header.serviceType == SDLServiceTypeRPC) {
- [self.rpcStartServiceTimeoutTimer cancel];
- [self.notificationDispatcher postNotificationName:SDLRPCServiceDidDisconnect infoObject:nil];
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
- if (self.protocol != protocol) { return; }
-
- if (endServiceNAK.header.serviceType == SDLServiceTypeRPC) {
- NSError *error = [NSError sdl_lifecycle_unknownRemoteErrorWithDescription:@"RPC Service failed to stop" andReason:nil];
- [self.notificationDispatcher postNotificationName:SDLRPCServiceConnectionDidError infoObject:error];
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveMessage:(SDLProtocolMessage *)msg {
- if (self.protocol != protocol) { return; }
-
- NSDictionary<NSString *, id> *rpcMessageAsDictionary = [msg rpcDictionary];
- SDLRPCMessage *receivedMessage = [[SDLRPCMessage alloc] initWithDictionary:rpcMessageAsDictionary];
- NSString *fullName = [self sdl_fullNameForMessage:receivedMessage];
-
- // From the function name, create the corresponding RPCObject and initialize it
- NSString *functionClassName = [NSString stringWithFormat:@"SDL%@", fullName];
- SDLRPCMessage *newMessage = [[NSClassFromString(functionClassName) alloc] initWithDictionary:rpcMessageAsDictionary];
-
- // If we were unable to create the message, it's an unknown type; discard it
- if (newMessage == nil) { return; }
-
- // Adapt the incoming message then call the callback
- NSArray<SDLRPCMessage *> *adaptedMessages = [SDLLifecycleRPCAdapter adaptRPC:newMessage direction:SDLRPCDirectionIncoming];
- for (SDLRPCMessage *message in adaptedMessages) {
- [self sdl_sendCallbackForMessage:message];
- }
-}
-
-#pragma mark - Utilities
-
-- (void)sdl_sendCallbackForMessage:(SDLRPCMessage *)message {
- // Log the RPC message
- SDLLogV(@"Sending callback for RPC message: %@", message);
-
- SDLNotificationName notificationName = [self sdl_notificationNameForMessage:message];
- if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameResponse]) {
- [self.notificationDispatcher postRPCResponseNotification:notificationName response:(SDLRPCResponse *)message];
- } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameRequest]) {
- [self.notificationDispatcher postRPCRequestNotification:notificationName request:(SDLRPCRequest *)message];
- } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameNotification]) {
- [self.notificationDispatcher postRPCNotificationNotification:notificationName notification:(SDLRPCNotification *)message];
- }
-}
-
-- (SDLNotificationName)sdl_notificationNameForMessage:(SDLRPCMessage *)message {
- NSString *messageName = message.name;
- if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameResponse]) {
- return [NSString stringWithFormat:@"com.sdl.response.%@", messageName];
- } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameRequest]) {
- return [NSString stringWithFormat:@"com.sdl.request.%@", messageName];
- } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameNotification]) {
- return [NSString stringWithFormat:@"com.sdl.notification.%@", messageName];
- }
-
- return messageName;
-}
-
-- (NSString *)sdl_fullNameForMessage:(SDLRPCMessage *)message {
- NSString *functionName = message.name;
- NSString *messageType = message.messageType;
-
- // If it's a response, append "response"
- if ([messageType isEqualToEnum:SDLRPCMessageTypeNameResponse]) {
- if (![functionName isEqualToEnum:SDLRPCFunctionNameGenericResponse]) {
- functionName = [NSString stringWithFormat:@"%@Response", functionName];
- }
- }
-
- return functionName;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleSystemRequestHandler.m b/SmartDeviceLink/SDLLifecycleSystemRequestHandler.m
deleted file mode 100644
index 354dca8dd..000000000
--- a/SmartDeviceLink/SDLLifecycleSystemRequestHandler.m
+++ /dev/null
@@ -1,336 +0,0 @@
-//
-// SDLLifecycleSystemRequestHandler.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 6/8/20.
-// Copyright © 2020 smartdevicelink. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-#import "SDLLifecycleSystemRequestHandler.h"
-
-#import "SDLCacheFileManager.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLGlobals.h"
-#import "SDLLogMacros.h"
-#import "SDLNotificationConstants.h"
-#import "SDLOnSystemRequest.h"
-#import "SDLPutFile.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLSystemRequest.h"
-
-static const float DefaultConnectionTimeout = 45.0;
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef void (^URLSessionTaskCompletionHandler)(NSData *data, NSURLResponse *response, NSError *error);
-typedef void (^URLSessionDownloadTaskCompletionHandler)(NSURL *location, NSURLResponse *response, NSError *error);
-
-@interface SDLLifecycleSystemRequestHandler ()
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> manager;
-@property (strong, nonatomic) SDLCacheFileManager *cacheFileManager;
-@property (strong, nonatomic) NSURLSession *urlSession;
-
-@end
-
-@implementation SDLLifecycleSystemRequestHandler
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager {
- self = [super init];
- if (!self) { return nil; }
-
- SDLLogV(@"Initializing SystemRequest handler");
- _manager = manager;
-
- _cacheFileManager = [[SDLCacheFileManager alloc] init];
-
- NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
- configuration.timeoutIntervalForRequest = DefaultConnectionTimeout;
- configuration.timeoutIntervalForResource = DefaultConnectionTimeout;
- configuration.requestCachePolicy = NSURLRequestUseProtocolCachePolicy;
- _urlSession = [NSURLSession sessionWithConfiguration:configuration];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(systemRequestReceived:) name:SDLDidReceiveSystemRequestNotification object:nil];
-
- return self;
-}
-
-- (void)stop {
- SDLLogV(@"Stopping SystemRequest handler and stopping all URL session tasks");
- [self.urlSession getTasksWithCompletionHandler:^(NSArray<NSURLSessionDataTask *> * _Nonnull dataTasks, NSArray<NSURLSessionUploadTask *> * _Nonnull uploadTasks, NSArray<NSURLSessionDownloadTask *> * _Nonnull downloadTasks) {
- for (NSURLSessionTask *task in dataTasks) {
- [task cancel];
- }
-
- for (NSURLSessionTask *task in uploadTasks) {
- [task cancel];
- }
-
- for (NSURLSessionTask *task in downloadTasks) {
- [task cancel];
- }
- }];
-}
-
-#pragma mark - Handle OnSystemRequest
-- (void)sdl_handleSystemRequestLaunchApp:(SDLOnSystemRequest *)request {
- NSURL *urlScheme = [NSURL URLWithString:request.url];
- if (urlScheme == nil) {
- SDLLogW(@"System request LaunchApp failed: invalid URL sent from module: %@", request.url);
- return;
- }
-
- // If system version is less than 9.0 http://stackoverflow.com/a/5337804/1370927
- if (SDL_SYSTEM_VERSION_LESS_THAN(@"9.0")) {
- // Return early if we can't openURL because openURL will crash instead of fail silently in < 9.0
- if (![[UIApplication sharedApplication] canOpenURL:urlScheme]) {
- return;
- }
- }
-
- [[UIApplication sharedApplication] openURL:urlScheme];
-}
-
-- (void)sdl_handleSystemRequestProprietary:(SDLOnSystemRequest *)request {
- NSDictionary<NSString *, id> *jsonDict = [self sdl_validateAndParseProprietarySystemRequest:request];
- if (jsonDict == nil || request.url == nil) {
- return;
- }
-
- // Send the HTTP Request
- __weak typeof(self) weakSelf = self;
- [self sdl_uploadForBodyDataDictionary:jsonDict
- urlString:request.url
- completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
-
- if (error) {
- SDLLogW(@"OnSystemRequest HTTP response error: %@", error);
- return;
- }
- if (data == nil || data.length == 0) {
- SDLLogW(@"OnSystemRequest HTTP response error: no data received");
- return;
- }
-
- // Create the SystemRequest RPC to send to module.
- SDLLogV(@"OnSystemRequest HTTP response");
- SDLSystemRequest *request = [[SDLSystemRequest alloc] init];
- request.requestType = SDLRequestTypeProprietary;
- request.bulkData = data;
-
- // Send the RPC Request
- [strongSelf.manager sendConnectionManagerRequest:request withResponseHandler:nil];
- }];
-}
-
-// TODO: Move to lock screen manager
-- (void)sdl_handleSystemRequestLockScreenIconURL:(SDLOnSystemRequest *)request {
- [self.cacheFileManager retrieveImageForRequest:request withCompletionHandler:^(UIImage * _Nullable image, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogW(@"Failed to retrieve lock screen icon: %@", error.localizedDescription);
- return;
- }
-
- NSDictionary<NSString *, id> *userInfo = nil;
- if (image != nil) {
- userInfo = @{SDLNotificationUserInfoObject: image};
- }
- [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidReceiveLockScreenIcon object:nil userInfo:userInfo];
- }];
-}
-
-- (void)sdl_handleSystemRequestIconURL:(SDLOnSystemRequest *)request {
- __weak typeof(self) weakSelf = self;
- [self sdl_sendDataTaskWithURL:[NSURL URLWithString:request.url]
- completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
- if (error != nil) {
- SDLLogW(@"OnSystemRequest (icon url) HTTP download task failed: %@", error.localizedDescription);
- return;
- } else if (data.length == 0) {
- SDLLogW(@"OnSystemRequest (icon url) HTTP download task failed to get the cloud app icon image data");
- return;
- }
-
- SDLSystemRequest *iconURLSystemRequest = [[SDLSystemRequest alloc] initWithType:SDLRequestTypeIconURL fileName:request.url];
- iconURLSystemRequest.bulkData = data;
-
- [strongSelf.manager sendConnectionManagerRequest:iconURLSystemRequest withResponseHandler:nil];
- }];
-}
-
-- (void)sdl_handleSystemRequestHTTP:(SDLOnSystemRequest *)request {
- if (request.bulkData.length == 0) {
- // TODO: not sure how we want to handle http requests that don't have bulk data (maybe as GET?)
- return;
- }
-
- __weak typeof(self) weakSelf = self;
- [self sdl_uploadData:request.bulkData
- toURLString:request.url
- completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
- if (error != nil) {
- SDLLogW(@"OnSystemRequest (HTTP) error: %@", error.localizedDescription);
- return;
- }
-
- if (data.length == 0) {
- SDLLogW(@"OnSystemRequest (HTTP) error: no data returned");
- return;
- }
-
- // Show the HTTP response
- SDLLogV(@"OnSystemRequest (HTTP) response: %@", response);
-
- // Create the PutFile RPC to send to module.
- SDLPutFile *putFile = [[SDLPutFile alloc] init];
- putFile.fileType = SDLFileTypeJSON;
- putFile.sdlFileName = @"response_data";
- putFile.bulkData = data;
-
- // Send RPC Request
- [strongSelf.manager sendConnectionManagerRequest:putFile withResponseHandler:nil];
- }];
-}
-
-#pragma mark - HTTP
-
-/**
- * Start an upload for some data to a web address specified
- *
- * @param data The data to be passed to the server
- * @param urlString The URL the data should be POSTed to
- * @param completionHandler A completion handler of what to do when the server responds
- */
-- (void)sdl_uploadData:(NSData *_Nonnull)data toURLString:(NSString *_Nonnull)urlString completionHandler:(URLSessionTaskCompletionHandler _Nullable)completionHandler {
- // NSURLRequest configuration
- NSURL *url = [NSURL URLWithString:urlString];
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
- [request setValue:@"application/json" forHTTPHeaderField:@"content-type"];
- request.HTTPMethod = @"POST";
-
- SDLLogV(@"OnSystemRequest (HTTP) upload task created for URL: %@", urlString);
-
- // Create the upload task
- [self sdl_sendUploadRequest:request withData:data completionHandler:completionHandler];
-}
-
-/**
- * Start an upload for a body data dictionary, this is used by the "proprietary" system request needed for backward compatibility
- *
- * @param dictionary The system request dictionary that contains the HTTP data to be sent
- * @param urlString A string containing the URL to send the upload to
- * @param completionHandler A completion handler returning the response from the server to the upload task
- */
-- (void)sdl_uploadForBodyDataDictionary:(NSDictionary<NSString *, id> *)dictionary urlString:(NSString *)urlString completionHandler:(URLSessionTaskCompletionHandler)completionHandler {
- NSParameterAssert(dictionary != nil);
- NSParameterAssert(urlString != nil);
- NSParameterAssert(completionHandler != NULL);
-
- // Extract data from the dictionary
- NSDictionary<NSString *, id> *requestData = dictionary[@"HTTPRequest"];
- NSDictionary *headers = requestData[@"headers"];
- NSString *contentType = headers[@"ContentType"];
- NSTimeInterval timeout = [headers[@"ConnectTimeout"] doubleValue];
- NSString *method = headers[@"RequestMethod"];
- NSString *bodyString = requestData[@"body"];
- NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
-
- // NSURLRequest configuration
- NSURL *url = [NSURL URLWithString:urlString];
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
- [request setValue:contentType forHTTPHeaderField:@"content-type"];
- request.timeoutInterval = timeout;
- request.HTTPMethod = method;
-
- SDLLogV(@"OnSystemRequest (Proprietary) upload task created for URL: %@", urlString);
-
- // Create the upload task
- [self sdl_sendUploadRequest:request withData:bodyData completionHandler:completionHandler];
-}
-
-- (void)sdl_sendUploadRequest:(NSURLRequest*)request withData:(NSData*)data completionHandler:(URLSessionTaskCompletionHandler)completionHandler {
- NSMutableURLRequest* mutableRequest = [request mutableCopy];
-
- if ([mutableRequest.URL.scheme isEqualToString:@"http"]) {
- mutableRequest.URL = [NSURL URLWithString:[mutableRequest.URL.absoluteString stringByReplacingCharactersInRange:NSMakeRange(0, 4) withString:@"https"]];
- }
-
- [[self.urlSession uploadTaskWithRequest:request fromData:data completionHandler:completionHandler] resume];
-}
-
-- (void)sdl_sendDataTaskWithURL:(NSURL*)url completionHandler:(URLSessionTaskCompletionHandler)completionHandler {
- if ([url.scheme isEqualToString:@"http"]) {
- url = [NSURL URLWithString:[url.absoluteString stringByReplacingCharactersInRange:NSMakeRange(0, 4) withString:@"https"]];
- }
-
- [[self.urlSession dataTaskWithURL:url completionHandler:completionHandler] resume];
-}
-
-#pragma mark - Validation
-
-/**
- * Determine if the System Request is valid and return it's JSON dictionary, if available.
- *
- * @param request The system request to parse
- *
- * @return A parsed JSON dictionary, or nil if it couldn't be parsed
- */
-- (nullable NSDictionary<NSString *, id> *)sdl_validateAndParseProprietarySystemRequest:(SDLOnSystemRequest *)request {
- NSString *urlString = request.url;
- SDLFileType fileType = request.fileType;
-
- // Validate input
- if (urlString == nil || [NSURL URLWithString:urlString] == nil) {
- SDLLogW(@"OnSystemRequest validation failure: URL is nil");
- return nil;
- }
- if (![fileType isEqualToEnum:SDLFileTypeJSON]) {
- SDLLogW(@"OnSystemRequest validation failure: file type is not JSON");
- return nil;
- }
-
- // Get data dictionary from the bulkData
- NSError *error = nil;
- NSDictionary<NSString *, id> *JSONDictionary = [NSJSONSerialization JSONObjectWithData:request.bulkData options:kNilOptions error:&error];
- if (error != nil) {
- SDLLogW(@"OnSystemRequest validation failure: data is not valid JSON");
- return nil;
- }
-
- return JSONDictionary;
-}
-
-#pragma mark - Notifications
-
-- (void)systemRequestReceived:(SDLRPCNotificationNotification *)notification {
- SDLOnSystemRequest *onSystemRequest = notification.notification;
- SDLRequestType requestType = onSystemRequest.requestType;
-
- // Handle the various OnSystemRequest types
- if ([requestType isEqualToEnum:SDLRequestTypeProprietary]) {
- [self sdl_handleSystemRequestProprietary:onSystemRequest];
- } else if ([requestType isEqualToEnum:SDLRequestTypeLockScreenIconURL]) {
- [self sdl_handleSystemRequestLockScreenIconURL:onSystemRequest];
- } else if ([requestType isEqualToEnum:SDLRequestTypeIconURL]) {
- [self sdl_handleSystemRequestIconURL:onSystemRequest];
- } else if ([requestType isEqualToEnum:SDLRequestTypeHTTP]) {
- [self sdl_handleSystemRequestHTTP:onSystemRequest];
- } else if ([requestType isEqualToEnum:SDLRequestTypeLaunchApp]) {
- if ([NSThread isMainThread]) {
- [self sdl_handleSystemRequestLaunchApp:onSystemRequest];
- } else {
- dispatch_sync(dispatch_get_main_queue(), ^{
- [self sdl_handleSystemRequestLaunchApp:onSystemRequest];
- });
- }
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLightControlCapabilities.h b/SmartDeviceLink/SDLLightControlCapabilities.h
deleted file mode 100644
index 13f709904..000000000
--- a/SmartDeviceLink/SDLLightControlCapabilities.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// SDLLightControlCapabilities.h
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLModuleInfo.h"
-
-@class SDLLightCapabilities;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Current light control capabilities.
-///
-/// @since RPC 5.0
-@interface SDLLightControlCapabilities : SDLRPCStruct
-
-/**
- Constructs a newly allocated SDLLightControlCapabilities object with given parameters
-
-
- @param moduleName friendly name of the light control module
- @param supportedLights array of available LightCapabilities
- @return An instance of the SDLLightControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName supportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights __deprecated_msg("Use initWithModuleName:moduleInfo:supportedLights:");
-
-/**
- Constructs a newly allocated SDLLightControlCapabilities object with given parameters
-
-
- @param moduleName friendly name of the light control module
- @param moduleInfo information about a RC module, including its id
- @param supportedLights array of available LightCapabilities
- @return An instance of the SDLLightControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo supportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights;
-
-/**
- * @abstract The short friendly name of the light control module.
- * It should not be used to identify a module by mobile application.
- *
- * Required, Max String length 100 chars
- */
-@property (strong, nonatomic) NSString *moduleName;
-
-/**
- * @abstract An array of available LightCapabilities that are controllable.
- *
- * Required, NSArray of type SDLLightCapabilities minsize="1" maxsize="100"
- */
-@property (strong, nonatomic) NSArray<SDLLightCapabilities *> *supportedLights;
-
-/**
- * Information about a RC module, including its id.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLightControlCapabilities.m b/SmartDeviceLink/SDLLightControlCapabilities.m
deleted file mode 100644
index 4a899c2dd..000000000
--- a/SmartDeviceLink/SDLLightControlCapabilities.m
+++ /dev/null
@@ -1,66 +0,0 @@
-// SDLLightControlCapabilities.m
-//
-
-#import "SDLLightControlCapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "NSMutableDictionary+Store.h"
-#import "SDLLightCapabilities.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLLightControlCapabilities
-
-
-- (instancetype)initWithModuleName:(NSString *)moduleName supportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights {
- self = [self init];
- if(!self) {
- return nil;
- }
- self.moduleName = moduleName;
- self.supportedLights = supportedLights;
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo supportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights {
- self = [self init];
- if(!self) {
- return nil;
- }
- self.moduleName = moduleName;
- self.moduleInfo = moduleInfo;
- self.supportedLights = supportedLights;
-
- return self;
-}
-
-- (void)setModuleName:(NSString *)moduleName {
- [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
-}
-
-- (NSString *)moduleName {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
-}
-
-- (void)setSupportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights {
- [self.store sdl_setObject:supportedLights forName:SDLRPCParameterNameSupportedLights];
-
-}
-
-- (NSArray<SDLLightCapabilities *> *)supportedLights {
- NSError *error = nil;
- return [self.store sdl_objectsForName:SDLRPCParameterNameSupportedLights ofClass:SDLLightCapabilities.class error:&error];
-}
-
-- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
- [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
-}
-
-- (nullable SDLModuleInfo *)moduleInfo {
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLightName.h b/SmartDeviceLink/SDLLightName.h
deleted file mode 100644
index 09a954f74..000000000
--- a/SmartDeviceLink/SDLLightName.h
+++ /dev/null
@@ -1,259 +0,0 @@
-// SDLLightName.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * The name that identifies the Light
- *
- */
-typedef SDLEnum SDLLightName SDL_SWIFT_ENUM;
-
-/**
- * @abstract Represents the Light with name FRONT_LEFT_HIGH_BEAM.
- */
-extern SDLLightName const SDLLightNameFrontLeftHighBeam;
-
-/**
- * @abstract Represents the Light with name FRONT_RIGHT_HIGH_BEAM.
- */
-extern SDLLightName const SDLLightNameFrontRightHighBeam;
-
-/**
- * @abstract Represents the Light with name FRONT_LEFT_LOW_BEAM.
- */
-extern SDLLightName const SDLLightNameFrontLeftLowBeam;
-
-/**
- * @abstract Represents the Light with name FRONT_RIGHT_LOW_BEAM.
- */
-extern SDLLightName const SDLLightNameFrontRightLowBeam;
-
-/**
- * @abstract Represents the Light with name FRONT_LEFT_PARKING_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontLeftParkingLight;
-
-/**
- * @abstract Represents the Light with name FRONT_RIGHT_PARKING_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontRightParkingLight;
-
-/**
- * @abstract Represents the Light with name FRONT_LEFT_FOG_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontLeftFogLight;
-
-/**
- * @abstract Represents the Light with name FRONT_RIGHT_FOG_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontRightFogLight;
-
-/**
- * @abstract Represents the Light with name FRONT_LEFT_DAYTIME_RUNNING_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontLeftDaytimeRunningLight;
-
-/**
- * @abstract Represents the Light with name FRONT_RIGHT_DAYTIME_RUNNING_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontRightDaytimeRunningLight;
-
-/**
- * @abstract Represents the Light with name FRONT_LEFT_TURN_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontLeftTurnLight;
-
-/**
- * @abstract Represents the Light with name FRONT_Right_TURN_LIGHT
- */
-extern SDLLightName const SDLLightNameFrontRightTurnLight;
-
-/**
- * @abstract Represents the Light with name REAR_LEFT_FOG_LIGHT.
- */
-extern SDLLightName const SDLLightNameRearLeftFogLight;
-
-/**
- * @abstract Represents the Light with name REAR_RIGHT_FOG_LIGHT
- */
-extern SDLLightName const SDLLightNameRearRightFogLight;
-
-/**
- * @abstract Represents the Light with name REAR_LEFT_TAIL_LIGHT
- */
-extern SDLLightName const SDLLightNameRearLeftTailLight;
-
-/**
- * @abstract Represents the Light with name REAR_RIGHT_TAIL_LIGHT
- */
-extern SDLLightName const SDLLightNameRearRightTailLight;
-
-/**
- * @abstract Represents the Light with name REAR_LEFT_BRAKE_LIGHT
- */
-extern SDLLightName const SDLLightNameRearLeftBrakeLight;
-
-/**
- * @abstract Represents the Light with name REAR_RIGHT_BRAKE_LIGHT
- */
-extern SDLLightName const SDLLightNameRearRightBrakeLight;
-
-/**
- * @abstract Represents the Light with name REAR_LEFT_TURN_LIGHT
- */
-extern SDLLightName const SDLLightNameRearLeftTurnLight;
-
-/**
- * @abstract Represents the Light with name REAR_RIGHT_TURN_LIGHT
- */
-extern SDLLightName const SDLLightNameRearRightTurnLight;
-
-/**
- * @abstract Represents the Light with name REAR_REGISTRATION_PLATE_LIGHT
- */
-extern SDLLightName const SDLLightNameRearRegistrationPlateLight;
-
-#pragma mark - Exterior Lights by common function groups
-/**
- * @abstract Include all high beam lights: front_left and front_right.
- */
-extern SDLLightName const SDLLightNameHighBeams;
-
-/**
- * @abstract Include all low beam lights: front_left and front_right.
- */
-extern SDLLightName const SDLLightNameLowBeams;
-
-/**
- * @abstract Include all fog lights: front_left, front_right, rear_left and rear_right.
- */
-extern SDLLightName const SDLLightNameFogLights;
-
-/**
- * @abstract Include all daytime running lights: front_left and front_right.
- */
-extern SDLLightName const SDLLightNameRunningLights;
-
-/**
- * @abstract Include all parking lights: front_left and front_right.
- */
-extern SDLLightName const SDLLightNameParkingLights;
-
-/**
- * @abstract Include all brake lights: rear_left and rear_right.
- */
-extern SDLLightName const SDLLightNameBrakeLights;
-
-/**
- * @abstract Represents the Light with name REAR_REVERSING_LIGHTS
- */
-extern SDLLightName const SDLLightNameRearReversingLights;
-
-/**
- * @abstract Represents the Light with name SIDE_MARKER_LIGHTS
- */
-extern SDLLightName const SDLLightNameSideMarkerLights;
-
-/**
- * @abstract Include all left turn signal lights: front_left, rear_left, left_side and mirror_mounted.
- */
-extern SDLLightName const SDLLightNameLeftTurnLights;
-
-/**
- * @abstract Include all right turn signal lights: front_right, rear_right, right_side and mirror_mounted.
- */
-extern SDLLightName const SDLLightNameRightTurnLights;
-
-/**
- * @abstract Include all hazard lights: front_left, front_right, rear_left and rear_right.
- */
-extern SDLLightName const SDLLightNameHazardLights;
-
-#pragma mark - Interior Lights by common function groups
-
-/**
- * @abstract Represents the Light with name AMBIENT_LIGHTS
- */
-extern SDLLightName const SDLLightNameAmbientLights;
-
-/**
- * @abstract Represents the Light with name OVERHEAD_LIGHTS
- */
-extern SDLLightName const SDLLightNameOverHeadLights;
-
-/**
- * @abstract Represents the Light with name READING_LIGHTS
- */
-extern SDLLightName const SDLLightNameReadingLights;
-
-/**
- * @abstract Represents the Light with name TRUNK_LIGHTS
- */
-extern SDLLightName const SDLLightNameTrunkLights;
-
-#pragma mark - Lights by location
-
-/**
- * @abstract Include exterior lights located in front of the vehicle. For example, fog lights and low beams.
- */
-extern SDLLightName const SDLLightNameExteriorFrontLights;
-
-/**
- * @abstract Include exterior lights located at the back of the vehicle.
- * For example, license plate lights, reverse lights, cargo lights, bed lights an trailer assist lights.
- */
-extern SDLLightName const SDLLightNameExteriorRearLights;
-
-/**
- * @abstract Include exterior lights located at the left side of the vehicle.
- * For example, left puddle lights and spot lights.
- */
-extern SDLLightName const SDLLightNameExteriorLeftLights;
-
-/**
- * @abstract Include exterior lights located at the right side of the vehicle.
- * For example, right puddle lights and spot lights.
- */
-extern SDLLightName const SDLLightNameExteriorRightLights;
-
-/**
- * @abstract Cargo lamps illuminate the cargo area.
- */
-extern SDLLightName const SDLLightNameExteriorRearCargoLights;
-
-/**
- * @abstract Truck bed lamps light up the bed of the truck.
- */
-extern SDLLightName const SDLLightNameExteriorRearTruckBedLights;
-
-/**
- * @abstract Trailer lights are lamps mounted on a trailer hitch.
- */
-extern SDLLightName const SDLLightNameExteriorRearTrailerLights;
-
-/**
- * @abstract It is the spotlights mounted on the left side of a vehicle.
- *
- */
-extern SDLLightName const SDLLightNameExteriorLeftSpotLights;
-
-/**
- * @abstract It is the spotlights mounted on the right side of a vehicle.
- */
-extern SDLLightName const SDLLightNameExteriorRightSpotLights;
-
-/**
- * @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.
- */
-extern SDLLightName const SDLLightNameExteriorLeftPuddleLights;
-
-/**
- * @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.
- */
-extern SDLLightName const SDLLightNameExteriorRightPuddleLights;
-
-/**
- * @abstract Include all exterior lights around the vehicle.
- */
-extern SDLLightName const SDLLightNameExteriorAllLights;
diff --git a/SmartDeviceLink/SDLLightStatus.h b/SmartDeviceLink/SDLLightStatus.h
deleted file mode 100644
index ee9fc4ae6..000000000
--- a/SmartDeviceLink/SDLLightStatus.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// SDLLightStatus.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of Light.
- *
- */
-typedef SDLEnum SDLLightStatus SDL_SWIFT_ENUM;
-
-/**
- * @abstract Light status currently on.
- */
-extern SDLLightStatus const SDLLightStatusOn;
-
-/**
- * @abstract Light status currently Off.
- */
-extern SDLLightStatus const SDLLightStatusOFF;
-
-/**
- * @abstract Light status currently RAMP_UP.
- */
-extern SDLLightStatus const SDLLightStatusRampUp;
-
-/**
- * @abstract Light status currently RAMP_DOWN.
- */
-extern SDLLightStatus const SDLLightStatusRampDown;
-
-/**
- * @abstract Light status currently UNKNOWN.
- */
-extern SDLLightStatus const SDLLightStatusUnknown;
-
-/**
- * @abstract Light status currently INVALID.
- */
-extern SDLLightStatus const SDLLightStatusInvalid;
diff --git a/SmartDeviceLink/SDLLockScreenConfiguration.h b/SmartDeviceLink/SDLLockScreenConfiguration.h
deleted file mode 100644
index e3e966987..000000000
--- a/SmartDeviceLink/SDLLockScreenConfiguration.h
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// SDLLockScreenConfiguration.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/13/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Describes when the lock screen should be shown.
- */
-typedef NS_ENUM(NSUInteger, SDLLockScreenConfigurationDisplayMode) {
- /// The lock screen should never be shown. This should almost always mean that you will build your own lock screen.
- SDLLockScreenConfigurationDisplayModeNever,
-
- /// The lock screen should only be shown when it is required by the head unit.
- SDLLockScreenConfigurationDisplayModeRequiredOnly,
-
- /// The lock screen should be shown when required by the head unit or when the head unit says that its optional, but *not* in other cases, such as before the user has interacted with your app on the head unit.
- SDLLockScreenConfigurationDisplayModeOptionalOrRequired,
-
- /// The lock screen should always be shown after connection.
- SDLLockScreenConfigurationDisplayModeAlways
-};
-
-/**
- A configuration describing how the lock screen should be used by the internal SDL system for your application. This configuration is provided before SDL starts and will govern the entire SDL lifecycle of your application.
- */
-@interface SDLLockScreenConfiguration : NSObject <NSCopying>
-
-/**
- Describes when the lock screen will be displayed. Defaults to `SDLLockScreenConfigurationDisplayModeRequiredOnly`.
- */
-@property (assign, nonatomic) SDLLockScreenConfigurationDisplayMode displayMode;
-
-/**
- * Whether or not the lock screen should be shown in the "lock screen optional" state. Defaults to NO.
- *
- * In order for the "lock screen optional" state to occur, the following must be true:
- * 1. The app should have received at least 1 driver distraction notification (i.e. a `OnDriverDistraction` notification) from SDL Core. Older versions of Core did not send a notification immediately on connection.
- * 2. The driver is not distracted (i.e. the last `OnDriverDistraction` notification received was for a driver distraction state off).
- * 3. The `hmiLevel` can not be `NONE`.
- * 4. If the `hmiLevel` is currently `BACKGROUND` then the previous `hmiLevel` should have been `FULL` or `LIMITED` (i.e. the user should have interacted with app before it was backgrounded).
-
- * Since this has been deprecated, setting this to true will set `displayMode` to `OptionalOrRequired` if `enableAutomaticLockScreen` is true, or will have no effect if it is false.
- */
-@property (assign, nonatomic) BOOL showInOptionalState __deprecated_msg("Use displayMode SDLLockScreenConfigurationDisplayModeOptionalOrRequired to replicate this being YES");
-
-/**
- If YES, then the lock screen can be dismissed with a downward swipe on compatible head units. Requires a connection of SDL 6.0+ and the head unit to enable the feature. Defaults to YES.
- */
-@property (assign, nonatomic) BOOL enableDismissGesture;
-
-/**
- If YES, then the lockscreen will show the vehicle's logo if the vehicle has made it available. If NO, then the lockscreen will not show the vehicle logo. Defaults to YES.
-*/
-@property (assign, nonatomic) BOOL showDeviceLogo;
-
-/**
- If YES, the lock screen should be managed by SDL and automatically engage when necessary. If NO, then the lock screen will never be engaged. Defaults to YES.
-
- Since this has been deprecated, setting this to false will set `displayMode` to `Never`. Setting it back to true will set it to `RequiredOnly` if `showInOptionalState` is false, or `OptionalOrRequired` if it is true.
- */
-@property (assign, nonatomic, readonly) BOOL enableAutomaticLockScreen __deprecated_msg("Use displayMode SDLLockScreenConfigurationDisplayModeNever to replicate this being NO");
-
-/**
- * The background color of the lock screen. This could be a branding color, or leave at the default for a dark blue-gray.
- */
-@property (copy, nonatomic, readonly) UIColor *backgroundColor;
-
-/**
- * Your app icon as it will appear on the lock screen.
- */
-@property (copy, nonatomic, readonly, nullable) UIImage *appIcon;
-
-/**
- * A custom view controller that the lock screen will manage the presentation of.
- */
-@property (strong, nonatomic, readonly, nullable) UIViewController *customViewController;
-
-/// Initializer unavailable
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- * Use this configuration if you wish to manage a lock screen yourself. This may be useful if the automatic presentation feature of SDLLockScreenManager is failing for some reason.
- *
- * @return The configuration
- */
-+ (instancetype)disabledConfiguration;
-
-/**
- * Use this configuration for the basic default lock screen. A custom app icon will not be used.
- *
- * @return The configuration
- */
-+ (instancetype)enabledConfiguration;
-
-/**
- * Use this configuration to provide a custom lock screen icon and a custom background color, or nil if you wish to use the default background color. This will use the default lock screen layout.
- *
- * @param lockScreenAppIcon The app icon to be shown on the lock screen
- * @param lockScreenBackgroundColor The color of the lock screen background
- *
- * @return The configuration
- */
-+ (instancetype)enabledConfigurationWithAppIcon:(UIImage *)lockScreenAppIcon backgroundColor:(nullable UIColor *)lockScreenBackgroundColor;
-
-/**
- * Use this configuration if you wish to provide your own view controller for the lock screen. This view controller's presentation and dismissal will still be managed by the lock screen manager. Note that you may subclass SDLLockScreenViewController and pass it here to continue to have the vehicle icon set to your view controller by the manager.
- *
- * @param viewController The view controller to be managed
- *
- * @return The configuration
- */
-+ (instancetype)enabledConfigurationWithViewController:(UIViewController *)viewController;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLockScreenConfiguration.m b/SmartDeviceLink/SDLLockScreenConfiguration.m
deleted file mode 100644
index c5cdfa8e6..000000000
--- a/SmartDeviceLink/SDLLockScreenConfiguration.m
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// SDLLockScreenConfiguration.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/13/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLockScreenConfiguration.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLLockScreenConfiguration
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithDisplayMode:(SDLLockScreenConfigurationDisplayMode)mode enableDismissGesture:(BOOL)enableDismissGesture showDeviceLogo:(BOOL)showDeviceLogo backgroundColor:(UIColor *)backgroundColor appIcon:(nullable UIImage *)appIcon viewController:(nullable UIViewController *)customViewController {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _displayMode = mode;
- _enableAutomaticLockScreen = (mode == SDLLockScreenConfigurationDisplayModeNever) ? NO : YES;
- _showInOptionalState = (mode == SDLLockScreenConfigurationDisplayModeOptionalOrRequired) ? YES : NO;
-
- _enableDismissGesture = enableDismissGesture;
- _backgroundColor = backgroundColor;
- _appIcon = appIcon;
- _customViewController = customViewController;
- _showDeviceLogo = showDeviceLogo;
-
- return self;
-}
-
-+ (instancetype)disabledConfiguration {
- return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeNever enableDismissGesture:NO showDeviceLogo:NO backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
-}
-
-+ (instancetype)enabledConfiguration {
- return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
-}
-
-+ (instancetype)enabledConfigurationWithAppIcon:(UIImage *)lockScreenAppIcon backgroundColor:(nullable UIColor *)lockScreenBackgroundColor {
- if (lockScreenBackgroundColor == nil) {
- lockScreenBackgroundColor = [self.class sdl_defaultBackgroundColor];
- }
-
- return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:lockScreenBackgroundColor appIcon:lockScreenAppIcon viewController:nil];
-}
-
-+ (instancetype)enabledConfigurationWithViewController:(UIViewController *)viewController {
- return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:[self.class sdl_defaultBackgroundColor] appIcon:nil viewController:viewController];
-}
-
-
-#pragma mark - Defaults
-
-+ (UIColor *)sdl_defaultBackgroundColor {
- return [UIColor colorWithRed:(57.0 / 255.0) green:(78.0 / 255.0) blue:(96.0 / 255.0) alpha:1.0];
-}
-
-
-#pragma mark - Setters / Getters
-
-- (void)setEnableAutomaticLockScreen:(BOOL)enableAutomaticLockScreen {
- _enableAutomaticLockScreen = enableAutomaticLockScreen;
-
- if (!_enableAutomaticLockScreen) {
- _displayMode = SDLLockScreenConfigurationDisplayModeNever;
- } else if (_showInOptionalState) {
- _displayMode = SDLLockScreenConfigurationDisplayModeOptionalOrRequired;
- } else {
- _displayMode = SDLLockScreenConfigurationDisplayModeRequiredOnly;
- }
-}
-
-- (void)setShowInOptionalState:(BOOL)showInOptionalState {
- _showInOptionalState = showInOptionalState;
-
- if (!_enableAutomaticLockScreen) {
- _displayMode = SDLLockScreenConfigurationDisplayModeNever;
- } else if (_showInOptionalState) {
- _displayMode = SDLLockScreenConfigurationDisplayModeOptionalOrRequired;
- } else {
- _displayMode = SDLLockScreenConfigurationDisplayModeRequiredOnly;
- }
-}
-
-#pragma mark - NSCopying
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- SDLLockScreenConfiguration *new = [[SDLLockScreenConfiguration allocWithZone:zone] initWithDisplayMode:_displayMode enableDismissGesture:_enableDismissGesture showDeviceLogo:_showDeviceLogo backgroundColor:_backgroundColor appIcon:_appIcon viewController:_customViewController];
-
- return new;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLockScreenManager.m b/SmartDeviceLink/SDLLockScreenManager.m
deleted file mode 100644
index 34ceee0bd..000000000
--- a/SmartDeviceLink/SDLLockScreenManager.m
+++ /dev/null
@@ -1,272 +0,0 @@
-//
-// SDLLockScreenManager.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/8/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLockScreenManager.h"
-
-#import "NSBundle+SDLBundle.h"
-#import "SDLLogMacros.h"
-#import "SDLLockScreenConfiguration.h"
-#import "SDLLockScreenStatusManager.h"
-#import "SDLLockScreenStatus.h"
-#import "SDLLockScreenViewController.h"
-#import "SDLNotificationConstants.h"
-#import "SDLNotificationDispatcher.h"
-#import "SDLOnLockScreenStatus.h"
-#import "SDLOnDriverDistraction.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLViewControllerPresentable.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLockScreenManager ()
-
-@property (assign, nonatomic) BOOL canPresent;
-@property (strong, nonatomic, readwrite) SDLLockScreenConfiguration *config;
-@property (strong, nonatomic) id<SDLViewControllerPresentable> presenter;
-@property (strong, nonatomic) SDLLockScreenStatusManager *statusManager;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-@property (strong, nonatomic, nullable) SDLOnLockScreenStatus *lastLockNotification;
-#pragma clang diagnostic pop
-
-@property (strong, nonatomic, nullable) SDLOnDriverDistraction *lastDriverDistractionNotification;
-@property (assign, nonatomic, readwrite, getter=isLockScreenDismissable) BOOL lockScreenDismissable;
-@property (assign, nonatomic) BOOL lockScreenDismissedByUser;
-
-@end
-
-
-@implementation SDLLockScreenManager
-
-- (instancetype)initWithConfiguration:(SDLLockScreenConfiguration *)config notificationDispatcher:(SDLNotificationDispatcher *)dispatcher presenter:(id<SDLViewControllerPresentable>)presenter {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _canPresent = NO;
- _lockScreenDismissable = NO;
- _config = config;
- _presenter = presenter;
- _lockScreenDismissedByUser = NO;
- _statusManager = [[SDLLockScreenStatusManager alloc] initWithNotificationDispatcher:dispatcher];
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_lockScreenStatusDidChange:) name:SDLDidChangeLockScreenStatusNotification object:_statusManager];
-#pragma clang diagnostic pop
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_lockScreenIconReceived:) name:SDLDidReceiveLockScreenIcon object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_appDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_driverDistractionStateDidChange:) name:SDLDidChangeDriverDistractionStateNotification object:dispatcher];
-
- return self;
-}
-
-- (void)start {
- self.canPresent = NO;
-
- __weak typeof(self) weakSelf = self;
- dispatch_async(dispatch_get_main_queue(), ^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
-
- if (UIApplication.sharedApplication.applicationState != UIApplicationStateActive) {
- SDLLogW(@"Attempted to start lock screen manager, but we are in the background. We will attempt to start again when we are in the foreground.");
- return;
- }
-
- // This usually means that we disconnected and connected with the device in the background. We will need to check and dismiss the view controller if it's presented before setting up a new one.
- if (strongSelf.presenter.lockViewController != nil) {
- [strongSelf.presenter stopWithCompletionHandler:^{
- __strong typeof(weakSelf) strongSelf2 = weakSelf;
- [strongSelf2 sdl_start];
- }];
- } else {
- [strongSelf sdl_start];
- }
- });
-}
-
-- (void)sdl_start {
- // Create and initialize the lock screen controller depending on the configuration
- if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeNever) {
- self.presenter.lockViewController = nil;
- return;
- } else if (self.config.customViewController != nil) {
- self.presenter.lockViewController = self.config.customViewController;
- } else {
- SDLLockScreenViewController *viewController = nil;
-
- @try {
- viewController = [[UIStoryboard storyboardWithName:@"SDLLockScreen" bundle:[NSBundle sdlBundle]] instantiateInitialViewController];
- } @catch (NSException *exception) {
- SDLLogE(@"Attempted to instantiate the default SDL Lock Screen and could not find the storyboard. Be sure the 'SmartDeviceLink' bundle is within your main bundle. We're just going to return without instantiating the lock screen");
- return;
- }
-
- viewController.appIcon = self.config.appIcon;
- viewController.backgroundColor = self.config.backgroundColor;
- self.presenter.lockViewController = viewController;
- }
-
- self.canPresent = YES;
-
- [self sdl_checkLockScreen];
-}
-
-- (void)stop {
- // Don't allow the lockscreen to present again until we start
- self.canPresent = NO;
- self.lastLockNotification = nil;
- self.lastDriverDistractionNotification = nil;
- [self.presenter stopWithCompletionHandler:nil];
-}
-
-- (nullable UIViewController *)lockScreenViewController {
- return self.presenter.lockViewController;
-}
-
-#pragma mark - Notification Selectors
-
-- (void)sdl_lockScreenStatusDidChange:(SDLRPCNotificationNotification *)notification {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- if (![notification isNotificationMemberOfClass:[SDLOnLockScreenStatus class]]) {
-#pragma clang diagnostic pop
- return;
- }
-
- self.lastLockNotification = notification.notification;
-
- [self sdl_checkLockScreen];
-}
-
-- (void)sdl_lockScreenIconReceived:(NSNotification *)notification {
- if (![notification.userInfo[SDLNotificationUserInfoObject] isKindOfClass:[UIImage class]]) {
- return;
- }
-
- UIImage *icon = notification.userInfo[SDLNotificationUserInfoObject];
-
- // If the VC is our special type, then add the vehicle icon. If they passed in a custom VC, there's no current way to show the vehicle icon. If they're managing it themselves, they can grab the notification themselves.
- if ([self.lockScreenViewController isKindOfClass:[SDLLockScreenViewController class]] && self.config.showDeviceLogo) {
- ((SDLLockScreenViewController *)self.lockScreenViewController).vehicleIcon = icon;
- }
-}
-
-- (void)sdl_appDidBecomeActive:(NSNotification *)notification {
- __weak typeof(self) weakSelf = self;
- dispatch_async(dispatch_get_main_queue(), ^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- // Restart, and potentially dismiss the lock screen if the app was disconnected in the background
- if (!strongSelf.canPresent) {
- [strongSelf start];
- }
-
- [strongSelf sdl_checkLockScreen];
- });
-}
-
-- (void)sdl_driverDistractionStateDidChange:(SDLRPCNotificationNotification *)notification {
- if (![notification isNotificationMemberOfClass:[SDLOnDriverDistraction class]]) {
- return;
- }
-
- self.lastDriverDistractionNotification = notification.notification;
- [self sdl_updateLockScreenDismissable];
-}
-
-#pragma mark - Private Helpers
-
-- (void)sdl_checkLockScreen {
- if (self.lockScreenViewController == nil || self.lastLockNotification == nil) {
- return;
- }
-
- __weak typeof(self) weakSelf = self;
- dispatch_async(dispatch_get_main_queue(), ^{
- [weakSelf sdl_updatePresentation];
- });
-}
-
-- (void)sdl_updatePresentation {
- if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeAlways) {
- if (self.canPresent) {
- [self.presenter updateLockScreenToShow:YES withCompletionHandler:nil];
- }
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusRequired]) {
-#pragma clang diagnostic pop
- if (self.canPresent && !self.lockScreenDismissedByUser) {
- [self.presenter updateLockScreenToShow:YES withCompletionHandler:nil];
- }
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOptional]) {
-#pragma clang diagnostic pop
- if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeOptionalOrRequired && self.canPresent && !self.lockScreenDismissedByUser) {
- [self.presenter updateLockScreenToShow:YES withCompletionHandler:nil];
- } else if (self.config.displayMode != SDLLockScreenConfigurationDisplayModeOptionalOrRequired) {
- [self.presenter updateLockScreenToShow:NO withCompletionHandler:nil];
- }
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOff]) {
-#pragma clang diagnostic pop
- [self.presenter updateLockScreenToShow:NO withCompletionHandler:nil];
- }
-}
-
-- (void)sdl_updateLockScreenDismissable {
- if (self.lastDriverDistractionNotification == nil ||
- self.lastDriverDistractionNotification.lockScreenDismissalEnabled == nil ||
- !self.lastDriverDistractionNotification.lockScreenDismissalEnabled.boolValue ||
- !self.config.enableDismissGesture) {
- self.lockScreenDismissable = NO;
- } else {
- self.lockScreenDismissable = YES;
- }
-
- if (self.lockScreenDismissedByUser &&
- [self.lastDriverDistractionNotification.state isEqualToEnum:SDLDriverDistractionStateOn] &&
- !self.lockScreenDismissable) {
- self.lockScreenDismissedByUser = NO;
- }
-
- if (!self.lockScreenDismissedByUser) {
- [self sdl_updateLockscreenViewControllerWithDismissableState:self.lockScreenDismissable];
- }
-}
-
-- (void)sdl_updateLockscreenViewControllerWithDismissableState:(BOOL)enabled {
- if (![self.lockScreenViewController isKindOfClass:[SDLLockScreenViewController class]]) {
- return;
- }
-
- __weak typeof(self) weakSelf = self;
- dispatch_async(dispatch_get_main_queue(), ^{
- __strong typeof(self) strongSelf = weakSelf;
- SDLLockScreenViewController *lockscreenViewController = (SDLLockScreenViewController *)strongSelf.lockScreenViewController;
- if (enabled) {
- [lockscreenViewController addDismissGestureWithCallback:^{
- [strongSelf.presenter updateLockScreenToShow:NO withCompletionHandler:nil];
- strongSelf.lockScreenDismissedByUser = YES;
- }];
- lockscreenViewController.lockedLabelText = strongSelf.lastDriverDistractionNotification.lockScreenDismissalWarning;
- } else {
- [lockscreenViewController removeDismissGesture];
- lockscreenViewController.lockedLabelText = nil;
- }
- });
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLockScreenStatus.h b/SmartDeviceLink/SDLLockScreenStatus.h
deleted file mode 100644
index d5d4846b9..000000000
--- a/SmartDeviceLink/SDLLockScreenStatus.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// SDLLockScreenStatus.h
-// SmartDeviceLink
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Describes what the status of the lock screen should be
-
- Used in OnLockScreenStatus
- */
-typedef SDLEnum SDLLockScreenStatus SDL_SWIFT_ENUM __deprecated;
-
-/**
- * LockScreen is Not Required
- */
-extern SDLLockScreenStatus const SDLLockScreenStatusOff __deprecated;
-
-/**
- * LockScreen is Optional
- */
-extern SDLLockScreenStatus const SDLLockScreenStatusOptional __deprecated;
-
-/**
- * LockScreen is Required
- */
-extern SDLLockScreenStatus const SDLLockScreenStatusRequired __deprecated;
diff --git a/SmartDeviceLink/SDLLockScreenStatus.m b/SmartDeviceLink/SDLLockScreenStatus.m
deleted file mode 100644
index 4b721ad8f..000000000
--- a/SmartDeviceLink/SDLLockScreenStatus.m
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// SDLLockScreenStatus.m
-// SmartDeviceLink
-//
-
-#import "SDLLockScreenStatus.h"
-
-SDLLockScreenStatus const SDLLockScreenStatusOff = @"OFF";
-SDLLockScreenStatus const SDLLockScreenStatusOptional = @"OPTIONAL";
-SDLLockScreenStatus const SDLLockScreenStatusRequired = @"REQUIRED";
diff --git a/SmartDeviceLink/SDLLockScreenStatusManager.h b/SmartDeviceLink/SDLLockScreenStatusManager.h
deleted file mode 100644
index 4230f6d2a..000000000
--- a/SmartDeviceLink/SDLLockScreenStatusManager.h
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// SDLLockScreenManager.h
-// SmartDeviceLink
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLHMILevel.h"
-#import "SDLLockScreenStatus.h"
-
-@class SDLNotificationDispatcher;
-@class SDLOnLockScreenStatus;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLockScreenStatusManager : NSObject
-
-@property (assign, nonatomic) BOOL userSelected;
-@property (assign, nonatomic) BOOL driverDistracted;
-@property (nullable, strong, nonatomic) SDLHMILevel hmiLevel;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-@property (strong, nonatomic, readonly) SDLLockScreenStatus lockScreenStatus;
-@property (strong, nonatomic, readonly) SDLOnLockScreenStatus *lockScreenStatusNotification;
-#pragma clang diagnostic pop
-
-- (instancetype)init NS_UNAVAILABLE;
-- (instancetype)initWithNotificationDispatcher:(SDLNotificationDispatcher *)dispatcher;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLockScreenStatusManager.m b/SmartDeviceLink/SDLLockScreenStatusManager.m
deleted file mode 100644
index e661abd80..000000000
--- a/SmartDeviceLink/SDLLockScreenStatusManager.m
+++ /dev/null
@@ -1,169 +0,0 @@
-//
-// SDLLockScreenManager.m
-// SmartDeviceLink
-//
-
-#import "SDLLockScreenStatusManager.h"
-
-#import "SDLLockScreenStatus.h"
-#import "SDLLogMacros.h"
-#import "SDLNotificationConstants.h"
-#import "SDLNotificationDispatcher.h"
-#import "SDLOnDriverDistraction.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLOnLockScreenStatus.h"
-#import "SDLRPCNotificationNotification.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLockScreenStatusManager ()
-
-@property (assign, nonatomic) BOOL haveDriverDistractionStatus;
-
-@end
-
-
-@implementation SDLLockScreenStatusManager
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithNotificationDispatcher:(SDLNotificationDispatcher *)dispatcher {
- self = [super init];
- if (!self) { return nil; }
-
- _userSelected = NO;
- _driverDistracted = NO;
- _haveDriverDistractionStatus = NO;
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusDidUpdate:) name:SDLDidChangeHMIStatusNotification object:dispatcher];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_driverDistractionDidUpdate:) name:SDLDidChangeDriverDistractionStateNotification object:dispatcher];
-
- return self;
-}
-
-
-#pragma mark - Getters / Setters
-#pragma mark Custom setters
-
-- (void)setDriverDistracted:(BOOL)driverDistracted {
- _driverDistracted = driverDistracted;
- _haveDriverDistractionStatus = YES;
-}
-
-- (void)setHmiLevel:(nullable SDLHMILevel)hmiLevel {
- if (_hmiLevel != hmiLevel) {
- _hmiLevel = hmiLevel;
- }
-
- if ([hmiLevel isEqualToEnum:SDLHMILevelFull] || [hmiLevel isEqualToEnum:SDLHMILevelLimited]) {
- self.userSelected = YES;
- } else if ([hmiLevel isEqualToEnum:SDLHMILevelNone]) {
- self.userSelected = NO;
- }
-}
-
-
-#pragma mark Custom Getters
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (SDLOnLockScreenStatus *)lockScreenStatusNotification {
- SDLOnLockScreenStatus *notification = [[SDLOnLockScreenStatus alloc] init];
-#pragma clang diagnostic pop
- notification.driverDistractionStatus = @(self.driverDistracted);
- notification.hmiLevel = self.hmiLevel;
- notification.userSelected = @(self.userSelected);
- notification.lockScreenStatus = self.lockScreenStatus;
-
- return notification;
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (SDLLockScreenStatus)lockScreenStatus {
-#pragma clang diagnostic pop
- if (self.hmiLevel == nil || [self.hmiLevel isEqualToEnum:SDLHMILevelNone]) {
- // App is not active on the car
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return SDLLockScreenStatusOff;
-#pragma clang diagnostic pop
- } else if ([self.hmiLevel isEqualToEnum:SDLHMILevelBackground]) {
- // App is in the background on the car
- if (self.userSelected) {
- // It was user selected
- if (self.haveDriverDistractionStatus && !self.driverDistracted) {
- // We have the distraction status, and the driver is not distracted
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return SDLLockScreenStatusOptional;
-#pragma clang diagnostic pop
- } else {
- // We don't have the distraction status, and/or the driver is distracted
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return SDLLockScreenStatusRequired;
-#pragma clang diagnostic pop
- }
- } else {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return SDLLockScreenStatusOff;
-#pragma clang diagnostic pop
- }
- } else if ([self.hmiLevel isEqualToEnum:SDLHMILevelFull] || [self.hmiLevel isEqualToEnum:SDLHMILevelLimited]) {
- // App is in the foreground on the car in some manner
- if (self.haveDriverDistractionStatus && !self.driverDistracted) {
- // We have the distraction status, and the driver is not distracted
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return SDLLockScreenStatusOptional;
-#pragma clang diagnostic pop
- } else {
- // We don't have the distraction status, and/or the driver is distracted
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return SDLLockScreenStatusRequired;
-#pragma clang diagnostic pop
- }
- } else {
- // This shouldn't be possible.
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return SDLLockScreenStatusOff;
-#pragma clang diagnostic pop
- }
-}
-
-#pragma mark - Utilities
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (void)sdl_postLockScreenStatus:(SDLOnLockScreenStatus *)statusNotification {
- SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:self rpcNotification:statusNotification];
-#pragma clang diagnostic pop
-
- SDLLogD(@"Lock screen status changed. Sending new notification: %@", notification);
- [[NSNotificationCenter defaultCenter] postNotification:notification];
-}
-
-
-#pragma mark - Observers
-
-- (void)sdl_hmiStatusDidUpdate:(SDLRPCNotificationNotification *)notification {
- SDLOnHMIStatus *hmiStatus = notification.notification;
-
- self.hmiLevel = hmiStatus.hmiLevel;
- [self sdl_postLockScreenStatus:self.lockScreenStatusNotification];
-}
-
-- (void)sdl_driverDistractionDidUpdate:(SDLRPCNotificationNotification *)notification {
- SDLOnDriverDistraction *driverDistraction = notification.notification;
-
- self.driverDistracted = [driverDistraction.state isEqualToEnum:SDLDriverDistractionStateOn];
- [self sdl_postLockScreenStatus:self.lockScreenStatusNotification];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogConfiguration.h b/SmartDeviceLink/SDLLogConfiguration.h
deleted file mode 100644
index 4b6b030cf..000000000
--- a/SmartDeviceLink/SDLLogConfiguration.h
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// SDLLogConfiguration.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 2/27/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLLogConstants.h"
-#import "SDLLogFilter.h"
-#import "SDLLogTarget.h"
-
-@class SDLLogFileModule;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Information about the current logging configuration
-@interface SDLLogConfiguration : NSObject <NSCopying>
-
-/**
- Any custom logging modules used by the developer's code. Defaults to none.
- */
-@property (copy, nonatomic) NSSet<SDLLogFileModule *> *modules;
-
-/**
- Where the logs will attempt to output. Defaults to Console.
- */
-@property (copy, nonatomic) NSSet<id<SDLLogTarget>> *targets;
-
-/**
- What log filters will run over this session. Defaults to none.
- */
-@property (copy, nonatomic) NSSet<SDLLogFilter *> *filters;
-
-/**
- How detailed of logs will be output. Defaults to Default.
- */
-@property (assign, nonatomic) SDLLogFormatType formatType;
-
-/**
- Whether or not logs will be run on a separate queue, asynchronously, allowing the following code to run before the log completes. Or if it will occur synchronously, which will prevent logs from being missed, but will slow down surrounding code. Defaults to YES.
- */
-@property (assign, nonatomic, getter=isAsynchronous) BOOL asynchronous;
-
-/**
- Whether or not error logs will be dispatched to loggers asynchronously. Defaults to NO.
- */
-@property (assign, nonatomic, getter=areErrorsAsynchronous) BOOL errorsAsynchronous;
-
-/**
- Whether or not assert logs will fire assertions in DEBUG mode. Assertions are always disabled in RELEASE builds. If assertions are disabled, only an error log will fire instead. Defaults to NO.
- */
-@property (assign, nonatomic, getter=areAssertionsDisabled) BOOL disableAssertions;
-
-/**
- Any modules that do not have an explicitly specified level will by default use the global log level. Defaults to Error.
- Do not specify Default for this parameter.
- */
-@property (assign, nonatomic) SDLLogLevel globalLogLevel;
-
-
-/**
- A default logger for production. This sets the format type to Default, the log level to Error, and only enables the ASL logger.
-
- @return A default configuration that may be customized.
- */
-+ (instancetype)defaultConfiguration;
-
-/**
- A debug logger for use in development. This sets the format type to Detailed, the log level to Debug, and enables the Console and ASL loggers.
-
- @return A debug configuration that may be customized.
- */
-+ (instancetype)debugConfiguration;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogConfiguration.m b/SmartDeviceLink/SDLLogConfiguration.m
deleted file mode 100644
index 36141ce45..000000000
--- a/SmartDeviceLink/SDLLogConfiguration.m
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// SDLLogConfiguration.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 2/27/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLogConfiguration.h"
-
-#import "SDLLogFileModule.h"
-#import "SDLLogFileModuleMap.h"
-#import "SDLLogTargetAppleSystemLog.h"
-#import "SDLLogTargetOSLog.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLLogConfiguration
-
-- (instancetype)init {
- self = [super init];
- if (!self) { return nil; }
-
- _modules = [NSSet set];
- _targets = [NSSet set];
- _filters = [NSSet set];
- _formatType = SDLLogFormatTypeDefault;
- _asynchronous = YES;
- _errorsAsynchronous = NO;
- _disableAssertions = NO;
- _globalLogLevel = SDLLogLevelError;
-
- return self;
-}
-
-- (instancetype)initWithDefaultConfiguration {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- NSOperatingSystemVersion osVersion = [NSProcessInfo processInfo].operatingSystemVersion;
-
- if (osVersion.majorVersion >= 10) {
- _targets = [NSSet setWithArray:@[[SDLLogTargetOSLog logger]]];
- } else {
- _targets = [NSSet setWithArray:@[[SDLLogTargetAppleSystemLog logger]]];
- }
-
- _modules = [SDLLogFileModuleMap sdlModuleMap];
-
- return self;
-}
-
-+ (instancetype)defaultConfiguration {
- return [[self.class alloc] initWithDefaultConfiguration];
-}
-
-- (instancetype)initWithDebugConfiguration {
- self = [self initWithDefaultConfiguration];
- if (!self) { return nil; }
-
- _formatType = SDLLogFormatTypeDetailed;
- _globalLogLevel = SDLLogLevelDebug;
-
- return self;
-}
-
-+ (instancetype)debugConfiguration {
- return [[self.class alloc] initWithDebugConfiguration];
-}
-
-#pragma mark - NSCopying
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- SDLLogConfiguration *newConfig = [[self.class allocWithZone:zone] init];
- newConfig.modules = self.modules;
- newConfig.targets = self.targets;
- newConfig.filters = self.filters;
- newConfig.formatType = self.formatType;
- newConfig.asynchronous = self.asynchronous;
- newConfig.errorsAsynchronous = self.errorsAsynchronous;
- newConfig.disableAssertions = self.areAssertionsDisabled;
- newConfig.globalLogLevel = self.globalLogLevel;
-
- return newConfig;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogFileModuleMap.m b/SmartDeviceLink/SDLLogFileModuleMap.m
deleted file mode 100644
index 3d25be5d9..000000000
--- a/SmartDeviceLink/SDLLogFileModuleMap.m
+++ /dev/null
@@ -1,147 +0,0 @@
-//
-// SDLLogFileModuleMap.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 3/2/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLogFileModuleMap.h"
-
-#import "SDLLogFileModule.h"
-
-@implementation SDLLogFileModuleMap
-
-+ (NSSet<SDLLogFileModule *> *)sdlModuleMap {
- return [NSSet setWithArray:@[[self sdl_transportModule],
- [self sdl_tcpTransportModule],
- [self sdl_iapTransportModule],
- [self sdl_secondaryTransportModule],
- [self sdl_protocolModule],
- [self sdl_rpcModule],
- [self sdl_dispatcherModule],
- [self sdl_fileManagerModule],
- [self sdl_encryptionLifecycleManagerModule],
- [self sdl_lifecycleManagerModule],
- [self sdl_systemCapabilityModule],
- [self sdl_lockscreenManagerModule],
- [self sdl_streamingMediaManagerModule],
- [self sdl_videoStreamingMediaManagerModule],
- [self sdl_videoStreamingMediaTranscoderModule],
- [self sdl_audioStreamingMediaManagerModule],
- [self sdl_audioStreamingMediaTranscoderModule],
- [self sdl_screenManagerModule],
- [self sdl_screenManagerTextAndGraphicModule],
- [self sdl_screenManagerSoftButtonModule],
- [self sdl_screenManagerSubscribeButtonModule],
- [self sdl_screenManagerMenuModule],
- [self sdl_screenManagerChoiceSetModule],
- [self sdl_utilitiesModule]]];
-}
-
-#pragma mark Transport
-
-+ (SDLLogFileModule *)sdl_transportModule {
- return [SDLLogFileModule moduleWithName:@"Transport" files:[NSSet setWithArray:@[@"SDLStreamDelegate"]]];
-}
-
-+ (SDLLogFileModule *)sdl_tcpTransportModule {
- return [SDLLogFileModule moduleWithName:@"Transport/TCP" files:[NSSet setWithArray:@[@"SDLTCPTransport"]]];
-}
-
-+ (SDLLogFileModule *)sdl_iapTransportModule {
- return [SDLLogFileModule moduleWithName:@"Transport/IAP" files:[NSSet setWithArray:@[@"SDLIAPSession", @"SDLIAPTransport", @"SDLIAPDataSession", @"SDLIAPControlSession"]]];
-}
-
-+ (SDLLogFileModule *)sdl_secondaryTransportModule {
- return [SDLLogFileModule moduleWithName:@"Transport/Secondary" files:[NSSet setWithArray:@[@"SDLSecondaryTransportManager"]]];
-}
-
-#pragma mark Low-Level
-
-+ (SDLLogFileModule *)sdl_protocolModule {
- return [SDLLogFileModule moduleWithName:@"Protocol" files:[NSSet setWithArray:@[@"SDLProtocol", @"SDLProtocolMessageAssembler", @"SDLProtocolMessageDisassembler", @"SDLProtocolReceivedMessageRouter", @"SDLV1ProtocolMessage", @"SDLV2ProtocolMessage", @"SDLV1ProtocolHeader", @"SDLV2ProtocolHeader", @"SDLGlobals"]]];
-}
-
-+ (SDLLogFileModule *)sdl_rpcModule {
- return [SDLLogFileModule moduleWithName:@"RPC" files:[NSSet setWithArray:@[@"SDLRPCPayload", @"NSMutableDictionary+Store"]]];
-}
-
-#pragma mark Managers
-
-+ (SDLLogFileModule *)sdl_dispatcherModule {
- return [SDLLogFileModule moduleWithName:@"Dispatcher" files:[NSSet setWithArray:@[@"SDLNotificationDispatcher", @"SDLResponseDispatcher"]]];
-}
-
-+ (SDLLogFileModule *)sdl_fileManagerModule {
- return [SDLLogFileModule moduleWithName:@"File" files:[NSSet setWithArray:@[@"SDLFileManager", @"SDLFile", @"SDLArtwork", @"SDLListFilesOperation", @"SDLUploadFileOperation", @"SDLDeleteFileOperation"]]];
-}
-
-+ (SDLLogFileModule *)sdl_encryptionLifecycleManagerModule {
- return [SDLLogFileModule moduleWithName:@"Encryption" files:[NSSet setWithArray:@[@"SDLEncryptionLifecycleManager", @"SDLEncryptionConfiguration", @"SDLEncryptionManagerConstants"]]];
-}
-
-+ (SDLLogFileModule *)sdl_lifecycleManagerModule {
- return [SDLLogFileModule moduleWithName:@"Lifecycle" files:[NSSet setWithArray:@[@"SDLLifecycleManager", @"SDLManager", @"SDLAsynchronousOperation", @"SDLBackgroundTaskManager", @"SDLPolicyDataParser", @"SDLLifecycleProtocolHandler", @"SDLLifecycleRPCAdapter", @"SDLLifecycleSyncPDataHandler", @"SDLLifecycleSystemRequestHandler", @"SDLLifecycleMobileHMIStateHandler"]]];
-}
-
-+ (SDLLogFileModule *)sdl_systemCapabilityModule {
- return [SDLLogFileModule moduleWithName:@"System Capability" files:[NSSet setWithArray:@[@"SDLSystemCapabilityManager"]]];
-}
-
-+ (SDLLogFileModule *)sdl_lockscreenManagerModule {
- return [SDLLogFileModule moduleWithName:@"Lockscreen" files:[NSSet setWithArray:@[@"SDLLockScreenManager", @"SDLLockScreenViewController", @"SDLLockScreenPresenter", @"SDLCacheFileManager", @"SDLLockScreenStatusManager"]]];
-}
-
-+ (SDLLogFileModule *)sdl_streamingMediaManagerModule {
- return [SDLLogFileModule moduleWithName:@"Audio and Video Streaming" files:[NSSet setWithArray:@[@"SDLStreamingMediaManager"]]];
-}
-
-+ (SDLLogFileModule *)sdl_videoStreamingMediaManagerModule {
- return [SDLLogFileModule moduleWithName:@"Video Streaming" files:[NSSet setWithArray:@[@"SDLStreamingVideoLifecycleManager", @"SDLTouchManager", @"SDLCarWindow", @"SDLFocusableItemLocator"]]];
-}
-
-+ (SDLLogFileModule *)sdl_videoStreamingMediaTranscoderModule {
- return [SDLLogFileModule moduleWithName:@"Video Streaming/Transcoding" files:[NSSet setWithArray:@[@"SDLH264VideoEncoder", @"SDLRAWH264Packetizer", @"SDLRTPH264Packetizer"]]];
-}
-
-+ (SDLLogFileModule *)sdl_audioStreamingMediaManagerModule {
- return [SDLLogFileModule moduleWithName:@"Audio Streaming" files:[NSSet setWithArray:@[@"SDLStreamingAudioLifecycleManager"]]];
-}
-
-+ (SDLLogFileModule *)sdl_audioStreamingMediaTranscoderModule {
- return [SDLLogFileModule moduleWithName:@"Audio Streaming/Transcoding" files:[NSSet setWithArray:@[@"SDLAudioStreamManager", @"SDLPCMAudioConverter"]]];
-}
-
-+ (SDLLogFileModule *)sdl_screenManagerModule {
- return [SDLLogFileModule moduleWithName:@"Screen" files:[NSSet setWithArray:@[@"SDLScreenManager"]]];
-}
-
-+ (SDLLogFileModule *)sdl_screenManagerTextAndGraphicModule {
- return [SDLLogFileModule moduleWithName:@"Screen/TextAndGraphic" files:[NSSet setWithArray:@[@"SDLTextAndGraphicManager"]]];
-}
-
-+ (SDLLogFileModule *)sdl_screenManagerSoftButtonModule {
- return [SDLLogFileModule moduleWithName:@"Screen/SoftButton" files:[NSSet setWithArray:@[@"SDLSoftButtonManager", @"SDLSoftButtonObject", @"SDLSoftButtonState", @"SDLSoftButtonTransitionOperation", @"SDLSoftButtonReplaceOperation"]]];
-}
-
-+ (SDLLogFileModule *)sdl_screenManagerSubscribeButtonModule {
- return [SDLLogFileModule moduleWithName:@"Screen/SubscribeButton" files:[NSSet setWithArray:@[@"SDLSubscribeButtonManager", @"SDLSubscribeButtonObserver"]]];
-}
-
-+ (SDLLogFileModule *)sdl_screenManagerMenuModule {
- return [SDLLogFileModule moduleWithName:@"Screen/Menu" files:[NSSet setWithArray:@[@"SDLMenuManager", @"SDLVoiceCommandManager"]]];
-}
-
-+ (SDLLogFileModule *)sdl_screenManagerChoiceSetModule {
- return [SDLLogFileModule moduleWithName:@"Screen/ChoiceSet" files:[NSSet setWithArray:@[@"SDLChoiceSetManager", @"SDLCheckChoiceVROptionalOperation", @"SDLDeleteChoicesOperation", @"SDLPreloadChoicesOperation", @"SDLPresentChoiceSetOperation", @"SDLPresentKeyboardOperation", @"SDLChoiceSet"]]];
-}
-
-
-#pragma mark Utilities
-
-+ (SDLLogFileModule *)sdl_utilitiesModule {
- return [SDLLogFileModule moduleWithName:@"Utilities" files:[NSSet setWithArray:@[@"SDLStateMachine"]]];
-}
-
-@end
diff --git a/SmartDeviceLink/SDLLogManager.m b/SmartDeviceLink/SDLLogManager.m
deleted file mode 100644
index ae0fa317f..000000000
--- a/SmartDeviceLink/SDLLogManager.m
+++ /dev/null
@@ -1,355 +0,0 @@
-//
-// SDLLogManager.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 2/27/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLogManager.h"
-
-#import "SDLGlobals.h"
-#import "SDLHexUtility.h"
-#import "SDLLogConfiguration.h"
-#import "SDLLogFileModule.h"
-#import "SDLLogModel.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLogManager ()
-
-@property (copy, nonatomic, readwrite) NSSet<SDLLogFileModule *> *modules;
-@property (copy, nonatomic, readwrite) NSSet<id<SDLLogTarget>> *targets;
-@property (copy, nonatomic, readwrite) NSSet<SDLLogFilter *> *filters;
-
-@property (assign, nonatomic, readwrite) SDLLogLevel globalLogLevel;
-@property (assign, nonatomic, readwrite) SDLLogFormatType formatType;
-
-@property (assign, nonatomic, readwrite, getter=isAsynchronous) BOOL asynchronous;
-@property (assign, nonatomic, readwrite, getter=areErrorsAsynchronous) BOOL errorsAsynchronous;
-@property (assign, nonatomic, readwrite, getter=areAssertionsDisabled) BOOL disableAssertions;
-
-@end
-
-@implementation SDLLogManager
-
-static NSDateFormatter *_dateFormatter = nil;
-static dispatch_queue_t _logQueue = NULL;
-
-+ (SDLLogManager *)sharedManager {
- static SDLLogManager *sharedManager = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedManager = [[SDLLogManager alloc] init];
- });
-
- return sharedManager;
-}
-
-- (instancetype)init {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _modules = [NSSet set];
- _targets = [NSSet set];
- _filters = [NSSet set];
-
- _asynchronous = YES;
- _errorsAsynchronous = NO;
- _disableAssertions = NO;
- _globalLogLevel = SDLLogLevelError;
- _formatType = SDLLogFormatTypeDefault;
-
- return self;
-}
-
-
-#pragma mark - Configuration
-
-+ (void)setConfiguration:(SDLLogConfiguration *)configuration {
- [[self sharedManager] setConfiguration:configuration];
-}
-
-- (void)setConfiguration:(SDLLogConfiguration *)configuration {
- self.modules = configuration.modules;
- self.filters = configuration.filters;
- self.formatType = configuration.formatType;
- self.asynchronous = configuration.isAsynchronous;
- self.errorsAsynchronous = configuration.areErrorsAsynchronous;
- self.disableAssertions = configuration.areAssertionsDisabled;
- self.globalLogLevel = configuration.globalLogLevel;
-
- // Start the loggers
- NSMutableSet<id<SDLLogTarget>> *startedLoggers = [NSMutableSet set];
- for (id<SDLLogTarget> target in configuration.targets) {
- // If the logger fails setup, discard it, otherwise, keep it
- if ([target setupLogger]) {
- [startedLoggers addObject:target];
- } else {
- // Because we haven't set up loggers yet, this is necessary
- NSLog(@"(SDL) Warning: Log target failed setup: %@", NSStringFromClass(target.class));
- }
- }
- self.targets = [startedLoggers copy];
-}
-
-
-#pragma mark - Performing Logging
-
-+ (void)logBytes:(NSData *)data direction:(SDLLogBytesDirection)direction timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel {
- [[self sharedManager] logBytes:data direction:direction timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel];
-}
-
-+ (void)logAssertWithTimestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
- va_list args;
- va_start(args, message);
- NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
- va_end(args);
-
- [[self sharedManager] logAssertWithTimestamp:timestamp file:file functionName:functionName line:line queue:queueLabel formatMessage:@"%@", format];
-}
-
-+ (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel message:(NSString *)message {
- [[self sharedManager] logWithLevel:level timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:message];
-}
-
-+ (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
- va_list args;
- va_start(args, message);
- NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
- va_end(args);
-
- [[self sharedManager] logWithLevel:level timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:format];
-}
-
-- (void)logBytes:(NSData *)data direction:(SDLLogBytesDirection)direction timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel {
- // This only works on Verbose logging
- if ([self sdl_logLevelForFile:file] < SDLLogLevelVerbose) { return; }
-
- NSString *message = [NSString stringWithFormat:@"%@(%lu bytes): %@", [self sdl_logStringForDirection:direction], (unsigned long)data.length, [SDLHexUtility getHexString:data]];
- [self logWithLevel:SDLLogLevelVerbose timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:message];
-}
-
-- (void)logAssertWithTimestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
- va_list args;
- va_start(args, message);
- NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
- va_end(args);
-
- [self logWithLevel:SDLLogLevelError timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:format];
-
- NSAssert(self.areAssertionsDisabled, @"SDL ASSERTION: %@. To disable these assertions, alter your `SDLLogConfiguration` and set `disableAssertions` to `YES`", format);
-}
-
-- (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
- va_list args;
- va_start(args, message);
- NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
- va_end(args);
-
- [self logWithLevel:level timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:format];
-}
-
-- (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel message:(NSString *)message {
- NSString *moduleName = [self sdl_moduleForFile:file] ? [self sdl_moduleForFile:file].name : @"";
-
- SDLLogModel *log = [[SDLLogModel alloc] initWithMessage:message
- timestamp:timestamp
- level:level
- fileName:file
- moduleName:moduleName
- functionName:functionName
- line:line
- queueLabel:queueLabel];
- [self sdl_queueLog:log];
-}
-
-- (void)sdl_queueLog:(SDLLogModel *)log {
- if (log.level == SDLLogLevelError) {
- if (self.areErrorsAsynchronous) {
- [self sdl_asyncLog:log];
- } else {
- [self sdl_syncLog:log];
- }
- } else {
- if (self.isAsynchronous) {
- [self sdl_asyncLog:log];
- } else {
- [self sdl_syncLog:log];
- }
- }
-}
-
-- (void)sdl_asyncLog:(SDLLogModel *)log {
- dispatch_async(self.class.logQueue, ^{
- [self sdl_log:log];
- });
-}
-
-- (void)sdl_syncLog:(SDLLogModel *)log {
- [self sdl_log:log];
-}
-
-- (void)sdl_log:(SDLLogModel *)log {
- if ([self sdl_logLevelForFile:log.fileName] < log.level) { return; }
-
- for (SDLLogFilter *filter in self.filters) {
- if (!filter.filter(log)) { return; }
- }
-
- NSString *formattedLog = nil;
- switch (self.formatType) {
- case SDLLogFormatTypeSimple:
- formattedLog = [self sdl_simpleFormatLog:log];
- break;
- case SDLLogFormatTypeDefault:
- formattedLog = [self sdl_defaultFormatLog:log];
- break;
- case SDLLogFormatTypeDetailed:
- formattedLog = [self sdl_detailedFormatLog:log];
- break;
- }
-
- for (id<SDLLogTarget> target in self.targets) {
- [target logWithLog:log formattedLog:formattedLog];
- }
-}
-
-
-#pragma mark - Log formatting
-
-- (NSString *)sdl_simpleFormatLog:(SDLLogModel *)log {
- return [self sdl_formatLog:log showDate:YES showLogLevelCharacter:YES showLogLevelName:NO showQueueName:NO showModuleName:YES showFileName:NO showFunctionName:NO showLine:NO];
-}
-
-- (NSString *)sdl_defaultFormatLog:(SDLLogModel *)log {
- return [self sdl_formatLog:log showDate:YES showLogLevelCharacter:YES showLogLevelName:NO showQueueName:NO showModuleName:YES showFileName:YES showFunctionName:NO showLine:YES];
-}
-
-- (NSString *)sdl_detailedFormatLog:(SDLLogModel *)log {
- return [self sdl_formatLog:log showDate:YES showLogLevelCharacter:YES showLogLevelName:YES showQueueName:YES showModuleName:YES showFileName:YES showFunctionName:YES showLine:YES];
-}
-
-- (NSString *)sdl_formatLog:(SDLLogModel *)log showDate:(BOOL)date showLogLevelCharacter:(BOOL)logChar showLogLevelName:(BOOL)logName showQueueName:(BOOL)queueName showModuleName:(BOOL)moduleName showFileName:(BOOL)fileName showFunctionName:(BOOL)functionName showLine:(BOOL)line {
- NSMutableString *logString = [NSMutableString string];
-
- if (date) {
- [logString appendFormat:@"%@ ", [self.class.dateFormatter stringFromDate:log.timestamp]];
- }
- if (logChar) {
- [logString appendFormat:@"%@ ", [self sdl_logCharacterForLevel:log.level]];
- }
- if (logName) {
- [logString appendFormat:@"%@ ", [self sdl_logNameForLevel:log.level]];
- }
- if (queueName) {
- [logString appendFormat:@"%@ ", log.queueLabel];
- }
- if (moduleName) {
- [logString appendFormat:@"(SDL)%@", log.moduleName];
- }
- if (fileName) {
- [logString appendFormat:@":%@", log.fileName];
- }
- if (functionName) {
- [logString appendFormat:@":%@", log.functionName];
- }
- if (line) {
- [logString appendFormat:@":%ld ", (long)log.line];
- }
- [logString appendFormat:@"- %@\n", log.message];
-
- return [logString copy];
-}
-
-- (NSString *)sdl_logCharacterForLevel:(SDLLogLevel)logLevel {
- switch (logLevel) {
- case SDLLogLevelVerbose: return @"⚪";
- case SDLLogLevelDebug: return @"🔵";
- case SDLLogLevelWarning: return @"🔶";
- case SDLLogLevelError: return @"❌";
- default:
- NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
- return @"";
- }
-}
-
-- (NSString *)sdl_logNameForLevel:(SDLLogLevel)logLevel {
- switch (logLevel) {
- case SDLLogLevelVerbose: return @"VERBOSE";
- case SDLLogLevelDebug: return @"DEBUG";
- case SDLLogLevelWarning: return @"WARNING";
- case SDLLogLevelError: return @"ERROR";
- default:
- NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
- return @"UNKNOWN";
- }
-}
-
-- (NSString *)sdl_logStringForDirection:(SDLLogBytesDirection)direction {
- switch (direction) {
- case SDLLogBytesDirectionReceive:
- return @"RX";
- case SDLLogBytesDirectionTransmit:
- return @"TX";
- }
-}
-
-
-#pragma mark - Modules
-
-- (SDLLogLevel)sdl_logLevelForFile:(NSString *)fileName {
- SDLLogFileModule *module = [self sdl_moduleForFile:fileName];
- if (!module) {
- return self.globalLogLevel;
- }
-
- if ([module containsFile:fileName]) {
- if (module.logLevel == SDLLogLevelDefault) {
- return self.globalLogLevel;
- }
- }
-
- return module.logLevel;
-}
-
-- (nullable SDLLogFileModule *)sdl_moduleForFile:(NSString *)fileName {
- for (SDLLogFileModule *module in self.modules) {
- if ([module containsFile:fileName]) { return module; }
- }
-
- return nil;
-}
-
-
-#pragma mark - Class property getters
-
-+ (NSDateFormatter *)dateFormatter {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- _dateFormatter = [[NSDateFormatter alloc] init];
- _dateFormatter.dateFormat = @"HH:mm:ss:SSS";
- });
-
- return _dateFormatter;
-}
-
-+ (dispatch_queue_t)logQueue {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- if (@available(iOS 10.0, *)) {
- _logQueue = dispatch_queue_create_with_target("com.sdl.log", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
- } else {
- _logQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- }
- });
-
- return _logQueue;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogTargetAppleSystemLog.h b/SmartDeviceLink/SDLLogTargetAppleSystemLog.h
deleted file mode 100644
index 39923a124..000000000
--- a/SmartDeviceLink/SDLLogTargetAppleSystemLog.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// SDLLogTargetASL.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 2/28/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLLogTarget.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The Apple System Log target is an iOS 2.0+ compatible log target that logs to both the Console and to the System Log.
- */
-@interface SDLLogTargetAppleSystemLog : NSObject <SDLLogTarget>
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogTargetAppleSystemLog.m b/SmartDeviceLink/SDLLogTargetAppleSystemLog.m
deleted file mode 100644
index c9cb3112b..000000000
--- a/SmartDeviceLink/SDLLogTargetAppleSystemLog.m
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// SDLLogTargetASL.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 2/28/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLogTargetAppleSystemLog.h"
-
-#import <asl.h>
-
-#import "SDLLogModel.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLogTargetAppleSystemLog ()
-
-@end
-
-
-@implementation SDLLogTargetAppleSystemLog
-
-+ (id<SDLLogTarget>)logger {
- return [[self alloc] init];
-}
-
-- (BOOL)setupLogger {
- return YES;
-}
-
-- (void)logWithLog:(SDLLogModel *)log formattedLog:(NSString *)stringLog {
- const char *charLog = [stringLog UTF8String];
-
- int aslLevel = [self sdl_aslLevelForSDLLogLevel:log.level];
- int result = asl_log_message(aslLevel, "%s", charLog);
-
- if (result != 0) {
- // Something failed
- }
-}
-
-- (void)teardownLogger {
-
-}
-
-
-#pragma mark - Utilities
-
-- (int)sdl_aslLevelForSDLLogLevel:(SDLLogLevel)level {
- switch (level) {
- case SDLLogLevelVerbose: return ASL_LEVEL_NOTICE;
- case SDLLogLevelDebug: return ASL_LEVEL_NOTICE;
- case SDLLogLevelWarning: return ASL_LEVEL_ERR;
- case SDLLogLevelError: return ASL_LEVEL_CRIT;
- default:
- NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
- return ASL_LEVEL_DEBUG;
- }
-}
-
-
-#pragma mark - NSObject
-
-- (NSUInteger)hash {
- return NSStringFromClass(self.class).hash;
-}
-
-// For the target classes, we're going to assume that if they're the same class, they're the same. The reason for this is so that NSSet, for instance, will only allow one of each target type in a set.
-- (BOOL)isEqual:(id)object {
- return [object isMemberOfClass:self.class];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogTargetOSLog.m b/SmartDeviceLink/SDLLogTargetOSLog.m
deleted file mode 100644
index e5d87c293..000000000
--- a/SmartDeviceLink/SDLLogTargetOSLog.m
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// SDLLogTargetOSLog.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 2/28/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLLogTargetOSLog.h"
-
-#import <os/log.h>
-
-#import "SDLLogModel.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLLogTargetOSLog ()
-
-@property (strong, nonatomic) NSMutableDictionary<NSString *, os_log_t> *clients;
-
-@end
-
-
-@implementation SDLLogTargetOSLog
-
-- (instancetype)init {
- self = [super init];
- if (!self) { return nil; }
-
- _clients = [NSMutableDictionary dictionary];
-
- return self;
-}
-
-+ (id<SDLLogTarget>)logger {
- return [[self alloc] init];
-}
-
-- (BOOL)setupLogger {
- // If the iPhone OS is less than 10.0, os_log is not available.
- NSOperatingSystemVersion osVersion = [NSProcessInfo processInfo].operatingSystemVersion;
-
- return osVersion.majorVersion >= 10;
-}
-
-- (void)logWithLog:(SDLLogModel *)log formattedLog:(NSString *)stringLog {
- if (@available(iOS 10.0, *)) {
- NSString *moduleName = log.moduleName ? log.moduleName : @"";
- if (self.clients[moduleName] == nil) {
- self.clients[moduleName] = os_log_create("com.sdl.log", moduleName.UTF8String);
- }
-
- os_log_with_type(self.clients[moduleName], [self oslogLevelForSDLLogLevel:log.level], "%{public}@", log.message);
- }
-}
-
-- (void)teardownLogger {
- self.clients = [NSMutableDictionary dictionary];
-}
-
-- (os_log_type_t)oslogLevelForSDLLogLevel:(SDLLogLevel)level {
- switch (level) {
- case SDLLogLevelVerbose: return OS_LOG_TYPE_DEBUG;
- case SDLLogLevelDebug: return OS_LOG_TYPE_INFO;
- case SDLLogLevelWarning: return OS_LOG_TYPE_ERROR;
- case SDLLogLevelError: return OS_LOG_TYPE_FAULT;
- default:
- NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
- return OS_LOG_TYPE_DEFAULT;
- }
-}
-
-
-#pragma mark - NSObject
-
-- (NSUInteger)hash {
- return NSStringFromClass(self.class).hash;
-}
-
-// For the target classes, we're going to assume that if they're the same class, they're the same. The reason for this is so that NSSet, for instance, will only allow one of each target type in a set.
-- (BOOL)isEqual:(id)object {
- return [object isMemberOfClass:self.class];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMacros.h b/SmartDeviceLink/SDLMacros.h
deleted file mode 100644
index 1ab0bb6d0..000000000
--- a/SmartDeviceLink/SDLMacros.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// SDLMacros.h
-// SmartDeviceLink-iOS
-//
-// Created by Muller, Alexander (A.) on 10/17/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#ifndef SDLMacros_h
-#define SDLMacros_h
-
-// Resolves issue of pre-xcode 8 versions due to NS_STRING_ENUM unavailability.
-#ifndef SDL_SWIFT_ENUM
- #if __has_attribute(swift_wrapper)
- #define SDL_SWIFT_ENUM NS_STRING_ENUM
- #else
- #define SDL_SWIFT_ENUM
- #endif
-#endif
-
-#ifndef SDL_SUPPORTS_CLASS_PROPERTIES
- #if defined(SWIFT_CLASS_EXTRA)
- #define SDL_SUPPORTS_CLASS_PROPERTIES FOUNDATION_SWIFT_SDK_EPOCH_AT_LEAST(8)
- #else
- #define SDL_SUPPORTS_CLASS_PROPERTIES NO
- #endif
-#endif
-
-#endif /* SDLMacros_h */
diff --git a/SmartDeviceLink/SDLMaintenanceModeStatus.h b/SmartDeviceLink/SDLMaintenanceModeStatus.h
deleted file mode 100644
index 0dba0bc68..000000000
--- a/SmartDeviceLink/SDLMaintenanceModeStatus.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// SDLMaintenanceModeStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Describes the maintenence mode. Used in nothing.
- */
-typedef SDLEnum SDLMaintenanceModeStatus SDL_SWIFT_ENUM;
-
-/**
- * Maintenance Mode Status : Normal
- */
-extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusNormal;
-
-/**
- * Maintenance Mode Status : Near
- */
-extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusNear;
-
-/**
- * Maintenance Mode Status : Active
- */
-extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusActive;
-
-/**
- * Maintenance Mode Status : Feature not present
- */
-extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusFeatureNotPresent;
diff --git a/SmartDeviceLink/SDLManagerDelegate.h b/SmartDeviceLink/SDLManagerDelegate.h
deleted file mode 100644
index f91a5ecb9..000000000
--- a/SmartDeviceLink/SDLManagerDelegate.h
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// SDLManagerDelegate.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 6/7/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLAudioStreamingState.h"
-#import "SDLHMILevel.h"
-#import "SDLSystemContext.h"
-#import "SDLLifecycleConfigurationUpdate.h"
-#import "SDLLanguage.h"
-#import "SDLVideoStreamingState.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// The manager's delegate
-@protocol SDLManagerDelegate <NSObject>
-
-/**
- * Called upon a disconnection from the remote system.
- */
-- (void)managerDidDisconnect;
-
-/**
- * Called when the HMI level state of this application changes on the remote system. This is equivalent to the application's state changes in iOS such as foreground, background, or closed.
- *
- * @param oldLevel The previous level which has now been left.
- * @param newLevel The current level.
- */
-- (void)hmiLevel:(SDLHMILevel)oldLevel didChangeToLevel:(SDLHMILevel)newLevel;
-
-@optional
-/**
- * Called when the audio streaming state of this application changes on the remote system. This refers to when streaming audio is audible to the user.
- *
- * @param oldState The previous state which has now been left.
- * @param newState The current state.
- */
-- (void)audioStreamingState:(nullable SDLAudioStreamingState)oldState didChangeToState:(SDLAudioStreamingState)newState;
-
-/// Called when the video streaming state of this application changes. This refers to streaming video for navigation purposes. If you are "autostreaming" via CarWindow, you should not do anything with this method. Everything should be handled for you automatically.
-///
-/// Only supported on RPC v5.0+ connections.
-///
-/// @param oldState The previous state
-/// @param newState The current state
-- (void)videoStreamingState:(nullable SDLVideoStreamingState)oldState didChangetoState:(SDLVideoStreamingState)newState;
-
-/**
- * Called when the system context of this application changes on the remote system. This refers to whether or not a user-initiated interaction is in progress, and if so, what it is.
- *
- * @param oldContext The previous context which has now been left.
- * @param newContext The current context.
- */
-- (void)systemContext:(nullable SDLSystemContext)oldContext didChangeToContext:(SDLSystemContext)newContext;
-
-/**
- * Called when the lifecycle manager detected a language mismatch. In case of a language mismatch the manager should change the apps registration by updating the lifecycle configuration to the specified language. If the app can support the specified language it should return an Object of SDLLifecycleConfigurationUpdate, otherwise it should return nil to indicate that the language is not supported.
- *
- * @param language The language of the connected head unit the manager is trying to update the configuration.
- * @return An object of SDLLifecycleConfigurationUpdate if the head unit language is supported, otherwise nil to indicate that the language is not supported.
- */
-- (nullable SDLLifecycleConfigurationUpdate *)managerShouldUpdateLifecycleToLanguage:(SDLLanguage)language __deprecated_msg("Use managerShouldUpdateLifecycleToLanguage:hmiLanguage");
-
-/**
- * Called when the lifecycle manager detected a language mismatch. In case of a language mismatch the manager should change the apps registration by updating the lifecycle configuration to the specified language. If the app can support the specified language it should return an Object of SDLLifecycleConfigurationUpdate, otherwise it should return nil to indicate that the language is not supported.
- *
- * @param language The VR+TTS language of the connected head unit the manager is trying to update the configuration.
- * @param hmiLanguage The HMI display language of the connected head unit the manager is trying to update the configuration.
- * @return An object of SDLLifecycleConfigurationUpdate if the head unit language is supported, otherwise nil to indicate that the language is not supported.
- */
-- (nullable SDLLifecycleConfigurationUpdate *)managerShouldUpdateLifecycleToLanguage:(SDLLanguage)language hmiLanguage:(SDLLanguage)hmiLanguage;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMassageCushion.h b/SmartDeviceLink/SDLMassageCushion.h
deleted file mode 100644
index f4886d312..000000000
--- a/SmartDeviceLink/SDLMassageCushion.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// SDLMassageCushion.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * The List possible cushions of a multi-contour massage seat.
- */
-typedef SDLEnum SDLMassageCushion SDL_SWIFT_ENUM;
-
-/**
- * @abstract TOP LUMBAR cushions of a multi-contour massage seat
- */
-extern SDLMassageCushion const SDLMassageCushionTopLumbar;
-
-/**
- * @abstract MIDDLE LUMBAR cushion of a multi-contour massage seat
- */
-extern SDLMassageCushion const SDLMassageCushionMiddleLumbar;
-
-/**
- * @abstract BOTTOM LUMBAR cushion of a multi-contour massage seat
- */
-extern SDLMassageCushion const SDLMassageCushionBottomLumbar;
-
-/**
- * @abstract BACK BOLSTERS cushion of a multi-contour massage seat
- */
-extern SDLMassageCushion const SDLMassageCushionBackBolsters;
-
-/**
- * @abstract SEAT BOLSTERS cushion of a multi-contour massage seat
- */
-extern SDLMassageCushion const SDLMassageCushionSeatBolsters;
-
diff --git a/SmartDeviceLink/SDLMassageMode.h b/SmartDeviceLink/SDLMassageMode.h
deleted file mode 100644
index bcd0055ee..000000000
--- a/SmartDeviceLink/SDLMassageMode.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// SDLMassageMode.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * The List possible modes of a massage zone.
- */
-typedef SDLEnum SDLMassageMode SDL_SWIFT_ENUM;
-
-/**
- * @abstract Massage Mode Status : OFF
- */
-extern SDLMassageMode const SDLMassageModeOff;
-
-/**
- * @abstract Massage Mode Status : LOW
- */
-extern SDLMassageMode const SDLMassageModeLow;
-
-/**
- * @abstract Massage Mode Status : HIGH
- */
-extern SDLMassageMode const SDLMassageModeHigh;
-
diff --git a/SmartDeviceLink/SDLMassageZone.h b/SmartDeviceLink/SDLMassageZone.h
deleted file mode 100644
index 06b7aa438..000000000
--- a/SmartDeviceLink/SDLMassageZone.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// SDLMassageZone.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * List possible zones of a multi-contour massage seat.
- */
-typedef SDLEnum SDLMassageZone SDL_SWIFT_ENUM;
-
-/**
- * @abstract The back of a multi-contour massage seat. or SEAT_BACK
- */
-extern SDLMassageZone const SDLMassageZoneLumbar;
-
-/**
- * @abstract The bottom a multi-contour massage seat. or SEAT_BOTTOM
- */
-extern SDLMassageZone const SDLMassageZoneSeatCushion;
-
diff --git a/SmartDeviceLink/SDLMediaClockFormat.h b/SmartDeviceLink/SDLMediaClockFormat.h
deleted file mode 100644
index c16ebb8b5..000000000
--- a/SmartDeviceLink/SDLMediaClockFormat.h
+++ /dev/null
@@ -1,115 +0,0 @@
-// SDLMediaClockFormat.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Indicates the format of the time displayed on the connected SDL unit.
-
- Format description follows the following nomenclature: <br>
- Sp = Space <br>
- | = or <br>
- c = character <br>
-
- Used in DisplayCapabilities
-
- @since SDL 1.0
- */
-typedef SDLEnum SDLMediaClockFormat SDL_SWIFT_ENUM;
-
-/**
- * Media clock format: Clock1
- *
- * maxHours = 19
- * maxMinutes = 59
- * maxSeconds = 59
- */
-extern SDLMediaClockFormat const SDLMediaClockFormatClock1;
-
-/**
- * Media clock format: Clock2
- *
- * maxHours = 59
- * maxMinutes = 59
- * maxSeconds = 59
- */
-extern SDLMediaClockFormat const SDLMediaClockFormatClock2;
-
-/**
- * Media clock format: Clock3
- *
- * @discussion
- * <ul>
- * maxHours = 9
- * maxMinutes = 59
- * maxSeconds = 59
- * </ul>
- *
- * @since SDL 2.0
- */
-extern SDLMediaClockFormat const SDLMediaClockFormatClock3;
-
-/**
- * Media clock format: ClockText1
- *
- * @discussion
- * <ul>
- * 5 characters possible
- * Format: 1|sp c :|sp c c
- * 1|sp : digit "1" or space
- * c : character out of following character set: sp|0-9|[letters, see
- * TypeII column in XLS.
- * :|sp : colon or space
- * used for Type II headunit
- * </ul>
- */
-extern SDLMediaClockFormat const SDLMediaClockFormatClockText1;
-
-/**
- * Media clock format: ClockText2
- *
- * @discussion
- * <ul>
- * 5 characters possible
- * Format: 1|sp c :|sp c c
- * 1|sp : digit "1" or space
- * c : character out of following character set: sp|0-9|[letters, see
- * CID column in XLS.
- * :|sp : colon or space
- * used for CID headunit
- * </ul>
- * difference between CLOCKTEXT1 and CLOCKTEXT2 is the supported character
- * set
- */
-extern SDLMediaClockFormat const SDLMediaClockFormatClockText2;
-
-/**
- * Media clock format: ClockText3
- *
- * @discussion
- * <ul>
- * 6 chars possible
- * Format: 1|sp c c :|sp c c
- * 1|sp : digit "1" or space
- * c : character out of following character set: sp|0-9|[letters, see
- * Type 5 column in XLS].
- * :|sp : colon or space
- * used for Type V headunit
- * </ul>
- * difference between CLOCKTEXT1 and CLOCKTEXT2 is the supported character
- * set
- */
-extern SDLMediaClockFormat const SDLMediaClockFormatClockText3;
-
-/**
- * Media clock format: ClockText4
- *
- * 6 chars possible
- * Format: c :|sp c c : c c
- * :|sp : colon or space
- * c : character out of following character set: sp|0-9|[letters] used for MFD3/4/5 headunits
- *
- * @since SDL 2.0
- */
-extern SDLMediaClockFormat const SDLMediaClockFormatClockText4;
diff --git a/SmartDeviceLink/SDLMediaServiceData.h b/SmartDeviceLink/SDLMediaServiceData.h
deleted file mode 100644
index 7d4d6180b..000000000
--- a/SmartDeviceLink/SDLMediaServiceData.h
+++ /dev/null
@@ -1,177 +0,0 @@
-//
-// SDLMediaServiceData.h
-// SmartDeviceLink
-//
-// Created by Nicole on 2/8/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLRPCRequest.h"
-#import "SDLMediaType.h"
-
-@class SDLImage;
-
-NS_ASSUME_NONNULL_BEGIN
-
-
-/**
- * This data is related to what a media service should provide.
- */
-@interface SDLMediaServiceData : SDLRPCStruct
-
-/**
- * Convenience init
- *
- * @param mediaType The type of the currently playing or paused track
- * @param mediaTitle The name of the current playing media
- * @param mediaArtist The name of the current media artist
- * @param mediaAlbum The name of the current media album
- * @param playlistName The name of the playlist
- * @param isExplicit Whether or not the content currently playing contains explicit content
- * @param trackPlaybackProgress The current progress of the track
- * @param trackPlaybackDuration The total duration of the track
- * @param queuePlaybackProgress The current progress of the playback queue in seconds
- * @param queuePlaybackDuration The total duration of the playback queue in seconds
- * @param queueCurrentTrackNumber The current number (1 based) of the track in the playback queue
- * @param queueTotalTrackCount The total number of tracks in the playback queue
- * @return A SDLMediaServiceData object
- */
-- (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaTitle:(nullable NSString *)mediaTitle mediaArtist:(nullable NSString *)mediaArtist mediaAlbum:(nullable NSString *)mediaAlbum playlistName:(nullable NSString *)playlistName isExplicit:(BOOL)isExplicit trackPlaybackProgress:(UInt32)trackPlaybackProgress trackPlaybackDuration:(UInt32)trackPlaybackDuration queuePlaybackProgress:(UInt32)queuePlaybackProgress queuePlaybackDuration:(UInt32)queuePlaybackDuration queueCurrentTrackNumber:(UInt32)queueCurrentTrackNumber queueTotalTrackCount:(UInt32)queueTotalTrackCount __deprecated_msg("Use initWithMediaType:mediaImage:mediaTitle:mediaArtist:mediaAlbum:playlistName:isExplicit:trackPlaybackProgress:trackPlaybackDuration:queuePlaybackProgress:queuePlaybackDuration:queueCurrentTrackNumber:queueTotalTrackCount: instead");
-
-/**
- * Convenience init
- *
- * @param mediaType The type of the currently playing or paused track
- * @param mediaImage The current artwork for the playing media.
- * @param mediaTitle The name of the current playing media
- * @param mediaArtist The name of the current media artist
- * @param mediaAlbum The name of the current media album
- * @param playlistName The name of the playlist
- * @param isExplicit Whether or not the content currently playing contains explicit content
- * @param trackPlaybackProgress The current progress of the track
- * @param trackPlaybackDuration The total duration of the track
- * @param queuePlaybackProgress The current progress of the playback queue in seconds
- * @param queuePlaybackDuration The total duration of the playback queue in seconds
- * @param queueCurrentTrackNumber The current number (1 based) of the track in the playback queue
- * @param queueTotalTrackCount The total number of tracks in the playback queue
- * @return A SDLMediaServiceData object
- */
-- (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaImage:(nullable SDLImage *)mediaImage mediaTitle:(nullable NSString *)mediaTitle mediaArtist:(nullable NSString *)mediaArtist mediaAlbum:(nullable NSString *)mediaAlbum playlistName:(nullable NSString *)playlistName isExplicit:(BOOL)isExplicit trackPlaybackProgress:(UInt32)trackPlaybackProgress trackPlaybackDuration:(UInt32)trackPlaybackDuration queuePlaybackProgress:(UInt32)queuePlaybackProgress queuePlaybackDuration:(UInt32)queuePlaybackDuration queueCurrentTrackNumber:(UInt32)queueCurrentTrackNumber queueTotalTrackCount:(UInt32)queueTotalTrackCount;
-
-/**
- * Sets the media image associated with the currently playing media
- * Music: The album art of the current track
- * Podcast: The podcast or chapter artwork of the current podcast episode
- * Audiobook: The book or chapter artwork of the current audiobook
- *
- * SDLImage, Optional
- */
-@property (nullable, strong, nonatomic) SDLImage *mediaImage;
-
-/**
- * The type of the currently playing or paused track.
- *
- * SDLMediaType, Optional
- */
-@property (nullable, strong, nonatomic) SDLMediaType mediaType;
-
-/**
- * Music: The name of the current track
- * Podcast: The name of the current episode
- * Audiobook: The name of the current chapter
- *
- * String, Optional
- */
-@property (nullable, strong, nonatomic) NSString *mediaTitle;
-
-/**
- * Music: The name of the current album artist
- * Podcast: The provider of the podcast (hosts, network, company)
- * Audiobook: The book author's name
- *
- * String, Optional
- */
-@property (nullable, strong, nonatomic) NSString *mediaArtist;
-
-/**
- * Music: The name of the current album
- * Podcast: The name of the current podcast show
- * Audiobook: The name of the current book
- *
- * String, Optional
- */
-@property (nullable, strong, nonatomic) NSString *mediaAlbum;
-
-/**
- * Music: The name of the playlist or radio station, if the user is playing from a playlist, otherwise, Null
- * Podcast: The name of the playlist, if the user is playing from a playlist, otherwise, Null
- * Audiobook: Likely not applicable, possibly a collection or "playlist" of books
- *
- * String, Optional
- */
-@property (nullable, strong, nonatomic) NSString *playlistName;
-
-/**
- * Whether or not the content currently playing (e.g. the track, episode, or book) contains explicit content.
- *
- * Boolean, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *isExplicit;
-
-/**
- * Music: The current progress of the track in seconds
- * Podcast: The current progress of the episode in seconds
- * Audiobook: The current progress of the current segment (e.g. the chapter) in seconds
- *
- * Integer, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *trackPlaybackProgress;
-
-/**
- * Music: The total duration of the track in seconds
- * Podcast: The total duration of the episode in seconds
- * Audiobook: The total duration of the current segment (e.g. the chapter) in seconds
- *
- * Integer, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *trackPlaybackDuration;
-
-/**
- * Music: The current progress of the playback queue in seconds
- * Podcast: The current progress of the playback queue in seconds
- * Audiobook: The current progress of the playback queue (e.g. the book) in seconds
- *
- * Integer, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queuePlaybackProgress;
-
-/**
- * Music: The total duration of the playback queue in seconds
- * Podcast: The total duration of the playback queue in seconds
- * Audiobook: The total duration of the playback queue (e.g. the book) in seconds
- *
- * Integer, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queuePlaybackDuration;
-
-/**
- * Music: The current number (1 based) of the track in the playback queue
- * Podcast: The current number (1 based) of the episode in the playback queue
- * Audiobook: The current number (1 based) of the episode in the playback queue (e.g. the chapter number in the book)
- *
- * Integer, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queueCurrentTrackNumber;
-
-/**
- * Music: The total number of tracks in the playback queue
- * Podcast: The total number of episodes in the playback queue
- * Audiobook: The total number of sections in the playback queue (e.g. the number of chapters in the book)
- *
- * Integer, Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queueTotalTrackCount;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMediaServiceData.m b/SmartDeviceLink/SDLMediaServiceData.m
deleted file mode 100644
index 911ec7572..000000000
--- a/SmartDeviceLink/SDLMediaServiceData.m
+++ /dev/null
@@ -1,153 +0,0 @@
-//
-// SDLMediaServiceData.m
-// SmartDeviceLink
-//
-// Created by Nicole on 2/8/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLMediaServiceData.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLImage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLMediaServiceData
-
-- (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaTitle:(nullable NSString *)mediaTitle mediaArtist:(nullable NSString *)mediaArtist mediaAlbum:(nullable NSString *)mediaAlbum playlistName:(nullable NSString *)playlistName isExplicit:(BOOL)isExplicit trackPlaybackProgress:(UInt32)trackPlaybackProgress trackPlaybackDuration:(UInt32)trackPlaybackDuration queuePlaybackProgress:(UInt32)queuePlaybackProgress queuePlaybackDuration:(UInt32)queuePlaybackDuration queueCurrentTrackNumber:(UInt32)queueCurrentTrackNumber queueTotalTrackCount:(UInt32)queueTotalTrackCount {
-
- return [self initWithMediaType:mediaType mediaImage:nil mediaTitle:mediaTitle mediaArtist:mediaArtist mediaAlbum:mediaAlbum playlistName:playlistName isExplicit:isExplicit trackPlaybackProgress:trackPlaybackProgress trackPlaybackDuration:trackPlaybackDuration queuePlaybackProgress:queuePlaybackProgress queuePlaybackDuration:queuePlaybackDuration queueCurrentTrackNumber:queueCurrentTrackNumber queueTotalTrackCount:queueTotalTrackCount];
-}
-
-- (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaImage:(nullable SDLImage *)mediaImage mediaTitle:(nullable NSString *)mediaTitle mediaArtist:(nullable NSString *)mediaArtist mediaAlbum:(nullable NSString *)mediaAlbum playlistName:(nullable NSString *)playlistName isExplicit:(BOOL)isExplicit trackPlaybackProgress:(UInt32)trackPlaybackProgress trackPlaybackDuration:(UInt32)trackPlaybackDuration queuePlaybackProgress:(UInt32)queuePlaybackProgress queuePlaybackDuration:(UInt32)queuePlaybackDuration queueCurrentTrackNumber:(UInt32)queueCurrentTrackNumber queueTotalTrackCount:(UInt32)queueTotalTrackCount {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.mediaType = mediaType;
- self.mediaImage = mediaImage;
- self.mediaTitle = mediaTitle;
- self.mediaArtist = mediaArtist;
- self.mediaAlbum = mediaAlbum;
- self.playlistName = playlistName;
- self.isExplicit = @(isExplicit);
- self.trackPlaybackProgress = @(trackPlaybackProgress);
- self.trackPlaybackDuration = @(trackPlaybackDuration);
- self.queuePlaybackProgress = @(queuePlaybackProgress);
- self.queuePlaybackDuration = @(queuePlaybackDuration);
- self.queueCurrentTrackNumber = @(queueCurrentTrackNumber);
- self.queueTotalTrackCount = @(queueTotalTrackCount);
-
- return self;
-}
-
-- (void)setMediaImage:(nullable SDLImage *)mediaImage {
- [self.store sdl_setObject:mediaImage forName:SDLRPCParameterNameMediaImage];
-}
-
-- (nullable SDLImage *)mediaImage {
- return [self.store sdl_objectForName:SDLRPCParameterNameMediaImage ofClass:SDLImage.class error:nil];
-}
-
-- (void)setMediaType:(nullable SDLMediaType)mediaType {
- [self.store sdl_setObject:mediaType forName:SDLRPCParameterNameMediaType];
-}
-
-- (nullable SDLMediaType)mediaType {
- return [self.store sdl_enumForName:SDLRPCParameterNameMediaType error:nil];
-}
-
-- (void)setMediaTitle:(nullable NSString *)mediaTitle {
- [self.store sdl_setObject:mediaTitle forName:SDLRPCParameterNameMediaTitle];
-}
-
-- (nullable NSString *)mediaTitle {
- return [self.store sdl_objectForName:SDLRPCParameterNameMediaTitle ofClass:NSString.class error:nil];
-}
-
-- (void)setMediaArtist:(nullable NSString *)mediaArtist {
- [self.store sdl_setObject:mediaArtist forName:SDLRPCParameterNameMediaArtist];
-}
-
-- (nullable NSString *)mediaArtist {
- return [self.store sdl_objectForName:SDLRPCParameterNameMediaArtist ofClass:NSString.class error:nil];
-}
-
-- (void)setMediaAlbum:(nullable NSString *)mediaAlbum {
- [self.store sdl_setObject:mediaAlbum forName:SDLRPCParameterNameMediaAlbum];
-}
-
-- (nullable NSString *)mediaAlbum {
- return [self.store sdl_objectForName:SDLRPCParameterNameMediaAlbum ofClass:NSString.class error:nil];
-}
-
-- (void)setPlaylistName:(nullable NSString *)playlistName {
- [self.store sdl_setObject:playlistName forName:SDLRPCParameterNamePlaylistName];
-}
-
-- (nullable NSString *)playlistName {
- return [self.store sdl_objectForName:SDLRPCParameterNamePlaylistName ofClass:NSString.class error:nil];
-}
-
-- (void)setIsExplicit:(nullable NSNumber<SDLBool> *)isExplicit {
- [self.store sdl_setObject:isExplicit forName:SDLRPCParameterNameIsExplicit];
-}
-
-- (nullable NSNumber<SDLBool> *)isExplicit {
- return [self.store sdl_objectForName:SDLRPCParameterNameIsExplicit ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTrackPlaybackProgress:(nullable NSNumber<SDLInt> *)trackPlaybackProgress {
- [self.store sdl_setObject:trackPlaybackProgress forName:SDLRPCParameterNameTrackPlaybackProgress];
-}
-
-- (nullable NSNumber<SDLInt> *)trackPlaybackProgress {
- return [self.store sdl_objectForName:SDLRPCParameterNameTrackPlaybackProgress ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTrackPlaybackDuration:(nullable NSNumber<SDLInt> *)trackPlaybackDuration {
- [self.store sdl_setObject:trackPlaybackDuration forName:SDLRPCParameterNameTrackPlaybackDuration];
-}
-
-- (nullable NSNumber<SDLInt> *)trackPlaybackDuration {
- return [self.store sdl_objectForName:SDLRPCParameterNameTrackPlaybackDuration ofClass:NSNumber.class error:nil];
-}
-
-- (void)setQueuePlaybackProgress:(nullable NSNumber<SDLInt> *)queuePlaybackProgress {
- [self.store sdl_setObject:queuePlaybackProgress forName:SDLRPCParameterNameQueuePlaybackProgress];
-}
-
-- (nullable NSNumber<SDLInt> *)queuePlaybackProgress {
- return [self.store sdl_objectForName:SDLRPCParameterNameQueuePlaybackProgress ofClass:NSNumber.class error:nil];
-}
-
-- (void)setQueuePlaybackDuration:(nullable NSNumber<SDLInt> *)queuePlaybackDuration {
- [self.store sdl_setObject:queuePlaybackDuration forName:SDLRPCParameterNameQueuePlaybackDuration];
-}
-
-- (nullable NSNumber<SDLInt> *)queuePlaybackDuration {
- return [self.store sdl_objectForName:SDLRPCParameterNameQueuePlaybackDuration ofClass:NSNumber.class error:nil];
-}
-
-- (void)setQueueCurrentTrackNumber:(nullable NSNumber<SDLInt> *)queueCurrentTrackNumber {
- [self.store sdl_setObject:queueCurrentTrackNumber forName:SDLRPCParameterNameQueueCurrentTrackNumber];
-}
-
-- (nullable NSNumber<SDLInt> *)queueCurrentTrackNumber {
- return [self.store sdl_objectForName:SDLRPCParameterNameQueueCurrentTrackNumber ofClass:NSNumber.class error:nil];
-}
-
-- (void)setQueueTotalTrackCount:(nullable NSNumber<SDLInt> *)queueTotalTrackCount {
- [self.store sdl_setObject:queueTotalTrackCount forName:SDLRPCParameterNameQueueTotalTrackCount];
-}
-
-- (nullable NSNumber<SDLInt> *)queueTotalTrackCount {
- return [self.store sdl_objectForName:SDLRPCParameterNameQueueTotalTrackCount ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMediaType.h b/SmartDeviceLink/SDLMediaType.h
deleted file mode 100644
index f7d1943c2..000000000
--- a/SmartDeviceLink/SDLMediaType.h
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// SDLMediaType.h
-// SmartDeviceLink
-//
-// Created by Nicole on 2/8/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration listing possible media types.
- */
-typedef SDLEnum SDLMediaType SDL_SWIFT_ENUM;
-
-/**
- * The app will have a media type of music.
- */
-extern SDLMediaType const SDLMediaTypeMusic;
-
-/**
- * The app will have a media type of podcast.
- */
-extern SDLMediaType const SDLMediaTypePodcast;
-
-/**
- * The app will have a media type of audiobook.
- */
-extern SDLMediaType const SDLMediaTypeAudiobook;
-
-/**
- * The app will have a media type of other.
- */
-extern SDLMediaType const SDLMediaTypeOther;
-
diff --git a/SmartDeviceLink/SDLMenuCell.h b/SmartDeviceLink/SDLMenuCell.h
deleted file mode 100644
index d55360a8b..000000000
--- a/SmartDeviceLink/SDLMenuCell.h
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// SDLMenuCell.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 4/9/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLMenuLayout.h"
-#import "SDLTriggerSource.h"
-
-@class SDLArtwork;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
-The handler to run when a menu item is selected.
-
-@param triggerSource The trigger source of the selection
-*/
-typedef void(^SDLMenuCellSelectionHandler)(SDLTriggerSource triggerSource);
-
-/// A menu cell item for the main menu or sub-menu.
-@interface SDLMenuCell : NSObject
-
-/**
- The cell's text to be displayed
- */
-@property (copy, nonatomic, readonly) NSString *title;
-
-/**
- The cell's icon to be displayed
- */
-@property (strong, nonatomic, readonly, nullable) SDLArtwork *icon;
-
-/**
- The strings the user can say to activate this voice command
- */
-@property (copy, nonatomic, readonly, nullable) NSArray<NSString *> *voiceCommands;
-
-/**
- The handler that will be called when the command is activated
- */
-@property (copy, nonatomic, readonly, nullable) SDLMenuCellSelectionHandler handler;
-
-/**
- If this is non-nil, this cell will be a sub-menu button, displaying the subcells in a menu when pressed.
- */
-@property (copy, nonatomic, readonly, nullable) NSArray<SDLMenuCell *> *subCells;
-
-/**
- The layout in which the `subCells` will be displayed.
- */
-@property (strong, nonatomic, readonly, nullable) SDLMenuLayout submenuLayout;
-
-/**
- Create a menu cell that has no subcells.
-
- @param title The cell's primary text
- @param icon The cell's image
- @param voiceCommands Voice commands that will activate the menu cell
- @param handler The code that will be run when the menu cell is selected
- @return The menu cell
- */
-- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon voiceCommands:(nullable NSArray<NSString *> *)voiceCommands handler:(SDLMenuCellSelectionHandler)handler;
-
-/**
- Create a menu cell that has subcells and when selected will go into a deeper part of the menu
-
- @param title The cell's primary text
- @param subCells The subcells that will appear when the cell is selected
- @return The menu cell
- */
-- (instancetype)initWithTitle:(NSString *)title subCells:(NSArray<SDLMenuCell *> *)subCells __deprecated_msg(("Use initWithTitle:icon:subcells: instead"));
-
-/**
- Create a menu cell that has subcells and when selected will go into a deeper part of the menu
-
- @param title The cell's primary text
- @param icon The cell's image
- @param subCells The subcells that will appear when the cell is selected
- @return The menu cell
- */
-- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon subCells:(NSArray<SDLMenuCell *> *)subCells __deprecated_msg("Use initWithTitle:icon:layout:subcells: instead");
-
-/**
- Create a menu cell that has subcells and when selected will go into a deeper part of the menu
-
- @param title The cell's primary text
- @param icon The cell's image
- @param layout The layout that the subCells will be layed out in if that submenu is entered
- @param subCells The subcells that will appear when the cell is selected
- @return The menu cell
- */
-- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon submenuLayout:(nullable SDLMenuLayout)layout subCells:(NSArray<SDLMenuCell *> *)subCells;
-
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMenuCell.m b/SmartDeviceLink/SDLMenuCell.m
deleted file mode 100644
index 67281cb21..000000000
--- a/SmartDeviceLink/SDLMenuCell.m
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-// SDLMenuCell.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 4/9/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLMenuCell.h"
-
-#import "SDLArtwork.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLMenuCell()
-
-@property (assign, nonatomic) UInt32 parentCellId;
-@property (assign, nonatomic) UInt32 cellId;
-
-@end
-
-@implementation SDLMenuCell
-
-- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon voiceCommands:(nullable NSArray<NSString *> *)voiceCommands handler:(SDLMenuCellSelectionHandler)handler {
- self = [super init];
- if (!self) { return nil; }
-
- _title = title;
- _icon = icon;
- _voiceCommands = voiceCommands;
- _handler = handler;
-
- _cellId = UINT32_MAX;
- _parentCellId = UINT32_MAX;
-
- return self;
-}
-
-- (instancetype)initWithTitle:(NSString *)title subCells:(NSArray<SDLMenuCell *> *)subCells {
- return [self initWithTitle:title icon:nil submenuLayout:nil subCells:subCells];
-}
-
-- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon subCells:(NSArray<SDLMenuCell *> *)subCells {
- return [self initWithTitle:title icon:icon submenuLayout:nil subCells:subCells];
-}
-
-- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon submenuLayout:(nullable SDLMenuLayout)layout subCells:(NSArray<SDLMenuCell *> *)subCells {
- self = [super init];
- if (!self) { return nil; }
-
- _title = title;
- _submenuLayout = layout;
- _icon = icon;
- _subCells = subCells;
-
- _cellId = UINT32_MAX;
- _parentCellId = UINT32_MAX;
-
- return self;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"SDLMenuCell: %u-\"%@\", artworkName: %@, voice commands: %lu, isSubcell: %@, hasSubcells: %@, submenuLayout: %@", (unsigned int)_cellId, _title, _icon.name, (unsigned long)_voiceCommands.count, (_parentCellId != UINT32_MAX ? @"YES" : @"NO"), (_subCells.count > 0 ? @"YES" : @"NO"), _submenuLayout];
-}
-
-#pragma mark - Object Equality
-
-NSUInteger const NSUIntBitCell = (CHAR_BIT * sizeof(NSUInteger));
-NSUInteger NSUIntRotateCell(NSUInteger val, NSUInteger howMuch) {
- return ((((NSUInteger)val) << howMuch) | (((NSUInteger)val) >> (NSUIntBitCell - howMuch)));
-}
-
-- (NSUInteger)hash {
- return NSUIntRotateCell(self.title.hash, NSUIntBitCell / 2)
- ^ NSUIntRotateCell(self.icon.name.hash, NSUIntBitCell / 3)
- ^ NSUIntRotateCell(self.voiceCommands.hash, NSUIntBitCell / 4)
- ^ NSUIntRotateCell(self.subCells.count !=0, NSUIntBitCell / 5)
- ^ NSUIntRotateCell(self.submenuLayout.hash, NSUIntBitCell / 6);
-}
-
-- (BOOL)isEqual:(id)object {
- if (self == object) { return YES; }
- if (![object isMemberOfClass:[self class]]) { return NO; }
-
- return [self isEqualToChoice:(SDLMenuCell *)object];
-}
-
-- (BOOL)isEqualToChoice:(SDLMenuCell *)choice {
- if (choice == nil) { return NO; }
-
- return (self.hash == choice.hash);
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMenuLayout.h b/SmartDeviceLink/SDLMenuLayout.h
deleted file mode 100644
index e2fe8e40a..000000000
--- a/SmartDeviceLink/SDLMenuLayout.h
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// SDLMenuLayout.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 7/12/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enum for each type of video streaming protocol, used in VideoStreamingFormat
- */
-typedef SDLEnum SDLMenuLayout SDL_SWIFT_ENUM;
-
-/**
- * The menu should be laid out in a scrollable list format with one menu cell below the previous, each is stretched across the view
- */
-extern SDLMenuLayout const SDLMenuLayoutList;
-
-/**
- * The menu should be laid out in a scrollable tiles format with each menu cell laid out in a square-ish format next to each other horizontally
- */
-extern SDLMenuLayout const SDLMenuLayoutTiles;
-
diff --git a/SmartDeviceLink/SDLMenuManager.m b/SmartDeviceLink/SDLMenuManager.m
deleted file mode 100644
index 4d2d0737a..000000000
--- a/SmartDeviceLink/SDLMenuManager.m
+++ /dev/null
@@ -1,738 +0,0 @@
-//
-// SDLMenuManager.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 4/9/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLMenuManager.h"
-
-#import "SDLAddCommand.h"
-#import "SDLAddSubMenu.h"
-#import "SDLArtwork.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLDeleteCommand.h"
-#import "SDLDeleteSubMenu.h"
-#import "SDLDisplayCapability.h"
-#import "SDLDisplayType.h"
-#import "SDLError.h"
-#import "SDLFileManager.h"
-#import "SDLGlobals.h"
-#import "SDLImage.h"
-#import "SDLLogMacros.h"
-#import "SDLMenuCell.h"
-#import "SDLMenuConfiguration.h"
-#import "SDLMenuParams.h"
-#import "SDLDynamicMenuUpdateRunScore.h"
-#import "SDLDynamicMenuUpdateAlgorithm.h"
-#import "SDLOnCommand.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLSetDisplayLayoutResponse.h"
-#import "SDLSetGlobalProperties.h"
-#import "SDLScreenManager.h"
-#import "SDLShowAppMenu.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLWindowCapability.h"
-#import "SDLWindowCapability+ScreenManagerExtensions.h"
-#import "SDLVersion.h"
-#import "SDLVoiceCommand.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLMenuCell()
-
-@property (assign, nonatomic) UInt32 parentCellId;
-@property (assign, nonatomic) UInt32 cellId;
-
-@end
-
-@interface SDLMenuManager()
-
-// Dependencies
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic) SDLFileManager *fileManager;
-@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
-
-@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
-@property (copy, nonatomic, nullable) SDLSystemContext currentSystemContext;
-
-@property (strong, nonatomic, nullable) NSArray<SDLRPCRequest *> *inProgressUpdate;
-@property (assign, nonatomic) BOOL hasQueuedUpdate;
-@property (assign, nonatomic) BOOL waitingOnHMIUpdate;
-@property (copy, nonatomic) NSArray<SDLMenuCell *> *waitingUpdateMenuCells;
-@property (strong, nonatomic, nullable) SDLWindowCapability *windowCapability;
-
-@property (assign, nonatomic) UInt32 lastMenuId;
-@property (copy, nonatomic) NSArray<SDLMenuCell *> *oldMenuCells;
-
-@end
-
-UInt32 const ParentIdNotFound = UINT32_MAX;
-UInt32 const MenuCellIdMin = 1;
-
-@implementation SDLMenuManager
-
-- (instancetype)init {
- self = [super init];
- if (!self) { return nil; }
-
- _lastMenuId = MenuCellIdMin;
- _menuConfiguration = [[SDLMenuConfiguration alloc] init];
- _menuCells = @[];
- _oldMenuCells = @[];
- _dynamicMenuUpdatesMode = SDLDynamicMenuUpdatesModeOnWithCompatibility;
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_commandNotification:) name:SDLDidReceiveCommandNotification object:nil];
-
- return self;
-}
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(nonnull SDLSystemCapabilityManager *)systemCapabilityManager {
- self = [self init];
- if (!self) { return nil; }
-
- _connectionManager = connectionManager;
- _fileManager = fileManager;
- _systemCapabilityManager = systemCapabilityManager;
-
- return self;
-}
-
-- (void)start {
- [self.systemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self selector:@selector(sdl_displayCapabilityDidUpdate:)];
-}
-
-- (void)stop {
- _lastMenuId = MenuCellIdMin;
- _menuCells = @[];
- _oldMenuCells = @[];
-
- _currentHMILevel = nil;
- _currentSystemContext = SDLSystemContextMain;
- _inProgressUpdate = nil;
- _hasQueuedUpdate = NO;
- _waitingOnHMIUpdate = NO;
- _waitingUpdateMenuCells = @[];
-}
-
-#pragma mark - Setters
-
-- (void)setMenuConfiguration:(SDLMenuConfiguration *)menuConfiguration {
- NSArray<SDLMenuLayout> *layoutsAvailable = self.windowCapability.menuLayoutsAvailable;
-
- if ([[SDLGlobals sharedGlobals].rpcVersion isLessThanVersion:[SDLVersion versionWithMajor:6 minor:0 patch:0]]) {
- SDLLogW(@"Menu configurations is only supported on head units with RPC spec version 6.0.0 or later. Currently connected head unit RPC spec version is %@", [SDLGlobals sharedGlobals].rpcVersion);
- return;
- } else if (layoutsAvailable == nil) {
- SDLLogW(@"Could not set the main menu configuration. Which menu layouts can be used is not available");
- return;
- } else if (![layoutsAvailable containsObject:menuConfiguration.mainMenuLayout]
- || ![layoutsAvailable containsObject:menuConfiguration.defaultSubmenuLayout]) {
- SDLLogE(@"One or more of the set menu layouts are not available on this system. The menu configuration will not be set. Available menu layouts: %@, set menu layouts: %@", layoutsAvailable, menuConfiguration);
- return;
- } else if (self.currentHMILevel == nil
- || [self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
- SDLLogE(@"Could not set main menu configuration, HMI level: %@, required: 'Not-NONE', system context: %@, required: 'Not MENU'", self.currentHMILevel, self.currentSystemContext);
- return;
- }
-
- SDLMenuConfiguration *oldConfig = _menuConfiguration;
- _menuConfiguration = menuConfiguration;
-
- SDLSetGlobalProperties *setGlobalsRPC = [[SDLSetGlobalProperties alloc] init];
- setGlobalsRPC.menuLayout = menuConfiguration.mainMenuLayout;
-
- __weak typeof(self) weakself = self;
- [self.connectionManager sendConnectionRequest:setGlobalsRPC withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- __strong typeof(weakself) strongself = weakself;
- if (error != nil) {
- SDLLogE(@"Could not set main menu configuration: %@", error);
- strongself.menuConfiguration = oldConfig;
- return;
- }
- }];
-}
-
-- (void)setMenuCells:(NSArray<SDLMenuCell *> *)menuCells {
- if (self.currentHMILevel == nil
- || [self.currentHMILevel isEqualToEnum:SDLHMILevelNone]
- || [self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]) {
- SDLLogD(@"Waiting for HMI update to send menu cells");
- self.waitingOnHMIUpdate = YES;
- self.waitingUpdateMenuCells = menuCells;
- return;
- }
-
- self.waitingOnHMIUpdate = NO;
-
- NSMutableSet *titleCheckSet = [NSMutableSet set];
- NSMutableSet<NSString *> *allMenuVoiceCommands = [NSMutableSet set];
- NSUInteger voiceCommandCount = 0;
- for (SDLMenuCell *cell in menuCells) {
- [titleCheckSet addObject:cell.title];
- if (cell.voiceCommands == nil) { continue; }
- [allMenuVoiceCommands addObjectsFromArray:cell.voiceCommands];
- voiceCommandCount += cell.voiceCommands.count;
- }
-
- // Check for duplicate titles
- if (titleCheckSet.count != menuCells.count) {
- SDLLogE(@"Not all cell titles are unique. The menu will not be set.");
- return;
- }
-
- // Check for duplicate voice recognition commands
- if (allMenuVoiceCommands.count != voiceCommandCount) {
- SDLLogE(@"Attempted to create a menu with duplicate voice commands. Voice commands must be unique. The menu will not be set.");
- return;
- }
-
- _oldMenuCells = _menuCells;
- _menuCells = menuCells;
-
- if ([self sdl_isDynamicMenuUpdateActive:self.dynamicMenuUpdatesMode]) {
- [self sdl_startDynamicMenuUpdate];
- } else {
- [self sdl_startNonDynamicMenuUpdate];
- }
-}
-
-#pragma mark - Open Menu
-
-- (BOOL)openMenu {
- if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
- SDLLogE(@"The openMenu method is not supported on this head unit.");
- return NO;
- }
-
- SDLShowAppMenu *openMenu = [[SDLShowAppMenu alloc] init];
-
- [self.connectionManager sendConnectionRequest:openMenu withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if ([response.resultCode isEqualToEnum:SDLResultWarnings]) {
- SDLLogW(@"Warning opening application menu: %@", error);
- } else if (![response.resultCode isEqualToEnum:SDLResultSuccess]) {
- SDLLogE(@"Error opening application menu: %@", error);
- } else {
- SDLLogD(@"Successfully opened application main menu");
- }
- }];
-
- return YES;
-}
-
-- (BOOL)openSubmenu:(SDLMenuCell *)cell {
- if (cell.subCells.count == 0) {
- SDLLogE(@"The cell %@ does not contain any sub cells, so no submenu can be opened", cell);
- return NO;
- } else if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
- SDLLogE(@"The openSubmenu method is not supported on this head unit.");
- return NO;
- } else if (![self.menuCells containsObject:cell]) {
- SDLLogE(@"This cell has not been sent to the head unit, so no submenu can be opened. Make sure that the cell exists in the SDLManager.menu array");
- return NO;
- }
-
- SDLShowAppMenu *subMenu = [[SDLShowAppMenu alloc] initWithMenuID:cell.cellId];
-
- [self.connectionManager sendConnectionRequest:subMenu withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if ([response.resultCode isEqualToEnum:SDLResultWarnings]) {
- SDLLogW(@"Warning opening application menu to submenu cell %@, with error: %@", cell, error);
- } else if (![response.resultCode isEqualToEnum:SDLResultSuccess]) {
- SDLLogE(@"Error opening application menu to submenu cell %@, with error: %@", cell, error);
- } else {
- SDLLogD(@"Successfully opened application menu to submenu cell: %@", cell);
- }
- }];
-
- return YES;
-}
-
-#pragma mark - Build Deletes, Keeps, Adds
-
-- (void)sdl_startSubMenuUpdatesWithOldKeptCells:(NSArray<SDLMenuCell *> *)oldKeptCells newKeptCells:(NSArray<SDLMenuCell *> *)newKeptCells atIndex:(NSUInteger)startIndex {
- if (oldKeptCells.count == 0 || startIndex >= oldKeptCells.count) {
- self.inProgressUpdate = nil;
- return;
- }
-
- if (oldKeptCells[startIndex].subCells.count > 0) {
- SDLDynamicMenuUpdateRunScore *tempScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldKeptCells[startIndex].subCells updatedMenuCells:newKeptCells[startIndex].subCells];
- NSArray<NSNumber *> *deleteMenuStatus = tempScore.oldStatus;
- NSArray<NSNumber *> *addMenuStatus = tempScore.updatedStatus;
-
- NSArray<SDLMenuCell *> *cellsToDelete = [self sdl_filterDeleteMenuItemsWithOldMenuItems:oldKeptCells[startIndex].subCells basedOnStatusList:deleteMenuStatus];
- NSArray<SDLMenuCell *> *cellsToAdd = [self sdl_filterAddMenuItemsWithNewMenuItems:newKeptCells[startIndex].subCells basedOnStatusList:addMenuStatus];
-
- NSArray<SDLMenuCell *> *oldKeeps = [self sdl_filterKeepMenuItemsWithOldMenuItems:oldKeptCells[startIndex].subCells basedOnStatusList:deleteMenuStatus];
- NSArray<SDLMenuCell *> *newKeeps = [self sdl_filterKeepMenuItemsWithNewMenuItems:newKeptCells[startIndex].subCells basedOnStatusList:addMenuStatus];
-
- [self sdl_updateIdsOnMenuCells:cellsToAdd parentId:newKeptCells[startIndex].cellId];
- [self transferCellIDFromOldCells:oldKeeps toKeptCells:newKeeps];
-
- __weak typeof(self) weakself = self;
- [self sdl_sendDeleteCurrentMenu:cellsToDelete withCompletionHandler:^(NSError * _Nullable error) {
- [weakself sdl_sendUpdatedMenu:cellsToAdd usingMenu:weakself.menuCells[startIndex].subCells withCompletionHandler:^(NSError * _Nullable error) {
- // After the first set of submenu cells were added and deleted we must find the next set of subcells untll we loop through all the elemetns
- [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeptCells newKeptCells:newKeptCells atIndex:(startIndex + 1)];
- }];
- }];
- } else {
- // After the first set of submenu cells were added and deleted we must find the next set of subcells untll we loop through all the elemetns
- [self sdl_startSubMenuUpdatesWithOldKeptCells:oldKeptCells newKeptCells:newKeptCells atIndex:(startIndex + 1)];
- }
-}
-
-- (NSArray<SDLMenuCell *> *)sdl_filterDeleteMenuItemsWithOldMenuItems:(NSArray<SDLMenuCell *> *)oldMenuCells basedOnStatusList:(NSArray<NSNumber *> *)oldStatusList {
- NSMutableArray<SDLMenuCell *> *deleteCells = [[NSMutableArray alloc] init];
- // The index of the status should corrleate 1-1 with the number of items in the menu
- // [2,0,2,0] => [A,B,C,D] = [B,D]
- for (NSUInteger index = 0; index < oldStatusList.count; index++) {
- if (oldStatusList[index].integerValue == MenuCellStateDelete) {
- [deleteCells addObject:oldMenuCells[index]];
- }
- }
- return [deleteCells copy];
-}
-
-- (NSArray<SDLMenuCell *> *)sdl_filterAddMenuItemsWithNewMenuItems:(NSArray<SDLMenuCell *> *)newMenuCells basedOnStatusList:(NSArray<NSNumber *> *)newStatusList {
- NSMutableArray<SDLMenuCell *> *addCells = [[NSMutableArray alloc] init];
- // The index of the status should corrleate 1-1 with the number of items in the menu
- // [2,1,2,1] => [A,B,C,D] = [B,D]
- for (NSUInteger index = 0; index < newStatusList.count; index++) {
- if (newStatusList[index].integerValue == MenuCellStateAdd) {
- [addCells addObject:newMenuCells[index]];
- }
- }
- return [addCells copy];
-}
-
-- (NSArray<SDLMenuCell *> *)sdl_filterKeepMenuItemsWithOldMenuItems:(NSArray<SDLMenuCell *> *)oldMenuCells basedOnStatusList:(NSArray<NSNumber *> *)keepStatusList {
- NSMutableArray<SDLMenuCell *> *keepMenuCells = [[NSMutableArray alloc] init];
-
- for (NSUInteger index = 0; index < keepStatusList.count; index++) {
- if (keepStatusList[index].integerValue == MenuCellStateKeep) {
- [keepMenuCells addObject:oldMenuCells[index]];
- }
- }
- return [keepMenuCells copy];
-}
-
-- (NSArray<SDLMenuCell *> *)sdl_filterKeepMenuItemsWithNewMenuItems:(NSArray<SDLMenuCell *> *)newMenuCells basedOnStatusList:(NSArray<NSNumber *> *)keepStatusList {
- NSMutableArray<SDLMenuCell *> *keepMenuCells = [[NSMutableArray alloc] init];
- for (NSUInteger index = 0; index < keepStatusList.count; index++) {
- if (keepStatusList[index].integerValue == MenuCellStateKeep) {
- [keepMenuCells addObject:newMenuCells[index]];
- }
- }
- return [keepMenuCells copy];
-}
-
-- (void)transferCellIDFromOldCells:(NSArray<SDLMenuCell *> *)oldCells toKeptCells:(NSArray<SDLMenuCell *> *)newCells {
- if (oldCells.count == 0) { return; }
- for (NSUInteger i = 0; i < newCells.count; i++) {
- newCells[i].cellId = oldCells[i].cellId;
- }
-}
-
-#pragma mark - Updating System
-
-- (void)sdl_startDynamicMenuUpdate {
- SDLDynamicMenuUpdateRunScore *runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:self.oldMenuCells updatedMenuCells:self.menuCells];
-
- NSArray<NSNumber *> *deleteMenuStatus = runScore.oldStatus;
- NSArray<NSNumber *> *addMenuStatus = runScore.updatedStatus;
-
- NSArray<SDLMenuCell *> *cellsToDelete = [self sdl_filterDeleteMenuItemsWithOldMenuItems:self.oldMenuCells basedOnStatusList:deleteMenuStatus];
- NSArray<SDLMenuCell *> *cellsToAdd = [self sdl_filterAddMenuItemsWithNewMenuItems:self.menuCells basedOnStatusList:addMenuStatus];
- // These arrays should ONLY contain KEEPS. These will be used for SubMenu compares
- NSArray<SDLMenuCell *> *oldKeeps = [self sdl_filterKeepMenuItemsWithOldMenuItems:self.oldMenuCells basedOnStatusList:deleteMenuStatus];
- NSArray<SDLMenuCell *> *newKeeps = [self sdl_filterKeepMenuItemsWithNewMenuItems:self.menuCells basedOnStatusList:addMenuStatus];
-
- // Cells that will be added need new ids
- [self sdl_updateIdsOnMenuCells:cellsToAdd parentId:ParentIdNotFound];
-
- // Since we are creating a new Menu but keeping old cells we must firt transfer the old cellIDs to the new menus kept cells.
- [self transferCellIDFromOldCells:oldKeeps toKeptCells:newKeeps];
-
- // Upload the artworks
- NSArray<SDLArtwork *> *artworksToBeUploaded = [self sdl_findAllArtworksToBeUploadedFromCells:cellsToAdd];
- if (artworksToBeUploaded.count > 0) {
- [self.fileManager uploadArtworks:artworksToBeUploaded completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogE(@"Error uploading menu artworks: %@", error);
- }
- SDLLogD(@"Menu artworks uploaded");
- // Update cells with artworks once they're uploaded
- __weak typeof(self) weakself = self;
- [self sdl_updateMenuWithCellsToDelete:cellsToDelete cellsToAdd:cellsToAdd completionHandler:^(NSError * _Nullable error) {
- [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeeps newKeptCells:newKeeps atIndex:0];
- }];
- }];
- } else {
- // Cells have no artwork to load
- __weak typeof(self) weakself = self;
- [self sdl_updateMenuWithCellsToDelete:cellsToDelete cellsToAdd:cellsToAdd completionHandler:^(NSError * _Nullable error) {
- [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeeps newKeptCells:newKeeps atIndex:0];
- }];
- }
-}
-
-- (void)sdl_startNonDynamicMenuUpdate {
- [self sdl_updateIdsOnMenuCells:self.menuCells parentId:ParentIdNotFound];
-
- NSArray<SDLArtwork *> *artworksToBeUploaded = [self sdl_findAllArtworksToBeUploadedFromCells:self.menuCells];
- if (artworksToBeUploaded.count > 0) {
- [self.fileManager uploadArtworks:artworksToBeUploaded completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogE(@"Error uploading menu artworks: %@", error);
- }
-
- SDLLogD(@"Menu artworks uploaded");
- [self sdl_updateMenuWithCellsToDelete:self.oldMenuCells cellsToAdd:self.menuCells completionHandler:nil];
- }];
- } else {
- // Cells have no artwork to load
- [self sdl_updateMenuWithCellsToDelete:self.oldMenuCells cellsToAdd:self.menuCells completionHandler:nil];
- }
-}
-
-- (void)sdl_updateMenuWithCellsToDelete:(NSArray<SDLMenuCell *> *)deleteCells cellsToAdd:(NSArray<SDLMenuCell *> *)addCells completionHandler:(nullable SDLMenuUpdateCompletionHandler)completionHandler {
- if (self.currentHMILevel == nil
- || [self.currentHMILevel isEqualToEnum:SDLHMILevelNone]
- || [self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]) {
- self.waitingOnHMIUpdate = YES;
- self.waitingUpdateMenuCells = self.menuCells;
- return;
- }
-
- if (self.inProgressUpdate != nil) {
- // There's an in progress update, we need to put this on hold
- self.hasQueuedUpdate = YES;
- return;
- }
- __weak typeof(self) weakself = self;
- [self sdl_sendDeleteCurrentMenu:deleteCells withCompletionHandler:^(NSError * _Nullable error) {
- [weakself sdl_sendUpdatedMenu:addCells usingMenu:weakself.menuCells withCompletionHandler:^(NSError * _Nullable error) {
- weakself.inProgressUpdate = nil;
-
- if (completionHandler != nil) {
- completionHandler(error);
- }
-
- if (weakself.hasQueuedUpdate) {
- [weakself sdl_updateMenuWithCellsToDelete:deleteCells cellsToAdd:addCells completionHandler:nil];
- weakself.hasQueuedUpdate = NO;
- }
- }];
- }];
-}
-
-#pragma mark Delete Old Menu Items
-
-- (void)sdl_sendDeleteCurrentMenu:(nullable NSArray<SDLMenuCell *> *)deleteMenuCells withCompletionHandler:(SDLMenuUpdateCompletionHandler)completionHandler {
- if (deleteMenuCells.count == 0) {
- completionHandler(nil);
- return;
- }
-
- NSArray<SDLRPCRequest *> *deleteMenuCommands = [self sdl_deleteCommandsForCells:deleteMenuCells];
- [self.connectionManager sendRequests:deleteMenuCommands progressHandler:nil completionHandler:^(BOOL success) {
- if (!success) {
- SDLLogW(@"Unable to delete all old menu commands");
- } else {
- SDLLogD(@"Finished deleting old menu");
- }
-
- completionHandler(nil);
- }];
-}
-
-#pragma mark Send New Menu Items
-
-/**
- Creates add commands
-
- @param updatedMenu The cells you will be adding
- @param menu The list of all cells. This may be different then self.menuCells since this function is called on subcell cells as well. When comparing 2 sub menu cells this function will be passed the list of all subcells on that cell.
- @param completionHandler handler
- */
-- (void)sdl_sendUpdatedMenu:(NSArray<SDLMenuCell *> *)updatedMenu usingMenu:(NSArray<SDLMenuCell *> *)menu withCompletionHandler:(SDLMenuUpdateCompletionHandler)completionHandler {
- if (self.menuCells.count == 0 || updatedMenu.count == 0) {
- SDLLogD(@"There are no cells to update.");
- completionHandler(nil);
- return;
- }
-
- NSArray<SDLRPCRequest *> *mainMenuCommands = nil;
- NSArray<SDLRPCRequest *> *subMenuCommands = nil;
-
- if ([self sdl_findAllArtworksToBeUploadedFromCells:self.menuCells].count > 0 || ![self.windowCapability hasImageFieldOfName:SDLImageFieldNameCommandIcon]) {
- // Send artwork-less menu
- mainMenuCommands = [self sdl_mainMenuCommandsForCells:updatedMenu withArtwork:NO usingIndexesFrom:menu];
- subMenuCommands = [self sdl_subMenuCommandsForCells:updatedMenu withArtwork:NO];
- } else {
- // Send full artwork menu
- mainMenuCommands = [self sdl_mainMenuCommandsForCells:updatedMenu withArtwork:YES usingIndexesFrom:menu];
- subMenuCommands = [self sdl_subMenuCommandsForCells:updatedMenu withArtwork:YES];
- }
-
- self.inProgressUpdate = [mainMenuCommands arrayByAddingObjectsFromArray:subMenuCommands];
-
- __block NSMutableDictionary<SDLRPCRequest *, NSError *> *errors = [NSMutableDictionary dictionary];
- __weak typeof(self) weakSelf = self;
- [self.connectionManager sendRequests:mainMenuCommands progressHandler:^void(__kindof SDLRPCRequest * _Nonnull request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error, float percentComplete) {
- if (error != nil) {
- errors[request] = error;
- }
- } completionHandler:^(BOOL success) {
- if (!success) {
- SDLLogE(@"Failed to send main menu commands: %@", errors);
- completionHandler([NSError sdl_menuManager_failedToUpdateWithDictionary:errors]);
- return;
- }
-
- [weakSelf.connectionManager sendRequests:subMenuCommands progressHandler:^(__kindof SDLRPCRequest * _Nonnull request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error, float percentComplete) {
- if (error != nil) {
- errors[request] = error;
- }
- } completionHandler:^(BOOL success) {
- if (!success) {
- SDLLogE(@"Failed to send sub menu commands: %@", errors);
- completionHandler([NSError sdl_menuManager_failedToUpdateWithDictionary:errors]);
- return;
- }
-
- SDLLogD(@"Finished updating menu");
- completionHandler(nil);
- }];
- }];
-}
-
-#pragma mark - Helpers
-
-- (BOOL)sdl_isDynamicMenuUpdateActive:(SDLDynamicMenuUpdatesMode)dynamicMenuUpdatesMode {
- switch (dynamicMenuUpdatesMode) {
- case SDLDynamicMenuUpdatesModeForceOn:
- return YES;
- case SDLDynamicMenuUpdatesModeForceOff:
- return NO;
- case SDLDynamicMenuUpdatesModeOnWithCompatibility:
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return ![self.systemCapabilityManager.displays.firstObject.displayName isEqualToString:SDLDisplayTypeGen38Inch];
-#pragma clang diagnostic pop
-
- }
-}
-
-#pragma mark Artworks
-
-- (NSArray<SDLArtwork *> *)sdl_findAllArtworksToBeUploadedFromCells:(NSArray<SDLMenuCell *> *)cells {
- if (![self.windowCapability hasImageFieldOfName:SDLImageFieldNameCommandIcon]) {
- return @[];
- }
-
- NSMutableSet<SDLArtwork *> *mutableArtworks = [NSMutableSet set];
- for (SDLMenuCell *cell in cells) {
- if ([self sdl_artworkNeedsUpload:cell.icon]) {
- [mutableArtworks addObject:cell.icon];
- }
-
- if (cell.subCells.count > 0) {
- [mutableArtworks addObjectsFromArray:[self sdl_findAllArtworksToBeUploadedFromCells:cell.subCells]];
- }
- }
-
- return [mutableArtworks allObjects];
-}
-
-- (BOOL)sdl_artworkNeedsUpload:(SDLArtwork *)artwork {
- return (artwork != nil && ![self.fileManager hasUploadedFile:artwork] && !artwork.isStaticIcon);
-}
-
-#pragma mark IDs
-
-- (void)sdl_updateIdsOnMenuCells:(NSArray<SDLMenuCell *> *)menuCells parentId:(UInt32)parentId {
- for (SDLMenuCell *cell in menuCells) {
- cell.cellId = self.lastMenuId++;
- cell.parentCellId = parentId;
- if (cell.subCells.count > 0) {
- [self sdl_updateIdsOnMenuCells:cell.subCells parentId:cell.cellId];
- }
- }
-}
-
-#pragma mark Deletes
-
-- (NSArray<SDLRPCRequest *> *)sdl_deleteCommandsForCells:(NSArray<SDLMenuCell *> *)cells {
- NSMutableArray<SDLRPCRequest *> *mutableDeletes = [NSMutableArray array];
- for (SDLMenuCell *cell in cells) {
- if (cell.subCells == nil) {
- SDLDeleteCommand *delete = [[SDLDeleteCommand alloc] initWithId:cell.cellId];
- [mutableDeletes addObject:delete];
- } else {
- SDLDeleteSubMenu *delete = [[SDLDeleteSubMenu alloc] initWithId:cell.cellId];
- [mutableDeletes addObject:delete];
- }
- }
-
- return [mutableDeletes copy];
-}
-
-#pragma mark Commands / SubMenu RPCs
-/**
- This method will receive the cells to be added and the updated menu array. It will then build an array of add commands using the correct index to position the new items in the correct location.
-
- @param cells that will be added to the menu, this array must contain only cells that are not already in the menu.
- @param shouldHaveArtwork artwork bool
- @param menu the new menu array, this array should contain all the values the develeoper has set to be included in the new menu. This is used for placing the newly added cells in the correct locaiton.
- e.g. If the new menu array is [A, B, C, D] but only [C, D] are new we need to pass [A, B , C , D] so C and D can be added to index 2 and 3 respectively.
- @return list of SDLRPCRequest addCommands
- */
-- (NSArray<SDLRPCRequest *> *)sdl_mainMenuCommandsForCells:(NSArray<SDLMenuCell *> *)cells withArtwork:(BOOL)shouldHaveArtwork usingIndexesFrom:(NSArray<SDLMenuCell *> *)menu {
- NSMutableArray<SDLRPCRequest *> *mutableCommands = [NSMutableArray array];
-
- for (NSUInteger menuInteger = 0; menuInteger < menu.count; menuInteger++) {
- for (NSUInteger updateCellsIndex = 0; updateCellsIndex < cells.count; updateCellsIndex++) {
- if ([menu[menuInteger] isEqual:cells[updateCellsIndex]]) {
- if (cells[updateCellsIndex].subCells.count > 0) {
- [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cells[updateCellsIndex] withArtwork:shouldHaveArtwork position:(UInt16)menuInteger]];
- } else {
- [mutableCommands addObject:[self sdl_commandForMenuCell:cells[updateCellsIndex] withArtwork:shouldHaveArtwork position:(UInt16)menuInteger]];
- }
- }
- }
- }
-
- return [mutableCommands copy];
-}
-
-- (NSArray<SDLRPCRequest *> *)sdl_subMenuCommandsForCells:(NSArray<SDLMenuCell *> *)cells withArtwork:(BOOL)shouldHaveArtwork {
- NSMutableArray<SDLRPCRequest *> *mutableCommands = [NSMutableArray array];
- for (SDLMenuCell *cell in cells) {
- if (cell.subCells.count > 0) {
- [mutableCommands addObjectsFromArray:[self sdl_allCommandsForCells:cell.subCells withArtwork:shouldHaveArtwork]];
- }
- }
-
- return [mutableCommands copy];
-}
-
-- (NSArray<SDLRPCRequest *> *)sdl_allCommandsForCells:(NSArray<SDLMenuCell *> *)cells withArtwork:(BOOL)shouldHaveArtwork {
- NSMutableArray<SDLRPCRequest *> *mutableCommands = [NSMutableArray array];
-
- for (NSUInteger cellIndex = 0; cellIndex < cells.count; cellIndex++) {
- if (cells[cellIndex].subCells.count > 0) {
- [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cells[cellIndex] withArtwork:shouldHaveArtwork position:(UInt16)cellIndex]];
- [mutableCommands addObjectsFromArray:[self sdl_allCommandsForCells:cells[cellIndex].subCells withArtwork:shouldHaveArtwork]];
- } else {
- [mutableCommands addObject:[self sdl_commandForMenuCell:cells[cellIndex] withArtwork:shouldHaveArtwork position:(UInt16)cellIndex]];
- }
- }
-
- return [mutableCommands copy];
-}
-
-- (SDLAddCommand *)sdl_commandForMenuCell:(SDLMenuCell *)cell withArtwork:(BOOL)shouldHaveArtwork position:(UInt16)position {
- SDLAddCommand *command = [[SDLAddCommand alloc] init];
-
- SDLMenuParams *params = [[SDLMenuParams alloc] init];
- params.menuName = cell.title;
- params.parentID = cell.parentCellId != UINT32_MAX ? @(cell.parentCellId) : nil;
- params.position = @(position);
-
- command.menuParams = params;
- command.vrCommands = (cell.voiceCommands.count == 0) ? nil : cell.voiceCommands;
- command.cmdIcon = (cell.icon && shouldHaveArtwork) ? cell.icon.imageRPC : nil;
- command.cmdID = @(cell.cellId);
-
- return command;
-}
-
-- (SDLAddSubMenu *)sdl_subMenuCommandForMenuCell:(SDLMenuCell *)cell withArtwork:(BOOL)shouldHaveArtwork position:(UInt16)position {
- SDLImage *icon = (shouldHaveArtwork && (cell.icon.name != nil)) ? cell.icon.imageRPC : nil;
-
- SDLMenuLayout submenuLayout = nil;
- if (cell.submenuLayout && [self.systemCapabilityManager.defaultMainWindowCapability.menuLayoutsAvailable containsObject:cell.submenuLayout]) {
- submenuLayout = cell.submenuLayout;
- } else {
- submenuLayout = self.menuConfiguration.defaultSubmenuLayout;
- }
-
- return [[SDLAddSubMenu alloc] initWithId:cell.cellId menuName:cell.title menuLayout:submenuLayout menuIcon:icon position:(UInt8)position];
-}
-
-#pragma mark - Calling handlers
-
-- (BOOL)sdl_callHandlerForCells:(NSArray<SDLMenuCell *> *)cells command:(SDLOnCommand *)onCommand {
- for (SDLMenuCell *cell in cells) {
- if (cell.cellId == onCommand.cmdID.unsignedIntegerValue && cell.handler != nil) {
- cell.handler(onCommand.triggerSource);
- return YES;
- }
-
- if (cell.subCells.count > 0) {
- BOOL succeeded = [self sdl_callHandlerForCells:cell.subCells command:onCommand];
- if (succeeded) { return YES; }
- }
- }
-
- return NO;
-}
-
-#pragma mark - Observers
-
-- (void)sdl_commandNotification:(SDLRPCNotificationNotification *)notification {
- SDLOnCommand *onCommand = (SDLOnCommand *)notification.notification;
-
- [self sdl_callHandlerForCells:self.menuCells command:onCommand];
-}
-
-- (void)sdl_displayCapabilityDidUpdate:(SDLSystemCapability *)systemCapability {
- // We won't use the object in the parameter but the convenience method of the system capability manager
- self.windowCapability = self.systemCapabilityManager.defaultMainWindowCapability;
-}
-
-- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
- SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
-
- if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
- return;
- }
-
- SDLHMILevel oldHMILevel = self.currentHMILevel;
- self.currentHMILevel = hmiStatus.hmiLevel;
-
- // Auto-send an updated menu if we were in NONE and now we are not, and we need an update
- if ([oldHMILevel isEqualToString:SDLHMILevelNone] && ![self.currentHMILevel isEqualToString:SDLHMILevelNone] &&
- ![self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]) {
- if (self.waitingOnHMIUpdate) {
- [self setMenuCells:self.waitingUpdateMenuCells];
- self.waitingUpdateMenuCells = @[];
- return;
- }
- }
-
- // If we don't check for this and only update when not in the menu, there can be IN_USE errors, especially with submenus. We also don't want to encourage changing out the menu while the user is using it for usability reasons.
- SDLSystemContext oldSystemContext = self.currentSystemContext;
- self.currentSystemContext = hmiStatus.systemContext;
-
- if ([oldSystemContext isEqualToEnum:SDLSystemContextMenu]
- && ![self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]
- && ![self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
- if (self.waitingOnHMIUpdate) {
- [self setMenuCells:self.waitingUpdateMenuCells];
- self.waitingUpdateMenuCells = @[];
- }
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMenuParams.m b/SmartDeviceLink/SDLMenuParams.m
deleted file mode 100644
index 0fcfbd60e..000000000
--- a/SmartDeviceLink/SDLMenuParams.m
+++ /dev/null
@@ -1,63 +0,0 @@
-// SDLMenuParams.m
-//
-
-
-#import "SDLMenuParams.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLMenuParams
-
-- (instancetype)initWithMenuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position {
- self = [self initWithMenuName:menuName];
- if (!self) {
- return nil;
- }
-
- self.parentID = @(parentId);
- self.position = @(position);
-
- return self;
-}
-
-- (instancetype)initWithMenuName:(NSString *)menuName {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.menuName = menuName;
-
- return self;
-}
-
-- (void)setParentID:(nullable NSNumber<SDLInt> *)parentID {
- [self.store sdl_setObject:parentID forName:SDLRPCParameterNameParentId];
-}
-
-- (nullable NSNumber<SDLInt> *)parentID {
- return [self.store sdl_objectForName:SDLRPCParameterNameParentId ofClass:NSNumber.class error:nil];
-}
-
-- (void)setPosition:(nullable NSNumber<SDLInt> *)position {
- [self.store sdl_setObject:position forName:SDLRPCParameterNamePosition];
-}
-
-- (nullable NSNumber<SDLInt> *)position {
- return [self.store sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setMenuName:(NSString *)menuName {
- [self.store sdl_setObject:menuName forName:SDLRPCParameterNameMenuName];
-}
-
-- (NSString *)menuName {
- return [self.store sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMetadataType.h b/SmartDeviceLink/SDLMetadataType.h
deleted file mode 100644
index da79a4ac6..000000000
--- a/SmartDeviceLink/SDLMetadataType.h
+++ /dev/null
@@ -1,76 +0,0 @@
-
-//
-// SDLMetadataType.h
-// SmartDeviceLink-iOS
-//
-// Created by Brett McIsaac on 8/2/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Text Field metadata types. Used in Show.
- */
-typedef SDLEnum SDLMetadataType SDL_SWIFT_ENUM;
-
-/**
- * The song / media title name
- */
-extern SDLMetadataType const SDLMetadataTypeMediaTitle;
-
-/**
- * The "artist" of the media
- */
-extern SDLMetadataType const SDLMetadataTypeMediaArtist;
-
-/**
- * The "album" of the media"
- */
-extern SDLMetadataType const SDLMetadataTypeMediaAlbum;
-
-/**
- * The "year" that the media was created
- */
-extern SDLMetadataType const SDLMetadataTypeMediaYear;
-
-/**
- * The "genre" of the media
- */
-extern SDLMetadataType const SDLMetadataTypeMediaGenre;
-
-/**
- * The "station" that the media is playing on
- */
-extern SDLMetadataType const SDLMetadataTypeMediaStation;
-
-/**
- * The "rating" given to the media
- */
-extern SDLMetadataType const SDLMetadataTypeRating;
-
-/**
- * The current temperature of the weather information
- */
-extern SDLMetadataType const SDLMetadataTypeCurrentTemperature;
-
-/**
- * The high / maximum temperature of the weather information for the current period
- */
-extern SDLMetadataType const SDLMetadataTypeMaximumTemperature;
-
-/**
- * The low / minimum temperature of the weather information for the current period
- */
-extern SDLMetadataType const SDLMetadataTypeMinimumTemperature;
-
-/**
- * A description of the weather for the current period
- */
-extern SDLMetadataType const SDLMetadataTypeWeatherTerm;
-
-/**
- * The humidity of the weather information for the current period
- */
-extern SDLMetadataType const SDLMetadataTypeHumidity;
-
diff --git a/SmartDeviceLink/SDLModuleType.h b/SmartDeviceLink/SDLModuleType.h
deleted file mode 100644
index c69004e8a..000000000
--- a/SmartDeviceLink/SDLModuleType.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// SDLModuleType.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * The type of remote control data. Used in ButtonPress, GetInteriorVehicleData, and ModuleData
- */
-typedef SDLEnum SDLModuleType SDL_SWIFT_ENUM;
-
-/**
- * A SDLModuleType with the value of *CLIMATE*
- */
-extern SDLModuleType const SDLModuleTypeClimate;
-
-/**
- * A SDLModuleType with the value of *RADIO*
- */
-extern SDLModuleType const SDLModuleTypeRadio;
-
-/**
- * A SDLModuleType with the value of *SEAT*
- */
-extern SDLModuleType const SDLModuleTypeSeat;
-
-/**
- * A SDLModuleType with the value of *AUDIO*
- */
-extern SDLModuleType const SDLModuleTypeAudio;
-
-/**
- * A SDLModuleType with the value of *LIGHT*
- */
-extern SDLModuleType const SDLModuleTypeLight;
-
-/**
- * A SDLModuleType with the value of *HMI_SETTINGS*
- */
-extern SDLModuleType const SDLModuleTypeHMISettings;
-
diff --git a/SmartDeviceLink/SDLNavigationAction.h b/SmartDeviceLink/SDLNavigationAction.h
deleted file mode 100644
index 6cc0edd9e..000000000
--- a/SmartDeviceLink/SDLNavigationAction.h
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// SDLNavigationAction.h
-// SmartDeviceLink
-//
-// Created by Nicole on 2/22/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * A navigation action.
- */
-typedef SDLEnum SDLNavigationAction SDL_SWIFT_ENUM;
-
-/**
- * Using this action plus a supplied direction can give the type of turn.
- */
-extern SDLNavigationAction const SDLNavigationActionTurn;
-
-/**
- * A navigation action of exit.
- */
-extern SDLNavigationAction const SDLNavigationActionExit;
-
-/**
- * A navigation action of stay.
- */
-extern SDLNavigationAction const SDLNavigationActionStay;
-
-/**
- * A navigation action of merge.
- */
-extern SDLNavigationAction const SDLNavigationActionMerge;
-
-/**
- * A navigation action of ferry.
- */
-extern SDLNavigationAction const SDLNavigationActionFerry;
-
-/**
- * A navigation action of car shuttle train.
- */
-extern SDLNavigationAction const SDLNavigationActionCarShuttleTrain;
-
-/**
- * A navigation action of waypoint.
- */
-extern SDLNavigationAction const SDLNavigationActionWaypoint;
diff --git a/SmartDeviceLink/SDLNavigationJunction.h b/SmartDeviceLink/SDLNavigationJunction.h
deleted file mode 100644
index 36be6f0db..000000000
--- a/SmartDeviceLink/SDLNavigationJunction.h
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// SDLNavigationJunction.h
-// SmartDeviceLink
-//
-// Created by Nicole on 2/22/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * A navigation junction type.
- */
-typedef SDLEnum SDLNavigationJunction SDL_SWIFT_ENUM;
-
-/**
- * A junction that represents a standard intersection with a single road crossing another.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionRegular;
-
-/**
- * A junction where the road splits off into two paths; a fork in the road.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionBifurcation;
-
-/**
- * A junction that has multiple intersections and paths.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionMultiCarriageway;
-
-/**
- * A junction where traffic moves in a single direction around a central, non-traversable point to reach one of the connecting roads.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionRoundabout;
-
-/**
- * Similar to a roundabout, however the center of the roundabout is fully traversable. Also known as a mini-roundabout.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionTraversableRoundabout;
-
-/**
- * A junction where lefts diverge to the right, then curve to the left, converting a left turn to a crossing maneuver.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionJughandle;
-
-/**
- * Multiple way intersection that allows traffic to flow based on priority; most commonly right of way and first in, first out.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionAllWayYield;
-
-/**
- * A junction designated for traffic turn arounds.
- */
-extern SDLNavigationJunction const SDLNavigationJunctionTurnAround;
diff --git a/SmartDeviceLink/SDLNotificationConstants.h b/SmartDeviceLink/SDLNotificationConstants.h
deleted file mode 100644
index d99e0724c..000000000
--- a/SmartDeviceLink/SDLNotificationConstants.h
+++ /dev/null
@@ -1,629 +0,0 @@
-//
-// SDLNotificationConstants.h
-// SmartDeviceLink-iOS
-//
-// Created by Justin Dickow on 9/30/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-@class SDLOnButtonEvent;
-@class SDLOnButtonPress;
-@class SDLOnCommand;
-@class SDLRPCNotification;
-@class SDLRPCResponse;
-@class SDLRPCRequest;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-// Resolves issue of using Swift 3 and pre-iOS 10 versions due to NSNotificationName unavailability.
-#if __IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_9_3
-#define NOTIFICATION_TYPEDEF NSString *
-#else
-#define NOTIFICATION_TYPEDEF NSNotificationName
-#endif
-
-/// NSNotification names specific to incoming SDL RPC
-typedef NOTIFICATION_TYPEDEF SDLNotificationName;
-
-/// The key used in all SDL NSNotifications to extract the response or notification from the userInfo dictionary.
-typedef NSString *SDLNotificationUserInfoKey;
-
-#pragma mark - Blocks
-
-/**
- * A handler used on SDLPerformAudioPassThru.
- *
- * @param audioData The audio data contained in the notification.
- */
-typedef void (^SDLAudioPassThruHandler)(NSData *__nullable audioData);
-
-/**
- * A handler used on all RPC requests which fires when the response is received.
- *
- * @param request The request which was sent.
- * @param response The response which was received.
- * @param error If sending the request encountered an error, this parameter will not be nil.
- */
-typedef void (^SDLResponseHandler)(__kindof SDLRPCRequest *__nullable request, __kindof SDLRPCResponse *__nullable response, NSError *__nullable error);
-
-/**
- A completion handler called after a sequential or simultaneous set of requests have completed sending.
-
- @param success True if every request succeeded, false if any failed. See the progress handler for more details on failures.
- */
-typedef void (^SDLMultipleRequestCompletionHandler)(BOOL success);
-
-/**
- A handler called after each response to a request comes in in a multiple request send.
-
- @param request The request that received a response
- @param response The response received
- @param error The error that occurred during the request if any occurred.
- @param percentComplete The percentage of requests that have received a response
- @return continueSendingRequests NO to cancel any requests that have not yet been sent. This is really only useful for a sequential send (sendSequentialRequests:progressHandler:completionHandler:). Return YES to continue sending requests.
- */
-typedef BOOL (^SDLMultipleSequentialRequestProgressHandler)(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *__nullable response, NSError *__nullable error, float percentComplete);
-
-/**
- A handler called after each response to a request comes in in a multiple request send.
-
- @param request The request that received a response
- @param response The response received
- @param error The error that occurred during the request if any occurred.
- @param percentComplete The percentage of requests that have received a response
- */
-typedef void (^SDLMultipleAsyncRequestProgressHandler)(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *__nullable response, NSError *__nullable error, float percentComplete);
-
-/**
- A handler that may optionally be run when an SDLSubscribeButton or SDLSoftButton has a corresponding notification occur.
-
- @warning This only works if you send the RPC using SDLManager.
- @warning Only one of the two parameters will be set for each block call.
-
- @param buttonPress An SDLOnButtonPress object that corresponds to this particular button.
- @param buttonEvent An SDLOnButtonEvent object that corresponds to this particular button.
- */
-typedef void (^SDLRPCButtonNotificationHandler)(SDLOnButtonPress *_Nullable buttonPress, SDLOnButtonEvent *_Nullable buttonEvent);
-/**
- A handler that may optionally be run when an SDLAddCommand has a corresponding notification occur.
-
- @warning This only works if you send the RPC using SDLManager.
-
- @param command An SDLOnCommand object that corresponds to this particular SDLAddCommand.
- */
-typedef void (^SDLRPCCommandNotificationHandler)(SDLOnCommand *command);
-
-
-#pragma mark - Notification info dictionary keys
-
-/**
-* The key used in all SDL NSNotifications to extract the response or notification from the userinfo dictionary.
-*/
-extern SDLNotificationUserInfoKey const SDLNotificationUserInfoObject;
-
-/**
- * Some general NSNotification names not associated with any specific RPC response or request.
- */
-#pragma mark - General notifications
-
-/// Name for a disconnection notification
-extern SDLNotificationName const SDLTransportDidDisconnect;
-
-/// Name for a connection notification
-extern SDLNotificationName const SDLTransportDidConnect;
-
-/// Name for a error during connection notification
-extern SDLNotificationName const SDLTransportConnectError;
-
-/// Name for a disconnection notification
-extern SDLNotificationName const SDLRPCServiceDidDisconnect;
-
-/// Name for a connection notification
-extern SDLNotificationName const SDLRPCServiceDidConnect;
-
-/// Name for a error during connection notification
-extern SDLNotificationName const SDLRPCServiceConnectionDidError;
-
-/// Name for a general error notification
-extern SDLNotificationName const SDLDidReceiveError;
-
-/// Name for an incoming lock screen icon notification
-extern SDLNotificationName const SDLDidReceiveLockScreenIcon;
-
-/// Name for an SDL became ready notification
-extern SDLNotificationName const SDLDidBecomeReady;
-
-/// Name for a notification sent by the user when their CarWindow view has been updated
-extern SDLNotificationName const SDLDidUpdateProjectionView;
-
-/// Name for a LockScreenStatus notification RPC
-extern SDLNotificationName const SDLDidChangeLockScreenStatusNotification __deprecated_msg("This will be replaced in a future version where a fake RPC is not sent");
-
-/**
- * NSNotification names associated with specific RPC responses.
- */
-#pragma mark - RPC responses
-
-/// Name for an AddCommand response RPC
-extern SDLNotificationName const SDLDidReceiveAddCommandResponse;
-
-/// Name for an AddSubMenu response RPC
-extern SDLNotificationName const SDLDidReceiveAddSubMenuResponse;
-
-/// Name for an Alert response RPC
-extern SDLNotificationName const SDLDidReceiveAlertResponse;
-
-/// Name for an AlertManeuver response RPC
-extern SDLNotificationName const SDLDidReceiveAlertManeuverResponse;
-
-/// Name for an ButtonPress response RPC
-extern SDLNotificationName const SDLDidReceiveButtonPressResponse;
-
-/// Name for aa CancelInteraction response RPC
-extern SDLNotificationName const SDLDidReceiveCancelInteractionResponse;
-
-/// Name for a ChangeRegistration response RPC
-extern SDLNotificationName const SDLDidReceiveChangeRegistrationResponse;
-
-/// Name for a CloseApplication response RPC
-extern SDLNotificationName const SDLDidReceiveCloseApplicationResponse;
-
-/// Name for a CreateInteractionChoiceSet response RPC
-extern SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse;
-
-/// Name for a CreateWindow response RPC
-extern SDLNotificationName const SDLDidReceiveCreateWindowResponse;
-
-/// Name for a DeleteCommand response RPC
-extern SDLNotificationName const SDLDidReceiveDeleteCommandResponse;
-
-/// Name for a DeleteFile response RPC
-extern SDLNotificationName const SDLDidReceiveDeleteFileResponse;
-
-/// Name for a DeleteInteractionChoiceSet response RPC
-extern SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetResponse;
-
-/// Name for a DeleteSubmenu response RPC
-extern SDLNotificationName const SDLDidReceiveDeleteSubmenuResponse;
-
-/// Name for a DeleteWindow response RPC
-extern SDLNotificationName const SDLDidReceiveDeleteWindowResponse;
-
-/// Name for a DiagnosticMessage response RPC
-extern SDLNotificationName const SDLDidReceiveDiagnosticMessageResponse;
-
-/// Name for a DialNumber response RPC
-extern SDLNotificationName const SDLDidReceiveDialNumberResponse;
-
-/// Name for an EncodedSyncPData response RPC
-extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse __deprecated;
-
-/// Name for an EndAudioPassThru response RPC
-extern SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse;
-
-/// Name for a Generic response RPC
-extern SDLNotificationName const SDLDidReceiveGenericResponse;
-
-/// Name for a GetCloudAppProperties response RPC
-extern SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesResponse;
-
-/// Name for a GetAppServiceData response RPC
-extern SDLNotificationName const SDLDidReceiveGetAppServiceDataResponse;
-
-/// Name for a GetDTCs response RPC
-extern SDLNotificationName const SDLDidReceiveGetDTCsResponse;
-
-/// Name for a GetFile response RPC
-extern SDLNotificationName const SDLDidReceiveGetFileResponse;
-
-/// Name for a GetInteriorVehicleData response RPC
-extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataResponse;
-
-/// Name for a GetInteriorVehicleDataConsent response RPC
-extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentResponse;
-
-/// Name for a GetSystemCapabilities response RPC
-extern SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse;
-
-/// Name for a GetVehicleData response RPC
-extern SDLNotificationName const SDLDidReceiveGetVehicleDataResponse;
-
-/// Name for a GetWaypoints response RPC
-extern SDLNotificationName const SDLDidReceiveGetWaypointsResponse;
-
-/// Name for a ListFiles response RPC
-extern SDLNotificationName const SDLDidReceiveListFilesResponse;
-
-/// Name for a PerformAppServiceInteraction response RPC
-extern SDLNotificationName const SDLDidReceivePerformAppServiceInteractionResponse;
-
-/// Name for a PerformAudioPassThru response RPC
-extern SDLNotificationName const SDLDidReceivePerformAudioPassThruResponse;
-
-/// Name for a PerformInteraction response RPC
-extern SDLNotificationName const SDLDidReceivePerformInteractionResponse;
-
-/// Name for a PublishAppService response RPC
-extern SDLNotificationName const SDLDidReceivePublishAppServiceResponse;
-
-/// Name for a ReceivePutFile response RPC
-extern SDLNotificationName const SDLDidReceivePutFileResponse;
-
-/// Name for a ReceiveReadDID response RPC
-extern SDLNotificationName const SDLDidReceiveReadDIDResponse;
-
-/// Name for a RegisterAppInterface response RPC
-extern SDLNotificationName const SDLDidReceiveRegisterAppInterfaceResponse;
-
-/// Name for a ReleaseInteriorVehicleDataModule response RPC
-extern SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleResponse;
-
-/// Name for a ResetGlobalProperties response RPC
-extern SDLNotificationName const SDLDidReceiveResetGlobalPropertiesResponse;
-
-/// Name for a ScrollableMessage response RPC
-extern SDLNotificationName const SDLDidReceiveScrollableMessageResponse;
-
-/// Name for a SendHapticData response RPC
-extern SDLNotificationName const SDLDidReceiveSendHapticDataResponse;
-
-/// Name for a SendLocation response RPC
-extern SDLNotificationName const SDLDidReceiveSendLocationResponse;
-
-/// Name for a SetAppIcon response RPC
-extern SDLNotificationName const SDLDidReceiveSetAppIconResponse;
-
-/// Name for a SetCloudAppProperties response RPC
-extern SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesResponse;
-
-/// Name for a SetDisplayLayout response RPC
-extern SDLNotificationName const SDLDidReceiveSetDisplayLayoutResponse;
-
-/// Name for a SetGlobalProperties response RPC
-extern SDLNotificationName const SDLDidReceiveSetGlobalPropertiesResponse;
-
-/// Name for a SetInteriorVehicleData response RPC
-extern SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataResponse;
-
-/// Name for a SetMediaClockTimer response RPC
-extern SDLNotificationName const SDLDidReceiveSetMediaClockTimerResponse;
-
-/// Name for a ShowConstantTBT response RPC
-extern SDLNotificationName const SDLDidReceiveShowConstantTBTResponse;
-
-/// Name for a Show response RPC
-extern SDLNotificationName const SDLDidReceiveShowResponse;
-
-/// Name for a ShowAppMenu response RPC
-extern SDLNotificationName const SDLDidReceiveShowAppMenuResponse;
-
-/// Name for a Slider response RPC
-extern SDLNotificationName const SDLDidReceiveSliderResponse;
-
-/// Name for a Speak response RPC
-extern SDLNotificationName const SDLDidReceiveSpeakResponse;
-
-/// Name for a SubscribeButton response RPC
-extern SDLNotificationName const SDLDidReceiveSubscribeButtonResponse;
-
-/// Name for a SubscribeVehicleData response RPC
-extern SDLNotificationName const SDLDidReceiveSubscribeVehicleDataResponse;
-
-/// Name for a SubscribeWaypoints response RPC
-extern SDLNotificationName const SDLDidReceiveSubscribeWaypointsResponse;
-
-/// Name for a SyncPData response RPC
-extern SDLNotificationName const SDLDidReceiveSyncPDataResponse __deprecated;
-
-/// Name for a SystemRequest response RPC
-extern SDLNotificationName const SDLDidReceiveSystemRequestResponse;
-
-/// Name for an UpdateTurnList response RPC
-extern SDLNotificationName const SDLDidReceiveUpdateTurnListResponse;
-
-/// Name for an UnpublishAppService response RPC
-extern SDLNotificationName const SDLDidReceiveUnpublishAppServiceResponse;
-
-/// Name for an UnregisterAppInterface response RPC
-extern SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceResponse;
-
-/// Name for an UnsubscribeButton response RPC
-extern SDLNotificationName const SDLDidReceiveUnsubscribeButtonResponse;
-
-/// Name for an UnsubscribeVehicleData response RPC
-extern SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataResponse;
-
-/// Name for an UnsubscribeWaypoints response RPC
-extern SDLNotificationName const SDLDidReceiveUnsubscribeWaypointsResponse;
-
-/**
- * NSNotification names associated with specific RPC requests.
- */
-#pragma mark - RPC requests
-
-/// Name for an AddCommand request RPC
-extern SDLNotificationName const SDLDidReceiveAddCommandRequest;
-
-/// Name for an AddSubMenu request RPC
-extern SDLNotificationName const SDLDidReceiveAddSubMenuRequest;
-
-/// Name for an Alert request RPC
-extern SDLNotificationName const SDLDidReceiveAlertRequest;
-
-/// Name for an AlertManeuver request RPC
-extern SDLNotificationName const SDLDidReceiveAlertManeuverRequest;
-
-/// Name for a ButtonPress request RPC
-extern SDLNotificationName const SDLDidReceiveButtonPressRequest;
-
-/// Name for a CancelInteraction request RPC
-extern SDLNotificationName const SDLDidReceiveCancelInteractionRequest;
-
-/// Name for a ChangeRegistration request RPC
-extern SDLNotificationName const SDLDidReceiveChangeRegistrationRequest;
-
-/// Name for a CloseApplication request RPC
-extern SDLNotificationName const SDLDidReceiveCloseApplicationRequest;
-
-/// Name for a CreateInteractionChoiceSet request RPC
-extern SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetRequest;
-
-/// Name for a CreateWindow request RPC
-extern SDLNotificationName const SDLDidReceiveCreateWindowRequest;
-
-/// Name for a DeleteCommand request RPC
-extern SDLNotificationName const SDLDidReceiveDeleteCommandRequest;
-
-/// Name for a DeleteFile request RPC
-extern SDLNotificationName const SDLDidReceiveDeleteFileRequest;
-
-/// Name for a DeleteInteractionChoiceSet request RPC
-extern SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetRequest;
-
-/// Name for a DeleteSubMenu request RPC
-extern SDLNotificationName const SDLDidReceiveDeleteSubMenuRequest;
-
-/// Name for a DeleteSubMenu request RPC
-extern SDLNotificationName const SDLDidReceiveDeleteWindowRequest;
-
-/// Name for a DiagnosticMessage request RPC
-extern SDLNotificationName const SDLDidReceiveDiagnosticMessageRequest;
-
-/// Name for a DialNumberR request RPC
-extern SDLNotificationName const SDLDidReceiveDialNumberRequest;
-
-/// Name for an EncodedSyncPData request RPC
-extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest __deprecated;
-
-/// Name for a EndAudioPass request RPC
-extern SDLNotificationName const SDLDidReceiveEndAudioPassThruRequest;
-
-/// Name for a GetAppServiceData request RPC
-extern SDLNotificationName const SDLDidReceiveGetAppServiceDataRequest;
-
-/// Name for a GetCloudAppProperties request RPC
-extern SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesRequest;
-
-/// Name for a ReceiveGetDTCs request RPC
-extern SDLNotificationName const SDLDidReceiveGetDTCsRequest;
-
-/// Name for a GetFile request RPC
-extern SDLNotificationName const SDLDidReceiveGetFileRequest;
-
-/// Name for a GetInteriorVehicleData request RPC
-extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataRequest;
-
-/// Name for a GetInteriorVehicleDataConsent request RPC
-extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentRequest;
-
-/// Name for a GetSystemCapability request RPC
-extern SDLNotificationName const SDLDidReceiveGetSystemCapabilityRequest;
-
-/// Name for a GetVehicleData request RPC
-extern SDLNotificationName const SDLDidReceiveGetVehicleDataRequest;
-
-/// Name for a GetWayPoints request RPC
-extern SDLNotificationName const SDLDidReceiveGetWayPointsRequest;
-
-/// Name for a ListFiles request RPC
-extern SDLNotificationName const SDLDidReceiveListFilesRequest;
-
-/// Name for a PerformAppServiceInteraction request RPC
-extern SDLNotificationName const SDLDidReceivePerformAppServiceInteractionRequest;
-
-/// Name for a PerformAudioPassThru request RPC
-extern SDLNotificationName const SDLDidReceivePerformAudioPassThruRequest;
-
-/// Name for a PerformInteraction request RPC
-extern SDLNotificationName const SDLDidReceivePerformInteractionRequest;
-
-/// Name for a PublishAppService request RPC
-extern SDLNotificationName const SDLDidReceivePublishAppServiceRequest;
-
-/// Name for a PutFile request RPC
-extern SDLNotificationName const SDLDidReceivePutFileRequest;
-
-/// Name for a ReadDID request RPC
-extern SDLNotificationName const SDLDidReceiveReadDIDRequest;
-
-/// Name for a RegisterAppInterfacr request RPC
-extern SDLNotificationName const SDLDidReceiveRegisterAppInterfaceRequest;
-
-/// Name for a ReleaseInteriorVehicleData request RPC
-extern SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleRequest;
-
-/// Name for a ResetGlobalProperties request RPC
-extern SDLNotificationName const SDLDidReceiveResetGlobalPropertiesRequest;
-
-/// Name for a ScrollableMessage request RPC
-extern SDLNotificationName const SDLDidReceiveScrollableMessageRequest;
-
-/// Name for a SendHapticData request RPC
-extern SDLNotificationName const SDLDidReceiveSendHapticDataRequest;
-
-/// Name for a SendLocation request RPC
-extern SDLNotificationName const SDLDidReceiveSendLocationRequest;
-
-/// Name for a SetAppIcon request RPC
-extern SDLNotificationName const SDLDidReceiveSetAppIconRequest;
-
-/// Name for a SetCloudProperties request RPC
-extern SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesRequest;
-
-/// Name for a SetDisplayLayout request RPC
-extern SDLNotificationName const SDLDidReceiveSetDisplayLayoutRequest;
-
-/// Name for a SetGlobalProperties request RPC
-extern SDLNotificationName const SDLDidReceiveSetGlobalPropertiesRequest;
-
-/// Name for a SetInteriorVehicleData request RPC
-extern SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataRequest;
-
-/// Name for a SetMediaClockTimer request RPC
-extern SDLNotificationName const SDLDidReceiveSetMediaClockTimerRequest;
-
-/// Name for a Show request RPC
-extern SDLNotificationName const SDLDidReceiveShowRequest;
-
-/// Name for a ShowAppMenu request RPC
-extern SDLNotificationName const SDLDidReceiveShowAppMenuRequest;
-
-/// Name for a ShowConstantTBT request RPC
-extern SDLNotificationName const SDLDidReceiveShowConstantTBTRequest;
-
-/// Name for a Slider request RPC
-extern SDLNotificationName const SDLDidReceiveSliderRequest;
-
-/// Name for a Speak request RPC
-extern SDLNotificationName const SDLDidReceiveSpeakRequest;
-
-/// Name for a SubscribeButton request RPC
-extern SDLNotificationName const SDLDidReceiveSubscribeButtonRequest;
-
-/// Name for a SubscribeVehicleData request RPC
-extern SDLNotificationName const SDLDidReceiveSubscribeVehicleDataRequest;
-
-/// Name for a ubscribeWayPoints request RPC
-extern SDLNotificationName const SDLDidReceiveSubscribeWayPointsRequest;
-
-/// Name for a SyncPData request RPC
-extern SDLNotificationName const SDLDidReceiveSyncPDataRequest __deprecated;
-
-/// Name for a SystemRequest request RPC
-extern SDLNotificationName const SDLDidReceiveSystemRequestRequest;
-
-/// Name for an UnpublishAppService request RPC
-extern SDLNotificationName const SDLDidReceiveUnpublishAppServiceRequest;
-
-/// Name for an UnregisterAppInterface request RPC
-extern SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceRequest;
-
-/// Name for an UnsubscribeButton request RPC
-extern SDLNotificationName const SDLDidReceiveUnsubscribeButtonRequest;
-
-/// Name for an UnsubscribeVehicleData request RPC
-extern SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataRequest;
-
-/// Name for an UnsubscribeWayPoints request RPC
-extern SDLNotificationName const SDLDidReceiveUnsubscribeWayPointsRequest;
-
-/// Name for an UpdateTurnList request RPC
-extern SDLNotificationName const SDLDidReceiveUpdateTurnListRequest;
-
-/**
- * NSNotification names associated with specific RPC notifications.
- */
-#pragma mark - RPC Notifications
-
-/// Name for a DriverDistractionState notification RPC
-extern SDLNotificationName const SDLDidChangeDriverDistractionStateNotification;
-
-/// Name for a HMIStatus notification RPC
-extern SDLNotificationName const SDLDidChangeHMIStatusNotification;
-
-/// Name for an AppServiceData notification RPC
-extern SDLNotificationName const SDLDidReceiveAppServiceDataNotification;
-
-/// Name for an AppUnregistered notification RPC
-extern SDLNotificationName const SDLDidReceiveAppUnregisteredNotification;
-
-/// Name for an AudioPassThru notification RPC
-extern SDLNotificationName const SDLDidReceiveAudioPassThruNotification;
-
-/// Name for a ButtonEvent notification RPC
-extern SDLNotificationName const SDLDidReceiveButtonEventNotification;
-
-/// Name for a ButtonPress notification RPC
-extern SDLNotificationName const SDLDidReceiveButtonPressNotification;
-
-/// Name for a Command notification RPC
-extern SDLNotificationName const SDLDidReceiveCommandNotification;
-
-/// Name for a EncodedSyncPData notification RPC
-extern SDLNotificationName const SDLDidReceiveEncodedDataNotification __deprecated;
-
-/// Name for a InteriorVehicleData notification RPC
-extern SDLNotificationName const SDLDidReceiveInteriorVehicleDataNotification;
-
-/// Name for a KeyboardInput notification RPC
-extern SDLNotificationName const SDLDidReceiveKeyboardInputNotification;
-
-/// Name for a Language notification RPC
-extern SDLNotificationName const SDLDidChangeLanguageNotification;
-
-/// Name for a NewHash notification RPC
-extern SDLNotificationName const SDLDidReceiveNewHashNotification;
-
-/// Name for a VehicleIcon notification RPC
-extern SDLNotificationName const SDLDidReceiveVehicleIconNotification;
-
-/// Name for a ChangePermissions notification RPC
-extern SDLNotificationName const SDLDidChangePermissionsNotification;
-
-/// Name for a RemoteControlStatus notification RPC
-extern SDLNotificationName const SDLDidReceiveRemoteControlStatusNotification;
-
-/// Name for an OnSyncPData notification RPC
-extern SDLNotificationName const SDLDidReceiveSyncPDataNotification __deprecated;
-
-/// Name for a SystemCapability notification RPC
-extern SDLNotificationName const SDLDidReceiveSystemCapabilityUpdatedNotification;
-
-/// Name for a SystemRequest notification RPC
-extern SDLNotificationName const SDLDidReceiveSystemRequestNotification;
-
-/// Name for a TurnByTurnStat notification RPC
-extern SDLNotificationName const SDLDidChangeTurnByTurnStateNotification;
-
-/// Name for a TouchEvent notification RPC
-extern SDLNotificationName const SDLDidReceiveTouchEventNotification;
-
-/// Name for a VehicleData notification RPC
-extern SDLNotificationName const SDLDidReceiveVehicleDataNotification;
-
-/// Name for a Waypoint notification RPC
-extern SDLNotificationName const SDLDidReceiveWaypointNotification;
-
-/// This class defines methods for getting groups of notifications
-@interface SDLNotificationConstants : NSObject
-
-/**
- All of the possible SDL RPC Response notification names
-
- @return All response notification names
- */
-+ (NSArray<SDLNotificationName> *)allResponseNames;
-
-/**
- All of the possible SDL Button event notification names
-
- @return The names
- */
-+ (NSArray<SDLNotificationName> *)allButtonEventNotifications;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLNotificationConstants.m b/SmartDeviceLink/SDLNotificationConstants.m
deleted file mode 100644
index d4cb7c9bc..000000000
--- a/SmartDeviceLink/SDLNotificationConstants.m
+++ /dev/null
@@ -1,266 +0,0 @@
-//
-// SDLNotificationConstants.m
-// SmartDeviceLink-iOS
-//
-// Created by Justin Dickow on 9/30/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLNotificationConstants.h"
-
-/// These notifications will be returned on a background serial queue
-
-SDLNotificationUserInfoKey const SDLNotificationUserInfoObject = @"SDLNotificationUserInfoObject";
-
-
-#pragma mark - General notifications
-SDLNotificationName const SDLTransportDidDisconnect = @"com.sdl.transport.disconnect";
-SDLNotificationName const SDLTransportDidConnect = @"com.sdl.transport.connect";
-SDLNotificationName const SDLTransportConnectError = @"com.sdl.transport.connectError";
-SDLNotificationName const SDLRPCServiceDidDisconnect = @"com.sdl.rpcService.disconnect";
-SDLNotificationName const SDLRPCServiceDidConnect = @"com.sdl.rpcService.connect";
-SDLNotificationName const SDLRPCServiceConnectionDidError = @"com.sdl.rpcService.connectError";
-SDLNotificationName const SDLDidReceiveError = @"com.sdl.general.error";
-SDLNotificationName const SDLDidReceiveLockScreenIcon = @"com.sdl.general.lockscreenIconReceived";
-SDLNotificationName const SDLDidBecomeReady = @"com.sdl.notification.managerReady";
-SDLNotificationName const SDLDidReceiveVehicleIconNotification = @"com.sdl.notification.vehicleIcon";
-SDLNotificationName const SDLDidUpdateProjectionView = @"com.sdl.notification.projectionViewUpdate";
-SDLNotificationName const SDLDidChangeLockScreenStatusNotification = @"com.sdl.notification.lockScreenStatus";
-
-#pragma mark - RPC Responses
-SDLNotificationName const SDLDidReceiveAddCommandResponse = @"com.sdl.response.AddCommand";
-SDLNotificationName const SDLDidReceiveAddSubMenuResponse = @"com.sdl.response.AddSubMenu";
-SDLNotificationName const SDLDidReceiveAlertResponse = @"com.sdl.response.Alert";
-SDLNotificationName const SDLDidReceiveAlertManeuverResponse = @"com.sdl.response.AlertManeuver";
-SDLNotificationName const SDLDidReceiveButtonPressResponse = @"com.sdl.response.ButtonPress";
-SDLNotificationName const SDLDidReceiveCancelInteractionResponse = @"com.sdl.response.CancelInteraction";
-SDLNotificationName const SDLDidReceiveChangeRegistrationResponse = @"com.sdl.response.ChangeRegistration";
-SDLNotificationName const SDLDidReceiveCloseApplicationResponse = @"com.sdl.response.CloseApplication";
-SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse = @"com.sdl.response.CreateInteractionChoiceSet";
-SDLNotificationName const SDLDidReceiveCreateWindowResponse = @"com.sdl.response.CreateWindow";
-SDLNotificationName const SDLDidReceiveDeleteCommandResponse = @"com.sdl.response.DeleteCommand";
-SDLNotificationName const SDLDidReceiveDeleteFileResponse = @"com.sdl.response.DeleteFile";
-SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetResponse = @"com.sdl.response.DeleteInteractionChoiceSet";
-SDLNotificationName const SDLDidReceiveDeleteSubmenuResponse = @"com.sdl.response.DeleteSubMenu";
-SDLNotificationName const SDLDidReceiveDeleteWindowResponse = @"com.sdl.response.DeleteWindow";
-SDLNotificationName const SDLDidReceiveDiagnosticMessageResponse = @"com.sdl.response.DiagnosticMessage";
-SDLNotificationName const SDLDidReceiveDialNumberResponse = @"com.sdl.response.DialNumber";
-SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse = @"com.sdl.response.EncodedSyncPData";
-SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse = @"com.sdl.response.EndAudioPassThru";
-SDLNotificationName const SDLDidReceiveGenericResponse = @"com.sdl.response.GenericResponse";
-SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesResponse = @"com.sdl.response.GetCloudAppProperties";
-SDLNotificationName const SDLDidReceiveGetAppServiceDataResponse = @"com.sdl.response.GetAppServiceData";
-SDLNotificationName const SDLDidReceiveGetDTCsResponse = @"com.sdl.response.GetDTCs";
-SDLNotificationName const SDLDidReceiveGetFileResponse = @"com.sdl.response.GetFile";
-SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataResponse = @"com.sdl.response.GetInteriorVehicleData";
-SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentResponse = @"com.sdl.response.GetInteriorVehicleDataConsent";
-SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse = @"com.sdl.response.GetSystemCapability";
-SDLNotificationName const SDLDidReceiveGetVehicleDataResponse = @"com.sdl.response.GetVehicleData";
-SDLNotificationName const SDLDidReceiveGetWaypointsResponse = @"com.sdl.response.GetWayPoints";
-SDLNotificationName const SDLDidReceiveListFilesResponse = @"com.sdl.response.ListFiles";
-SDLNotificationName const SDLDidReceivePerformAppServiceInteractionResponse = @"com.sdl.response.PerformAppServiceInteraction";
-SDLNotificationName const SDLDidReceivePerformAudioPassThruResponse = @"com.sdl.response.PerformAudioPassThru";
-SDLNotificationName const SDLDidReceivePerformInteractionResponse = @"com.sdl.response.PerformInteraction";
-SDLNotificationName const SDLDidReceivePublishAppServiceResponse = @"com.sdl.response.PublishAppService";
-SDLNotificationName const SDLDidReceivePutFileResponse = @"com.sdl.response.PutFile";
-SDLNotificationName const SDLDidReceiveReadDIDResponse = @"com.sdl.response.ReadDID";
-SDLNotificationName const SDLDidReceiveRegisterAppInterfaceResponse = @"com.sdl.response.RegisterAppInterface";
-SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleResponse = @"com.sdl.response.ReleaseInteriorVehicleDataModule";
-SDLNotificationName const SDLDidReceiveResetGlobalPropertiesResponse = @"com.sdl.response.ResetGlobalProperties";
-SDLNotificationName const SDLDidReceiveScrollableMessageResponse = @"com.sdl.response.ScrollableMessage";
-SDLNotificationName const SDLDidReceiveSendHapticDataResponse = @"com.sdl.response.SendHapticData";
-SDLNotificationName const SDLDidReceiveSendLocationResponse = @"com.sdl.response.SendLocation";
-SDLNotificationName const SDLDidReceiveSetAppIconResponse = @"com.sdl.response.SetAppIcon";
-SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesResponse = @"com.sdl.response.SetCloudAppProperties";
-SDLNotificationName const SDLDidReceiveSetDisplayLayoutResponse = @"com.sdl.response.SetDisplayLayout";
-SDLNotificationName const SDLDidReceiveSetGlobalPropertiesResponse = @"com.sdl.response.SetGlobalProperties";
-SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataResponse = @"com.sdl.response.SetInteriorVehicleData";
-SDLNotificationName const SDLDidReceiveSetMediaClockTimerResponse = @"com.sdl.response.SetMediaClockTimer";
-SDLNotificationName const SDLDidReceiveShowConstantTBTResponse = @"com.sdl.response.ShowConstantTBT";
-SDLNotificationName const SDLDidReceiveShowResponse = @"com.sdl.response.Show";
-SDLNotificationName const SDLDidReceiveShowAppMenuResponse = @"com.sdl.response.ShowAppMenu";
-SDLNotificationName const SDLDidReceiveSliderResponse = @"com.sdl.response.Slider";
-SDLNotificationName const SDLDidReceiveSpeakResponse = @"com.sdl.response.Speak";
-SDLNotificationName const SDLDidReceiveSubscribeButtonResponse = @"com.sdl.response.SubscribeButton";
-SDLNotificationName const SDLDidReceiveSubscribeVehicleDataResponse = @"com.sdl.response.SubscribeVehicleData";
-SDLNotificationName const SDLDidReceiveSubscribeWaypointsResponse = @"com.sdl.response.SubscribeWayPoints";
-SDLNotificationName const SDLDidReceiveSyncPDataResponse = @"com.sdl.response.SyncPData";
-SDLNotificationName const SDLDidReceiveSystemRequestResponse = @"com.sdl.response.SystemRequest";
-SDLNotificationName const SDLDidReceiveUpdateTurnListResponse = @"com.sdl.response.UpdateTurnList";
-SDLNotificationName const SDLDidReceiveUnpublishAppServiceResponse = @"com.sdl.response.UnpublishAppService";
-SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceResponse = @"com.sdl.response.UnregisterAppInterface";
-SDLNotificationName const SDLDidReceiveUnsubscribeButtonResponse = @"com.sdl.response.UnsubscribeButton";
-SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataResponse = @"com.sdl.response.UnsubscribeVehicleData";
-SDLNotificationName const SDLDidReceiveUnsubscribeWaypointsResponse = @"com.sdl.response.UnsubscribeWayPoints";
-
-#pragma mark - RPC Requests
-SDLNotificationName const SDLDidReceiveAddCommandRequest = @"com.sdl.request.AddCommand";
-SDLNotificationName const SDLDidReceiveAddSubMenuRequest = @"com.sdl.request.AddSubMenu";
-SDLNotificationName const SDLDidReceiveAlertRequest = @"com.sdl.request.Alert";
-SDLNotificationName const SDLDidReceiveAlertManeuverRequest = @"com.sdl.request.AlertManeuver";
-SDLNotificationName const SDLDidReceiveButtonPressRequest = @"com.sdl.request.ButtonPress";
-SDLNotificationName const SDLDidReceiveCancelInteractionRequest = @"com.sdl.request.CancelInteraction";
-SDLNotificationName const SDLDidReceiveChangeRegistrationRequest = @"com.sdl.request.ChangeRegistration";
-SDLNotificationName const SDLDidReceiveCloseApplicationRequest = @"com.sdl.request.CloseApplication";
-SDLNotificationName const SDLDidReceiveCreateWindowRequest = @"com.sdl.request.CreateWindow";
-SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetRequest = @"com.sdl.request.CreateInteractionChoiceSet";
-SDLNotificationName const SDLDidReceiveDeleteCommandRequest = @"com.sdl.request.DeleteCommand";
-SDLNotificationName const SDLDidReceiveDeleteFileRequest = @"com.sdl.request.DeleteFile";
-SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetRequest = @"com.sdl.request.DeleteInteractionChoiceSet";
-SDLNotificationName const SDLDidReceiveDeleteSubMenuRequest = @"com.sdl.request.DeleteSubMenu";
-SDLNotificationName const SDLDidReceiveDeleteWindowRequest = @"com.sdl.request.DeleteWindow";
-SDLNotificationName const SDLDidReceiveDiagnosticMessageRequest = @"com.sdl.request.DiagnosticMessage";
-SDLNotificationName const SDLDidReceiveDialNumberRequest = @"com.sdl.request.DialNumber";
-SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest = @"com.sdl.request.EncodedSyncPData";
-SDLNotificationName const SDLDidReceiveEndAudioPassThruRequest = @"com.sdl.request.EndAudioPassThru";
-SDLNotificationName const SDLDidReceiveGetAppServiceDataRequest = @"com.sdl.request.GetAppServiceData";
-SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesRequest = @"com.sdl.request.GetCloudAppProperties";
-SDLNotificationName const SDLDidReceiveGetDTCsRequest = @"com.sdl.request.GetDTCs";
-SDLNotificationName const SDLDidReceiveGetFileRequest = @"com.sdl.request.GetFile";
-SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataRequest = @"com.sdl.request.GetInteriorVehicleData";
-SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentRequest = @"com.sdl.request.GetInteriorVehicleDataConsent";
-SDLNotificationName const SDLDidReceiveGetSystemCapabilityRequest = @"com.sdl.request.GetSystemCapability";
-SDLNotificationName const SDLDidReceiveGetVehicleDataRequest = @"com.sdl.request.GetVehicleData";
-SDLNotificationName const SDLDidReceiveGetWayPointsRequest = @"com.sdl.request.GetWayPoints";
-SDLNotificationName const SDLDidReceiveListFilesRequest = @"com.sdl.request.ListFiles";
-SDLNotificationName const SDLDidReceivePerformAppServiceInteractionRequest = @"com.sdl.request.PerformAppServiceInteraction";
-SDLNotificationName const SDLDidReceivePerformAudioPassThruRequest = @"com.sdl.request.PerformAudioPassThru";
-SDLNotificationName const SDLDidReceivePerformInteractionRequest = @"com.sdl.request.PerformInteraction";
-SDLNotificationName const SDLDidReceivePublishAppServiceRequest = @"com.sdl.request.PublishAppService";
-SDLNotificationName const SDLDidReceivePutFileRequest = @"com.sdl.request.PutFile";
-SDLNotificationName const SDLDidReceiveReadDIDRequest = @"com.sdl.request.ReadDID";
-SDLNotificationName const SDLDidReceiveRegisterAppInterfaceRequest = @"com.sdl.request.RegisterAppInterface";
-SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleRequest = @"com.sdl.request.ReleaseInteriorVehicleDataModule";
-SDLNotificationName const SDLDidReceiveResetGlobalPropertiesRequest = @"com.sdl.request.ResetGlobalProperties";
-SDLNotificationName const SDLDidReceiveScrollableMessageRequest = @"com.sdl.request.ScrollableMessage";
-SDLNotificationName const SDLDidReceiveSendHapticDataRequest = @"com.sdl.request.SendHapticData";
-SDLNotificationName const SDLDidReceiveSendLocationRequest = @"com.sdl.request.SendLocation";
-SDLNotificationName const SDLDidReceiveSetAppIconRequest = @"com.sdl.request.SetAppIcon";
-SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesRequest = @"com.sdl.request.SetCloudAppProperties";
-SDLNotificationName const SDLDidReceiveSetDisplayLayoutRequest = @"com.sdl.request.SetDisplayLayout";
-SDLNotificationName const SDLDidReceiveSetGlobalPropertiesRequest = @"com.sdl.request.SetGlobalProperties";
-SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataRequest = @"com.sdl.request.SetInteriorVehicleData";
-SDLNotificationName const SDLDidReceiveSetMediaClockTimerRequest = @"com.sdl.request.SetMediaClockTimer";
-SDLNotificationName const SDLDidReceiveShowRequest = @"com.sdl.request.Show";
-SDLNotificationName const SDLDidReceiveShowAppMenuRequest = @"com.sdl.request.ShowAppMenu";
-SDLNotificationName const SDLDidReceiveShowConstantTBTRequest = @"com.sdl.request.ShowConstantTBT";
-SDLNotificationName const SDLDidReceiveSliderRequest = @"com.sdl.request.Slider";
-SDLNotificationName const SDLDidReceiveSpeakRequest = @"com.sdl.request.Speak";
-SDLNotificationName const SDLDidReceiveSubscribeButtonRequest = @"com.sdl.request.SubscribeButton";
-SDLNotificationName const SDLDidReceiveSubscribeVehicleDataRequest = @"com.sdl.request.SubscribeVehicleData";
-SDLNotificationName const SDLDidReceiveSubscribeWayPointsRequest = @"com.sdl.request.SubscribeWayPoints";
-SDLNotificationName const SDLDidReceiveSyncPDataRequest = @"com.sdl.request.SyncPData";
-SDLNotificationName const SDLDidReceiveSystemRequestRequest = @"com.sdl.request.SystemRequest";
-SDLNotificationName const SDLDidReceiveUnpublishAppServiceRequest = @"com.sdl.request.UnpublishAppService";
-SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceRequest = @"com.sdl.request.UnregisterAppInterface";
-SDLNotificationName const SDLDidReceiveUnsubscribeButtonRequest = @"com.sdl.request.UnsubscribeButton";
-SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataRequest = @"com.sdl.request.UnsubscribeVehicleData";
-SDLNotificationName const SDLDidReceiveUnsubscribeWayPointsRequest = @"com.sdl.request.UnsubscribeWayPoints";
-SDLNotificationName const SDLDidReceiveUpdateTurnListRequest = @"com.sdl.request.UpdateTurnList";
-
-#pragma mark - RPC Notifications
-SDLNotificationName const SDLDidChangeDriverDistractionStateNotification = @"com.sdl.notification.OnDriverDistraction";
-SDLNotificationName const SDLDidChangeHMIStatusNotification = @"com.sdl.notification.OnHMIStatus";
-SDLNotificationName const SDLDidReceiveAppServiceDataNotification = @"com.sdl.notification.OnAppServiceData";
-SDLNotificationName const SDLDidReceiveAppUnregisteredNotification = @"com.sdl.notification.OnAppInterfaceUnregistered";
-SDLNotificationName const SDLDidReceiveAudioPassThruNotification = @"com.sdl.notification.OnAudioPassThru";
-SDLNotificationName const SDLDidReceiveButtonEventNotification = @"com.sdl.notification.OnButtonEvent";
-SDLNotificationName const SDLDidReceiveButtonPressNotification = @"com.sdl.notification.OnButtonPress";
-SDLNotificationName const SDLDidReceiveCommandNotification = @"com.sdl.notification.OnCommand";
-SDLNotificationName const SDLDidReceiveEncodedDataNotification = @"com.sdl.notification.OnEncodedSyncPData";
-SDLNotificationName const SDLDidReceiveInteriorVehicleDataNotification = @"com.sdl.notification.OnInteriorVehicleData";
-SDLNotificationName const SDLDidReceiveKeyboardInputNotification = @"com.sdl.notification.OnKeyboardInput";
-SDLNotificationName const SDLDidChangeLanguageNotification = @"com.sdl.notification.OnLanguageChange";
-SDLNotificationName const SDLDidReceiveNewHashNotification = @"com.sdl.notification.OnHashChange";
-SDLNotificationName const SDLDidChangePermissionsNotification = @"com.sdl.notification.OnPermissionsChange";
-SDLNotificationName const SDLDidReceiveRemoteControlStatusNotification = @"com.sdl.notification.OnRCStatus";
-SDLNotificationName const SDLDidReceiveSyncPDataNotification = @"com.sdl.notification.OnSyncPData";
-SDLNotificationName const SDLDidReceiveSystemCapabilityUpdatedNotification = @"com.sdl.notification.OnSystemCapabilityUpdated";
-SDLNotificationName const SDLDidReceiveSystemRequestNotification = @"com.sdl.notification.OnSystemRequest";
-SDLNotificationName const SDLDidChangeTurnByTurnStateNotification = @"com.sdl.notification.OnTBTClientState";
-SDLNotificationName const SDLDidReceiveTouchEventNotification = @"com.sdl.notification.OnTouchEvent";
-SDLNotificationName const SDLDidReceiveVehicleDataNotification = @"com.sdl.notification.OnVehicleData";
-SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notification.OnWayPointChange";
-
-
-@implementation SDLNotificationConstants
-
-+ (NSArray<SDLNotificationName> *)allResponseNames {
- return @[SDLDidReceiveAddCommandResponse,
- SDLDidReceiveAddSubMenuResponse,
- SDLDidReceiveAlertResponse,
- SDLDidReceiveAlertManeuverResponse,
- SDLDidReceiveButtonPressResponse,
- SDLDidReceiveCancelInteractionResponse,
- SDLDidReceiveChangeRegistrationResponse,
- SDLDidReceiveCloseApplicationResponse,
- SDLDidReceiveCreateInteractionChoiceSetResponse,
- SDLDidReceiveCreateWindowResponse,
- SDLDidReceiveDeleteCommandResponse,
- SDLDidReceiveDeleteFileResponse,
- SDLDidReceiveDeleteInteractionChoiceSetResponse,
- SDLDidReceiveDeleteSubmenuResponse,
- SDLDidReceiveDeleteWindowResponse,
- SDLDidReceiveDiagnosticMessageResponse,
- SDLDidReceiveDialNumberResponse,
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLDidReceiveEncodedSyncPDataResponse,
-#pragma clang diagnostic pop
- SDLDidReceiveEndAudioPassThruResponse,
- SDLDidReceiveGenericResponse,
- SDLDidReceiveGetCloudAppPropertiesResponse,
- SDLDidReceiveGetAppServiceDataResponse,
- SDLDidReceiveGetDTCsResponse,
- SDLDidReceiveGetFileResponse,
- SDLDidReceiveGetInteriorVehicleDataResponse,
- SDLDidReceiveGetInteriorVehicleDataConsentResponse,
- SDLDidReceiveGetSystemCapabilitiesResponse,
- SDLDidReceiveGetVehicleDataResponse,
- SDLDidReceiveGetWaypointsResponse,
- SDLDidReceiveListFilesResponse,
- SDLDidReceivePerformAppServiceInteractionResponse,
- SDLDidReceivePerformAudioPassThruResponse,
- SDLDidReceivePerformInteractionResponse,
- SDLDidReceivePublishAppServiceResponse,
- SDLDidReceivePutFileResponse,
- SDLDidReceiveReadDIDResponse,
- SDLDidReceiveRegisterAppInterfaceResponse,
- SDLDidReceiveReleaseInteriorVehicleDataModuleResponse,
- SDLDidReceiveResetGlobalPropertiesResponse,
- SDLDidReceiveScrollableMessageResponse,
- SDLDidReceiveSendHapticDataResponse,
- SDLDidReceiveSendLocationResponse,
- SDLDidReceiveSetAppIconResponse,
- SDLDidReceiveSetCloudAppPropertiesResponse,
- SDLDidReceiveSetDisplayLayoutResponse,
- SDLDidReceiveSetGlobalPropertiesResponse,
- SDLDidReceiveSetInteriorVehicleDataResponse,
- SDLDidReceiveSetMediaClockTimerResponse,
- SDLDidReceiveShowConstantTBTResponse,
- SDLDidReceiveShowResponse,
- SDLDidReceiveShowAppMenuResponse,
- SDLDidReceiveSliderResponse,
- SDLDidReceiveSpeakResponse,
- SDLDidReceiveSubscribeButtonResponse,
- SDLDidReceiveSubscribeVehicleDataResponse,
- SDLDidReceiveSubscribeWaypointsResponse,
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLDidReceiveSyncPDataResponse,
-#pragma clang diagnostic pop
- SDLDidReceiveSystemRequestResponse,
- SDLDidReceiveUpdateTurnListResponse,
- SDLDidReceiveUnpublishAppServiceResponse,
- SDLDidReceiveUnregisterAppInterfaceResponse,
- SDLDidReceiveUnsubscribeButtonResponse,
- SDLDidReceiveUnsubscribeVehicleDataResponse,
- SDLDidReceiveUnsubscribeWaypointsResponse];
-}
-
-+ (NSArray<SDLNotificationName> *)allButtonEventNotifications {
- return @[SDLDidReceiveButtonEventNotification,
- SDLDidReceiveButtonPressNotification];
-}
-
-@end
diff --git a/SmartDeviceLink/SDLOnLockScreenStatus.h b/SmartDeviceLink/SDLOnLockScreenStatus.h
deleted file mode 100644
index ce1b2cd62..000000000
--- a/SmartDeviceLink/SDLOnLockScreenStatus.h
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// SDLOnLockScreenStatus.h
-// SmartDeviceLink
-//
-
-#import "SDLRPCNotification.h"
-
-#import "SDLHMILevel.h"
-#import "SDLLockScreenStatus.h"
-
-
-/**
- To help prevent driver distraction, any SmartDeviceLink application is required to implement a lockscreen that must be enforced while the application is active on the system while the vehicle is in motion.
-
- This lockscreen must perform the following:
-
- Limit all application control usability from the mobile device with a full-screen static image overlay or separate view.
-
- For simplicity, the `OnLockScreenStatus` RPC will be provided via the `onOnLockScreenNotification` call back. The call back will include the LockScreenStatus enum which indicates if the lockscreen is required, optional or not required.
-
- The call back also includes details regarding the current HMI_Status level, driver distraction status and user selection status of the application.
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-__deprecated
-@interface SDLOnLockScreenStatus : SDLRPCNotification
-
-/**
- Get the current driver distraction status(i.e. whether driver distraction rules are in effect, or not)
- */
-@property (strong, nonatomic) NSNumber<SDLBool> *driverDistractionStatus;
-
-/**
- Get user selection status for the application (has the app been selected via hmi or voice command)
- */
-
-@property (strong, nonatomic) NSNumber<SDLBool> *userSelected;
-
-/**
- Indicates if the lockscreen should be required, optional or off
- */
-@property (strong, nonatomic) SDLLockScreenStatus lockScreenStatus;
-
-/**
- Get HMILevel in effect for the application
- */
-@property (strong, nonatomic) SDLHMILevel hmiLevel;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnLockScreenStatus.m b/SmartDeviceLink/SDLOnLockScreenStatus.m
deleted file mode 100644
index 6264ea5fd..000000000
--- a/SmartDeviceLink/SDLOnLockScreenStatus.m
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// SDLOnLockScreenStatus.m
-// SmartDeviceLink
-//
-
-#import "SDLOnLockScreenStatus.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLHMILevel.h"
-#import "SDLLockScreenStatus.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-implementations"
-@implementation SDLOnLockScreenStatus
-#pragma clang diagnostic pop
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameOnLockScreenStatus]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (void)setLockScreenStatus:(SDLLockScreenStatus)lockScreenStatus {
- [self.parameters sdl_setObject:lockScreenStatus forName:SDLRPCParameterNameOnLockScreenStatus];
-}
-
-- (SDLLockScreenStatus)lockScreenStatus {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameOnLockScreenStatus error:&error];
-}
-
-- (void)setHmiLevel:(SDLHMILevel)hmiLevel {
- [self.parameters sdl_setObject:hmiLevel forName:SDLRPCParameterNameHMILevel];
-}
-
-- (SDLHMILevel)hmiLevel {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameHMILevel error:&error];
-}
-
-- (void)setUserSelected:(NSNumber<SDLBool> *)userSelected {
- [self.parameters sdl_setObject:userSelected forName:SDLRPCParameterNameUserSelected];
-}
-
-- (NSNumber<SDLBool> *)userSelected {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameUserSelected ofClass:NSNumber.class error:&error];
-}
-
-- (void)setDriverDistractionStatus:(NSNumber<SDLBool> *)driverDistractionStatus {
- [self.parameters sdl_setObject:driverDistractionStatus forName:SDLRPCParameterNameDriverDistractionStatus];
-}
-
-- (NSNumber<SDLBool> *)driverDistractionStatus {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverDistractionStatus ofClass:NSNumber.class error:&error];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnVehicleData.h b/SmartDeviceLink/SDLOnVehicleData.h
deleted file mode 100644
index 815827cb3..000000000
--- a/SmartDeviceLink/SDLOnVehicleData.h
+++ /dev/null
@@ -1,211 +0,0 @@
-// SDLOnVehicleData.h
-//
-
-#import "SDLRPCNotification.h"
-
-#import "SDLComponentVolumeStatus.h"
-#import "SDLElectronicParkBrakeStatus.h"
-#import "SDLPRNDL.h"
-#import "SDLTurnSignal.h"
-#import "SDLVehicleDataEventStatus.h"
-#import "SDLWiperStatus.h"
-
-@class SDLAirbagStatus;
-@class SDLBeltStatus;
-@class SDLBodyInformation;
-@class SDLClusterModeStatus;
-@class SDLDeviceStatus;
-@class SDLECallInfo;
-@class SDLEmergencyEvent;
-@class SDLFuelRange;
-@class SDLGPSData;
-@class SDLHeadLampStatus;
-@class SDLMyKey;
-@class SDLTireStatus;
-
-
-/**
- Callback for the periodic and non periodic vehicle data read function.
-
- Since SmartDeviceLink 2.0
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLOnVehicleData : SDLRPCNotification
-
-/**
- The car current GPS coordinates
- */
-@property (nullable, strong, nonatomic) SDLGPSData *gps;
-
-/**
- The vehicle speed in kilometers per hour
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *speed;
-
-/**
- The number of revolutions per minute of the engine.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *rpm;
-
-/**
- The fuel level in the tank (percentage)
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *fuelLevel;
-
-/**
- The fuel level state
- */
-@property (nullable, strong, nonatomic) SDLComponentVolumeStatus fuelLevel_State;
-
-/**
- The estimate range in KM the vehicle can travel based on fuel level and consumption
-
- Optional, Array of length 0 - 100, of SDLFuelRange
- */
-@property (nullable, strong, nonatomic) NSArray<SDLFuelRange *> *fuelRange;
-
-/**
- The instantaneous fuel consumption in microlitres
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *instantFuelConsumption;
-
-/**
- The external temperature in degrees celsius.
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature;
-
-/**
- The Vehicle Identification Number
- */
-@property (nullable, strong, nonatomic) NSString *vin;
-
-/**
- The current gear shift state of the user's vehicle
- */
-@property (nullable, strong, nonatomic) SDLPRNDL prndl;
-
-/**
- The current pressure warnings for the user's vehicle
- */
-@property (nullable, strong, nonatomic) SDLTireStatus *tirePressure;
-
-/**
- Odometer reading in km
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *odometer;
-
-/**
- The status of the seat belts
- */
-@property (nullable, strong, nonatomic) SDLBeltStatus *beltStatus;
-
-/**
- The body information including power modes
- */
-@property (nullable, strong, nonatomic) SDLBodyInformation *bodyInformation;
-
-/**
- The IVI system status including signal and battery strength
- */
-@property (nullable, strong, nonatomic) SDLDeviceStatus *deviceStatus;
-
-/**
- The status of the brake pedal
- */
-@property (nullable, strong, nonatomic) SDLVehicleDataEventStatus driverBraking;
-
-/**
- The status of the wipers
- */
-@property (nullable, strong, nonatomic) SDLWiperStatus wiperStatus;
-
-/**
- Status of the head lamps
- */
-@property (nullable, strong, nonatomic) SDLHeadLampStatus *headLampStatus;
-
-/**
- The estimated percentage (0% - 100%) of remaining oil life of the engine
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *engineOilLife;
-
-/**
- Torque value for engine (in Nm) on non-diesel variants
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *engineTorque;
-
-/**
- Accelerator pedal position (percentage depressed)
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *accPedalPosition;
-
-/**
- Current angle of the steering wheel (in deg)
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *steeringWheelAngle;
-
-/**
- Emergency Call notification and confirmation data
- */
-@property (nullable, strong, nonatomic) SDLECallInfo *eCallInfo;
-
-/**
- The status of the air bags
- */
-@property (nullable, strong, nonatomic) SDLAirbagStatus *airbagStatus;
-
-/**
- Information related to an emergency event (and if it occurred)
- */
-@property (nullable, strong, nonatomic) SDLEmergencyEvent *emergencyEvent;
-
-/**
- The status modes of the cluster
- */
-@property (nullable, strong, nonatomic) SDLClusterModeStatus *clusterModeStatus;
-
-/**
- Information related to the MyKey feature
- */
-@property (nullable, strong, nonatomic) SDLMyKey *myKey;
-
-/**
- The status of the electronic parking brake
- */
-@property (nullable, strong, nonatomic) SDLElectronicParkBrakeStatus electronicParkBrakeStatus;
-
-/**
- The status of the turn signal
- */
-@property (nullable, strong, nonatomic) SDLTurnSignal turnSignal;
-
-/**
- The cloud app vehicle ID
- */
-@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
-
-/**
- Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @param vehicleDataState An object containing the OEM custom vehicle data item.
-
- Added in SmartDeviceLink 6.0
- */
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
-
-/**
- Gets the OEM custom vehicle data item for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @return An OEM custom vehicle data object for the given vehicle data name.
-
- Added in SmartDeviceLink 6.0
- */
-- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnVehicleData.m b/SmartDeviceLink/SDLOnVehicleData.m
deleted file mode 100644
index 7c59dee34..000000000
--- a/SmartDeviceLink/SDLOnVehicleData.m
+++ /dev/null
@@ -1,285 +0,0 @@
-// SDLOnVehicleData.m
-//
-
-#import "SDLOnVehicleData.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLAirbagStatus.h"
-#import "SDLBeltStatus.h"
-#import "SDLBodyInformation.h"
-#import "SDLClusterModeStatus.h"
-#import "SDLDeviceStatus.h"
-#import "SDLECallInfo.h"
-#import "SDLEmergencyEvent.h"
-#import "SDLFuelRange.h"
-#import "SDLGPSData.h"
-#import "SDLHeadLampStatus.h"
-#import "SDLMyKey.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLTireStatus.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLOnVehicleData
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameOnVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (void)setGps:(nullable SDLGPSData *)gps {
- [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
-}
-
-- (nullable SDLGPSData *)gps {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil];
-}
-
-- (void)setSpeed:(nullable NSNumber<SDLFloat> *)speed {
- [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
-}
-
-- (nullable NSNumber<SDLFloat> *)speed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRpm:(nullable NSNumber<SDLInt> *)rpm {
- [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
-}
-
-- (nullable NSNumber<SDLInt> *)rpm {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel:(nullable NSNumber<SDLFloat> *)fuelLevel {
- [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
-}
-
-- (nullable NSNumber<SDLFloat> *)fuelLevel {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel_State:(nullable SDLComponentVolumeStatus)fuelLevel_State {
- [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
-}
-
-- (nullable SDLComponentVolumeStatus)fuelLevel_State {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil];
-}
-
-- (void)setFuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange {
- [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
-}
-
-- (nullable NSArray<SDLFuelRange *> *)fuelRange {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil];
-}
-
-- (void)setInstantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption {
- [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
-}
-
-- (nullable NSNumber<SDLFloat> *)instantFuelConsumption {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
-}
-
-- (void)setExternalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature {
- [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
-}
-
-- (nullable NSNumber<SDLFloat> *)externalTemperature {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVin:(nullable NSString *)vin {
- [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN];
-}
-
-- (nullable NSString *)vin {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil];
-}
-
-- (void)setPrndl:(nullable SDLPRNDL)prndl {
- [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
-}
-
-- (nullable SDLPRNDL)prndl {
- return [self.parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil];
-}
-
-- (void)setTirePressure:(nullable SDLTireStatus *)tirePressure {
- [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
-}
-
-- (nullable SDLTireStatus *)tirePressure {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil];
-}
-
-- (void)setOdometer:(nullable NSNumber<SDLInt> *)odometer {
- [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
-}
-
-- (nullable NSNumber<SDLInt> *)odometer {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBeltStatus:(nullable SDLBeltStatus *)beltStatus {
- [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
-}
-
-- (nullable SDLBeltStatus *)beltStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil];
-}
-
-- (void)setBodyInformation:(nullable SDLBodyInformation *)bodyInformation {
- [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
-}
-
-- (nullable SDLBodyInformation *)bodyInformation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil];
-}
-
-- (void)setDeviceStatus:(nullable SDLDeviceStatus *)deviceStatus {
- [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
-}
-
-- (nullable SDLDeviceStatus *)deviceStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil];
-}
-
-- (void)setDriverBraking:(nullable SDLVehicleDataEventStatus)driverBraking {
- [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
-}
-
-- (nullable SDLVehicleDataEventStatus)driverBraking {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil];
-}
-
-- (void)setWiperStatus:(nullable SDLWiperStatus)wiperStatus {
- [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
-}
-
-- (nullable SDLWiperStatus)wiperStatus {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil];
-}
-
-- (void)setHeadLampStatus:(nullable SDLHeadLampStatus *)headLampStatus {
- [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
-}
-
-- (nullable SDLHeadLampStatus *)headLampStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil];
-}
-
-- (void)setEngineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife {
- [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
-}
-
-- (nullable NSNumber<SDLFloat> *)engineOilLife {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineTorque:(nullable NSNumber<SDLFloat> *)engineTorque {
- [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
-}
-
-- (nullable NSNumber<SDLFloat> *)engineTorque {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAccPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition {
- [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
-}
-
-- (nullable NSNumber<SDLFloat> *)accPedalPosition {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSteeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle {
- [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
-}
-
-- (nullable NSNumber<SDLFloat> *)steeringWheelAngle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
-}
-
-- (void)setECallInfo:(nullable SDLECallInfo *)eCallInfo {
- [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
-}
-
-- (nullable SDLECallInfo *)eCallInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil];
-}
-
-- (void)setAirbagStatus:(nullable SDLAirbagStatus *)airbagStatus {
- [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
-}
-
-- (nullable SDLAirbagStatus *)airbagStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil];
-}
-
-- (void)setEmergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent {
- [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
-}
-
-- (nullable SDLEmergencyEvent *)emergencyEvent {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil];
-}
-
-- (void)setClusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus {
- [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
-}
-
-- (nullable SDLClusterModeStatus *)clusterModeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil];
-}
-
-- (void)setMyKey:(nullable SDLMyKey *)myKey {
- [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
-}
-
-- (nullable SDLMyKey *)myKey {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil];
-}
-
-- (void)setElectronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
- [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
-}
-
-- (nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil];
-}
-
-- (void)setTurnSignal:(nullable SDLTurnSignal)turnSignal {
- [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
-}
-
-- (nullable SDLTurnSignal)turnSignal {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil];
-}
-
-- (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID {
- [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
-}
-
-- (nullable NSString *)cloudAppVehicleID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil];
-}
-
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState {
- [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
-}
-
-- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
- return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPRNDL.h b/SmartDeviceLink/SDLPRNDL.h
deleted file mode 100644
index db9c6e385..000000000
--- a/SmartDeviceLink/SDLPRNDL.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// SDLPRNDL.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * The selected gear the car is in. Used in retrieving vehicle data.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLPRNDL SDL_SWIFT_ENUM;
-
-/**
- * Park
- */
-extern SDLPRNDL const SDLPRNDLPark;
-
-/**
- * Reverse gear
- */
-extern SDLPRNDL const SDLPRNDLReverse;
-
-/**
- * No gear
- */
-extern SDLPRNDL const SDLPRNDLNeutral;
-
-/**
- * @abstract: Drive gear
- */
-extern SDLPRNDL const SDLPRNDLDrive;
-
-/**
- * Drive Sport mode
- */
-extern SDLPRNDL const SDLPRNDLSport;
-
-/**
- * 1st gear hold
- */
-extern SDLPRNDL const SDLPRNDLLowGear;
-
-/**
- * First gear
- */
-extern SDLPRNDL const SDLPRNDLFirst;
-
-/**
- * Second gear
- */
-extern SDLPRNDL const SDLPRNDLSecond;
-
-/**
- * Third gear
- */
-extern SDLPRNDL const SDLPRNDLThird;
-
-/**
- * Fourth gear
- */
-extern SDLPRNDL const SDLPRNDLFourth;
-
-/**
- * Fifth gear
- */
-extern SDLPRNDL const SDLPRNDLFifth;
-
-/**
- * Sixth gear
- */
-extern SDLPRNDL const SDLPRNDLSixth;
-
-/**
- * Seventh gear
- */
-extern SDLPRNDL const SDLPRNDLSeventh;
-
-/**
- * Eighth gear
- */
-extern SDLPRNDL const SDLPRNDLEighth;
-
-/**
- * Unknown
- */
-extern SDLPRNDL const SDLPRNDLUnknown;
-
-/**
- * Fault
- */
-extern SDLPRNDL const SDLPRNDLFault;
diff --git a/SmartDeviceLink/SDLPRNDL.m b/SmartDeviceLink/SDLPRNDL.m
deleted file mode 100644
index 77eed8336..000000000
--- a/SmartDeviceLink/SDLPRNDL.m
+++ /dev/null
@@ -1,22 +0,0 @@
-// SDLPRNDL.m
-//
-
-
-#import "SDLPRNDL.h"
-
-SDLPRNDL const SDLPRNDLPark = @"PARK";
-SDLPRNDL const SDLPRNDLReverse = @"REVERSE";
-SDLPRNDL const SDLPRNDLNeutral = @"NEUTRAL";
-SDLPRNDL const SDLPRNDLDrive = @"DRIVE";
-SDLPRNDL const SDLPRNDLSport = @"SPORT";
-SDLPRNDL const SDLPRNDLLowGear = @"LOWGEAR";
-SDLPRNDL const SDLPRNDLFirst = @"FIRST";
-SDLPRNDL const SDLPRNDLSecond = @"SECOND";
-SDLPRNDL const SDLPRNDLThird = @"THIRD";
-SDLPRNDL const SDLPRNDLFourth = @"FOURTH";
-SDLPRNDL const SDLPRNDLFifth = @"FIFTH";
-SDLPRNDL const SDLPRNDLSixth = @"SIXTH";
-SDLPRNDL const SDLPRNDLSeventh = @"SEVENTH";
-SDLPRNDL const SDLPRNDLEighth = @"EIGHTH";
-SDLPRNDL const SDLPRNDLUnknown = @"UNKNOWN";
-SDLPRNDL const SDLPRNDLFault = @"FAULT";
diff --git a/SmartDeviceLink/SDLPerformInteraction.h b/SmartDeviceLink/SDLPerformInteraction.h
deleted file mode 100644
index bc035ce04..000000000
--- a/SmartDeviceLink/SDLPerformInteraction.h
+++ /dev/null
@@ -1,251 +0,0 @@
-// SDLPerformInteraction.h
-//
-
-#import "SDLRPCRequest.h"
-
-#import "SDLInteractionMode.h"
-#import "SDLLayoutMode.h"
-
-@class SDLTTSChunk;
-@class SDLVRHelpItem;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Performs an application-initiated interaction in which the user can select a choice from the passed choice set.
-
- There are several ways to present a choice set: as visual pop-up menu (with an optional keyboard that allows for searches), as voice-recognition (VR) only menu, or as both a VR and visual menu. It is also possible to present only the keyboard for doing searches.
-
- A choice set can have up to 100 items, however if you are presenting a visual only menu please be aware that the OEM may choose to limit the number of presented choices when the driver is distracted (i.e. the car is moving).
-
- A VR-only menu could be used to ask a user to say the name of a song to play. The user's response would only be valid if it appears in the specified choice set.
- A visual popup-menu could be used to present a list of albums to the user. The user would select the album they want to play from the list of presented choices.
- A keyboard can be used for searches. For example, the user could be asked to enter the name of a restaurant. The name can be used to search for local restaurants with the same name. When the search is completed another menu can be presented with a list of potential addresses for the destination.
-
- If connecting to SDL Core v.6.0+, the perform interaction can be canceled programmatically using the `cancelID`. On older versions of SDL Core, the perform interaction will persist until the user has interacted with the perform interaction or the specified timeout has elapsed.
-
- @see SDLCreateInteractionChoiceSet, SDLDeleteInteractionChoiceSet
-
- @since SDL 1.0
- */
-@interface SDLPerformInteraction : SDLRPCRequest
-
-/**
- Convenience init for creating a basic display or voice-recognition menu.
-
- @param initialText Text to be displayed first
- @param interactionMode Indicates the method in which the user is notified and uses the interaction
- @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
- @param cancelID An ID for this specific perform interaction to allow cancellation through the `CancelInteraction` RPC
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialText:(NSString *)initialText interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList cancelID:(UInt32)cancelID;
-
-/**
- Convenience init for setting all parameters of a display or voice-recognition menu.
-
- @param initialText Text to be displayed first
- @param initialPrompt The initial prompt spoken to the user at the start of an interaction
- @param interactionMode The method in which the user is notified and uses the interaction (voice, visual or both)
- @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
- @param helpPrompt The spoken text when a user speaks "help" when the interaction is occurring
- @param timeoutPrompt The text spoken when a VR interaction times out
- @param timeout Timeout in milliseconds
- @param vrHelp Suggested voice recognition help items to display on-screen during a perform interaction
- @param interactionLayout For touchscreen interactions, the mode of how the choices are presented
- @param cancelID An ID for this specific perform interaction to allow cancellation through the `CancelInteraction` RPC.
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialText:(NSString *)initialText initialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt timeout:(UInt16)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)interactionLayout cancelID:(UInt32)cancelID;
-
-/**
- Convenience init for setting the a single visual or voice-recognition menu choice.
-
- @param interactionChoiceSetId Single interaction choice set ID to use with an interaction
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInteractionChoiceSetId:(UInt16)interactionChoiceSetId __deprecated_msg("Use initWithInitialText:interactionMode:interactionChoiceSetIDList:cancelID: instead");
-
-/**
- Convenience init for setting the a visual or voice-recognition menu choices.
-
- @param interactionChoiceSetIdList List of interaction choice set IDs to use with an interaction
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInteractionChoiceSetIdList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIdList __deprecated_msg("Use initWithInitialText:interactionMode:interactionChoiceSetIDList:cancelID: instead");
-
-/**
- Convenience init for creating a visual or voice-recognition menu with one choice.
-
- @param initialPrompt The initial prompt spoken to the user at the start of an interaction
- @param initialText Text to be displayed first
- @param interactionChoiceSetID Single interaction choice set ID to use with an interaction
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetID:(UInt16)interactionChoiceSetID __deprecated_msg("Use initWithInitialText:interactionMode:interactionChoiceSetIDList:cancelID: instead");
-
-/**
- Convenience init for creating a visual or voice-recognition menu with one choice and VR help items.
-
- @param initialPrompt The initial prompt spoken to the user at the start of an interaction
- @param initialText Text to be displayed first
- @param interactionChoiceSetID Single interaction choice set ID to use with an interaction
- @param vrHelp Suggested voice recognition help items to display on-screen during a perform interaction
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetID:(UInt16)interactionChoiceSetID vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp __deprecated_msg("Use initWithInitialText:initialPrompt:interactionMode:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:timeout:vrHelp:interactionLayout:cancelID: instead");
-
-/**
- Convenience init for creating a visual or voice-recognition menu using the default display layout and VR help items. Prompts are created from the passed strings.
-
- @param initialText Text to be displayed first
- @param initialPrompt The initial prompt spoken to the user at the start of an interaction
- @param interactionMode The method in which the user is notified and uses the interaction (voice, visual or both)
- @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
- @param helpPrompt The spoken text when a user speaks "help" when the interaction is occurring
- @param timeoutPrompt The text spoken when a VR interaction times out
- @param timeout Timeout in milliseconds
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSString *)helpPrompt timeoutPrompt:(nullable NSString *)timeoutPrompt interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout __deprecated_msg("Use initWithInitialText:initialPrompt:interactionMode:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:timeout:vrHelp:interactionLayout:cancelID: instead");
-
-/**
- Convenience init for creating a visual or voice-recognition menu using the default display layout. Prompts are created from the passed strings.
-
- @param initialText Text to be displayed first
- @param initialPrompt The initial prompt spoken to the user at the start of an interaction
- @param interactionMode The method in which the user is notified and uses the interaction (voice, visual or both)
- @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
- @param helpPrompt The spoken text when a user speaks "help" when the interaction is occurring
- @param timeoutPrompt The text spoken when a VR interaction times out
- @param timeout Timeout in milliseconds
- @param vrHelp Suggested voice recognition help items to display on-screen during a perform interaction
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSString *)helpPrompt timeoutPrompt:(nullable NSString *)timeoutPrompt interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp __deprecated_msg("Use initWithInitialText:initialPrompt:interactionMode:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:timeout:vrHelp:interactionLayout:cancelID: instead");
-
-/**
- Convenience init for creating a visual or voice-recognition menu using the default display layout.
-
- @param initialText Text to be displayed first
- @param initialChunks The initial prompt spoken to the user at the start of an interaction
- @param interactionMode The method in which the user is notified and uses the interaction (voice, visual or both)
- @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
- @param helpChunks The spoken text when a user speaks "help" when the interaction is occurring
- @param timeoutChunks The text spoken when a VR interaction times out
- @param timeout Timeout in milliseconds
- @param vrHelp Suggested voice recognition help items to display on-screen during a perform interaction
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialChunks:(nullable NSArray<SDLTTSChunk *> *)initialChunks initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpChunks:(nullable NSArray<SDLTTSChunk *> *)helpChunks timeoutChunks:(nullable NSArray<SDLTTSChunk *> *)timeoutChunks interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp __deprecated_msg("Use initWithInitialText:initialPrompt:interactionMode:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:timeout:vrHelp:interactionLayout:cancelID: instead");
-
-/**
- Convenience init for setting all parameters of a visual or voice-recognition menu.
-
- @param initialText Text to be displayed first
- @param initialChunks The initial prompt spoken to the user at the start of an interaction
- @param interactionMode The method in which the user is notified and uses the interaction (voice, visual or both)
- @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
- @param helpChunks The spoken text when a user speaks "help" when the interaction is occurring
- @param timeoutChunks The text spoken when a VR interaction times out
- @param timeout Timeout in milliseconds
- @param vrHelp Suggested voice recognition help items to display on-screen during a perform interaction
- @param layout For touchscreen interactions, the mode of how the choices are presented
- @return An SDLPerformInteraction object
- */
-- (instancetype)initWithInitialChunks:(nullable NSArray<SDLTTSChunk *> *)initialChunks initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpChunks:(nullable NSArray<SDLTTSChunk *> *)helpChunks timeoutChunks:(nullable NSArray<SDLTTSChunk *> *)timeoutChunks interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)layout __deprecated_msg("Use initWithInitialText:initialPrompt:interactionMode:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:timeout:vrHelp:interactionLayout:cancelID: instead");
-
-/**
- Text to be displayed first.
-
- String, Required
-
- @since SDL 1.0
- */
-@property (strong, nonatomic) NSString *initialText;
-
-/**
- This is the TTS prompt spoken to the user at the start of an interaction.
-
- Array of SDLTTSChunk, Optional, Array size: 1-100
-
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *initialPrompt;
-
-/**
- For application-requested interactions, this mode indicates the method in which the user is notified and uses the interaction. Users can choose either only by voice (VR_ONLY), by tactile selection from the menu (MANUAL_ONLY), or by either mode (BOTH).
-
- SDLInteractionMode, Required
-
- @since SDL 1.0
- */
-@property (strong, nonatomic) SDLInteractionMode interactionMode;
-
-/**
- List of interaction choice set IDs to use with an interaction.
-
- Array of Integers, Required, Array size: 0-100, Min value: 0, Max value: 2000000000
-
- @since SDL 1.0
- */
-@property (strong, nonatomic) NSArray<NSNumber *> *interactionChoiceSetIDList;
-
-/**
- Help text. This is the spoken text when a user speaks "help" while the interaction is occurring.
-
- SDLTTSChunk, Optional
-
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *helpPrompt;
-
-/**
- Timeout text. This text is spoken when a VR interaction times out.
-
- Array of SDLTTSChunk, Optional, Array size: 1-100
-
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *timeoutPrompt;
-
-/**
- Timeout in milliseconds. Applies only to the menu portion of the interaction. The VR timeout will be handled by the platform. If omitted a standard value of 10 seconds is used.
-
- Integer, Optional, Min value: 5000, Max value: 100,000
-
- @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *timeout;
-
-/**
- Suggested voice recognition help items to display on-screen during a perform interaction. If omitted on supported displays, the default generated list of suggested choices shall be displayed.
-
- SDLVRHelpItem, Optional
-
- @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLVRHelpItem *> *vrHelp;
-
-/**
- For tactile interaction modes (MANUAL_ONLY, or BOTH), the layout mode of how the choices are presented.
-
- SDLLayoutMode, Optional
-
- @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) SDLLayoutMode interactionLayout;
-
-/**
- An ID for this specific perform interaction to allow cancellation through the `CancelInteraction` RPC.
-
- Integer, Optional
-
- @see SDLCancelInteraction
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPerformInteraction.m b/SmartDeviceLink/SDLPerformInteraction.m
deleted file mode 100644
index 540788531..000000000
--- a/SmartDeviceLink/SDLPerformInteraction.m
+++ /dev/null
@@ -1,197 +0,0 @@
-// SDLPerformInteraction.m
-//
-
-
-#import "SDLPerformInteraction.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLTTSChunk.h"
-#import "SDLVrHelpItem.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLPerformInteraction
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNamePerformInteraction]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithInitialDisplayText:(NSString *)initialText initialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt timeout:(nullable NSNumber *)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)interactionLayout cancelID:(nullable NSNumber *)cancelID {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.initialText = initialText;
- self.initialPrompt = initialPrompt;
- self.interactionMode = interactionMode;
- self.interactionChoiceSetIDList = interactionChoiceSetIDList;
- self.helpPrompt = helpPrompt;
- self.timeoutPrompt = timeoutPrompt;
- self.timeout = timeout;
- self.vrHelp = vrHelp;
- self.interactionLayout = interactionLayout;
- self.cancelID = cancelID;
-
- return self;
-}
-
-- (instancetype)initWithInitialText:(NSString *)initialText interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList cancelID:(UInt32)cancelID {
- return [self initWithInitialDisplayText:initialText initialPrompt:nil interactionMode:interactionMode interactionChoiceSetIDList:interactionChoiceSetIDList helpPrompt:nil timeoutPrompt:nil timeout:nil vrHelp:nil interactionLayout:nil cancelID:@(cancelID)];
-}
-
-- (instancetype)initWithInitialText:(NSString *)initialText initialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt timeout:(UInt16)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)interactionLayout cancelID:(UInt32)cancelID {
- return [self initWithInitialDisplayText:initialText initialPrompt:initialPrompt interactionMode:interactionMode interactionChoiceSetIDList:interactionChoiceSetIDList helpPrompt:helpPrompt timeoutPrompt:timeoutPrompt timeout:@(timeout) vrHelp:vrHelp interactionLayout:interactionLayout cancelID:@(cancelID)];
-}
-
-
-- (instancetype)initWithInteractionChoiceSetId:(UInt16)interactionChoiceSetId {
- return [self initWithInteractionChoiceSetIdList:@[@(interactionChoiceSetId)]];
-}
-
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetID:(UInt16)interactionChoiceSetID {
- self = [self initWithInteractionChoiceSetId:interactionChoiceSetID];
- if (!self) {
- return nil;
- }
-
- self.initialPrompt = [SDLTTSChunk textChunksFromString:initialPrompt];
- self.initialText = initialText;
-
- return self;
-}
-
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetID:(UInt16)interactionChoiceSetID vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- self = [self initWithInitialPrompt:initialPrompt initialText:initialText interactionChoiceSetID:interactionChoiceSetID];
- if (!self) {
- return nil;
- }
-
- self.vrHelp = vrHelp;
-
- return self;
-}
-
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSString *)helpPrompt timeoutPrompt:(nullable NSString *)timeoutPrompt interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout {
- return [self initWithInitialPrompt:initialPrompt initialText:initialText interactionChoiceSetIDList:interactionChoiceSetIDList helpPrompt:helpPrompt timeoutPrompt:timeoutPrompt interactionMode:interactionMode timeout:timeout vrHelp:nil];
-}
-
-- (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSString *)helpPrompt timeoutPrompt:(nullable NSString *)timeoutPrompt interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- NSArray *initialChunks = [SDLTTSChunk textChunksFromString:initialPrompt];
- NSArray *helpChunks = [SDLTTSChunk textChunksFromString:helpPrompt];
- NSArray *timeoutChunks = [SDLTTSChunk textChunksFromString:timeoutPrompt];
- return [self initWithInitialChunks:initialChunks initialText:initialText interactionChoiceSetIDList:interactionChoiceSetIDList helpChunks:helpChunks timeoutChunks:timeoutChunks interactionMode:interactionMode timeout:timeout vrHelp:vrHelp];
-}
-
-- (instancetype)initWithInitialChunks:(nullable NSArray<SDLTTSChunk *> *)initialChunks initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpChunks:(nullable NSArray<SDLTTSChunk *> *)helpChunks timeoutChunks:(nullable NSArray<SDLTTSChunk *> *)timeoutChunks interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- return [self initWithInitialChunks:initialChunks initialText:initialText interactionChoiceSetIDList:interactionChoiceSetIDList helpChunks:helpChunks timeoutChunks:timeoutChunks interactionMode:interactionMode timeout:timeout vrHelp:vrHelp interactionLayout:nil];
-}
-
-- (instancetype)initWithInitialChunks:(nullable NSArray<SDLTTSChunk *> *)initialChunks initialText:(NSString *)initialText interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpChunks:(nullable NSArray<SDLTTSChunk *> *)helpChunks timeoutChunks:(nullable NSArray<SDLTTSChunk *> *)timeoutChunks interactionMode:(SDLInteractionMode)interactionMode timeout:(UInt32)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)layout {
- return [self initWithInitialDisplayText:initialText initialPrompt:initialChunks interactionMode:interactionMode interactionChoiceSetIDList:interactionChoiceSetIDList helpPrompt:helpChunks timeoutPrompt:timeoutChunks timeout:@(timeout) vrHelp:vrHelp interactionLayout:layout cancelID:nil];
-}
-
-- (instancetype)initWithInteractionChoiceSetIdList:(NSArray<NSNumber<SDLInt> *> *)interactionChoiceSetIdList {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.interactionChoiceSetIDList = interactionChoiceSetIdList;
-
- return self;
-}
-
-- (void)setInitialText:(NSString *)initialText {
- [self.parameters sdl_setObject:initialText forName:SDLRPCParameterNameInitialText];
-}
-
-- (NSString *)initialText {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInitialText ofClass:NSString.class error:&error];
-}
-
-- (void)setInitialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt {
- [self.parameters sdl_setObject:initialPrompt forName:SDLRPCParameterNameInitialPrompt];
-}
-
-- (nullable NSArray<SDLTTSChunk *> *)initialPrompt {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameInitialPrompt ofClass:SDLTTSChunk.class error:nil];
-}
-
-- (void)setInteractionMode:(SDLInteractionMode)interactionMode {
- [self.parameters sdl_setObject:interactionMode forName:SDLRPCParameterNameInteractionMode];
-}
-
-- (SDLInteractionMode)interactionMode {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameInteractionMode error:&error];
-}
-
-- (void)setInteractionChoiceSetIDList:(NSArray<NSNumber *> *)interactionChoiceSetIDList {
- [self.parameters sdl_setObject:interactionChoiceSetIDList forName:SDLRPCParameterNameInteractionChoiceSetIdList];
-}
-
-- (NSArray<NSNumber *> *)interactionChoiceSetIDList {
- NSError *error = nil;
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameInteractionChoiceSetIdList ofClass:NSNumber.class error:&error];
-}
-
-- (void)setHelpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt {
- [self.parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt];
-}
-
-- (nullable NSArray<SDLTTSChunk *> *)helpPrompt {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil];
-}
-
-- (void)setTimeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
- [self.parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt];
-}
-
-- (nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil];
-}
-
-- (void)setTimeout:(nullable NSNumber<SDLInt> *)timeout {
- [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout];
-}
-
-- (nullable NSNumber<SDLInt> *)timeout {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- [self.parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp];
-}
-
-- (nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil];
-}
-
-- (void)setInteractionLayout:(nullable SDLLayoutMode)interactionLayout {
- [self.parameters sdl_setObject:interactionLayout forName:SDLRPCParameterNameInteractionLayout];
-}
-
-- (nullable SDLLayoutMode)interactionLayout {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameInteractionLayout error:nil];
-}
-
-- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
- [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
-}
-
-- (nullable NSNumber<SDLInt> *)cancelID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionConstants.h b/SmartDeviceLink/SDLPermissionConstants.h
deleted file mode 100644
index 8c7c1f0da..000000000
--- a/SmartDeviceLink/SDLPermissionConstants.h
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// SDLPermissionsConstants.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 11/18/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "NSNumber+NumberType.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLPermissionElement.h"
-#import "SDLRPCPermissionStatus.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// NSString typedef
-///
-/// SDLPermissionRPCName: The name of the permission
-typedef NSString *SDLPermissionRPCName;
-
-/// NSUUID typedef
-///
-/// SDLPermissionObserverIdentifier: A unique identifier
-typedef NSUUID *SDLPermissionObserverIdentifier;
-
-/**
- * A permission group type which will be used to tell the system what type of changes you want to be notified about for the group.
- */
-typedef NS_ENUM(NSUInteger, SDLPermissionGroupType) {
- /**
- * Be notified when all of the RPC in the group are allowed, or, when they all stop being allowed in some sense, that is, when they were all allowed, and now they are not.
- */
- SDLPermissionGroupTypeAllAllowed,
- /**
- * Be notified when any change in availability occurs among the group.
- */
- SDLPermissionGroupTypeAny
-};
-
-/**
- * The status of the group of RPCs permissions.
- */
-typedef NS_ENUM(NSUInteger, SDLPermissionGroupStatus) {
- /**
- * Every RPC in the group is currently allowed.
- */
- SDLPermissionGroupStatusAllowed,
- /**
- * Every RPC in the group is currently disallowed.
- */
- SDLPermissionGroupStatusDisallowed,
- /**
- * Some RPCs in the group are allowed and some disallowed.
- */
- SDLPermissionGroupStatusMixed,
- /**
- * The current status of the group is unknown.
- */
- SDLPermissionGroupStatusUnknown
-};
-
-/**
- * This is a block that is passed in to some methods that will be stored and called when specified permissions change.
- *
- * @param updatedPermissionStatuses A dictionary of the new current status of all subscription items; containing <key(String): RPC Name, object(BOOL): YES if the RPC is allowed, NO if it is not allowed>
- * @param status The unified group status of the RPCs in the updatedPermissionStatuses dictionary. Allowed, if all RPCs are now allowed, Disallowed if all RPCs are now disallowed, or Mixed if some are allowed, and some are disallowed
- */
-typedef void (^SDLPermissionsChangedHandler)(NSDictionary<SDLPermissionRPCName, NSNumber *> *_Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status);
-
-/**
- * A block that will be called when specified permissions change. It will return whether each RPC and its parameters are allowed as well as the permission group status of all the RPCs.
- *
- * @param updatedPermissionStatuses A dictionary of the new current status of all subscription items; containing <key(String): SDLPermissionRPCName, object(SDLRPCPermissionStatus)>
- * @param status The unified group status of the RPCs in the updatedPermissionStatuses dictionary. Allowed, if all RPCs are now allowed, Disallowed if all RPCs are now disallowed, or Mixed if some are allowed, and some are disallowed
- */
-typedef void (^SDLRPCPermissionStatusChangedHandler)(NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *_Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status);
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionFilter.h b/SmartDeviceLink/SDLPermissionFilter.h
deleted file mode 100644
index e733d2331..000000000
--- a/SmartDeviceLink/SDLPermissionFilter.h
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// SDLPermissionFilter.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 11/18/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLPermissionConstants.h"
-#import "SDLPermissionElement.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLPermissionFilter : NSObject <NSCopying>
-
-/**
- * An identifier for the permission filter to allow it to be removed at a later time.
- */
-@property (copy, nonatomic, readonly) SDLPermissionObserverIdentifier identifier;
-
-/**
- * The type of this filter group.
- */
-@property (assign, nonatomic, readonly) SDLPermissionGroupType groupType;
-
-/**
- * The block that will be called on status changes to this filter group.
- */
-@property (copy, nonatomic, readonly) SDLPermissionsChangedHandler handler;
-
-/**
- * The block that will be called on status changes to RPC permission status objects
- */
-@property (copy, nonatomic, readonly) SDLRPCPermissionStatusChangedHandler rpcPermissionStatusHandler;
-
-/**
- * All of the permission elements in this filter group.
- */
-@property (copy, nonatomic, readonly) NSArray<SDLPermissionElement *> *permissionElements;
-
-/// Initializer unavailable
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- * Create a new permission filter group with a SDLPermissionsChangedHandler.
- *
- * @param rpcNames The names of the RPCs to watch permissions of.
- * @param groupType The type of notifications to be sent for this filter group.
- * @param handler The block observer to be called when changes occur.
- *
- * @return An instance of `SDLPermissionFilter`.
- */
-- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(SDLPermissionsChangedHandler)handler;
-
-/**
- * Create a new permission filter group with a SDLRPCPermissionStatusChangedHandler.
- *
- * @param rpcNames The names of the RPCs to watch permissions of.
- * @param groupType The type of notifications to be sent for this filter group.
- * @param permissionStatusHandler The block observer to be called when changes occur.
- *
- * @return An instance of `SDLPermissionFilter`.
- */
-- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionStatusHandler:(SDLRPCPermissionStatusChangedHandler)permissionStatusHandler;
-
-/**
- * Whether the current filter is equivalent with another filter or not.
- *
- * @param otherFilter The other filter to test equivalence with.
- *
- * @return YES if this filter is equivalent with `otherFilter`, NO otherwise.
- */
-- (BOOL)isEqualToFilter:(SDLPermissionFilter *)otherFilter;
-
-/**
- * Converts an array of SDLPermissionElement objects to an array of SDLPermissionRPCName objects
- *
- * @param permissionElements The permission elements to convert.
- *
- * @return An array of SDLPermissionRPCName objects
- */
-- (NSArray<SDLPermissionRPCName> *)rpcNamesFromPermissionElements:(NSArray<SDLPermissionElement *> *)permissionElements;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionFilter.m b/SmartDeviceLink/SDLPermissionFilter.m
deleted file mode 100644
index c2ed47a3e..000000000
--- a/SmartDeviceLink/SDLPermissionFilter.m
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// SDLPermissionFilter.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 11/18/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLPermissionFilter.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLPermissionFilter
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(SDLPermissionsChangedHandler)observer {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _identifier = [NSUUID UUID];
- _permissionElements = rpcNames;
- _groupType = groupType;
- _handler = observer;
-
- return self;
-}
-
-- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionStatusHandler:(SDLRPCPermissionStatusChangedHandler)permissionStatusHandler {
- self = [super init];
- if (!self) { return nil; }
-
- _identifier = [NSUUID UUID];
- _permissionElements = rpcNames;
- _groupType = groupType;
- _rpcPermissionStatusHandler = permissionStatusHandler;
-
- return self;
-}
-
-#pragma mark - Helpers
-
-- (NSArray<SDLPermissionRPCName> *)rpcNamesFromPermissionElements:(NSArray<SDLPermissionElement *> *)permissionElements {
- NSMutableArray *rpcNames = [[NSMutableArray alloc] init];
- for (SDLPermissionElement *element in permissionElements) {
- [rpcNames addObject:element.rpcName];
- }
-
- return [rpcNames copy];
-}
-
-
-#pragma mark - NSCopying
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- SDLPermissionFilter *newFilter = [[self.class allocWithZone:zone] initWithPermissions:[_permissionElements copyWithZone:zone] groupType:_groupType permissionsHandler:[_handler copyWithZone:zone]];
- newFilter->_identifier = _identifier;
- newFilter->_rpcPermissionStatusHandler = _rpcPermissionStatusHandler;
-
- return newFilter;
-}
-
-
-#pragma mark - Equality
-
-- (BOOL)isEqual:(id)object {
- if (object == self) {
- return YES;
- }
-
- if (![object isMemberOfClass:[self class]]) {
- return NO;
- }
-
- return [self isEqualToFilter:object];
-}
-
-- (BOOL)isEqualToFilter:(SDLPermissionFilter *)otherFilter {
- return [self.identifier isEqual:otherFilter.identifier];
-}
-
-
-#pragma mark - Description
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"Permission Filter Identifier: %@, group type: %@, RPCs: %@", self.identifier, @(self.groupType), self.permissionElements];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionManager.h b/SmartDeviceLink/SDLPermissionManager.h
deleted file mode 100644
index 4a1fc4577..000000000
--- a/SmartDeviceLink/SDLPermissionManager.h
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// SDLPermissionManager.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/14/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLHMILevel.h"
-#import "SDLPermissionConstants.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLRPCPermissionStatus.h"
-
-@class SDLPermissionItem;
-@class SDLRPCMessage;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// The permission manager monitoring RPC permissions.
-@interface SDLPermissionManager : NSObject
-
-/**
- * Flag indicating if the app requires an encryption service to be active.
- */
-@property (assign, nonatomic, readonly) BOOL requiresEncryption;
-
-/**
- * Start the manager with a completion block that will be called when startup completes. This is used internally. To use an SDLPermissionManager, you should use the manager found on `SDLManager`.
- *
- * @param completionHandler The block to be called when the manager's setup is complete.
- */
-- (void)startWithCompletionHandler:(void (^)(BOOL success, NSError *__nullable error))completionHandler;
-
-/**
- * Stop the manager. This method is used internally.
- */
-- (void)stop;
-
-/**
- * Determine if an individual RPC is allowed for the current HMI level
- *
- * @param rpcName The name of the RPC to be tested, for example, SDLShow
- *
- * @return YES if the RPC is allowed at the current HMI level, NO if not
- */
-- (BOOL)isRPCAllowed:(SDLPermissionRPCName)rpcName __deprecated_msg(("Use isRPCNameAllowed: instead"));
-
-/**
- * Determine if an individual RPC is allowed for the current HMI level
- *
- * @param rpcName The name of the RPC to be tested, for example, SDLRPCFunctionNameShow
- *
- * @return YES if the RPC is allowed at the current HMI level, NO if not
- */
-- (BOOL)isRPCNameAllowed:(SDLRPCFunctionName)rpcName;
-
-/**
- * Determine if all RPCs are allowed for the current HMI level
- *
- * @param rpcNames The RPCs to check
- *
- * @return AllAllowed if all of the permissions are allowed, AllDisallowed if all the permissions are disallowed, Any if some are allowed, and some are disallowed
- */
-- (SDLPermissionGroupStatus)groupStatusOfRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames __deprecated_msg(("Use groupStatusOfRPCPermissions: instead"));
-
-/**
- * Determine if all RPCs are allowed for the current HMI level
- *
- * @param rpcNames The RPCs to check
- *
- * @return AllAllowed if all of the permissions are allowed, AllDisallowed if all the permissions are disallowed, Any if some are allowed, and some are disallowed
-*/
-- (SDLPermissionGroupStatus)groupStatusOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames;
-
-/**
- * Retrieve a dictionary with keys that are the passed in RPC names, and objects of an NSNumber<BOOL> specifying if that RPC is currently allowed
- *
- * @param rpcNames An array of RPC names to check
- *
- * @return A dictionary specifying if the passed in RPC names are currently allowed or not
- */
-- (NSDictionary<SDLPermissionRPCName, NSNumber *> *)statusOfRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames __deprecated_msg(("Use statusesOfRPCPermissions: instead"));
-
-/**
- * Retrieve a dictionary with keys that are the passed in RPC names, and objects of an NSNumber<BOOL> specifying if that RPC is currently allowed
- *
- * @param rpcNames An array of permission elements to check
- *
- * @return A dictionary with specific RPC info contained in a SDLRPCPermissionStatus
-*/
-- (NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *)statusesOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames;
-
-/**
- * Add an observer for specified RPC names, with a callback that will be called whenever the value changes, as well as immediately with the current status.
- *
- * @warning This block will be captured by the SDLPermissionsManager, be sure to use [weakself/strongself](http://www.logicsector.com/ios/avoiding-objc-retain-cycles-with-weakself-and-strongself-the-easy-way/) if you are referencing self within your observer block.
- *
- * @warning The observer may be called before this method returns, do not attempt to remove the observer from within the observer. That could send `nil` to removeObserverForIdentifier:. If you want functionality like that, call groupStatusOfRPCs: instead.
- *
- * @param rpcNames The RPCs to be observed
- * @param groupType Affects the times that the observer block will be called. If Any, any change to any RPC in rpcNames will cause the observer block to be called. If AllAllowed, the block will be called when: 1. The observer is first set regardless of RPC status 2. Every RPC in rpcNames becomes allowed 3. The group of rpcNames goes from all being allowed to some or all being disallowed.
- * @param handler The block that will be called whenever permissions change.
- *
- * @return An identifier that can be passed to removeObserverForIdentifer: to remove the observer
- */
-- (SDLPermissionObserverIdentifier)addObserverForRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames groupType:(SDLPermissionGroupType)groupType withHandler:(SDLPermissionsChangedHandler)handler __deprecated_msg(("Use subscribeToRPCPermissions:groupType:withHandler: instead"));
-
-/**
- * Subscribe to specified RPC names, with a callback that will be called whenever the value changes. Unlike addObserverForRPCs:groupType:withHandler:, the callback will only return immediately if the groupType is set to SDLPermissionGroupTypeAny or if the groupType is set to SDLPermissionGroupTypeAllAllowed and all RPCs in the rpcNames parameter are allowed.
- *
- * @warning The observer may be called before this method returns, do not attempt to remove the observer from within the observer. That could send `nil` to removeObserverForIdentifier:. If you want functionality like that, call groupStatusOfRPCs: instead.
- *
- * @param permissionElements The permission elements to be observed
- * @param groupType Affects the times that the observer block will be called. If Any, any change to any RPC in rpcNames will cause the observer block to be called. If AllAllowed, the block will be called when: 1. Every RPC in rpcNames becomes allowed 2. The group of rpcNames goes from all being allowed to some or all being disallowed.
- * @param handler The block that will be called whenever permissions change.
- *
- * @return An identifier that can be passed to removeObserverForIdentifer: to remove the observer
- */
-- (SDLPermissionObserverIdentifier)subscribeToRPCPermissions:(NSArray<SDLPermissionElement *> *)permissionElements groupType:(SDLPermissionGroupType)groupType withHandler:(SDLRPCPermissionStatusChangedHandler)handler;
-
-/**
- * Remove every current observer
- */
-- (void)removeAllObservers;
-
-/**
- * Remove block observers for the specified RPC
- *
- * @param identifier The identifier specifying which observer to remove
- */
-- (void)removeObserverForIdentifier:(SDLPermissionObserverIdentifier)identifier;
-
-
-/**
- * Check whether or not an RPC needs encryption.
- */
-- (BOOL)rpcRequiresEncryption:(SDLPermissionRPCName)rpcName __deprecated_msg(("Use rpcNameRequiresEncryption: instead"));
-
-/**
- * Check whether or not an RPC needs encryption.
- */
-- (BOOL)rpcNameRequiresEncryption:(SDLRPCFunctionName)rpcName;
-
-/**
- * Check whether a parameter of an RPC is allowed
- *
- * @param rpcName The name of the RPC to be tested, for example, SDLRPCFunctionNameGetVehicleData
- * @param parameter The name of the parameter to be tested, for example, rpm
- *
- * @return True if the parameter is allowed, false if it is not
- */
-- (BOOL)isPermissionParameterAllowed:(SDLRPCFunctionName)rpcName parameter:(NSString *)parameter;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionManager.m b/SmartDeviceLink/SDLPermissionManager.m
deleted file mode 100644
index aa9f14bf0..000000000
--- a/SmartDeviceLink/SDLPermissionManager.m
+++ /dev/null
@@ -1,493 +0,0 @@
-//
-// SDLPermissionManager.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 10/14/15.
-// Copyright © 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLPermissionManager.h"
-
-#import "SDLHMIPermissions.h"
-#import "SDLNotificationConstants.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLOnPermissionsChange.h"
-#import "SDLParameterPermissions.h"
-#import "SDLPermissionFilter.h"
-#import "SDLPermissionItem.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLStateMachine.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLPermissionManager ()
-
-@property (strong, nonatomic) NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> *permissions;
-@property (strong, nonatomic) NSMutableArray<SDLPermissionFilter *> *filters;
-@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
-@property (assign, nonatomic) BOOL requiresEncryption;
-
-@end
-
-
-@implementation SDLPermissionManager
-
-#pragma mark - Lifecycle
-
-- (instancetype)init {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _currentHMILevel = nil;
- _permissions = [NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> dictionary];
- _filters = [NSMutableArray<SDLPermissionFilter *> array];
-
- // Set up SDL status notifications
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_permissionsDidChange:) name:SDLDidChangePermissionsNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiLevelDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
-
- return self;
-}
-
-- (void)startWithCompletionHandler:(void (^)(BOOL, NSError *_Nullable))completionHandler {
- completionHandler(YES, nil);
-}
-
-- (void)stop {
- _permissions = [NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> dictionary];
- _filters = [NSMutableArray<SDLPermissionFilter *> array];
- _currentHMILevel = nil;
-}
-
-
-#pragma mark - Permissions available
-
-- (BOOL)isRPCAllowed:(NSString *)rpcName {
- return [self isRPCNameAllowed:rpcName];
-}
-
-- (BOOL)isRPCNameAllowed:(SDLRPCFunctionName)rpcName {
- return [self.class isRPCNameAllowed:rpcName permissions:self.permissions hmiLevel:self.currentHMILevel];
-}
-
-+ (BOOL)isRPCNameAllowed:(SDLRPCFunctionName)rpcName permissions:(NSDictionary<SDLPermissionRPCName, SDLPermissionItem *> *)permissions hmiLevel:(SDLHMILevel)hmiLevel {
- if (permissions[rpcName] == nil || hmiLevel == nil) {
- return NO;
- }
-
- SDLPermissionItem *item = permissions[rpcName];
- return [item.hmiPermissions.allowed containsObject:hmiLevel];
-}
-
-- (SDLPermissionGroupStatus)groupStatusOfRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames {
- return [self groupStatusOfRPCPermissions:[self sdl_createPermissionElementsFromRPCNames:rpcNames]];
-}
-
-- (SDLPermissionGroupStatus)groupStatusOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames {
- if (self.currentHMILevel == nil) {
- return SDLPermissionGroupStatusUnknown;
- }
-
- return [self.class sdl_groupStatusOfRPCPermissions:rpcNames withPermissions:[self.permissions copy] hmiLevel:self.currentHMILevel];
-}
-
-+ (SDLPermissionGroupStatus)sdl_groupStatusOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames withPermissions:(NSDictionary<SDLPermissionRPCName, SDLPermissionItem *> *)permissions hmiLevel:(SDLHMILevel)hmiLevel {
- // If we don't have an HMI level, then just say everything is disallowed
- if (hmiLevel == nil) {
- return SDLPermissionGroupStatusUnknown;
- }
-
- BOOL hasAllowed = NO;
- BOOL hasDisallowed = NO;
-
- // Loop through all the RPCs we need to check
- for (SDLPermissionElement *permissionElement in rpcNames) {
- NSString *rpcName = permissionElement.rpcName;
-
- // If at this point in the loop, we have both allowed and disallowed RPCs, return the mixed result
- if (hasAllowed && hasDisallowed) {
- return SDLPermissionGroupStatusMixed;
- }
-
- // If we don't have a status for this permission, set it as disallowed
- if (permissions[rpcName] == nil) {
- hasDisallowed = YES;
- continue;
- }
-
- // Check the permission's "allowed" array for the current HMI level
- if ([permissions[rpcName].hmiPermissions.allowed containsObject:hmiLevel]) {
- hasAllowed = YES;
- } else {
- hasDisallowed = YES;
- }
-
- if (permissionElement.parameterPermissions != nil) {
- for (NSString *parameter in permissionElement.parameterPermissions) {
- if ([self.class sdl_isPermissionParameterAllowed:permissionElement.rpcName parameter:parameter permissionItems:permissions hmiLevel:hmiLevel]) {
- hasAllowed = YES;
- } else {
- hasDisallowed = YES;
- }
- }
- }
- }
-
- if (hasAllowed && hasDisallowed) {
- return SDLPermissionGroupStatusMixed;
- } else if (hasAllowed) {
- return SDLPermissionGroupStatusAllowed;
- } else {
- return SDLPermissionGroupStatusDisallowed;
- }
-}
-
-- (NSDictionary<SDLPermissionRPCName, NSNumber *> *)statusOfRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames {
- NSArray *permissionElementsArray = [self sdl_createPermissionElementsFromRPCNames:rpcNames];
-
- // Convert the dictionary returned from statusesOfRPCNames: to the correct return type
- return [self sdl_convertPermissionsStatusDictionaryToPermissionsBoolDictionary:[self statusesOfRPCPermissions:permissionElementsArray]];
-}
-
-- (NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *)statusesOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames {
- NSMutableDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *permissionAllowedDict = [NSMutableDictionary dictionary];
-
- for (SDLPermissionElement *permissionElement in rpcNames) {
- if (permissionElement == nil) { continue; }
-
- NSMutableDictionary<NSString *, NSNumber *> *rpcParameters = [NSMutableDictionary dictionary];
- if (permissionElement.parameterPermissions != nil) {
- for (NSString *permissionParameter in permissionElement.parameterPermissions) {
- BOOL isParameterAllowed = [self.class sdl_isPermissionParameterAllowed:permissionElement.rpcName parameter:permissionParameter permissionItems:self.permissions hmiLevel:self.currentHMILevel];
- rpcParameters[permissionParameter] = @(isParameterAllowed);
- }
- }
-
- SDLRPCPermissionStatus *permissionStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:permissionElement.rpcName isRPCAllowed:[self isRPCNameAllowed:permissionElement.rpcName] rpcParameters:rpcParameters];
- permissionAllowedDict[permissionElement.rpcName] = permissionStatus;
- }
-
- return [permissionAllowedDict copy];
-}
-
-
-#pragma mark - Permissions observers
-
-#pragma mark Add Observers
-
-- (SDLPermissionObserverIdentifier)addObserverForRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames groupType:(SDLPermissionGroupType)groupType withHandler:(nonnull SDLPermissionsChangedHandler)handler {
- SDLPermissionFilter *filter = [[SDLPermissionFilter alloc] initWithPermissions:[self sdl_createPermissionElementsFromRPCNames:rpcNames] groupType:groupType permissionsHandler:handler];
-
- // Store the filter for later use
- [self.filters addObject:filter];
-
- // If there are permissions that fit the specifications, send immediately. Then return the identifier.
- [self sdl_callFilterObserver:filter];
-
- return filter.identifier;
-}
-
-- (SDLPermissionObserverIdentifier)subscribeToRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType withHandler:(SDLRPCPermissionStatusChangedHandler)handler {
- SDLPermissionFilter *filter = [[SDLPermissionFilter alloc] initWithPermissions:rpcNames groupType:groupType permissionStatusHandler:handler];
-
- // Store the filter for later use
- [self.filters addObject:filter];
-
- // Check permission status and group type to see if we need to call handler immediately after setting the observer
- SDLPermissionGroupStatus permissionStatus = [self groupStatusOfRPCPermissions:filter.permissionElements];
- if ((groupType == SDLPermissionGroupTypeAny) || (groupType == SDLPermissionGroupTypeAllAllowed && permissionStatus == SDLPermissionGroupStatusAllowed)) {
- [self sdl_callFilterObserver:filter];
- }
-
- return filter.identifier;
-}
-
-- (void)sdl_callFilterObserver:(SDLPermissionFilter *)filter {
- SDLPermissionGroupStatus permissionStatus = [self groupStatusOfRPCPermissions:filter.permissionElements];
-
- if (filter.rpcPermissionStatusHandler != nil) {
- NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *allowedDict = [self statusesOfRPCPermissions:filter.permissionElements];
- filter.rpcPermissionStatusHandler(allowedDict, permissionStatus);
- } else if (filter.handler != nil) {
- NSDictionary<SDLRPCFunctionName, NSNumber *> *allowedDict = [self sdl_convertPermissionsStatusDictionaryToPermissionsBoolDictionary:[self statusesOfRPCPermissions:filter.permissionElements]];
- filter.handler(allowedDict, permissionStatus);
- }
-}
-
-#pragma mark Remove Observers
-
-- (void)removeAllObservers {
- [self.filters removeAllObjects];
-}
-
-- (void)removeObserverForIdentifier:(SDLPermissionObserverIdentifier)identifier {
- NSArray<SDLPermissionFilter *> *filters = [self.filters copy];
- for (NSUInteger i = 0; i < filters.count; i++) {
- SDLPermissionFilter *filter = filters[i];
-
- if ([filter.identifier isEqual:identifier]) {
- [self.filters removeObjectAtIndex:i];
- break;
- }
- }
-}
-
-
-#pragma mark - SDL Notification Observers
-
-- (void)sdl_permissionsDidChange:(SDLRPCNotificationNotification *)notification {
- if (![notification isNotificationMemberOfClass:[SDLOnPermissionsChange class]]) {
- return;
- }
-
- SDLOnPermissionsChange *onPermissionChange = notification.notification;
-
- NSArray<SDLPermissionItem *> *newPermissionItems = [onPermissionChange.permissionItem copy];
- NSArray<SDLPermissionFilter *> *currentFilters = [self.filters copy];
-
- // We can eliminate calling those filters who had no permission changes, so we'll filter down and see which had permissions that changed
- NSArray<SDLPermissionFilter *> *modifiedFilters = [self.class sdl_filterPermissionChangesForFilters:currentFilters currentPermissions:self.permissions updatedPermissions:newPermissionItems];
-
- // We need the old group status and new group status for all allowed filters so we know if they should be called
- NSDictionary<SDLPermissionObserverIdentifier, NSNumber<SDLInt> *> *allAllowedFiltersWithOldStatus = [self sdl_currentStatusForFilters:modifiedFilters];
-
- // Set the updated permissions on our stored permissions object
- for (SDLPermissionItem *item in newPermissionItems) {
- self.permissions[item.rpcName] = item;
- }
-
- // Check if the observer should be called based on the group type
- NSMutableArray<SDLPermissionFilter *> *filtersToCall = [NSMutableArray array];
- for (SDLPermissionFilter *filter in modifiedFilters) {
- if (filter.groupType == SDLPermissionGroupTypeAllAllowed) {
- SDLPermissionGroupStatus oldStatus = [allAllowedFiltersWithOldStatus[filter.identifier] unsignedIntegerValue];
- SDLPermissionGroupStatus newStatus = [self groupStatusOfRPCPermissions:filter.permissionElements];
-
- // We've already eliminated the case where the permissions could stay the same, so if the permissions changed *to* allowed or *away* from allowed, we need to call the observer.
- if (newStatus == SDLPermissionGroupStatusAllowed || oldStatus == SDLPermissionGroupStatusAllowed) {
- [filtersToCall addObject:filter];
- }
- } else {
- // The filter is an `any` type and we know it changed, so we'll call it
- [filtersToCall addObject:filter];
- }
- }
-
- // For all the modified filters we care about, call them
- for (SDLPermissionFilter *filter in filtersToCall) {
- [self sdl_callFilterObserver:filter];
- }
-
- self.requiresEncryption = (onPermissionChange.requireEncryption != nil) ? onPermissionChange.requireEncryption.boolValue : [self sdl_containsAtLeastOneRPCThatRequiresEncryption];
-}
-
-- (void)sdl_hmiLevelDidChange:(SDLRPCNotificationNotification *)notification {
- if (![notification isNotificationMemberOfClass:[SDLOnHMIStatus class]]) {
- return;
- }
-
- SDLOnHMIStatus *hmiStatus = notification.notification;
-
- if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
- return;
- }
-
- SDLHMILevel oldHMILevel = [self.currentHMILevel copy];
- self.currentHMILevel = hmiStatus.hmiLevel;
- NSArray<SDLPermissionFilter *> *filters = [self.filters copy];
-
-
- NSMutableArray<SDLPermissionFilter *> *mutableFiltersToCall = [NSMutableArray arrayWithCapacity:filters.count];
- for (SDLPermissionFilter *filter in filters) {
- // Check if the filter changed, according to its group type settings.
- BOOL filterChanged = [self sdl_didFilterChange:filter fromHMILevel:oldHMILevel toHMILevel:self.currentHMILevel];
-
- if (filterChanged) {
- [mutableFiltersToCall addObject:filter];
- }
- }
-
- NSArray<SDLPermissionFilter *> *filtersToCall = [mutableFiltersToCall copy];
-
- // For all the modified filters, call if necessary
- for (SDLPermissionFilter *filter in filtersToCall) {
- [self sdl_callFilterObserver:filter];
- }
-}
-
-
-#pragma mark Helper Methods
-
-/**
- * HAX: Remove this when statusOfRPCs: is no longer supported. Converts a dictionary from <SDLRPCFunctionName, SDLRPCPermissionStatus*> to <SDLPermissionRPCName, NSNumber *>.
- *
- * @param permissionStatusDictionary The dictionary containing <SDLRPCFunctionName, SDLRPCPermissionStatus*> to convert.
- *
- * @return A <SDLPermissionRPCName, NSNumber *> dictionary.
- */
-- (NSDictionary<SDLPermissionRPCName, NSNumber *> *)sdl_convertPermissionsStatusDictionaryToPermissionsBoolDictionary:(NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus*> *)permissionStatusDictionary {
- NSMutableDictionary *rpcNameDictionary = [[NSMutableDictionary alloc] init];
- [permissionStatusDictionary enumerateKeysAndObjectsUsingBlock:^(SDLRPCFunctionName _Nonnull key, SDLRPCPermissionStatus * _Nonnull obj, BOOL * _Nonnull stop) {
- [rpcNameDictionary setObject:@(obj.rpcAllowed) forKey:key];
- }];
-
- return rpcNameDictionary;
-}
-
-/**
- * Converts an array of RPC name strings to permission elements.
- *
- * @param rpcNames The RPC names to convert.
- *
- * @return An array of permission elements.
- */
-- (NSArray<SDLPermissionElement *> *)sdl_createPermissionElementsFromRPCNames:(NSArray<SDLRPCFunctionName> *)rpcNames {
- NSMutableArray *permissionElements = [[NSMutableArray alloc] init];
- for (NSString *rpcName in rpcNames) {
- SDLPermissionElement *permissionElement = [[SDLPermissionElement alloc] initWithRPCName:rpcName parameterPermissions:nil];
- [permissionElements addObject:permissionElement];
- }
-
- return [permissionElements copy];
-}
-
-/**
- * Determine if a filter changes based on an HMI level change and the filter's group type settings. This will run through the filter's RPCs, check the permission for each and see if any permission within the filter changes based on some permission now being allowed when it wasn't, or not allowed when it was. This also takes into account the group type setting, so an All Allowed filter will return YES if and only if some permission changed *and* that causes a status change *to* or *from* Allowed.
- *
- * @param filter The filter to check
- * @param oldHMILevel The old HMI level
- * @param newHMILevel The new HMI level
- *
- * @return Whether or not the filter changed based on the difference in HMI levels.
- */
-- (BOOL)sdl_didFilterChange:(SDLPermissionFilter *)filter fromHMILevel:(SDLHMILevel)oldHMILevel toHMILevel:(SDLHMILevel)newHMILevel {
- BOOL changed = NO;
- for (NSString *rpcName in [filter rpcNamesFromPermissionElements:filter.permissionElements]) {
- SDLPermissionItem *item = self.permissions[rpcName];
- BOOL newAllowed = [item.hmiPermissions.allowed containsObject:self.currentHMILevel];
- BOOL oldAllowed = [item.hmiPermissions.allowed containsObject:oldHMILevel];
-
- if ((newAllowed && !oldAllowed) || (!newAllowed && oldAllowed)) {
- // Now permitted when it was not before, or not permitted when it was before
- if (filter.groupType == SDLPermissionGroupTypeAny) {
- return YES;
- } else {
- changed = YES;
- break;
- }
- }
- }
-
- // This is only for the All Allowed group type. Unlike with the Any group type, we need to know if the group status has changed
- if (changed) {
- SDLPermissionGroupStatus oldStatus = [self.class sdl_groupStatusOfRPCPermissions:filter.permissionElements withPermissions:self.permissions hmiLevel:oldHMILevel];
- SDLPermissionGroupStatus newStatus = [self.class sdl_groupStatusOfRPCPermissions:filter.permissionElements withPermissions:self.permissions hmiLevel:newHMILevel];
-
- // We've already eliminated the case where the permissions could stay the same, so if the permissions changed *to* allowed or *away* from allowed, we need to call the observer.
- if (newStatus == SDLPermissionGroupStatusAllowed || oldStatus == SDLPermissionGroupStatusAllowed) {
- return YES;
- }
- }
-
- return NO;
-}
-
-/**
- * Get a dictionary of the current group status for filters passed in.
- *
- * @param filters The filters to check
- *
- * @return A dictionary of filters as the keys and an NSNumber wrapper for the SDLPermissionGroupStatus
- */
-- (NSDictionary<NSUUID *, NSNumber<SDLInt> *> *)sdl_currentStatusForFilters:(NSArray<SDLPermissionFilter *> *)filters {
- // Create a dictionary that has the all allowed filters and stores their group status for future reference
- NSMutableDictionary<SDLPermissionFilter *, NSNumber<SDLInt> *> *filtersWithStatus = [NSMutableDictionary dictionary];
- for (SDLPermissionFilter *filter in filters) {
- if (filter.groupType == SDLPermissionGroupTypeAllAllowed) {
- filtersWithStatus[filter.identifier] = @([self groupStatusOfRPCPermissions:filter.permissionElements]);
- }
- }
-
- return [filtersWithStatus copy];
-}
-
-/**
- Takes a set of filters and a set of updated permission items. Loops through each permission for each filter and determines if the filter contains a permission that was updated. Returns the set of filters that contain an updated permission.
-
- @param filters The set of filters to check
- @param currentPermissions The current set of permissions to check the updated permissions and make sure they were modified
- @param updatedPermissions The set of updated permissions to test each filter against
- @return An array of filters that contained one of the passed permissions
- */
-+ (NSArray<SDLPermissionFilter *> *)sdl_filterPermissionChangesForFilters:(NSArray<SDLPermissionFilter *> *)filters currentPermissions:(NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> *)currentPermissions updatedPermissions:(NSArray<SDLPermissionItem *> *)updatedPermissions {
- NSMutableArray<SDLPermissionFilter *> *modifiedFilters = [NSMutableArray arrayWithCapacity:filters.count];
-
- // Loop through each updated permission item for each filter, if the filter had something modified, store it and go to the next filter
- for (SDLPermissionFilter *filter in filters) {
- NSArray<SDLPermissionItem *> *modifiedPermissionItems = [self sdl_modifiedUpdatedPermissions:updatedPermissions comparedToCurrentPermissions:currentPermissions];
- for (SDLPermissionItem *item in modifiedPermissionItems) {
- if ([[filter rpcNamesFromPermissionElements:filter.permissionElements] containsObject:item.rpcName]) {
- [modifiedFilters addObject:filter];
- break;
- }
- }
- }
-
- return [modifiedFilters copy];
-}
-
-+ (NSArray<SDLPermissionItem *> *)sdl_modifiedUpdatedPermissions:(NSArray<SDLPermissionItem *> *)permissionItems comparedToCurrentPermissions:(NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> *)currentPermissions {
- NSMutableArray<SDLPermissionItem *> *modifiedPermissions = [NSMutableArray arrayWithCapacity:permissionItems.count];
-
- for (SDLPermissionItem *item in permissionItems) {
- SDLPermissionItem *currentItem = currentPermissions[item.rpcName];
- if (![item isEqual:currentItem]) {
- [modifiedPermissions addObject:item];
- }
- }
-
- return [modifiedPermissions copy];
-}
-
-- (BOOL)sdl_containsAtLeastOneRPCThatRequiresEncryption {
- for (SDLPermissionItem *item in self.permissions.allValues) {
- if (item.requireEncryption) {
- return YES;
- }
- }
- return NO;
-}
-
-- (BOOL)rpcRequiresEncryption:(SDLPermissionRPCName)rpcName {
- return [self rpcNameRequiresEncryption:rpcName];
-}
-
-- (BOOL)rpcNameRequiresEncryption:(SDLRPCFunctionName)rpcName {
- if (self.permissions[rpcName].requireEncryption != nil) {
- return self.permissions[rpcName].requireEncryption.boolValue;
- }
- return NO;
-}
-
-- (BOOL)isPermissionParameterAllowed:(SDLRPCFunctionName)rpcName parameter:(NSString *)parameter {
- return [self.class sdl_isPermissionParameterAllowed:rpcName parameter:parameter permissionItems:self.permissions hmiLevel:self.currentHMILevel];
-}
-
-+ (BOOL)sdl_isPermissionParameterAllowed:(SDLRPCFunctionName)rpcName parameter:(NSString *)parameter permissionItems:(NSDictionary<SDLPermissionRPCName, SDLPermissionItem *> *)permissionItems hmiLevel:(SDLHMILevel)hmiLevel {
- SDLPermissionItem *permissionItem = permissionItems[rpcName];
- if (permissionItem == nil || ![self isRPCNameAllowed:rpcName permissions:permissionItems hmiLevel:hmiLevel] || permissionItem.parameterPermissions == nil || permissionItem.parameterPermissions.allowed == nil) {
- return NO;
- } else if (permissionItem.parameterPermissions.userDisallowed != nil) {
- return [permissionItem.parameterPermissions.allowed containsObject:parameter] && ![permissionItem.parameterPermissions.userDisallowed containsObject:parameter];
- } else {
- return [permissionItem.parameterPermissions.allowed containsObject:parameter];
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionStatus.h b/SmartDeviceLink/SDLPermissionStatus.h
deleted file mode 100644
index 45b02417d..000000000
--- a/SmartDeviceLink/SDLPermissionStatus.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// SDLPermissionStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration that describes possible permission states of a policy table entry. Used in nothing.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLPermissionStatus SDL_SWIFT_ENUM;
-
-/**
- * permission: allowed
- */
-extern SDLPermissionStatus const SDLPermissionStatusAllowed;
-
-/**
- * permission: disallowed
- */
-extern SDLPermissionStatus const SDLPermissionStatusDisallowed;
-
-/**
- * permission: user disallowed
- */
-extern SDLPermissionStatus const SDLPermissionStatusUserDisallowed;
-
-/**
- * permission: user consent pending
- */
-extern SDLPermissionStatus const SDLPermissionStatusUserConsentPending;
diff --git a/SmartDeviceLink/SDLPowerModeQualificationStatus.h b/SmartDeviceLink/SDLPowerModeQualificationStatus.h
deleted file mode 100644
index 837837e17..000000000
--- a/SmartDeviceLink/SDLPowerModeQualificationStatus.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// SDLPowerModeQualificationStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Describes the power mode qualification status. Used in ClusterModeStatus.
- */
-typedef SDLEnum SDLPowerModeQualificationStatus SDL_SWIFT_ENUM;
-
-/**
- An undefined status
- */
-extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusUndefined;
-
-/**
- An "evaluation in progress" status
- */
-extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusEvaluationInProgress;
-
-/**
- A "not defined" status
- */
-extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusNotDefined;
-
-/**
- An "ok" status
- */
-extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusOk;
diff --git a/SmartDeviceLink/SDLPowerModeStatus.h b/SmartDeviceLink/SDLPowerModeStatus.h
deleted file mode 100644
index 92c7d5c30..000000000
--- a/SmartDeviceLink/SDLPowerModeStatus.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// SDLPowerModeStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- The status of the car's power. Used in ClusterModeStatus.
- */
-typedef SDLEnum SDLPowerModeStatus SDL_SWIFT_ENUM;
-
-/**
- The key is not in the ignition, and the power is off
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusKeyOut;
-
-/**
- The key is not in the ignition and it was just recently removed
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusKeyRecentlyOut;
-
-/**
- The key is not in the ignition, but an approved key is available
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusKeyApproved;
-
-/**
- We are in a post-accessory power situation
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusPostAccessory;
-
-/**
- The car is in accessory power mode
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusAccessory;
-
-/**
- We are in a post-ignition power situation
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusPostIgnition;
-
-/**
- The ignition is on but the car is not yet running
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusIgnitionOn;
-
-/**
- The ignition is on and the car is running
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusRunning;
-
-/**
- We are in a crank power situation
- */
-extern SDLPowerModeStatus const SDLPowerModeStatusCrank;
diff --git a/SmartDeviceLink/SDLPredefinedLayout.h b/SmartDeviceLink/SDLPredefinedLayout.h
deleted file mode 100644
index f56c275bb..000000000
--- a/SmartDeviceLink/SDLPredefinedLayout.h
+++ /dev/null
@@ -1,110 +0,0 @@
-// SDLPredefinedLayout.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- A template layout an app uses to display information. The broad details of the layout are defined, but the details depend on the IVI system. Used in SetDisplayLayout.
- */
-typedef SDLEnum SDLPredefinedLayout SDL_SWIFT_ENUM;
-
-/**
- A default layout
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutDefault;
-
-/**
- The default media layout
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutMedia;
-
-/**
- The default non-media layout
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutNonMedia;
-
-/**
- A media layout containing preset buttons
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutOnscreenPresets;
-
-/**
- The default navigation layout with a fullscreen map
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutNavigationFullscreenMap;
-
-/**
- A list layout used for navigation apps
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutNavigationList;
-
-/**
- A keyboard layout used for navigation apps
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutNavigationKeyboard;
-
-/**
- A layout with a single graphic on the left and text on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithText;
-
-/**
- A layout with text on the left and a single graphic on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutTextWithGraphic;
-
-/**
- A layout with only softbuttons placed in a tile layout
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutTilesOnly;
-
-/**
- A layout with only soft buttons that only accept text
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsOnly;
-
-/**
- A layout with a single graphic on the left and soft buttons in a tile layout on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTiles;
-
-/**
- A layout with soft buttons in a tile layout on the left and a single graphic on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutTilesWithGraphic;
-
-/**
- A layout with a single graphic on the left and both text and soft buttons on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextAndSoftButtons;
-
-/**
- A layout with both text and soft buttons on the left and a single graphic on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutTextAndSoftButtonsWithGraphic;
-
-/**
- A layout with a single graphic on the left and text-only soft buttons on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextButtons;
-
-/**
- A layout with text-only soft buttons on the left and a single graphic on the right
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsWithGraphic;
-
-/**
- A layout with a single large graphic and soft buttons
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicWithSoftButtons;
-
-/**
- A layout with two graphics and soft buttons
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutDoubleGraphicWithSoftButtons;
-
-/**
- A layout with only a single large graphic
- */
-extern SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicOnly;
diff --git a/SmartDeviceLink/SDLPredefinedLayout.m b/SmartDeviceLink/SDLPredefinedLayout.m
deleted file mode 100644
index 08a0c29e8..000000000
--- a/SmartDeviceLink/SDLPredefinedLayout.m
+++ /dev/null
@@ -1,26 +0,0 @@
-// SDLPredefinedLayout.m
-//
-
-
-#import "SDLPredefinedLayout.h"
-
-SDLPredefinedLayout const SDLPredefinedLayoutDefault = @"DEFAULT";
-SDLPredefinedLayout const SDLPredefinedLayoutMedia = @"MEDIA";
-SDLPredefinedLayout const SDLPredefinedLayoutNonMedia = @"NON-MEDIA";
-SDLPredefinedLayout const SDLPredefinedLayoutOnscreenPresets = @"ONSCREEN_PRESETS";
-SDLPredefinedLayout const SDLPredefinedLayoutNavigationFullscreenMap = @"NAV_FULLSCREEN_MAP";
-SDLPredefinedLayout const SDLPredefinedLayoutNavigationList = @"NAV_LIST";
-SDLPredefinedLayout const SDLPredefinedLayoutNavigationKeyboard = @"NAV_KEYBOARD";
-SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithText = @"GRAPHIC_WITH_TEXT";
-SDLPredefinedLayout const SDLPredefinedLayoutTextWithGraphic = @"TEXT_WITH_GRAPHIC";
-SDLPredefinedLayout const SDLPredefinedLayoutTilesOnly = @"TILES_ONLY";
-SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsOnly = @"TEXTBUTTONS_ONLY";
-SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTiles = @"GRAPHIC_WITH_TILES";
-SDLPredefinedLayout const SDLPredefinedLayoutTilesWithGraphic = @"TILES_WITH_GRAPHIC";
-SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextAndSoftButtons = @"GRAPHIC_WITH_TEXT_AND_SOFTBUTTONS";
-SDLPredefinedLayout const SDLPredefinedLayoutTextAndSoftButtonsWithGraphic = @"TEXT_AND_SOFTBUTTONS_WITH_GRAPHIC";
-SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextButtons = @"GRAPHIC_WITH_TEXTBUTTONS";
-SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsWithGraphic = @"TEXTBUTTONS_WITH_GRAPHIC";
-SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicWithSoftButtons = @"LARGE_GRAPHIC_WITH_SOFTBUTTONS";
-SDLPredefinedLayout const SDLPredefinedLayoutDoubleGraphicWithSoftButtons = @"DOUBLE_GRAPHIC_WITH_SOFTBUTTONS";
-SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicOnly = @"LARGE_GRAPHIC_ONLY";
diff --git a/SmartDeviceLink/SDLPrerecordedSpeech.h b/SmartDeviceLink/SDLPrerecordedSpeech.h
deleted file mode 100644
index 090566327..000000000
--- a/SmartDeviceLink/SDLPrerecordedSpeech.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// SDLPrerecordedSpeech.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Contains information about the speech capabilities on the SDL platform. Used in RegisterAppInterfaceResponse to indicate capability.
- */
-typedef SDLEnum SDLPrerecordedSpeech SDL_SWIFT_ENUM;
-
-/**
- A prerecorded help prompt
- */
-extern SDLPrerecordedSpeech const SDLPrerecordedSpeechHelp;
-
-/**
- A prerecorded initial prompt
- */
-extern SDLPrerecordedSpeech const SDLPrerecordedSpeechInitial;
-
-/**
- A prerecorded listen prompt is available
- */
-extern SDLPrerecordedSpeech const SDLPrerecordedSpeechListen;
-
-/**
- A prerecorded positive indicator noise is available
- */
-extern SDLPrerecordedSpeech const SDLPrerecordedSpeechPositive;
-
-/**
- A prerecorded negative indicator noise is available
- */
-extern SDLPrerecordedSpeech const SDLPrerecordedSpeechNegative;
diff --git a/SmartDeviceLink/SDLPresentChoiceSetOperation.m b/SmartDeviceLink/SDLPresentChoiceSetOperation.m
deleted file mode 100644
index 3787fb996..000000000
--- a/SmartDeviceLink/SDLPresentChoiceSetOperation.m
+++ /dev/null
@@ -1,343 +0,0 @@
-//
-// SDLPresentChoiceSetOperation.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 5/24/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLPresentChoiceSetOperation.h"
-
-#import "SDLCancelInteraction.h"
-#import "SDLChoiceCell.h"
-#import "SDLChoiceSet.h"
-#import "SDLChoiceSetDelegate.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLGlobals.h"
-#import "SDLKeyboardDelegate.h"
-#import "SDLKeyboardProperties.h"
-#import "SDLLogMacros.h"
-#import "SDLNotificationConstants.h"
-#import "SDLOnKeyboardInput.h"
-#import "SDLPerformInteraction.h"
-#import "SDLPerformInteractionResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLSetGlobalProperties.h"
-#import "SDLVersion.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLChoiceCell()
-
-@property (assign, nonatomic) UInt16 choiceId;
-
-@end
-
-@interface SDLChoiceSet()
-
-@property (copy, nonatomic) SDLChoiceSetCanceledHandler canceledHandler;
-
-
-@end
-
-@interface SDLPresentChoiceSetOperation()
-
-@property (strong, nonatomic) NSUUID *operationId;
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (strong, nonatomic, readwrite) SDLChoiceSet *choiceSet;
-@property (strong, nonatomic) SDLInteractionMode presentationMode;
-@property (strong, nonatomic, nullable) SDLKeyboardProperties *originalKeyboardProperties;
-@property (strong, nonatomic, nullable) SDLKeyboardProperties *keyboardProperties;
-@property (weak, nonatomic) id<SDLKeyboardDelegate> keyboardDelegate;
-
-@property (strong, nonatomic, readonly) SDLPerformInteraction *performInteraction;
-@property (strong, nonatomic, readonly) SDLLayoutMode layoutMode;
-@property (strong, nonatomic, readonly) NSArray<NSNumber<SDLInt> *> *choiceIds;
-@property (assign, nonatomic) UInt16 cancelId;
-@property (assign, nonatomic) BOOL updatedKeyboardProperties;
-
-@property (copy, nonatomic, nullable) NSError *internalError;
-@property (strong, nonatomic, readwrite, nullable) SDLChoiceCell *selectedCell;
-@property (strong, nonatomic, readwrite, nullable) SDLTriggerSource selectedTriggerSource;
-@property (assign, nonatomic, readwrite) NSUInteger selectedCellRow;
-
-@end
-
-@implementation SDLPresentChoiceSetOperation
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager choiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode keyboardProperties:(nullable SDLKeyboardProperties *)originalKeyboardProperties keyboardDelegate:(nullable id<SDLKeyboardDelegate>)keyboardDelegate cancelID:(UInt16)cancelID {
- self = [super init];
- if (!self) { return self; }
-
- _connectionManager = connectionManager;
- _choiceSet = choiceSet;
-
- __weak typeof(self) weakSelf = self;
- self.choiceSet.canceledHandler = ^{
- [weakSelf sdl_cancelInteraction];
- };
-
- _presentationMode = mode;
- _operationId = [NSUUID UUID];
-
- _originalKeyboardProperties = originalKeyboardProperties;
- _keyboardProperties = originalKeyboardProperties;
- _keyboardDelegate = keyboardDelegate;
- _cancelId = cancelID;
-
- _selectedCellRow = NSNotFound;
-
- return self;
-}
-
-- (void)start {
- [super start];
- if (self.isCancelled) { return; }
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_keyboardInputNotification:) name:SDLDidReceiveKeyboardInputNotification object:nil];
-
- [self sdl_start];
-}
-
-- (void)sdl_start {
- // Check if we're using a keyboard (searchable) choice set and setup keyboard properties if we need to
- if (self.keyboardDelegate != nil && [self.keyboardDelegate respondsToSelector:@selector(customKeyboardConfiguration)]) {
- SDLKeyboardProperties *customProperties = self.keyboardDelegate.customKeyboardConfiguration;
- if (customProperties != nil) {
- self.keyboardProperties = customProperties;
- }
- }
-
- [self sdl_updateKeyboardPropertiesWithCompletionHandler:^{
- if (self.isCancelled) {
- [self finishOperation];
- return;
- }
-
- [self sdl_presentChoiceSet];
- }];
-}
-
-#pragma mark - Sending Requests
-
-- (void)sdl_updateKeyboardPropertiesWithCompletionHandler:(nullable void(^)(void))completionHandler {
- if (self.keyboardProperties == nil) {
- if (completionHandler != nil) {
- completionHandler();
- }
- return;
- }
-
- SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
- setProperties.keyboardProperties = self.keyboardProperties;
-
- __weak typeof(self) weakself = self;
- [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogE(@"Error setting keyboard properties to new value: %@, with error: %@", request, error);
- }
-
- weakself.updatedKeyboardProperties = YES;
-
- if (completionHandler != nil) {
- completionHandler();
- }
- }];
-}
-
-- (void)sdl_presentChoiceSet {
- __weak typeof(self) weakself = self;
- [self.connectionManager sendConnectionRequest:self.performInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogE(@"Presenting choice set failed with response: %@, error: %@", response, error);
- weakself.internalError = error;
-
- [weakself finishOperation];
- return;
- }
-
- SDLPerformInteractionResponse *performResponse = (SDLPerformInteractionResponse *)response;
- [weakself sdl_setSelectedCellWithId:performResponse.choiceID];
- weakself.selectedTriggerSource = performResponse.triggerSource;
-
- [weakself finishOperation];
- }];
-}
-
-#pragma mark - Helpers
-
-- (void)sdl_setSelectedCellWithId:(NSNumber<SDLInt> *)cellId {
- __weak typeof(self) weakself = self;
- [self.choiceSet.choices enumerateObjectsUsingBlock:^(SDLChoiceCell * _Nonnull cell, NSUInteger i, BOOL * _Nonnull stop) {
- if (cell.choiceId == cellId.unsignedIntValue) {
- weakself.selectedCell = cell;
- weakself.selectedCellRow = i;
- }
- }];
-}
-
-/**
- * Cancels the choice set. If the choice set has not yet been sent to Core, it will not be sent. If the choice set is already presented on Core, the choice set will be immediately dismissed. Canceling an already presented choice set will only work if connected to Core versions 6.0+. On older versions of Core, the choice set will not be dismissed.
- */
-- (void)sdl_cancelInteraction {
- if (self.isFinished) {
- SDLLogW(@"This operation has already finished so it can not be canceled.");
- return;
- } else if (self.isCancelled) {
- SDLLogW(@"This operation has already been canceled. It will be finished at some point during the operation.");
- return;
- } else if (self.isExecuting) {
- if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
- SDLLogE(@"Canceling a choice set is not supported on this head unit");
- return;
- }
-
- SDLLogD(@"Canceling the presented choice set interaction");
-
- SDLCancelInteraction *cancelInteraction = [[SDLCancelInteraction alloc] initWithPerformInteractionCancelID:self.cancelId];
-
- __weak typeof(self) weakSelf = self;
- [self.connectionManager sendConnectionRequest:cancelInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- weakSelf.internalError = error;
- SDLLogE(@"Error canceling the presented choice set: %@, with error: %@", request, error);
- return;
- }
- SDLLogD(@"The presented choice set was canceled successfully");
- }];
- } else {
- SDLLogD(@"Canceling a choice set that has not yet been sent to Core");
- [self cancel];
- }
-}
-
-#pragma mark - Getters
-
-- (SDLPerformInteraction *)performInteraction {
- SDLPerformInteraction *performInteraction = [[SDLPerformInteraction alloc] init];
- performInteraction.interactionMode = self.presentationMode;
- performInteraction.initialText = self.choiceSet.title;
- performInteraction.initialPrompt = self.choiceSet.initialPrompt;
- performInteraction.helpPrompt = self.choiceSet.helpPrompt;
- performInteraction.timeoutPrompt = self.choiceSet.timeoutPrompt;
- performInteraction.vrHelp = self.choiceSet.helpList;
- performInteraction.timeout = @((NSUInteger)(self.choiceSet.timeout * 1000));
- performInteraction.interactionLayout = self.layoutMode;
- performInteraction.interactionChoiceSetIDList = self.choiceIds;
- performInteraction.cancelID = @(self.cancelId);
-
- return performInteraction;
-}
-
-- (SDLLayoutMode)layoutMode {
- switch (self.choiceSet.layout) {
- case SDLChoiceSetLayoutList:
- return self.keyboardDelegate ? SDLLayoutModeListWithSearch : SDLLayoutModeListOnly;
- case SDLChoiceSetLayoutTiles:
- return self.keyboardDelegate ? SDLLayoutModeIconWithSearch : SDLLayoutModeIconOnly;
- }
-}
-
-- (NSArray<NSNumber<SDLInt> *> *)choiceIds {
- NSMutableArray<NSNumber<SDLInt> *> *choiceIds = [NSMutableArray arrayWithCapacity:self.choiceSet.choices.count];
- for (SDLChoiceCell *cell in self.choiceSet.choices) {
- [choiceIds addObject:@(cell.choiceId)];
- }
-
- return [choiceIds copy];
-}
-
-#pragma mark - SDL Notifications
-
-- (void)sdl_keyboardInputNotification:(SDLRPCNotificationNotification *)notification {
- if (self.isCancelled) {
- [self finishOperation];
- return;
- }
-
- if (self.keyboardDelegate == nil) { return; }
- SDLOnKeyboardInput *onKeyboard = notification.notification;
-
- if ([self.keyboardDelegate respondsToSelector:@selector(keyboardDidSendEvent:text:)]) {
- [self.keyboardDelegate keyboardDidSendEvent:onKeyboard.event text:onKeyboard.data];
- }
-
- __weak typeof(self) weakself = self;
- if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventVoice] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventSubmitted]) {
- // Submit voice or text
- [self.keyboardDelegate userDidSubmitInput:onKeyboard.data withEvent:onKeyboard.event];
- } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventKeypress]) {
- // Notify of keypress
- if ([self.keyboardDelegate respondsToSelector:@selector(updateAutocompleteWithInput:autoCompleteResultsHandler:)]) {
- [self.keyboardDelegate updateAutocompleteWithInput:onKeyboard.data autoCompleteResultsHandler:^(NSArray<NSString *> * _Nullable updatedAutoCompleteList) {
- NSArray<NSString *> *newList = nil;
- if (updatedAutoCompleteList.count > 100) {
- newList = [updatedAutoCompleteList subarrayWithRange:NSMakeRange(0, 100)];
- } else {
- newList = updatedAutoCompleteList;
- }
-
- weakself.keyboardProperties.autoCompleteList = (newList.count > 0) ? newList : @[];
- weakself.keyboardProperties.autoCompleteText = (newList.count > 0) ? newList.firstObject : nil;
- [weakself sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
- }];
- } else if ([self.keyboardDelegate respondsToSelector:@selector(updateAutocompleteWithInput:completionHandler:)]) {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [self.keyboardDelegate updateAutocompleteWithInput:onKeyboard.data completionHandler:^(NSString * _Nullable updatedAutocompleteText) {
- weakself.keyboardProperties.autoCompleteText = updatedAutocompleteText;
- [weakself sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
- }];
-#pragma clang diagnostic pop
- }
-
- if ([self.keyboardDelegate respondsToSelector:@selector(updateCharacterSetWithInput:completionHandler:)]) {
- [self.keyboardDelegate updateCharacterSetWithInput:onKeyboard.data completionHandler:^(NSArray<NSString *> *updatedCharacterSet) {
- weakself.keyboardProperties.limitedCharacterList = updatedCharacterSet;
- [self sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
- }];
- }
- } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventAborted] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventCancelled]) {
- // Notify of abort / cancellation
- [self.keyboardDelegate keyboardDidAbortWithReason:onKeyboard.event];
- }
-}
-
-#pragma mark - Property Overrides
-
-- (void)finishOperation {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
- if (self.keyboardProperties == nil) {
- [super finishOperation];
- return;
- }
-
- // We need to reset the keyboard properties
- SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
- setProperties.keyboardProperties = self.originalKeyboardProperties;
-
- [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogE(@"Error resetting keyboard properties to values: %@, with error: %@", request, error);
- }
-
- [super finishOperation];
- }];
-}
-
-- (nullable NSString *)name {
- return [NSString stringWithFormat:@"%@ - %@", self.class, self.operationId];
-}
-
-- (NSOperationQueuePriority)queuePriority {
- return NSOperationQueuePriorityNormal;
-}
-
-- (nullable NSError *)error {
- return self.internalError;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPresentKeyboardOperation.m b/SmartDeviceLink/SDLPresentKeyboardOperation.m
deleted file mode 100644
index 27d865ea5..000000000
--- a/SmartDeviceLink/SDLPresentKeyboardOperation.m
+++ /dev/null
@@ -1,252 +0,0 @@
-//
-// SDLPresentKeyboardOperation.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 5/24/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLPresentKeyboardOperation.h"
-
-#import "SDLCancelInteraction.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLGlobals.h"
-#import "SDLKeyboardDelegate.h"
-#import "SDLKeyboardProperties.h"
-#import "SDLLogMacros.h"
-#import "SDLNotificationConstants.h"
-#import "SDLOnKeyboardInput.h"
-#import "SDLPerformInteraction.h"
-#import "SDLPerformInteractionResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLSetGlobalProperties.h"
-#import "SDLVersion.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLPresentKeyboardOperation()
-
-@property (strong, nonatomic) NSUUID *operationId;
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic) id<SDLKeyboardDelegate> keyboardDelegate;
-@property (copy, nonatomic) NSString *initialText;
-@property (strong, nonatomic) SDLKeyboardProperties *originalKeyboardProperties;
-@property (strong, nonatomic) SDLKeyboardProperties *keyboardProperties;
-@property (assign, nonatomic, readwrite) UInt16 cancelId;
-
-@property (strong, nonatomic, readonly) SDLPerformInteraction *performInteraction;
-
-@property (copy, nonatomic, nullable) NSError *internalError;
-
-@end
-
-@implementation SDLPresentKeyboardOperation
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager keyboardProperties:(SDLKeyboardProperties *)originalKeyboardProperties initialText:(NSString *)initialText keyboardDelegate:(id<SDLKeyboardDelegate>)keyboardDelegate cancelID:(UInt16)cancelID {
- self = [super init];
- if (!self) { return self; }
-
- _connectionManager = connectionManager;
- _initialText = initialText;
- _keyboardDelegate = keyboardDelegate;
- _originalKeyboardProperties = originalKeyboardProperties;
- _keyboardProperties = originalKeyboardProperties;
- _cancelId = cancelID;
- _operationId = [NSUUID UUID];
-
- return self;
-}
-
-- (void)start {
- [super start];
- if (self.isCancelled) { return; }
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_keyboardInputNotification:) name:SDLDidReceiveKeyboardInputNotification object:nil];
-
- [self sdl_start];
-}
-
-- (void)sdl_start {
- if (self.keyboardDelegate != nil && [self.keyboardDelegate respondsToSelector:@selector(customKeyboardConfiguration)]) {
- SDLKeyboardProperties *customProperties = self.keyboardDelegate.customKeyboardConfiguration;
- if (customProperties != nil) {
- self.keyboardProperties = customProperties;
- }
- }
-
- [self sdl_updateKeyboardPropertiesWithCompletionHandler:^{
- if (self.isCancelled) {
- [self finishOperation];
- return;
- }
-
- [self sdl_presentKeyboard];
- }];
-}
-
-#pragma mark - Sending Requests
-
-- (void)sdl_updateKeyboardPropertiesWithCompletionHandler:(nullable void(^)(void))completionHandler {
- SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
- setProperties.keyboardProperties = self.keyboardProperties;
-
- [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogE(@"Error setting keyboard properties to new value: %@, with error: %@", request, error);
- }
-
- if (completionHandler != nil) {
- completionHandler();
- }
- }];
-}
-
-- (void)sdl_presentKeyboard {
- [self.connectionManager sendConnectionRequest:self.performInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (self.isCancelled) {
- [self finishOperation];
- return;
- }
-
- if (error != nil) {
- self.internalError = error;
- }
-
- [self finishOperation];
- }];
-}
-
-- (void)dismissKeyboard {
- if (self.isFinished) {
- SDLLogW(@"This operation has already finished so it can not be canceled.");
- return;
- } else if (self.isCancelled) {
- SDLLogW(@"This operation has already been canceled. It will be finished at some point during the operation.");
- return;
- } else if (self.isExecuting) {
- if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
- SDLLogE(@"Canceling a keyboard is not supported on this head unit");
- return;
- }
-
- SDLLogD(@"Canceling the presented keyboard");
-
- SDLCancelInteraction *cancelInteraction = [[SDLCancelInteraction alloc] initWithPerformInteractionCancelID:self.cancelId];
-
- __weak typeof(self) weakSelf = self;
- [self.connectionManager sendConnectionRequest:cancelInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- weakSelf.internalError = error;
- SDLLogE(@"Error canceling the keyboard: %@, with error: %@", request, error);
- return;
- }
- SDLLogD(@"The presented keyboard was canceled successfully");
- }];
- } else {
- SDLLogD(@"Canceling a keyboard that has not yet been sent to Core");
- [self cancel];
- }
-}
-
-#pragma mark - Private Getters / Setters
-
-- (SDLPerformInteraction *)performInteraction {
- SDLPerformInteraction *performInteraction = [[SDLPerformInteraction alloc] init];
- performInteraction.initialText = self.initialText;
- performInteraction.interactionMode = SDLInteractionModeManualOnly;
- performInteraction.interactionChoiceSetIDList = @[];
- performInteraction.interactionLayout = SDLLayoutModeKeyboard;
- performInteraction.cancelID = @(self.cancelId);
-
- return performInteraction;
-}
-
-#pragma mark - Notification Observers
-
-- (void)sdl_keyboardInputNotification:(SDLRPCNotificationNotification *)notification {
- if (self.isCancelled) {
- [self finishOperation];
- return;
- }
-
- if (self.keyboardDelegate == nil) { return; }
- SDLOnKeyboardInput *onKeyboard = notification.notification;
-
- if ([self.keyboardDelegate respondsToSelector:@selector(keyboardDidSendEvent:text:)]) {
- [self.keyboardDelegate keyboardDidSendEvent:onKeyboard.event text:onKeyboard.data];
- }
-
- __weak typeof(self) weakself = self;
- if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventVoice] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventSubmitted]) {
- // Submit voice or text
- [self.keyboardDelegate userDidSubmitInput:onKeyboard.data withEvent:onKeyboard.event];
- } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventKeypress]) {
- // Notify of keypress
- if ([self.keyboardDelegate respondsToSelector:@selector(updateAutocompleteWithInput:autoCompleteResultsHandler:)]) {
- [self.keyboardDelegate updateAutocompleteWithInput:onKeyboard.data autoCompleteResultsHandler:^(NSArray<NSString *> * _Nullable updatedAutoCompleteList) {
- NSArray<NSString *> *newList = nil;
- if (updatedAutoCompleteList.count > 100) {
- newList = [updatedAutoCompleteList subarrayWithRange:NSMakeRange(0, 100)];
- } else {
- newList = updatedAutoCompleteList;
- }
-
- weakself.keyboardProperties.autoCompleteList = (newList.count > 0) ? newList : @[];
- weakself.keyboardProperties.autoCompleteText = (newList.count > 0) ? newList.firstObject : nil;
- [weakself sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
- }];
- } else if ([self.keyboardDelegate respondsToSelector:@selector(updateAutocompleteWithInput:completionHandler:)]) {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [self.keyboardDelegate updateAutocompleteWithInput:onKeyboard.data completionHandler:^(NSString * _Nullable updatedAutocompleteText) {
- weakself.keyboardProperties.autoCompleteText = updatedAutocompleteText;
- [weakself sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
- }];
-#pragma clang diagnostic pop
- }
-
- if ([self.keyboardDelegate respondsToSelector:@selector(updateCharacterSetWithInput:completionHandler:)]) {
- [self.keyboardDelegate updateCharacterSetWithInput:onKeyboard.data completionHandler:^(NSArray<NSString *> *updatedCharacterSet) {
- weakself.keyboardProperties.limitedCharacterList = updatedCharacterSet;
- [self sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
- }];
- }
- } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventAborted] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventCancelled]) {
- // Notify of abort / cancellation
- [self.keyboardDelegate keyboardDidAbortWithReason:onKeyboard.event];
- }
-}
-
-#pragma mark - Property Overrides
-
-- (nullable NSString *)name {
- return [NSString stringWithFormat:@"%@ - %@", self.class, self.operationId];
-}
-
-- (NSOperationQueuePriority)queuePriority {
- return NSOperationQueuePriorityNormal;
-}
-
-- (void)finishOperation {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
- // We need to reset the keyboard properties
- SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
- setProperties.keyboardProperties = self.originalKeyboardProperties;
-
- [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogE(@"Error resetting keyboard properties to values: %@, with error: %@", request, error);
- }
-
- [super finishOperation];
- }];
-}
-
-- (nullable NSError *)error {
- return self.internalError;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPrimaryAudioSource.h b/SmartDeviceLink/SDLPrimaryAudioSource.h
deleted file mode 100644
index c02bd0927..000000000
--- a/SmartDeviceLink/SDLPrimaryAudioSource.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// SDLPrimaryAudioSource.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the current primary audio source of SDL (if selected). Used in DeviceStatus.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLPrimaryAudioSource SDL_SWIFT_ENUM;
-
-/**
- * Currently no source selected
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceNoSourceSelected;
-
-/**
- * USB is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceUSB;
-
-/**
- * USB2 is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceUSB2;
-
-/**
- * Bluetooth Stereo is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceBluetoothStereo;
-
-/**
- * Line in is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceLineIn;
-
-/**
- * iPod is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceIpod;
-
-/**
- * Mobile app is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceMobileApp;
-
-/**
- * @abstract CD is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceCD;
-
-/**
- * @abstract Radio frequency AM is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceAM;
-
-/**
- * @abstract Radio frequency FM is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceFM;
-
-/**
- * @abstract Radio frequency XM is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceXM;
-
-/**
- * @abstract Radio frequency DAB is current source
- */
-extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceDAB;
diff --git a/SmartDeviceLink/SDLProtocol.m b/SmartDeviceLink/SDLProtocol.m
deleted file mode 100644
index d9d3c03d7..000000000
--- a/SmartDeviceLink/SDLProtocol.m
+++ /dev/null
@@ -1,784 +0,0 @@
-// SDLProtocol.m
-//
-
-
-#import "SDLFunctionID.h"
-
-#import "SDLTransportType.h"
-#import "SDLControlFramePayloadConstants.h"
-#import "SDLControlFramePayloadEndService.h"
-#import "SDLControlFramePayloadNak.h"
-#import "SDLControlFramePayloadRegisterSecondaryTransportNak.h"
-#import "SDLControlFramePayloadRPCStartService.h"
-#import "SDLControlFramePayloadRPCStartServiceAck.h"
-#import "SDLEncryptionLifecycleManager.h"
-#import "SDLLogMacros.h"
-#import "SDLGlobals.h"
-#import "SDLPrioritizedObjectCollection.h"
-#import "SDLProtocol.h"
-#import "SDLProtocolHeader.h"
-#import "SDLProtocolMessage.h"
-#import "SDLProtocolMessageDisassembler.h"
-#import "SDLProtocolReceivedMessageRouter.h"
-#import "SDLRPCNotification.h"
-#import "SDLRPCPayload.h"
-#import "SDLRPCRequest.h"
-#import "SDLRPCResponse.h"
-#import "SDLSecurityType.h"
-#import "SDLTimer.h"
-#import "SDLVersion.h"
-#import "SDLV2ProtocolHeader.h"
-
-NSString *const SDLProtocolSecurityErrorDomain = @"com.sdl.protocol.security";
-
-
-#pragma mark - SDLProtocol Private Interface
-
-typedef NSNumber SDLServiceTypeBox;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLProtocol () {
- UInt32 _messageID;
- SDLPrioritizedObjectCollection *_prioritizedCollection;
-}
-
-@property (strong, nonatomic) NSMutableData *receiveBuffer;
-@property (nullable, strong, nonatomic) SDLProtocolReceivedMessageRouter *messageRouter;
-@property (strong, nonatomic) NSMutableDictionary<SDLServiceTypeBox *, SDLProtocolHeader *> *serviceHeaders;
-@property (assign, nonatomic) int32_t hashId;
-
-// Readonly public properties
-@property (strong, nonatomic, readwrite, nullable) NSString *authToken;
-
-@end
-
-
-#pragma mark - SDLProtocol Implementation
-
-@implementation SDLProtocol
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithTransport:(id<SDLTransportType>)transport encryptionManager:(nullable SDLEncryptionLifecycleManager *)encryptionManager {
- self = [super init];
- if (!self) { return nil; }
-
- SDLLogV(@"Initializing protocol with transport: %@, encryption manager: %@", transport, encryptionManager);
- _messageID = 0;
- _hashId = SDLControlFrameInt32NotFound;
- _prioritizedCollection = [[SDLPrioritizedObjectCollection alloc] init];
- _protocolDelegateTable = [NSHashTable weakObjectsHashTable];
- _serviceHeaders = [[NSMutableDictionary alloc] init];
- _messageRouter = [[SDLProtocolReceivedMessageRouter alloc] init];
- _messageRouter.delegate = self;
-
- _transport = transport;
- _transport.delegate = self;
-
- _encryptionLifecycleManager = encryptionManager;
-
- return self;
-}
-
-- (void)start {
- SDLLogD(@"Starting protocol: %@", self);
- [self.transport connect];
-}
-
-- (void)stopWithCompletionHandler:(void (^)(void))disconnectCompletionHandler {
- SDLLogD(@"Stopping protocol: %@, disconnecting transport and stopping security manager", self);
- [self.securityManager stop];
- [self.transport disconnectWithCompletionHandler:^{
- disconnectCompletionHandler();
- }];
-}
-
-#pragma mark - Service metadata
-- (BOOL)storeHeader:(SDLProtocolHeader *)header forServiceType:(SDLServiceType)serviceType {
- if (header == nil) {
- return NO;
- }
-
- SDLLogD(@"Storing SessionID %i of serviceType %i", header.sessionID, serviceType);
- self.serviceHeaders[@(serviceType)] = [header copy];
- return YES;
-}
-
-- (UInt8)sdl_retrieveSessionIDforServiceType:(SDLServiceType)serviceType {
- SDLProtocolHeader *header = self.serviceHeaders[@(serviceType)];
- if (header == nil) {
- // The first time the RPC service type is created, there's no header, so we don't need to warn.
- if (serviceType != SDLServiceTypeRPC) {
- SDLLogW(@"Warning: Tried to retrieve sessionID for serviceType %i, but no header is saved for that service type.", serviceType);
- }
-
- return 0;
- }
-
- return header.sessionID;
-}
-
-#pragma mark - SDLTransportDelegate
-
-- (void)onTransportConnected {
- SDLLogV(@"Transport connected, opening protocol");
- NSArray<id<SDLProtocolDelegate>> *listeners;
- @synchronized(self.protocolDelegateTable) {
- listeners = self.protocolDelegateTable.allObjects;
- }
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocolDidOpen:)]) {
- [listener protocolDidOpen:self];
- }
- }
-}
-
-- (void)onTransportDisconnected {
- SDLLogV(@"Transport disconnected, closing protocol");
- NSArray<id<SDLProtocolDelegate>> *listeners;
- @synchronized(self.protocolDelegateTable) {
- listeners = self.protocolDelegateTable.allObjects;
- }
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocolDidClose:)]) {
- [listener protocolDidClose:self];
- }
- }
-}
-
-- (void)onDataReceived:(NSData *)receivedData {
- [self sdl_handleBytesFromTransport:receivedData];
-}
-
-- (void)onError:(NSError *)error {
- SDLLogV(@"Transport received an error: %@", error);
- for (id<SDLProtocolDelegate> listener in self.protocolDelegateTable.allObjects) {
- if ([listener respondsToSelector:@selector(protocol:transportDidError:)]) {
- [listener protocol:self transportDidError:error];
- }
- }
-}
-
-#pragma mark - Start Service
-
-- (void)startServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload {
- // No encryption, just build and send the message synchronously
- SDLProtocolMessage *message = [self sdl_createStartServiceMessageWithType:serviceType encrypted:NO payload:payload];
- SDLLogD(@"Sending start service: %@", message);
- [self sdl_sendDataToTransport:message.data onService:serviceType];
-}
-
-- (void)startSecureServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload tlsInitializationHandler:(void (^)(BOOL success, NSError *error))tlsInitializationHandler {
- SDLLogD(@"Attempting to start TLS for service type: %hhu", serviceType);
- [self sdl_initializeTLSEncryptionWithCompletionHandler:^(BOOL success, NSError *error) {
- if (!success) {
- // We can't start the service because we don't have encryption, return the error
- tlsInitializationHandler(success, error);
- BLOCK_RETURN;
- }
-
- // TLS initialization succeeded. Build and send the message.
- SDLProtocolMessage *message = [self sdl_createStartServiceMessageWithType:serviceType encrypted:YES payload:nil];
- SDLLogD(@"TLS initialized, sending start service for message: %@", message);
- [self sdl_sendDataToTransport:message.data onService:serviceType];
- }];
-}
-
-- (SDLProtocolMessage *)sdl_createStartServiceMessageWithType:(SDLServiceType)serviceType encrypted:(BOOL)encryption payload:(nullable NSData *)payload {
- SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
- NSData *servicePayload = payload;
-
- header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceTypeRPC];
- header.frameType = SDLFrameTypeControl;
- header.serviceType = serviceType;
- header.frameData = SDLFrameInfoStartService;
-
- // Sending a StartSession with the encrypted bit set causes module to initiate SSL Handshake with a ClientHello message, which should be handled by the 'processControlService' method.
- header.encrypted = encryption;
-
- return [SDLProtocolMessage messageWithHeader:header andPayload:servicePayload];
-}
-
-- (void)sdl_initializeTLSEncryptionWithCompletionHandler:(void (^)(BOOL success, NSError *_Nullable error))completionHandler {
- if (self.securityManager == nil) {
- SDLLogE(@"Could not start streaming service, encryption was requested by the remote system but failed because there is no security manager set for this app.");
-
- if (completionHandler != nil) {
- completionHandler(NO, [NSError errorWithDomain:SDLProtocolSecurityErrorDomain code:SDLProtocolErrorNoSecurityManager userInfo:nil]);
- }
-
- return;
- }
-
- SDLLogD(@"Telling security manager to initialize");
- [self.securityManager initializeWithAppId:self.appId completionHandler:^(NSError *_Nullable error) {
- if (error) {
- SDLLogE(@"Security Manager failed to initialize with error: %@", error);
-
- if (completionHandler != nil) {
- completionHandler(NO, error);
- }
- } else {
- if (completionHandler != nil) {
- completionHandler(YES, nil);
- }
- }
- }];
-}
-
-
-#pragma mark - End Service
-
-- (void)endServiceWithType:(SDLServiceType)serviceType {
- SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
- header.frameType = SDLFrameTypeControl;
- header.serviceType = serviceType;
- header.frameData = SDLFrameInfoEndService;
- header.sessionID = [self sdl_retrieveSessionIDforServiceType:serviceType];
-
- // Assemble the payload, it's a full control frame if we're on 5.0+, it's just the hash id if we are not
- NSData *payload = nil;
- if (self.hashId != SDLControlFrameInt32NotFound) {
- if([SDLGlobals sharedGlobals].protocolVersion.major > 4) {
- SDLControlFramePayloadEndService *endServicePayload = [[SDLControlFramePayloadEndService alloc] initWithHashId:self.hashId];
- payload = endServicePayload.data;
- } else {
- payload = [NSData dataWithBytes:&_hashId length:sizeof(_hashId)];
- }
- }
-
- SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:payload];
- SDLLogD(@"Sending end service: %@", message);
- [self sdl_sendDataToTransport:message.data onService:serviceType];
-}
-
-
-#pragma mark - Register Secondary Transport
-
-- (void)registerSecondaryTransport {
- SDLLogV(@"Attempting to register the secondary transport");
-
- SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
- header.frameType = SDLFrameTypeControl;
- header.serviceType = SDLServiceTypeControl;
- header.frameData = SDLFrameInfoRegisterSecondaryTransport;
- header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceTypeControl];
- if ([SDLGlobals sharedGlobals].protocolVersion.major >= 2) {
- [((SDLV2ProtocolHeader *)header) setMessageID:++_messageID];
- }
-
- SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:nil];
- SDLLogD(@"Sending register secondary transport: %@", message);
- [self sdl_sendDataToTransport:message.data onService:SDLServiceTypeControl];
-}
-
-
-#pragma mark - Send Data
-
-- (void)sendRPC:(SDLRPCMessage *)message {
- if (!message.isPayloadProtected && [self.encryptionLifecycleManager rpcRequiresEncryption:message]) {
- message.payloadProtected = YES;
- }
-
- if (message.isPayloadProtected && !self.encryptionLifecycleManager.isEncryptionReady) {
- SDLLogW(@"Encryption Manager not ready, request not sent (%@)", message);
- return;
- }
-
- [self sendRPC:message encrypted:message.isPayloadProtected error:nil];
-}
-
-- (BOOL)sendRPC:(SDLRPCMessage *)message encrypted:(BOOL)encryption error:(NSError *__autoreleasing *)error {
- NSParameterAssert(message != nil);
- NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[message serializeAsDictionary:(Byte)[SDLGlobals sharedGlobals].protocolVersion.major] options:kNilOptions error:error];
-
- if (error != nil) {
- SDLLogW(@"Error encoding JSON data: %@", *error);
- }
-
- NSData *messagePayload = nil;
- SDLLogV(@"Sending RPC: %@", message);
-
- // Build the message payload. Include the binary header if necessary
- // VERSION DEPENDENT CODE
- switch ([SDLGlobals sharedGlobals].protocolVersion.major) {
- case 1: {
- // No binary header in version 1
- messagePayload = jsonData;
- } break;
- case 2: // Fallthrough
- case 3: // Fallthrough
- case 4: // Fallthrough
- case 5: {
- // Build a binary header
- // Serialize the RPC data into an NSData
- SDLRPCPayload *rpcPayload = [[SDLRPCPayload alloc] init];
- rpcPayload.functionID = [[[SDLFunctionID sharedInstance] functionIdForName:message.name] unsignedIntValue];
- rpcPayload.jsonData = jsonData;
- rpcPayload.binaryData = message.bulkData;
-
- // If it's a request or a response, we need to pull out the correlation ID, so we'll downcast
- if ([message isKindOfClass:SDLRPCRequest.class]) {
- rpcPayload.rpcType = SDLRPCMessageTypeRequest;
- rpcPayload.correlationID = [((SDLRPCRequest *)message).correlationID unsignedIntValue];
- } else if ([message isKindOfClass:SDLRPCResponse.class]) {
- rpcPayload.rpcType = SDLRPCMessageTypeResponse;
- rpcPayload.correlationID = [((SDLRPCResponse *)message).correlationID unsignedIntValue];
- } else if ([message isKindOfClass:[SDLRPCNotification class]]) {
- rpcPayload.rpcType = SDLRPCMessageTypeNotification;
- } else {
- NSAssert(NO, @"Unknown message type attempted to send. Type: %@", [message class]);
- return NO;
- }
-
- // If we're trying to encrypt, try to have the security manager encrypt it. Return if it fails.
- // TODO: (Joel F.)[2016-02-09] We should assert if the service isn't setup for encryption. See [#350](https://github.com/smartdevicelink/sdl_ios/issues/350)
- if (encryption) {
- NSError *encryptError = nil;
-
- messagePayload = [self.securityManager encryptData:rpcPayload.data withError:&encryptError];
-
- if (encryptError) {
- SDLLogE(@"Error encrypting request! %@", encryptError);
- }
- } else {
- messagePayload = rpcPayload.data;
- }
-
- if (!messagePayload) {
- return NO;
- }
-
- } break;
- default: {
- NSAssert(NO, @"Attempting to send an RPC based on an unknown version number: %@, message: %@", @([SDLGlobals sharedGlobals].protocolVersion.major), message);
- } break;
- }
-
- // Build the protocol level header & message
- SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
- header.encrypted = encryption;
- header.frameType = SDLFrameTypeSingle;
- header.serviceType = (message.bulkData.length <= 0) ? SDLServiceTypeRPC : SDLServiceTypeBulkData;
- header.frameData = SDLFrameInfoSingleFrame;
- header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceTypeRPC];
-
- // V2+ messages need to have message ID property set.
- if ([SDLGlobals sharedGlobals].protocolVersion.major >= 2) {
- [((SDLV2ProtocolHeader *)header) setMessageID:++_messageID];
- }
-
- SDLProtocolMessage *protocolMessage = [SDLProtocolMessage messageWithHeader:header andPayload:messagePayload];
-
- // See if the message is small enough to send in one transmission. If not, break it up into smaller messages and send.
- if (protocolMessage.size < [[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]) {
- SDLLogV(@"Sending protocol message: %@", protocolMessage);
- [self sdl_sendDataToTransport:protocolMessage.data onService:SDLServiceTypeRPC];
- } else {
- NSArray<SDLProtocolMessage *> *messages = [SDLProtocolMessageDisassembler disassemble:protocolMessage withLimit:[[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]];
- for (SDLProtocolMessage *smallerMessage in messages) {
- SDLLogV(@"Sending protocol message: %@", smallerMessage);
- [self sdl_sendDataToTransport:smallerMessage.data onService:SDLServiceTypeRPC];
- }
- }
-
- return YES;
-}
-
-// Use for normal messages
-- (void)sdl_sendDataToTransport:(NSData *)data onService:(NSInteger)priority {
- [_prioritizedCollection addObject:data withPriority:priority];
-
- NSData *dataToTransmit = nil;
- while (dataToTransmit = (NSData *)[self->_prioritizedCollection nextObject]) {
- [self.transport sendData:dataToTransmit];
- }
-}
-
-- (void)sendRawData:(NSData *)data withServiceType:(SDLServiceType)serviceType {
- [self sdl_sendRawData:data onService:serviceType encryption:NO];
-}
-
-- (void)sendEncryptedRawData:(NSData *)data onService:(SDLServiceType)serviceType {
- [self sdl_sendRawData:data onService:serviceType encryption:YES];
-}
-
-- (void)sdl_sendRawData:(NSData *)data onService:(SDLServiceType)service encryption:(BOOL)encryption {
- SDLV2ProtocolHeader *header = [[SDLV2ProtocolHeader alloc] initWithVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
- header.encrypted = encryption;
- header.frameType = SDLFrameTypeSingle;
- header.serviceType = service;
- header.sessionID = [self sdl_retrieveSessionIDforServiceType:service];
- header.messageID = ++_messageID;
-
- if (encryption && data.length) {
- NSError *encryptError = nil;
- data = [self.securityManager encryptData:data withError:&encryptError];
-
- if (encryptError) {
- SDLLogE(@"Error attempting to encrypt raw data for service: %@, error: %@", @(service), encryptError);
- }
- }
-
- SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:data];
-
- if (message.size < [[SDLGlobals sharedGlobals] mtuSizeForServiceType:service]) {
- SDLLogV(@"Sending protocol message: %@", message);
- [self sdl_sendDataToTransport:message.data onService:header.serviceType];
- } else {
- NSArray<SDLProtocolMessage *> *messages = [SDLProtocolMessageDisassembler disassemble:message withLimit:[[SDLGlobals sharedGlobals] mtuSizeForServiceType:service]];
- for (SDLProtocolMessage *smallerMessage in messages) {
- SDLLogV(@"Sending protocol message: %@", smallerMessage);
- [self sdl_sendDataToTransport:smallerMessage.data onService:header.serviceType];
- }
- }
-}
-
-
-#pragma mark - Receive and Process Data
-
-// Turn received bytes into message objects.
-- (void)sdl_handleBytesFromTransport:(NSData *)receivedData {
- // Initialize the receive buffer which will contain bytes while messages are constructed.
- if (self.receiveBuffer == nil) {
- self.receiveBuffer = [NSMutableData dataWithCapacity:(4 * [[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC])];
- }
-
- // Save the data
- [self.receiveBuffer appendData:receivedData];
-
- [self sdl_processMessages];
-}
-
-- (void)sdl_processMessages {
- UInt8 incomingVersion = [SDLProtocolHeader determineVersion:self.receiveBuffer];
-
- // If we have enough bytes, create the header.
- SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:incomingVersion];
- NSUInteger headerSize = header.size;
- if (self.receiveBuffer.length >= headerSize) {
- [header parse:self.receiveBuffer];
- } else {
- return;
- }
-
- // If we have enough bytes, finish building the message.
- SDLProtocolMessage *message = nil;
- NSUInteger payloadSize = header.bytesInPayload;
- NSUInteger messageSize = headerSize + payloadSize;
- if (self.receiveBuffer.length >= messageSize) {
- NSUInteger payloadOffset = headerSize;
- NSUInteger payloadLength = payloadSize;
- NSData *payload = [self.receiveBuffer subdataWithRange:NSMakeRange(payloadOffset, payloadLength)];
-
- // If the message in encrypted and there is payload, try to decrypt it
- if (header.encrypted && payload.length) {
- NSError *decryptError = nil;
- payload = [self.securityManager decryptData:payload withError:&decryptError];
-
- if (decryptError) {
- SDLLogE(@"Error attempting to decrypt a payload with error: %@", decryptError);
- return;
- }
- }
-
- message = [SDLProtocolMessage messageWithHeader:header andPayload:payload];
- } else {
- // Need to wait for more bytes.
- SDLLogV(@"Protocol header complete, message incomplete, waiting for %ld more bytes. Header: %@", (long)(messageSize - self.receiveBuffer.length), header);
- return;
- }
-
- // Need to maintain the receiveBuffer, remove the bytes from it which we just processed.
- self.receiveBuffer = [[self.receiveBuffer subdataWithRange:NSMakeRange(messageSize, self.receiveBuffer.length - messageSize)] mutableCopy];
-
- // Pass on the message to the message router.
- [self.messageRouter handleReceivedMessage:message protocol:self];
-
- // Call recursively until the buffer is empty or incomplete message is encountered
- if (self.receiveBuffer.length > 0) {
- [self sdl_processMessages];
- }
-}
-
-
-#pragma mark - SDLProtocolDelegate from SDLReceivedProtocolMessageRouter
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
- SDLLogD(@"Received start service ACK: %@", startServiceACK);
-
- // V5+ Packet
- if (startServiceACK.header.version >= 5) {
- switch (startServiceACK.header.serviceType) {
- case SDLServiceTypeRPC: {
- SDLControlFramePayloadRPCStartServiceAck *startServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithData:startServiceACK.payload];
-
- if (startServiceACKPayload.mtu != SDLControlFrameInt64NotFound) {
- [[SDLGlobals sharedGlobals] setDynamicMTUSize:(NSUInteger)startServiceACKPayload.mtu forServiceType:startServiceACK.header.serviceType];
- }
- if (startServiceACKPayload.hashId != SDLControlFrameInt32NotFound) {
- self.hashId = startServiceACKPayload.hashId;
- }
-
- [SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion = (startServiceACKPayload.protocolVersion != nil) ? [SDLVersion versionWithString:startServiceACKPayload.protocolVersion] : [SDLVersion versionWithMajor:startServiceACK.header.version minor:0 patch:0];
-
- self.authToken = [SDLGlobals.sharedGlobals.maxHeadUnitProtocolVersion isGreaterThanOrEqualToVersion:[[SDLVersion alloc] initWithMajor:5 minor:2 patch:0]] ? startServiceACKPayload.authToken : nil;
-
- // TODO: Hash id?
- } break;
- default:
- break;
- }
- } else { // V4 and below packet
- switch (startServiceACK.header.serviceType) {
- case SDLServiceTypeRPC: {
- [SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion = [SDLVersion versionWithMajor:startServiceACK.header.version minor:0 patch:0];
- } break;
- default:
- break;
- }
- }
-
- // Store the header of this service away for future use
- self.serviceHeaders[@(startServiceACK.header.serviceType)] = [startServiceACK.header copy];
-
- // Pass along to all the listeners
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveStartServiceACK:)]) {
- [listener protocol:protocol didReceiveStartServiceACK:startServiceACK];
- }
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
- [self sdl_logControlNAKPayload:startServiceNAK];
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveStartServiceNAK:)]) {
- [listener protocol:protocol didReceiveStartServiceNAK:startServiceNAK];
- }
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
- SDLLogD(@"End service ACK: %@", endServiceACK);
- // Remove the session id
- [self.serviceHeaders removeObjectForKey:@(endServiceACK.header.serviceType)];
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveEndServiceACK:)]) {
- [listener protocol:protocol didReceiveEndServiceACK:endServiceACK];
- }
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
- [self sdl_logControlNAKPayload:endServiceNAK];
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveEndServiceNAK:)]) {
- [listener protocol:protocol didReceiveEndServiceNAK:endServiceNAK];
- }
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveRegisterSecondaryTransportACK:(SDLProtocolMessage *)registerSecondaryTransportACK {
- SDLLogD(@"Register Secondary Transport ACK: %@", registerSecondaryTransportACK);
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveRegisterSecondaryTransportACK:)]) {
- [listener protocol:protocol didReceiveRegisterSecondaryTransportACK:registerSecondaryTransportACK];
- }
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveRegisterSecondaryTransportNAK:(SDLProtocolMessage *)registerSecondaryTransportNAK {
- [self sdl_logControlNAKPayload:registerSecondaryTransportNAK];
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveRegisterSecondaryTransportNAK:)]) {
- [listener protocol:protocol didReceiveRegisterSecondaryTransportNAK:registerSecondaryTransportNAK];
- }
- }
-}
-
-- (void)handleHeartbeatForSession:(Byte)session {
- SDLLogV(@"Received a heartbeat");
-
- // Respond with a heartbeat ACK
- SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
- header.frameType = SDLFrameTypeControl;
- header.serviceType = SDLServiceTypeControl;
- header.frameData = SDLFrameInfoHeartbeatACK;
- header.sessionID = session;
- SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:nil];
- [self sdl_sendDataToTransport:message.data onService:header.serviceType];
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(handleHeartbeatForSession:)]) {
- [listener handleHeartbeatForSession:session];
- }
- }
-}
-
-- (void)handleHeartbeatACK {
- SDLLogV(@"Received a heartbeat ACK");
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(handleHeartbeatACK)]) {
- [listener handleHeartbeatACK];
- }
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveTransportEventUpdate:(SDLProtocolMessage *)transportEventUpdate {
- SDLLogD(@"Received a transport event update: %@", transportEventUpdate);
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveTransportEventUpdate:)]) {
- [listener protocol:protocol didReceiveTransportEventUpdate:transportEventUpdate];
- }
- }
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveMessage:(SDLProtocolMessage *)msg {
- // Control service (but not control frame type) messages are TLS handshake messages
- if (msg.header.serviceType == SDLServiceTypeControl) {
- [self sdl_processSecurityMessage:msg];
- return;
- }
-
- SDLLogV(@"Other protocol message received: %@", msg);
-
- NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
- for (id<SDLProtocolDelegate> listener in listeners) {
- if ([listener respondsToSelector:@selector(protocol:didReceiveMessage:)]) {
- [listener protocol:protocol didReceiveMessage:msg];
- }
- }
-}
-
-- (void)sdl_logControlNAKPayload:(SDLProtocolMessage *)nakMessage {
- switch (nakMessage.header.frameData) {
- case SDLFrameInfoStartServiceNACK: // fallthrough
- case SDLFrameInfoEndServiceNACK: {
- if (nakMessage.header.version >= 5) {
- SDLControlFramePayloadNak *endServiceNakPayload = [[SDLControlFramePayloadNak alloc] initWithData:nakMessage.payload];
- NSArray<NSString *> *rejectedParams = endServiceNakPayload.rejectedParams;
- SDLLogE(@"%@ service NAK'd, service type: %@, rejectedParams: %@", (nakMessage.header.frameData == SDLFrameInfoStartServiceNACK) ? @"Start" : @"End", @(nakMessage.header.serviceType), rejectedParams);
- } else {
- SDLLogE(@"NAK received message: %@", nakMessage);
- }
- } break;
- case SDLFrameInfoRegisterSecondaryTransportNACK: {
- SDLControlFramePayloadRegisterSecondaryTransportNak *payload = [[SDLControlFramePayloadRegisterSecondaryTransportNak alloc] initWithData:nakMessage.payload];
- SDLLogE(@"Register Secondary Transport NAK'd, reason: %@", payload.reason);
- } break;
- default: break;
- }
-}
-
-- (NSArray<id<SDLProtocolDelegate>> *)sdl_getProtocolListeners {
- @synchronized(self.protocolDelegateTable) {
- return self.protocolDelegateTable.allObjects;
- }
-}
-
-
-#pragma mark - TLS Handshake
-
-// TODO: These should be split out to a separate class to be tested properly
-- (void)sdl_processSecurityMessage:(SDLProtocolMessage *)clientHandshakeMessage {
- SDLLogD(@"Received a security message: %@", clientHandshakeMessage);
-
- if (self.securityManager == nil) {
- SDLLogE(@"Failed to process security message because no security manager is set.");
- return;
- }
-
- // Misformatted handshake message, something went wrong
- if (clientHandshakeMessage.payload.length <= 12) {
- SDLLogE(@"Security message is malformed, less than 12 bytes. It does not have a protocol header.");
- }
-
- // Tear off the binary header of the client protocol message to get at the actual TLS handshake
- // TODO: (Joel F.)[2016-02-15] Should check for errors
- NSData *clientHandshakeData = [clientHandshakeMessage.payload subdataWithRange:NSMakeRange(12, (clientHandshakeMessage.payload.length - 12))];
-
- // Ask the security manager for server data based on the client data sent
- NSError *handshakeError = nil;
- NSData *serverHandshakeData = [self.securityManager runHandshakeWithClientData:clientHandshakeData error:&handshakeError];
-
- // If the handshake went bad and the security library ain't happy, send over the failure to the module. This should result in an ACK with encryption off.
- SDLProtocolMessage *serverSecurityMessage = nil;
- if (serverHandshakeData == nil) {
- SDLLogE(@"Error running TLS handshake procedure. Sending error to module. Error: %@", handshakeError);
-
- serverSecurityMessage = [self.class sdl_serverSecurityFailedMessageWithClientMessageHeader:clientHandshakeMessage.header messageId:++_messageID];
- } else {
- // The handshake went fine, send the module the remaining handshake data
- serverSecurityMessage = [self.class sdl_serverSecurityHandshakeMessageWithData:serverHandshakeData clientMessageHeader:clientHandshakeMessage.header messageId:++_messageID];
- }
-
- // Send the response or error message. If it's an error message, the module will ACK the Start Service without encryption. If it's a TLS handshake message, the module will ACK with encryption
- SDLLogD(@"Sending security message: %@", serverSecurityMessage);
- [self sdl_sendDataToTransport:serverSecurityMessage.data onService:SDLServiceTypeControl];
-}
-
-+ (SDLProtocolMessage *)sdl_serverSecurityHandshakeMessageWithData:(NSData *)data clientMessageHeader:(SDLProtocolHeader *)clientHeader messageId:(UInt32)messageId {
- // This can't possibly be a v1 header because v1 does not have control protocol messages
- SDLV2ProtocolHeader *serverMessageHeader = [SDLProtocolHeader headerForVersion:clientHeader.version];
- serverMessageHeader.encrypted = NO;
- serverMessageHeader.frameType = SDLFrameTypeSingle;
- serverMessageHeader.serviceType = SDLServiceTypeControl;
- serverMessageHeader.frameData = SDLFrameInfoSingleFrame;
- serverMessageHeader.sessionID = clientHeader.sessionID;
- serverMessageHeader.messageID = messageId;
-
- // For a control service packet, we need a binary header with a function ID corresponding to what type of packet we're sending.
- SDLRPCPayload *serverTLSPayload = [[SDLRPCPayload alloc] init];
- serverTLSPayload.functionID = 0x01; // TLS Handshake message
- serverTLSPayload.rpcType = 0x00;
- serverTLSPayload.correlationID = 0x00;
- serverTLSPayload.binaryData = data;
-
- NSData *binaryData = serverTLSPayload.data;
-
- return [SDLProtocolMessage messageWithHeader:serverMessageHeader andPayload:binaryData];
-}
-
-+ (SDLProtocolMessage *)sdl_serverSecurityFailedMessageWithClientMessageHeader:(SDLProtocolHeader *)clientHeader messageId:(UInt32)messageId {
- // This can't possibly be a v1 header because v1 does not have control protocol messages
- SDLV2ProtocolHeader *serverMessageHeader = [SDLProtocolHeader headerForVersion:clientHeader.version];
- serverMessageHeader.encrypted = NO;
- serverMessageHeader.frameType = SDLFrameTypeSingle;
- serverMessageHeader.serviceType = SDLServiceTypeControl;
- serverMessageHeader.frameData = SDLFrameInfoSingleFrame;
- serverMessageHeader.sessionID = clientHeader.sessionID;
- serverMessageHeader.messageID = messageId;
-
- // For a control service packet, we need a binary header with a function ID corresponding to what type of packet we're sending.
- SDLRPCPayload *serverTLSPayload = [[SDLRPCPayload alloc] init];
- serverTLSPayload.functionID = 0x02; // TLS Error message
- serverTLSPayload.rpcType = 0x02;
- serverTLSPayload.correlationID = 0x00;
-
- NSData *binaryData = serverTLSPayload.data;
-
- // TODO: (Joel F.)[2016-02-15] This is supposed to have some JSON data and json data size
- return [SDLProtocolMessage messageWithHeader:serverMessageHeader andPayload:binaryData];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPutFile.h b/SmartDeviceLink/SDLPutFile.h
deleted file mode 100644
index 98a05fe69..000000000
--- a/SmartDeviceLink/SDLPutFile.h
+++ /dev/null
@@ -1,144 +0,0 @@
-// SDLPutFile.h
-//
-
-#import "SDLRPCRequest.h"
-
-#import "SDLFileType.h"
-
-/**
- * Used to push a binary data onto the SDL module from a mobile device, such as icons and album art.
- *
- * Since SmartDeviceLink 2.0
- * @see SDLDeleteFile, SDLListFiles
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLPutFile : SDLRPCRequest
-
-/**
- * Init
- *
- * @return A SDLPutFile object
- */
-- (instancetype)init;
-
-/**
- * Convenience init for creating a putfile with a name and file format.
- *
- * @param fileName The file's name
- * @param fileType The file's format
- * @return A SDLPutFile object
- */
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType;
-
-/**
- * Convenience init for creating a putfile with a name, file format, and persistance.
- *
- * @param fileName The file's name
- * @param fileType The file's format
- * @param persistentFile Whether or not the image should persist between ignition cycles
- * @return A SDLPutFile object
- */
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile;
-
-/**
- * Convenience init for creating a putfile that is part of a multiple frame payload.
- *
- * @param fileName The file's name
- * @param fileType The file's format
- * @param persistentFile Whether or not the image should persist between ignition cycles
- * @param systemFile Whether or not the file is meant to be passed through Core to elsewhere on the system
- * @param offset Offset in bytes for resuming partial data chunks
- * @param length Length in bytes for resuming partial data chunks
- * @return A SDLPutFile object
- */
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length __deprecated_msg("Use initWithFileName:fileType:persistentFile:systemFile:offset:length:crc: instead");
-
-/**
- * Convenience init for creating a putfile that is part of a multiple frame payload.
- *
- * @param fileName The file's name
- * @param fileType The file's format
- * @param persistentFile Whether or not the image should persist between ignition cycles
- * @param systemFile Whether or not the file is meant to be passed through Core to elsewhere on the system
- * @param offset Offset in bytes for resuming partial data chunks
- * @param length Length in bytes for resuming partial data chunks
- * @param crc Checksum of the bulk data. Used by Core to check data integrity
- * @return A SDLPutFile object
- */
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length crc:(UInt64)crc;
-
-/**
- * Convenience init for creating a putfile that is part of a multiple frame payload. A CRC checksum is calculated for the bulk data.
- *
- * @param fileName The file's name
- * @param fileType The file's format
- * @param persistentFile Whether or not the image should persist between ignition cycles
- * @param systemFile Whether or not the file is meant to be passed through Core to elsewhere on the system
- * @param offset Offset in bytes for resuming partial data chunks
- * @param length Length in bytes for resuming partial data chunks
- * @param bulkData Data being sent in the putfile
- * @return A SDLPutFile object
- */
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length bulkData:(NSData *)bulkData;
-
-/**
- * File reference name
- *
- * Required, max length 255 characters
- */
-@property (strong, nonatomic) NSString *syncFileName __deprecated_msg("use sdlFileName instead");
-
-/**
-* File reference name
-*
-* Required, max length 255 characters
-*/
-@property (strong, nonatomic) NSString *sdlFileName;
-
-/**
- * A FileType value representing a selected file type
- *
- * Required
- */
-@property (strong, nonatomic) SDLFileType fileType;
-
-/**
- * A value to indicates if the file is meant to persist between sessions / ignition cycles. If set to TRUE, then the system will aim to persist this file through session / cycles. While files with this designation will have priority over others, they are subject to deletion by the system at any time. In the event of automatic deletion by the system, the app will receive a rejection and have to resend the file. If omitted, the value will be set to false.
- *
- * Boolean, Optional, default = NO
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *persistentFile;
-
-/**
- * Indicates if the file is meant to be passed through core to elsewhere on the system. If set to TRUE, then the system will instead pass the data thru as it arrives to a predetermined area outside of core.
- *
- * Boolean, Optional, default = NO
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *systemFile;
-
-/**
- * Offset in bytes for resuming partial data chunks.
- *
- * Integer, Optional, 0 - 100,000,000,000
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *offset;
-
-/**
- * Length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded
- *
- * Integer, Optional, 0 - 100,000,000,000
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *length;
-
-/**
- * Additional CRC32 checksum to protect data integrity up to 512 Mbits.
- *
- * Integer, Optional, 0 - 4,294,967,295
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *crc;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPutFile.m b/SmartDeviceLink/SDLPutFile.m
deleted file mode 100644
index 2470be16d..000000000
--- a/SmartDeviceLink/SDLPutFile.m
+++ /dev/null
@@ -1,168 +0,0 @@
-// SDLPutFile.m
-//
-
-#import "SDLPutFile.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-#import <zlib.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLPutFile
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNamePutFile]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.sdlFileName = fileName;
- self.fileType = fileType;
-
- return self;
-}
-
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile {
- self = [self initWithFileName:fileName fileType:fileType];
- if (!self) {
- return nil;
- }
-
- self.persistentFile = @(persistentFile);
-
- return self;
-}
-
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length {
- self = [self initWithFileName:fileName fileType:fileType persistentFile:persistentFile];
- if (!self) {
- return nil;
- }
-
- self.systemFile = @(systemFile);
- self.offset = @(offset);
- self.length = @(length);
-
- return self;
-}
-
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length crc:(UInt64)crc {
- self = [self initWithFileName:fileName fileType:fileType persistentFile:persistentFile];
- if (!self) {
- return nil;
- }
-
- self.systemFile = @(systemFile);
- self.offset = @(offset);
- self.length = @(length);
- self.crc = crc == 0 ? nil : @(crc);
-
- return self;
-}
-
-- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length bulkData:(NSData *)bulkData {
-
- self = [self initWithFileName:fileName fileType:fileType persistentFile:persistentFile systemFile:systemFile offset:offset length:length crc:[self.class sdl_getCRC32ChecksumForBulkData:bulkData]];
- if (!self) {
- return nil;
- }
-
- self.bulkData = bulkData;
-
- return self;
-}
-
-#pragma mark - Getters and Setters
-
-- (void)setSyncFileName:(NSString *)syncFileName {
- [self.parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName];
-}
-
-- (NSString *)syncFileName {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error];
-}
-
-- (void)setSdlFileName:(NSString *)syncFileName {
- [self.parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName];
-}
-
-- (NSString *)sdlFileName {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error];
-}
-
-- (void)setFileType:(SDLFileType)fileType {
- [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType];
-}
-
-- (SDLFileType)fileType {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:&error];
-}
-
-- (void)setPersistentFile:(nullable NSNumber<SDLBool> *)persistentFile {
- [self.parameters sdl_setObject:persistentFile forName:SDLRPCParameterNamePersistentFile];
-}
-
-- (nullable NSNumber<SDLBool> *)persistentFile {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePersistentFile ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSystemFile:(nullable NSNumber<SDLBool> *)systemFile {
- [self.parameters sdl_setObject:systemFile forName:SDLRPCParameterNameSystemFile];
-}
-
-- (nullable NSNumber<SDLBool> *)systemFile {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemFile ofClass:NSNumber.class error:nil];
-}
-
-- (void)setOffset:(nullable NSNumber<SDLUInt> *)offset {
- [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset];
-}
-
-- (nullable NSNumber<SDLUInt> *)offset {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil];
-}
-
-- (void)setLength:(nullable NSNumber<SDLUInt> *)length {
- [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength];
-}
-
-- (nullable NSNumber<SDLUInt> *)length {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCrc:(nullable NSNumber<SDLUInt> *)crc {
- [self.parameters sdl_setObject:crc forName:SDLRPCParameterNameCRC];
-}
-
-- (nullable NSNumber<SDLUInt> *)crc {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCRC ofClass:NSNumber.class error:nil];
-}
-
-#pragma mark - Helpers
-
-+ (unsigned long)sdl_getCRC32ChecksumForBulkData:(NSData *)data {
- if (data.length == 0) {
- return 0;
- }
-
- return crc32(0, data.bytes, (uInt)data.length);
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRPCFunctionNames.h b/SmartDeviceLink/SDLRPCFunctionNames.h
deleted file mode 100644
index fce4b61f7..000000000
--- a/SmartDeviceLink/SDLRPCFunctionNames.h
+++ /dev/null
@@ -1,280 +0,0 @@
-//
-// SDLRPCFunctionNames.h
-// SmartDeviceLink
-//
-// Created by Nicole on 3/5/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * All RPC request / response / notification names
- */
-typedef SDLEnum SDLRPCFunctionName SDL_SWIFT_ENUM;
-
-/// Function name for an AddCommand RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameAddCommand;
-
-/// Function name for an AddSubMenu RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameAddSubMenu;
-
-/// Function name for an Alert RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameAlert;
-
-/// Function name for an AlertManeuver RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameAlertManeuver;
-
-/// Function name for a ButtonPress RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameButtonPress;
-
-/// Function name for a CancelInteraction RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameCancelInteraction;
-
-/// Function name for a ChangeRegistration RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameChangeRegistration;
-
-/// Function name for a CloseApplication RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameCloseApplication;
-
-/// Function name for a CreateInteractionChoiceSet RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameCreateInteractionChoiceSet;
-
-/// Function name for a DeleteCommand RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteCommand;
-
-/// Function name for a DeleteFile RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteFile;
-
-/// Function name for a DeleteInteractionChoiceSet RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteInteractionChoiceSet;
-
-/// Function name for a DeleteSubMenu RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteSubMenu;
-
-/// Function name for a DiagnosticMessage RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameDiagnosticMessage;
-
-/// Function name for a DialNumber RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameDialNumber;
-
-/// Function name for an CreateInteractionChoiceSet RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameEncodedSyncPData __deprecated;
-
-/// Function name for an EndAudioPassThru RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameEndAudioPassThru;
-
-/// Function name for an GenricResponse Response RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGenericResponse;
-
-/// Function name for an CreateInteractionChoiceSet RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetAppServiceData;
-
-/// Function name for a GetDTCs RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetDTCs;
-
-/// Function name for a GetFile RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetFile;
-
-/// Function name for a GetCloudAppProperties RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetCloudAppProperties;
-
-/// Function name for a GetInteriorVehicleData RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleData;
-
-/// Function name for a GetInteriorVehicleDataConsent RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleDataConsent;
-
-/// Function name for a GetSystemCapability RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetSystemCapability;
-
-/// Function name for a GetVehicleData RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetVehicleData;
-
-/// Function name for a GetWayPoints RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameGetWayPoints;
-
-/// Function name for a ListFiles RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameListFiles;
-
-/// Function name for an OnAppInterfaceUnregistered notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnAppInterfaceUnregistered;
-
-/// Function name for an OnAppServiceData notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnAppServiceData;
-
-/// Function name for an OnAudioPassThru notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnAudioPassThru;
-
-/// Function name for an OnButtonEvent notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnButtonEvent;
-
-/// Function name for an OnButtonPress notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnButtonPress;
-
-/// Function name for an OnCommand notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnCommand;
-
-/// Function name for an OnDriverDistraction notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnDriverDistraction;
-
-/// Function name for an OnEncodedSyncPData notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnEncodedSyncPData __deprecated;
-
-/// Function name for an OnHashChange notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnHashChange;
-
-/// Function name for an OnHMIStatus notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnHMIStatus;
-
-/// Function name for an OnInteriorVehicleData notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnInteriorVehicleData;
-
-/// Function name for an OnKeyboardInput notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnKeyboardInput;
-
-/// Function name for an OnLanguageChange notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnLanguageChange;
-
-/// Function name for an OnLockScreenStatus notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnLockScreenStatus;
-
-/// Function name for an OnPermissionsChange notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnPermissionsChange;
-
-/// Function name for an OnRCStatus notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnRCStatus;
-
-/// Function name for an OnSyncPData notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnSyncPData __deprecated;
-
-/// Function name for an OnSystemCapabilityUpdated notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnSystemCapabilityUpdated;
-
-/// Function name for an OnSystemRequest notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnSystemRequest;
-
-/// Function name for an OnTBTClientState notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnTBTClientState;
-
-/// Function name for an OnTouchEvent notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnTouchEvent;
-
-/// Function name for an OnVehicleData notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnVehicleData;
-
-/// Function name for an OnWayPointChange notification RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameOnWayPointChange;
-
-/// Function name for a PerformAppServiceInteraction RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNamePerformAppServiceInteraction;
-
-/// Function name for a PerformAppServiceInteraction RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNamePerformAudioPassThru;
-
-/// Function name for a PerformInteraction RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNamePerformInteraction;
-
-/// Function name for a PublishAppService RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNamePublishAppService;
-
-/// Function name for a PutFile RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNamePutFile;
-
-/// Function name for a ReadDID RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameReadDID;
-
-/// Function name for a ReleaseInteriorVehicleDataModule RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameReleaseInteriorVehicleDataModule;
-
-/// Function name for a RegisterAppInterface RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameRegisterAppInterface;
-
-/// Function name for a Reserved RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameReserved;
-
-/// Function name for a ResetGlobalProperties RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameResetGlobalProperties;
-
-/// Function name for a ScrollableMessage RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameScrollableMessage;
-
-/// Function name for a SendHapticData RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSendHapticData;
-
-/// Function name for a SendLocation RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSendLocation;
-
-/// Function name for a SetAppIcon RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSetAppIcon;
-
-/// Function name for a SetCloudProperties RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSetCloudAppProperties;
-
-/// Function name for a SetDisplayLayout RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSetDisplayLayout;
-
-/// Function name for a SetGlobalProperties RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSetGlobalProperties;
-
-/// Function name for a SetInteriorVehicleData RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSetInteriorVehicleData;
-
-/// Function name for a SetMediaClockTimer RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSetMediaClockTimer;
-
-/// Function name for a Show RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameShow;
-
-/// Function name for a ShowAppMenu RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameShowAppMenu;
-
-/// Function name for a ShowConstantTBT RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameShowConstantTBT;
-
-/// Function name for a Slider RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSlider;
-
-/// Function name for a Speak RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSpeak;
-
-/// Function name for a SubscribeButton RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSubscribeButton;
-
-/// Function name for a SubscribeVehicleData RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSubscribeVehicleData;
-
-/// Function name for a SubscribeWayPoints RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSubscribeWayPoints;
-
-/// Function name for a SyncPData RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSyncPData __deprecated;
-
-/// Function name for a SystemRequest RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameSystemRequest;
-
-/// Function name for an UnpublishAppService RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameUnpublishAppService;
-
-/// Function name for an UnregisterAppInterface RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameUnregisterAppInterface;
-
-/// Function name for an UnsubscribeButton RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeButton;
-
-/// Function name for an UnsubscribeVehicleData RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeVehicleData;
-
-/// Function name for an UnsubscribeWayPoints RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeWayPoints;
-
-/// Function name for an UpdateTurnList RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameUpdateTurnList;
-
-/// Function name for a CreateWindow RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameCreateWindow;
-
-/// Function name for a DeleteWindow RPC
-extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteWindow;
-
-
diff --git a/SmartDeviceLink/SDLRPCFunctionNames.m b/SmartDeviceLink/SDLRPCFunctionNames.m
deleted file mode 100644
index 744922420..000000000
--- a/SmartDeviceLink/SDLRPCFunctionNames.m
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// SDLRPCFunctionNames.m
-// SmartDeviceLink
-//
-// Created by Nicole on 3/5/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLRPCFunctionNames.h"
-
-SDLRPCFunctionName const SDLRPCFunctionNameAddCommand = @"AddCommand";
-SDLRPCFunctionName const SDLRPCFunctionNameAddSubMenu = @"AddSubMenu";
-SDLRPCFunctionName const SDLRPCFunctionNameAlert = @"Alert";
-SDLRPCFunctionName const SDLRPCFunctionNameAlertManeuver = @"AlertManeuver";
-SDLRPCFunctionName const SDLRPCFunctionNameButtonPress = @"ButtonPress";
-SDLRPCFunctionName const SDLRPCFunctionNameCancelInteraction = @"CancelInteraction";
-SDLRPCFunctionName const SDLRPCFunctionNameChangeRegistration = @"ChangeRegistration";
-SDLRPCFunctionName const SDLRPCFunctionNameCloseApplication = @"CloseApplication";
-SDLRPCFunctionName const SDLRPCFunctionNameCreateInteractionChoiceSet = @"CreateInteractionChoiceSet";
-SDLRPCFunctionName const SDLRPCFunctionNameDeleteCommand = @"DeleteCommand";
-SDLRPCFunctionName const SDLRPCFunctionNameDeleteFile = @"DeleteFile";
-SDLRPCFunctionName const SDLRPCFunctionNameDeleteInteractionChoiceSet = @"DeleteInteractionChoiceSet";
-SDLRPCFunctionName const SDLRPCFunctionNameDeleteSubMenu = @"DeleteSubMenu";
-SDLRPCFunctionName const SDLRPCFunctionNameDiagnosticMessage = @"DiagnosticMessage";
-SDLRPCFunctionName const SDLRPCFunctionNameDialNumber = @"DialNumber";
-SDLRPCFunctionName const SDLRPCFunctionNameEncodedSyncPData = @"EncodedSyncPData";
-SDLRPCFunctionName const SDLRPCFunctionNameEndAudioPassThru = @"EndAudioPassThru";
-SDLRPCFunctionName const SDLRPCFunctionNameGenericResponse = @"GenericResponse";
-SDLRPCFunctionName const SDLRPCFunctionNameGetAppServiceData = @"GetAppServiceData";
-SDLRPCFunctionName const SDLRPCFunctionNameGetDTCs = @"GetDTCs";
-SDLRPCFunctionName const SDLRPCFunctionNameGetFile = @"GetFile";
-SDLRPCFunctionName const SDLRPCFunctionNameGetCloudAppProperties = @"GetCloudAppProperties";
-SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleData = @"GetInteriorVehicleData";
-SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleDataConsent = @"GetInteriorVehicleDataConsent";
-SDLRPCFunctionName const SDLRPCFunctionNameGetSystemCapability = @"GetSystemCapability";
-SDLRPCFunctionName const SDLRPCFunctionNameGetVehicleData = @"GetVehicleData";
-SDLRPCFunctionName const SDLRPCFunctionNameGetWayPoints = @"GetWayPoints";
-SDLRPCFunctionName const SDLRPCFunctionNameListFiles = @"ListFiles";
-SDLRPCFunctionName const SDLRPCFunctionNameOnAppInterfaceUnregistered = @"OnAppInterfaceUnregistered";
-SDLRPCFunctionName const SDLRPCFunctionNameOnAppServiceData = @"OnAppServiceData";
-SDLRPCFunctionName const SDLRPCFunctionNameOnAudioPassThru = @"OnAudioPassThru";
-SDLRPCFunctionName const SDLRPCFunctionNameOnButtonEvent = @"OnButtonEvent";
-SDLRPCFunctionName const SDLRPCFunctionNameOnButtonPress = @"OnButtonPress";
-SDLRPCFunctionName const SDLRPCFunctionNameOnCommand = @"OnCommand";
-SDLRPCFunctionName const SDLRPCFunctionNameOnDriverDistraction = @"OnDriverDistraction";
-SDLRPCFunctionName const SDLRPCFunctionNameOnEncodedSyncPData = @"OnEncodedSyncPData";
-SDLRPCFunctionName const SDLRPCFunctionNameOnHashChange = @"OnHashChange";
-SDLRPCFunctionName const SDLRPCFunctionNameOnHMIStatus = @"OnHMIStatus";
-SDLRPCFunctionName const SDLRPCFunctionNameOnInteriorVehicleData = @"OnInteriorVehicleData";
-SDLRPCFunctionName const SDLRPCFunctionNameOnKeyboardInput = @"OnKeyboardInput";
-SDLRPCFunctionName const SDLRPCFunctionNameOnLanguageChange = @"OnLanguageChange";
-SDLRPCFunctionName const SDLRPCFunctionNameOnLockScreenStatus = @"OnLockScreenStatus";
-SDLRPCFunctionName const SDLRPCFunctionNameOnPermissionsChange = @"OnPermissionsChange";
-SDLRPCFunctionName const SDLRPCFunctionNameOnRCStatus = @"OnRCStatus";
-SDLRPCFunctionName const SDLRPCFunctionNameOnSyncPData = @"OnSyncPData";
-SDLRPCFunctionName const SDLRPCFunctionNameOnSystemCapabilityUpdated = @"OnSystemCapabilityUpdated";
-SDLRPCFunctionName const SDLRPCFunctionNameOnSystemRequest = @"OnSystemRequest";
-SDLRPCFunctionName const SDLRPCFunctionNameOnTBTClientState = @"OnTBTClientState";
-SDLRPCFunctionName const SDLRPCFunctionNameOnTouchEvent = @"OnTouchEvent";
-SDLRPCFunctionName const SDLRPCFunctionNameOnVehicleData = @"OnVehicleData";
-SDLRPCFunctionName const SDLRPCFunctionNameOnWayPointChange = @"OnWayPointChange";
-SDLRPCFunctionName const SDLRPCFunctionNamePerformAppServiceInteraction = @"PerformAppServiceInteraction";
-SDLRPCFunctionName const SDLRPCFunctionNamePerformAudioPassThru = @"PerformAudioPassThru";
-SDLRPCFunctionName const SDLRPCFunctionNamePerformInteraction = @"PerformInteraction";
-SDLRPCFunctionName const SDLRPCFunctionNamePublishAppService = @"PublishAppService";
-SDLRPCFunctionName const SDLRPCFunctionNamePutFile = @"PutFile";
-SDLRPCFunctionName const SDLRPCFunctionNameReadDID = @"ReadDID";
-SDLRPCFunctionName const SDLRPCFunctionNameReleaseInteriorVehicleDataModule = @"ReleaseInteriorVehicleDataModule";
-SDLRPCFunctionName const SDLRPCFunctionNameRegisterAppInterface = @"RegisterAppInterface";
-SDLRPCFunctionName const SDLRPCFunctionNameReserved = @"reserved";
-SDLRPCFunctionName const SDLRPCFunctionNameResetGlobalProperties = @"ResetGlobalProperties";
-SDLRPCFunctionName const SDLRPCFunctionNameScrollableMessage = @"ScrollableMessage";
-SDLRPCFunctionName const SDLRPCFunctionNameSendHapticData = @"SendHapticData";
-SDLRPCFunctionName const SDLRPCFunctionNameSendLocation = @"SendLocation";
-SDLRPCFunctionName const SDLRPCFunctionNameSetAppIcon = @"SetAppIcon";
-SDLRPCFunctionName const SDLRPCFunctionNameSetCloudAppProperties = @"SetCloudAppProperties";
-SDLRPCFunctionName const SDLRPCFunctionNameSetDisplayLayout = @"SetDisplayLayout";
-SDLRPCFunctionName const SDLRPCFunctionNameSetGlobalProperties = @"SetGlobalProperties";
-SDLRPCFunctionName const SDLRPCFunctionNameSetInteriorVehicleData = @"SetInteriorVehicleData";
-SDLRPCFunctionName const SDLRPCFunctionNameSetMediaClockTimer = @"SetMediaClockTimer";
-SDLRPCFunctionName const SDLRPCFunctionNameShow = @"Show";
-SDLRPCFunctionName const SDLRPCFunctionNameShowAppMenu = @"ShowAppMenu";
-SDLRPCFunctionName const SDLRPCFunctionNameShowConstantTBT = @"ShowConstantTBT";
-SDLRPCFunctionName const SDLRPCFunctionNameSlider = @"Slider";
-SDLRPCFunctionName const SDLRPCFunctionNameSpeak = @"Speak";
-SDLRPCFunctionName const SDLRPCFunctionNameSubscribeButton = @"SubscribeButton";
-SDLRPCFunctionName const SDLRPCFunctionNameSubscribeVehicleData = @"SubscribeVehicleData";
-SDLRPCFunctionName const SDLRPCFunctionNameSubscribeWayPoints = @"SubscribeWayPoints";
-SDLRPCFunctionName const SDLRPCFunctionNameSyncPData = @"SyncPData";
-SDLRPCFunctionName const SDLRPCFunctionNameSystemRequest = @"SystemRequest";
-SDLRPCFunctionName const SDLRPCFunctionNameUnpublishAppService = @"UnpublishAppService";
-SDLRPCFunctionName const SDLRPCFunctionNameUnregisterAppInterface = @"UnregisterAppInterface";
-SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeButton = @"UnsubscribeButton";
-SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeVehicleData = @"UnsubscribeVehicleData";
-SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeWayPoints = @"UnsubscribeWayPoints";
-SDLRPCFunctionName const SDLRPCFunctionNameUpdateTurnList = @"UpdateTurnList";
-SDLRPCFunctionName const SDLRPCFunctionNameCreateWindow = @"CreateWindow";
-SDLRPCFunctionName const SDLRPCFunctionNameDeleteWindow = @"DeleteWindow";
diff --git a/SmartDeviceLink/SDLRPCMessage.h b/SmartDeviceLink/SDLRPCMessage.h
deleted file mode 100644
index c6b04071d..000000000
--- a/SmartDeviceLink/SDLRPCMessage.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// SDLRPCMessage.h
-//
-
-#import "SDLEnum.h"
-
-#import "SDLRPCStruct.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Parent class of all RPC messages.
-///
-/// Contains basic information about an RPC message.
-@interface SDLRPCMessage : SDLRPCStruct <NSCopying>
-
-/**
- * Convenience init
- *
- * @param name The name of the message
- * @return A SDLRPCMessage object
- */
-- (instancetype)initWithName:(NSString *)name __deprecated_msg("This is not intended to be a public facing API");
-
-/**
- * Returns the function name.
- *
- * @return The function name
- */
-- (nullable NSString *)getFunctionName __deprecated_msg("Call the .name property instead");
-
-/**
- * Sets the function name.
- *
- * @param functionName The function name
- */
-- (void)setFunctionName:(nullable NSString *)functionName __deprecated_msg("This is not intended to be a public facing API");
-
-/**
- * Returns the value associated with the provided key. If the key does not exist, null is returned.
- *
- * @param functionName The key name
- * @return The value associated with the function name
- */
-- (nullable NSObject *)getParameters:(NSString *)functionName __deprecated_msg("Call the .parameters property instead");
-
-/**
- * Sets a key-value pair using the function name as the key.
- *
- * @param functionName The name for the key
- * @param value The value associated with the function name
- */
-- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value __deprecated_msg("This is not intended to be a public facing API");
-
-/**
- * The data in the message
- */
-@property (nullable, strong, nonatomic) NSData *bulkData;
-
-/**
- * The name of the message
- */
-@property (strong, nonatomic, readonly) NSString *name;
-
-/**
- The JSON-RPC parameters
- */
-@property (strong, nonatomic, readonly) NSMutableDictionary<NSString *, id> *parameters;
-
-/**
- * The type of data in the message
- */
-@property (strong, nonatomic, readonly) NSString *messageType;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRPCMessage.m b/SmartDeviceLink/SDLRPCMessage.m
deleted file mode 100644
index 15a6dd49a..000000000
--- a/SmartDeviceLink/SDLRPCMessage.m
+++ /dev/null
@@ -1,102 +0,0 @@
-// SDLRPCMessage.m
-//
-
-
-#import "SDLRPCMessage.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLRPCMessage ()
-
-@property (strong, nonatomic, readwrite) NSString *messageType;
-@property (strong, nonatomic) NSMutableDictionary<NSString *, id> *function;
-
-@end
-
-
-@implementation SDLRPCMessage
-
-- (instancetype)initWithName:(NSString *)name {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _function = [NSMutableDictionary dictionaryWithCapacity:3];
- _parameters = [NSMutableDictionary dictionary];
- _messageType = SDLRPCParameterNameRequest;
- self.store[_messageType] = _function;
-
- _function[SDLRPCParameterNameParameters] = _parameters;
- _function[SDLRPCParameterNameOperationName] = name;
-
- return self;
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-implementations"
-- (instancetype)initWithDictionary:(NSDictionary *)dict {
- self = [super initWithDictionary:dict];
- if (!self) {
- return nil;
- }
-
- NSEnumerator *enumerator = [self.store keyEnumerator];
- while (_messageType = [enumerator nextObject]) {
- if (![_messageType isEqualToString:SDLRPCParameterNameBulkData]) {
- break;
- }
- }
-
- if (_messageType != nil) {
- self.store[_messageType] = [self.store[_messageType] mutableCopy];
- _function = self.store[_messageType];
-
- _function[SDLRPCParameterNameParameters] = [_function[SDLRPCParameterNameParameters] mutableCopy];
- _parameters = _function[SDLRPCParameterNameParameters];
- }
-
- _bulkData = dict[SDLRPCParameterNameBulkData];
-
- return self;
-}
-#pragma clang diagnostic pop
-
-- (nullable NSString *)getFunctionName {
- return self.name;
-}
-
-- (void)setFunctionName:(nullable NSString *)functionName {
- [_function sdl_setObject:functionName forName:SDLRPCParameterNameOperationName];
-}
-
-- (nullable NSObject *)getParameters:(NSString *)functionName {
- return [_parameters sdl_objectForName:functionName ofClass:NSObject.class error:nil];
-}
-
-- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value {
- [_parameters sdl_setObject:value forName:functionName];
-}
-
-- (NSString *)name {
- return [_function sdl_objectForName:SDLRPCParameterNameOperationName ofClass:NSString.class error:nil];
-}
-
-- (NSString *)description {
- NSMutableString *description = [NSMutableString stringWithFormat:@"%@ (%@)\n%@", self.name, self.messageType, self.parameters];
-
- return description;
-}
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- SDLRPCMessage *newMessage = [[self.class allocWithZone:zone] initWithDictionary:self.store];
-
- return newMessage;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRPCMessageType.h b/SmartDeviceLink/SDLRPCMessageType.h
deleted file mode 100644
index ac0df1958..000000000
--- a/SmartDeviceLink/SDLRPCMessageType.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// SDLRPCMessageType.h
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLEnum.h"
-
-/**
- The type of RPC message
- */
-typedef NS_ENUM(Byte, SDLRPCMessageType) {
- /// A request that will require a response
- SDLRPCMessageTypeRequest = 0,
-
- /// A response to a request
- SDLRPCMessageTypeResponse,
-
- /// A message that does not have a response
- SDLRPCMessageTypeNotification
-};
-
-/// A type of RPC message
-typedef SDLEnum SDLRPCMessageTypeName SDL_SWIFT_ENUM;
-
-/// A request that will require a response
-extern SDLRPCMessageTypeName const SDLRPCMessageTypeNameRequest;
-
-/// A response to a request
-extern SDLRPCMessageTypeName const SDLRPCMessageTypeNameResponse;
-
-/// A message that does not have a response
-extern SDLRPCMessageTypeName const SDLRPCMessageTypeNameNotification;
diff --git a/SmartDeviceLink/SDLRPCParameterNames.h b/SmartDeviceLink/SDLRPCParameterNames.h
deleted file mode 100644
index e6541968a..000000000
--- a/SmartDeviceLink/SDLRPCParameterNames.h
+++ /dev/null
@@ -1,728 +0,0 @@
-// SDLRPCParameterNames.h
-//
-
-#import <Foundation/Foundation.h>
-#import "SDLMacros.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NSString* SDLRPCParameterName SDL_SWIFT_ENUM;
-
-extern SDLRPCParameterName const SDLRPCParameterNameACEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameACEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameACMaxEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameACMaxEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameAccelerationPedalPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameAcceptsWayPoints;
-extern SDLRPCParameterName const SDLRPCParameterNameAction;
-extern SDLRPCParameterName const SDLRPCParameterNameActual;
-extern SDLRPCParameterName const SDLRPCParameterNameAddress;
-extern SDLRPCParameterName const SDLRPCParameterNameAddressLines;
-extern SDLRPCParameterName const SDLRPCParameterNameAdministrativeArea;
-extern SDLRPCParameterName const SDLRPCParameterNameAirbagStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameAlertIcon;
-extern SDLRPCParameterName const SDLRPCParameterNameAlerts;
-extern SDLRPCParameterName const SDLRPCParameterNameAlertText1;
-extern SDLRPCParameterName const SDLRPCParameterNameAlertText2;
-extern SDLRPCParameterName const SDLRPCParameterNameAlertText3;
-extern SDLRPCParameterName const SDLRPCParameterNameAlignment;
-extern SDLRPCParameterName const SDLRPCParameterNameAllocatedModules;
-extern SDLRPCParameterName const SDLRPCParameterNameAllowAppConsumers;
-extern SDLRPCParameterName const SDLRPCParameterNameAllowed;
-extern SDLRPCParameterName const SDLRPCParameterNameAllowMultipleAccess;
-extern SDLRPCParameterName const SDLRPCParameterNameAltitude;
-extern SDLRPCParameterName const SDLRPCParameterNameAltitudeMeters;
-extern SDLRPCParameterName const SDLRPCParameterNameAmbientLightSensorStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameAmbientLightStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameApparentTemperature;
-extern SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureHigh;
-extern SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureLow;
-extern SDLRPCParameterName const SDLRPCParameterNameAppBundleId;
-extern SDLRPCParameterName const SDLRPCParameterNameAppDisplayName;
-extern SDLRPCParameterName const SDLRPCParameterNameAppHMIType;
-extern SDLRPCParameterName const SDLRPCParameterNameAppId;
-extern SDLRPCParameterName const SDLRPCParameterNameAppInfo;
-extern SDLRPCParameterName const SDLRPCParameterNameAppName;
-extern SDLRPCParameterName const SDLRPCParameterNameAppServiceId;
-extern SDLRPCParameterName const SDLRPCParameterNameAppServiceManifest;
-extern SDLRPCParameterName const SDLRPCParameterNameAppServiceRecord;
-extern SDLRPCParameterName const SDLRPCParameterNameAppServices;
-extern SDLRPCParameterName const SDLRPCParameterNameAppServicesCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameAppVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType;
-extern SDLRPCParameterName const SDLRPCParameterNameAutoCompleteList;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioControlData;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioPassThruCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText1;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioStreamingIndicator;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioStreamingState;
-extern SDLRPCParameterName const SDLRPCParameterNameAudioType;
-extern SDLRPCParameterName const SDLRPCParameterNameAuthToken;
-extern SDLRPCParameterName const SDLRPCParameterNameAutoCompleteText;
-extern SDLRPCParameterName const SDLRPCParameterNameAutoModeEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameAutoModeEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameAuxECallNotificationStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDs;
-extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannels;
-extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDsAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannelsAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameBackgroundColor;
-extern SDLRPCParameterName const SDLRPCParameterNameBackTiltAngle;
-extern SDLRPCParameterName const SDLRPCParameterNameBackTiltAngleAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameBackVerticalPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameBackVerticalPositionAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameBand;
-extern SDLRPCParameterName const SDLRPCParameterNameBatteryLevelStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameBearing;
-extern SDLRPCParameterName const SDLRPCParameterNameBeltStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameBitsPerSample;
-extern SDLRPCParameterName const SDLRPCParameterNameBodyInformation;
-extern SDLRPCParameterName const SDLRPCParameterNameBlue;
-extern SDLRPCParameterName const SDLRPCParameterNameBluetoothIconOn;
-extern SDLRPCParameterName const SDLRPCParameterNameBulkData;
-extern SDLRPCParameterName const SDLRPCParameterNameButtonCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameButtonEventMode;
-extern SDLRPCParameterName const SDLRPCParameterNameButtonName;
-extern SDLRPCParameterName const SDLRPCParameterNameButtonPressMode;
-extern SDLRPCParameterName const SDLRPCParameterNameCancelID;
-extern SDLRPCParameterName const SDLRPCParameterNameColor;
-extern SDLRPCParameterName const SDLRPCParameterNameCol;
-extern SDLRPCParameterName const SDLRPCParameterNameColSpan;
-extern SDLRPCParameterName const SDLRPCParameterNameColumns;
-extern SDLRPCParameterName const SDLRPCParameterNameCoolingEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameCoolingEnabledAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameCoolingLevel;
-extern SDLRPCParameterName const SDLRPCParameterNameCoolingLevelAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameCoordinate;
-extern SDLRPCParameterName const SDLRPCParameterNameCallActive;
-extern SDLRPCParameterName const SDLRPCParameterNameCarModeStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameCarrier;
-extern SDLRPCParameterName const SDLRPCParameterNameChannelId;
-extern SDLRPCParameterName const SDLRPCParameterNameChannelName;
-extern SDLRPCParameterName const SDLRPCParameterNameChannelSetting;
-extern SDLRPCParameterName const SDLRPCParameterNameCharacterSet;
-extern SDLRPCParameterName const SDLRPCParameterNameChoiceId;
-extern SDLRPCParameterName const SDLRPCParameterNameChoiceSet;
-extern SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameClimateControlData;
-extern SDLRPCParameterName const SDLRPCParameterNameClimateControlCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameCloudCover;
-extern SDLRPCParameterName const SDLRPCParameterNameClusterModes;
-extern SDLRPCParameterName const SDLRPCParameterNameClusterModeStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameCommandIcon;
-extern SDLRPCParameterName const SDLRPCParameterNameCommandId;
-extern SDLRPCParameterName const SDLRPCParameterNameCompassDirection;
-extern SDLRPCParameterName const SDLRPCParameterNameCorrelationId;
-extern SDLRPCParameterName const SDLRPCParameterNameCountryCode;
-extern SDLRPCParameterName const SDLRPCParameterNameCountryName;
-extern SDLRPCParameterName const SDLRPCParameterNameCRC;
-extern SDLRPCParameterName const SDLRPCParameterNameClockText;
-extern SDLRPCParameterName const SDLRPCParameterNameCloudAppVehicleID;
-extern SDLRPCParameterName const SDLRPCParameterNameCloudTransportType;
-extern SDLRPCParameterName const SDLRPCParameterNameCurrentForecast;
-extern SDLRPCParameterName const SDLRPCParameterNameCurrentForecastSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature;
-extern SDLRPCParameterName const SDLRPCParameterNameCushion;
-extern SDLRPCParameterName const SDLRPCParameterNameCustomButtonId;
-extern SDLRPCParameterName const SDLRPCParameterNameCustomPresets;
-extern SDLRPCParameterName const SDLRPCParameterNameOEMCustomDataType;
-extern SDLRPCParameterName const SDLRPCParameterNameData;
-extern SDLRPCParameterName const SDLRPCParameterNameDataResult;
-extern SDLRPCParameterName const SDLRPCParameterNameDataType;
-extern SDLRPCParameterName const SDLRPCParameterNameDay;
-extern SDLRPCParameterName const SDLRPCParameterNameDayColorScheme;
-extern SDLRPCParameterName const SDLRPCParameterNameDefrostZone;
-extern SDLRPCParameterName const SDLRPCParameterNameDefrostZoneAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameDeliveryMode;
-extern SDLRPCParameterName const SDLRPCParameterNameDensity;
-extern SDLRPCParameterName const SDLRPCParameterNameDensityAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameDesiredTemperature;
-extern SDLRPCParameterName const SDLRPCParameterNameDesiredTemperatureAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameDestination;
-extern SDLRPCParameterName const SDLRPCParameterNameDestinationETA;
-extern SDLRPCParameterName const SDLRPCParameterNameDetails;
-extern SDLRPCParameterName const SDLRPCParameterNameDeviceInfo;
-extern SDLRPCParameterName const SDLRPCParameterNameDeviceStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameDiagonalScreenSize;
-extern SDLRPCParameterName const SDLRPCParameterNameDialNumberEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameDIDLocation;
-extern SDLRPCParameterName const SDLRPCParameterNameDIDResult;
-extern SDLRPCParameterName const SDLRPCParameterNameDimension;
-extern SDLRPCParameterName const SDLRPCParameterNameDisplays;
-extern SDLRPCParameterName const SDLRPCParameterNameDisplayCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameDisplayMode;
-extern SDLRPCParameterName const SDLRPCParameterNameDisplayModeUnitAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameDisplayLayout;
-extern SDLRPCParameterName const SDLRPCParameterNameDisplayName;
-extern SDLRPCParameterName const SDLRPCParameterNameDisplayType;
-extern SDLRPCParameterName const SDLRPCParameterNameDistanceUnit;
-extern SDLRPCParameterName const SDLRPCParameterNameDistanceToEmpty;
-extern SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuver;
-extern SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuverScale;
-extern SDLRPCParameterName const SDLRPCParameterNameDistanceUnitAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameDoublePressAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverBeltDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverBraking;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverBuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverCurtainAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverDistractionStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverDoorAjar;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverKneeAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverSideAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNameDrivingSide;
-extern SDLRPCParameterName const SDLRPCParameterNameDTC;
-extern SDLRPCParameterName const SDLRPCParameterNameDTCMask;
-extern SDLRPCParameterName const SDLRPCParameterNameDualModeEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameDualModeEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameDuration;
-extern SDLRPCParameterName const SDLRPCParameterNameDuplicateUpdatesFromWindowID;
-extern SDLRPCParameterName const SDLRPCParameterNameE911Override;
-extern SDLRPCParameterName const SDLRPCParameterNameECallConfirmationStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameECallEventActive;
-extern SDLRPCParameterName const SDLRPCParameterNameECallInfo;
-extern SDLRPCParameterName const SDLRPCParameterNameECallNotificationStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameECUHeader;
-extern SDLRPCParameterName const SDLRPCParameterNameECUName;
-extern SDLRPCParameterName const SDLRPCParameterNameElectronicParkBrakeStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameEmergencyEvent;
-extern SDLRPCParameterName const SDLRPCParameterNameEmergencyEventType;
-extern SDLRPCParameterName const SDLRPCParameterNameEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameEndpoint;
-extern SDLRPCParameterName const SDLRPCParameterNameEndTime;
-extern SDLRPCParameterName const SDLRPCParameterNameEngineOilLife;
-extern SDLRPCParameterName const SDLRPCParameterNameEngineTorque;
-extern SDLRPCParameterName const SDLRPCParameterNameEqualizerAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameEqualizerMaxChannelId;
-extern SDLRPCParameterName const SDLRPCParameterNameEqualizerSettings;
-extern SDLRPCParameterName const SDLRPCParameterNameETA;
-extern SDLRPCParameterName const SDLRPCParameterNameEvent;
-extern SDLRPCParameterName const SDLRPCParameterNameExpires;
-extern SDLRPCParameterName const SDLRPCParameterNameExternalTemperature;
-extern SDLRPCParameterName const SDLRPCParameterNameFanSpeed;
-extern SDLRPCParameterName const SDLRPCParameterNameFanSpeedAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameFCCFacilityId;
-extern SDLRPCParameterName const SDLRPCParameterNameFilename;
-extern SDLRPCParameterName const SDLRPCParameterNameFilenames;
-extern SDLRPCParameterName const SDLRPCParameterNameFileType;
-extern SDLRPCParameterName const SDLRPCParameterNameFirmness;
-extern SDLRPCParameterName const SDLRPCParameterNameFirmwareRevision;
-extern SDLRPCParameterName const SDLRPCParameterNameFreeModules;
-extern SDLRPCParameterName const SDLRPCParameterNameFrequencyInteger;
-extern SDLRPCParameterName const SDLRPCParameterNameFrequencyFraction;
-extern SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPositionAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameFuelCutoffStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameFuelLevel;
-extern SDLRPCParameterName const SDLRPCParameterNameFuelLevelState;
-extern SDLRPCParameterName const SDLRPCParameterNameFuelMaintenanceMode;
-extern SDLRPCParameterName const SDLRPCParameterNameFuelRange;
-extern SDLRPCParameterName const SDLRPCParameterNameFullAppID;
-extern SDLRPCParameterName const SDLRPCParameterNameFunctionID;
-extern SDLRPCParameterName const SDLRPCParameterNameGetWayPointsEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameGPS;
-extern SDLRPCParameterName const SDLRPCParameterNameGraphic;
-extern SDLRPCParameterName const SDLRPCParameterNameGraphicSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameGreen;
-extern SDLRPCParameterName const SDLRPCParameterNameGrid;
-extern SDLRPCParameterName const SDLRPCParameterNameHandledRPCs;
-extern SDLRPCParameterName const SDLRPCParameterNameHapticRectData;
-extern SDLRPCParameterName const SDLRPCParameterNameHapticSpatialDataSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameHardware;
-extern SDLRPCParameterName const SDLRPCParameterNameHashId;
-extern SDLRPCParameterName const SDLRPCParameterNameHDOP;
-extern SDLRPCParameterName const SDLRPCParameterNameHDChannel;
-extern SDLRPCParameterName const SDLRPCParameterNameHDChannelAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHDRadioEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameHDRadioEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeading;
-extern SDLRPCParameterName const SDLRPCParameterNameHeadLampStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPositionAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPositionAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatingLevel;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatingLevelAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatingEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatingEnabledAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameClimateEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameClimateEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameHeight;
-extern SDLRPCParameterName const SDLRPCParameterNameHelpPrompt;
-extern SDLRPCParameterName const SDLRPCParameterNameHighBeamsOn;
-extern SDLRPCParameterName const SDLRPCParameterNameHMICapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguage;
-extern SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguageDesired;
-extern SDLRPCParameterName const SDLRPCParameterNameHMILevel;
-extern SDLRPCParameterName const SDLRPCParameterNameHMIPermissions;
-extern SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlData;
-extern SDLRPCParameterName const SDLRPCParameterNameHMIZoneCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameHorizontalPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameHorizontalPositionAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameHour;
-extern SDLRPCParameterName const SDLRPCParameterNameHourlyForecast;
-extern SDLRPCParameterName const SDLRPCParameterNameHours;
-extern SDLRPCParameterName const SDLRPCParameterNameHumidity;
-extern SDLRPCParameterName const SDLRPCParameterNameHybridAppPreference;
-extern SDLRPCParameterName const SDLRPCParameterNameIconResumed;
-extern SDLRPCParameterName const SDLRPCParameterNameId;
-extern SDLRPCParameterName const SDLRPCParameterNameIgnitionStableStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameIgnitionStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameImage;
-extern SDLRPCParameterName const SDLRPCParameterNameImageFields;
-extern SDLRPCParameterName const SDLRPCParameterNameImageResolution;
-extern SDLRPCParameterName const SDLRPCParameterNameImageSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameImageTemplate;
-extern SDLRPCParameterName const SDLRPCParameterNameImageType;
-extern SDLRPCParameterName const SDLRPCParameterNameImageTypeSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameInfo;
-extern SDLRPCParameterName const SDLRPCParameterNameInitialPrompt;
-extern SDLRPCParameterName const SDLRPCParameterNameInitialText;
-extern SDLRPCParameterName const SDLRPCParameterNameInnerLeftRear;
-extern SDLRPCParameterName const SDLRPCParameterNameInnerRightRear;
-extern SDLRPCParameterName const SDLRPCParameterNameInstantFuelConsumption;
-extern SDLRPCParameterName const SDLRPCParameterNameInstructions;
-extern SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetId;
-extern SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetIdList;
-extern SDLRPCParameterName const SDLRPCParameterNameInteractionLayout;
-extern SDLRPCParameterName const SDLRPCParameterNameInteractionMode;
-extern SDLRPCParameterName const SDLRPCParameterNameIsExplicit;
-extern SDLRPCParameterName const SDLRPCParameterNameIsHighlighted;
-extern SDLRPCParameterName const SDLRPCParameterNameIsMediaApplication;
-extern SDLRPCParameterName const SDLRPCParameterNameIsSubscribed;
-extern SDLRPCParameterName const SDLRPCParameterNameJunctionType;
-extern SDLRPCParameterName const SDLRPCParameterNameKeepContext;
-extern SDLRPCParameterName const SDLRPCParameterNameKeepContextAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameKeyboardLayout;
-extern SDLRPCParameterName const SDLRPCParameterNameKeyboardProperties;
-extern SDLRPCParameterName const SDLRPCParameterNameKeypressMode;
-extern SDLRPCParameterName const SDLRPCParameterNameLabel;
-extern SDLRPCParameterName const SDLRPCParameterNameLanguage;
-extern SDLRPCParameterName const SDLRPCParameterNameLanguageDesired;
-extern SDLRPCParameterName const SDLRPCParameterNameLatitudeDegrees;
-extern SDLRPCParameterName const SDLRPCParameterNameLeftFront;
-extern SDLRPCParameterName const SDLRPCParameterNameLeftRear;
-extern SDLRPCParameterName const SDLRPCParameterNameLeftRearInflatableBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameLeftRow2BuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameLeftRow3BuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameLength;
-extern SDLRPCParameterName const SDLRPCParameterNameLevel;
-extern SDLRPCParameterName const SDLRPCParameterNameLevels;
-extern SDLRPCParameterName const SDLRPCParameterNameLevelSpan;
-extern SDLRPCParameterName const SDLRPCParameterNameLightControlCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameLightControlData;
-extern SDLRPCParameterName const SDLRPCParameterNameLightState;
-extern SDLRPCParameterName const SDLRPCParameterNameLimitedCharacterList;
-extern SDLRPCParameterName const SDLRPCParameterNameLocality;
-extern SDLRPCParameterName const SDLRPCParameterNameLocation;
-extern SDLRPCParameterName const SDLRPCParameterNameLocationCoordinate;
-extern SDLRPCParameterName const SDLRPCParameterNameLocationDescription;
-extern SDLRPCParameterName const SDLRPCParameterNameLocationDetails;
-extern SDLRPCParameterName const SDLRPCParameterNameLocationImage;
-extern SDLRPCParameterName const SDLRPCParameterNameLocationName;
-extern SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalWarning;
-extern SDLRPCParameterName const SDLRPCParameterNameLongitudeDegrees;
-extern SDLRPCParameterName const SDLRPCParameterNameLongPress;
-extern SDLRPCParameterName const SDLRPCParameterNameLongPressAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameLowBeamsOn;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField1;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField2;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField3;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField4;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField1Type;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField2Type;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField3Type;
-extern SDLRPCParameterName const SDLRPCParameterNameMainField4Type;
-extern SDLRPCParameterName const SDLRPCParameterNameMajorVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameMake;
-extern SDLRPCParameterName const SDLRPCParameterNameManeuverComplete;
-extern SDLRPCParameterName const SDLRPCParameterNameManualTextEntry;
-extern SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmness;
-extern SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmnessAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameMassageEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameMassageEnabledAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameMassageMode;
-extern SDLRPCParameterName const SDLRPCParameterNameMassageModeAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameMemoryAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameMassageZone;
-extern SDLRPCParameterName const SDLRPCParameterNameMaxBitrate;
-extern SDLRPCParameterName const SDLRPCParameterNameMaxDuration;
-extern SDLRPCParameterName const SDLRPCParameterNameMaxHourlyForecastAmount;
-extern SDLRPCParameterName const SDLRPCParameterNameMaximumChangeVelocity;
-extern SDLRPCParameterName const SDLRPCParameterNameMaximumNumberOfWindows;
-extern SDLRPCParameterName const SDLRPCParameterNameMaxMinutelyForecastAmount;
-extern SDLRPCParameterName const SDLRPCParameterNameMaxMultidayForecastAmount;
-extern SDLRPCParameterName const SDLRPCParameterNameMaxNumberRFCOMMPorts;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaAlbum;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaArtist;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaClock;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaClockFormats;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaServiceData;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaServiceManifest;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaTitle;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaTrack;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaImage;
-extern SDLRPCParameterName const SDLRPCParameterNameMediaType;
-extern SDLRPCParameterName const SDLRPCParameterNameMemory;
-extern SDLRPCParameterName const SDLRPCParameterNameMenuIcon;
-extern SDLRPCParameterName const SDLRPCParameterNameMenuId;
-extern SDLRPCParameterName const SDLRPCParameterNameMenuLayout;
-extern SDLRPCParameterName const SDLRPCParameterNameMenuLayoutsAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameMenuName;
-extern SDLRPCParameterName const SDLRPCParameterNameMenuParams;
-extern SDLRPCParameterName const SDLRPCParameterNameMenuTitle;
-extern SDLRPCParameterName const SDLRPCParameterNameMessageData;
-extern SDLRPCParameterName const SDLRPCParameterNameMessageDataResult;
-extern SDLRPCParameterName const SDLRPCParameterNameMessageLength;
-extern SDLRPCParameterName const SDLRPCParameterNameMetadataTags;
-extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BeltDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow2BuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow3BuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameMillisecond;
-extern SDLRPCParameterName const SDLRPCParameterNameMinorVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameMinute;
-extern SDLRPCParameterName const SDLRPCParameterNameMinuteForecast;
-extern SDLRPCParameterName const SDLRPCParameterNameMinutes;
-extern SDLRPCParameterName const SDLRPCParameterNameModel;
-extern SDLRPCParameterName const SDLRPCParameterNameModuleData;
-extern SDLRPCParameterName const SDLRPCParameterNameModuleId;
-extern SDLRPCParameterName const SDLRPCParameterNameModuleIds;
-extern SDLRPCParameterName const SDLRPCParameterNameModuleInfo;
-extern SDLRPCParameterName const SDLRPCParameterNameModuleName;
-extern SDLRPCParameterName const SDLRPCParameterNameModuleType;
-extern SDLRPCParameterName const SDLRPCParameterNameModelYear;
-extern SDLRPCParameterName const SDLRPCParameterNameMonoAudioOutputMuted;
-extern SDLRPCParameterName const SDLRPCParameterNameMonth;
-extern SDLRPCParameterName const SDLRPCParameterNameMoonPhase;
-extern SDLRPCParameterName const SDLRPCParameterNameMultidayForecast;
-extern SDLRPCParameterName const SDLRPCParameterNameMultipleEvents;
-extern SDLRPCParameterName const SDLRPCParameterNameMultiTouchAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameMuteAudio;
-extern SDLRPCParameterName const SDLRPCParameterNameMyKey;
-extern SDLRPCParameterName const SDLRPCParameterNameName;
-extern SDLRPCParameterName const SDLRPCParameterNameNavigation;
-extern SDLRPCParameterName const SDLRPCParameterNameNavigationCapability;
-extern SDLRPCParameterName const SDLRPCParameterNameNavigationServiceData;
-extern SDLRPCParameterName const SDLRPCParameterNameNavigationServiceManifest;
-extern SDLRPCParameterName const SDLRPCParameterNameNavigationText;
-extern SDLRPCParameterName const SDLRPCParameterNameNavigationText1;
-extern SDLRPCParameterName const SDLRPCParameterNameNavigationText2;
-extern SDLRPCParameterName const SDLRPCParameterNameNearestStormBearing;
-extern SDLRPCParameterName const SDLRPCParameterNameNearestStormDistance;
-extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistance;
-extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistanceScale;
-extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionETA;
-extern SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon;
-extern SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName;
-extern SDLRPCParameterName const SDLRPCParameterNameNicknames;
-extern SDLRPCParameterName const SDLRPCParameterNameNightColorScheme;
-extern SDLRPCParameterName const SDLRPCParameterNameNotification;
-extern SDLRPCParameterName const SDLRPCParameterNameNumber;
-extern SDLRPCParameterName const SDLRPCParameterNameNumberCustomPresetsAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameNumberTicks;
-extern SDLRPCParameterName const SDLRPCParameterNameOdometer;
-extern SDLRPCParameterName const SDLRPCParameterNameOffset;
-extern SDLRPCParameterName const SDLRPCParameterNameOnLockScreenStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameOnScreenPresetsAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameOperationName;
-extern SDLRPCParameterName const SDLRPCParameterNameOrigin;
-extern SDLRPCParameterName const SDLRPCParameterNameOriginApp;
-extern SDLRPCParameterName const SDLRPCParameterNameOS;
-extern SDLRPCParameterName const SDLRPCParameterNameOSVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameParameterPermissions;
-extern SDLRPCParameterName const SDLRPCParameterNameParameters;
-extern SDLRPCParameterName const SDLRPCParameterNameParentId;
-extern SDLRPCParameterName const SDLRPCParameterNameParkBrakeActive;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerBeltDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerBuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerChildDetected;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerCurtainAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerDoorAjar;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerKneeAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerSideAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNamePatchVersion;
-extern SDLRPCParameterName const SDLRPCParameterNamePCMStreamCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNamePDOP;
-extern SDLRPCParameterName const SDLRPCParameterNamePermissionItem;
-extern SDLRPCParameterName const SDLRPCParameterNamePersistentFile;
-extern SDLRPCParameterName const SDLRPCParameterNamePhoneCall;
-extern SDLRPCParameterName const SDLRPCParameterNamePhoneCapability;
-extern SDLRPCParameterName const SDLRPCParameterNamePhoneNumber;
-extern SDLRPCParameterName const SDLRPCParameterNamePhoneRoaming;
-extern SDLRPCParameterName const SDLRPCParameterNamePixelPerInch;
-extern SDLRPCParameterName const SDLRPCParameterNamePlaylistName;
-extern SDLRPCParameterName const SDLRPCParameterNamePlayTone;
-extern SDLRPCParameterName const SDLRPCParameterNamePosition;
-extern SDLRPCParameterName const SDLRPCParameterNamePostalCode;
-extern SDLRPCParameterName const SDLRPCParameterNamePowerModeActive;
-extern SDLRPCParameterName const SDLRPCParameterNamePowerModeQualificationStatus;
-extern SDLRPCParameterName const SDLRPCParameterNamePowerModeStatus;
-extern SDLRPCParameterName const SDLRPCParameterNamePrecipAccumulation;
-extern SDLRPCParameterName const SDLRPCParameterNamePrecipIntensity;
-extern SDLRPCParameterName const SDLRPCParameterNamePrecipProbability;
-extern SDLRPCParameterName const SDLRPCParameterNamePrecipType;
-extern SDLRPCParameterName const SDLRPCParameterNamePreferredResolution;
-extern SDLRPCParameterName const SDLRPCParameterNamePrerecordedSpeech;
-extern SDLRPCParameterName const SDLRPCParameterNamePresetBankCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNamePressAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNamePressure;
-extern SDLRPCParameterName const SDLRPCParameterNamePressureTelltale;
-extern SDLRPCParameterName const SDLRPCParameterNamePrimaryAudioSource;
-extern SDLRPCParameterName const SDLRPCParameterNamePrimaryColor;
-extern SDLRPCParameterName const SDLRPCParameterNamePRNDL;
-extern SDLRPCParameterName const SDLRPCParameterNameProgramIdentification;
-extern SDLRPCParameterName const SDLRPCParameterNameProgressIndicator;
-extern SDLRPCParameterName const SDLRPCParameterNameProperties;
-extern SDLRPCParameterName const SDLRPCParameterNameProgramService;
-extern SDLRPCParameterName const SDLRPCParameterNameProgramType;
-extern SDLRPCParameterName const SDLRPCParameterNamePrompt;
-extern SDLRPCParameterName const SDLRPCParameterNameQueueCurrentTrackNumber;
-extern SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackDuration;
-extern SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackProgress;
-extern SDLRPCParameterName const SDLRPCParameterNameQueueTotalTrackCount;
-extern SDLRPCParameterName const SDLRPCParameterNameRadioBandAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameRadioControlCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameRadioControlData;
-extern SDLRPCParameterName const SDLRPCParameterNameRadioEnable;
-extern SDLRPCParameterName const SDLRPCParameterNameRadioEnableAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameRadioFrequencyAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameRange;
-extern SDLRPCParameterName const SDLRPCParameterNameRDSData;
-extern SDLRPCParameterName const SDLRPCParameterNameRDSDataAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameRearLeftDoorAjar;
-extern SDLRPCParameterName const SDLRPCParameterNameRearRightDoorAjar;
-extern SDLRPCParameterName const SDLRPCParameterNameReason;
-extern SDLRPCParameterName const SDLRPCParameterNameRect;
-extern SDLRPCParameterName const SDLRPCParameterNameRed;
-extern SDLRPCParameterName const SDLRPCParameterNameRegion;
-extern SDLRPCParameterName const SDLRPCParameterNameRegions;
-extern SDLRPCParameterName const SDLRPCParameterNameRemoteControl;
-extern SDLRPCParameterName const SDLRPCParameterNameRemoteControlCapability;
-extern SDLRPCParameterName const SDLRPCParameterNameRequest;
-extern SDLRPCParameterName const SDLRPCParameterNameRequestServiceActive;
-extern SDLRPCParameterName const SDLRPCParameterNameRequestSubType;
-extern SDLRPCParameterName const SDLRPCParameterNameRequestType;
-extern SDLRPCParameterName const SDLRPCParameterNameRequireEncryption;
-extern SDLRPCParameterName const SDLRPCParameterNameReserved;
-extern SDLRPCParameterName const SDLRPCParameterNameResolution;
-extern SDLRPCParameterName const SDLRPCParameterNameResolutionHeight;
-extern SDLRPCParameterName const SDLRPCParameterNameResolutionWidth;
-extern SDLRPCParameterName const SDLRPCParameterNameResponse;
-extern SDLRPCParameterName const SDLRPCParameterNameResult;
-extern SDLRPCParameterName const SDLRPCParameterNameResultCode;
-extern SDLRPCParameterName const SDLRPCParameterNameRightFront;
-extern SDLRPCParameterName const SDLRPCParameterNameRightRear;
-extern SDLRPCParameterName const SDLRPCParameterNameRightRearInflatableBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameRightRow2BuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameRightRow3BuckleBelted;
-extern SDLRPCParameterName const SDLRPCParameterNameRolloverEvent;
-extern SDLRPCParameterName const SDLRPCParameterNameRow;
-extern SDLRPCParameterName const SDLRPCParameterNameRows;
-extern SDLRPCParameterName const SDLRPCParameterNameRowSpan;
-extern SDLRPCParameterName const SDLRPCParameterNameRPCName;
-extern SDLRPCParameterName const SDLRPCParameterNameRPCSpecVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameRPM;
-extern SDLRPCParameterName const SDLRPCParameterNameRadioText;
-extern SDLRPCParameterName const SDLRPCParameterNameSamplingRate;
-extern SDLRPCParameterName const SDLRPCParameterNameSatellites;
-extern SDLRPCParameterName const SDLRPCParameterNameScale;
-extern SDLRPCParameterName const SDLRPCParameterNameScreenParams;
-extern SDLRPCParameterName const SDLRPCParameterNameScrollableMessageBody;
-extern SDLRPCParameterName const SDLRPCParameterNameSDLVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameSearchAddress;
-extern SDLRPCParameterName const SDLRPCParameterNameSeatControlData;
-extern SDLRPCParameterName const SDLRPCParameterNameSeatControlCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameSeatLocation;
-extern SDLRPCParameterName const SDLRPCParameterNameSeatLocationCapability;
-extern SDLRPCParameterName const SDLRPCParameterNameSeats;
-extern SDLRPCParameterName const SDLRPCParameterNameSecondaryColor;
-extern SDLRPCParameterName const SDLRPCParameterNameSecondaryGraphic;
-extern SDLRPCParameterName const SDLRPCParameterNameSecondaryImage;
-extern SDLRPCParameterName const SDLRPCParameterNameSecondaryText;
-extern SDLRPCParameterName const SDLRPCParameterNameSecond;
-extern SDLRPCParameterName const SDLRPCParameterNameSeconds;
-extern SDLRPCParameterName const SDLRPCParameterNameSendLocationEnabled;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceActive;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceArea;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceData;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceIcon;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceID;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceManifest;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceName;
-extern SDLRPCParameterName const SDLRPCParameterNameServicePublished;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceSpecificResult;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceType;
-extern SDLRPCParameterName const SDLRPCParameterNameServiceUri;
-extern SDLRPCParameterName const SDLRPCParameterNameSeverity;
-extern SDLRPCParameterName const SDLRPCParameterNameShifted;
-extern SDLRPCParameterName const SDLRPCParameterNameShortPress;
-extern SDLRPCParameterName const SDLRPCParameterNameShortPressAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameSignalLevelStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameSignalChangeThreshold;
-extern SDLRPCParameterName const SDLRPCParameterNameSignalChangeThresholdAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameSignalStrength;
-extern SDLRPCParameterName const SDLRPCParameterNameSignalStrengthAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameSiriusXMRadioAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameSISData;
-extern SDLRPCParameterName const SDLRPCParameterNameSISDataAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameSliderFooter;
-extern SDLRPCParameterName const SDLRPCParameterNameSliderHeader;
-extern SDLRPCParameterName const SDLRPCParameterNameSliderPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameSoftButtonCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameSoftButtonId;
-extern SDLRPCParameterName const SDLRPCParameterNameSoftButtons;
-extern SDLRPCParameterName const SDLRPCParameterNameSource;
-extern SDLRPCParameterName const SDLRPCParameterNameSourceAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameSpaceAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameSpeechCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameSpeed;
-extern SDLRPCParameterName const SDLRPCParameterNameRGBColorSpaceAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameStartTime;
-extern SDLRPCParameterName const SDLRPCParameterNameState;
-extern SDLRPCParameterName const SDLRPCParameterNameStateAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameStateOfCharge;
-extern SDLRPCParameterName const SDLRPCParameterNameStationIDNumber;
-extern SDLRPCParameterName const SDLRPCParameterNameStationLongName;
-extern SDLRPCParameterName const SDLRPCParameterNameStationLocation;
-extern SDLRPCParameterName const SDLRPCParameterNameStationMessage;
-extern SDLRPCParameterName const SDLRPCParameterNameStationShortName;
-extern SDLRPCParameterName const SDLRPCParameterNameStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameStatusAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameStatusBar;
-extern SDLRPCParameterName const SDLRPCParameterNameSteeringWheelAngle;
-extern SDLRPCParameterName const SDLRPCParameterNameStereoAudioOutputMuted;
-extern SDLRPCParameterName const SDLRPCParameterNameSubAdministrativeArea;
-extern SDLRPCParameterName const SDLRPCParameterNameSubLocality;
-extern SDLRPCParameterName const SDLRPCParameterNameSubscribe;
-extern SDLRPCParameterName const SDLRPCParameterNameSubThoroughfare;
-extern SDLRPCParameterName const SDLRPCParameterNameSuccess;
-extern SDLRPCParameterName const SDLRPCParameterNameSummary;
-extern SDLRPCParameterName const SDLRPCParameterNameSupportedDiagnosticModes;
-extern SDLRPCParameterName const SDLRPCParameterNameSupportedFormats;
-extern SDLRPCParameterName const SDLRPCParameterNameSupportedLights;
-extern SDLRPCParameterName const SDLRPCParameterNameSyncFileName;
-extern SDLRPCParameterName const SDLRPCParameterNameSyncMessageVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameSystemAction;
-extern SDLRPCParameterName const SDLRPCParameterNameSystemCapability;
-extern SDLRPCParameterName const SDLRPCParameterNameSystemCapabilityType;
-extern SDLRPCParameterName const SDLRPCParameterNameSystemContext;
-extern SDLRPCParameterName const SDLRPCParameterNameSystemFile;
-extern SDLRPCParameterName const SDLRPCParameterNameSystemSoftwareVersion;
-extern SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackDuration;
-extern SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackProgress;
-extern SDLRPCParameterName const SDLRPCParameterNameTrafficAnnouncementIdentification;
-extern SDLRPCParameterName const SDLRPCParameterNameTargetId;
-extern SDLRPCParameterName const SDLRPCParameterNameTemperatureHigh;
-extern SDLRPCParameterName const SDLRPCParameterNameTemperatureLow;
-extern SDLRPCParameterName const SDLRPCParameterNameTemperatureUnit;
-extern SDLRPCParameterName const SDLRPCParameterNameTemperatureUnitAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameTemplate;
-extern SDLRPCParameterName const SDLRPCParameterNameTemplateConfiguration;
-extern SDLRPCParameterName const SDLRPCParameterNameTemplatesAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameTemplateTitle;
-extern SDLRPCParameterName const SDLRPCParameterNameTertiaryText;
-extern SDLRPCParameterName const SDLRPCParameterNameText;
-extern SDLRPCParameterName const SDLRPCParameterNameTextFields;
-extern SDLRPCParameterName const SDLRPCParameterNameTextMessageAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameTextSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameThoroughfare;
-extern SDLRPCParameterName const SDLRPCParameterNameTime;
-extern SDLRPCParameterName const SDLRPCParameterNameTimeIssued;
-extern SDLRPCParameterName const SDLRPCParameterNameTimeout;
-extern SDLRPCParameterName const SDLRPCParameterNameTimeoutCapitalized;
-extern SDLRPCParameterName const SDLRPCParameterNameTimeoutPrompt;
-extern SDLRPCParameterName const SDLRPCParameterNameTS;
-extern SDLRPCParameterName const SDLRPCParameterNameTimeStamp;
-extern SDLRPCParameterName const SDLRPCParameterNameTimeToDestination;
-extern SDLRPCParameterName const SDLRPCParameterNameTimezoneHourOffset;
-extern SDLRPCParameterName const SDLRPCParameterNameTimezoneMinuteOffset;
-extern SDLRPCParameterName const SDLRPCParameterNameTirePressure;
-extern SDLRPCParameterName const SDLRPCParameterNameTitle;
-extern SDLRPCParameterName const SDLRPCParameterNameTotalDistance;
-extern SDLRPCParameterName const SDLRPCParameterNameTouchEventAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameTPMS;
-extern SDLRPCParameterName const SDLRPCParameterNameTrafficProgramIdentification;
-extern SDLRPCParameterName const SDLRPCParameterNameTriggerSource;
-extern SDLRPCParameterName const SDLRPCParameterNameTrim;
-extern SDLRPCParameterName const SDLRPCParameterNameTryAgainTime;
-extern SDLRPCParameterName const SDLRPCParameterNameTTSChunks;
-extern SDLRPCParameterName const SDLRPCParameterNameTTSName;
-extern SDLRPCParameterName const SDLRPCParameterNameTurnIcon;
-extern SDLRPCParameterName const SDLRPCParameterNameTurnList;
-extern SDLRPCParameterName const SDLRPCParameterNameTurnSignal;
-extern SDLRPCParameterName const SDLRPCParameterNameType;
-extern SDLRPCParameterName const SDLRPCParameterNameUnit;
-extern SDLRPCParameterName const SDLRPCParameterNameUnsubscribe;
-extern SDLRPCParameterName const SDLRPCParameterNameUpdatedAppServiceRecord;
-extern SDLRPCParameterName const SDLRPCParameterNameUpdateMode;
-extern SDLRPCParameterName const SDLRPCParameterNameUpdateReason;
-extern SDLRPCParameterName const SDLRPCParameterNameUpDownAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameURL;
-extern SDLRPCParameterName const SDLRPCParameterNameURLUppercase;
-extern SDLRPCParameterName const SDLRPCParameterNameUserDisallowed;
-extern SDLRPCParameterName const SDLRPCParameterNameUserLocation;
-extern SDLRPCParameterName const SDLRPCParameterNameUserSelected;
-extern SDLRPCParameterName const SDLRPCParameterNameUTCDay;
-extern SDLRPCParameterName const SDLRPCParameterNameUTCHours;
-extern SDLRPCParameterName const SDLRPCParameterNameUTCMinutes;
-extern SDLRPCParameterName const SDLRPCParameterNameUTCMonth;
-extern SDLRPCParameterName const SDLRPCParameterNameUTCSeconds;
-extern SDLRPCParameterName const SDLRPCParameterNameUTCYear;
-extern SDLRPCParameterName const SDLRPCParameterNameValue;
-extern SDLRPCParameterName const SDLRPCParameterNameVDOP;
-extern SDLRPCParameterName const SDLRPCParameterNameVehicleType;
-extern SDLRPCParameterName const SDLRPCParameterNameVerticalPosition;
-extern SDLRPCParameterName const SDLRPCParameterNameVerticalPositionAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameVideoCodec;
-extern SDLRPCParameterName const SDLRPCParameterNameVideoProtocol;
-extern SDLRPCParameterName const SDLRPCParameterNameVideoStreaming;
-extern SDLRPCParameterName const SDLRPCParameterNameVideoStreamingCapability;
-extern SDLRPCParameterName const SDLRPCParameterNameVideoStreamingState;
-extern SDLRPCParameterName const SDLRPCParameterNameVisibility;
-extern SDLRPCParameterName const SDLRPCParameterNameVentilationMode;
-extern SDLRPCParameterName const SDLRPCParameterNameVentilationModeAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameVIN;
-extern SDLRPCParameterName const SDLRPCParameterNameVoiceRecognitionOn;
-extern SDLRPCParameterName const SDLRPCParameterNameVolume;
-extern SDLRPCParameterName const SDLRPCParameterNameVolumeAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameVRCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameVRCommands;
-extern SDLRPCParameterName const SDLRPCParameterNameVRHelp;
-extern SDLRPCParameterName const SDLRPCParameterNameVRHelpTitle;
-extern SDLRPCParameterName const SDLRPCParameterNameVRSynonyms;
-extern SDLRPCParameterName const SDLRPCParameterNameWayPoints;
-extern SDLRPCParameterName const SDLRPCParameterNameWayPointType;
-extern SDLRPCParameterName const SDLRPCParameterNameWeatherForLocationSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameWeatherIcon;
-extern SDLRPCParameterName const SDLRPCParameterNameWeatherServiceData;
-extern SDLRPCParameterName const SDLRPCParameterNameWeatherServiceManifest;
-extern SDLRPCParameterName const SDLRPCParameterNameWeatherSummary;
-extern SDLRPCParameterName const SDLRPCParameterNameWidth;
-extern SDLRPCParameterName const SDLRPCParameterNameWindBearing;
-extern SDLRPCParameterName const SDLRPCParameterNameWindGust;
-extern SDLRPCParameterName const SDLRPCParameterNameWindSpeed;
-extern SDLRPCParameterName const SDLRPCParameterNameWiperStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameWindowCapabilities;
-extern SDLRPCParameterName const SDLRPCParameterNameWindowId;
-extern SDLRPCParameterName const SDLRPCParameterNameWindowName;
-extern SDLRPCParameterName const SDLRPCParameterNameWindowTypeSupported;
-extern SDLRPCParameterName const SDLRPCParameterNameX;
-extern SDLRPCParameterName const SDLRPCParameterNameY;
-extern SDLRPCParameterName const SDLRPCParameterNameYear;
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRPCParameterNames.m b/SmartDeviceLink/SDLRPCParameterNames.m
deleted file mode 100644
index 85a88b1d4..000000000
--- a/SmartDeviceLink/SDLRPCParameterNames.m
+++ /dev/null
@@ -1,723 +0,0 @@
-// SDLRPCParameterNames.h
-//
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-SDLRPCParameterName const SDLRPCParameterNameACEnable = @"acEnable";
-SDLRPCParameterName const SDLRPCParameterNameACEnableAvailable = @"acEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameACMaxEnable = @"acMaxEnable";
-SDLRPCParameterName const SDLRPCParameterNameACMaxEnableAvailable = @"acMaxEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameAccelerationPedalPosition = @"accPedalPosition";
-SDLRPCParameterName const SDLRPCParameterNameAcceptsWayPoints = @"acceptsWayPoints";
-SDLRPCParameterName const SDLRPCParameterNameAction = @"action";
-SDLRPCParameterName const SDLRPCParameterNameActual = @"actual";
-SDLRPCParameterName const SDLRPCParameterNameAddress = @"address";
-SDLRPCParameterName const SDLRPCParameterNameAddressLines = @"addressLines";
-SDLRPCParameterName const SDLRPCParameterNameAdministrativeArea = @"administrativeArea";
-SDLRPCParameterName const SDLRPCParameterNameAirbagStatus = @"airbagStatus";
-SDLRPCParameterName const SDLRPCParameterNameAlertIcon = @"alertIcon";
-SDLRPCParameterName const SDLRPCParameterNameAlerts = @"alerts";
-SDLRPCParameterName const SDLRPCParameterNameAlertText1 = @"alertText1";
-SDLRPCParameterName const SDLRPCParameterNameAlertText2 = @"alertText2";
-SDLRPCParameterName const SDLRPCParameterNameAlertText3 = @"alertText3";
-SDLRPCParameterName const SDLRPCParameterNameAlignment = @"alignment";
-SDLRPCParameterName const SDLRPCParameterNameAllowAppConsumers = @"allowAppConsumers";
-SDLRPCParameterName const SDLRPCParameterNameAllowed = @"allowed";
-SDLRPCParameterName const SDLRPCParameterNameAllowMultipleAccess = @"allowMultipleAccess";
-SDLRPCParameterName const SDLRPCParameterNameAllocatedModules = @"allocatedModules";
-SDLRPCParameterName const SDLRPCParameterNameAltitude = @"altitude";
-SDLRPCParameterName const SDLRPCParameterNameAltitudeMeters = @"altitudeMeters";
-SDLRPCParameterName const SDLRPCParameterNameAmbientLightSensorStatus = @"ambientLightSensorStatus";
-SDLRPCParameterName const SDLRPCParameterNameAmbientLightStatus = @"ambientLightStatus";
-SDLRPCParameterName const SDLRPCParameterNameApparentTemperature = @"apparentTemperature";
-SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureHigh = @"apparentTemperatureHigh";
-SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureLow = @"apparentTemperatureLow";
-SDLRPCParameterName const SDLRPCParameterNameAppBundleId = @"appBundleID";
-SDLRPCParameterName const SDLRPCParameterNameAppHMIType = @"appHMIType";
-SDLRPCParameterName const SDLRPCParameterNameAppId = @"appID";
-SDLRPCParameterName const SDLRPCParameterNameAppInfo = @"appInfo";
-SDLRPCParameterName const SDLRPCParameterNameAppName = @"appName";
-SDLRPCParameterName const SDLRPCParameterNameAppServiceId = @"appServiceId";
-SDLRPCParameterName const SDLRPCParameterNameAppServiceManifest = @"appServiceManifest";
-SDLRPCParameterName const SDLRPCParameterNameAppServiceRecord = @"appServiceRecord";
-SDLRPCParameterName const SDLRPCParameterNameAppServices = @"appServices";
-SDLRPCParameterName const SDLRPCParameterNameAppServicesCapabilities = @"appServicesCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameAppDisplayName = @"appDisplayName";
-SDLRPCParameterName const SDLRPCParameterNameAppVersion = @"appVersion";
-SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities = @"audioControlCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameAudioControlData = @"audioControlData";
-SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType = @"associatedServiceType";
-SDLRPCParameterName const SDLRPCParameterNameAudioPassThruCapabilities = @"audioPassThruCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText1 = @"audioPassThruDisplayText1";
-SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2 = @"audioPassThruDisplayText2";
-SDLRPCParameterName const SDLRPCParameterNameAudioStreamingIndicator = @"audioStreamingIndicator";
-SDLRPCParameterName const SDLRPCParameterNameAudioStreamingState = @"audioStreamingState";
-SDLRPCParameterName const SDLRPCParameterNameAudioType = @"audioType";
-SDLRPCParameterName const SDLRPCParameterNameAuthToken = @"authToken";
-SDLRPCParameterName const SDLRPCParameterNameAutoCompleteList = @"autoCompleteList";
-SDLRPCParameterName const SDLRPCParameterNameAutoCompleteText = @"autoCompleteText";
-SDLRPCParameterName const SDLRPCParameterNameAutoModeEnable = @"autoModeEnable";
-SDLRPCParameterName const SDLRPCParameterNameAutoModeEnableAvailable = @"autoModeEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameAuxECallNotificationStatus = @"auxECallNotificationStatus";
-SDLRPCParameterName const SDLRPCParameterNameAvailableHDs = @"availableHDs";
-SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannels = @"availableHDChannels";
-SDLRPCParameterName const SDLRPCParameterNameAvailableHDsAvailable = @"availableHDsAvailable";
-SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannelsAvailable = @"availableHDChannelsAvailable";
-SDLRPCParameterName const SDLRPCParameterNameBackgroundColor = @"backgroundColor";
-SDLRPCParameterName const SDLRPCParameterNameBackTiltAngle = @"backTiltAngle";
-SDLRPCParameterName const SDLRPCParameterNameBackTiltAngleAvailable = @"backTiltAngleAvailable";
-SDLRPCParameterName const SDLRPCParameterNameBackVerticalPosition = @"backVerticalPosition";
-SDLRPCParameterName const SDLRPCParameterNameBackVerticalPositionAvailable = @"backVerticalPositionAvailable";
-SDLRPCParameterName const SDLRPCParameterNameBand = @"band";
-SDLRPCParameterName const SDLRPCParameterNameBatteryLevelStatus = @"battLevelStatus";
-SDLRPCParameterName const SDLRPCParameterNameBearing = @"bearing";
-SDLRPCParameterName const SDLRPCParameterNameBeltStatus = @"beltStatus";
-SDLRPCParameterName const SDLRPCParameterNameBitsPerSample = @"bitsPerSample";
-SDLRPCParameterName const SDLRPCParameterNameBodyInformation = @"bodyInformation";
-SDLRPCParameterName const SDLRPCParameterNameBlue = @"blue";
-SDLRPCParameterName const SDLRPCParameterNameBluetoothIconOn = @"btIconOn";
-SDLRPCParameterName const SDLRPCParameterNameBulkData = @"bulkData";
-SDLRPCParameterName const SDLRPCParameterNameButtonCapabilities = @"buttonCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameButtonEventMode = @"buttonEventMode";
-SDLRPCParameterName const SDLRPCParameterNameButtonName = @"buttonName";
-SDLRPCParameterName const SDLRPCParameterNameButtonPressMode = @"buttonPressMode";
-SDLRPCParameterName const SDLRPCParameterNameCancelID = @"cancelID";
-SDLRPCParameterName const SDLRPCParameterNameCoolingEnabled = @"coolingEnabled";
-SDLRPCParameterName const SDLRPCParameterNameCoolingEnabledAvailable = @"coolingEnabledAvailable";
-SDLRPCParameterName const SDLRPCParameterNameCoolingLevel = @"coolingLevel";
-SDLRPCParameterName const SDLRPCParameterNameCoolingLevelAvailable = @"coolingLevelAvailable";
-SDLRPCParameterName const SDLRPCParameterNameCoordinate = @"c";
-SDLRPCParameterName const SDLRPCParameterNameCallActive = @"callActive";
-SDLRPCParameterName const SDLRPCParameterNameCarModeStatus = @"carModeStatus";
-SDLRPCParameterName const SDLRPCParameterNameCarrier = @"carrier";
-SDLRPCParameterName const SDLRPCParameterNameChannelId = @"channelId";
-SDLRPCParameterName const SDLRPCParameterNameChannelName = @"channelName";
-SDLRPCParameterName const SDLRPCParameterNameChannelSetting = @"channelSetting";
-SDLRPCParameterName const SDLRPCParameterNameCharacterSet = @"characterSet";
-SDLRPCParameterName const SDLRPCParameterNameChoiceId = @"choiceID";
-SDLRPCParameterName const SDLRPCParameterNameChoiceSet = @"choiceSet";
-SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnable = @"circulateAirEnable";
-SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnableAvailable = @"circulateAirEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameClimateControlData = @"climateControlData";
-SDLRPCParameterName const SDLRPCParameterNameClimateControlCapabilities = @"climateControlCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameCloudCover = @"cloudCover";
-SDLRPCParameterName const SDLRPCParameterNameClusterModes = @"clusterModes";
-SDLRPCParameterName const SDLRPCParameterNameClusterModeStatus = @"clusterModeStatus";
-SDLRPCParameterName const SDLRPCParameterNameColor = @"color";
-SDLRPCParameterName const SDLRPCParameterNameCol = @"col";
-SDLRPCParameterName const SDLRPCParameterNameColSpan = @"colspan";
-SDLRPCParameterName const SDLRPCParameterNameColumns = @"columns";
-SDLRPCParameterName const SDLRPCParameterNameCommandIcon = @"cmdIcon";
-SDLRPCParameterName const SDLRPCParameterNameCommandId = @"cmdID";
-SDLRPCParameterName const SDLRPCParameterNameCompassDirection = @"compassDirection";
-SDLRPCParameterName const SDLRPCParameterNameCorrelationId = @"correlationID";
-SDLRPCParameterName const SDLRPCParameterNameCountryCode = @"countryCode";
-SDLRPCParameterName const SDLRPCParameterNameCountryName = @"countryName";
-SDLRPCParameterName const SDLRPCParameterNameCRC = @"crc";
-SDLRPCParameterName const SDLRPCParameterNameClockText = @"CT";
-SDLRPCParameterName const SDLRPCParameterNameCloudAppVehicleID = @"cloudAppVehicleID";
-SDLRPCParameterName const SDLRPCParameterNameCloudTransportType = @"cloudTransportType";
-SDLRPCParameterName const SDLRPCParameterNameCurrentForecast = @"currentForecast";
-SDLRPCParameterName const SDLRPCParameterNameCurrentForecastSupported = @"currentForecastSupported";
-SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature = @"currentTemperature";
-SDLRPCParameterName const SDLRPCParameterNameCushion = @"cushion";
-SDLRPCParameterName const SDLRPCParameterNameCustomButtonId = @"customButtonID";
-SDLRPCParameterName const SDLRPCParameterNameCustomPresets = @"customPresets";
-SDLRPCParameterName const SDLRPCParameterNameData = @"data";
-SDLRPCParameterName const SDLRPCParameterNameDataResult = @"dataResult";
-SDLRPCParameterName const SDLRPCParameterNameDataType = @"dataType";
-SDLRPCParameterName const SDLRPCParameterNameDay = @"day";
-SDLRPCParameterName const SDLRPCParameterNameDayColorScheme = @"dayColorScheme";
-SDLRPCParameterName const SDLRPCParameterNameDefrostZone = @"defrostZone";
-SDLRPCParameterName const SDLRPCParameterNameDefrostZoneAvailable = @"defrostZoneAvailable";
-SDLRPCParameterName const SDLRPCParameterNameDeliveryMode = @"deliveryMode";
-SDLRPCParameterName const SDLRPCParameterNameDensity = @"density";
-SDLRPCParameterName const SDLRPCParameterNameDensityAvailable = @"densityAvailable";
-SDLRPCParameterName const SDLRPCParameterNameDesiredTemperature = @"desiredTemperature";
-SDLRPCParameterName const SDLRPCParameterNameDesiredTemperatureAvailable = @"desiredTemperatureAvailable";
-SDLRPCParameterName const SDLRPCParameterNameDestination = @"destination";
-SDLRPCParameterName const SDLRPCParameterNameDestinationETA = @"destinationETA";
-SDLRPCParameterName const SDLRPCParameterNameDeviceInfo = @"deviceInfo";
-SDLRPCParameterName const SDLRPCParameterNameDeviceStatus = @"deviceStatus";
-SDLRPCParameterName const SDLRPCParameterNameDetails = @"details";
-SDLRPCParameterName const SDLRPCParameterNameDiagonalScreenSize = @"diagonalScreenSize";
-SDLRPCParameterName const SDLRPCParameterNameDialNumberEnabled = @"dialNumberEnabled";
-SDLRPCParameterName const SDLRPCParameterNameDIDLocation = @"didLocation";
-SDLRPCParameterName const SDLRPCParameterNameDIDResult = @"didResult";
-SDLRPCParameterName const SDLRPCParameterNameDimension = @"dimension";
-SDLRPCParameterName const SDLRPCParameterNameDisplays = @"displays";
-SDLRPCParameterName const SDLRPCParameterNameDisplayCapabilities = @"displayCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameDisplayLayout = @"displayLayout";
-SDLRPCParameterName const SDLRPCParameterNameDisplayMode = @"displayMode";
-SDLRPCParameterName const SDLRPCParameterNameDisplayModeUnitAvailable = @"displayModeUnitAvailable";
-SDLRPCParameterName const SDLRPCParameterNameDisplayType = @"displayType";
-SDLRPCParameterName const SDLRPCParameterNameDistanceToEmpty = @"distanceToEmpty";
-SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuver = @"distanceToManeuver";
-SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuverScale = @"distanceToManeuverScale";
-SDLRPCParameterName const SDLRPCParameterNameDistanceUnitAvailable = @"distanceUnitAvailable";
-SDLRPCParameterName const SDLRPCParameterNameDistanceUnit = @"distanceUnit";
-SDLRPCParameterName const SDLRPCParameterNameDoublePressAvailable = @"doublePressAvailable";
-SDLRPCParameterName const SDLRPCParameterNameDriverAirbagDeployed = @"driverAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNameDriverBeltDeployed = @"driverBeltDeployed";
-SDLRPCParameterName const SDLRPCParameterNameDriverBraking = @"driverBraking";
-SDLRPCParameterName const SDLRPCParameterNameDriverBuckleBelted = @"driverBuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameDriverCurtainAirbagDeployed = @"driverCurtainAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNameDriverDistractionStatus = @"driverDistractionStatus";
-SDLRPCParameterName const SDLRPCParameterNameDriverDoorAjar = @"driverDoorAjar";
-SDLRPCParameterName const SDLRPCParameterNameDriverKneeAirbagDeployed = @"driverKneeAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNameDriverSideAirbagDeployed = @"driverSideAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNameDrivingSide = @"drivingSide";
-SDLRPCParameterName const SDLRPCParameterNameDTC = @"dtc";
-SDLRPCParameterName const SDLRPCParameterNameDTCMask = @"dtcMask";
-SDLRPCParameterName const SDLRPCParameterNameDualModeEnable = @"dualModeEnable";
-SDLRPCParameterName const SDLRPCParameterNameDualModeEnableAvailable = @"dualModeEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameDuration = @"duration";
-SDLRPCParameterName const SDLRPCParameterNameDuplicateUpdatesFromWindowID = @"duplicateUpdatesFromWindowID";
-SDLRPCParameterName const SDLRPCParameterNameE911Override = @"e911Override";
-SDLRPCParameterName const SDLRPCParameterNameECallConfirmationStatus = @"eCallConfirmationStatus";
-SDLRPCParameterName const SDLRPCParameterNameECallEventActive = @"eCallEventActive";
-SDLRPCParameterName const SDLRPCParameterNameECallInfo = @"eCallInfo";
-SDLRPCParameterName const SDLRPCParameterNameECallNotificationStatus = @"eCallNotificationStatus";
-SDLRPCParameterName const SDLRPCParameterNameECUHeader = @"ecuHeader";
-SDLRPCParameterName const SDLRPCParameterNameECUName = @"ecuName";
-SDLRPCParameterName const SDLRPCParameterNameElectronicParkBrakeStatus = @"electronicParkBrakeStatus";
-SDLRPCParameterName const SDLRPCParameterNameEmergencyEvent = @"emergencyEvent";
-SDLRPCParameterName const SDLRPCParameterNameEmergencyEventType = @"emergencyEventType";
-SDLRPCParameterName const SDLRPCParameterNameEnabled = @"enabled";
-SDLRPCParameterName const SDLRPCParameterNameEndpoint = @"endpoint";
-SDLRPCParameterName const SDLRPCParameterNameEndTime = @"endTime";
-SDLRPCParameterName const SDLRPCParameterNameEngineOilLife = @"engineOilLife";
-SDLRPCParameterName const SDLRPCParameterNameEngineTorque = @"engineTorque";
-SDLRPCParameterName const SDLRPCParameterNameEqualizerAvailable = @"equalizerAvailable";
-SDLRPCParameterName const SDLRPCParameterNameEqualizerMaxChannelId = @"equalizerMaxChannelId";
-SDLRPCParameterName const SDLRPCParameterNameEqualizerSettings = @"equalizerSettings";;
-SDLRPCParameterName const SDLRPCParameterNameETA = @"eta";
-SDLRPCParameterName const SDLRPCParameterNameEvent = @"event";
-SDLRPCParameterName const SDLRPCParameterNameExpires = @"expires";
-SDLRPCParameterName const SDLRPCParameterNameExternalTemperature = @"externalTemperature";
-SDLRPCParameterName const SDLRPCParameterNameFanSpeed = @"fanSpeed";
-SDLRPCParameterName const SDLRPCParameterNameFanSpeedAvailable = @"fanSpeedAvailable";
-SDLRPCParameterName const SDLRPCParameterNameFCCFacilityId = @"fccFacilityId";
-SDLRPCParameterName const SDLRPCParameterNameFilename = @"fileName";
-SDLRPCParameterName const SDLRPCParameterNameFilenames = @"filenames";
-SDLRPCParameterName const SDLRPCParameterNameFileType = @"fileType";
-SDLRPCParameterName const SDLRPCParameterNameFirmness = @"firmness";
-SDLRPCParameterName const SDLRPCParameterNameFirmwareRevision = @"firmwareRev";
-SDLRPCParameterName const SDLRPCParameterNameFreeModules = @"freeModules";
-SDLRPCParameterName const SDLRPCParameterNameFrequencyInteger = @"frequencyInteger";
-SDLRPCParameterName const SDLRPCParameterNameFrequencyFraction = @"frequencyFraction";
-SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPosition = @"frontVerticalPosition";
-SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPositionAvailable = @"frontVerticalPositionAvailable";
-SDLRPCParameterName const SDLRPCParameterNameFuelCutoffStatus = @"fuelCutoffStatus";
-SDLRPCParameterName const SDLRPCParameterNameFuelLevel = @"fuelLevel";
-SDLRPCParameterName const SDLRPCParameterNameFuelLevelState = @"fuelLevel_State";
-SDLRPCParameterName const SDLRPCParameterNameFuelMaintenanceMode = @"fuelMaintenanceMode";
-SDLRPCParameterName const SDLRPCParameterNameFuelRange = @"fuelRange";
-SDLRPCParameterName const SDLRPCParameterNameFunctionID = @"functionID";
-SDLRPCParameterName const SDLRPCParameterNameFullAppID = @"fullAppID";
-SDLRPCParameterName const SDLRPCParameterNameGetWayPointsEnabled = @"getWayPointsEnabled";
-SDLRPCParameterName const SDLRPCParameterNameGPS = @"gps";
-SDLRPCParameterName const SDLRPCParameterNameGraphic = @"graphic";
-SDLRPCParameterName const SDLRPCParameterNameGraphicSupported = @"graphicSupported";
-SDLRPCParameterName const SDLRPCParameterNameGreen = @"green";
-SDLRPCParameterName const SDLRPCParameterNameGrid = @"grid";
-SDLRPCParameterName const SDLRPCParameterNameHandledRPCs = @"handledRPCs";
-SDLRPCParameterName const SDLRPCParameterNameHapticRectData = @"hapticRectData";
-SDLRPCParameterName const SDLRPCParameterNameHapticSpatialDataSupported = @"hapticSpatialDataSupported";
-SDLRPCParameterName const SDLRPCParameterNameHardware = @"hardware";
-SDLRPCParameterName const SDLRPCParameterNameHashId = @"hashID";
-SDLRPCParameterName const SDLRPCParameterNameHDChannel = @"hdChannel";
-SDLRPCParameterName const SDLRPCParameterNameHDChannelAvailable = @"hdChannelAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHDOP = @"hdop";
-SDLRPCParameterName const SDLRPCParameterNameHDRadioEnable = @"hdRadioEnable";
-SDLRPCParameterName const SDLRPCParameterNameHDRadioEnableAvailable = @"hdRadioEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeading = @"heading";
-SDLRPCParameterName const SDLRPCParameterNameHeadLampStatus = @"headLampStatus";
-SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPosition = @"headSupportHorizontalPosition";
-SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPositionAvailable = @"headSupportHorizontalPositionAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPosition = @"headSupportVerticalPosition";
-SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPositionAvailable = @"headSupportVerticalPositionAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeatingLevel = @"heatingLevel";
-SDLRPCParameterName const SDLRPCParameterNameHeatingLevelAvailable = @"heatingLevelAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeatingEnabled = @"heatingEnabled";
-SDLRPCParameterName const SDLRPCParameterNameHeatingEnabledAvailable = @"heatingEnabledAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelAvailable = @"heatedSteeringWheelAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldAvailable = @"heatedWindshieldAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowAvailable = @"heatedRearWindowAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsAvailable = @"heatedMirrorsAvailable";
-SDLRPCParameterName const SDLRPCParameterNameClimateEnable = @"climateEnable";
-SDLRPCParameterName const SDLRPCParameterNameClimateEnableAvailable = @"climateEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelEnable = @"heatedSteeringWheelEnable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldEnable = @"heatedWindshieldEnable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowEnable = @"heatedRearWindowEnable";
-SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsEnable = @"heatedMirrorsEnable";
-SDLRPCParameterName const SDLRPCParameterNameHeight = @"height";
-SDLRPCParameterName const SDLRPCParameterNameHelpPrompt = @"helpPrompt";
-SDLRPCParameterName const SDLRPCParameterNameHighBeamsOn = @"highBeamsOn";
-SDLRPCParameterName const SDLRPCParameterNameHMICapabilities = @"hmiCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlData = @"hmiSettingsControlData";
-SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguage = @"hmiDisplayLanguage";
-SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguageDesired = @"hmiDisplayLanguageDesired";
-SDLRPCParameterName const SDLRPCParameterNameHMILevel = @"hmiLevel";
-SDLRPCParameterName const SDLRPCParameterNameHMILevelLowercase = @"hmilevel";
-SDLRPCParameterName const SDLRPCParameterNameHMIPermissions = @"hmiPermissions";
-SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlCapabilities = @"hmiSettingsControlCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameHMIZoneCapabilities = @"hmiZoneCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameHorizontalPosition = @"horizontalPosition";
-SDLRPCParameterName const SDLRPCParameterNameHorizontalPositionAvailable = @"horizontalPositionAvailable";
-SDLRPCParameterName const SDLRPCParameterNameHour = @"hour";
-SDLRPCParameterName const SDLRPCParameterNameHourlyForecast = @"hourlyForecast";
-SDLRPCParameterName const SDLRPCParameterNameHours = @"hours";
-SDLRPCParameterName const SDLRPCParameterNameHumidity = @"humidity";
-SDLRPCParameterName const SDLRPCParameterNameHybridAppPreference = @"hybridAppPreference";
-SDLRPCParameterName const SDLRPCParameterNameIconResumed = @"iconResumed";
-SDLRPCParameterName const SDLRPCParameterNameId = @"id";
-SDLRPCParameterName const SDLRPCParameterNameIgnitionStableStatus = @"ignitionStableStatus";
-SDLRPCParameterName const SDLRPCParameterNameIgnitionStatus = @"ignitionStatus";
-SDLRPCParameterName const SDLRPCParameterNameImage = @"image";
-SDLRPCParameterName const SDLRPCParameterNameImageFields = @"imageFields";
-SDLRPCParameterName const SDLRPCParameterNameImageResolution = @"imageResolution";
-SDLRPCParameterName const SDLRPCParameterNameImageSupported = @"imageSupported";
-SDLRPCParameterName const SDLRPCParameterNameImageTemplate = @"isTemplate";
-SDLRPCParameterName const SDLRPCParameterNameImageType = @"imageType";
-SDLRPCParameterName const SDLRPCParameterNameImageTypeSupported = @"imageTypeSupported";
-SDLRPCParameterName const SDLRPCParameterNameInfo = @"info";
-SDLRPCParameterName const SDLRPCParameterNameInitialPrompt = @"initialPrompt";
-SDLRPCParameterName const SDLRPCParameterNameInitialText = @"initialText";
-SDLRPCParameterName const SDLRPCParameterNameInnerLeftRear = @"innerLeftRear";
-SDLRPCParameterName const SDLRPCParameterNameInnerRightRear = @"innerRightRear";
-SDLRPCParameterName const SDLRPCParameterNameInstantFuelConsumption = @"instantFuelConsumption";
-SDLRPCParameterName const SDLRPCParameterNameInstructions = @"instructions";
-SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetId = @"interactionChoiceSetID";
-SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetIdList = @"interactionChoiceSetIDList";
-SDLRPCParameterName const SDLRPCParameterNameInteractionLayout = @"interactionLayout";
-SDLRPCParameterName const SDLRPCParameterNameInteractionMode = @"interactionMode";
-SDLRPCParameterName const SDLRPCParameterNameIsExplicit = @"isExplicit";
-SDLRPCParameterName const SDLRPCParameterNameIsHighlighted = @"isHighlighted";
-SDLRPCParameterName const SDLRPCParameterNameIsMediaApplication = @"isMediaApplication";
-SDLRPCParameterName const SDLRPCParameterNameIsSubscribed = @"isSubscribed";
-SDLRPCParameterName const SDLRPCParameterNameJunctionType = @"junctionType";
-SDLRPCParameterName const SDLRPCParameterNameKeepContext = @"keepContext";
-SDLRPCParameterName const SDLRPCParameterNameKeepContextAvailable = @"keepContextAvailable";
-SDLRPCParameterName const SDLRPCParameterNameKeyboardLayout = @"keyboardLayout";
-SDLRPCParameterName const SDLRPCParameterNameKeyboardProperties = @"keyboardProperties";
-SDLRPCParameterName const SDLRPCParameterNameKeypressMode = @"keypressMode";
-SDLRPCParameterName const SDLRPCParameterNameLabel = @"label";
-SDLRPCParameterName const SDLRPCParameterNameLanguage = @"language";
-SDLRPCParameterName const SDLRPCParameterNameLanguageDesired = @"languageDesired";
-SDLRPCParameterName const SDLRPCParameterNameLatitudeDegrees = @"latitudeDegrees";
-SDLRPCParameterName const SDLRPCParameterNameLeftFront = @"leftFront";
-SDLRPCParameterName const SDLRPCParameterNameLeftRear = @"leftRear";
-SDLRPCParameterName const SDLRPCParameterNameLeftRearInflatableBelted = @"leftRearInflatableBelted";
-SDLRPCParameterName const SDLRPCParameterNameLeftRow2BuckleBelted = @"leftRow2BuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameLeftRow3BuckleBelted = @"leftRow3BuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameLength = @"length";
-SDLRPCParameterName const SDLRPCParameterNameLevel = @"level";
-SDLRPCParameterName const SDLRPCParameterNameLevels = @"levels";
-SDLRPCParameterName const SDLRPCParameterNameLevelSpan = @"levelspan";
-SDLRPCParameterName const SDLRPCParameterNameLightControlCapabilities = @"lightControlCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameLightControlData = @"lightControlData";
-SDLRPCParameterName const SDLRPCParameterNameLightState = @"lightState";
-SDLRPCParameterName const SDLRPCParameterNameLimitedCharacterList = @"limitedCharacterList";
-SDLRPCParameterName const SDLRPCParameterNameLocality = @"locality";
-SDLRPCParameterName const SDLRPCParameterNameLocation = @"location";
-SDLRPCParameterName const SDLRPCParameterNameLocationCoordinate = @"coordinate";
-SDLRPCParameterName const SDLRPCParameterNameLocationDescription = @"locationDescription";
-SDLRPCParameterName const SDLRPCParameterNameLocationDetails = @"locationDetails";
-SDLRPCParameterName const SDLRPCParameterNameLocationImage = @"locationImage";
-SDLRPCParameterName const SDLRPCParameterNameLocationName = @"locationName";
-SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalEnabled = @"lockScreenDismissalEnabled";
-SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalWarning = @"lockScreenDismissalWarning";
-SDLRPCParameterName const SDLRPCParameterNameLongitudeDegrees = @"longitudeDegrees";
-SDLRPCParameterName const SDLRPCParameterNameLongPress = @"longPress";
-SDLRPCParameterName const SDLRPCParameterNameLongPressAvailable = @"longPressAvailable";
-SDLRPCParameterName const SDLRPCParameterNameLowBeamsOn = @"lowBeamsOn";
-SDLRPCParameterName const SDLRPCParameterNameMainField1 = @"mainField1";
-SDLRPCParameterName const SDLRPCParameterNameMainField2 = @"mainField2";
-SDLRPCParameterName const SDLRPCParameterNameMainField3 = @"mainField3";
-SDLRPCParameterName const SDLRPCParameterNameMainField4 = @"mainField4";
-SDLRPCParameterName const SDLRPCParameterNameMajorVersion = @"majorVersion";
-SDLRPCParameterName const SDLRPCParameterNameMake = @"make";
-SDLRPCParameterName const SDLRPCParameterNameManeuverComplete = @"maneuverComplete";
-SDLRPCParameterName const SDLRPCParameterNameManualTextEntry = @"manualTextEntry";
-SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmness = @"massageCushionFirmness";
-SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmnessAvailable = @"massageCushionFirmnessAvailable";
-SDLRPCParameterName const SDLRPCParameterNameMassageEnabled = @"massageEnabled";
-SDLRPCParameterName const SDLRPCParameterNameMassageEnabledAvailable = @"massageEnabledAvailable";
-SDLRPCParameterName const SDLRPCParameterNameMassageMode = @"massageMode";
-SDLRPCParameterName const SDLRPCParameterNameMassageModeAvailable = @"massageModeAvailable";
-SDLRPCParameterName const SDLRPCParameterNameMassageZone = @"massageZone";
-SDLRPCParameterName const SDLRPCParameterNameMaxBitrate = @"maxBitrate";
-SDLRPCParameterName const SDLRPCParameterNameMaxDuration = @"maxDuration";
-SDLRPCParameterName const SDLRPCParameterNameMaxHourlyForecastAmount = @"maxHourlyForecastAmount";
-SDLRPCParameterName const SDLRPCParameterNameMaximumChangeVelocity = @"maximumChangeVelocity";
-SDLRPCParameterName const SDLRPCParameterNameMaximumNumberOfWindows = @"maximumNumberOfWindows";
-SDLRPCParameterName const SDLRPCParameterNameMaxMinutelyForecastAmount = @"maxMinutelyForecastAmount";
-SDLRPCParameterName const SDLRPCParameterNameMaxMultidayForecastAmount = @"maxMultidayForecastAmount";
-SDLRPCParameterName const SDLRPCParameterNameMaxNumberRFCOMMPorts = @"maxNumberRFCOMMPorts";
-SDLRPCParameterName const SDLRPCParameterNameMediaAlbum = @"mediaAlbum";
-SDLRPCParameterName const SDLRPCParameterNameMediaArtist = @"mediaArtist";
-SDLRPCParameterName const SDLRPCParameterNameMediaClock = @"mediaClock";
-SDLRPCParameterName const SDLRPCParameterNameMediaClockFormats = @"mediaClockFormats";
-SDLRPCParameterName const SDLRPCParameterNameMediaServiceData = @"mediaServiceData";
-SDLRPCParameterName const SDLRPCParameterNameMediaServiceManifest = @"mediaServiceManifest";
-SDLRPCParameterName const SDLRPCParameterNameMediaImage = @"mediaImage";
-SDLRPCParameterName const SDLRPCParameterNameMediaTitle = @"mediaTitle";
-SDLRPCParameterName const SDLRPCParameterNameMediaTrack = @"mediaTrack";
-SDLRPCParameterName const SDLRPCParameterNameMediaType = @"mediaType";
-SDLRPCParameterName const SDLRPCParameterNameMemory = @"memory";
-SDLRPCParameterName const SDLRPCParameterNameMemoryAvailable = @"memoryAvailable";
-SDLRPCParameterName const SDLRPCParameterNameMenuIcon = @"menuIcon";
-SDLRPCParameterName const SDLRPCParameterNameMenuId = @"menuID";
-SDLRPCParameterName const SDLRPCParameterNameMenuLayout = @"menuLayout";
-SDLRPCParameterName const SDLRPCParameterNameMenuLayoutsAvailable = @"menuLayoutsAvailable";
-SDLRPCParameterName const SDLRPCParameterNameMenuName = @"menuName";
-SDLRPCParameterName const SDLRPCParameterNameMenuParams = @"menuParams";
-SDLRPCParameterName const SDLRPCParameterNameMenuTitle = @"menuTitle";
-SDLRPCParameterName const SDLRPCParameterNameMessageData = @"messageData";
-SDLRPCParameterName const SDLRPCParameterNameMessageDataResult = @"messageDataResult";
-SDLRPCParameterName const SDLRPCParameterNameMessageLength = @"messageLength";
-SDLRPCParameterName const SDLRPCParameterNameMetadataTags = @"metadataTags";
-SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BeltDeployed = @"middleRow1BeltDeployed";
-SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BuckleBelted = @"middleRow1BuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameMiddleRow2BuckleBelted = @"middleRow2BuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameMiddleRow3BuckleBelted = @"middleRow3BuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameMillisecond = @"millisecond";
-SDLRPCParameterName const SDLRPCParameterNameMinorVersion = @"minorVersion";
-SDLRPCParameterName const SDLRPCParameterNameMinute = @"minute";
-SDLRPCParameterName const SDLRPCParameterNameMinuteForecast = @"minuteForecast";
-SDLRPCParameterName const SDLRPCParameterNameMinutes = @"minutes";
-SDLRPCParameterName const SDLRPCParameterNameModel = @"model";
-SDLRPCParameterName const SDLRPCParameterNameModuleData = @"moduleData";
-SDLRPCParameterName const SDLRPCParameterNameModuleId = @"moduleId";
-SDLRPCParameterName const SDLRPCParameterNameModuleIds = @"moduleIds";
-SDLRPCParameterName const SDLRPCParameterNameModuleInfo = @"moduleInfo";
-SDLRPCParameterName const SDLRPCParameterNameModuleName = @"moduleName";
-SDLRPCParameterName const SDLRPCParameterNameModuleType = @"moduleType";
-SDLRPCParameterName const SDLRPCParameterNameModelYear = @"modelYear";
-SDLRPCParameterName const SDLRPCParameterNameMonoAudioOutputMuted = @"monoAudioOutputMuted";
-SDLRPCParameterName const SDLRPCParameterNameMonth = @"month";
-SDLRPCParameterName const SDLRPCParameterNameMoonPhase = @"moonPhase";
-SDLRPCParameterName const SDLRPCParameterNameMultidayForecast = @"multidayForecast";
-SDLRPCParameterName const SDLRPCParameterNameMultipleEvents = @"multipleEvents";
-SDLRPCParameterName const SDLRPCParameterNameMultiTouchAvailable = @"multiTouchAvailable";
-SDLRPCParameterName const SDLRPCParameterNameMuteAudio = @"muteAudio";
-SDLRPCParameterName const SDLRPCParameterNameMyKey = @"myKey";
-SDLRPCParameterName const SDLRPCParameterNameName = @"name";
-SDLRPCParameterName const SDLRPCParameterNameNavigation = @"navigation";
-SDLRPCParameterName const SDLRPCParameterNameNavigationCapability = @"navigationCapability";
-SDLRPCParameterName const SDLRPCParameterNameNavigationServiceData = @"navigationServiceData";
-SDLRPCParameterName const SDLRPCParameterNameNavigationServiceManifest = @"navigationServiceManifest";
-SDLRPCParameterName const SDLRPCParameterNameNavigationText = @"navigationText";
-SDLRPCParameterName const SDLRPCParameterNameNavigationText1 = @"navigationText1";
-SDLRPCParameterName const SDLRPCParameterNameNavigationText2 = @"navigationText2";
-SDLRPCParameterName const SDLRPCParameterNameNearestStormBearing = @"nearestStormBearing";
-SDLRPCParameterName const SDLRPCParameterNameNearestStormDistance = @"nearestStormDistance";
-SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistance = @"nextInstructionDistance";
-SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistanceScale = @"nextInstructionDistanceScale";
-SDLRPCParameterName const SDLRPCParameterNameNextInstructionETA = @"nextInstructionETA";
-SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon = @"nextTurnIcon";
-SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName = @"ngnMediaScreenAppName";
-SDLRPCParameterName const SDLRPCParameterNameNicknames = @"nicknames";
-SDLRPCParameterName const SDLRPCParameterNameNightColorScheme = @"nightColorScheme";
-SDLRPCParameterName const SDLRPCParameterNameNotification = @"notification";
-SDLRPCParameterName const SDLRPCParameterNameNumber = @"number";
-SDLRPCParameterName const SDLRPCParameterNameNumberCustomPresetsAvailable = @"numCustomPresetsAvailable";
-SDLRPCParameterName const SDLRPCParameterNameNumberTicks = @"numTicks";
-SDLRPCParameterName const SDLRPCParameterNameOdometer = @"odometer";
-SDLRPCParameterName const SDLRPCParameterNameOEMCustomDataType = @"oemCustomDataType";
-SDLRPCParameterName const SDLRPCParameterNameOffset = @"offset";
-SDLRPCParameterName const SDLRPCParameterNameOnLockScreenStatus = @"OnLockScreenStatus";
-SDLRPCParameterName const SDLRPCParameterNameOnScreenPresetsAvailable = @"onScreenPresetsAvailable";
-SDLRPCParameterName const SDLRPCParameterNameOperationName = @"name";
-SDLRPCParameterName const SDLRPCParameterNameOrigin = @"origin";
-SDLRPCParameterName const SDLRPCParameterNameOriginApp = @"originApp";
-SDLRPCParameterName const SDLRPCParameterNameOS = @"os";
-SDLRPCParameterName const SDLRPCParameterNameOSVersion = @"osVersion";
-SDLRPCParameterName const SDLRPCParameterNameParameterPermissions = @"parameterPermissions";
-SDLRPCParameterName const SDLRPCParameterNameParameters = @"parameters";
-SDLRPCParameterName const SDLRPCParameterNameParentId = @"parentID";
-SDLRPCParameterName const SDLRPCParameterNameParkBrakeActive = @"parkBrakeActive";
-SDLRPCParameterName const SDLRPCParameterNamePassengerAirbagDeployed = @"passengerAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNamePassengerBeltDeployed = @"passengerBeltDeployed";
-SDLRPCParameterName const SDLRPCParameterNamePassengerBuckleBelted = @"passengerBuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNamePassengerChildDetected = @"passengerChildDetected";
-SDLRPCParameterName const SDLRPCParameterNamePassengerCurtainAirbagDeployed = @"passengerCurtainAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNamePassengerDoorAjar = @"passengerDoorAjar";
-SDLRPCParameterName const SDLRPCParameterNamePassengerKneeAirbagDeployed = @"passengerKneeAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNamePassengerSideAirbagDeployed = @"passengerSideAirbagDeployed";
-SDLRPCParameterName const SDLRPCParameterNamePatchVersion = @"patchVersion";
-SDLRPCParameterName const SDLRPCParameterNamePCMStreamCapabilities = @"pcmStreamCapabilities";
-SDLRPCParameterName const SDLRPCParameterNamePDOP = @"pdop";
-SDLRPCParameterName const SDLRPCParameterNamePermissionItem = @"permissionItem";
-SDLRPCParameterName const SDLRPCParameterNamePersistentFile = @"persistentFile";
-SDLRPCParameterName const SDLRPCParameterNamePhoneCall = @"phoneCall";
-SDLRPCParameterName const SDLRPCParameterNamePhoneCapability = @"phoneCapability";
-SDLRPCParameterName const SDLRPCParameterNamePhoneNumber = @"phoneNumber";
-SDLRPCParameterName const SDLRPCParameterNamePhoneRoaming = @"phoneRoaming";
-SDLRPCParameterName const SDLRPCParameterNamePixelPerInch = @"pixelPerInch";
-SDLRPCParameterName const SDLRPCParameterNamePrimaryColor = @"primaryColor";
-SDLRPCParameterName const SDLRPCParameterNamePlaylistName = @"playlistName";
-SDLRPCParameterName const SDLRPCParameterNamePlayTone = @"playTone";
-SDLRPCParameterName const SDLRPCParameterNamePosition = @"position";
-SDLRPCParameterName const SDLRPCParameterNamePostalCode = @"postalCode";
-SDLRPCParameterName const SDLRPCParameterNamePrecipAccumulation = @"precipAccumulation";
-SDLRPCParameterName const SDLRPCParameterNamePrecipIntensity = @"precipIntensity";
-SDLRPCParameterName const SDLRPCParameterNamePrecipProbability = @"precipProbability";
-SDLRPCParameterName const SDLRPCParameterNamePrecipType = @"precipType";
-SDLRPCParameterName const SDLRPCParameterNamePowerModeActive = @"powerModeActive";
-SDLRPCParameterName const SDLRPCParameterNamePowerModeQualificationStatus = @"powerModeQualificationStatus";
-SDLRPCParameterName const SDLRPCParameterNamePowerModeStatus = @"powerModeStatus";
-SDLRPCParameterName const SDLRPCParameterNamePreferredResolution = @"preferredResolution";
-SDLRPCParameterName const SDLRPCParameterNamePrerecordedSpeech = @"prerecordedSpeech";
-SDLRPCParameterName const SDLRPCParameterNamePresetBankCapabilities = @"presetBankCapabilities";
-SDLRPCParameterName const SDLRPCParameterNamePressAvailable = @"pressAvailable";
-SDLRPCParameterName const SDLRPCParameterNamePressure = @"pressure";
-SDLRPCParameterName const SDLRPCParameterNamePressureTelltale = @"pressureTelltale";
-SDLRPCParameterName const SDLRPCParameterNamePrimaryAudioSource = @"primaryAudioSource";
-SDLRPCParameterName const SDLRPCParameterNamePRNDL = @"prndl";
-SDLRPCParameterName const SDLRPCParameterNameProgramIdentification = @"PI";
-SDLRPCParameterName const SDLRPCParameterNameProgressIndicator = @"progressIndicator";
-SDLRPCParameterName const SDLRPCParameterNameProperties = @"properties";
-SDLRPCParameterName const SDLRPCParameterNameProgramService = @"PS";
-SDLRPCParameterName const SDLRPCParameterNameProgramType = @"PTY";
-SDLRPCParameterName const SDLRPCParameterNamePrompt = @"prompt";
-SDLRPCParameterName const SDLRPCParameterNameQueueCurrentTrackNumber = @"queueCurrentTrackNumber";
-SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackDuration = @"queuePlaybackDuration";
-SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackProgress = @"queuePlaybackProgress";
-SDLRPCParameterName const SDLRPCParameterNameQueueTotalTrackCount = @"queueTotalTrackCount";
-SDLRPCParameterName const SDLRPCParameterNameRadioBandAvailable = @"radioBandAvailable";
-SDLRPCParameterName const SDLRPCParameterNameRadioControlCapabilities = @"radioControlCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameRadioFrequencyAvailable = @"radioFrequencyAvailable";
-SDLRPCParameterName const SDLRPCParameterNameRadioControlData = @"radioControlData";
-SDLRPCParameterName const SDLRPCParameterNameRadioEnable = @"radioEnable";
-SDLRPCParameterName const SDLRPCParameterNameRadioEnableAvailable = @"radioEnableAvailable";
-SDLRPCParameterName const SDLRPCParameterNameRange = @"range";
-SDLRPCParameterName const SDLRPCParameterNameRDSData = @"rdsData";
-SDLRPCParameterName const SDLRPCParameterNameRDSDataAvailable = @"rdsDataAvailable";
-SDLRPCParameterName const SDLRPCParameterNameRearLeftDoorAjar = @"rearLeftDoorAjar";
-SDLRPCParameterName const SDLRPCParameterNameRearRightDoorAjar = @"rearRightDoorAjar";
-SDLRPCParameterName const SDLRPCParameterNameReason = @"reason";
-SDLRPCParameterName const SDLRPCParameterNameRed = @"red";
-SDLRPCParameterName const SDLRPCParameterNameRect = @"rect";
-SDLRPCParameterName const SDLRPCParameterNameRegion = @"REG";
-SDLRPCParameterName const SDLRPCParameterNameRegions = @"regions";
-SDLRPCParameterName const SDLRPCParameterNameRemoteControl = @"remoteControl";
-SDLRPCParameterName const SDLRPCParameterNameRemoteControlCapability = @"remoteControlCapability";
-SDLRPCParameterName const SDLRPCParameterNameRequest = @"request";
-SDLRPCParameterName const SDLRPCParameterNameRequestServiceActive = @"requestServiceActive";
-SDLRPCParameterName const SDLRPCParameterNameRequestSubType = @"requestSubType";
-SDLRPCParameterName const SDLRPCParameterNameRequestType = @"requestType";
-SDLRPCParameterName const SDLRPCParameterNameRequireEncryption = @"requireEncryption";
-SDLRPCParameterName const SDLRPCParameterNameReserved = @"reserved";
-SDLRPCParameterName const SDLRPCParameterNameSecondaryColor = @"secondaryColor";
-SDLRPCParameterName const SDLRPCParameterNameResolution = @"resolution";
-SDLRPCParameterName const SDLRPCParameterNameResolutionHeight = @"resolutionHeight";
-SDLRPCParameterName const SDLRPCParameterNameResolutionWidth = @"resolutionWidth";
-SDLRPCParameterName const SDLRPCParameterNameResponse = @"response";
-SDLRPCParameterName const SDLRPCParameterNameResult = @"result";
-SDLRPCParameterName const SDLRPCParameterNameResultCode = @"resultCode";
-SDLRPCParameterName const SDLRPCParameterNameRightFront = @"rightFront";
-SDLRPCParameterName const SDLRPCParameterNameRightRear = @"rightRear";
-SDLRPCParameterName const SDLRPCParameterNameRightRearInflatableBelted = @"rightRearInflatableBelted";
-SDLRPCParameterName const SDLRPCParameterNameRightRow2BuckleBelted = @"rightRow2BuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameRightRow3BuckleBelted = @"rightRow3BuckleBelted";
-SDLRPCParameterName const SDLRPCParameterNameRolloverEvent = @"rolloverEvent";
-SDLRPCParameterName const SDLRPCParameterNameRow = @"row";
-SDLRPCParameterName const SDLRPCParameterNameRows = @"rows";
-SDLRPCParameterName const SDLRPCParameterNameRowSpan = @"rowspan";
-SDLRPCParameterName const SDLRPCParameterNameRPCName = @"rpcName";
-SDLRPCParameterName const SDLRPCParameterNameRPCSpecVersion = @"rpcSpecVersion";
-SDLRPCParameterName const SDLRPCParameterNameRPM = @"rpm";
-SDLRPCParameterName const SDLRPCParameterNameRadioText = @"RT";
-SDLRPCParameterName const SDLRPCParameterNameSamplingRate = @"samplingRate";
-SDLRPCParameterName const SDLRPCParameterNameSatellites = @"satellites";
-SDLRPCParameterName const SDLRPCParameterNameScale = @"scale";
-SDLRPCParameterName const SDLRPCParameterNameScreenParams = @"screenParams";
-SDLRPCParameterName const SDLRPCParameterNameScrollableMessageBody = @"scrollableMessageBody";
-SDLRPCParameterName const SDLRPCParameterNameSDLVersion = @"sdlVersion";
-SDLRPCParameterName const SDLRPCParameterNameSearchAddress = @"searchAddress";
-SDLRPCParameterName const SDLRPCParameterNameSeatControlData = @"seatControlData";
-SDLRPCParameterName const SDLRPCParameterNameSeatControlCapabilities = @"seatControlCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameSeatLocation = @"seatLocation";
-SDLRPCParameterName const SDLRPCParameterNameSeatLocationCapability = @"seatLocationCapability";
-SDLRPCParameterName const SDLRPCParameterNameSeats = @"seats";
-SDLRPCParameterName const SDLRPCParameterNameSecondaryGraphic = @"secondaryGraphic";
-SDLRPCParameterName const SDLRPCParameterNameSecondaryImage = @"secondaryImage";
-SDLRPCParameterName const SDLRPCParameterNameSecondaryText = @"secondaryText";
-SDLRPCParameterName const SDLRPCParameterNameSecond = @"second";
-SDLRPCParameterName const SDLRPCParameterNameSeconds = @"seconds";
-SDLRPCParameterName const SDLRPCParameterNameSendLocationEnabled = @"sendLocationEnabled";
-SDLRPCParameterName const SDLRPCParameterNameServiceActive = @"serviceActive";
-SDLRPCParameterName const SDLRPCParameterNameServiceArea = @"serviceArea";
-SDLRPCParameterName const SDLRPCParameterNameServiceData = @"serviceData";
-SDLRPCParameterName const SDLRPCParameterNameServiceIcon = @"serviceIcon";
-SDLRPCParameterName const SDLRPCParameterNameServiceID = @"serviceID";
-SDLRPCParameterName const SDLRPCParameterNameServiceManifest = @"serviceManifest";
-SDLRPCParameterName const SDLRPCParameterNameServiceName = @"serviceName";
-SDLRPCParameterName const SDLRPCParameterNameServicePublished = @"servicePublished";
-SDLRPCParameterName const SDLRPCParameterNameServiceSpecificResult = @"serviceSpecificResult";
-SDLRPCParameterName const SDLRPCParameterNameServiceType = @"serviceType";
-SDLRPCParameterName const SDLRPCParameterNameServiceUri = @"serviceUri";
-SDLRPCParameterName const SDLRPCParameterNameDisplayName = @"displayName";
-SDLRPCParameterName const SDLRPCParameterNameSeverity = @"severity";
-SDLRPCParameterName const SDLRPCParameterNameShifted = @"shifted";
-SDLRPCParameterName const SDLRPCParameterNameShortPress = @"shortPress";
-SDLRPCParameterName const SDLRPCParameterNameShortPressAvailable = @"shortPressAvailable";
-SDLRPCParameterName const SDLRPCParameterNameSignalLevelStatus = @"signalLevelStatus";
-SDLRPCParameterName const SDLRPCParameterNameSignalChangeThreshold = @"signalChangeThreshold";
-SDLRPCParameterName const SDLRPCParameterNameSignalChangeThresholdAvailable = @"signalChangeThresholdAvailable";
-SDLRPCParameterName const SDLRPCParameterNameSignalStrength = @"signalStrength";
-SDLRPCParameterName const SDLRPCParameterNameSignalStrengthAvailable = @"signalStrengthAvailable";
-SDLRPCParameterName const SDLRPCParameterNameSiriusXMRadioAvailable = @"siriusxmRadioAvailable";
-SDLRPCParameterName const SDLRPCParameterNameSISData = @"sisData";
-SDLRPCParameterName const SDLRPCParameterNameSISDataAvailable = @"sisDataAvailable";
-SDLRPCParameterName const SDLRPCParameterNameSliderFooter = @"sliderFooter";
-SDLRPCParameterName const SDLRPCParameterNameSliderHeader = @"sliderHeader";
-SDLRPCParameterName const SDLRPCParameterNameSliderPosition = @"sliderPosition";
-SDLRPCParameterName const SDLRPCParameterNameSoftButtonCapabilities = @"softButtonCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameSoftButtonId = @"softButtonID";
-SDLRPCParameterName const SDLRPCParameterNameSoftButtons = @"softButtons";
-SDLRPCParameterName const SDLRPCParameterNameSource = @"source";
-SDLRPCParameterName const SDLRPCParameterNameSourceAvailable = @"sourceAvailable";
-SDLRPCParameterName const SDLRPCParameterNameSpaceAvailable = @"spaceAvailable";
-SDLRPCParameterName const SDLRPCParameterNameSpeechCapabilities = @"speechCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameSpeed = @"speed";
-SDLRPCParameterName const SDLRPCParameterNameRGBColorSpaceAvailable = @"rgbColorSpaceAvailable";
-SDLRPCParameterName const SDLRPCParameterNameStartTime = @"startTime";
-SDLRPCParameterName const SDLRPCParameterNameState = @"state";
-SDLRPCParameterName const SDLRPCParameterNameStateAvailable = @"stateAvailable";
-SDLRPCParameterName const SDLRPCParameterNameStateOfCharge = @"stateOfCharge";
-SDLRPCParameterName const SDLRPCParameterNameStationIDNumber = @"stationIDNumber";
-SDLRPCParameterName const SDLRPCParameterNameStationLongName = @"stationLongName";
-SDLRPCParameterName const SDLRPCParameterNameStationLocation = @"stationLocation";
-SDLRPCParameterName const SDLRPCParameterNameStationMessage = @"stationMessage";
-SDLRPCParameterName const SDLRPCParameterNameStationShortName = @"stationShortName";
-SDLRPCParameterName const SDLRPCParameterNameStatus = @"status";
-SDLRPCParameterName const SDLRPCParameterNameStatusAvailable = @"statusAvailable";
-SDLRPCParameterName const SDLRPCParameterNameStatusBar = @"statusBar";
-SDLRPCParameterName const SDLRPCParameterNameSteeringWheelAngle = @"steeringWheelAngle";
-SDLRPCParameterName const SDLRPCParameterNameStereoAudioOutputMuted = @"stereoAudioOutputMuted";
-SDLRPCParameterName const SDLRPCParameterNameSubAdministrativeArea = @"subAdministrativeArea";
-SDLRPCParameterName const SDLRPCParameterNameSubLocality = @"subLocality";
-SDLRPCParameterName const SDLRPCParameterNameSubscribe = @"subscribe";
-SDLRPCParameterName const SDLRPCParameterNameSubThoroughfare = @"subThoroughfare";
-SDLRPCParameterName const SDLRPCParameterNameSuccess = @"success";
-SDLRPCParameterName const SDLRPCParameterNameSummary = @"summary";
-SDLRPCParameterName const SDLRPCParameterNameSupportedDiagnosticModes = @"supportedDiagModes";
-SDLRPCParameterName const SDLRPCParameterNameSupportedFormats = @"supportedFormats";
-SDLRPCParameterName const SDLRPCParameterNameSupportedLights = @"supportedLights";
-SDLRPCParameterName const SDLRPCParameterNameSyncFileName = @"syncFileName";
-SDLRPCParameterName const SDLRPCParameterNameSyncMessageVersion = @"syncMsgVersion";
-SDLRPCParameterName const SDLRPCParameterNameSystemAction = @"systemAction";
-SDLRPCParameterName const SDLRPCParameterNameSystemCapability = @"systemCapability";
-SDLRPCParameterName const SDLRPCParameterNameSystemCapabilityType = @"systemCapabilityType";
-SDLRPCParameterName const SDLRPCParameterNameSystemContext = @"systemContext";
-SDLRPCParameterName const SDLRPCParameterNameSystemFile = @"systemFile";
-SDLRPCParameterName const SDLRPCParameterNameSystemSoftwareVersion = @"systemSoftwareVersion";
-SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackDuration = @"trackPlaybackDuration";
-SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackProgress = @"trackPlaybackProgress";
-SDLRPCParameterName const SDLRPCParameterNameTrafficAnnouncementIdentification = @"TA";
-SDLRPCParameterName const SDLRPCParameterNameTargetId = @"targetID";
-SDLRPCParameterName const SDLRPCParameterNameTemperatureHigh = @"temperatureHigh";
-SDLRPCParameterName const SDLRPCParameterNameTemperatureLow = @"temperatureLow";
-SDLRPCParameterName const SDLRPCParameterNameTemperatureUnit = @"temperatureUnit";
-SDLRPCParameterName const SDLRPCParameterNameTemplate = @"template";
-SDLRPCParameterName const SDLRPCParameterNameTemplateConfiguration = @"templateConfiguration";
-SDLRPCParameterName const SDLRPCParameterNameTemperatureUnitAvailable = @"temperatureUnitAvailable";
-SDLRPCParameterName const SDLRPCParameterNameTemplatesAvailable = @"templatesAvailable";
-SDLRPCParameterName const SDLRPCParameterNameTemplateTitle = @"templateTitle";
-SDLRPCParameterName const SDLRPCParameterNameTertiaryText = @"tertiaryText";
-SDLRPCParameterName const SDLRPCParameterNameText = @"text";
-SDLRPCParameterName const SDLRPCParameterNameTextFields = @"textFields";
-SDLRPCParameterName const SDLRPCParameterNameTextMessageAvailable = @"textMsgAvailable";
-SDLRPCParameterName const SDLRPCParameterNameTextSupported = @"textSupported";
-SDLRPCParameterName const SDLRPCParameterNameThoroughfare = @"thoroughfare";
-SDLRPCParameterName const SDLRPCParameterNameTimeIssued = @"timeIssued";
-SDLRPCParameterName const SDLRPCParameterNameTime = @"time";
-SDLRPCParameterName const SDLRPCParameterNameTimeout = @"timeout";
-SDLRPCParameterName const SDLRPCParameterNameTimeoutCapitalized = @"Timeout";
-SDLRPCParameterName const SDLRPCParameterNameTimeoutPrompt = @"timeoutPrompt";
-SDLRPCParameterName const SDLRPCParameterNameTS = @"ts";
-SDLRPCParameterName const SDLRPCParameterNameTimeStamp = @"timeStamp";
-SDLRPCParameterName const SDLRPCParameterNameTimeToDestination = @"timeToDestination";
-SDLRPCParameterName const SDLRPCParameterNameTimezoneHourOffset = @"tz_hour";
-SDLRPCParameterName const SDLRPCParameterNameTimezoneMinuteOffset = @"tz_minute";
-SDLRPCParameterName const SDLRPCParameterNameTirePressure = @"tirePressure";
-SDLRPCParameterName const SDLRPCParameterNameTitle = @"title";
-SDLRPCParameterName const SDLRPCParameterNameTotalDistance = @"totalDistance";
-SDLRPCParameterName const SDLRPCParameterNameTouchEventAvailable = @"touchEventAvailable";
-SDLRPCParameterName const SDLRPCParameterNameTPMS = @"tpms";
-SDLRPCParameterName const SDLRPCParameterNameTrafficProgramIdentification = @"TP";
-SDLRPCParameterName const SDLRPCParameterNameTriggerSource = @"triggerSource";
-SDLRPCParameterName const SDLRPCParameterNameTrim = @"trim";
-SDLRPCParameterName const SDLRPCParameterNameTryAgainTime = @"tryAgainTime";
-SDLRPCParameterName const SDLRPCParameterNameTTSChunks = @"ttsChunks";
-SDLRPCParameterName const SDLRPCParameterNameTTSName = @"ttsName";
-SDLRPCParameterName const SDLRPCParameterNameTurnIcon = @"turnIcon";
-SDLRPCParameterName const SDLRPCParameterNameTurnList = @"turnList";
-SDLRPCParameterName const SDLRPCParameterNameTurnSignal = @"turnSignal";
-SDLRPCParameterName const SDLRPCParameterNameType = @"type";
-SDLRPCParameterName const SDLRPCParameterNameUnit = @"unit";
-SDLRPCParameterName const SDLRPCParameterNameUnsubscribe = @"Unsubscribe";
-SDLRPCParameterName const SDLRPCParameterNameUpdatedAppServiceRecord = @"updatedAppServiceRecord";
-SDLRPCParameterName const SDLRPCParameterNameUpdateMode = @"updateMode";
-SDLRPCParameterName const SDLRPCParameterNameUpdateReason= @"updateReason";
-SDLRPCParameterName const SDLRPCParameterNameUpDownAvailable = @"upDownAvailable";
-SDLRPCParameterName const SDLRPCParameterNameURL = @"url";
-SDLRPCParameterName const SDLRPCParameterNameURLUppercase = @"URL";
-SDLRPCParameterName const SDLRPCParameterNameUserDisallowed = @"userDisallowed";
-SDLRPCParameterName const SDLRPCParameterNameUserLocation = @"userLocation";
-SDLRPCParameterName const SDLRPCParameterNameUserSelected = @"userSelected";
-SDLRPCParameterName const SDLRPCParameterNameUTCDay = @"utcDay";
-SDLRPCParameterName const SDLRPCParameterNameUTCHours = @"utcHours";
-SDLRPCParameterName const SDLRPCParameterNameUTCMinutes = @"utcMinutes";
-SDLRPCParameterName const SDLRPCParameterNameUTCMonth = @"utcMonth";
-SDLRPCParameterName const SDLRPCParameterNameUTCSeconds = @"utcSeconds";
-SDLRPCParameterName const SDLRPCParameterNameUTCYear = @"utcYear";
-SDLRPCParameterName const SDLRPCParameterNameValue = @"value";
-SDLRPCParameterName const SDLRPCParameterNameVDOP = @"vdop";
-SDLRPCParameterName const SDLRPCParameterNameVehicleType = @"vehicleType";
-SDLRPCParameterName const SDLRPCParameterNameVerticalPosition = @"verticalPosition";
-SDLRPCParameterName const SDLRPCParameterNameVerticalPositionAvailable = @"verticalPositionAvailable";
-SDLRPCParameterName const SDLRPCParameterNameVideoCodec = @"codec";
-SDLRPCParameterName const SDLRPCParameterNameVideoProtocol = @"protocol";
-SDLRPCParameterName const SDLRPCParameterNameVideoStreaming = @"videoStreaming";
-SDLRPCParameterName const SDLRPCParameterNameVideoStreamingCapability = @"videoStreamingCapability";
-SDLRPCParameterName const SDLRPCParameterNameVideoStreamingState = @"videoStreamingState";
-SDLRPCParameterName const SDLRPCParameterNameVisibility = @"visibility";
-SDLRPCParameterName const SDLRPCParameterNameVentilationMode = @"ventilationMode";
-SDLRPCParameterName const SDLRPCParameterNameVentilationModeAvailable = @"ventilationModeAvailable";
-SDLRPCParameterName const SDLRPCParameterNameVIN = @"vin";
-SDLRPCParameterName const SDLRPCParameterNameVoiceRecognitionOn = @"voiceRecOn";
-SDLRPCParameterName const SDLRPCParameterNameVolume = @"volume";
-SDLRPCParameterName const SDLRPCParameterNameVolumeAvailable = @"volumeAvailable";
-SDLRPCParameterName const SDLRPCParameterNameVRCapabilities = @"vrCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameVRCommands = @"vrCommands";
-SDLRPCParameterName const SDLRPCParameterNameVRHelp = @"vrHelp";
-SDLRPCParameterName const SDLRPCParameterNameVRHelpTitle = @"vrHelpTitle";
-SDLRPCParameterName const SDLRPCParameterNameVRSynonyms = @"vrSynonyms";
-SDLRPCParameterName const SDLRPCParameterNameWayPoints = @"wayPoints";
-SDLRPCParameterName const SDLRPCParameterNameWayPointType = @"wayPointType";
-SDLRPCParameterName const SDLRPCParameterNameWeatherForLocationSupported = @"weatherForLocationSupported";
-SDLRPCParameterName const SDLRPCParameterNameWeatherIcon = @"weatherIcon";
-SDLRPCParameterName const SDLRPCParameterNameWeatherServiceData = @"weatherServiceData";
-SDLRPCParameterName const SDLRPCParameterNameWeatherServiceManifest = @"weatherServiceManifest";
-SDLRPCParameterName const SDLRPCParameterNameWeatherSummary = @"weatherSummary";
-SDLRPCParameterName const SDLRPCParameterNameWidth = @"width";
-SDLRPCParameterName const SDLRPCParameterNameWindBearing = @"windBearing";
-SDLRPCParameterName const SDLRPCParameterNameWindGust = @"windGust";
-SDLRPCParameterName const SDLRPCParameterNameWindSpeed = @"windSpeed";
-SDLRPCParameterName const SDLRPCParameterNameWiperStatus = @"wiperStatus";
-SDLRPCParameterName const SDLRPCParameterNameWindowCapabilities = @"windowCapabilities";
-SDLRPCParameterName const SDLRPCParameterNameWindowId = @"windowID";
-SDLRPCParameterName const SDLRPCParameterNameWindowName = @"windowName";
-SDLRPCParameterName const SDLRPCParameterNameWindowTypeSupported = @"windowTypeSupported";
-SDLRPCParameterName const SDLRPCParameterNameX = @"x";
-SDLRPCParameterName const SDLRPCParameterNameY = @"y";
-SDLRPCParameterName const SDLRPCParameterNameYear = @"year";
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRadioBand.h b/SmartDeviceLink/SDLRadioBand.h
deleted file mode 100644
index 537706bca..000000000
--- a/SmartDeviceLink/SDLRadioBand.h
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// SDLRadioBand.h
-//
-
-#import "SDLEnum.h"
-
-/**
- Radio bands, such as AM and FM, used in RadioControlData
- */
-typedef SDLEnum SDLRadioBand SDL_SWIFT_ENUM;
-
-/**
- * Represents AM radio band
- */
-extern SDLRadioBand const SDLRadioBandAM NS_SWIFT_NAME(am);
-
-/**
- * Represents FM radio band
- */
-extern SDLRadioBand const SDLRadioBandFM NS_SWIFT_NAME(fm);
-
-/**
- * Represents XM radio band
- */
-extern SDLRadioBand const SDLRadioBandXM NS_SWIFT_NAME(xm);
diff --git a/SmartDeviceLink/SDLRadioControlCapabilities.h b/SmartDeviceLink/SDLRadioControlCapabilities.h
deleted file mode 100644
index 0c35df16f..000000000
--- a/SmartDeviceLink/SDLRadioControlCapabilities.h
+++ /dev/null
@@ -1,225 +0,0 @@
-//
-// SDLRadioControlCapabilities.h
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLModuleInfo.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Contains information about a radio control module's capabilities.
- */
-@interface SDLRadioControlCapabilities : SDLRPCStruct
-
-/**
- Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-
- @param moduleName The short friendly name of the radio control module.
- @param radioEnableAvailable Availability of the control of enable/disable radio.
- @param radioBandAvailable Availability of the control of radio band.
- @param radioFrequencyAvailable Availability of the control of radio frequency.
- @param hdChannelAvailable Availability of the control of HD radio channel.
- @param rdsDataAvailable Availability of the getting Radio Data System (RDS) data.
- @param availableHDsAvailable Availability of the getting the number of available HD channels.
- @param stateAvailable Availability of the getting the Radio state.
- @param signalStrengthAvailable Availability of the getting the signal strength.
- @param signalChangeThresholdAvailable Availability of the getting the signal Change Threshold.
- @return An instance of the SDLRadioControlCapabilities class.
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDsAvailable:(BOOL)availableHDsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable __deprecated_msg(("Use initWithModuleName:moduleName:radioEnableAvailable radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDChannelsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:hdRadioEnableAvailable:siriusXMRadioAvailable:sisDataAvailable: instead"));
-
-/**
- Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-
- @param moduleName The short friendly name of the radio control module.
- @param radioEnableAvailable Availability of the control of enable/disable radio.
- @param radioBandAvailable Availability of the control of radio band.
- @param radioFrequencyAvailable Availability of the control of radio frequency.
- @param hdChannelAvailable Availability of the control of HD radio channel.
- @param rdsDataAvailable Availability of the getting Radio Data System (RDS) data.
- @param availableHDsAvailable Availability of the getting the number of available HD channels.
- @param stateAvailable Availability of the getting the Radio state.
- @param signalStrengthAvailable Availability of the getting the signal strength.
- @param signalChangeThresholdAvailable Availability of the getting the signal Change Threshold.
- @param hdRadioEnableAvailable Availability of the control of enable/disable HD radio.
- @param siriusXMRadioAvailable Availability of sirius XM radio.
- @param sisDataAvailable Availability of sis data.
- @return An instance of the SDLRadioControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDsAvailable:(BOOL)availableHDsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable __deprecated_msg(("Use initWithModuleName:moduleName:radioEnableAvailable radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDChannelsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:hdRadioEnableAvailable:siriusXMRadioAvailable:sisDataAvailable: instead"));
-
-/**
- Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-
- @param moduleName The short friendly name of the radio control module.
- @param radioEnableAvailable Availability of the control of enable/disable radio.
- @param radioBandAvailable Availability of the control of radio band.
- @param radioFrequencyAvailable Availability of the control of radio frequency.
- @param hdChannelAvailable Availability of the control of HD radio channel.
- @param rdsDataAvailable Availability of the getting Radio Data System (RDS) data.
- @param availableHDChannelsAvailable Availability of the list of available HD sub-channel indexes.
- @param stateAvailable Availability of the getting the Radio state.
- @param signalStrengthAvailable Availability of the getting the signal strength.
- @param signalChangeThresholdAvailable Availability of the getting the signal Change Threshold.
- @param hdRadioEnableAvailable Availability of the control of enable/disable HD radio.
- @param siriusXMRadioAvailable Availability of sirius XM radio.
- @param sisDataAvailable Availability of sis data.
- @return An instance of the SDLRadioControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDChannelsAvailable:(BOOL)availableHDChannelsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable __deprecated_msg(("Use initWithModuleName:moduleName:moduleInfo:radioEnableAvailable radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDChannelsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:hdRadioEnableAvailable:siriusXMRadioAvailable:sisDataAvailable: instead"));
-
-/**
- Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-
- @param moduleName The short friendly name of the radio control module.
- @param moduleInfo Information about a RC module, including its id.
- @param radioEnableAvailable Availability of the control of enable/disable radio.
- @param radioBandAvailable Availability of the control of radio band.
- @param radioFrequencyAvailable Availability of the control of radio frequency.
- @param hdChannelAvailable Availability of the control of HD radio channel.
- @param rdsDataAvailable Availability of the getting Radio Data System (RDS) data.
- @param availableHDChannelsAvailable Availability of the list of available HD sub-channel indexes.
- @param stateAvailable Availability of the getting the Radio state.
- @param signalStrengthAvailable Availability of the getting the signal strength.
- @param signalChangeThresholdAvailable Availability of the getting the signal Change Threshold.
- @param hdRadioEnableAvailable Availability of the control of enable/disable HD radio.
- @param siriusXMRadioAvailable Availability of sirius XM radio.
- @param sisDataAvailable Availability of sis data.
- @return An instance of the SDLRadioControlCapabilities class
- */
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDChannelsAvailable:(BOOL)availableHDChannelsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable;
-
-/**
- * The short friendly name of the radio control module.
-
- * It should not be used to identify a module by mobile application.
- *
- * Max string length 100 chars
- */
-@property (strong, nonatomic) NSString *moduleName;
-
-/**
- * Availability of the control of enable/disable radio.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioEnableAvailable;
-
-/**
- * Availability of the control of radio band.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioBandAvailable;
-
-/**
- * Availability of the control of radio frequency.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioFrequencyAvailable;
-
-/**
- * Availability of the control of HD radio channel.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hdChannelAvailable;
-
-/**
- * Availability of the getting Radio Data System (RDS) data.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rdsDataAvailable;
-
-/**
- * Availability of the getting the number of available HD channels.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *availableHDsAvailable __deprecated_msg("Use availableHDChannelsAvailable instead.");
-
-/**
- * Availability of the list of available HD sub-channel indexes.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *availableHDChannelsAvailable;
-
-/**
- * Availability of the getting the Radio state.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *stateAvailable;
-
-/**
- * Availability of the getting the signal strength.
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *signalStrengthAvailable;
-
-/**
- * Availability of the getting the signal Change Threshold
-
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *signalChangeThresholdAvailable;
-
-/**
- * Availability of the control of enable/disable HD radio.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hdRadioEnableAvailable;
-
-/**
- * Availability of sirius XM radio.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *siriusXMRadioAvailable;
-
-/**
- * Availability of the getting HD radio Station Information Service (SIS) data.
- * True: Available, False: Not Available, Not present: Not Available.
- *
- * Optional, Boolean
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *sisDataAvailable;
-
-/**
- * Information about a RC module, including its id.
- *
- * SDLModuleInfo
- */
-@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRadioControlCapabilities.m b/SmartDeviceLink/SDLRadioControlCapabilities.m
deleted file mode 100644
index 921e2e651..000000000
--- a/SmartDeviceLink/SDLRadioControlCapabilities.m
+++ /dev/null
@@ -1,210 +0,0 @@
-//
-// SDLRadioControlCapabilities.m
-//
-
-#import "SDLRadioControlCapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLRadioControlCapabilities
-
-- (instancetype)initWithModuleName:(NSString *)moduleName radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDsAvailable:(BOOL)availableHDsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable {
- return [self initWithModuleName:moduleName radioEnableAvailable:radioEnableAvailable radioBandAvailable:radioBandAvailable radioFrequencyAvailable:radioFrequencyAvailable hdChannelAvailable:hdChannelAvailable rdsDataAvailable:rdsDataAvailable availableHDsAvailable:availableHDsAvailable stateAvailable:stateAvailable signalStrengthAvailable:signalStrengthAvailable signalChangeThresholdAvailable:signalChangeThresholdAvailable hdRadioEnableAvailable:NO siriusXMRadioAvailable:NO sisDataAvailable:NO];
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDsAvailable:(BOOL)availableHDsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable {
- self = [self init];
- if(!self){
- return nil;
- }
-
- self.moduleName = moduleName;
- self.radioEnableAvailable = @(radioEnableAvailable);
- self.radioBandAvailable = @(radioBandAvailable);
- self.radioFrequencyAvailable = @(radioFrequencyAvailable);
- self.hdChannelAvailable = @(hdChannelAvailable);
- self.rdsDataAvailable = @(rdsDataAvailable);
- self.availableHDsAvailable = @(availableHDsAvailable);
- self.stateAvailable = @(stateAvailable);
- self.signalStrengthAvailable = @(signalStrengthAvailable);
- self.signalChangeThresholdAvailable = @(signalChangeThresholdAvailable);
- self.hdRadioEnableAvailable = @(hdRadioEnableAvailable);
- self.siriusXMRadioAvailable = @(siriusXMRadioAvailable);
- self.sisDataAvailable = @(sisDataAvailable);
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDChannelsAvailable:(BOOL)availableHDChannelsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable {
- self = [self init];
- if(!self){
- return nil;
- }
-
- self.moduleName = moduleName;
- self.radioEnableAvailable = @(radioEnableAvailable);
- self.radioBandAvailable = @(radioBandAvailable);
- self.radioFrequencyAvailable = @(radioFrequencyAvailable);
- self.hdChannelAvailable = @(hdChannelAvailable);
- self.rdsDataAvailable = @(rdsDataAvailable);
- self.availableHDChannelsAvailable = @(availableHDChannelsAvailable);
- self.stateAvailable = @(stateAvailable);
- self.signalStrengthAvailable = @(signalStrengthAvailable);
- self.signalChangeThresholdAvailable = @(signalChangeThresholdAvailable);
- self.hdRadioEnableAvailable = @(hdRadioEnableAvailable);
- self.siriusXMRadioAvailable = @(siriusXMRadioAvailable);
- self.sisDataAvailable = @(sisDataAvailable);
-
- return self;
-}
-
-- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDChannelsAvailable:(BOOL)availableHDChannelsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable {
- self = [self init];
- if(!self){
- return nil;
- }
-
- self.moduleName = moduleName;
- self.moduleInfo = moduleInfo;
- self.radioEnableAvailable = @(radioEnableAvailable);
- self.radioBandAvailable = @(radioBandAvailable);
- self.radioFrequencyAvailable = @(radioFrequencyAvailable);
- self.hdChannelAvailable = @(hdChannelAvailable);
- self.rdsDataAvailable = @(rdsDataAvailable);
- self.availableHDChannelsAvailable = @(availableHDChannelsAvailable);
- self.stateAvailable = @(stateAvailable);
- self.signalStrengthAvailable = @(signalStrengthAvailable);
- self.signalChangeThresholdAvailable = @(signalChangeThresholdAvailable);
- self.hdRadioEnableAvailable = @(hdRadioEnableAvailable);
- self.siriusXMRadioAvailable = @(siriusXMRadioAvailable);
- self.sisDataAvailable = @(sisDataAvailable);
-
- return self;
-}
-
-- (void)setModuleName:(NSString *)moduleName {
- [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
-}
-
-- (NSString *)moduleName {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
-}
-
-- (void)setRadioEnableAvailable:(nullable NSNumber<SDLBool> *)radioEnableAvailable {
- [self.store sdl_setObject:radioEnableAvailable forName:SDLRPCParameterNameRadioEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)radioEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameRadioEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRadioBandAvailable:(nullable NSNumber<SDLBool> *)radioBandAvailable {
- [self.store sdl_setObject:radioBandAvailable forName:SDLRPCParameterNameRadioBandAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)radioBandAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameRadioBandAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRadioFrequencyAvailable:(nullable NSNumber<SDLBool> *)radioFrequencyAvailable {
- [self.store sdl_setObject:radioFrequencyAvailable forName:SDLRPCParameterNameRadioFrequencyAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)radioFrequencyAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameRadioFrequencyAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHdChannelAvailable:(nullable NSNumber<SDLBool> *)hdChannelAvailable {
- [self.store sdl_setObject:hdChannelAvailable forName:SDLRPCParameterNameHDChannelAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)hdChannelAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHDChannelAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRdsDataAvailable:(nullable NSNumber<SDLBool> *)rdsDataAvailable {
- [self.store sdl_setObject:rdsDataAvailable forName:SDLRPCParameterNameRDSDataAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)rdsDataAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameRDSDataAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAvailableHDsAvailable:(nullable NSNumber<SDLBool> *)availableHDsAvailable {
- [self.store sdl_setObject:availableHDsAvailable forName:SDLRPCParameterNameAvailableHDsAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)availableHDsAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDsAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAvailableHDChannelsAvailable:(nullable NSNumber<SDLBool> *)availableHDChannelsAvailable {
- [self.store sdl_setObject:availableHDChannelsAvailable forName:SDLRPCParameterNameAvailableHDsAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)availableHDChannelsAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDsAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setStateAvailable:(nullable NSNumber<SDLBool> *)stateAvailable {
- [self.store sdl_setObject:stateAvailable forName:SDLRPCParameterNameStateAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)stateAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameStateAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSignalStrengthAvailable:(nullable NSNumber<SDLBool> *)signalStrengthAvailable {
- [self.store sdl_setObject:signalStrengthAvailable forName:SDLRPCParameterNameSignalStrengthAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)signalStrengthAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameSignalStrengthAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSignalChangeThresholdAvailable:(nullable NSNumber<SDLBool> *)signalChangeThresholdAvailable {
- [self.store sdl_setObject:signalChangeThresholdAvailable forName:SDLRPCParameterNameSignalChangeThresholdAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)signalChangeThresholdAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameSignalChangeThresholdAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHdRadioEnableAvailable:(nullable NSNumber<SDLBool> *)hdRadioEnableAvailable {
- [self.store sdl_setObject:hdRadioEnableAvailable forName:SDLRPCParameterNameHDRadioEnableAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)hdRadioEnableAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHDRadioEnableAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSiriusXMRadioAvailable:(nullable NSNumber<SDLBool> *)siriusXMRadioAvailable {
- [self.store sdl_setObject:siriusXMRadioAvailable forName:SDLRPCParameterNameSiriusXMRadioAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)siriusXMRadioAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameSiriusXMRadioAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSisDataAvailable:(nullable NSNumber<SDLBool> *)sisDataAvailable {
- [self.store sdl_setObject:sisDataAvailable forName:SDLRPCParameterNameSISDataAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)sisDataAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameSISDataAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
- [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
-}
-
-- (nullable SDLModuleInfo *)moduleInfo {
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRadioControlData.h b/SmartDeviceLink/SDLRadioControlData.h
deleted file mode 100644
index 182e6105e..000000000
--- a/SmartDeviceLink/SDLRadioControlData.h
+++ /dev/null
@@ -1,172 +0,0 @@
-//
-// SDLRadioControlData.h
-//
-
-#import "SDLRPCMessage.h"
-#import "SDLRadioBand.h"
-#import "SDLRadioState.h"
-
-@class SDLRDSData;
-@class SDLSISData;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Include information (both read-only and changeable data) about a remote control radio module.
- */
-@interface SDLRadioControlData : SDLRPCStruct
-
-/**
- Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-
- @param frequencyInteger integer part of the frequency
- @param frequencyFraction fractional part of the frequency
- @param band Radio band value
- @param hdChannel Current HD sub-channel
- @param radioEnable whether or not radio is enabled
- @return An instance of the SDLRadioControlData class
- */
-- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable __deprecated_msg(("Use initWithFrequencyInteger:frequencyInteger:frequencyFraction:band:hdChannel:radioEnable:sisData: instead"));
-
-/**
- Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-
- @param frequencyInteger integer part of the frequency
- @param frequencyFraction fractional part of the frequency
- @param band Radio band value
- @param hdChannel Current HD sub-channel
- @param radioEnable whether or not radio is enabled
- @param hdRadioEnable whether or not hdradio is enabled
- @return An instance of the SDLRadioControlData class
- */
-- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable hdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable;
-
-/// Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-///
-/// @param frequencyInteger Must be between 0 and 1710
-/// @param frequencyFraction Must be between 0 and 9
-/// @param hdChannel Must be between 0 and 7
-/// @return An instance of the SDLRadioControlData class
-- (instancetype)initFMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction hdChannel:(nullable NSNumber<SDLInt> *)hdChannel;
-
-/// Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-///
-/// @param frequencyInteger Must be between 0 and 1710
-/// @param hdChannel Must be between 0 and 7
-/// @return An instance of the SDLRadioControlData class
-- (instancetype)initAMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger hdChannel:(nullable NSNumber<SDLInt> *)hdChannel;
-
-/// Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
-///
-/// @param frequencyInteger Must be between 1 and 1710
-/// @return An instance of the SDLRadioControlData class
-- (instancetype)initXMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger;
-
-/**
- * The integer part of the frequency ie for 101.7 this value should be 101
- *
- * Integer
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frequencyInteger;
-
-/**
- * The fractional part of the frequency for 101.7 is 7
- *
- * Integer
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frequencyFraction;
-
-/**
- * Radio band value
- *
- * SDLRadioBand
- */
-@property (nullable, strong, nonatomic) SDLRadioBand band;
-
-/**
- * Read only parameter. See RDSData data type for details.
- *
- * @warning This property is readonly and cannot be set on the module.
- *
- *SDLRDSData
- */
-@property (nullable, strong, nonatomic) SDLRDSData *rdsData;
-
-/**
- * number of HD sub-channels if available
- *
- * @warning This property is readonly and cannot be set on the module.
- *
- * Integer value Min Value - 1 Max Value -7
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *availableHDs __deprecated_msg("Use availableHDChannels instead");
-
-/**
- * the list of available hd sub-channel indexes, empty list means no Hd channel is available, read-only
- *
- * @warning This property is readonly and cannot be set on the module.
- *
- * Integer value Min Value - 0 Max Value -7
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *availableHDChannels;
-
-/**
- * Current HD sub-channel if available
- *
- * Integer value Min Value - 0 Max Value -7
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *hdChannel;
-
-/**
- * Signal Strength Value
- *
- * @warning This property is readonly and cannot be set on the module.
- *
- * Integer value Min Value - 0 Max Value - 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *signalStrength;
-
-/**
- * If the signal strength falls below the set value for this parameter, the radio will tune to an alternative frequency
- *
- * @warning This property is readonly and cannot be set on the module.
- *
- * Integer value Min Value - 0 Max Value - 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *signalChangeThreshold;
-
-/**
- * True if the radio is on, false is the radio is off. When the radio is disabled, no data other than radioEnable is included in a GetInteriorVehicleData response
- *
- * Boolean value
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioEnable;
-
-/**
- * Read only parameter. See RadioState data type for details.
- *
- * @warning This property is readonly and cannot be set on the module.
- *
- * SDLRadioState
- */
-@property (nullable, strong, nonatomic) SDLRadioState state;
-
-/**
- * True if the hd radio is on, false is the radio is off
- *
- * Boolean value
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hdRadioEnable;
-
-/**
- * Read Read-only Station Information Service (SIS) data provides basic information
- * about the station such as call sign,
- * as well as information not displayable to the consumer such as the station identification number
- *
- * Optional, SDLSISData
- */
-@property (nullable, strong, nonatomic) SDLSISData *sisData;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRadioControlData.m b/SmartDeviceLink/SDLRadioControlData.m
deleted file mode 100644
index 9fb82f080..000000000
--- a/SmartDeviceLink/SDLRadioControlData.m
+++ /dev/null
@@ -1,191 +0,0 @@
-//
-// SDLRadioControlData.m
-//
-
-#import "SDLRadioControlData.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRDSData.h"
-#import "SDLSISData.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLRadioControlData
-
-- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable {
- self = [self init];
- if(!self) {
- return nil;
- }
-
- self.frequencyInteger = frequencyInteger;
- self.frequencyFraction = frequencyFraction;
- self.band = band;
- self.hdChannel = hdChannel;
- self.radioEnable = radioEnable;
-
- return self;
-}
-
-- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable hdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable {
- self = [self init];
- if(!self) {
- return nil;
- }
-
- self.frequencyInteger = frequencyInteger;
- self.frequencyFraction = frequencyFraction;
- self.band = band;
- self.hdChannel = hdChannel;
- self.radioEnable = radioEnable;
- self.hdRadioEnable = hdRadioEnable;
-
- return self;
-}
-
-- (instancetype)initFMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction hdChannel:(nullable NSNumber<SDLInt> *)hdChannel {
- self = [self init];
- if(!self) {
- return nil;
- }
-
- self.band = SDLRadioBandFM;
- self.frequencyInteger = frequencyInteger;
- self.frequencyFraction = frequencyFraction;
- self.hdChannel = hdChannel;
-
- return self;
-}
-
-- (instancetype)initAMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger hdChannel:(nullable NSNumber<SDLInt> *)hdChannel {
- self = [self init];
- if(!self) {
- return nil;
- }
-
- self.band = SDLRadioBandAM;
- self.frequencyInteger = frequencyInteger;
- self.hdChannel = hdChannel;
-
- return self;
-}
-
-- (instancetype)initXMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger {
- self = [self init];
- if(!self) {
- return nil;
- }
-
- self.frequencyInteger = frequencyInteger;
- self.band = SDLRadioBandXM;
-
- return self;
-}
-
-- (void)setFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger {
- [self.store sdl_setObject:frequencyInteger forName:SDLRPCParameterNameFrequencyInteger];
-}
-
-- (nullable NSNumber<SDLInt> *)frequencyInteger {
- return [self.store sdl_objectForName:SDLRPCParameterNameFrequencyInteger ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFrequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction {
- [self.store sdl_setObject:frequencyFraction forName:SDLRPCParameterNameFrequencyFraction];
-}
-
-- (nullable NSNumber<SDLInt> *)frequencyFraction {
- return [self.store sdl_objectForName:SDLRPCParameterNameFrequencyFraction ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBand:(nullable SDLRadioBand)band {
- [self.store sdl_setObject:band forName:SDLRPCParameterNameBand];
-}
-
-- (nullable SDLRadioBand)band{
- return [self.store sdl_enumForName:SDLRPCParameterNameBand error:nil];
-}
-
-- (void)setRdsData:(nullable SDLRDSData *)rdsData {
- [self.store sdl_setObject:rdsData forName:SDLRPCParameterNameRDSData];
-}
-
-- (nullable SDLRDSData *)rdsData {
- return [self.store sdl_objectForName:SDLRPCParameterNameRDSData ofClass:SDLRDSData.class error:nil];
-}
-
-- (void)setAvailableHDChannels:(nullable NSNumber<SDLInt> *)availableHDChannels {
- [self.store sdl_setObject:availableHDChannels forName:SDLRPCParameterNameAvailableHDChannels];
-}
-
-- (nullable NSNumber<SDLInt> *)availableHDChannels {
- return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDChannels ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAvailableHDs:(nullable NSNumber<SDLInt> *)availableHDs {
- [self.store sdl_setObject:availableHDs forName:SDLRPCParameterNameAvailableHDs];
-}
-
-- (nullable NSNumber<SDLInt> *)availableHDs {
- return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDs ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHdChannel:(nullable NSNumber<SDLInt> *)hdChannel {
- [self.store sdl_setObject:hdChannel forName:SDLRPCParameterNameHDChannel];
-}
-
-- (nullable NSNumber<SDLInt> *)hdChannel {
- return [self.store sdl_objectForName:SDLRPCParameterNameHDChannel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSignalStrength:(nullable NSNumber<SDLInt> *)signalStrength {
- [self.store sdl_setObject:signalStrength forName:SDLRPCParameterNameSignalStrength];
-}
-
-- (nullable NSNumber<SDLInt> *)signalStrength {
- return [self.store sdl_objectForName:SDLRPCParameterNameSignalStrength ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSignalChangeThreshold:(nullable NSNumber<SDLInt> *)signalChangeThreshold {
- [self.store sdl_setObject:signalChangeThreshold forName:SDLRPCParameterNameSignalChangeThreshold];
-}
-
-- (nullable NSNumber<SDLInt> *)signalChangeThreshold {
- return [self.store sdl_objectForName:SDLRPCParameterNameSignalChangeThreshold ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRadioEnable:(nullable NSNumber<SDLBool> *)radioEnable {
- [self.store sdl_setObject:radioEnable forName:SDLRPCParameterNameRadioEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)radioEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameRadioEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setState:(nullable SDLRadioState)state {
- [self.store sdl_setObject:state forName:SDLRPCParameterNameState];
-}
-
-- (nullable SDLRadioState)state {
- return [self.store sdl_enumForName:SDLRPCParameterNameState error:nil];
-}
-
-- (void)setHdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable {
- [self.store sdl_setObject:hdRadioEnable forName:SDLRPCParameterNameHDRadioEnable];
-}
-
-- (nullable NSNumber<SDLBool> *)hdRadioEnable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHDRadioEnable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSisData:(nullable SDLSISData *)sisData {
- [self.store sdl_setObject:sisData forName:SDLRPCParameterNameSISData];
-}
-
-- (nullable SDLSISData *)sisData {
- return [self.store sdl_objectForName:SDLRPCParameterNameSISData ofClass:SDLSISData.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRadioState.h b/SmartDeviceLink/SDLRadioState.h
deleted file mode 100644
index ee5945a96..000000000
--- a/SmartDeviceLink/SDLRadioState.h
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// SDLRadioState.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * List possible states of a remote control radio module. Used in RadioControlData.
- */
-typedef SDLEnum SDLRadioState SDL_SWIFT_ENUM;
-
-/**
- * Represents Radio state as ACQUIRING
- */
-extern SDLRadioState const SDLRadioStateAcquiring;
-
-/**
- * Represents Radio state as ACQUIRED
- */
-extern SDLRadioState const SDLRadioStateAcquired;
-
-/**
- * Represents Radio state as MULTICAST
- */
-extern SDLRadioState const SDLRadioStateMulticast;
-
-/**
- * Represents Radio state as NOT_FOUND
- */
-extern SDLRadioState const SDLRadioStateNotFound;
diff --git a/SmartDeviceLink/SDLRegisterAppInterface.h b/SmartDeviceLink/SDLRegisterAppInterface.h
deleted file mode 100644
index d1b8298e7..000000000
--- a/SmartDeviceLink/SDLRegisterAppInterface.h
+++ /dev/null
@@ -1,276 +0,0 @@
-// SDLRegisterAppInterface.h
-//
-
-#import "SDLRPCRequest.h"
-
-#import "SDLAppHMIType.h"
-#import "SDLLanguage.h"
-
-@class SDLAppInfo;
-@class SDLDeviceInfo;
-@class SDLLifecycleConfiguration;
-@class SDLSyncMsgVersion;
-@class SDLMsgVersion;
-@class SDLTemplateColorScheme;
-@class SDLTTSChunk;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Registers the application's interface with SDL. The `RegisterAppInterface` RPC declares the properties of the app, including the messaging interface version, the app name, etc. The mobile application must establish its interface registration with SDL before any other interaction with SDL can take place. The registration lasts until it is terminated either by the application calling the `SDLUnregisterAppInterface` method, or by SDL sending an `SDLOnAppInterfaceUnregistered` notification, or by loss of the underlying transport connection, or closing of the underlying message transmission protocol RPC session.
- *
- * Until the application receives its first `SDLOnHMIStatus` notification, its `SDLHMILevel` is assumed to be `NONE`, the `SDLAudioStreamingState` is assumed to be `NOT_AUDIBLE`, and the `SDLSystemContext` is assumed to be `MAIN`.
- *
- * All SDL resources which the application creates or uses (e.g. choice sets, command menu, etc.) are associated with the application's interface registration. Therefore, when the interface registration ends, the SDL resources associated with the application are disposed of. As a result, even though the application itself may continue to run on its host platform (e.g. mobile device) after the interface registration terminates, the application will not be able to use the SDL HMI without first establishing a new interface registration and re-creating its required SDL resources. That is, SDL resources created by (or on behalf of) an application do not persist beyond the life-span of the interface registration. Resources and settings whose lifespan is tied to the duration of an application's interface registration include: choice sets, command menus, and the media clock timer display value
- *
- * If the application intends to stream audio it is important to indicate so via the `isMediaApp` parameter. When set to true, audio will reliably stream without any configuration required by the user. When not set, audio may stream, depending on what the user might have manually configured as a media source on SDL.
- *
- * @since SDL 1.0
- *
- * @see SDLUnregisterAppInterface, SDLOnAppInterfaceUnregistered
- */
-@interface SDLRegisterAppInterface : SDLRPCRequest
-
-/**
- * Convenience init for registering the application with a lifecycle configuration.
- *
- * @param lifecycleConfiguration Configuration options for SDLManager
- */
-- (instancetype)initWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration;
-
-/**
- * Convenience init for registering the application with an app name, app id, and desired language.
- *
- * @param appName The mobile application's name
- * @param appId An appId used to validate app with policy table entries
- * @param languageDesired The language the application intends to use for user interaction
- * @return A SDLRegisterAppInterface object
- */
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired;
-
-/**
- * Convenience init for registering the application with an app name, app id, desired language, whether or not the app is a media app, app types, and the short app name.
- *
- * @param appName The mobile application's name
- * @param appId An appId used to validate app with policy table entries
- * @param languageDesired The language the application intends to use for user interaction
- * @param isMediaApp Indicates if the application is a media or a non-media application
- * @param appTypes A list of all applicable app types stating which classifications to be given to the app
- * @param shortAppName An abbreviated version of the mobile application's name
- * @return A SDLRegisterAppInterface object
- */
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName __deprecated_msg(("Use initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme: instead"));
-
-/**
- * Convenience init for registering the application with an app name, app id, desired language, whether or not the app is a media app, app types, the short app name, tts name, voice recognition synonyms, the hmi display language desired, and the resume hash.
- *
- * @param appName The mobile application's name
- * @param appId An appId used to validate app with policy table entries
- * @param languageDesired The language the application intends to use for user interaction
- * @param isMediaApp Indicates if the application is a media or a non-media application
- * @param appTypes A list of all applicable app types stating which classifications to be given to the app
- * @param shortAppName An abbreviated version of the mobile application's name
- * @param ttsName TTS string for VR recognition of the mobile application name
- * @param vrSynonyms Additional voice recognition commands
- * @param hmiDisplayLanguageDesired Current app's expected VR+TTS language
- * @param resumeHash ID used to uniquely identify current state of all app data that can persist through connection cycles
- * @return A SDLRegisterAppInterface object
- */
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash __deprecated_msg(("Use initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme: instead"));
-
-/**
- * Convenience init for registering the application with all possible options.
- *
- * @param appName The mobile application's name
- * @param appId An appId used to validate app with policy table entries
- * @param fullAppId A full UUID appID used to validate app with policy table entries.
- * @param languageDesired The language the application intends to use for user interaction
- * @param isMediaApp Indicates if the application is a media or a non-media application
- * @param appTypes A list of all applicable app types stating which classifications to be given to the app
- * @param shortAppName An abbreviated version of the mobile application's name
- * @param ttsName TTS string for VR recognition of the mobile application name
- * @param vrSynonyms Additional voice recognition commands
- * @param hmiDisplayLanguageDesired Current app's expected VR+TTS language
- * @param resumeHash ID used to uniquely identify current state of all app data that can persist through connection cycles
- * @param dayColorScheme The color scheme to be used on a head unit using a "light" or "day" color scheme.
- * @param nightColorScheme The color scheme to be used on a head unit using a "dark" or "night" color scheme
- * @return A SDLRegisterAppInterface object
- */
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId fullAppId:(nullable NSString *)fullAppId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme;
-
-/**
- * Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
- *
- * SDLSyncMsgVersion, Required
- *
- * @since SDL 1.0
- */
-@property (strong, nonatomic) SDLSyncMsgVersion *syncMsgVersion __deprecated_msg(("Use sdlMsgVersion instead"));
-
-/**
- * Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
- *
- * SDLMsgVersion, Required
- *
- * @since SDL 1.0
- */
-@property (strong, nonatomic) SDLMsgVersion *sdlMsgVersion;
-
-/**
- * The mobile application's name. This name is displayed in the SDL Mobile Applications menu. It also serves as the unique identifier of the application for SmartDeviceLink. Applications with the same name will be rejected.
- *
- * 1. Needs to be unique over all applications. Applications with the same name will be rejected.
- * 2. May not be empty.
- * 3. May not start with a new line character.
- * 4. May not interfere with any name or synonym of previously registered applications and any predefined blacklist of words (global commands).
- *
- * String, Required, Max length 100 chars
- *
- * @since SDL 1.0
- */
-@property (strong, nonatomic) NSString *appName;
-
-/**
- * Text-to-speech string for voice recognition of the mobile application name. Meant to overcome any failing on speech engine in properly pronouncing / understanding app name.
- *
- * 1. Needs to be unique over all applications.
- * 2. May not be empty.
- * 3. May not start with a new line character.
- *
- * Array of SDLTTSChunk, Optional, Array size 1 - 100
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *ttsName;
-
-/**
- * Provides an abbreviated version of the app name (if needed), that will be displayed on head units that support very few characters. If not provided, the appName is used instead (and will be truncated if too long). It's recommended that this string be no longer than 5 characters.
- *
- * Legacy head units may limit the number of characters in an app name.
- *
- * String, Optional, Max length 100 chars
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSString *ngnMediaScreenAppName;
-
-/**
- * Defines additional voice recognition commands
- *
- * @discussion May not interfere with any app name of previously registered applications and any predefined blacklist of words (global commands).
- *
- * Array of Strings, Optional, Array length 1 - 100, Max String length 40
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<NSString *> *vrSynonyms;
-
-/**
- * Indicates if the application is a media or a non-media application. Media applications will appear in the head unit's media source list and can use the `MEDIA` template.
- *
- * Boolean, Required
- *
- * @since SDL 1.0
- */
-@property (strong, nonatomic) NSNumber<SDLBool> *isMediaApplication;
-
-/**
- * App's starting VR+TTS language. If there is a mismatch with the head unit, the app will be able to change its language with ChangeRegistration prior to app being brought into focus.
- *
- * SDLLanguage, Required
- *
- * @since SDL 1.0
- */
-@property (strong, nonatomic) SDLLanguage languageDesired;
-
-/**
- * Current app's expected display language. If there is a mismatch with the head unit, the app will be able to change its language with ChangeRegistration prior to app being brought into focus.
- *
- * SDLLanguage, Required
- *
- * @since SDL 2.0
- */
-@property (strong, nonatomic) SDLLanguage hmiDisplayLanguageDesired;
-
-/**
- * List of all applicable app HMI types stating which HMI classifications to be given to the app.
- *
- * Array of SDLAppHMIType, Optional, Array size 1 - 100
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLAppHMIType> *appHMIType;
-
-/**
- * ID used to uniquely identify a previous state of all app data that can persist through connection cycles (e.g. ignition cycles). This registered data (commands, submenus, choice sets, etc.) can be reestablished without needing to explicitly re-send each piece. If omitted, then the previous state of an app's commands, etc. will not be restored.
- *
- * When sending hashID, all RegisterAppInterface parameters should still be provided (e.g. ttsName, etc.).
- *
- * String, Optional, max length 100 chars
- *
- * @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) NSString *hashID;
-
-/**
- * Information about the connecting device.
- *
- * SDLDeviceInfo, Optional
- *
- * @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) SDLDeviceInfo *deviceInfo;
-
-/**
- * ID used to validate app with policy table entries.
- *
- * String, Required, max length 100
- *
- * @see `fullAppID`
- *
- * @since SDL 2.0
- */
-@property (strong, nonatomic) NSString *appID;
-
-/**
- * A full UUID appID used to validate app with policy table entries.
- *
- * @discussion The `fullAppId` is used to authenticate apps that connect with head units that implement SDL Core v.5.0 and newer. If connecting with older head units, the `fullAppId` can be truncated to create the required `appId` needed to register the app. The `appId` is the first 10 non-dash ("-") characters of the `fullAppID` (e.g. if you have a `fullAppId` of 123e4567-e89b-12d3-a456-426655440000, the `appId` will be 123e4567e8).
- *
- * String, Optional
- *
- * @since SDL 5.0
- */
-@property (nullable, strong, nonatomic) NSString *fullAppID;
-
-/**
- * Contains detailed information about the registered application.
- *
- * SDLAppInfo, Optional
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) SDLAppInfo *appInfo;
-
-/**
- * The color scheme to be used on a head unit using a "light" or "day" color scheme. The OEM may only support this theme if their head unit only has a light color scheme.
- *
- * SDLTemplateColorScheme, Optional
- *
- * @since SDL 5.0
- */
-@property (strong, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
-
-/**
- * The color scheme to be used on a head unit using a "dark" or "night" color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.
- *
- * SDLTemplateColorScheme, Optional
- *
- * @since SDL 5.0
- */
-@property (strong, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRegisterAppInterface.m b/SmartDeviceLink/SDLRegisterAppInterface.m
deleted file mode 100644
index 6fa2ed638..000000000
--- a/SmartDeviceLink/SDLRegisterAppInterface.m
+++ /dev/null
@@ -1,271 +0,0 @@
-// SDLRegisterAppInterface.m
-//
-
-
-#import "SDLRegisterAppInterface.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLAppHMIType.h"
-#import "SDLAppInfo.h"
-#import "SDLDeviceInfo.h"
-#import "SDLGlobals.h"
-#import "SDLLanguage.h"
-#import "SDLLifecycleConfiguration.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLSyncMsgVersion.h"
-#import "SDLMsgVersion.h"
-#import "SDLTemplateColorScheme.h"
-#import "SDLTTSChunk.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLRegisterAppInterface
-
-#pragma mark - Lifecycle
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameRegisterAppInterface]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration {
- NSArray<SDLAppHMIType> *allHMITypes = lifecycleConfiguration.additionalAppTypes ? [lifecycleConfiguration.additionalAppTypes arrayByAddingObject:lifecycleConfiguration.appType] : @[lifecycleConfiguration.appType];
-
- return [self initWithAppName:lifecycleConfiguration.appName
- appId:lifecycleConfiguration.appId
- fullAppId:lifecycleConfiguration.fullAppId
- languageDesired:lifecycleConfiguration.language
- isMediaApp:lifecycleConfiguration.isMedia
- appTypes:allHMITypes
- shortAppName:lifecycleConfiguration.shortAppName
- ttsName:lifecycleConfiguration.ttsName
- vrSynonyms:lifecycleConfiguration.voiceRecognitionCommandNames
- hmiDisplayLanguageDesired:lifecycleConfiguration.language
- resumeHash:lifecycleConfiguration.resumeHash
- dayColorScheme:lifecycleConfiguration.dayColorScheme
- nightColorScheme:lifecycleConfiguration.nightColorScheme];
-}
-
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.appName = appName;
- self.appID = appId;
- self.fullAppID = nil;
- self.languageDesired = languageDesired;
-
- self.hmiDisplayLanguageDesired = languageDesired;
-
- UInt8 majorVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(0, 1)].intValue;
- UInt8 minorVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(2, 1)].intValue;
- UInt8 patchVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(4, 1)].intValue;
- self.sdlMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:majorVersion minorVersion:minorVersion patchVersion:patchVersion];
- self.appInfo = [SDLAppInfo currentAppInfo];
- self.deviceInfo = [SDLDeviceInfo currentDevice];
- self.correlationID = @1;
- self.isMediaApplication = @NO;
-
- return self;
-}
-
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName {
- self = [self initWithAppName:appName appId:appId languageDesired:languageDesired];
- if (!self) {
- return nil;
- }
-
- self.isMediaApplication = @(isMediaApp);
- self.appHMIType = appTypes;
- self.ngnMediaScreenAppName = shortAppName;
-
- return self;
-}
-
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash {
- self = [self initWithAppName:appName appId:appId languageDesired:languageDesired isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName];
- if (!self) {
- return nil;
- }
-
- self.ttsName = [ttsName copy];
- self.vrSynonyms = [vrSynonyms copy];
- self.hmiDisplayLanguageDesired = hmiDisplayLanguageDesired;
- self.hashID = resumeHash;
-
- return self;
-}
-
-- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId fullAppId:(nullable NSString *)fullAppId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- self = [self initWithAppName:appName appId:appId languageDesired:languageDesired isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName ttsName:ttsName vrSynonyms:vrSynonyms hmiDisplayLanguageDesired:hmiDisplayLanguageDesired resumeHash:resumeHash];
-#pragma clang diagnostic pop
-
- if (!self) { return nil; }
-
- self.fullAppID = fullAppId;
- self.dayColorScheme = dayColorScheme;
- self.nightColorScheme = nightColorScheme;
-
- return self;
-}
-
-#pragma mark - Getters and Setters
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (void)setSyncMsgVersion:(SDLSyncMsgVersion *)syncMsgVersion {
- SDLMsgVersion * sdlMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:(uint8_t)syncMsgVersion.majorVersion.unsignedIntValue minorVersion:(uint8_t)syncMsgVersion.minorVersion.unsignedIntValue patchVersion:(uint8_t)syncMsgVersion.patchVersion.unsignedIntValue];
- [self.parameters sdl_setObject:sdlMsgVersion forName:SDLRPCParameterNameSyncMessageVersion];
-}
-
-- (SDLSyncMsgVersion *)syncMsgVersion {
- SDLMsgVersion * sdlMsgVersion = [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLMsgVersion.class error:nil];
- return [[SDLSyncMsgVersion alloc] initWithMajorVersion:(uint8_t)sdlMsgVersion.majorVersion.unsignedIntValue minorVersion:(uint8_t)sdlMsgVersion.minorVersion.unsignedIntValue patchVersion:(uint8_t)sdlMsgVersion.patchVersion.unsignedIntValue];
-}
-#pragma clang diagnostic pop
-
-- (void)setSdlMsgVersion:(SDLMsgVersion *)sdlMsgVersion {
- [self.parameters sdl_setObject:sdlMsgVersion forName:SDLRPCParameterNameSyncMessageVersion];
-}
-
-- (SDLMsgVersion *)sdlMsgVersion {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLMsgVersion.class error:nil];
-}
-
-- (void)setAppName:(NSString *)appName {
- [self.parameters sdl_setObject:appName forName:SDLRPCParameterNameAppName];
-}
-
-- (NSString *)appName {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAppName ofClass:NSString.class error:&error];
-}
-
-- (void)setTtsName:(nullable NSArray<SDLTTSChunk *> *)ttsName {
- [self.parameters sdl_setObject:ttsName forName:SDLRPCParameterNameTTSName];
-}
-
-- (nullable NSArray<SDLTTSChunk *> *)ttsName {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSName ofClass:SDLTTSChunk.class error:nil];
-}
-
-- (void)setNgnMediaScreenAppName:(nullable NSString *)ngnMediaScreenAppName {
- [self.parameters sdl_setObject:ngnMediaScreenAppName forName:SDLRPCParameterNameNGNMediaScreenAppName];
-}
-
-- (nullable NSString *)ngnMediaScreenAppName {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameNGNMediaScreenAppName ofClass:NSString.class error:nil];
-}
-
-- (void)setVrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms {
- [self.parameters sdl_setObject:vrSynonyms forName:SDLRPCParameterNameVRSynonyms];
-}
-
-- (nullable NSArray<NSString *> *)vrSynonyms {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRSynonyms ofClass:NSString.class error:nil];
-}
-
-- (void)setIsMediaApplication:(NSNumber<SDLBool> *)isMediaApplication {
- [self.parameters sdl_setObject:isMediaApplication forName:SDLRPCParameterNameIsMediaApplication];
-}
-
-- (NSNumber<SDLBool> *)isMediaApplication {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameIsMediaApplication ofClass:NSNumber.class error:&error];
-}
-
-- (void)setLanguageDesired:(SDLLanguage)languageDesired {
- [self.parameters sdl_setObject:languageDesired forName:SDLRPCParameterNameLanguageDesired];
-}
-
-- (SDLLanguage)languageDesired {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguageDesired error:&error];
-}
-
-- (void)setHmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired {
- [self.parameters sdl_setObject:hmiDisplayLanguageDesired forName:SDLRPCParameterNameHMIDisplayLanguageDesired];
-}
-
-- (SDLLanguage)hmiDisplayLanguageDesired {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguageDesired error:&error];
-}
-
-- (void)setAppHMIType:(nullable NSArray<SDLAppHMIType> *)appHMIType {
- [self.parameters sdl_setObject:appHMIType forName:SDLRPCParameterNameAppHMIType];
-}
-
-- (nullable NSArray<SDLAppHMIType> *)appHMIType {
- return [self.parameters sdl_enumsForName:SDLRPCParameterNameAppHMIType error:nil];
-}
-
-- (void)setHashID:(nullable NSString *)hashID {
- [self.parameters sdl_setObject:hashID forName:SDLRPCParameterNameHashId];
-}
-
-- (nullable NSString *)hashID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHashId ofClass:NSString.class error:nil];
-}
-
-- (void)setDeviceInfo:(nullable SDLDeviceInfo *)deviceInfo {
- [self.parameters sdl_setObject:deviceInfo forName:SDLRPCParameterNameDeviceInfo];
-}
-
-- (nullable SDLDeviceInfo *)deviceInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceInfo ofClass:SDLDeviceInfo.class error:nil];
-}
-
-- (void)setAppID:(NSString *)appID {
- [self.parameters sdl_setObject:appID forName:SDLRPCParameterNameAppId];
-}
-
-- (NSString *)appID {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error];
-}
-
-- (void)setFullAppID:(nullable NSString *)fullAppID {
- [self.parameters sdl_setObject:fullAppID forName:SDLRPCParameterNameFullAppID];
-}
-
-- (nullable NSString *)fullAppID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFullAppID ofClass:NSString.class error:nil];
-}
-
-- (void)setAppInfo:(nullable SDLAppInfo *)appInfo {
- [self.parameters sdl_setObject:appInfo forName:SDLRPCParameterNameAppInfo];
-}
-
-- (nullable SDLAppInfo *)appInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAppInfo ofClass:SDLAppInfo.class error:nil];
-}
-
-- (void)setDayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme {
- [self.parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme];
-}
-
-- (nullable SDLTemplateColorScheme *)dayColorScheme {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
-}
-
-- (void)setNightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
- [self.parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme];
-}
-
-- (nullable SDLTemplateColorScheme *)nightColorScheme {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h
deleted file mode 100644
index 20c9cf4e2..000000000
--- a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h
+++ /dev/null
@@ -1,215 +0,0 @@
-// SDLRegisterAppInterfaceResponse.h
-//
-
-
-#import "SDLRPCResponse.h"
-
-#import "SDLHMIZoneCapabilities.h"
-#import "SDLLanguage.h"
-#import "SDLPrerecordedSpeech.h"
-#import "SDLSpeechCapabilities.h"
-#import "SDLVrCapabilities.h"
-
-@class SDLAudioPassThruCapabilities;
-@class SDLButtonCapabilities;
-@class SDLDisplayCapabilities;
-@class SDLHMICapabilities;
-@class SDLPresetBankCapabilities;
-@class SDLSoftButtonCapabilities;
-@class SDLSyncMsgVersion;
-@class SDLMsgVersion;
-@class SDLVehicleType;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Response to SDLRegisterAppInterface
- *
- * @since SDL 1.0
- */
-@interface SDLRegisterAppInterfaceResponse : SDLRPCResponse
-
-/**
- * Specifies the negotiated version number of the SmartDeviceLink protocol that is to be supported by the mobile application.
- *
- * SDLSyncMsgVersion, Optional
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) SDLSyncMsgVersion *syncMsgVersion __deprecated_msg(("Use sdlMsgVersion Instead"));
-
-/**
- * Specifies the negotiated version number of the SmartDeviceLink protocol that is to be supported by the mobile application.
- *
- * SDLMsgVersion, Optional
- *
- * @since SDL 1.0
- */
-@property(nullable, strong, nonatomic) SDLMsgVersion *sdlMsgVersion;
-
-/**
- * The currently active VR+TTS language on the module. See "Language" for options.
- *
- * SDLLanguage, Optional
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) SDLLanguage language;
-
-/**
- * The currently active display language on the module. See "Language" for options.
- *
- * SDLLanguage, Optional
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) SDLLanguage hmiDisplayLanguage;
-
-/**
- * Contains information about the display's capabilities.
- *
- * SDLDisplayCapabilities, Optional
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) SDLDisplayCapabilities *displayCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
-
-/**
- * Contains information about the head unit button capabilities.
- *
- * Array of SDLButtonCapabilities, Optional, Array of length 1 - 100
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
-
-/**
- * Contains information about the head unit soft button capabilities.
- *
- * Array of SDLSoftButtonCapabilities, Optional, Array of length 1 - 100
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
-
-/**
- * If returned, the platform supports custom on-screen Presets
- *
- * SDLPresetBankCapabilities, Optional
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) SDLPresetBankCapabilities *presetBankCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
-
-/**
- * Contains information about the HMI zone capabilities.
- *
- * Array of SDLHMIZoneCapabilities, Optional, Array of length 1 - 100
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLHMIZoneCapabilities> *hmiZoneCapabilities;
-
-/**
- * Contains information about the text-to-speech capabilities.
- *
- * Array of SDLSpeechCapabilities, Optional, Array of length 1 - 100
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLSpeechCapabilities> *speechCapabilities;
-
-/**
- * Contains a list of prerecorded speech items present on the platform.
- *
- * Array of SDLPrerecordedSpeech, Optional, Array of length 1 - 100
- *
- * @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLPrerecordedSpeech> *prerecordedSpeech;
-
-/**
- * Contains information about the VR capabilities.
- *
- * Array of SDLVRCapabilities, Optional, Array of length 1 - 100
- *
- * @since SDL 1.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLVRCapabilities> *vrCapabilities;
-
-/**
- * Describes different audio type configurations for PerformAudioPassThru, e.g. {8kHz,8-bit,PCM}. The audio is recorded in monaural.
- *
- * Array of SDLAudioPassThruCapabilities, Optional, Array of length 1 - 100
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLAudioPassThruCapabilities *> *audioPassThruCapabilities;
-
-/**
- * Describes different audio type configurations for the audio PCM stream service, e.g. {8kHz,8-bit,PCM}
- *
- * SDLAudioPassThruCapabilities, Optional
- *
- * @since SDL 4.1
- */
-@property (nullable, strong, nonatomic) SDLAudioPassThruCapabilities *pcmStreamCapabilities;
-
-/**
- * Specifies the connected vehicle's type.
- *
- * SDLVehicleType, Optional
- *
- * @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) SDLVehicleType *vehicleType;
-
-/**
- * Specifies the white-list of supported diagnostic modes (0x00-0xFF) capable for DiagnosticMessage requests. If a mode outside this list is requested, it will be rejected.
- *
- * Array of Integers, Optional, Array of length 1 - 100, Value range: 0 - 255
- *
- * @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) NSArray<NSNumber *> *supportedDiagModes;
-
-/**
- * Specifies the HMI capabilities.
- *
- * SDLHMICapabilities, Optional
- *
- * @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) SDLHMICapabilities *hmiCapabilities;
-
-/**
- * The version of SDL Core running on the connected head unit
- *
- * String, Optional, Max length: 100
- *
- * @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) NSString *sdlVersion;
-
-/**
- * The software version of the system that implements the SmartDeviceLink core.
- *
- * String, Optional, Max length: 100
- *
- * @since SDL 3.0
- */
-@property (nullable, strong, nonatomic) NSString *systemSoftwareVersion;
-
-/**
- * Existence of apps icon at system. If true, apps icon was resumed at system. If false, apps icon is not resumed at system.
- *
- * Bool, Optional
- *
- * @since SDL 5.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *iconResumed;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m
deleted file mode 100644
index 5c081e9e6..000000000
--- a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m
+++ /dev/null
@@ -1,208 +0,0 @@
-// SDLRegisterAppInterfaceResponse.m
-//
-
-
-#import "SDLRegisterAppInterfaceResponse.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLAudioPassThruCapabilities.h"
-#import "SDLButtonCapabilities.h"
-#import "SDLDisplayCapabilities.h"
-#import "SDLHMICapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLPresetBankCapabilities.h"
-#import "SDLSoftButtonCapabilities.h"
-#import "SDLSyncMsgVersion.h"
-#import "SDLMsgVersion.h"
-#import "SDLVehicleType.h"
-#import "SDLVrCapabilities.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLRegisterAppInterfaceResponse
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameRegisterAppInterface]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (void)setSyncMsgVersion:(nullable SDLSyncMsgVersion *)syncMsgVersion {
- if (syncMsgVersion == nil) {
- [self.parameters sdl_setObject:nil forName:SDLRPCParameterNameSyncMessageVersion];
- return;
- }
-
- SDLMsgVersion *sdlMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:(uint8_t)syncMsgVersion.majorVersion.unsignedIntValue minorVersion:(uint8_t)syncMsgVersion.minorVersion.unsignedIntValue patchVersion:(uint8_t)syncMsgVersion.patchVersion.unsignedIntValue];
- [self.parameters sdl_setObject:sdlMsgVersion forName:SDLRPCParameterNameSyncMessageVersion];
-}
-
-- (nullable SDLSyncMsgVersion *)syncMsgVersion {
- SDLMsgVersion *sdlMsgVersion = [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLMsgVersion.class error:nil];
-
- if(sdlMsgVersion == nil) {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLSyncMsgVersion.class error:nil];
- }
-
- return [[SDLSyncMsgVersion alloc] initWithMajorVersion:(uint8_t)sdlMsgVersion.majorVersion.unsignedIntValue minorVersion:(uint8_t)sdlMsgVersion.minorVersion.unsignedIntValue patchVersion:(uint8_t)sdlMsgVersion.patchVersion.unsignedIntValue];
-}
-
-- (void)setSdlMsgVersion:(nullable SDLMsgVersion *)sdlMsgVersion {
- [self.parameters sdl_setObject:sdlMsgVersion forName:SDLRPCParameterNameSyncMessageVersion];
-}
-
-- (nullable SDLMsgVersion *)sdlMsgVersion {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLMsgVersion.class error:nil];
-}
-
-- (void)setLanguage:(nullable SDLLanguage)language {
- [self.parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage];
-}
-
-- (nullable SDLLanguage)language {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguage error:nil];
-}
-
-- (void)setHmiDisplayLanguage:(nullable SDLLanguage)hmiDisplayLanguage {
- [self.parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage];
-}
-
-- (nullable SDLLanguage)hmiDisplayLanguage {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:nil];
-}
-
-- (void)setDisplayCapabilities:(nullable SDLDisplayCapabilities *)displayCapabilities {
- [self.parameters sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities];
-}
-
-- (nullable SDLDisplayCapabilities *)displayCapabilities {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapabilities.class error:nil];
-}
-
-- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
- [self.parameters sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];
-}
-
-- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil];
-}
-
-- (void)setSoftButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
- [self.parameters sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities];
-}
-
-- (nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil];
-}
-
-- (void)setPresetBankCapabilities:(nullable SDLPresetBankCapabilities *)presetBankCapabilities {
- [self.parameters sdl_setObject:presetBankCapabilities forName:SDLRPCParameterNamePresetBankCapabilities];
-}
-
-- (nullable SDLPresetBankCapabilities *)presetBankCapabilities {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePresetBankCapabilities ofClass:SDLPresetBankCapabilities.class error:nil];
-}
-
-- (void)setHmiZoneCapabilities:(nullable NSArray<SDLHMIZoneCapabilities> *)hmiZoneCapabilities {
- [self.parameters sdl_setObject:hmiZoneCapabilities forName:SDLRPCParameterNameHMIZoneCapabilities];
-}
-
-- (nullable NSArray<SDLHMIZoneCapabilities> *)hmiZoneCapabilities {
- return [self.parameters sdl_enumsForName:SDLRPCParameterNameHMIZoneCapabilities error:nil];
-}
-
-- (void)setSpeechCapabilities:(nullable NSArray<SDLSpeechCapabilities> *)speechCapabilities {
- [self.parameters sdl_setObject:speechCapabilities forName:SDLRPCParameterNameSpeechCapabilities];
-}
-
-- (nullable NSArray<SDLSpeechCapabilities> *)speechCapabilities {
- return [self.parameters sdl_enumsForName:SDLRPCParameterNameSpeechCapabilities error:nil];
-}
-
-- (void)setPrerecordedSpeech:(nullable NSArray<SDLPrerecordedSpeech> *)prerecordedSpeech {
- [self.parameters sdl_setObject:prerecordedSpeech forName:SDLRPCParameterNamePrerecordedSpeech];
-}
-
-- (nullable NSArray<SDLPrerecordedSpeech> *)prerecordedSpeech {
- return [self.parameters sdl_enumsForName:SDLRPCParameterNamePrerecordedSpeech error:nil];
-}
-
-- (void)setVrCapabilities:(nullable NSArray<SDLVRCapabilities> *)vrCapabilities {
- [self.parameters sdl_setObject:vrCapabilities forName:SDLRPCParameterNameVRCapabilities];
-}
-
-- (nullable NSArray<SDLVRCapabilities> *)vrCapabilities {
- return [self.parameters sdl_enumsForName:SDLRPCParameterNameVRCapabilities error:nil];
-}
-
-- (void)setAudioPassThruCapabilities:(nullable NSArray<SDLAudioPassThruCapabilities *> *)audioPassThruCapabilities {
- [self.parameters sdl_setObject:audioPassThruCapabilities forName:SDLRPCParameterNameAudioPassThruCapabilities];
-}
-
-- (nullable NSArray<SDLAudioPassThruCapabilities *> *)audioPassThruCapabilities {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameAudioPassThruCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil];
-}
-
-- (void)setPcmStreamCapabilities:(nullable SDLAudioPassThruCapabilities *)pcmStreamCapabilities {
- [self.parameters sdl_setObject:pcmStreamCapabilities forName:SDLRPCParameterNamePCMStreamCapabilities];
-}
-
-- (nullable SDLAudioPassThruCapabilities *)pcmStreamCapabilities {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePCMStreamCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil];
-}
-
-- (void)setVehicleType:(nullable SDLVehicleType *)vehicleType {
- [self.parameters sdl_setObject:vehicleType forName:SDLRPCParameterNameVehicleType];
-}
-
-- (nullable SDLVehicleType *)vehicleType {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameVehicleType ofClass:SDLVehicleType.class error:nil];
-}
-
-- (void)setSupportedDiagModes:(nullable NSArray<NSNumber *> *)supportedDiagModes {
- [self.parameters sdl_setObject:supportedDiagModes forName:SDLRPCParameterNameSupportedDiagnosticModes];
-}
-
-- (nullable NSArray<NSNumber *> *)supportedDiagModes {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameSupportedDiagnosticModes ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHmiCapabilities:(nullable SDLHMICapabilities *)hmiCapabilities {
- [self.parameters sdl_setObject:hmiCapabilities forName:SDLRPCParameterNameHMICapabilities];
-}
-
-- (nullable SDLHMICapabilities *)hmiCapabilities {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHMICapabilities ofClass:SDLHMICapabilities.class error:nil];
-}
-
-- (void)setSdlVersion:(nullable NSString *)sdlVersion {
- [self.parameters sdl_setObject:sdlVersion forName:SDLRPCParameterNameSDLVersion];
-}
-
-- (nullable NSString *)sdlVersion {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSDLVersion ofClass:NSString.class error:nil];
-}
-
-- (void)setSystemSoftwareVersion:(nullable NSString *)systemSoftwareVersion {
- [self.parameters sdl_setObject:systemSoftwareVersion forName:SDLRPCParameterNameSystemSoftwareVersion];
-}
-
-- (nullable NSString *)systemSoftwareVersion {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemSoftwareVersion ofClass:NSString.class error:nil];
-}
-
-- (void)setIconResumed:(nullable NSNumber<SDLBool> *)iconResumed {
- [self.parameters sdl_setObject:iconResumed forName:SDLRPCParameterNameIconResumed];
-}
-
-- (nullable NSNumber<SDLBool> *)iconResumed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameIconResumed ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRemoteControlCapabilities.h b/SmartDeviceLink/SDLRemoteControlCapabilities.h
deleted file mode 100644
index 2cdbf4f2e..000000000
--- a/SmartDeviceLink/SDLRemoteControlCapabilities.h
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// SDLRemoteControlCapabilities.h
-//
-
-#import "SDLRPCMessage.h"
-
-@class SDLAudioControlCapabilities;
-@class SDLButtonCapabilities;
-@class SDLClimateControlCapabilities;
-@class SDLHMISettingsControlCapabilities;
-@class SDLLightControlCapabilities;
-@class SDLRadioControlCapabilities;
-@class SDLSeatControlCapabilities;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Capabilities of the remote control feature
- */
-@interface SDLRemoteControlCapabilities : SDLRPCStruct
-
-/// Constructs a newly allocated SDLRemoteControlCapabilities object
-///
-/// @param climateControlCapabilities Array of SDLClimateControlCapabilities
-/// @param radioControlCapabilities Array of SDLRadioControlCapabilities
-/// @param buttonCapabilities Array of SDLButtonCapabilities
-/// @return An instance of the SDLRemoteControlCapabilities class
-- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities __deprecated_msg("Use initWithClimateControlCapabilities:climateControlCapabilities:radioControlCapabilities:buttonCapabilities:seatControlCapabilities:audioControlCapabilities:hmiSettingsControlCapabilities:lightControlCapabilities: instead");
-
-/**
- Constructs a newly allocated SDLRemoteControlCapabilities object with given parameters
-
- @param climateControlCapabilities Array of SDLClimateControlCapabilities
- @param radioControlCapabilities Array of SDLRadioControlCapabilities
- @param buttonCapabilities Array of SDLButtonCapabilities
- @param lightControlCapabilities Array of SDLLightControlCapabilities
- @param seatControlCapabilities Array of SDLSeatControlCapabilities
-
- @return An instance of the SDLRemoteControlCapabilities class
-
- */
-- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities seatControlCapabilities:(nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities audioControlCapabilities:(nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities hmiSettingsControlCapabilities:(nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities lightControlCapabilities:(nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities;
-
-/**
- * If included, the platform supports RC climate controls.
- * For this baseline version, maxsize=1. i.e. only one climate control module is supported.
- *
- * Optional, Array of SDLClimateControlCapabilities, Array length 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLClimateControlCapabilities *> *climateControlCapabilities;
-
-/**
- * If included, the platform supports RC radio controls.
- * For this baseline version, maxsize=1. i.e. only one radio control module is supported.
- *
- * Optional, Array of SDLRadioControlCapabilities, Array length 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLRadioControlCapabilities *> *radioControlCapabilities;
-
-/**
- * If included, the platform supports RC button controls with the included button names.
- *
- * Optional, Array of SDLButtonCapabilities, Array length 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
-
-/**
- * If included, the platform supports seat controls.
- *
- * Optional, Array of SDLSeatControlCapabilities, Array length 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLSeatControlCapabilities *> *seatControlCapabilities;
-
-/**
- * If included, the platform supports audio controls.
- *
- * Optional, Array of SDLAudioControlCapabilities, Array length 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLAudioControlCapabilities *> *audioControlCapabilities;
-
-/**
- * If included, the platform supports hmi setting controls.
- *
- * Optional, Array of SDLHMISettingsControlCapabilities, Array length 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLHMISettingsControlCapabilities *> *hmiSettingsControlCapabilities;
-
-/**
- * If included, the platform supports light controls.
- *
- * Optional, Array of SDLLightControlCapabilities, Array length 1 - 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLLightControlCapabilities *> *lightControlCapabilities;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRemoteControlCapabilities.m b/SmartDeviceLink/SDLRemoteControlCapabilities.m
deleted file mode 100644
index 47b747aec..000000000
--- a/SmartDeviceLink/SDLRemoteControlCapabilities.m
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// SDLRemoteControlCapabilities.m
-//
-
-#import "SDLAudioControlCapabilities.h"
-#import "SDLButtonCapabilities.h"
-#import "SDLClimateControlCapabilities.h"
-#import "SDLHMISettingsControlCapabilities.h"
-#import "SDLLightControlCapabilities.h"
-#import "SDLRemoteControlCapabilities.h"
-#import "SDLRadioControlCapabilities.h"
-#import "SDLSeatControlCapabilities.h"
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLRemoteControlCapabilities
-
-- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
-
- return [self initWithClimateControlCapabilities:climateControlCapabilities radioControlCapabilities:radioControlCapabilities buttonCapabilities:buttonCapabilities seatControlCapabilities:nil audioControlCapabilities:nil hmiSettingsControlCapabilities:nil lightControlCapabilities:nil];
-}
-
-- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities seatControlCapabilities:(nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities audioControlCapabilities:(nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities hmiSettingsControlCapabilities:(nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities lightControlCapabilities:(nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- self.climateControlCapabilities = climateControlCapabilities;
- self.radioControlCapabilities = radioControlCapabilities;
- self.buttonCapabilities = buttonCapabilities;
- self.seatControlCapabilities = seatControlCapabilities;
- self.audioControlCapabilities = audioControlCapabilities;
- self.hmiSettingsControlCapabilities = hmiSettingsControlCapabilities;
- self.lightControlCapabilities = lightControlCapabilities;
-
- return self;
-}
-
-- (void)setClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities {
- [self.store sdl_setObject:climateControlCapabilities forName:SDLRPCParameterNameClimateControlCapabilities];
-}
-
-- (nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameClimateControlCapabilities ofClass:SDLClimateControlCapabilities.class error:nil];
-}
-
--(void)setRadioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities {
- [self.store sdl_setObject:radioControlCapabilities forName:SDLRPCParameterNameRadioControlCapabilities ];
-}
-
-- (nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameRadioControlCapabilities ofClass:SDLRadioControlCapabilities.class error:nil];
-}
-
-- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
- [self.store sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];}
-
-- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil];
-}
-
-- (void)setSeatControlCapabilities:(nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities {
- [self.store sdl_setObject:seatControlCapabilities forName:SDLRPCParameterNameSeatControlCapabilities];
-}
-
-- (nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameSeatControlCapabilities ofClass:SDLSeatControlCapabilities.class error:nil];
-}
-
-- (void)setAudioControlCapabilities:(nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities {
- [self.store sdl_setObject:audioControlCapabilities forName:SDLRPCParameterNameAudioControlCapabilities];
-}
-
-- (nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameAudioControlCapabilities ofClass:SDLAudioControlCapabilities.class error:nil];
-
-}
-
-- (void)setHmiSettingsControlCapabilities:(nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities {
- // TODO: This parameter should not be an array according to the spec, in a future major version change, this parameter's type should be altered
- if (hmiSettingsControlCapabilities.count == 0) {
- [self.store sdl_setObject:nil forName:SDLRPCParameterNameHmiSettingsControlCapabilities];
- return;
- }
-
- SDLHMISettingsControlCapabilities *capability = hmiSettingsControlCapabilities.firstObject;
-
- [self.store sdl_setObject:capability forName:SDLRPCParameterNameHmiSettingsControlCapabilities];
-}
-
-- (nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities {
- SDLHMISettingsControlCapabilities *capability = [self.store sdl_objectForName:SDLRPCParameterNameHmiSettingsControlCapabilities ofClass:SDLHMISettingsControlCapabilities.class error:nil];
- if (capability == nil) { return nil; }
-
- return @[capability];
-}
-
-- (void)setLightControlCapabilities:(nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities {
- // TODO: This parameter should not be an array according to the spec, in a future major version change, this parameter's type should be altered
- if (lightControlCapabilities.count == 0) {
- [self.store sdl_setObject:nil forName:SDLRPCParameterNameLightControlCapabilities];
- return;
- }
-
- SDLLightControlCapabilities *capability = lightControlCapabilities.firstObject;
-
- [self.store sdl_setObject:capability forName:SDLRPCParameterNameLightControlCapabilities];
-}
-
-- (nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities {
- SDLLightControlCapabilities *capability = [self.store sdl_objectForName:SDLRPCParameterNameLightControlCapabilities ofClass:SDLLightControlCapabilities.class error:nil];
- if (capability == nil) { return nil; }
-
- return @[capability];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRequestType.h b/SmartDeviceLink/SDLRequestType.h
deleted file mode 100644
index 9f56d7bc3..000000000
--- a/SmartDeviceLink/SDLRequestType.h
+++ /dev/null
@@ -1,121 +0,0 @@
-// SDLRequestType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- A type of system request. Used in SystemRequest.
- */
-typedef SDLEnum SDLRequestType SDL_SWIFT_ENUM;
-
-/**
- An HTTP request
- */
-extern SDLRequestType const SDLRequestTypeHTTP;
-
-/**
- A file resumption request
- */
-extern SDLRequestType const SDLRequestTypeFileResume;
-
-/**
- An authentication request
- */
-extern SDLRequestType const SDLRequestTypeAuthenticationRequest;
-
-/**
- An authentication challenge
- */
-extern SDLRequestType const SDLRequestTypeAuthenticationChallenge;
-
-/**
- An authentication acknowledgment
- */
-extern SDLRequestType const SDLRequestTypeAuthenticationAck;
-
-/**
- An proprietary formatted request
- */
-extern SDLRequestType const SDLRequestTypeProprietary;
-
-/**
- An Query Apps request
- */
-extern SDLRequestType const SDLRequestTypeQueryApps;
-
-/**
- A Launch Apps request
- */
-extern SDLRequestType const SDLRequestTypeLaunchApp;
-
-/**
- The URL for a lock screen icon
- */
-extern SDLRequestType const SDLRequestTypeLockScreenIconURL;
-
-/**
- A traffic message channel request
- */
-extern SDLRequestType const SDLRequestTypeTrafficMessageChannel;
-
-/**
- A driver profile request
- */
-extern SDLRequestType const SDLRequestTypeDriverProfile;
-
-/**
- A voice search request
- */
-extern SDLRequestType const SDLRequestTypeVoiceSearch;
-
-/**
- A navigation request
- */
-extern SDLRequestType const SDLRequestTypeNavigation;
-
-/**
- A phone request
- */
-extern SDLRequestType const SDLRequestTypePhone;
-
-/**
- A climate request
- */
-extern SDLRequestType const SDLRequestTypeClimate;
-
-/**
- A settings request
- */
-extern SDLRequestType const SDLRequestTypeSettings;
-
-/**
- A vehicle diagnostics request
- */
-extern SDLRequestType const SDLRequestTypeVehicleDiagnostics;
-
-/**
- An emergency request
- */
-extern SDLRequestType const SDLRequestTypeEmergency;
-
-/**
- A media request
- */
-extern SDLRequestType const SDLRequestTypeMedia;
-
-/**
- A firmware over-the-air request
- */
-extern SDLRequestType const SDLRequestTypeFOTA;
-
-/**
- A request that is OEM specific using the `RequestSubType` in SystemRequest
- */
-extern SDLRequestType const SDLRequestTypeOEMSpecific;
-
-/**
- A request for an icon url
- */
-extern SDLRequestType const SDLRequestTypeIconURL;
-
diff --git a/SmartDeviceLink/SDLResponseDispatcher.m b/SmartDeviceLink/SDLResponseDispatcher.m
deleted file mode 100644
index 7c5956616..000000000
--- a/SmartDeviceLink/SDLResponseDispatcher.m
+++ /dev/null
@@ -1,413 +0,0 @@
-//
-// SDLResponseDispatcher.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/8/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import "SDLResponseDispatcher.h"
-
-#import "NSMutableArray+Safe.h"
-#import "NSMutableDictionary+SafeRemove.h"
-#import "SDLAddCommand.h"
-#import "SDLAlert.h"
-#import "SDLButtonName.h"
-#import "SDLDeleteCommand.h"
-#import "SDLDeleteCommandResponse.h"
-#import "SDLError.h"
-#import "SDLGlobals.h"
-#import "SDLLogMacros.h"
-#import "SDLOnAudioPassThru.h"
-#import "SDLOnButtonEvent.h"
-#import "SDLOnButtonPress.h"
-#import "SDLOnCommand.h"
-#import "SDLPerformAudioPassThru.h"
-#import "SDLPerformAudioPassThruResponse.h"
-#import "SDLRPCResponse.h"
-#import "SDLResult.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLScrollableMessage.h"
-#import "SDLShow.h"
-#import "SDLSoftButton.h"
-#import "SDLSubscribeButton.h"
-#import "SDLUnsubscribeButton.h"
-#import "SDLUnsubscribeButtonResponse.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLResponseDispatcher ()
-
-@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
-
-@property (strong, nonatomic, readwrite) NSMapTable<SDLRPCCorrelationId *, SDLResponseHandler> *rpcResponseHandlerMap;
-@property (strong, nonatomic, readwrite) NSMutableDictionary<SDLRPCCorrelationId *, SDLRPCRequest *> *rpcRequestDictionary;
-@property (strong, nonatomic, readwrite) NSMapTable<SDLAddCommandCommandId *, SDLRPCCommandNotificationHandler> *commandHandlerMap;
-@property (strong, nonatomic, readwrite) NSMapTable<SDLSubscribeButtonName *, SDLRPCButtonNotificationHandler> *buttonHandlerMap;
-@property (strong, nonatomic, readwrite) NSMapTable<SDLSoftButtonId *, SDLRPCButtonNotificationHandler> *customButtonHandlerMap;
-@property (strong, nonatomic, readwrite, nullable) SDLAudioPassThruHandler audioPassThruHandler;
-
-@end
-
-
-// https://www.objc.io/issues/2-concurrency/low-level-concurrency-apis/#multiple-readers-single-writer
-@implementation SDLResponseDispatcher
-
-- (instancetype)init {
- return [self initWithNotificationDispatcher:nil];
-}
-
-- (instancetype)initWithNotificationDispatcher:(nullable id)dispatcher {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- if (@available(iOS 10.0, *)) {
- _readWriteQueue = dispatch_queue_create_with_target("com.sdl.lifecycle.responseDispatcher", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
- } else {
- _readWriteQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- }
-
- _rpcResponseHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
- _rpcRequestDictionary = [NSMutableDictionary dictionary];
- _commandHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
- _buttonHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
- _customButtonHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
-
- // Responses
- for (SDLNotificationName responseName in [SDLNotificationConstants allResponseNames]) {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlersForResponse:) name:responseName object:dispatcher];
- }
-
- // Buttons
- for (SDLNotificationName buttonNotificationName in [SDLNotificationConstants allButtonEventNotifications]) {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlerForButton:) name:buttonNotificationName object:dispatcher];
- }
-
- // Commands
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlerForCommand:) name:SDLDidReceiveCommandNotification object:dispatcher];
-
- // Audio Pass Thru
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlerForAudioPassThru:) name:SDLDidReceiveAudioPassThruNotification object:dispatcher];
-
- return self;
-}
-
-
-#pragma mark - Storage
-
-- (void)storeRequest:(SDLRPCRequest *)request handler:(nullable SDLResponseHandler)handler {
- __weak typeof(self) weakself = self;
- NSNumber *correlationId = request.correlationID;
-
- // Check for RPCs that require an extra handler
- if ([request isKindOfClass:[SDLAddCommand class]]) {
- SDLAddCommand *addCommand = (SDLAddCommand *)request;
- if (addCommand.cmdID == nil) {
- @throw [NSException sdl_missingIdException];
- }
- if (addCommand.handler != nil) {
- [self sdl_runAsyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
- strongself->_commandHandlerMap[addCommand.cmdID] = addCommand.handler;
- }];
- }
- } else if ([request isKindOfClass:[SDLSubscribeButton class]]) {
- // Convert SDLButtonName to NSString, since it doesn't conform to <NSCopying>
- SDLSubscribeButton *subscribeButton = (SDLSubscribeButton *)request;
- SDLButtonName buttonName = subscribeButton.buttonName;
- if (buttonName == nil) {
- @throw [NSException sdl_missingIdException];
- }
- if (subscribeButton.handler != nil) {
- [self sdl_runAsyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
- strongself->_buttonHandlerMap[buttonName] = subscribeButton.handler;
- }];
- }
- } else if ([request isKindOfClass:[SDLAlert class]]) {
- SDLAlert *alert = (SDLAlert *)request;
- [self sdl_addToCustomButtonHandlerMap:alert.softButtons];
- } else if ([request isKindOfClass:[SDLScrollableMessage class]]) {
- SDLScrollableMessage *scrollableMessage = (SDLScrollableMessage *)request;
- [self sdl_addToCustomButtonHandlerMap:scrollableMessage.softButtons];
- } else if ([request isKindOfClass:[SDLShow class]]) {
- SDLShow *show = (SDLShow *)request;
- [self sdl_addToCustomButtonHandlerMap:show.softButtons];
- } else if ([request isKindOfClass:[SDLPerformAudioPassThru class]]) {
- SDLPerformAudioPassThru *performAudioPassThru = (SDLPerformAudioPassThru *)request;
-
- [self sdl_runAsyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
- strongself->_audioPassThruHandler = performAudioPassThru.audioDataHandler;
- }];
- }
-
- // Always store the request, it's needed in some cases whether or not there was a handler (e.g. DeleteCommand).
- [self sdl_runAsyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
-
- strongself->_rpcRequestDictionary[correlationId] = request;
- if (handler != nil) {
- strongself->_rpcResponseHandlerMap[correlationId] = handler;
- }
- }];
-}
-
-- (void)clear {
- __weak typeof(self) weakself = self;
-
- __block NSArray<SDLResponseHandler> *handlers = nil;
- __block NSArray<SDLRPCRequest *> *requests = nil;
- [self sdl_runSyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
- NSMutableArray *handlerArray = [NSMutableArray array];
- NSMutableArray *requestArray = [NSMutableArray array];
-
- // When we get disconnected we have to delete all existing responseHandlers as they are not valid anymore
- for (SDLRPCCorrelationId *correlationID in strongself->_rpcResponseHandlerMap.dictionaryRepresentation) {
- SDLResponseHandler responseHandler = strongself->_rpcResponseHandlerMap[correlationID];
- SDLRPCRequest *request = strongself->_rpcRequestDictionary[correlationID];
-
- if (responseHandler != NULL) {
- [handlerArray addObject:responseHandler];
- [requestArray addObject:request];
- }
- }
-
- handlers = [handlerArray copy];
- requests = [requestArray copy];
- }];
-
- for (NSUInteger i = 0; i < handlers.count; i++) {
- SDLResponseHandler responseHandler = handlers[i];
- SDLRPCRequest *request = requests[i];
-
- responseHandler(request, nil, [NSError sdl_lifecycle_notConnectedError]);
- }
-
- [self sdl_runAsyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
-
- [strongself->_rpcRequestDictionary removeAllObjects];
- [strongself->_rpcResponseHandlerMap removeAllObjects];
- [strongself->_commandHandlerMap removeAllObjects];
- [strongself->_buttonHandlerMap removeAllObjects];
- [strongself->_customButtonHandlerMap removeAllObjects];
- strongself->_audioPassThruHandler = nil;
- }];
-}
-
-- (void)sdl_addToCustomButtonHandlerMap:(NSArray<SDLSoftButton *> *)softButtons {
- __weak typeof(self) weakself = self;
- for (SDLSoftButton *sb in softButtons) {
- if (sb.softButtonID == nil) {
- @throw [NSException sdl_missingIdException];
- }
-
- if (sb.handler != nil) {
- [self sdl_runAsyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
- strongself->_customButtonHandlerMap[sb.softButtonID] = sb.handler;
- }];
- }
- }
-}
-
-
-#pragma mark - Notification Handler
-
-// Called by notifications
-- (void)sdl_runHandlersForResponse:(SDLRPCResponseNotification *)notification {
- __weak typeof(self) weakself = self;
- if (![notification isResponseKindOfClass:[SDLRPCResponse class]]) {
- return;
- }
-
- __kindof SDLRPCResponse *response = notification.response;
-
- NSError *error = nil;
- if (!response.success.boolValue) {
- error = [NSError sdl_lifecycle_rpcErrorWithDescription:response.resultCode andReason:response.info];
- }
-
- __block SDLResponseHandler handler = nil;
- __block SDLRPCRequest *request = nil;
- [self sdl_runSyncOnQueue:^{
- handler = self->_rpcResponseHandlerMap[response.correlationID];
- request = self->_rpcRequestDictionary[response.correlationID];
- }];
-
- // Find the appropriate request completion handler, remove the request and response handler
- [self sdl_runAsyncOnQueue:^{
- __strong typeof(weakself) strongself = weakself;
- [strongself->_rpcRequestDictionary safeRemoveObjectForKey:response.correlationID];
- [strongself->_rpcResponseHandlerMap safeRemoveObjectForKey:response.correlationID];
-
- // If we errored on the response, the delete / unsubscribe was unsuccessful
- if (error == nil) {
- // If it's a DeleteCommand, UnsubscribeButton, or PerformAudioPassThru we need to remove handlers for the corresponding RPCs
- if ([response isKindOfClass:[SDLDeleteCommandResponse class]]) {
- SDLDeleteCommand *deleteCommandRequest = (SDLDeleteCommand *)request;
- NSNumber *deleteCommandId = deleteCommandRequest.cmdID;
- [strongself->_commandHandlerMap safeRemoveObjectForKey:deleteCommandId];
- } else if ([response isKindOfClass:[SDLUnsubscribeButtonResponse class]]) {
- SDLUnsubscribeButton *unsubscribeButtonRequest = (SDLUnsubscribeButton *)request;
- SDLButtonName unsubscribeButtonName = unsubscribeButtonRequest.buttonName;
- [strongself->_buttonHandlerMap safeRemoveObjectForKey:unsubscribeButtonName];
- } else if ([response isKindOfClass:[SDLPerformAudioPassThruResponse class]]) {
- strongself->_audioPassThruHandler = nil;
- }
- }
-
- dispatch_async([SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
- // Run the response handler
- if (handler) {
- if (!response.success.boolValue) {
- SDLLogW(@"Request failed: %@, response: %@, error: %@", request, response, error);
- }
- handler(request, response, error);
- }
- });
- }];
-}
-
-#pragma mark Command
-
-- (void)sdl_runHandlerForCommand:(SDLRPCNotificationNotification *)notification {
- SDLOnCommand *onCommandNotification = notification.notification;
-
- SDLRPCCommandNotificationHandler handler = self.commandHandlerMap[onCommandNotification.cmdID];
- if (handler != nil) {
- handler(onCommandNotification);
- }
-}
-
-#pragma mark Button
-
-- (void)sdl_runHandlerForButton:(SDLRPCNotificationNotification *)notification {
- __kindof SDLRPCNotification *rpcNotification = notification.notification;
- SDLButtonName name = nil;
- NSNumber *customID = nil;
-
- if ([rpcNotification isMemberOfClass:[SDLOnButtonEvent class]]) {
- name = ((SDLOnButtonEvent *)rpcNotification).buttonName;
- customID = ((SDLOnButtonEvent *)rpcNotification).customButtonID;
- } else if ([rpcNotification isMemberOfClass:[SDLOnButtonPress class]]) {
- name = ((SDLOnButtonPress *)rpcNotification).buttonName;
- customID = ((SDLOnButtonPress *)rpcNotification).customButtonID;
- } else {
- return;
- }
-
- SDLRPCButtonNotificationHandler handler = nil;
- if ([name isEqualToEnum:SDLButtonNameCustomButton]) {
- // Custom buttons
- handler = self.customButtonHandlerMap[customID];
- } else {
- // Static buttons
- handler = self.buttonHandlerMap[name];
- }
-
- if (handler == nil) {
- return;
- }
-
- if ([rpcNotification isMemberOfClass:[SDLOnButtonEvent class]]) {
- handler(nil, rpcNotification);
- } else if ([rpcNotification isMemberOfClass:[SDLOnButtonPress class]]) {
- handler(rpcNotification, nil);
- }
-}
-
-#pragma mark Audio Pass Thru
-
-- (void)sdl_runHandlerForAudioPassThru:(SDLRPCNotificationNotification *)notification {
- SDLOnAudioPassThru *onAudioPassThruNotification = notification.notification;
-
- SDLAudioPassThruHandler handler = self.audioPassThruHandler;
- if (handler != nil) {
- handler(onAudioPassThruNotification.bulkData);
- }
-}
-
-#pragma mark Utilities
-
-- (void)sdl_runSyncOnQueue:(void (^)(void))block {
- if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
- block();
- } else {
- dispatch_sync(self.readWriteQueue, block);
- }
-}
-
-- (void)sdl_runAsyncOnQueue:(void (^)(void))block {
- if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
- block();
- } else {
- dispatch_async(self.readWriteQueue, block);
- }
-}
-
-#pragma mark Getters
-
-- (NSMapTable<SDLRPCCorrelationId *, SDLResponseHandler> *)rpcResponseHandlerMap {
- __block NSMapTable<SDLRPCCorrelationId *, SDLResponseHandler> *map = nil;
- [self sdl_runSyncOnQueue:^{
- map = self->_rpcResponseHandlerMap;
- }];
-
- return map;
-}
-
-- (NSMutableDictionary<SDLRPCCorrelationId *, SDLRPCRequest *> *)rpcRequestDictionary {
- __block NSMutableDictionary<SDLRPCCorrelationId *, SDLRPCRequest *> *dict = nil;
- [self sdl_runSyncOnQueue:^{
- dict = self->_rpcRequestDictionary;
- }];
-
- return dict;
-}
-
-- (NSMapTable<SDLAddCommandCommandId *, SDLRPCCommandNotificationHandler> *)commandHandlerMap {
- __block NSMapTable<SDLAddCommandCommandId *, SDLRPCCommandNotificationHandler> *map = nil;
- [self sdl_runSyncOnQueue:^{
- map = self->_commandHandlerMap;
- }];
-
- return map;
-}
-
-- (NSMapTable<SDLSubscribeButtonName *, SDLRPCButtonNotificationHandler> *)buttonHandlerMap {
- __block NSMapTable<SDLSubscribeButtonName *, SDLRPCButtonNotificationHandler> *map = nil;
- [self sdl_runSyncOnQueue:^{
- map = self->_buttonHandlerMap;
- }];
-
- return map;
-}
-
-- (NSMapTable<SDLSoftButtonId *, SDLRPCButtonNotificationHandler> *)customButtonHandlerMap {
- __block NSMapTable<SDLSoftButtonId *, SDLRPCButtonNotificationHandler> *map = nil;
- [self sdl_runSyncOnQueue:^{
- map = self->_customButtonHandlerMap;
- }];
-
- return map;
-}
-
-- (nullable SDLAudioPassThruHandler)audioPassThruHandler {
- __block SDLAudioPassThruHandler audioPassThruHandler = nil;
- [self sdl_runSyncOnQueue:^{
- audioPassThruHandler = self->_audioPassThruHandler;
- }];
-
- return audioPassThruHandler;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLResult.h b/SmartDeviceLink/SDLResult.h
deleted file mode 100644
index dd966102e..000000000
--- a/SmartDeviceLink/SDLResult.h
+++ /dev/null
@@ -1,215 +0,0 @@
-// SDLResult.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Defines the possible result codes returned by SDL to the application in a response to a requested operation. Used in RPC responses
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLResult SDL_SWIFT_ENUM;
-
-/**
- * The request succeeded
- */
-extern SDLResult const SDLResultSuccess;
-
-/**
- The request contained invalid data
-
- The data sent is invalid. For example:
-
- Invalid JSON syntax
-
- Parameters out of bounds (number or enum range)
-
- Mandatory parameters not provided
-
- Parameter provided with wrong type
-
- Invalid characters
-
- Empty string
- */
-extern SDLResult const SDLResultInvalidData;
-
-/**
- The request had a string containing too many characters
- */
-extern SDLResult const SDLResultCharacterLimitExceeded;
-
-/**
- The request is not supported by the IVI unit implementing SDL
- */
-extern SDLResult const SDLResultUnsupportedRequest;
-
-/**
- The system could not process the request because the necessary memory couldn't be allocated
- */
-extern SDLResult const SDLResultOutOfMemory;
-
-/**
- There are too many requests pending (means that the response has not been delivered yet).
-
- There is a limit of 1000 pending requests at a time.
- */
-extern SDLResult const SDLResultTooManyPendingRequests;
-
-/**
- One of the provided IDs is not valid.
-
- For example: CorrelationID, CommandID, MenuID
- */
-extern SDLResult const SDLResultInvalidId;
-
-/**
- The provided name or synonym is a duplicate of some already-defined name or synonym.
- */
-extern SDLResult const SDLResultDuplicateName;
-
-/**
- There are already too many registered applications.
- */
-extern SDLResult const SDLResultTooManyApplications;
-
-/**
- RegisterAppInterface has been called, but this app is already registered
- */
-extern SDLResult const SDLResultApplicationRegisteredAlready;
-
-/**
- The Head Unit doesn't support the SDL version that is requested by the mobile application.
- */
-extern SDLResult const SDLResultUnsupportedVersion;
-
-/**
- The requested language is currently not supported. This might be because of a mismatch of the currently active language on the head unit and the requested language.
- */
-extern SDLResult const SDLResultWrongLanguage;
-
-/**
- A command can not be executed because no application has been registered with RegisterApplication.
- */
-extern SDLResult const SDLResultApplicationNotRegistered;
-
-/**
- The data may not be changed, because it is currently in use. For example when trying to delete a choice set that is currently involved in an interaction.
- */
-extern SDLResult const SDLResultInUse;
-
-/**
- The user has turned off access to vehicle data, and it is globally unavailable to mobile applications.
- */
-extern SDLResult const SDLResultVehicleDataNotAllowed;
-
-/**
- The requested vehicle data is not available on this vehicle or is not published.
- */
-extern SDLResult const SDLResultVehicleDataNotAvailable;
-
-/**
- The requested command was rejected, e.g. because the mobile app is in background and cannot perform any HMI commands, or an HMI command (e.g. Speak) is rejected because a higher priority HMI command (e.g. Alert) is playing.
- */
-extern SDLResult const SDLResultRejected;
-
-/**
- A command was aborted, e.g. due to user interaction (user pressed button), or an HMI command (e.g. Speak) is aborted because a higher priority HMI command (e.g. Alert) was requested.
- */
-extern SDLResult const SDLResultAborted;
-
-/**
- A command was ignored, because the intended result is already in effect. For example, SetMediaClockTimer was used to pause the media clock although the clock is paused already.
- */
-extern SDLResult const SDLResultIgnored;
-
-/**
- A button that was requested for subscription is not supported under the current system.
- */
-extern SDLResult const SDLResultUnsupportedResource;
-
-/**
- A specified file could not be found on the head unit.
- */
-extern SDLResult const SDLResultFileNotFound;
-
-/**
- Provided data is valid but something went wrong in the lower layers.
- */
-extern SDLResult const SDLResultGenericError;
-
-/**
- RPC is not authorized in local policy table.
- */
-extern SDLResult const SDLResultDisallowed;
-
-/**
- RPC is included in a functional group explicitly blocked by the user.
- */
-extern SDLResult const SDLResultUserDisallowed;
-
-/**
- * Overlay reached the maximum timeout and closed.
- */
-extern SDLResult const SDLResultTimedOut;
-
-/**
- * User selected to Cancel Route.
- */
-extern SDLResult const SDLResultCancelRoute;
-
-/**
- * The data sent failed to pass CRC check in receiver end.
- */
-extern SDLResult const SDLResultCorruptedData;
-
-/**
- The RPC (e.g. ReadDID) executed successfully but the data exceeded the platform maximum threshold and thus, only part of the data is available.
- */
-extern SDLResult const SDLResultTruncatedData;
-
-/**
- The user interrupted the RPC (e.g. PerformAudioPassThru) and indicated to start over. Note, the app must issue the new RPC.
- */
-extern SDLResult const SDLResultRetry;
-
-/**
- The RPC (e.g. SubscribeVehicleData) executed successfully but one or more items have a warning or failure.
- */
-extern SDLResult const SDLResultWarnings;
-
-/**
- The RPC (e.g. Slider) executed successfully and the user elected to save the current position / value.
- */
-extern SDLResult const SDLResultSaved;
-
-/**
- The certificate provided during authentication is invalid.
- */
-extern SDLResult const SDLResultInvalidCertificate;
-
-/**
- The certificate provided during authentication is expired.
- */
-extern SDLResult const SDLResultExpiredCertificate;
-
-/**
- The provided hash ID does not match the hash of the current set of registered data or the core could not resume the previous data.
- */
-extern SDLResult const SDLResultResumeFailed;
-
-/**
- The requested data is not available on this vehicle or is not published for the connected app.
- */
-extern SDLResult const SDLResultDataNotAvailable;
-
-/**
- The requested data is read only thus cannot be change via remote control .
- */
-extern SDLResult const SDLResultReadOnly;
-
-/**
- The RPC request needs to be encrypted.
- */
-extern SDLResult const SDLResultEncryptionNeeded;
diff --git a/SmartDeviceLink/SDLSamplingRate.h b/SmartDeviceLink/SDLSamplingRate.h
deleted file mode 100644
index 4db452df3..000000000
--- a/SmartDeviceLink/SDLSamplingRate.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// SDLSamplingRate.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Describes different sampling rates for PerformAudioPassThru and AudioPassThruCapabilities
-
- @since SDL 2.0
- */
-typedef SDLEnum SDLSamplingRate SDL_SWIFT_ENUM;
-
-/**
- Sampling rate of 8 kHz
- */
-extern SDLSamplingRate const SDLSamplingRate8KHZ;
-
-/**
- * Sampling rate of 16 kHz
- */
-extern SDLSamplingRate const SDLSamplingRate16KHZ;
-
-/**
- * Sampling rate of 22 kHz
- */
-extern SDLSamplingRate const SDLSamplingRate22KHZ;
-
-/**
- * Sampling rate of 44 kHz
- */
-extern SDLSamplingRate const SDLSamplingRate44KHZ;
diff --git a/SmartDeviceLink/SDLScreenManager.h b/SmartDeviceLink/SDLScreenManager.h
deleted file mode 100644
index a08d3b40d..000000000
--- a/SmartDeviceLink/SDLScreenManager.h
+++ /dev/null
@@ -1,374 +0,0 @@
-//
-// SDLScreenManager.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 3/5/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "NSNumber+NumberType.h"
-#import "SDLButtonName.h"
-#import "SDLInteractionMode.h"
-#import "SDLMenuManagerConstants.h"
-#import "SDLMetadataType.h"
-#import "SDLNotificationConstants.h"
-#import "SDLTextAlignment.h"
-
-@class SDLArtwork;
-@class SDLChoiceCell;
-@class SDLChoiceSet;
-@class SDLFileManager;
-@class SDLKeyboardProperties;
-@class SDLMenuCell;
-@class SDLMenuConfiguration;
-@class SDLOnButtonEvent;
-@class SDLOnButtonPress;
-@class SDLSoftButtonObject;
-@class SDLSystemCapabilityManager;
-@class SDLVoiceCommand;
-
-@protocol SDLConnectionManagerType;
-@protocol SDLChoiceSetDelegate;
-@protocol SDLKeyboardDelegate;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The handler run when the update has completed
-
- @param error An error if the update failed and an error occurred
- */
-typedef void(^SDLScreenManagerUpdateCompletionHandler)(NSError *__nullable error);
-
-/**
- Return an error with userinfo [key: SDLChoiceCell, value: NSError] if choices failed to upload
-
- @param error The error if one occurred
- */
-typedef void(^SDLPreloadChoiceCompletionHandler)(NSError *__nullable error);
-
-/// A handler run when the subscribe button has been selected
-///
-/// @param buttonPress Indicates whether this is a long or short button press event
-/// @param buttonEvent Indicates that the button has been depressed or released
-/// @param error The error if one occurred
-typedef void (^SDLSubscribeButtonHandler)(SDLOnButtonPress *_Nullable buttonPress, SDLOnButtonEvent *_Nullable buttonEvent, NSError *_Nullable error);
-
-/// The SDLScreenManager is a manager to control SDL UI features. Use the screen manager for setting up the UI of the template, creating a menu for your users, creating softbuttons, setting textfields, etc..
-@interface SDLScreenManager : NSObject
-
-#pragma mark Text and Graphics
-
-/**
- The top text field within a template layout
- */
-@property (copy, nonatomic, nullable) NSString *textField1;
-
-/**
- The second text field within a template layout
- */
-@property (copy, nonatomic, nullable) NSString *textField2;
-
-/**
- The third text field within a template layout
- */
-@property (copy, nonatomic, nullable) NSString *textField3;
-
-/**
- The fourth text field within a template layout
- */
-@property (copy, nonatomic, nullable) NSString *textField4;
-
-/**
- The media text field available within the media layout. Often less emphasized than textField(1-4)
- */
-@property (copy, nonatomic, nullable) NSString *mediaTrackTextField;
-
-/**
- The primary graphic within a template layout
- */
-@property (strong, nonatomic, nullable) SDLArtwork *primaryGraphic;
-
-/**
- A secondary graphic used in some template layouts
- */
-@property (strong, nonatomic, nullable) SDLArtwork *secondaryGraphic;
-
-/**
- What alignment textField(1-4) should use
- */
-@property (copy, nonatomic) SDLTextAlignment textAlignment;
-
-/**
- The type of data textField1 describes
- */
-@property (copy, nonatomic, nullable) SDLMetadataType textField1Type;
-
-/**
- The type of data textField2 describes
- */
-@property (copy, nonatomic, nullable) SDLMetadataType textField2Type;
-
-/**
- The type of data textField3 describes
- */
-@property (copy, nonatomic, nullable) SDLMetadataType textField3Type;
-
-/**
- The type of data textField4 describes
- */
-@property (copy, nonatomic, nullable) SDLMetadataType textField4Type;
-
-/**
- The title of the current template layout.
- */
-@property (copy, nonatomic, nullable) NSString *title;
-
-#pragma mark Soft Buttons
-
-/**
- The current list of soft buttons within a template layout. Set this array to change the displayed soft buttons.
- */
-@property (copy, nonatomic) NSArray<SDLSoftButtonObject *> *softButtonObjects;
-
-#pragma mark Menu
-
-/**
- Configures the layout of the menu and sub-menus. If set after a menu already exists, the existing main menu layout will be updated.
-
- If set menu layouts don't match available menu layouts in WindowCapability, an error log will be emitted and the layout will not be set.
-
- Setting this parameter will send a message to the remote system. This value will be set immediately, but if that message is rejected, the original value will be re-set and an error log will be emitted.
-
- This only works on head units supporting RPC spec version 6.0 and newer. If the connected head unit does not support this feature, a warning log will be emitted and nothing will be set.
- */
-@property (strong, nonatomic) SDLMenuConfiguration *menuConfiguration;
-
-/**
- The current list of menu cells displayed in the app's menu.
- */
-@property (copy, nonatomic) NSArray<SDLMenuCell *> *menu;
-
-/**
-Change the mode of the dynamic menu updater to be enabled, disabled, or enabled on known compatible head units.
-
-The current status for dynamic menu updates. A dynamic menu update allows for smarter building of menu changes. If this status is set to `SDLDynamicMenuUpdatesModeForceOn`, menu updates will only create add commands for new items and delete commands for items no longer appearing in the menu. This helps reduce possible RPCs failures as there will be significantly less commands sent to the HMI.
-
-If set to `SDLDynamicMenuUpdatesModeForceOff`, menu updates will work the legacy way. This means when a new menu is set the entire old menu is deleted and add commands are created for every item regarldess if the item appears in both the old and new menu. This method is RPCs heavy and may cause some failures when creating and updating large menus.
-
- We recommend using either `SDLDynamicMenuUpdatesModeOnWithCompatibility` or `SDLDynamicMenuUpdatesModeForceOn`. `SDLDynamicMenuUpdatesModeOnWithCompatibility` turns dynamic updates off for head units that we know have poor compatibility with dynamic updates (e.g. they have bugs that cause menu items to not be placed correctly).
- */
-@property (assign, nonatomic) SDLDynamicMenuUpdatesMode dynamicMenuUpdatesMode;
-
-/**
- The current list of voice commands available for the user to speak and be recognized by the IVI's voice recognition engine.
- */
-@property (copy, nonatomic) NSArray<SDLVoiceCommand *> *voiceCommands;
-
-#pragma mark Choice Sets
-
-/**
- The default keyboard configuration, this can be additionally customized by each SDLKeyboardDelegate.
- */
-@property (strong, nonatomic, null_resettable) SDLKeyboardProperties *keyboardConfiguration;
-
-/**
- Cells will be hashed by their text, image names, and VR command text. When assembling an SDLChoiceSet, you can pull objects from here, or recreate them. The preloaded versions will be used so long as their text, image names, and VR commands are the same.
- */
-@property (copy, nonatomic, readonly) NSSet<SDLChoiceCell *> *preloadedChoices;
-
-
-#pragma mark - Methods
-
-#pragma mark Lifecycle
-
-/**
- Initialize a screen manager
-
- @warning For internal use
-
- @param connectionManager The connection manager used to send RPCs
- @param fileManager The file manager used to upload files
- @param systemCapabilityManager The system capability manager object for reading window capabilities
- @return The screen manager
- */
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager;
-
-/**
- Starts the manager and all sub-managers
-
- @param handler The handler called when setup is complete
- */
-- (void)startWithCompletionHandler:(void(^)(NSError * _Nullable error))handler;
-
-/**
- Stops the manager.
-
- @warning For internal use
- */
-- (void)stop;
-
-#pragma mark - Text and Graphic
-/**
- Delays all screen updates until endUpdatesWithCompletionHandler: is called.
- */
-- (void)beginUpdates;
-
-/**
- Update text fields with new text set into the text field properties. Pass an empty string `\@""` to clear the text field.
-
- If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
-
- If 3 lines are available: [field1, field2, field3 - field 4]
-
- If 2 lines are available: [field1 - field2, field3 - field4]
-
- If 1 line is available: [field1 - field2 - field3 - field4]
-
- Also updates the primary and secondary images with new image(s) if new one(s) been set. This method will take care of naming the files (based on a hash). This is assumed to be a non-persistant image.
-
- If it needs to be uploaded, it will be. Once the upload is complete, the on-screen graphic will be updated.
- */
-- (void)endUpdates;
-
-/**
- Update text fields with new text set into the text field properties. Pass an empty string `\@""` to clear the text field.
-
- If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
-
- If 3 lines are available: [field1, field2, field3 - field 4]
-
- If 2 lines are available: [field1 - field2, field3 - field4]
-
- If 1 line is available: [field1 - field2 - field3 - field4]
-
- Also updates the primary and secondary images with new image(s) if new one(s) been set. This method will take care of naming the files (based on a hash). This is assumed to be a non-persistant image.
-
- If it needs to be uploaded, it will be. Once the upload is complete, the on-screen graphic will be updated.
-
- @param handler A handler run when the fields have finished updating, with an error if the update failed. This handler may be called multiple times when the text update is sent and the image update is sent.
- */
-- (void)endUpdatesWithCompletionHandler:(nullable SDLScreenManagerUpdateCompletionHandler)handler;
-
-#pragma mark - Soft Buttons
-
-/// Retrieve a SoftButtonObject based on its name.
-/// @param name The name of the button
-- (nullable SDLSoftButtonObject *)softButtonObjectNamed:(NSString *)name;
-
-#pragma mark - Subscribe Buttons
-
-/// Subscribes to a subscribe button. The update handler will be called when the button has been selected. If there is an error subscribing to the subscribe button it will be returned in the `error` parameter of the updateHandler.
-/// @param buttonName The name of the hard button to subscribe to
-/// @param updateHandler The block run when the subscribe button is selected
-/// @return An object that can be used to unsubscribe the block using `unsubscribeButtonWithObserver:withCompletionHandler:`.
-- (id<NSObject>)subscribeButton:(SDLButtonName)buttonName withUpdateHandler:(SDLSubscribeButtonHandler)updateHandler;
-
-/// Subscribes to a subscribe button. The selector will be called when the button has been selected. If there is an error subscribing to the subscribe button it will be returned in the `error` parameter of the selector.
-///
-/// The selector supports the following parameters:
-///
-/// 1. A selector with no parameters. The observer will be notified when a button press occurs (it will not know if a short or long press has occurred).
-///
-/// 2. A selector with one parameter: (SDLButtonName). The observer will be notified when a button press occurs (both a short and long press will trigger the selector, but it will not be able to distinguish between them). It will not be notified of button events.
-///
-/// 3. A selector with two parameters: (SDLButtonName, NSError). The observer will be notified when a button press occurs (both a short and long press will trigger the selector, but it will not be able to distinguish between them). It will not be notified of button events.
-///
-/// 4. A selector with three parameters: (SDLButtonName, NSError, SDLOnButtonPress). The observer will be notified when a long or short button press occurs (and can distinguish between a short or long press), but will not be notified of individual button events.
-///
-/// 5. A selector with four parameters: (SDLButtonName, NSError, SDLOnButtonPress, SDLOnButtonEvent). The observer will be notified when any button press or any button event occurs (and can distinguish between them).
-///
-/// To unsubscribe from the hard button, call `unsubscribeButton:withObserver:withCompletionHandler:`.
-///
-/// @param buttonName The name of the hard button to subscribe to
-/// @param observer The object that will have `selector` called whenever the button has been selected
-/// @param selector The selector on `observer` that will be called whenever the button has been selected
-- (void)subscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer selector:(SEL)selector;
-
-/// Unsubscribes to a subscribe button. Please note that if a subscribe button has multiple subscribers the observer will no longer get notifications, however, the app will still be subscribed to the hard button until the last subscriber is removed.
-/// @param buttonName The name of the hard button to subscribe to
-/// @param observer The object that will be unsubscribed. If a block was subscribed, the return value should be passed. If a selector was subscribed, the observer object should be passed
-/// @param completionHandler A handler called when the observer has been unsubscribed to the hard button
-- (void)unsubscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer withCompletionHandler:(SDLScreenManagerUpdateCompletionHandler)completionHandler;
-
-#pragma mark - Choice Sets
-
-/**
- Preload cells to the head unit. This will *greatly* reduce the time taken to present a choice set. Any already matching a choice already on the head unit will be ignored. You *do not* need to wait until the completion handler is called to present a choice set containing choices being loaded. The choice set will wait until the preload completes and then immediately present.
-
- @param choices The choices to be preloaded.
- @param handler The handler to be called when complete.
- */
-- (void)preloadChoices:(NSArray<SDLChoiceCell *> *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler;
-
-/**
- Delete loaded cells from the head unit. If the cells don't exist on the head unit they will be ignored.
-
- @param choices The choices to be deleted. These will be matched via a hash of the text, image name(s), and VR commands.
- */
-- (void)deleteChoices:(NSArray<SDLChoiceCell *> *)choices;
-
-/**
- Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you're lazy...for real though, it's kind of confusing to the user and isn't recommended.
-
- If the cells in the set are not already preloaded, they will be preloaded before the presentation occurs; this could take a while depending on the contents of the cells.
-
- If the cells have voice commands and images attached, this could take upwards of 10 seconds. If there are no cells on the set, this will fail, calling `choiceSet:didReceiveError:` on the choice set delegate.
-
- @param choiceSet The set to be displayed
- @param mode If the set should be presented for the user to interact via voice, touch, or both
- */
-- (void)presentChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode;
-
-/**
- Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you're lazy...for real though, it's kind of confusing to the user and isn't recommended.
-
- This presents the choice set as searchable when in a touch interaction. The user, when not in a distracted state, will have a keyboard available for searching this set. The user's input in the keyboard will be available in the SDLKeyboardDelegate.
-
- If the cells in the set are not already preloaded, they will be preloaded before the presentation occurs; this could take a while depending on the contents of the cells.
-
- If the cells have voice commands and images attached, this could take upwards of 10 seconds. If there are no cells on the set, this will fail, calling `choiceSet:didReceiveError:` on the choice set delegate.
-
- @param choiceSet The set to be displayed
- @param mode If the set should be presented for the user to interact via voice, touch, or both
- @param delegate The keyboard delegate called when the user interacts with the search field of the choice set
- */
-- (void)presentSearchableChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode withKeyboardDelegate:(id<SDLKeyboardDelegate>)delegate;
-
-/**
- Present a keyboard-only interface to the user and receive input. The user will be able to input text in the keyboard when in a non-driver distraction situation.
-
- @param initialText The initial text within the keyboard input field. It will disappear once the user selects the field in order to enter text
- @param delegate The keyboard delegate called when the user interacts with the keyboard
- @return A unique cancelID that can be used to cancel this keyboard
- */
-- (nullable NSNumber<SDLInt> *)presentKeyboardWithInitialText:(NSString *)initialText delegate:(id<SDLKeyboardDelegate>)delegate;
-
-/**
- Cancels the keyboard-only interface if it is currently showing. If the keyboard has not yet been sent to Core, it will not be sent.
-
- This will only dismiss an already presented keyboard if connected to head units running SDL 6.0+.
-
- @param cancelID The unique ID assigned to the keyboard, passed as the return value from `presentKeyboardWithInitialText:keyboardDelegate:`
- */
-- (void)dismissKeyboardWithCancelID:(NSNumber<SDLInt> *)cancelID;
-
-#pragma mark - Menu
-
-/**
- Present the top-level of your application menu. This method should be called if the menu needs to be opened programmatically because the built in menu button is hidden.
- */
-- (BOOL)openMenu;
-
-/**
- Present the application menu. This method should be called if the menu needs to be opened programmatically because the built in menu button is hidden. You must update the menu with the proper cells before calling this method. This RPC will fail if the cell does not contain a sub menu, or is not in the menu array.
-
-@param cell The submenu cell that should be opened as a sub menu, with its sub cells as the options.
- */
-- (BOOL)openSubmenu:(SDLMenuCell *)cell;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLScreenManager.m b/SmartDeviceLink/SDLScreenManager.m
deleted file mode 100644
index 9950521e8..000000000
--- a/SmartDeviceLink/SDLScreenManager.m
+++ /dev/null
@@ -1,321 +0,0 @@
-//
-// SDLScreenManager.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 3/5/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLScreenManager.h"
-#import "SDLArtwork.h"
-#import "SDLChoiceSetManager.h"
-#import "SDLMenuManager.h"
-#import "SDLSoftButtonManager.h"
-#import "SDLSubscribeButtonManager.h"
-#import "SDLTextAndGraphicManager.h"
-#import "SDLVoiceCommandManager.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLScreenManager()
-
-@property (strong, nonatomic) SDLTextAndGraphicManager *textAndGraphicManager;
-@property (strong, nonatomic) SDLSoftButtonManager *softButtonManager;
-@property (strong, nonatomic) SDLMenuManager *menuManager;
-@property (strong, nonatomic) SDLVoiceCommandManager *voiceCommandMenuManager;
-@property (strong, nonatomic) SDLChoiceSetManager *choiceSetManager;
-@property (strong, nonatomic) SDLSubscribeButtonManager *subscribeButtonManager;
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic) SDLFileManager *fileManager;
-@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
-
-@end
-
-@implementation SDLScreenManager
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager {
- self = [super init];
- if (!self) { return nil; }
-
- _connectionManager = connectionManager;
- _fileManager = fileManager;
- _systemCapabilityManager = systemCapabilityManager;
-
- _textAndGraphicManager = [[SDLTextAndGraphicManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
- _softButtonManager = [[SDLSoftButtonManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
- _subscribeButtonManager = [[SDLSubscribeButtonManager alloc] initWithConnectionManager:connectionManager];
- _menuManager = [[SDLMenuManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
- _voiceCommandMenuManager = [[SDLVoiceCommandManager alloc] initWithConnectionManager:connectionManager];
- _choiceSetManager = [[SDLChoiceSetManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
-
- return self;
-}
-
-- (void)startWithCompletionHandler:(void (^)(NSError * _Nullable))handler {
- [self.textAndGraphicManager start];
- [self.softButtonManager start];
- [self.menuManager start];
- [self.choiceSetManager start];
- [self.subscribeButtonManager start];
-
- handler(nil);
-}
-
-- (void)stop {
- [self.textAndGraphicManager stop];
- [self.softButtonManager stop];
- [self.menuManager stop];
- [self.voiceCommandMenuManager stop];
- [self.choiceSetManager stop];
- [self.subscribeButtonManager stop];
-}
-
-#pragma mark - Setters
-
-- (void)setTextField1:(nullable NSString *)textField1 {
- self.textAndGraphicManager.textField1 = textField1;
- self.softButtonManager.currentMainField1 = textField1;
-}
-
-- (void)setTextField2:(nullable NSString *)textField2 {
- self.textAndGraphicManager.textField2 = textField2;
-}
-
-- (void)setTextField3:(nullable NSString *)textField3 {
- self.textAndGraphicManager.textField3 = textField3;
-}
-
-- (void)setTextField4:(nullable NSString *)textField4 {
- self.textAndGraphicManager.textField4 = textField4;
-}
-
-- (void)setMediaTrackTextField:(nullable NSString *)mediaTrackTextField {
- self.textAndGraphicManager.mediaTrackTextField = mediaTrackTextField;
-}
-
-- (void)setPrimaryGraphic:(nullable SDLArtwork *)primaryGraphic {
- if (primaryGraphic == nil) {
- self.textAndGraphicManager.primaryGraphic = self.textAndGraphicManager.blankArtwork;
- return;
- }
-
- self.textAndGraphicManager.primaryGraphic = primaryGraphic;
-}
-
-- (void)setSecondaryGraphic:(nullable SDLArtwork *)secondaryGraphic {
- if (secondaryGraphic == nil) {
- self.textAndGraphicManager.secondaryGraphic = self.textAndGraphicManager.blankArtwork;
- return;
- }
-
- self.textAndGraphicManager.secondaryGraphic = secondaryGraphic;
-}
-
-- (void)setTextAlignment:(SDLTextAlignment)textAlignment {
- self.textAndGraphicManager.alignment = textAlignment;
-}
-
-- (void)setTextField1Type:(nullable SDLMetadataType)textField1Type {
- self.textAndGraphicManager.textField1Type = textField1Type;
-}
-
-- (void)setTextField2Type:(nullable SDLMetadataType)textField2Type {
- self.textAndGraphicManager.textField2Type = textField2Type;
-}
-
-- (void)setTextField3Type:(nullable SDLMetadataType)textField3Type {
- self.textAndGraphicManager.textField3Type = textField3Type;
-}
-
-- (void)setTextField4Type:(nullable SDLMetadataType)textField4Type {
- self.textAndGraphicManager.textField4Type = textField4Type;
-}
-
-- (void)setTitle:(nullable NSString *)title {
- self.textAndGraphicManager.title = title;
-}
-
-- (void)setSoftButtonObjects:(NSArray<SDLSoftButtonObject *> *)softButtonObjects {
- self.softButtonManager.softButtonObjects = softButtonObjects;
-}
-
-- (void)setMenuConfiguration:(SDLMenuConfiguration *)menuConfiguration {
- self.menuManager.menuConfiguration = menuConfiguration;
-}
-
-- (void)setMenu:(NSArray<SDLMenuCell *> *)menu {
- self.menuManager.menuCells = menu;
-}
-
-- (void)setVoiceCommands:(NSArray<SDLVoiceCommand *> *)voiceCommands {
- self.voiceCommandMenuManager.voiceCommands = voiceCommands;
-}
-
-- (void)setKeyboardConfiguration:(nullable SDLKeyboardProperties *)keyboardConfiguration {
- self.choiceSetManager.keyboardConfiguration = keyboardConfiguration;
-}
-
-- (void)setDynamicMenuUpdatesMode:(SDLDynamicMenuUpdatesMode)dynamicMenuUpdatesMode {
- self.menuManager.dynamicMenuUpdatesMode = dynamicMenuUpdatesMode;
-}
-
-#pragma mark - Getters
-
-- (nullable NSString *)textField1 {
- return _textAndGraphicManager.textField1;
-}
-
-- (nullable NSString *)textField2 {
- return _textAndGraphicManager.textField2;
-}
-
-- (nullable NSString *)textField3 {
- return _textAndGraphicManager.textField3;
-}
-
-- (nullable NSString *)textField4 {
- return _textAndGraphicManager.textField4;
-}
-
-- (nullable NSString *)mediaTrackTextField {
- return _textAndGraphicManager.mediaTrackTextField;
-}
-
-- (nullable SDLArtwork *)primaryGraphic {
- if ([_textAndGraphicManager.primaryGraphic.name isEqualToString:_textAndGraphicManager.blankArtwork.name]) {
- return nil;
- }
-
- return _textAndGraphicManager.primaryGraphic;
-}
-
-- (nullable SDLArtwork *)secondaryGraphic {
- if ([_textAndGraphicManager.secondaryGraphic.name isEqualToString:_textAndGraphicManager.blankArtwork.name]) {
- return nil;
- }
-
- return _textAndGraphicManager.secondaryGraphic;
-}
-
-- (SDLTextAlignment)alignment {
- return _textAndGraphicManager.alignment;
-}
-
-- (nullable SDLMetadataType)textField1Type {
- return _textAndGraphicManager.textField1Type;
-}
-
-- (nullable SDLMetadataType)textField2Type {
- return _textAndGraphicManager.textField2Type;
-}
-
-- (nullable SDLMetadataType)textField3Type {
- return _textAndGraphicManager.textField3Type;
-}
-
-- (nullable SDLMetadataType)textField4Type {
- return _textAndGraphicManager.textField4Type;
-}
-
-- (NSArray<SDLSoftButtonObject *> *)softButtonObjects {
- return _softButtonManager.softButtonObjects;
-}
-
-- (SDLMenuConfiguration *)menuConfiguration {
- return _menuManager.menuConfiguration;
-}
-
-- (NSArray<SDLMenuCell *> *)menu {
- return _menuManager.menuCells;
-}
-
-- (NSArray<SDLVoiceCommand *> *)voiceCommands {
- return _voiceCommandMenuManager.voiceCommands;
-}
-
-- (NSSet<SDLChoiceCell *> *)preloadedChoices {
- return _choiceSetManager.preloadedChoices;
-}
-
-- (SDLKeyboardProperties *)keyboardConfiguration {
- return _choiceSetManager.keyboardConfiguration;
-}
-
-#pragma mark - Begin / End Updates
-
-- (void)beginUpdates {
- self.softButtonManager.batchUpdates = YES;
- self.textAndGraphicManager.batchUpdates = YES;
-}
-
-- (void)endUpdates {
- [self endUpdatesWithCompletionHandler:nil];
-}
-
-- (void)endUpdatesWithCompletionHandler:(nullable SDLScreenManagerUpdateCompletionHandler)handler {
- self.softButtonManager.batchUpdates = NO;
- self.textAndGraphicManager.batchUpdates = NO;
-
- [self.textAndGraphicManager updateWithCompletionHandler:handler];
-}
-
-#pragma mark - Subscribe Buttons
-
-- (id<NSObject>)subscribeButton:(SDLButtonName)buttonName withUpdateHandler:(SDLSubscribeButtonHandler)updateHandler {
- return [self.subscribeButtonManager subscribeButton:buttonName withUpdateHandler:updateHandler];
-}
-
-- (void)subscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer selector:(SEL)selector {
- [self.subscribeButtonManager subscribeButton:buttonName withObserver:observer selector:selector];
-}
-
-- (void)unsubscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer withCompletionHandler:(SDLScreenManagerUpdateCompletionHandler)completionHandler {
- [self.subscribeButtonManager unsubscribeButton:buttonName withObserver:observer withCompletionHandler:completionHandler];
-}
-
-#pragma mark - Soft Buttons
-
-- (nullable SDLSoftButtonObject *)softButtonObjectNamed:(NSString *)name {
- return [self.softButtonManager softButtonObjectNamed:name];
-}
-
-#pragma mark - Choice Sets
-
-- (void)deleteChoices:(NSArray<SDLChoiceCell *> *)choices {
- [self.choiceSetManager deleteChoices:choices];
-}
-
-- (void)preloadChoices:(NSArray<SDLChoiceCell *> *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler {
- [self.choiceSetManager preloadChoices:choices withCompletionHandler:handler];
-}
-
-- (void)presentChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode {
- [self.choiceSetManager presentChoiceSet:choiceSet mode:mode withKeyboardDelegate:nil];
-}
-
-- (void)presentSearchableChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode withKeyboardDelegate:(id<SDLKeyboardDelegate>)delegate {
- [self.choiceSetManager presentChoiceSet:choiceSet mode:mode withKeyboardDelegate:delegate];
-}
-
-- (nullable NSNumber<SDLInt> *)presentKeyboardWithInitialText:(NSString *)initialText delegate:(id<SDLKeyboardDelegate>)delegate {
- return [self.choiceSetManager presentKeyboardWithInitialText:initialText delegate:delegate];
-}
-
-- (void)dismissKeyboardWithCancelID:(NSNumber<SDLInt> *)cancelID{
- [self.choiceSetManager dismissKeyboardWithCancelID:cancelID];
-}
-
-#pragma mark - Menu
-
-- (BOOL)openMenu {
- return [self.menuManager openMenu];
-}
-
-- (BOOL)openSubmenu:(SDLMenuCell *)cell {
- return [self.menuManager openSubmenu:cell];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLScrollableMessage.h b/SmartDeviceLink/SDLScrollableMessage.h
deleted file mode 100644
index f2abda1ed..000000000
--- a/SmartDeviceLink/SDLScrollableMessage.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// SDLScrollableMessage.h
-//
-
-
-#import "SDLRPCRequest.h"
-
-@class SDLSoftButton;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Creates a full screen overlay containing a large block of formatted text that can be scrolled with buttons available.
-
- If connecting to SDL Core v.6.0+, the scrollable message can be canceled programmatically using the `cancelID`. On older versions of SDL Core, the scrollable message will persist until the user has interacted with the scrollable message or the specified timeout has elapsed.
-
- @since SDL 2.0
- */
-@interface SDLScrollableMessage : SDLRPCRequest
-
-/**
- Convenience init for creating a scrolling message with text.
-
- @param message Body of text that can include newlines and tabs
- @return A SDLScrollableMessage object
- */
-- (instancetype)initWithMessage:(NSString *)message;
-
-/**
- Convenience init for creating a scrolling message with text and buttons.
-
- @param message Body of text that can include newlines and tabs
- @param timeout Indicates how long of a timeout from the last action (i.e. scrolling message resets timeout)
- @param softButtons Buttons for the displayed scrollable message
- @param cancelID An ID for this specific scrollable message to allow cancellation through the `CancelInteraction` RPC
- @return A SDLScrollableMessage object
- */
-- (instancetype)initWithMessage:(NSString *)message timeout:(UInt16)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(UInt32)cancelID;
-
-/**
- Convenience init for creating a scrolling message with text and buttons.
-
- @param message Body of text that can include newlines and tabs
- @param timeout Indicates how long of a timeout from the last action (i.e. scrolling message resets timeout)
- @param softButtons Buttons for the displayed scrollable message
- @return A SDLScrollableMessage object
- */
-- (instancetype)initWithMessage:(NSString *)message timeout:(UInt16)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons __deprecated_msg("Use initWithMessage:timeout:softButtons:cancelID: instead");
-
-/**
- Body of text that can include newlines and tabs.
-
- String, Required, Max length 500 chars
-
- @since SDL 2.0
- */
-@property (strong, nonatomic) NSString *scrollableMessageBody;
-
-/**
- App defined timeout. Indicates how long of a timeout from the last action (i.e. scrolling message resets timeout). If not set, a default value of 30 seconds is used by Core.
-
- Integer, Optional, Min value: 1000, Max value: 65535, Default value: 30000
-
- @since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *timeout;
-
-/**
- Buttons for the displayed scrollable message. If omitted on supported displays, only the system defined "Close" SoftButton will be displayed.
-
- Array of SDLSoftButton, Optional, Array size: 0-8
-
- Since SDL 2.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLSoftButton *> *softButtons;
-
-/**
- An ID for this specific scrollable message to allow cancellation through the `CancelInteraction` RPC.
-
- Integer, Optional
-
- @see SDLCancelInteraction
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLScrollableMessage.m b/SmartDeviceLink/SDLScrollableMessage.m
deleted file mode 100644
index 994becaa8..000000000
--- a/SmartDeviceLink/SDLScrollableMessage.m
+++ /dev/null
@@ -1,86 +0,0 @@
-// SDLScrollableMessage.m
-//
-
-
-#import "SDLScrollableMessage.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLSoftButton.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLScrollableMessage
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameScrollableMessage]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithScrollableMessageBody:(NSString *)message timeout:(nullable NSNumber *)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(nullable NSNumber *)cancelID {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.scrollableMessageBody = message;
- self.timeout = timeout;
- self.softButtons = softButtons;
- self.cancelID = cancelID;
-
- return self;
-}
-
-- (instancetype)initWithMessage:(NSString *)message timeout:(UInt16)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(UInt32)cancelID {
- return [self initWithScrollableMessageBody:message timeout:@(timeout) softButtons:softButtons cancelID:@(cancelID)];
-}
-
-- (instancetype)initWithMessage:(NSString *)message timeout:(UInt16)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
- return [self initWithScrollableMessageBody:message timeout:@(timeout) softButtons:softButtons cancelID:nil];
-}
-
-- (instancetype)initWithMessage:(NSString *)message {
- return [self initWithScrollableMessageBody:message timeout:nil softButtons:nil cancelID:nil];
-}
-
-- (void)setScrollableMessageBody:(NSString *)scrollableMessageBody {
- [self.parameters sdl_setObject:scrollableMessageBody forName:SDLRPCParameterNameScrollableMessageBody];
-}
-
-- (NSString *)scrollableMessageBody {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameScrollableMessageBody ofClass:NSString.class error:&error];
-}
-
-- (void)setTimeout:(nullable NSNumber<SDLInt> *)timeout {
- [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout];
-}
-
-- (nullable NSNumber<SDLInt> *)timeout {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSoftButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
- [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons];
-}
-
-- (nullable NSArray<SDLSoftButton *> *)softButtons {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil];
-}
-
-- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
- [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
-}
-
-- (nullable NSNumber<SDLInt> *)cancelID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSeatControlCapabilities.h b/SmartDeviceLink/SDLSeatControlCapabilities.h
deleted file mode 100644
index c55de4876..000000000
--- a/SmartDeviceLink/SDLSeatControlCapabilities.h
+++ /dev/null
@@ -1,195 +0,0 @@
-// SDLSeatControlCapabilities.h
-//
-
-
-#import "SDLRPCStruct.h"
-#import "SDLModuleInfo.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Include information about a seat control capabilities.
- */
-@interface SDLSeatControlCapabilities : SDLRPCStruct
-
-/// Constructs a newly allocated SDLSeatControlCapabilities object with moduleName
-///
-/// @param moduleName The short friendly name of the module.
-/// @return An SDLSeatControlCapabilities object
-- (instancetype)initWithName:(NSString *)moduleName __deprecated_msg("Use initWithName:moduleInfo:");
-
-/// Constructs a newly allocated SDLSeatControlCapabilities object with moduleName and moduleInfo
-///
-/// @param moduleName The short friendly name of the module.
-/// @param moduleInfo Information about a RC module, including its id
-/// @return An SDLSeatControlCapabilities object
-- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo;
-
-/// Constructs a newly allocated SDLSeatControlCapabilities object with given parameters
-///
-/// @param moduleName The short friendly name of the module.
-/// @param heatingEnabledAvail Whether or not heating is available
-/// @param coolingEnabledAvail Whether or not heating is available
-/// @param heatingLevelAvail Whether or not heating level is available
-/// @param coolingLevelAvail Whether or not cooling level is available
-/// @param horizontalPositionAvail Whether or not horizontal Position is aavailable
-/// @param verticalPositionAvail Whether or not vertical position is available
-/// @param frontVerticalPositionAvail Whether or not front vertical position is available
-/// @param backVerticalPositionAvail Whether or not back vertical position is available
-/// @param backTitlAngleAvail Whether or not backTilt angle is available
-/// @param headSupportHorizontalPositionAvail Whether or not head supports for horizontal position is available
-/// @param headSupportVerticalPositionAvail Whether or not head supports for vertical position is available
-/// @param massageEnabledAvail Whether or not massage enabled is available
-/// @param massageModeAvail Whether or not massage mode is available
-/// @param massageCushionFirmnessAvail Whether or not massage cushion firmness is available
-/// @param memoryAvail Whether or not massage cushion firmness is available
-/// @return An SDLSeatControlCapabilities object
-- (instancetype)initWithName:(NSString *)moduleName heatingEnabledAvailable:(BOOL)heatingEnabledAvail
- coolingEnabledAvailable:(BOOL)coolingEnabledAvail heatingLevelAvailable:(BOOL)heatingLevelAvail coolingLevelAvailable:(BOOL)coolingLevelAvail horizontalPositionAvailable:(BOOL)horizontalPositionAvail verticalPositionAvailable:(BOOL)verticalPositionAvail frontVerticalPositionAvailable:(BOOL)frontVerticalPositionAvail backVerticalPositionAvailable:(BOOL)backVerticalPositionAvail backTiltAngleAvailable:(BOOL)backTitlAngleAvail headSupportHorizontalPositionAvailable:(BOOL)headSupportHorizontalPositionAvail headSupportVerticalPositionAvailable:(BOOL)headSupportVerticalPositionAvail massageEnabledAvailable:(BOOL)massageEnabledAvail massageModeAvailable:(BOOL)massageModeAvail massageCushionFirmnessAvailable:(BOOL)massageCushionFirmnessAvail memoryAvailable:(BOOL)memoryAvail __deprecated_msg("Use initWithName:moduleInfo:heatingEnabledAvailable:coolingEnabledAvailable:heatingLevelAvailable:coolingLevelAvailable:horizontalPositionAvailable:verticalPositionAvailable:frontVerticalPositionAvailable:backVerticalPositionAvailable:backTiltAngleAvailable:headSupportHorizontalPositionAvailable:headSupportVerticalPositionAvailable:massageEnabledAvailable:massageModeAvailable:massageCushionFirmnessAvailable:memoryAvailable:");
-
-/// Constructs a newly allocated SDLSeatControlCapabilities object with all parameters
-///
-/// @param moduleName The short friendly name of the module.
-/// @param moduleInfo Information about a RC module, including its id
-/// @param heatingEnabledAvail Whether or not heating is available
-/// @param coolingEnabledAvail Whether or not heating is available
-/// @param heatingLevelAvail Whether or not heating level is available
-/// @param coolingLevelAvail Whether or not cooling level is available
-/// @param horizontalPositionAvail Whether or not horizontal Position is aavailable
-/// @param verticalPositionAvail Whether or not vertical position is available
-/// @param frontVerticalPositionAvail Whether or not front vertical position is available
-/// @param backVerticalPositionAvail Whether or not back vertical position is available
-/// @param backTitlAngleAvail Whether or not backTilt angle is available
-/// @param headSupportHorizontalPositionAvail Whether or not head supports for horizontal position is available
-/// @param headSupportVerticalPositionAvail Whether or not head supports for vertical position is available
-/// @param massageEnabledAvail Whether or not massage enabled is available
-/// @param massageModeAvail Whether or not massage mode is available
-/// @param massageCushionFirmnessAvail Whether or not massage cushion firmness is available
-/// @param memoryAvail Whether or not massage cushion firmness is available
-/// @return An SDLSeatControlCapabilities object
-- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo heatingEnabledAvailable:(BOOL)heatingEnabledAvail
- coolingEnabledAvailable:(BOOL)coolingEnabledAvail heatingLevelAvailable:(BOOL)heatingLevelAvail coolingLevelAvailable:(BOOL)coolingLevelAvail horizontalPositionAvailable:(BOOL)horizontalPositionAvail verticalPositionAvailable:(BOOL)verticalPositionAvail frontVerticalPositionAvailable:(BOOL)frontVerticalPositionAvail backVerticalPositionAvailable:(BOOL)backVerticalPositionAvail backTiltAngleAvailable:(BOOL)backTitlAngleAvail headSupportHorizontalPositionAvailable:(BOOL)headSupportHorizontalPositionAvail headSupportVerticalPositionAvailable:(BOOL)headSupportVerticalPositionAvail massageEnabledAvailable:(BOOL)massageEnabledAvail massageModeAvailable:(BOOL)massageModeAvail massageCushionFirmnessAvailable:(BOOL)massageCushionFirmnessAvail memoryAvailable:(BOOL)memoryAvail;
-
-/**
- * @abstract The short friendly name of the light control module.
- * It should not be used to identify a module by mobile application.
- *
- * Required, Max length 100 chars
- */
-@property (strong, nonatomic) NSString *moduleName;
-
-/**
- * @abstract Whether or not heating is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatingEnabledAvailable;
-
-/**
- * @abstract Whether or not cooling is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *coolingEnabledAvailable;
-
-/**
- * @abstract Whether or not heating level is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatingLevelAvailable;
-
-/**
- * @abstract Whether or not cooling level is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *coolingLevelAvailable;
-
-/**
- * @abstract Whether or not horizontal Position is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *horizontalPositionAvailable;
-
-/**
- * @abstract Whether or not vertical Position is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *verticalPositionAvailable;
-
-/**
- * @abstract Whether or not front Vertical Position is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *frontVerticalPositionAvailable;
-
-/**
- * @abstract Whether or not back Vertical Position is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *backVerticalPositionAvailable;
-
-/**
- * @abstract Whether or not backTilt Angle Available is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *backTiltAngleAvailable;
-
-/**
- * @abstract Whether or not head Supports for Horizontal Position is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *headSupportHorizontalPositionAvailable;
-
-/**
- * @abstract Whether or not head Supports for Vertical Position is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *headSupportVerticalPositionAvailable;
-
-/**
- * @abstract Whether or not massage Enabled is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageEnabledAvailable;
-
-/**
- * @abstract Whether or not massage Mode is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageModeAvailable;
-
-/**
- * @abstract Whether or not massage Cushion Firmness is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageCushionFirmnessAvailable;
-
-/**
- * @abstract Whether or not memory is Available.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *memoryAvailable;
-
-/**
- * @abstract Information about a RC module, including its id.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSeatControlCapabilities.m b/SmartDeviceLink/SDLSeatControlCapabilities.m
deleted file mode 100644
index 248c87db0..000000000
--- a/SmartDeviceLink/SDLSeatControlCapabilities.m
+++ /dev/null
@@ -1,249 +0,0 @@
-// SDLSeatControlCapabilities.m
-//
-
-#import "SDLSeatControlCapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "NSMutableDictionary+Store.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSeatControlCapabilities
-
-- (instancetype)initWithName:(NSString *)moduleName {
- if (self = [super init]) {
- self.moduleName = moduleName;
- }
- return self;
-}
-
-- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo {
- if (self = [super init]) {
- self.moduleName = moduleName;
- self.moduleInfo = moduleInfo;
- }
- return self;
-}
-
-- (instancetype)initWithName:(NSString *)moduleName heatingEnabledAvailable:(BOOL)heatingEnabledAvail coolingEnabledAvailable:(BOOL)coolingEnabledAvail heatingLevelAvailable:(BOOL)heatingLevelAvail coolingLevelAvailable:(BOOL)coolingLevelAvail horizontalPositionAvailable:(BOOL)horizontalPositionAvail verticalPositionAvailable:(BOOL)verticalPositionAvail frontVerticalPositionAvailable:(BOOL)frontVerticalPositionAvail backVerticalPositionAvailable:(BOOL)backVerticalPositionAvail backTiltAngleAvailable:(BOOL)backTitlAngleAvail headSupportHorizontalPositionAvailable:(BOOL)headSupportHorizontalPositionAvail headSupportVerticalPositionAvailable:(BOOL)headSupportVerticalPositionAvail massageEnabledAvailable:(BOOL)massageEnabledAvail massageModeAvailable:(BOOL)massageModeAvail massageCushionFirmnessAvailable:(BOOL)massageCushionFirmnessAvail memoryAvailable:(BOOL)memoryAvail {
-
- self = [super init];
- if (!self) {
- return nil;
- }
-
- self.moduleName = moduleName;
- self.heatingEnabledAvailable = @(heatingEnabledAvail);
- self.coolingEnabledAvailable = @(coolingEnabledAvail);
- self.heatingLevelAvailable = @(heatingLevelAvail);
- self.coolingLevelAvailable = @(coolingLevelAvail);
- self.horizontalPositionAvailable = @(horizontalPositionAvail);
- self.verticalPositionAvailable = @(verticalPositionAvail);
- self.frontVerticalPositionAvailable = @(frontVerticalPositionAvail);
- self.backVerticalPositionAvailable = @(backVerticalPositionAvail);
- self.backTiltAngleAvailable = @(backTitlAngleAvail);
- self.headSupportVerticalPositionAvailable = @(headSupportVerticalPositionAvail);
- self.headSupportHorizontalPositionAvailable = @(headSupportHorizontalPositionAvail);
- self.massageEnabledAvailable = @(massageEnabledAvail);
- self.massageModeAvailable = @(massageModeAvail);
- self.massageCushionFirmnessAvailable = @(massageCushionFirmnessAvail);
- self.memoryAvailable = @(memoryAvail);
-
- return self;
-}
-
-- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo heatingEnabledAvailable:(BOOL)heatingEnabledAvail
- coolingEnabledAvailable:(BOOL)coolingEnabledAvail heatingLevelAvailable:(BOOL)heatingLevelAvail coolingLevelAvailable:(BOOL)coolingLevelAvail horizontalPositionAvailable:(BOOL)horizontalPositionAvail verticalPositionAvailable:(BOOL)verticalPositionAvail frontVerticalPositionAvailable:(BOOL)frontVerticalPositionAvail backVerticalPositionAvailable:(BOOL)backVerticalPositionAvail backTiltAngleAvailable:(BOOL)backTitlAngleAvail headSupportHorizontalPositionAvailable:(BOOL)headSupportHorizontalPositionAvail headSupportVerticalPositionAvailable:(BOOL)headSupportVerticalPositionAvail massageEnabledAvailable:(BOOL)massageEnabledAvail massageModeAvailable:(BOOL)massageModeAvail massageCushionFirmnessAvailable:(BOOL)massageCushionFirmnessAvail memoryAvailable:(BOOL)memoryAvail {
-
- self = [super init];
- if (!self) {
- return nil;
- }
-
- self.moduleName = moduleName;
- self.moduleInfo = moduleInfo;
- self.heatingEnabledAvailable = @(heatingEnabledAvail);
- self.coolingEnabledAvailable = @(coolingEnabledAvail);
- self.heatingLevelAvailable = @(heatingLevelAvail);
- self.coolingLevelAvailable = @(coolingLevelAvail);
- self.horizontalPositionAvailable = @(horizontalPositionAvail);
- self.verticalPositionAvailable = @(verticalPositionAvail);
- self.frontVerticalPositionAvailable = @(frontVerticalPositionAvail);
- self.backVerticalPositionAvailable = @(backVerticalPositionAvail);
- self.backTiltAngleAvailable = @(backTitlAngleAvail);
- self.headSupportVerticalPositionAvailable = @(headSupportVerticalPositionAvail);
- self.headSupportHorizontalPositionAvailable = @(headSupportHorizontalPositionAvail);
- self.massageEnabledAvailable = @(massageEnabledAvail);
- self.massageModeAvailable = @(massageModeAvail);
- self.massageCushionFirmnessAvailable = @(massageCushionFirmnessAvail);
- self.memoryAvailable = @(memoryAvail);
-
- return self;
-}
-
-- (void)setModuleName:(NSString *)moduleName {
- [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
-}
-
-- (NSString *)moduleName {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
-}
-
-- (void)setHeatingEnabledAvailable:(nullable NSNumber<SDLBool> *)heatingEnabledAvailable {
- [self.store sdl_setObject:heatingEnabledAvailable forName:SDLRPCParameterNameHeatingEnabledAvailable];
-}
-
-- (nullable NSNumber<SDLBool> *)heatingEnabledAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatingEnabledAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCoolingEnabledAvailable:(nullable NSNumber<SDLBool> *)coolingEnabledAvailable {
- [self.store sdl_setObject:coolingEnabledAvailable forName:SDLRPCParameterNameCoolingEnabledAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)coolingEnabledAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameCoolingEnabledAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setHeatingLevelAvailable:(nullable NSNumber<SDLBool> *)heatingLevelAvailable {
- [self.store sdl_setObject:heatingLevelAvailable forName:SDLRPCParameterNameHeatingLevelAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)heatingLevelAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatingLevelAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setCoolingLevelAvailable:(nullable NSNumber<SDLBool> *)coolingLevelAvailable {
- [self.store sdl_setObject:coolingLevelAvailable forName:SDLRPCParameterNameCoolingLevelAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)coolingLevelAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameCoolingLevelAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setHorizontalPositionAvailable:(nullable NSNumber<SDLBool> *)horizontalPositionAvailable {
- [self.store sdl_setObject:horizontalPositionAvailable forName:SDLRPCParameterNameHorizontalPositionAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)horizontalPositionAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHorizontalPositionAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)verticalPositionAvailable {
- [self.store sdl_setObject:verticalPositionAvailable forName:SDLRPCParameterNameVerticalPositionAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)verticalPositionAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameVerticalPositionAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setFrontVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)frontVerticalPositionAvailable {
- [self.store sdl_setObject:frontVerticalPositionAvailable forName:SDLRPCParameterNameFrontVerticalPositionAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)frontVerticalPositionAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameFrontVerticalPositionAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setBackVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)backVerticalPositionAvailable {
- [self.store sdl_setObject:backVerticalPositionAvailable forName:SDLRPCParameterNameBackVerticalPositionAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)backVerticalPositionAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameBackVerticalPositionAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setBackTiltAngleAvailable:(nullable NSNumber<SDLBool> *)backTiltAngleAvailable {
- [self.store sdl_setObject:backTiltAngleAvailable forName:SDLRPCParameterNameBackTiltAngleAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)backTiltAngleAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameBackTiltAngleAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setHeadSupportHorizontalPositionAvailable:(nullable NSNumber<SDLBool> *)headSupportHorizontalPositionAvailable {
- [self.store sdl_setObject:headSupportHorizontalPositionAvailable forName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)headSupportHorizontalPositionAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setHeadSupportVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)headSupportVerticalPositionAvailable {
- [self.store sdl_setObject:headSupportVerticalPositionAvailable forName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)headSupportVerticalPositionAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setMassageEnabledAvailable:(nullable NSNumber<SDLBool> *)massageEnabledAvailable {
- [self.store sdl_setObject:massageEnabledAvailable forName:SDLRPCParameterNameMassageEnabledAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)massageEnabledAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameMassageEnabledAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setMassageModeAvailable:(nullable NSNumber<SDLBool> *)massageModeAvailable {
- [self.store sdl_setObject:massageModeAvailable forName:SDLRPCParameterNameMassageModeAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)massageModeAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameMassageModeAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setMassageCushionFirmnessAvailable:(nullable NSNumber<SDLBool> *)massageCushionFirmnessAvailable {
- [self.store sdl_setObject:massageCushionFirmnessAvailable forName:SDLRPCParameterNameMassageCushionFirmnessAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)massageCushionFirmnessAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameMassageCushionFirmnessAvailable ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setMemoryAvailable:(nullable NSNumber<SDLBool> *)memoryAvailable {
- [self.store sdl_setObject:memoryAvailable forName:SDLRPCParameterNameMemoryAvailable];
-
-}
-
-- (nullable NSNumber<SDLBool> *)memoryAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameMemoryAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
- [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
-}
-
-- (nullable SDLModuleInfo *)moduleInfo {
- return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSeatControlData.h b/SmartDeviceLink/SDLSeatControlData.h
deleted file mode 100644
index 9bc716392..000000000
--- a/SmartDeviceLink/SDLSeatControlData.h
+++ /dev/null
@@ -1,177 +0,0 @@
-// SDLSeatControlData.h
-//
-
-#import "SDLRPCStruct.h"
-#import "SDLSeatMemoryActionType.h"
-#import "SDLSupportedSeat.h"
-
-@class SDLMassageModeData;
-@class SDLMassageCushionFirmness;
-@class SDLSeatMemoryAction;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Seat control data corresponds to "SEAT" ModuleType.
- */
-
-@interface SDLSeatControlData : SDLRPCStruct
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-/**
-Constructs a newly allocated SDLSeatControlData object with cushion and firmness
-
-@param supportedSeat id of remote controllable seat.
-@return An instance of the SDLSeatControlData class
-*/
-- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat;
-#pragma clang diagnostic pop
-
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-/**
- Constructs a newly allocated SDLSeatControlData object with cushion and firmness
-
-@param supportedSeat id of remote controllable seat.
-@param heatingEnable Whether or not heating is enabled.
-@param coolingEnable Whether or not cooling is enabled.
-@param heatingLevel heating level
-@param coolingLevel cooling Level
-@param horizontal horizontal Position
-@param vertical vertical Position
-@param frontVertical frontVertical Position
-@param backVertical backVertical Position
-@param backAngle backAngle Position
-@param headSupportedHorizontal headSupportedHorizontal Position
-@param headSupportedVertical headSupportedVertical Position
-@param massageEnable Whether or not massage is enabled.
-@param massageMode Array of massage mode data.
-@param firmness Array of firmness data.
-@param memoryAction type of action to be performed.
-@return An instance of the SDLSeatControlData class
-*/
-- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat heatingEnabled:(BOOL)heatingEnable coolingEnable:(BOOL)coolingEnable heatingLevel:(UInt8)heatingLevel coolingLevel:(UInt8)coolingLevel horizontalPostion:(UInt8)horizontal verticalPostion:(UInt8)vertical frontVerticalPostion:(UInt8)frontVertical backVerticalPostion:(UInt8)backVertical backTiltAngle:(UInt8)backAngle headSupportedHorizontalPostion:(UInt8)headSupportedHorizontal headSupportedVerticalPostion:(UInt8)headSupportedVertical massageEnabled:(BOOL)massageEnable massageMode:(NSArray<SDLMassageModeData *> *)massageMode massageCussionFirmness:(NSArray<SDLMassageCushionFirmness *> *)firmness memory:(SDLSeatMemoryAction *)memoryAction;
-#pragma clang diagnostic pop
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-/**
-* @abstract id of seat that is a remote controllable seat.
-* @warning This should not be used to identify a seat, this is a deprecated parameter.
-*
-* Required
-*/
-@property (strong, nonatomic) SDLSupportedSeat id;
-#pragma clang diagnostic pop
-
-/**
- * @abstract Whether or not heating is enabled.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatingEnabled;
-
-/**
- * @abstract Whether or not cooling is enabled.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *coolingEnabled;
-
-/**
- * @abstract heating level in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *heatingLevel;
-
-/**
- * @abstract cooling level in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *coolingLevel;
-
-/**
- * @abstract horizontal Position in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *horizontalPosition;
-
-/**
- * @abstract heating level in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *verticalPosition;
-
-/**
- * @abstract heating level in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frontVerticalPosition;
-
-/**
- * @abstract heating level in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *backVerticalPosition;
-
-/**
- * @abstract heating level in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *backTiltAngle;
-
-/**
- * @abstract head Support Horizontal Position in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *headSupportHorizontalPosition;
-
-/**
- * @abstract head Support Vertical Position in integer
- *
- * Optional, MinValue- 0 MaxValue= 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *headSupportVerticalPosition;
-
-/**
- * @abstract Whether or not massage is enabled.
-
- * Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageEnabled;
-
-/**
- * @abstract Array of massage mode data.
-
- * Optional, Array of SDLMassageModeData objects, MinArray size-1 MaxArray size-2
- */
-@property (nullable, strong, nonatomic) NSArray<SDLMassageModeData *> *massageMode;
-
-
-/**
- * @abstract Array of firmness of a cushion.
-
- * Optional, Array of SDLMassageCushionFirmness objects, MinArray size-1 MaxArray size-5
- */
-@property (nullable, strong, nonatomic) NSArray<SDLMassageCushionFirmness *> *massageCushionFirmness;
-
-/**
- * @abstract type of action to be performed
- *
- * Required, @see SDLSeatMemoryAction
- */
-@property (nullable, strong, nonatomic) SDLSeatMemoryAction *memory;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSeatControlData.m b/SmartDeviceLink/SDLSeatControlData.m
deleted file mode 100644
index 6054cb908..000000000
--- a/SmartDeviceLink/SDLSeatControlData.m
+++ /dev/null
@@ -1,200 +0,0 @@
-// SDLSeatControlData.m
-//
-
-#import "SDLSeatControlData.h"
-#import "SDLRPCParameterNames.h"
-#import "NSMutableDictionary+Store.h"
-
-#import "SDLMassageModeData.h"
-#import "SDLMassageCushionFirmness.h"
-#import "SDLSeatMemoryAction.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSeatControlData
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat {
-#pragma clang diagnostic pop
- self = [self init];
- if (!self) {
- return nil;
- }
- self.id = supportedSeat;
-
- return self;
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat heatingEnabled:(BOOL)heatingEnable coolingEnable:(BOOL)coolingEnabled heatingLevel:(UInt8)heatingLevel coolingLevel:(UInt8)coolingLevel horizontalPostion:(UInt8)horizontal verticalPostion:(UInt8)vertical frontVerticalPostion:(UInt8)frontVertical backVerticalPostion:(UInt8)backVertical backTiltAngle:(UInt8)backAngle headSupportedHorizontalPostion:(UInt8)headSupportedHorizontal headSupportedVerticalPostion:(UInt8)headSupportedVertical massageEnabled:(BOOL)massageEnable massageMode:(NSArray<SDLMassageModeData *> *)massageMode massageCussionFirmness:(NSArray<SDLMassageCushionFirmness *> *)firmness memory:(SDLSeatMemoryAction *)memoryAction {
-#pragma clang diagnostic pop
-
- self = [super init];
- if (!self) {
- return nil;
- }
-
- self.id = supportedSeat;
- self.heatingEnabled = @(heatingEnable);
- self.coolingEnabled = @(coolingEnabled);
- self.heatingLevel = @(heatingLevel);
- self.coolingLevel = @(coolingLevel);
-
- self.horizontalPosition = @(horizontal);
- self.verticalPosition = @(vertical);
- self.frontVerticalPosition = @(frontVertical);
- self.backVerticalPosition = @(backVertical);
- self.backTiltAngle = @(backAngle);
-
- self.headSupportHorizontalPosition = @(headSupportedHorizontal);
- self.headSupportVerticalPosition = @(headSupportedVertical);
-
- self.massageEnabled = @(massageEnable);
- self.massageMode = massageMode;
- self.massageCushionFirmness = firmness;
- self.memory = memoryAction;
-
- return self;
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (void)setId:(SDLSupportedSeat)id {
-#pragma clang diagnostic pop
- [self.store sdl_setObject:id forName:SDLRPCParameterNameId];
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (SDLSupportedSeat)id {
-#pragma clang diagnostic pop
- NSError *error = nil;
- return [self.store sdl_enumForName:SDLRPCParameterNameId error:&error];
-}
-
-- (void)setHeatingEnabled:(nullable NSNumber<SDLBool> *)heatingEnabled {
- [self.store sdl_setObject:heatingEnabled forName:SDLRPCParameterNameHeatingEnabled];
-}
-
-- (nullable NSNumber<SDLBool> *)heatingEnabled {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatingEnabled ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCoolingEnabled:(nullable NSNumber<SDLBool> *)coolingEnabled {
- [self.store sdl_setObject:coolingEnabled forName:SDLRPCParameterNameCoolingEnabled];
-}
-
-- (nullable NSNumber<SDLBool> *)coolingEnabled {
- return [self.store sdl_objectForName:SDLRPCParameterNameCoolingEnabled ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeatingLevel:(nullable NSNumber<SDLInt> *)heatingLevel {
- [self.store sdl_setObject:heatingLevel forName:SDLRPCParameterNameHeatingLevel];
-}
-
-- (nullable NSNumber<SDLInt> *)heatingLevel {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeatingLevel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCoolingLevel:(nullable NSNumber<SDLInt> *)coolingLevel {
- [self.store sdl_setObject:coolingLevel forName:SDLRPCParameterNameCoolingLevel];
-}
-
-- (nullable NSNumber<SDLInt> *)coolingLevel {
- return [self.store sdl_objectForName:SDLRPCParameterNameCoolingLevel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHorizontalPosition:(nullable NSNumber<SDLInt> *)horizontalPosition {
- [self.store sdl_setObject:horizontalPosition forName:SDLRPCParameterNameHorizontalPosition];
-}
-
-- (nullable NSNumber<SDLInt> *)horizontalPosition {
- return [self.store sdl_objectForName:SDLRPCParameterNameHorizontalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setVerticalPosition:(nullable NSNumber<SDLInt> *)verticalPosition {
- [self.store sdl_setObject:verticalPosition forName:SDLRPCParameterNameVerticalPosition];
-}
-
-- (nullable NSNumber<SDLInt> *)verticalPosition {
- return [self.store sdl_objectForName:SDLRPCParameterNameVerticalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFrontVerticalPosition:(nullable NSNumber<SDLInt> *)frontVerticalPosition {
- [self.store sdl_setObject:frontVerticalPosition forName:SDLRPCParameterNameFrontVerticalPosition];
-}
-
-- (nullable NSNumber<SDLInt> *)frontVerticalPosition {
- return [self.store sdl_objectForName:SDLRPCParameterNameFrontVerticalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBackVerticalPosition:(nullable NSNumber<SDLInt> *)backVerticalPosition {
- [self.store sdl_setObject:backVerticalPosition forName:SDLRPCParameterNameBackVerticalPosition];
-}
-
-- (nullable NSNumber<SDLInt> *)backVerticalPosition {
- return [self.store sdl_objectForName:SDLRPCParameterNameBackVerticalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBackTiltAngle:(nullable NSNumber<SDLInt> *)backTiltAngle {
- [self.store sdl_setObject:backTiltAngle forName:SDLRPCParameterNameBackTiltAngle];
-}
-
-- (nullable NSNumber<SDLInt> *)backTiltAngle {
- return [self.store sdl_objectForName:SDLRPCParameterNameBackTiltAngle ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeadSupportHorizontalPosition:(nullable NSNumber<SDLInt> *)headSupportHorizontalPosition {
- [self.store sdl_setObject:headSupportHorizontalPosition forName:SDLRPCParameterNameHeadSupportHorizontalPosition];
-}
-
-- (nullable NSNumber<SDLInt> *)headSupportHorizontalPosition {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPosition ofClass:NSNumber.class error:nil];
-}
-
--(void)setHeadSupportVerticalPosition:(nullable NSNumber<SDLInt> *)headSupportVerticalPosition {
- [self.store sdl_setObject:headSupportVerticalPosition forName:SDLRPCParameterNameHeadSupportVerticalPosition];
-}
-
-- (nullable NSNumber<SDLInt> *)headSupportVerticalPosition {
- return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setMassageEnabled:(nullable NSNumber<SDLBool> *)massageEnabled {
- [self.store sdl_setObject:massageEnabled forName:SDLRPCParameterNameMassageEnabled];
-}
-
-- (nullable NSNumber<SDLBool> *)massageEnabled {
- return [self.store sdl_objectForName:SDLRPCParameterNameMassageEnabled ofClass:NSNumber.class error:nil];
-
-}
-
-- (void)setMassageMode:(nullable NSArray<SDLMassageModeData *> *)massageMode {
- [self.store sdl_setObject:massageMode forName:SDLRPCParameterNameMassageMode];
-}
-
-- (nullable NSArray<SDLMassageModeData *> *)massageMode {
- return [self.store sdl_objectsForName:SDLRPCParameterNameMassageMode ofClass:SDLMassageModeData.class error:nil];
-}
-
-- (void)setMassageCushionFirmness:(nullable NSArray<SDLMassageCushionFirmness *> *)massageCushionFirmness {
- [self.store sdl_setObject:massageCushionFirmness forName:SDLRPCParameterNameMassageCushionFirmness];
-}
-
-- (nullable NSArray<SDLMassageCushionFirmness *> *)massageCushionFirmness {
- return [self.store sdl_objectsForName:SDLRPCParameterNameMassageCushionFirmness ofClass:SDLMassageCushionFirmness.class error:nil];
-}
-
-- (void)setMemory:(nullable SDLSeatMemoryAction *)memory {
- [self.store sdl_setObject:memory forName:SDLRPCParameterNameMemory];
-}
-
-- (nullable SDLSeatMemoryAction *)memory {
- return [self.store sdl_objectForName:SDLRPCParameterNameMemory ofClass:SDLSeatMemoryAction.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSeatMemoryActionType.h b/SmartDeviceLink/SDLSeatMemoryActionType.h
deleted file mode 100644
index 9ac8eafae..000000000
--- a/SmartDeviceLink/SDLSeatMemoryActionType.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLSeatMemoryActionType.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * List of possible actions on Seat Meomry
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLSeatMemoryActionType SDL_SWIFT_ENUM;
-
-/**
- * @abstract Save current seat postions and settings to seat memory.
- */
-extern SDLSeatMemoryActionType const SDLSeatMemoryActionTypeSave;
-
-/**
- * @abstract Restore / apply the seat memory settings to the current seat.
- */
-extern SDLSeatMemoryActionType const SDLSeatMemoryActionTypeRestore;
-
-/**
- * @abstract No action to be performed.
- */
-extern SDLSeatMemoryActionType const SDLSeatMemoryActionTypeNone;
-
diff --git a/SmartDeviceLink/SDLServiceUpdateReason.h b/SmartDeviceLink/SDLServiceUpdateReason.h
deleted file mode 100644
index 09a4c9865..000000000
--- a/SmartDeviceLink/SDLServiceUpdateReason.h
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// SDLServiceUpdateReason.h
-// SmartDeviceLink
-//
-// Created by Nicole on 1/25/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration listing possible service update reasons.
- */
-typedef SDLEnum SDLServiceUpdateReason SDL_SWIFT_ENUM;
-
-/**
- * The service has just been published with the module and once activated to the primary service of its type, it will be ready for possible consumption.
- */
-extern SDLServiceUpdateReason const SDLServiceUpdatePublished;
-
-/**
- * The service has just been unpublished with the module and is no longer accessible.
- */
-extern SDLServiceUpdateReason const SDLServiceUpdateRemoved;
-
-/**
- * The service is activated as the primary service of this type. All requests dealing with this service type will be handled by this service.
- */
-extern SDLServiceUpdateReason const SDLServiceUpdateActivated;
-
-/**
- * The service has been deactivated as the primary service of its type.
- */
-extern SDLServiceUpdateReason const SDLServiceUpdateDeactivated;
-
-/**
- * The service has updated its manifest. This could imply updated capabilities.
- */
-extern SDLServiceUpdateReason const SDLServiceUpdateManifestUpdate;
diff --git a/SmartDeviceLink/SDLServiceUpdateReason.m b/SmartDeviceLink/SDLServiceUpdateReason.m
deleted file mode 100644
index 2a2fe9c82..000000000
--- a/SmartDeviceLink/SDLServiceUpdateReason.m
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// SDLServiceUpdateReason.m
-// SmartDeviceLink
-//
-// Created by Nicole on 1/25/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLServiceUpdateReason.h"
-
-SDLServiceUpdateReason const SDLServiceUpdatePublished = @"PUBLISHED";
-SDLServiceUpdateReason const SDLServiceUpdateRemoved = @"REMOVED";
-SDLServiceUpdateReason const SDLServiceUpdateActivated = @"ACTIVATED";
-SDLServiceUpdateReason const SDLServiceUpdateDeactivated = @"DEACTIVATED";
-SDLServiceUpdateReason const SDLServiceUpdateManifestUpdate = @"MANIFEST_UPDATE";
diff --git a/SmartDeviceLink/SDLSetDisplayLayout.h b/SmartDeviceLink/SDLSetDisplayLayout.h
deleted file mode 100644
index e1c31d12d..000000000
--- a/SmartDeviceLink/SDLSetDisplayLayout.h
+++ /dev/null
@@ -1,66 +0,0 @@
-// SDLSetDisplayLayout.h
-//
-
-
-#import "SDLRPCRequest.h"
-
-#import "SDLPredefinedLayout.h"
-
-@class SDLTemplateColorScheme;
-
-/**
- * Used to set an alternate display layout. If not sent, default screen for
- * given platform will be shown
- *
- * Since SmartDeviceLink 2.0
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLSetDisplayLayout : SDLRPCRequest
-
-/// Convenience init to set a display layout
-///
-/// @param predefinedLayout A template layout an app uses to display information
-/// @return An SDLSetDisplayLayout object
-- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout;
-
-/// Convenience init to set a display layout
-///
-/// @param displayLayout A display layout name
-/// @return An SDLSetDisplayLayout object
-- (instancetype)initWithLayout:(NSString *)displayLayout;
-
-/// Convenience init to set a display layout
-///
-/// @param predefinedLayout A display layout. Predefined or dynamically created screen layout
-/// @param dayColorScheme The color scheme to be used on a head unit using a "light" or "day" color scheme
-/// @param nightColorScheme The color scheme to be used on a head unit using a "dark" or "night" color scheme
-/// @return An SDLSetDisplayLayout object
-- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout dayColorScheme:(SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(SDLTemplateColorScheme *)nightColorScheme;
-
-/**
- * A display layout. Predefined or dynamically created screen layout.
- * Currently only predefined screen layouts are defined. Predefined layouts
- * include: "ONSCREEN_PRESETS" Custom screen containing app-defined onscreen
- * presets. Currently defined for GEN2
- */
-@property (strong, nonatomic) NSString *displayLayout;
-
-/**
- The color scheme to be used on a head unit using a "light" or "day" color scheme. The OEM may only support this theme if their head unit only has a light color scheme.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
-
-/**
- The color scheme to be used on a head unit using a "dark" or "night" color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetDisplayLayout.m b/SmartDeviceLink/SDLSetDisplayLayout.m
deleted file mode 100644
index b26c7a97c..000000000
--- a/SmartDeviceLink/SDLSetDisplayLayout.m
+++ /dev/null
@@ -1,77 +0,0 @@
-// SDLSetDisplayLayout.m
-//
-
-
-#import "SDLSetDisplayLayout.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLTemplateColorScheme.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSetDisplayLayout
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameSetDisplayLayout]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout {
- return [self initWithLayout:predefinedLayout];
-}
-
-- (instancetype)initWithLayout:(NSString *)displayLayout {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.displayLayout = displayLayout;
-
- return self;
-}
-
-- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout dayColorScheme:(SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(SDLTemplateColorScheme *)nightColorScheme {
- self = [self initWithPredefinedLayout:predefinedLayout];
- if (!self) { return nil; }
-
- self.dayColorScheme = dayColorScheme;
- self.nightColorScheme = nightColorScheme;
-
- return self;
-}
-
-- (void)setDisplayLayout:(NSString *)displayLayout {
- [self.parameters sdl_setObject:displayLayout forName:SDLRPCParameterNameDisplayLayout];
-}
-
-- (NSString *)displayLayout {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDisplayLayout ofClass:NSString.class error:&error];
-}
-
-- (void)setDayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme {
- [self.parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme];
-}
-
-- (nullable SDLTemplateColorScheme *)dayColorScheme {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
-}
-
-- (void)setNightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
- [self.parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme];
-}
-
-- (nullable SDLTemplateColorScheme *)nightColorScheme {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetGlobalProperties.h b/SmartDeviceLink/SDLSetGlobalProperties.h
deleted file mode 100644
index ef1746ad5..000000000
--- a/SmartDeviceLink/SDLSetGlobalProperties.h
+++ /dev/null
@@ -1,139 +0,0 @@
-// SDLSetGlobalProperties.h
-//
-
-#import "SDLRPCRequest.h"
-
-#import "SDLMenuLayout.h"
-
-@class SDLImage;
-@class SDLKeyboardProperties;
-@class SDLTTSChunk;
-@class SDLVRHelpItem;
-@class SDLSeatLocation;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Sets global property values
-
- Since SmartDeviceLink 1.0
-
- See SDLResetGlobalProperties
- */
-@interface SDLSetGlobalProperties : SDLRPCRequest
-
-/**
- Initialize SetGlobalProperties with help text and timeout text
-
- @param helpText A string that will be turned into TTS chunks for the help prompt
- @param timeoutText A string that will be turned into TTS chunks for the timeout prompt
- @return The SetGlobalProperties RPC
- */
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText __deprecated_msg("Use initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:menuLayout: instead");
-
-/**
- Initialize SetGlobalProperties with help text, timeout text, help title, and help items
-
- @param helpText A string that will be turned into TTS chunks for the help prompt
- @param timeoutText A string that will be turned into TTS chunks for the timeout prompt
- @param vrHelpTitle The title of the help interface prompt
- @param vrHelp The items of the help interface prompt
- @return The SetGlobalProperties RPC
- */
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp __deprecated_msg("Use initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:menuLayout: instead");
-
-/**
- Initialize SetGlobalProperties with all possible items
-
- @param helpText A string that will be turned into TTS chunks for the help prompt
- @param timeoutText A string that will be turned into TTS chunks for the timeout prompt
- @param vrHelpTitle The title of the help interface prompt
- @param vrHelp The items of the help interface prompt
- @param menuTitle The title of the menu button
- @param menuIcon The icon on the menu button
- @param keyboardProperties The properties of a keyboard prompt
- @return The SetGlobalProperties RPC
- */
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties __deprecated_msg("Use initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:menuLayout: instead");
-
-/**
- Initialize SetGlobalProperties with all possible items
-
- @param helpText A string that will be turned into TTS chunks for the help prompt
- @param timeoutText A string that will be turned into TTS chunks for the timeout prompt
- @param vrHelpTitle The title of the help interface prompt
- @param vrHelp The items of the help interface prompt
- @param menuTitle The title of the menu button
- @param menuIcon The icon on the menu button
- @param keyboardProperties The properties of a keyboard prompt
- @param menuLayout The layout of the top-level main menu
- @return The SetGlobalProperties RPC
- */
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties menuLayout:(nullable SDLMenuLayout)menuLayout;
-
-/**
- Help prompt for when the user asks for help with an interface prompt
-
- Optional
- */
-@property (strong, nonatomic, nullable) NSArray<SDLTTSChunk *> *helpPrompt;
-
-/**
- Help prompt for when an interface prompt times out
-
- Optional, Array, at least 1 item
- */
-@property (strong, nonatomic, nullable) NSArray<SDLTTSChunk *> *timeoutPrompt;
-
-/**
- Sets a voice recognition Help Title
-
- Optional
- */
-@property (strong, nonatomic, nullable) NSString *vrHelpTitle;
-
-/**
- Sets the items listed in the VR help screen used in an interaction started by Push to Talk
-
- @since SmartDeviceLink 2.0
-
- Optional
- */
-@property (strong, nonatomic, nullable) NSArray<SDLVRHelpItem *> *vrHelp;
-
-/**
- Text for the menu button label
-
- Optional
- */
-@property (strong, nonatomic, nullable) NSString *menuTitle;
-
-/**
- Icon for the menu button
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLImage *menuIcon;
-
-/**
- On-screen keyboard (perform interaction) configuration
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLKeyboardProperties *keyboardProperties;
-
-/**
- Location of the user's seat. Default is driver's seat location if it is not set yet
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLSeatLocation *userLocation;
-
-/**
- The main menu layout. If this is sent while a menu is already on-screen, the head unit will change the display to the new layout type. See available menu layouts on DisplayCapabilities.menuLayoutsAvailable. Defaults to the head unit default.
- */
-@property (strong, nonatomic, nullable) SDLMenuLayout menuLayout;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetGlobalProperties.m b/SmartDeviceLink/SDLSetGlobalProperties.m
deleted file mode 100644
index b502fcfd1..000000000
--- a/SmartDeviceLink/SDLSetGlobalProperties.m
+++ /dev/null
@@ -1,133 +0,0 @@
-// SDLSetGlobalProperties.m
-//
-
-
-#import "SDLSetGlobalProperties.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLImage.h"
-#import "SDLKeyboardProperties.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLTTSChunk.h"
-#import "SDLVrHelpItem.h"
-#import "SDLSeatLocation.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSetGlobalProperties
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameSetGlobalProperties]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText {
- return [self initWithHelpText:helpText timeoutText:timeoutText vrHelpTitle:nil vrHelp:nil menuTitle:nil menuIcon:nil keyboardProperties:nil menuLayout:nil];
-}
-
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- return [self initWithHelpText:helpText timeoutText:timeoutText vrHelpTitle:vrHelpTitle vrHelp:vrHelp menuTitle:nil menuIcon:nil keyboardProperties:nil menuLayout:nil];
-}
-
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties {
- return [self initWithHelpText:helpText timeoutText:timeoutText vrHelpTitle:vrHelpTitle vrHelp:vrHelp menuTitle:menuTitle menuIcon:menuIcon keyboardProperties:keyboardProperties menuLayout:nil];
-}
-
-- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties menuLayout:(nullable SDLMenuLayout)menuLayout {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.helpPrompt = [SDLTTSChunk textChunksFromString:helpText];
- self.timeoutPrompt = [SDLTTSChunk textChunksFromString:timeoutText];
- self.vrHelpTitle = vrHelpTitle;
- self.vrHelp = [vrHelp mutableCopy];
- self.menuTitle = menuTitle;
- self.menuIcon = menuIcon;
- self.keyboardProperties = keyboardProperties;
- self.menuLayout = menuLayout;
-
- return self;
-}
-
-- (void)setHelpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt {
- [self.parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt];
-}
-
-- (nullable NSArray<SDLTTSChunk *> *)helpPrompt {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil];
-}
-
-- (void)setTimeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
- [self.parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt];
-}
-
-- (nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil];
-}
-
-- (void)setVrHelpTitle:(nullable NSString *)vrHelpTitle {
- [self.parameters sdl_setObject:vrHelpTitle forName:SDLRPCParameterNameVRHelpTitle];
-}
-
-- (nullable NSString *)vrHelpTitle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameVRHelpTitle ofClass:NSString.class error:nil];
-}
-
-- (void)setVrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- [self.parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp];
-}
-
-- (nullable NSArray<SDLVRHelpItem *> *)vrHelp {
- return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil];
-}
-
-- (void)setMenuTitle:(nullable NSString *)menuTitle {
- [self.parameters sdl_setObject:menuTitle forName:SDLRPCParameterNameMenuTitle];
-}
-
-- (nullable NSString *)menuTitle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuTitle ofClass:NSString.class error:nil];
-}
-
-- (void)setMenuIcon:(nullable SDLImage *)menuIcon {
- [self.parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon];
-}
-
-- (nullable SDLImage *)menuIcon {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:SDLImage.class error:nil];
-}
-
-- (void)setKeyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties {
- [self.parameters sdl_setObject:keyboardProperties forName:SDLRPCParameterNameKeyboardProperties];
-}
-
-- (nullable SDLKeyboardProperties *)keyboardProperties {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameKeyboardProperties ofClass:SDLKeyboardProperties.class error:nil];
-}
-
-- (void)setUserLocation:(nullable SDLSeatLocation *)userLocation {
- [self.parameters sdl_setObject:userLocation forName:SDLRPCParameterNameUserLocation];
-}
-
-- (nullable SDLSeatLocation *)userLocation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameUserLocation ofClass:SDLSeatLocation.class error:nil];
-}
-
-- (void)setMenuLayout:(nullable SDLMenuLayout)menuLayout {
- [self.parameters sdl_setObject:menuLayout forName:SDLRPCParameterNameMenuLayout];
-}
-
-- (nullable SDLMenuLayout)menuLayout {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameMenuLayout error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetMediaClockTimer.h b/SmartDeviceLink/SDLSetMediaClockTimer.h
deleted file mode 100644
index 6b40e5d96..000000000
--- a/SmartDeviceLink/SDLSetMediaClockTimer.h
+++ /dev/null
@@ -1,199 +0,0 @@
-// SDLSetMediaClockTimer.h
-//
-
-#import "SDLRPCRequest.h"
-
-#import "SDLUpdateMode.h"
-#import "SDLAudioStreamingIndicator.h"
-
-@class SDLStartTime;
-
-/**
- * Sets the media clock/timer value and the update method (e.g.count-up,
- * count-down, etc.)
- * <p>
- * Function Group: Base <p>
- * <b>HMILevel needs to be FULL, LIMITIED or BACKGROUND</b>
- * </p>
- *
- * Since SmartDeviceLink 1.0
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLSetMediaClockTimer : SDLRPCRequest
-
-/**
- Create a media clock timer that counts up, e.g from 0:00 to 4:18.
-
- This will fail if startTime is greater than endTime
-
- @param startTime The start time interval, e.g. (0) 0:00
- @param endTime The end time interval, e.g. (258) 4:18
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:));
-
-/**
- Create a media clock timer that counts up, e.g from 0:00 to 4:18.
-
- This will fail if startTime is greater than endTime
-
- @param startTime The start time interval, e.g. 0:00
- @param endTime The end time interval, e.g. 4:18
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:));
-
-/**
- Create a media clock timer that counts down, e.g. from 4:18 to 0:00
-
- This will fail if endTime is greater than startTime
-
- @param startTime The start time interval, e.g. (258) 4:18
- @param endTime The end time interval, e.g. (0) 0:00
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:));
-
-/**
- Create a media clock timer that counts down, e.g. from 4:18 to 0:00
-
- This will fail if endTime is greater than startTime
-
- @param startTime The start time interval, e.g. 4:18
- @param endTime The end time interval, e.g. 0:00
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:));
-
-/**
- Pause an existing (counting up / down) media clock timer
-
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)pauseWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(pause(playPauseIndicator:));
-
-/**
- Update a pause time (or pause and update the time) on a media clock timer
-
- @param startTime The new start time interval
- @param endTime The new end time interval
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)updatePauseWithNewStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(pause(newStart:newEnd:playPauseIndicator:));
-
-/**
- Update a pause time (or pause and update the time) on a media clock timer
-
- @param startTime The new start time
- @param endTime The new end time
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)updatePauseWithNewStartTime:(SDLStartTime *)startTime endTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(pause(newStart:newEnd:playPauseIndicator:));
-
-/**
- Resume a paused media clock timer. It resumes at the same time at which it was paused.
-
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(resume(playPauseIndicator:));
-
-/**
- Remove a media clock timer from the screen
-
- @param playPauseIndicator An optional audio indicator to change the play/pause button
- @return An object of SetMediaClockTimer
- */
-+ (instancetype)clearWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(clear(playPauseIndicator:));
-
-/// Convenience init to create a SDLSetMediaClockTimer object
-///
-/// @param updateMode The type of SetMediaClockTimer RPC
-/// @param hours Hour
-/// @param minutes Minuute
-/// @param seconds Seconds
-/// @param audioStreamingIndicator The audio streaming indicator used for a play/pause button
-/// @return An SDLSetMediaClockTimer object
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode hours:(UInt8)hours minutes:(UInt8)minutes seconds:(UInt8)seconds audioStreamingIndicator:(SDLAudioStreamingIndicator)audioStreamingIndicator __deprecated_msg("Use a specific initializer");
-
-/// Convenience init to create a SDLSetMediaClockTimer object
-///
-/// @param updateMode The type of SetMediaClockTimer RPC
-/// @param hours Hour
-/// @param minutes Minuute
-/// @param seconds Seconds
-/// @return An SDLSetMediaClockTimer object
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode hours:(UInt8)hours minutes:(UInt8)minutes seconds:(UInt8)seconds __deprecated_msg("Use a specific initializer");
-
-/// Convenience init to create a SDLSetMediaClockTimer object
-///
-/// @param updateMode he type of SetMediaClockTimer RPC
-/// @return An SDLSetMediaClockTimer object
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode __deprecated_msg("Use a specific initializer");
-
-/**
- Create a SetMediaClockTimer RPC with all available parameters. It's recommended to use the specific initializers above.
-
- @param updateMode The type of SetMediaClockTimer RPC
- @param startTime The start time. Only valid in some updateModes.
- @param endTime The end time. Only valid in some updateModes.
- @param playPauseIndicator The display of the play/pause button
- @return An object of SetMediaClockTimer
- */
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(init(updateMode:startTime:endTime:playPauseIndicator:));
-
-/**
- * A Start Time with specifying hour, minute, second values
- *
- * @discussion A startTime object with specifying hour, minute, second values
- * <p>
- * <b>Notes: </b>
- * <ul>
- * <li>If "updateMode" is COUNTUP or COUNTDOWN, this parameter
- * must be provided</li>
- * <li>Will be ignored for PAUSE/RESUME and CLEAR</li>
- * </ul>
- */
-@property (strong, nonatomic, nullable) SDLStartTime *startTime;
-/**
- * An END time of type SDLStartTime, specifying hour, minute, second values
- *
- * @discussion An SDLStartTime object with specifying hour, minute, second values
- */
-@property (strong, nonatomic, nullable) SDLStartTime *endTime;
-/**
- * The media clock/timer update mode (COUNTUP/COUNTDOWN/PAUSE/RESUME)
- *
- * @discussion a Enumeration value (COUNTUP/COUNTDOWN/PAUSE/RESUME)
- * <p>
- * <b>Notes: </b>
- * <ul>
- * <li>When updateMode is PAUSE, RESUME or CLEAR, the start time value
- * is ignored</li>
- * <li>When updateMode is RESUME, the timer resumes counting from
- * the timer's value when it was paused</li>
- * </ul>
- */
-@property (strong, nonatomic) SDLUpdateMode updateMode;
-
-/**
- * The audio streaming indicator used for a play/pause button.
- *
- * @discussion Set the indicator icon of a play/pause button depending on the
- * current audio playback. This parameter is optional. If omitted the last indicator sent
- * will not change.
- */
-@property (strong, nonatomic, nullable) SDLAudioStreamingIndicator audioStreamingIndicator;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetMediaClockTimer.m b/SmartDeviceLink/SDLSetMediaClockTimer.m
deleted file mode 100644
index ce536ce8f..000000000
--- a/SmartDeviceLink/SDLSetMediaClockTimer.m
+++ /dev/null
@@ -1,150 +0,0 @@
-// SDLSetMediaClockTimer.m
-//
-
-
-#import "SDLSetMediaClockTimer.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLStartTime.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSetMediaClockTimer
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameSetMediaClockTimer]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- self = [self init];
- if (!self) { return nil; }
-
- self.updateMode = updateMode;
- self.startTime = startTime;
- self.endTime = endTime;
- self.audioStreamingIndicator = playPauseIndicator;
-
- return self;
-}
-
-+ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
- SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
-
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
- SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
-
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)pauseWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)updatePauseWithNewStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
- SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
-
- return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)updatePauseWithNewStartTime:(SDLStartTime *)startTime endTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeResume startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
-}
-
-+ (instancetype)clearWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeClear startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
-}
-
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode hours:(UInt8)hours minutes:(UInt8)minutes seconds:(UInt8)seconds audioStreamingIndicator:(SDLAudioStreamingIndicator)audioStreamingIndicator {
- self = [self initWithUpdateMode:updateMode hours:hours minutes:minutes seconds:seconds];
- if (!self) {
- return nil;
- }
-
- self.audioStreamingIndicator = audioStreamingIndicator;
-
- return self;
-}
-
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode hours:(UInt8)hours minutes:(UInt8)minutes seconds:(UInt8)seconds {
- self = [self initWithUpdateMode:updateMode];
- if (!self) {
- return nil;
- }
-
- self.startTime = [[SDLStartTime alloc] initWithHours:hours minutes:minutes seconds:seconds];
-
- return self;
-}
-
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.updateMode = updateMode;
-
- return self;
-}
-
-- (void)setStartTime:(nullable SDLStartTime *)startTime {
- [self.parameters sdl_setObject:startTime forName:SDLRPCParameterNameStartTime];
-}
-
-- (nullable SDLStartTime *)startTime {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameStartTime ofClass:SDLStartTime.class error:nil];
-}
-
-- (void)setEndTime:(nullable SDLStartTime *)endTime {
- [self.parameters sdl_setObject:endTime forName:SDLRPCParameterNameEndTime];
-}
-
-- (nullable SDLStartTime *)endTime {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEndTime ofClass:SDLStartTime.class error:nil];
-}
-
-- (void)setUpdateMode:(SDLUpdateMode)updateMode {
- [self.parameters sdl_setObject:updateMode forName:SDLRPCParameterNameUpdateMode];
-}
-
-- (SDLUpdateMode)updateMode {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameUpdateMode error:&error];
-}
-
-- (void)setAudioStreamingIndicator:(nullable SDLAudioStreamingIndicator)audioStreamingIndicator {
- [self.parameters sdl_setObject:audioStreamingIndicator forName:SDLRPCParameterNameAudioStreamingIndicator];
-}
-
-- (nullable SDLAudioStreamingIndicator)audioStreamingIndicator {
- return [self.parameters sdl_enumForName:SDLRPCParameterNameAudioStreamingIndicator error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLShowAppMenu.m b/SmartDeviceLink/SDLShowAppMenu.m
deleted file mode 100644
index d93b8480d..000000000
--- a/SmartDeviceLink/SDLShowAppMenu.m
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// SDLOpenMenu.m
-// SmartDeviceLink
-//
-// Created by Justin Gluck on 7/12/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLShowAppMenu.h"
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLShowAppMenu
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameShowAppMenu]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithMenuID:(UInt32)menuID {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.menuID = @(menuID);
- return self;
-}
-
-- (void)setMenuID:(nullable NSNumber<SDLInt> *)menuID {
- [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuId];
-}
-
-- (nullable NSNumber<SDLInt> *)menuID {
- NSError *error = nil;
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuId ofClass:NSNumber.class error:&error];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSoftButtonType.h b/SmartDeviceLink/SDLSoftButtonType.h
deleted file mode 100644
index 0519ce1b0..000000000
--- a/SmartDeviceLink/SDLSoftButtonType.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// SDLSoftButtonType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- SoftButtonType (TEXT / IMAGE / BOTH). Used by SoftButton.
- */
-typedef SDLEnum SDLSoftButtonType SDL_SWIFT_ENUM;
-
-/**
- Text kind Softbutton
- */
-extern SDLSoftButtonType const SDLSoftButtonTypeText;
-
-/**
- Image kind Softbutton
- */
-extern SDLSoftButtonType const SDLSoftButtonTypeImage;
-
-/**
- Both (Text & Image) kind Softbutton
- */
-extern SDLSoftButtonType const SDLSoftButtonTypeBoth;
diff --git a/SmartDeviceLink/SDLSpeechCapabilities.h b/SmartDeviceLink/SDLSpeechCapabilities.h
deleted file mode 100644
index 985de6171..000000000
--- a/SmartDeviceLink/SDLSpeechCapabilities.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// SDLSpeechCapabilities.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Contains information about TTS capabilities on the SDL platform. Used in RegisterAppInterfaceResponse, and TTSChunk.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLSpeechCapabilities SDL_SWIFT_ENUM;
-
-/**
- The SDL platform can speak text phrases.
- */
-extern SDLSpeechCapabilities const SDLSpeechCapabilitiesText;
-
-/**
- The SDL platform can speak SAPI Phonemes.
- */
-extern SDLSpeechCapabilities const SDLSpeechCapabilitiesSAPIPhonemes;
-
-/**
- The SDL platform can speak LHPlus Phonemes.
- */
-extern SDLSpeechCapabilities const SDLSpeechCapabilitiesLHPlusPhonemes;
-
-/**
- The SDL platform can speak Prerecorded indicators and prompts.
- */
-extern SDLSpeechCapabilities const SDLSpeechCapabilitiesPrerecorded;
-
-/**
- The SDL platform can speak Silence.
- */
-extern SDLSpeechCapabilities const SDLSpeechCapabilitiesSilence;
-
-/**
- The SDL platform can play a file
- */
-extern SDLSpeechCapabilities const SDLSpeechCapabilitiesFile;
diff --git a/SmartDeviceLink/SDLStaticIconName.h b/SmartDeviceLink/SDLStaticIconName.h
deleted file mode 100644
index db143a9c7..000000000
--- a/SmartDeviceLink/SDLStaticIconName.h
+++ /dev/null
@@ -1,900 +0,0 @@
-//
-// SDLStaticIconName.h
-// SmartDeviceLink
-//
-// Created by Nicole on 7/23/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Static icon names
- */
-typedef SDLEnum SDLStaticIconName SDL_SWIFT_ENUM;
-
-/**
- * Static icon accept call / active phone call in progress / initiate a phone call
- */
-extern SDLStaticIconName const SDLStaticIconNameAcceptCall;
-
-/**
- * Static icon add waypoint
- */
-extern SDLStaticIconName const SDLStaticIconNameAddWaypoint;
-
-/**
- * Static icon album
- */
-extern SDLStaticIconName const SDLStaticIconNameAlbum;
-
-/**
- * Static icon ambient lighting
- */
-extern SDLStaticIconName const SDLStaticIconNameAmbientLighting;
-
-/**
- * Static icon arrow - north
- */
-extern SDLStaticIconName const SDLStaticIconNameArrowNorth;
-
-/**
- * Static icon audio mute
- */
-extern SDLStaticIconName const SDLStaticIconNameAudioMute;
-
-/**
- * Static icon audiobook episode
- */
-extern SDLStaticIconName const SDLStaticIconNameAudiobookEpisode;
-
-/**
- * Static icon audiobook narrator
- */
-extern SDLStaticIconName const SDLStaticIconNameAudiobookNarrator;
-
-/**
- * Static icon auxillary audio
- */
-extern SDLStaticIconName const SDLStaticIconNameAuxillaryAudio;
-
-/**
- * Static icon back / return
- */
-extern SDLStaticIconName const SDLStaticIconNameBack;
-
-/**
- * Static icon battery capacity 0 of 5
- */
-extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity0Of5;
-
-/**
- * Static icon battery capacity 1 of 5
- */
-extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity1Of5;
-
-/**
- * Static icon battery capacity 2 of 5
- */
-extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity2Of5;
-
-/**
- * Static icon battery capacity 3 of 5
- */
-extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity3Of5;
-
-/**
- * Static icon battery capacity 4 of 5
- */
-extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity4Of5;
-
-/**
- * Static icon battery capacity 5 of 5
- */
-extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity5Of5;
-
-/**
- * Static icon bluetooth audio source
- */
-extern SDLStaticIconName const SDLStaticIconNameBluetoothAudioSource;
-
-/**
- * Static icon bluetooth1
- */
-extern SDLStaticIconName const SDLStaticIconNameBluetooth1;
-
-/**
- * Static icon bluetooth2
- */
-extern SDLStaticIconName const SDLStaticIconNameBluetooth2;
-
-/**
- * Static icon browse
- */
-extern SDLStaticIconName const SDLStaticIconNameBrowse;
-
-/**
- * Static icon cell phone in roaming mode
- */
-extern SDLStaticIconName const SDLStaticIconNameCellPhoneInRoamingMode;
-
-/**
- * Static icon cell service signal strength 0 of 5 bars
- */
-extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength0Of5Bars;
-
-/**
- * Static icon cell service signal strength 1 of 5 bars
- */
-extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength1Of5Bars;
-
-/**
- * Static icon cell service signal strength 2 of 5 bars
- */
-extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength2Of5Bars;
-
-/**
- * Static icon cell service signal strength 3 of 5 bars
- */
-extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength3Of5Bars;
-
-/**
- * Static icon cell service signal strength 4 of 5 bars
- */
-extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength4Of5Bars;
-
-/**
- * Static icon cell service signal strength 5 of 5 bars
- */
-extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength5Of5Bars;
-
-/**
- * Static icon change lane left
- */
-extern SDLStaticIconName const SDLStaticIconNameChangeLaneLeft;
-
-/**
- * Static icon change lane right
- */
-extern SDLStaticIconName const SDLStaticIconNameChangeLaneRight;
-
-/**
- * Static icon check box checked
- */
-extern SDLStaticIconName const SDLStaticIconNameCheckBoxChecked;
-
-/**
- * Static icon check box unchecked
- */
-extern SDLStaticIconName const SDLStaticIconNameCheckBoxUnchecked;
-
-/**
- * Static icon climate
- */
-extern SDLStaticIconName const SDLStaticIconNameClimate;
-
-/**
- * Static icon clock
- */
-extern SDLStaticIconName const SDLStaticIconNameClock;
-
-/**
- * Static icon compose (e.g. message)
- */
-extern SDLStaticIconName const SDLStaticIconNameCompose;
-
-/**
- * Static icon contact / person
- */
-extern SDLStaticIconName const SDLStaticIconNameContact;
-
-/**
- * Static icon continue
- */
-extern SDLStaticIconName const SDLStaticIconNameContinue;
-
-/**
- * Static icon dash / bullet point
- */
-extern SDLStaticIconName const SDLStaticIconNameDash;
-
-/**
- * Static icon date / calendar
- */
-extern SDLStaticIconName const SDLStaticIconNameDate;
-
-/**
- * Static icon delete/remove - trash
- */
-extern SDLStaticIconName const SDLStaticIconNameDelete;
-
-/**
- * Static icon destination
- */
-extern SDLStaticIconName const SDLStaticIconNameDestination;
-
-/**
- * Static icon destination ferry ahead
- */
-extern SDLStaticIconName const SDLStaticIconNameDestinationFerryAhead;
-
-/**
- * Static icon ebookmark (e.g. message, feed)
- */
-extern SDLStaticIconName const SDLStaticIconNameEbookmark;
-
-/**
- * Static icon empty (i.e. no image)
- */
-extern SDLStaticIconName const SDLStaticIconNameEmpty;
-
-/**
- * Static icon end call / reject call
- */
-extern SDLStaticIconName const SDLStaticIconNameEndCall;
-
-/**
- * Static icon fail / X
- */
-extern SDLStaticIconName const SDLStaticIconNameFail;
-
-/**
- * Static icon fast forward 30 secs
- */
-extern SDLStaticIconName const SDLStaticIconNameFastForward30Secs;
-
-/**
- * Static icon favorite / heart
- */
-extern SDLStaticIconName const SDLStaticIconNameFavoriteHeart;
-
-/**
- * Static icon favorite / star
- */
-extern SDLStaticIconName const SDLStaticIconNameFavoriteStar;
-
-/**
- * Static icon fax number
- */
-extern SDLStaticIconName const SDLStaticIconNameFaxNumber;
-
-/**
- * Static icon filename
- */
-extern SDLStaticIconName const SDLStaticIconNameFilename;
-
-/**
- * Static icon filter / search
- */
-extern SDLStaticIconName const SDLStaticIconNameFilter;
-
-/**
- * Static icon folder
- */
-extern SDLStaticIconName const SDLStaticIconNameFolder;
-
-/**
- * Static icon fuel prices
- */
-extern SDLStaticIconName const SDLStaticIconNameFuelPrices;
-
-/**
- * Static icon full map
- */
-extern SDLStaticIconName const SDLStaticIconNameFullMap;
-
-/**
- * Static icon generic phone number
- */
-extern SDLStaticIconName const SDLStaticIconNameGenericPhoneNumber;
-
-/**
- * Static icon genre
- */
-extern SDLStaticIconName const SDLStaticIconNameGenre;
-
-/**
- * Static icon global keyboard
- */
-extern SDLStaticIconName const SDLStaticIconNameGlobalKeyboard;
-
-/**
- * Static icon highway exit information
- */
-extern SDLStaticIconName const SDLStaticIconNameHighwayExitInformation;
-
-/**
- * Static icon home phone number
- */
-extern SDLStaticIconName const SDLStaticIconNameHomePhoneNumber;
-
-/**
- * Static icon hyperlink
- */
-extern SDLStaticIconName const SDLStaticIconNameHyperlink;
-
-/**
- * Static icon ID3 tag unknown
- */
-extern SDLStaticIconName const SDLStaticIconNameID3TagUnknown;
-
-/**
- * Static icon incoming calls (in list of phone calls)
- */
-extern SDLStaticIconName const SDLStaticIconNameIncomingCalls;
-
-/**
- * Static icon information
- */
-extern SDLStaticIconName const SDLStaticIconNameInformation;
-
-/**
- * Static icon IPOD media source
- */
-extern SDLStaticIconName const SDLStaticIconNameIPodMediaSource;
-
-/**
- * Static icon join calls
- */
-extern SDLStaticIconName const SDLStaticIconNameJoinCalls;
-
-/**
- * Static icon keep left
- */
-extern SDLStaticIconName const SDLStaticIconNameKeepLeft;
-
-/**
- * Static icon keep right
- */
-extern SDLStaticIconName const SDLStaticIconNameKeepRight;
-
-/**
- * Static icon key / keycode
- */
-extern SDLStaticIconName const SDLStaticIconNameKey;
-
-/**
- * Static icon left
- */
-extern SDLStaticIconName const SDLStaticIconNameLeft;
-
-/**
- * Static icon left arrow / back
- */
-extern SDLStaticIconName const SDLStaticIconNameLeftArrow;
-
-/**
- * Static icon left exit
- */
-extern SDLStaticIconName const SDLStaticIconNameLeftExit;
-
-/**
- * Static icon LINE IN audio source
- */
-extern SDLStaticIconName const SDLStaticIconNameLineInAudioSource;
-
-/**
- * Static icon locked
- */
-extern SDLStaticIconName const SDLStaticIconNameLocked;
-
-/**
- * Static icon media control - left arrow
- */
-extern SDLStaticIconName const SDLStaticIconNameMediaControlLeftArrow;
-
-/**
- * Static icon media control - recording
- */
-extern SDLStaticIconName const SDLStaticIconNameMediaControlRecording;
-
-/**
- * Static icon media control - right arrow
- */
-extern SDLStaticIconName const SDLStaticIconNameMediaControlRightArrow;
-
-/**
- * Static icon media control - stop (e.g. streaming)
- */
-extern SDLStaticIconName const SDLStaticIconNameMediaControlStop;
-
-/**
- * Static icon microphone
- */
-extern SDLStaticIconName const SDLStaticIconNameMicrophone;
-
-/**
- * Static icon missed calls (in list of phone calls)
- */
-extern SDLStaticIconName const SDLStaticIconNameMissedCalls;
-
-/**
- * Static icon mobile phone number
- */
-extern SDLStaticIconName const SDLStaticIconNameMobilePhoneNumber;
-
-/**
- * Static icon move down / download
- */
-extern SDLStaticIconName const SDLStaticIconNameMoveDown;
-
-/**
- * Static icon move up
- */
-extern SDLStaticIconName const SDLStaticIconNameMoveUp;
-
-/**
- * Static icon MP3 tag artist
- */
-extern SDLStaticIconName const SDLStaticIconNameMP3TagArtist;
-
-/**
- * Static icon navigation / navigation settings
- */
-extern SDLStaticIconName const SDLStaticIconNameNavigation;
-
-/**
- * Static icon navigation current direction
- */
-extern SDLStaticIconName const SDLStaticIconNameNavigationCurrentDirection;
-
-/**
- * Static icon negative rating - thumbs down
- */
-extern SDLStaticIconName const SDLStaticIconNameNegativeRatingThumbsDown;
-
-/**
- * Static icon new/unread text message/email
- */
-extern SDLStaticIconName const SDLStaticIconNameNew;
-
-/**
- * Static icon office phone number / work phone number
- */
-extern SDLStaticIconName const SDLStaticIconNameOfficePhoneNumber;
-
-/**
- * Static icon opened/read text message/email
- */
-extern SDLStaticIconName const SDLStaticIconNameOpened;
-
-/**
- * Static icon origin / nearby locale / current position
- */
-extern SDLStaticIconName const SDLStaticIconNameOrigin;
-
-/**
- * Static icon outgoing calls (in list of phone calls)
- */
-extern SDLStaticIconName const SDLStaticIconNameOutgoingCalls;
-
-/**
- * Static icon play / pause - pause active
- */
-extern SDLStaticIconName const SDLStaticIconNamePause;
-
-/**
- * Static icon phone call 1
- */
-extern SDLStaticIconName const SDLStaticIconNamePhoneCall1;
-
-/**
- * Static icon phone call 2
- */
-extern SDLStaticIconName const SDLStaticIconNamePhoneCall2;
-
-/**
- * Static icon phone device
- */
-extern SDLStaticIconName const SDLStaticIconNamePhoneDevice;
-
-/**
- * Static icon phonebook
- */
-extern SDLStaticIconName const SDLStaticIconNamePhonebook;
-
-/**
- * Static icon photo / picture
- */
-extern SDLStaticIconName const SDLStaticIconNamePhoto;
-
-/**
- * Static icon play / pause - play active
- */
-extern SDLStaticIconName const SDLStaticIconNamePlay;
-
-/**
- * Static icon playlist
- */
-extern SDLStaticIconName const SDLStaticIconNamePlaylist;
-
-/**
- * Static icon pop-up
- */
-extern SDLStaticIconName const SDLStaticIconNamePopUp;
-
-/**
- * Static icon positive rating - thumbs up
- */
-extern SDLStaticIconName const SDLStaticIconNamePositiveRatingThumbsUp;
-
-/**
- * Static icon power
- */
-extern SDLStaticIconName const SDLStaticIconNamePower;
-
-/**
- * Static icon primary phone (favorite)
- */
-extern SDLStaticIconName const SDLStaticIconNamePrimaryPhone;
-
-/**
- * Static icon radio button checked
- */
-extern SDLStaticIconName const SDLStaticIconNameRadioButtonChecked;
-
-/**
- * Static icon radio button unchecked
- */
-extern SDLStaticIconName const SDLStaticIconNameRadioButtonUnchecked;
-
-/**
- * Static icon recent calls / history
- */
-extern SDLStaticIconName const SDLStaticIconNameRecentCalls;
-
-/**
- * Static icon recent destinations
- */
-extern SDLStaticIconName const SDLStaticIconNameRecentDestinations;
-
-/**
- * Static icon redo
- */
-extern SDLStaticIconName const SDLStaticIconNameRedo;
-
-/**
- * Static icon refresh
- */
-extern SDLStaticIconName const SDLStaticIconNameRefresh;
-
-/**
- * Static icon remote diagnostics - check engine
- */
-extern SDLStaticIconName const SDLStaticIconNameRemoteDiagnosticsCheckEngine;
-
-/**
- * Static icon rendered 911 assist / emergency assistance
- */
-extern SDLStaticIconName const SDLStaticIconNameRendered911Assist;
-
-/**
- * Static icon repeat
- */
-extern SDLStaticIconName const SDLStaticIconNameRepeat;
-
-/**
- * Static icon repeat play
- */
-extern SDLStaticIconName const SDLStaticIconNameRepeatPlay;
-
-/**
- * Static icon reply
- */
-extern SDLStaticIconName const SDLStaticIconNameReply;
-
-/**
- * Static icon rewind 30 secs
- */
-extern SDLStaticIconName const SDLStaticIconNameRewind30Secs;
-
-/**
- * Static icon right
- */
-extern SDLStaticIconName const SDLStaticIconNameRight;
-
-/**
- * Static icon right exit
- */
-extern SDLStaticIconName const SDLStaticIconNameRightExit;
-
-/**
- * Static icon ringtones
- */
-extern SDLStaticIconName const SDLStaticIconNameRingtones;
-
-/**
- * Static icon roundabout left hand 1
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand1;
-
-/**
- * Static icon roundabout left hand 2
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand2;
-
-/**
- * Static icon roundabout left hand 3
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand3;
-
-/**
- * Static icon roundabout left hand 4
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand4;
-
-/**
- * Static icon roundabout left hand 5
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand5;
-
-/**
- * Static icon roundabout left hand 6
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand6;
-
-/**
- * Static icon roundabout left hand 7
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand7;
-
-/**
- * Static icon roundabout right hand 1
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand1;
-
-/**
- * Static icon roundabout right hand 2
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand2;
-
-/**
- * Static icon roundabout right hand 3
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand3;
-
-/**
- * Static icon roundabout right hand 4
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand4;
-
-/**
- * Static icon roundabout right hand 5
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand5;
-
-/**
- * Static icon roundabout right hand 6
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand6;
-
-/**
- * Static icon roundabout right hand 7
- */
-extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand7;
-
-/**
- * Static icon RSS
- */
-extern SDLStaticIconName const SDLStaticIconNameRSS;
-
-/**
- * Static icon settings / menu
- */
-extern SDLStaticIconName const SDLStaticIconNameSettings;
-
-/**
- * Static icon sharp left
- */
-extern SDLStaticIconName const SDLStaticIconNameSharpLeft;
-
-/**
- * Static icon sharp right
- */
-extern SDLStaticIconName const SDLStaticIconNameSharpRight;
-
-/**
- * Static icon show
- */
-extern SDLStaticIconName const SDLStaticIconNameShow;
-
-/**
- * Static icon shuffle play
- */
-extern SDLStaticIconName const SDLStaticIconNameShufflePlay;
-
-/**
- * Static icon ski places / elevation / altitude
- */
-extern SDLStaticIconName const SDLStaticIconNameSkiPlaces;
-
-/**
- * Static icon slight left
- */
-extern SDLStaticIconName const SDLStaticIconNameSlightLeft;
-
-/**
- * Static icon slight right
- */
-extern SDLStaticIconName const SDLStaticIconNameSlightRight;
-
-/**
- * Static icon smartphone
- */
-extern SDLStaticIconName const SDLStaticIconNameSmartphone;
-
-/**
- * Static icon sort list
- */
-extern SDLStaticIconName const SDLStaticIconNameSortList;
-
-/**
- * Static icon speed dial numbers - number 0
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber0;
-
-/**
- * Static icon speed dial numbers - number 1
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber1;
-
-/**
- * Static icon speed dial numbers - number 2
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber2;
-
-/**
- * Static icon speed dial numbers - number 3
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber3;
-
-/**
- * Static icon speed dial numbers - number 4
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber4;
-
-/**
- * Static icon speed dial numbers - number 5
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber5;
-
-/**
- * Static icon speed dial numbers - number 6
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber6;
-
-/**
- * Static icon speed dial numbers - number 7
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber7;
-
-/**
- * Static icon speed dial numbers - number 8
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber8;
-
-/**
- * Static icon speed dial numbers - number 9
- */
-extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber9;
-
-/**
- * Static icon success / check
- */
-extern SDLStaticIconName const SDLStaticIconNameSuccess;
-
-/**
- * Static icon track title / song title
- */
-extern SDLStaticIconName const SDLStaticIconNameTrackTitle;
-
-/**
- * Static icon traffic report
- */
-extern SDLStaticIconName const SDLStaticIconNameTrafficReport;
-
-/**
- * Static icon turn list
- */
-extern SDLStaticIconName const SDLStaticIconNameTurnList;
-
-/**
- * Static icon u-turn left traffic
- */
-extern SDLStaticIconName const SDLStaticIconNameUTurnLeftTraffic;
-
-/**
- * Static icon u-turn right traffic
- */
-extern SDLStaticIconName const SDLStaticIconNameUTurnRightTraffic;
-
-/**
- * Static icon undo
- */
-extern SDLStaticIconName const SDLStaticIconNameUndo;
-
-/**
- * Static icon unlocked
- */
-extern SDLStaticIconName const SDLStaticIconNameUnlocked;
-
-/**
- * Static icon USB media audio source
- */
-extern SDLStaticIconName const SDLStaticIconNameUSBMediaAudioSource;
-
-/**
- * Static icon voice control scrollbar - list item no. 1
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo1;
-
-/**
- * Static icon voice control scrollbar - list item no. 2
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo2;
-
-/**
- * Static icon voice control scrollbar - list item no. 3
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo3;
-
-/**
- * Static icon voice control scrollbar - list item no. 4
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo4;
-
-/**
- * Static icon voice recognition - failed
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionFailed;
-
-/**
- * Static icon voice recognition - pause
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionPause;
-
-/**
- * Static icon voice recognition - successful
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionSuccessful;
-
-/**
- * Static icon voice recognition - system active
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionSystemActive;
-
-/**
- * Static icon voice recognition - system listening
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionSystemListening;
-
-/**
- * Static icon voice recognition - try again
- */
-extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionTryAgain;
-
-/**
- * Static icon warning / safety alert
- */
-extern SDLStaticIconName const SDLStaticIconNameWarning;
-
-/**
- * Static icon weather
- */
-extern SDLStaticIconName const SDLStaticIconNameWeather;
-
-/**
- * Static icon wifi full
- */
-extern SDLStaticIconName const SDLStaticIconNameWifiFull;
-
-/**
- * Static icon zoom in
- */
-extern SDLStaticIconName const SDLStaticIconNameZoomIn;
-
-/**
- * Static icon zoom out
- */
-extern SDLStaticIconName const SDLStaticIconNameZoomOut;
-
diff --git a/SmartDeviceLink/SDLStreamingAudioLifecycleManager.m b/SmartDeviceLink/SDLStreamingAudioLifecycleManager.m
deleted file mode 100644
index af806d779..000000000
--- a/SmartDeviceLink/SDLStreamingAudioLifecycleManager.m
+++ /dev/null
@@ -1,316 +0,0 @@
-//
-// SDLStreamingAudioLifecycleManager.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 6/19/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLStreamingAudioLifecycleManager.h"
-
-#import "SDLAudioStreamManager.h"
-#import "SDLConfiguration.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLControlFramePayloadAudioStartServiceAck.h"
-#import "SDLControlFramePayloadConstants.h"
-#import "SDLControlFramePayloadNak.h"
-#import "SDLDisplayCapabilities.h"
-#import "SDLGlobals.h"
-#import "SDLHMICapabilities.h"
-#import "SDLLogMacros.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLProtocol.h"
-#import "SDLProtocolMessage.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLStateMachine.h"
-#import "SDLStreamingMediaConfiguration.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLEncryptionConfiguration.h"
-#import "SDLVehicleType.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLStreamingAudioLifecycleManager()
-
-@property (nonatomic, strong, readwrite) SDLAudioStreamManager *audioTranscodingManager;
-@property (strong, nonatomic, readwrite) SDLStateMachine *audioStreamStateMachine;
-@property (assign, nonatomic, readonly, getter=isHmiStateAudioStreamCapable) BOOL hmiStateAudioStreamCapable;
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic, nullable) SDLSystemCapabilityManager *systemCapabilityManager;
-@property (weak, nonatomic) SDLProtocol *protocol;
-
-@property (copy, nonatomic) NSArray<NSString *> *secureMakes;
-@property (copy, nonatomic, nullable) NSString *connectedVehicleMake;
-@property (assign, nonatomic, readwrite, getter=isAudioEncrypted) BOOL audioEncrypted;
-
-@property (nonatomic, copy, nullable) void (^audioServiceEndedCompletionHandler)(void);
-@end
-
-@implementation SDLStreamingAudioLifecycleManager
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _connectionManager = connectionManager;
- _audioTranscodingManager = [[SDLAudioStreamManager alloc] initWithManager:self];
- _systemCapabilityManager = systemCapabilityManager;
- _requestedEncryptionType = configuration.streamingMediaConfig.maximumDesiredEncryption;
-
- NSMutableArray<NSString *> *tempMakeArray = [NSMutableArray array];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- for (Class securityManagerClass in configuration.streamingMediaConfig.securityManagers) {
- [tempMakeArray addObjectsFromArray:[securityManagerClass availableMakes].allObjects];
- }
-#pragma clang diagnostic pop
- for (Class securityManagerClass in configuration.encryptionConfig.securityManagers) {
- [tempMakeArray addObjectsFromArray:[securityManagerClass availableMakes].allObjects];
- }
- NSOrderedSet *tempMakeSet = [NSOrderedSet orderedSetWithArray:tempMakeArray];
- _secureMakes = [tempMakeSet.array copy];
-
- _audioStreamStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLAudioStreamManagerStateStopped states:[self.class sdl_audioStreamingStateTransitionDictionary]];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_didReceiveRegisterAppInterfaceResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiLevelDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
-
- return self;
-}
-
-- (void)startWithProtocol:(SDLProtocol *)protocol {
- SDLLogD(@"Starting with protocol: %@", protocol);
- _protocol = protocol;
-
- @synchronized(self.protocol.protocolDelegateTable) {
- if (![self.protocol.protocolDelegateTable containsObject:self]) {
- [self.protocol.protocolDelegateTable addObject:self];
- }
- }
-
- // attempt to start streaming since we may already have necessary conditions met
- [self sdl_startAudioSession];
-}
-
-- (void)stop {
- SDLLogD(@"Stopping manager");
- _protocol = nil;
- _hmiLevel = SDLHMILevelNone;
- _connectedVehicleMake = nil;
- [self.audioTranscodingManager stop];
-
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
-}
-
-- (void)secondaryTransportDidDisconnect {
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
-}
-
-- (void)endAudioServiceWithCompletionHandler:(void (^)(void))audioEndedCompletionHandler {
- SDLLogD(@"Ending audio service");
- self.audioServiceEndedCompletionHandler = audioEndedCompletionHandler;
-
- [self.audioTranscodingManager stop];
- [self.protocol endServiceWithType:SDLServiceTypeAudio];
-}
-
-- (BOOL)sendAudioData:(NSData*)audioData {
- if (!self.isAudioConnected) {
- return NO;
- }
-
- SDLLogV(@"Sending raw audio data");
- if (self.isAudioEncrypted) {
- [self.protocol sendEncryptedRawData:audioData onService:SDLServiceTypeAudio];
- } else {
- [self.protocol sendRawData:audioData withServiceType:SDLServiceTypeAudio];
- }
- return YES;
-}
-
-#pragma mark Getters
-
-- (BOOL)isAudioConnected {
- return [self.audioStreamStateMachine isCurrentState:SDLAudioStreamManagerStateReady];
-}
-
-- (SDLAudioStreamManagerState *)currentAudioStreamState {
- return self.audioStreamStateMachine.currentState;
-}
-
-#pragma mark - State Machine
-+ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_audioStreamingStateTransitionDictionary {
- return @{
- SDLAudioStreamManagerStateStopped : @[SDLAudioStreamManagerStateStarting],
- SDLAudioStreamManagerStateStarting : @[SDLAudioStreamManagerStateStopped, SDLAudioStreamManagerStateReady],
- SDLAudioStreamManagerStateReady : @[SDLAudioStreamManagerStateShuttingDown, SDLAudioStreamManagerStateStopped],
- SDLAudioStreamManagerStateShuttingDown : @[SDLAudioStreamManagerStateStopped]
- };
-}
-
-- (void)didEnterStateAudioStreamStopped {
- SDLLogD(@"Audio stream stopped");
- _audioEncrypted = NO;
-
- [[NSNotificationCenter defaultCenter] postNotificationName:SDLAudioStreamDidStopNotification object:nil];
-
- if (self.audioServiceEndedCompletionHandler != nil) {
- self.audioServiceEndedCompletionHandler();
- self.audioServiceEndedCompletionHandler = nil;
- }
-}
-
-- (void)didEnterStateAudioStreamStarting {
- SDLLogD(@"Audio stream starting");
- if ((self.requestedEncryptionType != SDLStreamingEncryptionFlagNone) && ([self.secureMakes containsObject:self.connectedVehicleMake])) {
- [self.protocol startSecureServiceWithType:SDLServiceTypeAudio payload:nil tlsInitializationHandler:^(BOOL success, NSError * _Nonnull error) {
- if (error) {
- SDLLogE(@"TLS setup error: %@", error);
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
- }
- }];
- } else {
- [self.protocol startServiceWithType:SDLServiceTypeAudio payload:nil];
- }
-}
-
-- (void)didEnterStateAudioStreamReady {
- SDLLogD(@"Audio stream ready");
- [[NSNotificationCenter defaultCenter] postNotificationName:SDLAudioStreamDidStartNotification object:nil];
-}
-
-- (void)didEnterStateAudioStreamShuttingDown {
- SDLLogD(@"Audio stream shutting down");
- [self.protocol endServiceWithType:SDLServiceTypeAudio];
-}
-
-#pragma mark - SDLProtocolDelegate
-#pragma mark Start Service ACK/NAK
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
- if (startServiceACK.header.serviceType != SDLServiceTypeAudio) { return; }
-
- self.audioEncrypted = startServiceACK.header.encrypted;
-
- SDLControlFramePayloadAudioStartServiceAck *audioAckPayload = [[SDLControlFramePayloadAudioStartServiceAck alloc] initWithData:startServiceACK.payload];
- SDLLogD(@"Request to start audio service ACKed on transport %@, with payload: %@", protocol.transport, audioAckPayload);
-
- if (audioAckPayload.mtu != SDLControlFrameInt64NotFound) {
- [[SDLGlobals sharedGlobals] setDynamicMTUSize:(NSUInteger)audioAckPayload.mtu forServiceType:SDLServiceTypeAudio];
- }
-
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateReady];
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
- if (startServiceNAK.header.serviceType != SDLServiceTypeAudio) { return; }
-
- SDLLogE(@"Request to start audio service NAKed on transport %@, with payload: %@", protocol.transport, startServiceNAK.payload);
-
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
-}
-
-#pragma mark End Service ACK/NAK
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
- if (endServiceACK.header.serviceType != SDLServiceTypeAudio) { return; }
- SDLLogD(@"Request to end audio service ACKed on transport %@", protocol.transport);
-
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
- if (endServiceNAK.header.serviceType != SDLServiceTypeAudio) { return; }
-
- SDLControlFramePayloadNak *nakPayload = [[SDLControlFramePayloadNak alloc] initWithData:endServiceNAK.payload];
- SDLLogE(@"Request to end audio service NAKed on transport %@, with payload: %@", protocol.transport, nakPayload);
-
- /// Core will NAK the audio end service control frame if audio is not streaming or if video is streaming but the HMI does not recognize that audio is streaming.
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
-}
-
-#pragma mark - SDL RPC Notification callbacks
-
-- (void)sdl_didReceiveRegisterAppInterfaceResponse:(SDLRPCResponseNotification *)notification {
- NSAssert([notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]], @"A notification was sent with an unanticipated object");
- if (![notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]]) {
- return;
- }
-
- SDLLogV(@"Received Register App Interface response");
- SDLRegisterAppInterfaceResponse *registerResponse = (SDLRegisterAppInterfaceResponse*)notification.response;
-
- self.connectedVehicleMake = registerResponse.vehicleType.make;
-}
-
-- (void)sdl_hmiLevelDidChange:(SDLRPCNotificationNotification *)notification {
- NSAssert([notification.notification isKindOfClass:[SDLOnHMIStatus class]], @"A notification was sent with an unanticipated object");
- if (![notification.notification isKindOfClass:[SDLOnHMIStatus class]]) {
- return;
- }
-
- SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus*)notification.notification;
-
- if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
- return;
- }
-
- self.hmiLevel = hmiStatus.hmiLevel;
-
- // if startWithProtocol has not been called yet, abort here
- if (!self.protocol) { return; }
-
- if (self.isHmiStateAudioStreamCapable) {
- [self sdl_startAudioSession];
- } else {
- [self sdl_stopAudioSession];
- }
-}
-
-#pragma mark - Streaming session helpers
-
-- (void)sdl_startAudioSession {
- SDLLogV(@"Attempting to start audio session");
- if (!self.protocol) {
- return;
- }
-
- if (!self.isStreamingSupported) {
- return;
- }
-
- if ([self.audioStreamStateMachine isCurrentState:SDLAudioStreamManagerStateStopped] && self.isHmiStateAudioStreamCapable) {
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStarting];
- }
-}
-
-- (void)sdl_stopAudioSession {
- SDLLogV(@"Attempting to stop audio session");
- if (!self.isStreamingSupported) {
- return;
- }
-
- if (self.isAudioConnected) {
- [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateShuttingDown];
- }
-}
-
-#pragma mark Setters / Getters
-
-- (BOOL)isHmiStateAudioStreamCapable {
- return [self.hmiLevel isEqualToEnum:SDLHMILevelLimited] || [self.hmiLevel isEqualToEnum:SDLHMILevelFull];
-}
-
-- (BOOL)isStreamingSupported {
- return (self.systemCapabilityManager != nil) ? [self.systemCapabilityManager isCapabilitySupported:SDLSystemCapabilityTypeVideoStreaming] : YES;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStreamingMediaConfiguration.h b/SmartDeviceLink/SDLStreamingMediaConfiguration.h
deleted file mode 100644
index 9c73cda8f..000000000
--- a/SmartDeviceLink/SDLStreamingMediaConfiguration.h
+++ /dev/null
@@ -1,175 +0,0 @@
-//
-// SDLStreamingMediaConfiguration.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 8/2/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLStreamingMediaManagerConstants.h"
-
-@protocol SDLSecurityType;
-@protocol SDLStreamingMediaManagerDataSource;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The type of rendering that CarWindow will perform. Depending on your app, you may need to try different ones for best performance
- */
-typedef NS_ENUM(NSUInteger, SDLCarWindowRenderingType) {
- /// Instead of rendering your UIViewController's view, this will render the layer using renderInContext
- SDLCarWindowRenderingTypeLayer,
-
- /// Renders your UIViewController's view using drawViewHierarchyInRect:bounds afterScreenUpdates:YES
- SDLCarWindowRenderingTypeViewAfterScreenUpdates,
-
- /// Renders your UIViewController's view using drawViewHierarchyInRect:bounds afterScreenUpdates:NO
- SDLCarWindowRenderingTypeViewBeforeScreenUpdates
-};
-
-/// The streaming media configuration. Use this class to configure streaming media information.
-@interface SDLStreamingMediaConfiguration : NSObject <NSCopying>
-
-/**
- * Set security managers which could be used. This is primarily used with video streaming applications to authenticate and perhaps encrypt traffic data.
- */
-@property (copy, nonatomic, nullable) NSArray<Class<SDLSecurityType>> *securityManagers __deprecated_msg("This is now unused, the security managers are taken in from SDLEncryptionConfiguration");
-
-/**
- * What encryption level video/audio streaming should be. The default is SDLStreamingEncryptionFlagAuthenticateAndEncrypt.
- */
-@property (assign, nonatomic) SDLStreamingEncryptionFlag maximumDesiredEncryption;
-
-/**
- * Properties to use for applications that utilize the video encoder for streaming. See VTCompressionProperties.h for more details. For example, you can set kVTCompressionPropertyKey_ExpectedFrameRate to set your framerate. Setting the framerate this way will also set the framerate if you use CarWindow automatic streaming.
- *
- * Other properties you may want to try adjusting include kVTCompressionPropertyKey_AverageBitRate and kVTCompressionPropertyKey_DataRateLimits.
- */
-@property (copy, nonatomic, nullable) NSDictionary<NSString *, id> *customVideoEncoderSettings;
-
-/**
- Usable to change run time video stream setup behavior. Only use this and modify the results if you *really* know what you're doing. The head unit defaults are generally good.
- */
-@property (weak, nonatomic, nullable) id<SDLStreamingMediaManagerDataSource> dataSource;
-
-/**
- Set the initial view controller your video streaming content is within.
-
- Activates the haptic view parser and CarWindow systems when set. This library will also use that information to attempt to return the touched view to you in `SDLTouchManagerDelegate`.
-
- @note If you wish to alter this `rootViewController` while streaming via CarWindow, you must set a new `rootViewController` on `SDLStreamingMediaManager` and this will update both the haptic view parser and CarWindow.
-
- @warning Apps using views outside of the `UIView` heirarchy (such as OpenGL) are currently unsupported. If you app uses partial views in the heirarchy, only those views will be discovered. Your OpenGL views will not be discoverable to a haptic interface head unit and you will have to manually make these views discoverable via the `SDLSendHapticData` RPC request.
-
- @warning If the `rootViewController` is app UI and is set from the `UIViewController` class, it should only be set after viewDidAppear:animated is called. Setting the `rootViewController` in `viewDidLoad` or `viewWillAppear:animated` can cause weird behavior when setting the new frame.
-
- @warning If setting the `rootViewController` when the app returns to the foreground, the app should register for the `UIApplicationDidBecomeActive` notification and not the `UIApplicationWillEnterForeground` notification. Setting the frame after a notification from the latter can also cause weird behavior when setting the new frame.
-
- @warning While `viewDidLoad` will fire, appearance methods will not.
- */
-@property (strong, nonatomic, nullable) UIViewController *rootViewController;
-
-/**
- Declares if CarWindow will use layer rendering or view rendering. Defaults to layer rendering.
- */
-@property (assign, nonatomic) SDLCarWindowRenderingType carWindowRenderingType;
-
-/**
- When YES, the StreamingMediaManager will run a CADisplayLink with the framerate set to the video encoder settings kVTCompressionPropertyKey_ExpectedFrameRate. This then forces TouchManager (and CarWindow, if used) to sync their callbacks to the framerate. If using CarWindow, this *must* be YES. If NO, `enableSyncedPanning` on SDLTouchManager will be set to NO. Defaults to YES.
- */
-@property (assign, nonatomic) BOOL enableForcedFramerateSync;
-
-/**
- When YES, the StreamingMediaManager will disable its internal checks that the `rootViewController` only has one `supportedOrientation`. Having multiple orientations can cause streaming issues. If you wish to disable this check, set it to YES. Defaults to NO.
- */
-@property (assign, nonatomic) BOOL allowMultipleViewControllerOrientations;
-
-/**
- Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you'd like custom video encoder settings, you can set the property manually.
-
- @return The configuration
- */
-- (instancetype)init;
-
-/**
- Create a secure video streaming configuration. Security managers will be provided from SDLEncryptionConfiguration and the encryption flag will be set to SDLStreamingEncryptionFlagAuthenticateAndEncrypt. If you'd like custom video encoder settings, you can set the property manually.
-
- @return The configuration
- */
-+ (instancetype)secureConfiguration;
-
-/**
- Manually set all the properties to the streaming media configuration
-
- @param securityManagers The security managers to use or nil for none.
- @param encryptionFlag The maximum encrpytion supported. If the connected head unit supports less than set here, it will still connect, but if it supports more than set here, it will not connect.
- @param videoSettings Custom video encoder settings to be used in video streaming.
- @param rootViewController The UIViewController wih the content that is being streamed on, to use for haptics if needed and possible (only works for UIViews)
- @return The configuration
- */
-- (instancetype)initWithSecurityManagers:(nullable NSArray<Class<SDLSecurityType>> *)securityManagers encryptionFlag:(SDLStreamingEncryptionFlag)encryptionFlag videoSettings:(nullable NSDictionary<NSString *, id> *)videoSettings dataSource:(nullable id<SDLStreamingMediaManagerDataSource>)dataSource rootViewController:(nullable UIViewController *)rootViewController __deprecated_msg("Use initWithEncryptionFlag:videoSettings:dataSource:rootViewController: instead");
-
-/**
- Manually set all the properties to the streaming media configuration
-
- @param encryptionFlag The maximum encrpytion supported. If the connected head unit supports less than set here, it will still connect, but if it supports more than set here, it will not connect.
- @param videoSettings Custom video encoder settings to be used in video streaming.
- @param rootViewController The UIViewController wih the content that is being streamed on, to use for haptics if needed and possible (only works for UIViews)
- @return The configuration
- */
-- (instancetype)initWithEncryptionFlag:(SDLStreamingEncryptionFlag)encryptionFlag videoSettings:(nullable NSDictionary<NSString *, id> *)videoSettings dataSource:(nullable id<SDLStreamingMediaManagerDataSource>)dataSource rootViewController:(nullable UIViewController *)rootViewController;
-
-/**
- Create a secure configuration for each of the security managers provided.
-
- @param securityManagers The security managers to be used. The encryption flag will be set to AuthenticateAndEncrypt if any security managers are set.
- @return The configuration
- */
-- (instancetype)initWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers __deprecated_msg("Use secureConfiguration instead");
-
-/**
- Create a secure configuration for each of the security managers provided.
-
- @param securityManagers The security managers to be used. The encryption flag will be set to AuthenticateAndEncrypt if any security managers are set.
- @return The configuration
- */
-+ (instancetype)secureConfigurationWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers NS_SWIFT_UNAVAILABLE("Use an initializer instead") __deprecated_msg("Use secureConfiguration instead");
-
-/**
- Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you'd like custom video encoder settings, you can set the property manually. This is equivalent to `init`.
-
- @return The configuration
- */
-+ (instancetype)insecureConfiguration NS_SWIFT_UNAVAILABLE("Use the standard initializer instead");
-
-/**
- Create a CarWindow insecure configuration with a view controller
-
- @param initialViewController The initial view controller that will be streamed
- @return The configuration
- */
-+ (instancetype)autostreamingInsecureConfigurationWithInitialViewController:(UIViewController *)initialViewController;
-
-/**
- Create a CarWindow secure configuration with a view controller and security managers
-
- @param securityManagers The security managers available for secure streaming use
- @param initialViewController The initial view controller that will be streamed, this can be a basic `UIViewController` if you need to set your actual streaming view controller at a later time on `SDLManager.streamingManager.rootViewController`.
- @return The configuration
- */
-+ (instancetype)autostreamingSecureConfigurationWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers initialViewController:(UIViewController *)initialViewController __deprecated_msg("Use autostreamingSecureConfigurationWithInitialViewController: instead");
-
-/**
- Create a CarWindow secure configuration with a view controller.
-
- @param initialViewController The initial view controller that will be streamed, this can be a basic `UIViewController` if you need to set your actual streaming view controller at a later time on `SDLManager.streamingManager.rootViewController`.
- @return The configuration
- */
-+ (instancetype)autostreamingSecureConfigurationWithInitialViewController:(UIViewController *)initialViewController;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStreamingMediaConfiguration.m b/SmartDeviceLink/SDLStreamingMediaConfiguration.m
deleted file mode 100644
index 4c82ddcfd..000000000
--- a/SmartDeviceLink/SDLStreamingMediaConfiguration.m
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// SDLStreamingMediaConfiguration.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 8/2/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLStreamingMediaConfiguration.h"
-
-#import "SDLStreamingMediaManagerDataSource.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLStreamingMediaConfiguration
-
-- (instancetype)init {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return [self initWithSecurityManagers:nil encryptionFlag:SDLStreamingEncryptionFlagNone videoSettings:nil dataSource:nil rootViewController:nil];
-#pragma clang diagnostic pop
-}
-
-+ (instancetype)secureConfiguration {
- return [[self alloc] initWithEncryptionFlag:SDLStreamingEncryptionFlagAuthenticateAndEncrypt videoSettings:nil dataSource:nil rootViewController:nil];
-}
-
-+ (instancetype)insecureConfiguration {
- return [[self alloc] init];
-}
-
-- (instancetype)initWithSecurityManagers:(nullable NSArray<Class<SDLSecurityType>> *)securityManagers encryptionFlag:(SDLStreamingEncryptionFlag)encryptionFlag videoSettings:(nullable NSDictionary<NSString *,id> *)videoSettings dataSource:(nullable id<SDLStreamingMediaManagerDataSource>)dataSource rootViewController:(nullable UIViewController *)rootViewController {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _securityManagers = securityManagers;
- _maximumDesiredEncryption = encryptionFlag;
- _customVideoEncoderSettings = videoSettings;
- _dataSource = dataSource;
- _rootViewController = rootViewController;
- _carWindowRenderingType = SDLCarWindowRenderingTypeLayer;
- _enableForcedFramerateSync = YES;
- _allowMultipleViewControllerOrientations = NO;
-
- return self;
-}
-
-- (instancetype)initWithEncryptionFlag:(SDLStreamingEncryptionFlag)encryptionFlag videoSettings:(nullable NSDictionary<NSString *, id> *)videoSettings dataSource:(nullable id<SDLStreamingMediaManagerDataSource>)dataSource rootViewController:(nullable UIViewController *)rootViewController {
- if (!self) {
- return nil;
- }
-
- _securityManagers = nil;
- _maximumDesiredEncryption = encryptionFlag;
- _customVideoEncoderSettings = videoSettings;
- _dataSource = dataSource;
- _rootViewController = rootViewController;
- _carWindowRenderingType = SDLCarWindowRenderingTypeLayer;
- _enableForcedFramerateSync = YES;
- _allowMultipleViewControllerOrientations = NO;
-
- return self;
-}
-
-- (instancetype)initWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers {
- NSAssert(securityManagers.count > 0, @"A secure streaming media configuration requires security managers to be passed.");
- SDLStreamingEncryptionFlag encryptionFlag = SDLStreamingEncryptionFlagAuthenticateAndEncrypt;
-
- return [self initWithSecurityManagers:securityManagers encryptionFlag:encryptionFlag videoSettings:nil dataSource:nil rootViewController:nil];
-}
-
-+ (instancetype)secureConfigurationWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return [[self alloc] initWithSecurityManagers:securityManagers];
-#pragma clang diagnostic pop
-}
-
-+ (instancetype)autostreamingInsecureConfigurationWithInitialViewController:(UIViewController *)initialViewController {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return [[self alloc] initWithSecurityManagers:nil encryptionFlag:SDLStreamingEncryptionFlagNone videoSettings:nil dataSource:nil rootViewController:initialViewController];
-#pragma clang diagnostic pop
-}
-
-+ (instancetype)autostreamingSecureConfigurationWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers initialViewController:(UIViewController *)initialViewController {
- return [[self alloc] initWithSecurityManagers:securityManagers encryptionFlag:SDLStreamingEncryptionFlagAuthenticateAndEncrypt videoSettings:nil dataSource:nil rootViewController:initialViewController];
-}
-
-+ (instancetype)autostreamingSecureConfigurationWithInitialViewController:(UIViewController *)initialViewController {
- return [[self alloc] initWithEncryptionFlag:SDLStreamingEncryptionFlagAuthenticateAndEncrypt videoSettings:nil dataSource:nil rootViewController:initialViewController];
-}
-
-#pragma mark NSCopying
-
-- (id)copyWithZone:(nullable NSZone *)zone {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLStreamingMediaConfiguration *newConfig = [[self.class allocWithZone:zone] initWithSecurityManagers:_securityManagers encryptionFlag:_maximumDesiredEncryption videoSettings:_customVideoEncoderSettings dataSource:_dataSource rootViewController:_rootViewController];
-#pragma clang diagnostic pop
-
- newConfig.carWindowRenderingType = self.carWindowRenderingType;
- newConfig.enableForcedFramerateSync = self.enableForcedFramerateSync;
- newConfig.allowMultipleViewControllerOrientations = self.allowMultipleViewControllerOrientations;
-
- return newConfig;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStreamingMediaManager.h b/SmartDeviceLink/SDLStreamingMediaManager.h
deleted file mode 100644
index 495f466cf..000000000
--- a/SmartDeviceLink/SDLStreamingMediaManager.h
+++ /dev/null
@@ -1,204 +0,0 @@
-//
-// SDLStreamingDataManager.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 8/11/15.
-// Copyright (c) 2015 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <VideoToolbox/VideoToolbox.h>
-
-#import "SDLStreamingAudioManagerType.h"
-#import "SDLStreamingMediaManagerConstants.h"
-
-@class SDLAudioStreamManager;
-@class SDLConfiguration;
-@class SDLProtocol;
-@class SDLSecondaryTransportManager;
-@class SDLSystemCapabilityManager;
-@class SDLTouchManager;
-@class SDLVideoStreamingFormat;
-
-@protocol SDLFocusableItemLocatorType;
-@protocol SDLConnectionManagerType;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-
-/// Manager to help control streaming (video and audio) media services.
-@interface SDLStreamingMediaManager : NSObject <SDLStreamingAudioManagerType>
-
-/**
- * Touch Manager responsible for providing touch event notifications.
- */
-@property (nonatomic, strong, readonly) SDLTouchManager *touchManager;
-
-/**
- * Audio Manager responsible for managing streaming audio.
- */
-@property (nonatomic, strong, readonly) SDLAudioStreamManager *audioManager;
-
-/**
- This property is used for SDLCarWindow, the ability to stream any view controller. To start, you must set an initial view controller on `SDLStreamingMediaConfiguration` `rootViewController`. After streaming begins, you can replace that view controller with a new root by placing the new view controller into this property.
- */
-@property (nonatomic, strong, nullable) UIViewController *rootViewController;
-
-/**
- A haptic interface that can be updated to reparse views within the window you've provided. Send a `SDLDidUpdateProjectionView` notification or call the `updateInterfaceLayout` method to reparse. The "output" of this haptic interface occurs in the `touchManager` property where it will call the delegate.
- */
-@property (nonatomic, strong, readonly, nullable) id<SDLFocusableItemLocatorType> focusableItemManager;
-
-/**
- * Whether or not video streaming is supported
- *
- * @see SDLRegisterAppInterface SDLDisplayCapabilities
- */
-@property (assign, nonatomic, readonly, getter=isStreamingSupported) BOOL streamingSupported;
-
-/**
- * Whether or not the video session is connected.
- */
-@property (assign, nonatomic, readonly, getter=isVideoConnected) BOOL videoConnected;
-
-/**
- * Whether or not the video session is encrypted. This may be different than the requestedEncryptionType.
- */
-@property (assign, nonatomic, readonly, getter=isVideoEncrypted) BOOL videoEncrypted;
-
-/**
- * Whether or not the audio session is connected.
- */
-@property (assign, nonatomic, readonly, getter=isAudioConnected) BOOL audioConnected;
-
-/**
- * Whether or not the audio session is encrypted. This may be different than the requestedEncryptionType.
- */
-@property (assign, nonatomic, readonly, getter=isAudioEncrypted) BOOL audioEncrypted;
-
-/**
- * Whether or not the video stream is paused due to either the application being backgrounded, the HMI state being either NONE or BACKGROUND, or the video stream not being ready.
- */
-@property (assign, nonatomic, readonly, getter=isVideoStreamingPaused) BOOL videoStreamingPaused;
-
-/**
- * The current screen resolution of the connected display in pixels.
- */
-@property (assign, nonatomic, readonly) CGSize screenSize;
-
-/**
- This is the agreed upon format of video encoder that is in use, or nil if not currently connected.
- */
-@property (strong, nonatomic, readonly, nullable) SDLVideoStreamingFormat *videoFormat;
-
-/**
- A list of all supported video formats by this manager
- */
-@property (strong, nonatomic, readonly) NSArray<SDLVideoStreamingFormat *> *supportedFormats;
-
-/**
- * The pixel buffer pool reference returned back from an active VTCompressionSessionRef encoder.
- *
- * @warning This will only return a valid pixel buffer pool after the encoder has been initialized (when the video session has started).
- * @discussion Clients may call this once and retain the resulting pool, this call is cheap enough that it's OK to call it once per frame.
- */
-@property (assign, nonatomic, readonly, nullable) CVPixelBufferPoolRef pixelBufferPool;
-
-/**
- * The requested encryption type when a session attempts to connect. This setting applies to both video and audio sessions.
- *
- * DEFAULT: SDLStreamingEncryptionFlagAuthenticateAndEncrypt
- */
-@property (assign, nonatomic) SDLStreamingEncryptionFlag requestedEncryptionType;
-
-/**
- When YES, the StreamingMediaManager will send a black screen with "Video Backgrounded String". Defaults to YES.
- */
-@property (assign, nonatomic) BOOL showVideoBackgroundDisplay;
-
-
-#pragma mark - Lifecycle
-
-/// Initializer unavailable
-- (instancetype)init NS_UNAVAILABLE;
-
-/// Create a new streaming media manager for navigation and projection apps with a specified configuration.
-/// @param connectionManager The pass-through for RPCs
-/// @param configuration This session's configuration
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration __deprecated_msg("Use initWithConnectionManager:configuration:systemCapabilityManager: instead");
-
-/// Create a new streaming media manager for navigation and projection apps with a specified configuration.
-/// @param connectionManager The pass-through for RPCs
-/// @param configuration This session's configuration
-/// @param systemCapabilityManager The system capability manager object for reading window capabilities
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager NS_DESIGNATED_INITIALIZER;
-
-/**
- * Start the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on `SDLManager`.
- */
-- (void)startWithProtocol:(SDLProtocol *)protocol;
-
-/**
- * Stop the manager. This method is used internally.
- */
-- (void)stop;
-
-/**
- * Stop the audio feature of the manager. This method is used internally.
- */
-- (void)stopAudio;
-
-/**
- * Stop the video feature of the manager. This method is used internally.
- */
-- (void)stopVideo;
-
-#pragma mark - Data Transfer
-
-/**
- * This method receives raw image data and will run iOS8+'s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.
- *
- * @param imageBuffer A CVImageBufferRef to be encoded by Video Toolbox
- *
- * @return Whether or not the data was successfully encoded and sent.
- */
-- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer;
-
-/**
- * This method receives raw image data and will run iOS8+'s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.
- *
- * @param imageBuffer A CVImageBufferRef to be encoded by Video Toolbox
- * @param presentationTimestamp A presentation timestamp for the frame, or kCMTimeInvalid if timestamp is unknown. If it's valid, it must be greater than the previous one.
- *
- * @return Whether or not the data was successfully encoded and sent.
- */
-- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp;
-
-/**
- * This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback.
- *
- * NOTE: See the `.audioManager` (SDLAudioStreamManager) `pushWithData:` method for a more modern API.
- *
- * @param audioData The data in PCM audio format, to be played
- *
- * @return Whether or not the data was successfully sent.
- */
-- (BOOL)sendAudioData:(NSData *)audioData;
-
-#pragma mark - Deprecated Methods
-
- /**
- * Start the audio feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on `SDLManager`.
- */
-- (void)startAudioWithProtocol:(SDLProtocol *)protocol __deprecated_msg("Use startWithProtocol: instead");
-
- /**
- * Start the video feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on `SDLManager`.
- */
-- (void)startVideoWithProtocol:(SDLProtocol *)protocol __deprecated_msg("Use startWithProtocol: instead");
-
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStreamingMediaManager.m b/SmartDeviceLink/SDLStreamingMediaManager.m
deleted file mode 100644
index 3b6a14890..000000000
--- a/SmartDeviceLink/SDLStreamingMediaManager.m
+++ /dev/null
@@ -1,310 +0,0 @@
-//
-// SDLStreamingDataManager.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 8/11/15.
-// Copyright (c) 2015 smartdevicelink. All rights reserved.
-//
-
-#import "SDLStreamingMediaManager.h"
-
-#import "SDLAudioStreamManager.h"
-#import "SDLConfiguration.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLGlobals.h"
-#import "SDLLogMacros.h"
-#import "SDLSecondaryTransportManager.h"
-#import "SDLStreamingAudioLifecycleManager.h"
-#import "SDLStreamingProtocolDelegate.h"
-#import "SDLStreamingVideoLifecycleManager.h"
-#import "SDLStreamingVideoScaleManager.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLTouchManager.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLStreamingMediaManager () <SDLStreamingProtocolDelegate>
-
-@property (strong, nonatomic) SDLStreamingAudioLifecycleManager *audioLifecycleManager;
-@property (strong, nonatomic) SDLStreamingVideoLifecycleManager *videoLifecycleManager;
-@property (assign, nonatomic) BOOL audioStarted;
-@property (assign, nonatomic) BOOL videoStarted;
-@property (strong, nonatomic, nullable) SDLProtocol *audioProtocol;
-@property (strong, nonatomic, nullable) SDLProtocol *videoProtocol;
-
-@property (strong, nonatomic, nullable) SDLSecondaryTransportManager *secondaryTransportManager;
-
-@end
-
-
-@implementation SDLStreamingMediaManager
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _audioLifecycleManager = [[SDLStreamingAudioLifecycleManager alloc] initWithConnectionManager:connectionManager configuration:configuration systemCapabilityManager:systemCapabilityManager];
- _videoLifecycleManager = [[SDLStreamingVideoLifecycleManager alloc] initWithConnectionManager:connectionManager configuration:configuration systemCapabilityManager:systemCapabilityManager];
-
- return self;
-}
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration {
- return [self initWithConnectionManager:connectionManager configuration:configuration systemCapabilityManager:nil];
-}
-
-- (void)stop {
- [self stopAudio];
- [self stopVideo];
- self.audioProtocol = nil;
- self.videoProtocol = nil;
-}
-
-
-#pragma mark Audio
-
-- (void)stopAudio {
- [self.audioLifecycleManager stop];
- self.audioStarted = NO;
-}
-
-- (BOOL)sendAudioData:(NSData*)audioData {
- return [self.audioLifecycleManager sendAudioData:audioData];
-}
-
-#pragma mark Video
-
-- (void)stopVideo {
- [self.videoLifecycleManager stop];
- self.videoStarted = NO;
-}
-
-- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer {
- return [self.videoLifecycleManager sendVideoData:imageBuffer];
-}
-
-- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp {
- return [self.videoLifecycleManager sendVideoData:imageBuffer presentationTimestamp:presentationTimestamp];
-}
-
-#pragma mark - Secondary Transport
-
-- (void)startWithProtocol:(SDLProtocol *)protocol {
- [self didUpdateFromOldVideoProtocol:nil toNewVideoProtocol:protocol fromOldAudioProtocol:nil toNewAudioProtocol:protocol];
-}
-
-- (void)sdl_disconnectSecondaryTransportWithCompletionHandler:(void (^)(void))completionHandler {
- if (self.secondaryTransportManager == nil) {
- SDLLogV(@"Attempting to disconnect a non-existent secondary transport. Returning.");
- return completionHandler();
- }
-
- [self.secondaryTransportManager disconnectSecondaryTransportWithCompletionHandler:completionHandler];
-}
-
-# pragma mark SDLStreamingProtocolDelegate
-
-- (void)didUpdateFromOldVideoProtocol:(nullable SDLProtocol *)oldVideoProtocol
- toNewVideoProtocol:(nullable SDLProtocol *)newVideoProtocol
- fromOldAudioProtocol:(nullable SDLProtocol *)oldAudioProtocol
- toNewAudioProtocol:(nullable SDLProtocol *)newAudioProtocol {
- BOOL videoProtocolUpdated = (oldVideoProtocol != newVideoProtocol);
- BOOL audioProtocolUpdated = (oldAudioProtocol != newAudioProtocol);
-
- if (!videoProtocolUpdated && !audioProtocolUpdated) {
- SDLLogV(@"The video and audio transports did not update.");
- return;
- }
-
- dispatch_group_t endServiceTask = dispatch_group_create();
- dispatch_group_enter(endServiceTask);
-
- __weak typeof(self) weakSelf = self;
- if (oldVideoProtocol != nil) {
- dispatch_group_enter(endServiceTask);
- [self.videoLifecycleManager endVideoServiceWithCompletionHandler:^ {
- __strong typeof(weakSelf) strongSelf = weakSelf;
- strongSelf.videoStarted = NO;
- dispatch_group_leave(endServiceTask);
- }];
- }
-
- if (oldAudioProtocol != nil) {
- dispatch_group_enter(endServiceTask);
- __weak typeof(self) weakSelf = self;
- [self.audioLifecycleManager endAudioServiceWithCompletionHandler:^ {
- __strong typeof(weakSelf) strongSelf = weakSelf;
- strongSelf.audioStarted = NO;
- dispatch_group_leave(endServiceTask);
- }];
- }
-
- dispatch_group_leave(endServiceTask);
-
- // This will always run
- dispatch_group_notify(endServiceTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
- if (oldVideoProtocol != nil || oldAudioProtocol != nil) {
- [self sdl_reconnectSecondaryTransportWithNewVideoProtocol:newVideoProtocol newAudioProtocol:newAudioProtocol transportDestroyed:false];
- } else {
- SDLLogV(@"No need to disconnect the secondary transport. Starting new audio and video protocols");
- [self sdl_startNewProtocolForAudio:newAudioProtocol forVideo:newVideoProtocol];
- }
- });
-}
-
-- (void)transportClosed {
- [self sdl_reconnectSecondaryTransportWithNewVideoProtocol:nil newAudioProtocol:nil transportDestroyed:true];
-}
-
-/// Disconnects the secondary transport. If the transport is still open and a new video or audio protocol have been set, then a new video/audio sessions are attempted. If the transport has been closed, then the audio/video managers are stopped.
-/// @param newVideoProtocol The new video protocol
-/// @param newAudioProtocol The new audio protocol
-/// @param transportDestroyed Whether or not the transport is still open
-- (void)sdl_reconnectSecondaryTransportWithNewVideoProtocol:(nullable SDLProtocol *)newVideoProtocol newAudioProtocol:(nullable SDLProtocol *)newAudioProtocol transportDestroyed:(BOOL)transportDestroyed {
- SDLLogV(@"Disconnecting the secondary transport");
- __weak typeof(self) weakSelf = self;
- [self sdl_disconnectSecondaryTransportWithCompletionHandler:^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- if (transportDestroyed) {
- SDLLogD(@"Transport destroyed. Shutting down audio and video managers");
- [strongSelf.audioLifecycleManager secondaryTransportDidDisconnect];
- [strongSelf.videoLifecycleManager secondaryTransportDidDisconnect];
- strongSelf.audioProtocol = nil;
- strongSelf.videoProtocol = nil;
- } else {
- SDLLogD(@"Checking if new audio and video sessions need to be started on the transport");
- strongSelf.audioProtocol = nil;
- strongSelf.videoProtocol = nil;
- [strongSelf sdl_startNewProtocolForAudio:newAudioProtocol forVideo:newVideoProtocol];
- }
- }];
-}
-
-/// Starts the audio and/or video services using the new protocol.
-/// @param newAudioProtocol The new audio protocol
-/// @param newVideoProtocol The new video protocol
-- (void)sdl_startNewProtocolForAudio:(nullable SDLProtocol *)newAudioProtocol forVideo:(nullable SDLProtocol *)newVideoProtocol {
- if (newAudioProtocol == nil && newVideoProtocol == nil) {
- SDLLogD(@"No new audio or video session will be started");
- return;
- }
-
- if (newAudioProtocol != nil) {
- self.audioProtocol = newAudioProtocol;
- [self.audioLifecycleManager startWithProtocol:newAudioProtocol];
- self.audioStarted = YES;
- }
- if (newVideoProtocol != nil) {
- self.videoProtocol = newVideoProtocol;
- [self.videoLifecycleManager startWithProtocol:newVideoProtocol];
- self.videoStarted = YES;
- }
-}
-
-#pragma mark Deprecated
-
- - (void)startAudioWithProtocol:(SDLProtocol *)protocol {
- self.audioProtocol = protocol;
- [self.audioLifecycleManager startWithProtocol:protocol];
- self.audioStarted = YES;
-}
-
- - (void)startVideoWithProtocol:(SDLProtocol *)protocol {
- self.videoProtocol = protocol;
- [self.videoLifecycleManager startWithProtocol:protocol];
- self.videoStarted = YES;
-}
-
-
-#pragma mark - Getters
-
-- (SDLTouchManager *)touchManager {
- return self.videoLifecycleManager.touchManager;
-}
-
-- (SDLAudioStreamManager *)audioManager {
- return self.audioLifecycleManager.audioTranscodingManager;
-}
-
-- (nullable UIViewController *)rootViewController {
- return self.videoLifecycleManager.rootViewController;
-}
-
-- (nullable id<SDLFocusableItemLocatorType>)focusableItemManager {
- return self.videoLifecycleManager.focusableItemManager;
-}
-
-- (BOOL)isStreamingSupported {
- // The flag is the same between the video and audio managers so just one needs to be returned.
- return self.videoLifecycleManager.isStreamingSupported;
-}
-
-- (BOOL)isAudioConnected {
- return self.audioLifecycleManager.isAudioConnected;
-}
-
-- (BOOL)isVideoConnected {
- return self.videoLifecycleManager.isVideoConnected;
-}
-
-- (BOOL)isAudioEncrypted {
- return self.audioLifecycleManager.isAudioEncrypted;
-}
-
-- (BOOL)isVideoEncrypted {
- return self.videoLifecycleManager.isVideoEncrypted;
-}
-
-- (BOOL)isVideoStreamingPaused {
- return self.videoLifecycleManager.isVideoStreamingPaused;
-}
-
-- (CGSize)screenSize {
- return self.videoLifecycleManager.videoScaleManager.displayViewportResolution;
-}
-
-- (nullable SDLVideoStreamingFormat *)videoFormat {
- return self.videoLifecycleManager.videoFormat;
-}
-
-- (NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
- return self.videoLifecycleManager.supportedFormats;
-}
-
-- (CVPixelBufferPoolRef __nullable)pixelBufferPool {
- return self.videoLifecycleManager.pixelBufferPool;
-}
-
-- (SDLStreamingEncryptionFlag)requestedEncryptionType {
- // both audio and video managers should have same type
- return self.videoLifecycleManager.requestedEncryptionType;
-}
-
-- (BOOL)showVideoBackgroundDisplay {
- return self.videoLifecycleManager.showVideoBackgroundDisplay;
-}
-
-
-#pragma mark - Setters
-
-- (void)setRootViewController:(nullable UIViewController *)rootViewController {
- self.videoLifecycleManager.rootViewController = rootViewController;
-}
-
-- (void)setRequestedEncryptionType:(SDLStreamingEncryptionFlag)requestedEncryptionType {
- self.videoLifecycleManager.requestedEncryptionType = requestedEncryptionType;
- self.audioLifecycleManager.requestedEncryptionType = requestedEncryptionType;
-}
-
-- (void)setShowVideoBackgroundDisplay:(BOOL)showVideoBackgroundDisplay {
- self.videoLifecycleManager.showVideoBackgroundDisplay = showVideoBackgroundDisplay;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStreamingVideoLifecycleManager.m b/SmartDeviceLink/SDLStreamingVideoLifecycleManager.m
deleted file mode 100644
index b5f75cf32..000000000
--- a/SmartDeviceLink/SDLStreamingVideoLifecycleManager.m
+++ /dev/null
@@ -1,865 +0,0 @@
-//
-// SDLStreamingVideoLifecycleManager.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 6/19/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLStreamingVideoLifecycleManager.h"
-
-#import "CVPixelBufferRef+SDLUtil.h"
-#import "SDLCarWindow.h"
-#import "SDLConfiguration.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLControlFramePayloadConstants.h"
-#import "SDLControlFramePayloadNak.h"
-#import "SDLControlFramePayloadVideoStartService.h"
-#import "SDLControlFramePayloadVideoStartServiceAck.h"
-#import "SDLDisplayCapabilities.h"
-#import "SDLFocusableItemLocator.h"
-#import "SDLGenericResponse.h"
-#import "SDLGetSystemCapability.h"
-#import "SDLGetSystemCapabilityResponse.h"
-#import "SDLGlobals.h"
-#import "SDLH264VideoEncoder.h"
-#import "SDLHMILevel.h"
-#import "SDLImageResolution.h"
-#import "SDLLifecycleConfiguration.h"
-#import "SDLLogMacros.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLProtocol.h"
-#import "SDLProtocolMessage.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLScreenParams.h"
-#import "SDLStateMachine.h"
-#import "SDLStreamingMediaConfiguration.h"
-#import "SDLEncryptionConfiguration.h"
-#import "SDLStreamingMediaManagerDataSource.h"
-#import "SDLStreamingVideoScaleManager.h"
-#import "SDLSystemCapability.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLTouchManager.h"
-#import "SDLVehicleType.h"
-#import "SDLVideoEncoderDelegate.h"
-#import "SDLVideoStreamingCapability.h"
-
-static NSUInteger const FramesToSendOnBackground = 30;
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_Nullable capability);
-
-@interface SDLStreamingVideoLifecycleManager() <SDLVideoEncoderDelegate>
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic, nullable) SDLSystemCapabilityManager *systemCapabilityManager;
-@property (weak, nonatomic) SDLProtocol *protocol;
-
-@property (assign, nonatomic, readonly, getter=isAppStateVideoStreamCapable) BOOL appStateVideoStreamCapable;
-@property (assign, nonatomic, readonly, getter=isHmiStateVideoStreamCapable) BOOL hmiStateVideoStreamCapable;
-
-@property (strong, nonatomic, readwrite) SDLStateMachine *videoStreamStateMachine;
-@property (strong, nonatomic, readwrite) SDLStateMachine *appStateMachine;
-
-@property (strong, nonatomic, readwrite, nullable) SDLVideoStreamingFormat *videoFormat;
-
-@property (strong, nonatomic, nullable) SDLH264VideoEncoder *videoEncoder;
-@property (strong, nonatomic) NSMutableDictionary *videoEncoderSettings;
-@property (copy, nonatomic) NSDictionary<NSString *, id> *customEncoderSettings;
-@property (copy, nonatomic) NSArray<NSString *> *secureMakes;
-@property (copy, nonatomic, nullable) NSString *connectedVehicleMake;
-
-@property (copy, nonatomic, readonly) NSString *appName;
-@property (assign, nonatomic) CV_NULLABLE CVPixelBufferRef backgroundingPixelBuffer;
-
-@property (strong, nonatomic, nullable) CADisplayLink *displayLink;
-@property (assign, nonatomic) BOOL useDisplayLink;
-
-@property (assign, nonatomic, readwrite, getter=isVideoEncrypted) BOOL videoEncrypted;
-
-/**
- * SSRC of RTP header field.
- *
- * SSRC field identifies the source of a stream and it should be
- * chosen randomly (see section 3 and 5.1 in RFC 3550).
- *
- * @note A random value is generated and used as default.
- */
-@property (assign, nonatomic) UInt32 ssrc;
-@property (assign, nonatomic) CMTime lastPresentationTimestamp;
-
-@property (copy, nonatomic, readonly) NSString *videoStreamBackgroundString;
-@property (nonatomic, copy, nullable) void (^videoServiceEndedCompletionHandler)(void);
-
-@end
-
-@implementation SDLStreamingVideoLifecycleManager
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _appName = configuration.lifecycleConfig.appName;
- _connectionManager = connectionManager;
- _systemCapabilityManager = systemCapabilityManager;
- _videoEncoderSettings = [NSMutableDictionary dictionary];
- [_videoEncoderSettings addEntriesFromDictionary: SDLH264VideoEncoder.defaultVideoEncoderSettings];
- _customEncoderSettings = configuration.streamingMediaConfig.customVideoEncoderSettings;
- _videoScaleManager = [[SDLStreamingVideoScaleManager alloc] init];
-
- if (configuration.streamingMediaConfig.rootViewController != nil) {
- NSAssert(configuration.streamingMediaConfig.enableForcedFramerateSync, @"When using CarWindow (rootViewController != nil), forceFrameRateSync must be YES");
-
- if (@available(iOS 9.0, *)) {
- SDLLogD(@"Initializing focusable item locator");
- _focusableItemManager = [[SDLFocusableItemLocator alloc] initWithViewController:configuration.streamingMediaConfig.rootViewController connectionManager:_connectionManager videoScaleManager:_videoScaleManager];
- }
-
- SDLLogD(@"Initializing CarWindow");
- _carWindow = [[SDLCarWindow alloc] initWithStreamManager:self configuration:configuration.streamingMediaConfig];
- _carWindow.rootViewController = configuration.streamingMediaConfig.rootViewController;
- }
-
- _touchManager = [[SDLTouchManager alloc] initWithHitTester:(id)_focusableItemManager videoScaleManager:_videoScaleManager];
-
- _requestedEncryptionType = configuration.streamingMediaConfig.maximumDesiredEncryption;
- _dataSource = configuration.streamingMediaConfig.dataSource;
- _useDisplayLink = configuration.streamingMediaConfig.enableForcedFramerateSync;
- _backgroundingPixelBuffer = NULL;
- _showVideoBackgroundDisplay = YES;
- _preferredFormatIndex = 0;
- _preferredResolutionIndex = 0;
-
- _hmiLevel = SDLHMILevelNone;
- _videoStreamingState = SDLVideoStreamingStateNotStreamable;
-
- NSMutableArray<NSString *> *tempMakeArray = [NSMutableArray array];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- for (Class securityManagerClass in configuration.streamingMediaConfig.securityManagers) {
- [tempMakeArray addObjectsFromArray:[securityManagerClass availableMakes].allObjects];
- }
-#pragma clang diagnostic pop
- for (Class securityManagerClass in configuration.encryptionConfig.securityManagers) {
- [tempMakeArray addObjectsFromArray:[securityManagerClass availableMakes].allObjects];
- }
- NSOrderedSet *tempMakeSet = [NSOrderedSet orderedSetWithArray:tempMakeArray];
- _secureMakes = [tempMakeSet.array copy];
-
- SDLAppState *initialState = SDLAppStateInactive;
- switch ([[UIApplication sharedApplication] applicationState]) {
- case UIApplicationStateActive: {
- initialState = SDLAppStateActive;
- } break;
- case UIApplicationStateInactive: // fallthrough
- case UIApplicationStateBackground: {
- initialState = SDLAppStateInactive;
- } break;
- default: break;
- }
-
- _appStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:initialState states:[self.class sdl_appStateTransitionDictionary]];
- _videoStreamStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLVideoStreamManagerStateStopped states:[self.class sdl_videoStreamStateTransitionDictionary]];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_didReceiveRegisterAppInterfaceResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_appStateDidUpdate:) name:UIApplicationDidBecomeActiveNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_appStateDidUpdate:) name:UIApplicationWillResignActiveNotification object:nil];
-
- _ssrc = arc4random_uniform(UINT32_MAX);
- _lastPresentationTimestamp = kCMTimeInvalid;
-
- return self;
-}
-
-- (void)startWithProtocol:(SDLProtocol *)protocol {
- SDLLogD(@"Starting with protocol: %@", protocol);
- _protocol = protocol;
-
- @synchronized(self.protocol.protocolDelegateTable) {
- if (![self.protocol.protocolDelegateTable containsObject:self]) {
- [self.protocol.protocolDelegateTable addObject:self];
- }
- }
-
- [self.focusableItemManager start];
-
- // attempt to start streaming since we may already have necessary conditions met
- [self sdl_startVideoSession];
-}
-
-- (void)stop {
- SDLLogD(@"Stopping manager");
-
- _backgroundingPixelBuffer = NULL;
- _preferredFormatIndex = 0;
- _preferredResolutionIndex = 0;
- _lastPresentationTimestamp = kCMTimeInvalid;
- _hmiLevel = SDLHMILevelNone;
- _videoStreamingState = SDLVideoStreamingStateNotStreamable;
- _protocol = nil;
- [self.videoScaleManager stop];
- [self.focusableItemManager stop];
- _connectedVehicleMake = nil;
-
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
-}
-
-- (void)secondaryTransportDidDisconnect {
- SDLLogD(@"Stopping video manager");
- [self.focusableItemManager stop];
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
-}
-
-- (void)endVideoServiceWithCompletionHandler:(void (^)(void))videoEndedCompletionHandler {
- SDLLogD(@"Ending video service");
- [self sdl_disposeDisplayLink];
- self.videoServiceEndedCompletionHandler = videoEndedCompletionHandler;
- [self.protocol endServiceWithType:SDLServiceTypeVideo];
-}
-
-- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer {
- return [self sendVideoData:imageBuffer presentationTimestamp:kCMTimeInvalid];
-}
-
-- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp {
- if (!self.isVideoConnected) {
- SDLLogW(@"Attempted to send video data, but not connected");
- return NO;
- } else if (!self.isAppStateVideoStreamCapable) {
- SDLLogW(@"Attempted to send video data, but app is not in the foreground");
- return NO;
- } else if (!self.isHmiStateVideoStreamCapable) {
- SDLLogW(@"Attempted to send video data, but the app is not in LIMITED or FULL HMI state");
- return NO;
- }
-
- /*
- * reject input image for following cases:
- * - presentation timestamp is not increasing
- * - app tries to send images while background images are shown
- */
- if (CMTIME_IS_VALID(self.lastPresentationTimestamp) && CMTIME_IS_VALID(presentationTimestamp)
- && CMTIME_COMPARE_INLINE(presentationTimestamp, <=, self.lastPresentationTimestamp)) {
- SDLLogW(@"The video data is out of date");
- return NO;
- }
- self.lastPresentationTimestamp = presentationTimestamp;
-
- SDLLogV(@"Sending data to video encoder");
- return [self.videoEncoder encodeFrame:imageBuffer presentationTimestamp:presentationTimestamp];
-}
-
-#pragma mark Getters
-
-- (BOOL)isVideoConnected {
- return [self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateReady];
-}
-
-- (BOOL)isVideoSuspended {
- return [self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateSuspended];
-}
-
-- (BOOL)isVideoStreamingPaused {
- return !(self.isVideoConnected && self.isHmiStateVideoStreamCapable && self.isAppStateVideoStreamCapable);
-}
-
-- (CVPixelBufferPoolRef __nullable)pixelBufferPool {
- return self.videoEncoder.pixelBufferPool;
-}
-
-- (SDLAppState *)currentAppState {
- return self.appStateMachine.currentState;
-}
-
-- (SDLVideoStreamManagerState *)currentVideoStreamState {
- return self.videoStreamStateMachine.currentState;
-}
-
-#pragma mark - State Machines
-#pragma mark App State
-+ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_appStateTransitionDictionary {
- return @{
- // Will go from Inactive to Active if coming from a Phone Call.
- // Will go from Inactive to IsRegainingActive if coming from Background.
- SDLAppStateInactive : @[SDLAppStateActive],
- SDLAppStateActive : @[SDLAppStateInactive]
- };
-}
-
-- (void)sdl_appStateDidUpdate:(NSNotification*)notification {
- if (notification.name == UIApplicationWillResignActiveNotification) {
- [self.appStateMachine transitionToState:SDLAppStateInactive];
- } else if (notification.name == UIApplicationDidBecomeActiveNotification) {
- [self.appStateMachine transitionToState:SDLAppStateActive];
- }
-}
-
-- (void)didEnterStateAppInactive {
- SDLLogD(@"App became inactive");
- if (self.protocol == nil) {
- SDLLogV(@"No session established with head unit. Ignoring app backgrounded notification");
- return;
- }
-
- if (_showVideoBackgroundDisplay) {
- [self sdl_sendBackgroundFrames];
- }
- [self.touchManager cancelPendingTouches];
-
- if (self.isVideoConnected) {
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateSuspended];
- } else {
- [self sdl_stopVideoSession];
- }
-}
-
-// Per Apple's guidelines: https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html
-// We should be waiting to start any OpenGL drawing until UIApplicationDidBecomeActive is called.
-- (void)didEnterStateAppActive {
- SDLLogD(@"App became active");
- if (self.protocol == nil) {
- SDLLogV(@"No session established with head unit. Ignoring app foregounded notification");
- return;
- }
-
- if (self.isVideoSuspended) {
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateReady];
- } else {
- [self sdl_startVideoSession];
- }
-}
-
-#pragma mark Video Streaming
-+ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_videoStreamStateTransitionDictionary {
- return @{
- SDLVideoStreamManagerStateStopped : @[SDLVideoStreamManagerStateStarting],
- SDLVideoStreamManagerStateStarting : @[SDLVideoStreamManagerStateStopped, SDLVideoStreamManagerStateReady],
- SDLVideoStreamManagerStateReady : @[SDLVideoStreamManagerStateSuspended, SDLVideoStreamManagerStateShuttingDown, SDLVideoStreamManagerStateStopped],
- SDLVideoStreamManagerStateSuspended : @[SDLVideoStreamManagerStateReady, SDLVideoStreamManagerStateShuttingDown, SDLVideoStreamManagerStateStopped],
- SDLVideoStreamManagerStateShuttingDown : @[SDLVideoStreamManagerStateStopped]
- };
-}
-
-- (void)sdl_disposeDisplayLink {
- if (self.displayLink == nil) { return; }
- SDLLogD(@"Destroying display link");
- [self.displayLink invalidate];
- self.displayLink = nil;
-}
-
-- (void)didEnterStateVideoStreamStopped {
- SDLLogD(@"Video stream stopped");
- _videoEncrypted = NO;
- _videoFormat = nil;
-
- if (_videoEncoder != nil) {
- [_videoEncoder stop];
- _videoEncoder = nil;
- }
-
- _backgroundingPixelBuffer = NULL;
- _preferredFormatIndex = 0;
- _preferredResolutionIndex = 0;
- _lastPresentationTimestamp = kCMTimeInvalid;
-
- [self sdl_disposeDisplayLink];
-
- [[NSNotificationCenter defaultCenter] postNotificationName:SDLVideoStreamDidStopNotification object:nil];
-
- if (self.videoServiceEndedCompletionHandler != nil) {
- self.videoServiceEndedCompletionHandler();
- self.videoServiceEndedCompletionHandler = nil;
- }
-}
-
-- (void)didEnterStateVideoStreamStarting {
- SDLLogD(@"Video stream starting");
-
- __weak typeof(self) weakSelf = self;
- [self sdl_requestVideoCapabilities:^(SDLVideoStreamingCapability * _Nullable capability) {
- SDLLogD(@"Received video capability response");
- SDLLogV(@"Capability: %@", capability);
-
- if (capability != nil) {
- // If we got a response, get the head unit's preferred formats and resolutions
- weakSelf.preferredFormats = capability.supportedFormats;
- weakSelf.preferredResolutions = @[capability.preferredResolution];
- if (capability.maxBitrate != nil) {
- weakSelf.videoEncoderSettings[(__bridge NSString *) kVTCompressionPropertyKey_AverageBitRate] = [[NSNumber alloc] initWithUnsignedLongLong:(capability.maxBitrate.unsignedLongLongValue * 1000)];
- }
-
- if (weakSelf.dataSource != nil) {
- SDLLogV(@"Calling data source for modified preferred formats");
- weakSelf.preferredFormats = [weakSelf.dataSource preferredVideoFormatOrderFromHeadUnitPreferredOrder:weakSelf.preferredFormats];
- }
-
- if (weakSelf.focusableItemManager != nil) {
- weakSelf.focusableItemManager.enableHapticDataRequests = capability.hapticSpatialDataSupported.boolValue;
- }
-
- SDLLogD(@"Got specialized video capabilites, preferred formats: %@, haptics enabled %@", weakSelf.preferredFormats, (capability.hapticSpatialDataSupported.boolValue ? @"YES" : @"NO"));
- } else {
- // If no response, assume that the format is H264 RAW and get the screen resolution from the RAI response's display capabilities.
- SDLVideoStreamingFormat *format = [[SDLVideoStreamingFormat alloc] initWithCodec:SDLVideoStreamingCodecH264 protocol:SDLVideoStreamingProtocolRAW];
- SDLImageResolution *resolution = [[SDLImageResolution alloc] initWithWidth:(uint16_t)weakSelf.videoScaleManager.displayViewportResolution.width height:(uint16_t)weakSelf.videoScaleManager.displayViewportResolution.height];
- weakSelf.preferredFormats = @[format];
- weakSelf.preferredResolutions = @[resolution];
-
- if (weakSelf.focusableItemManager != nil) {
- weakSelf.focusableItemManager.enableHapticDataRequests = NO;
- }
-
- SDLLogD(@"Using generic video capabilites, preferred formats: %@, resolutions: %@, haptics disabled", weakSelf.preferredFormats, weakSelf.preferredResolutions);
- }
-
- // Apply customEncoderSettings here. Note that value from HMI (such as maxBitrate) will be overwritten by custom settings.
- for (id key in self.customEncoderSettings.keyEnumerator) {
- self.videoEncoderSettings[key] = [self.customEncoderSettings valueForKey:key];
- }
-
- if (weakSelf.dataSource != nil) {
- SDLLogV(@"Calling data source for modified preferred resolutions");
- weakSelf.preferredResolutions = [weakSelf.dataSource resolutionFromHeadUnitPreferredResolution:weakSelf.preferredResolutions.firstObject];
- SDLLogD(@"Got specialized video resolutions: %@", weakSelf.preferredResolutions);
- }
-
- [self sdl_sendVideoStartService];
- }];
-}
-
-- (void)didEnterStateVideoStreamReady {
- SDLLogD(@"Video stream ready");
-
- if (self.videoEncoder != nil) {
- [self.videoEncoder stop];
- self.videoEncoder = nil;
- }
-
- [self sdl_disposeDisplayLink];
-
- [[NSNotificationCenter defaultCenter] postNotificationName:SDLVideoStreamDidStartNotification object:nil];
-
- if (!self.isAppStateVideoStreamCapable) {
- SDLLogD(@"App is in the background and can not stream video. Video will resume when app is foregrounded");
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateSuspended];
- return;
- }
-
- if (self.videoEncoder == nil) {
- NSError* error = nil;
- NSAssert(self.videoFormat != nil, @"No video format is known, but it must be if we got a protocol start service response");
-
- SDLLogD(@"Attempting to create video encoder");
- self.videoEncoder = [[SDLH264VideoEncoder alloc] initWithProtocol:self.videoFormat.protocol dimensions:self.videoScaleManager.appViewportFrame.size ssrc:self.ssrc properties:self.videoEncoderSettings delegate:self error:&error];
-
- if (error || self.videoEncoder == nil) {
- SDLLogE(@"Could not create a video encoder: %@", error);
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
- return;
- }
-
- if (!self.backgroundingPixelBuffer) {
- CVPixelBufferRef backgroundingPixelBuffer = [self.videoEncoder newPixelBuffer];
- if (CVPixelBufferAddText(backgroundingPixelBuffer, self.videoStreamBackgroundString) == NO) {
- SDLLogE(@"Could not create a backgrounding frame");
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
- return;
- }
-
- self.backgroundingPixelBuffer = backgroundingPixelBuffer;
- }
- self.lastPresentationTimestamp = kCMTimeInvalid;
- }
-
- if (self.useDisplayLink) {
- __weak typeof(self) weakSelf = self;
- dispatch_async(dispatch_get_main_queue(), ^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- NSInteger targetFramerate = ((NSNumber *)strongSelf.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate]).integerValue;
- SDLLogD(@"Initializing CADisplayLink with framerate: %ld", (long)targetFramerate);
- strongSelf.displayLink = [CADisplayLink displayLinkWithTarget:strongSelf selector:@selector(sdl_displayLinkFired:)];
- if (@available(iOS 10, *)) {
- strongSelf.displayLink.preferredFramesPerSecond = targetFramerate;
- } else {
- strongSelf.displayLink.frameInterval = (60 / targetFramerate);
- }
- [strongSelf.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
- });
- } else {
- self.touchManager.enableSyncedPanning = NO;
- }
-}
-
-- (void)didEnterStateVideoStreamSuspended {
- SDLLogD(@"Video stream suspended");
- [self sdl_disposeDisplayLink];
- [[NSNotificationCenter defaultCenter] postNotificationName:SDLVideoStreamSuspendedNotification object:nil];
-}
-
-- (void)didEnterStateVideoStreamShuttingDown {
- SDLLogD(@"Video stream shutting down");
- [self.protocol endServiceWithType:SDLServiceTypeVideo];
-}
-
-#pragma mark - SDLProtocolDelegate
-#pragma mark Start Service ACK/NAK
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
- if (startServiceACK.header.serviceType != SDLServiceTypeVideo) { return; }
-
- self.videoEncrypted = startServiceACK.header.encrypted;
-
- SDLControlFramePayloadVideoStartServiceAck *videoAckPayload = [[SDLControlFramePayloadVideoStartServiceAck alloc] initWithData:startServiceACK.payload];
- SDLLogD(@"Request to start video service ACKed on transport %@, with payload: %@", protocol.transport, videoAckPayload);
-
- if (videoAckPayload.mtu != SDLControlFrameInt64NotFound) {
- [[SDLGlobals sharedGlobals] setDynamicMTUSize:(NSUInteger)videoAckPayload.mtu forServiceType:SDLServiceTypeVideo];
- }
-
- // This is the definitive screen size that will be used
- if ((videoAckPayload.height != SDLControlFrameInt32NotFound || videoAckPayload.height != 0) && (videoAckPayload.width != SDLControlFrameInt32NotFound && videoAckPayload.width != 0)) {
- self.videoScaleManager.displayViewportResolution = CGSizeMake(videoAckPayload.width, videoAckPayload.height);
- } else if (self.preferredResolutions.count > 0) {
- // If a preferred resolution was set, use the first option to set the screen size
- SDLImageResolution *preferredResolution = self.preferredResolutions.firstObject;
- CGSize newScreenSize = CGSizeMake(preferredResolution.resolutionWidth.floatValue, preferredResolution.resolutionHeight.floatValue);
- if (!CGSizeEqualToSize(self.videoScaleManager.displayViewportResolution, newScreenSize)) {
- SDLLogW(@"The preferred resolution does not match the screen dimensions returned by the Register App Interface Response. Video may look distorted or video may not show up on the head unit");
- self.videoScaleManager.displayViewportResolution = CGSizeMake(preferredResolution.resolutionWidth.floatValue, preferredResolution.resolutionHeight.floatValue);
- }
- } // else we are using the screen size we got from the RAIR earlier
-
- // Figure out the definitive format that will be used. If the protocol / codec weren't passed in the payload, it's probably a system that doesn't support those properties, which also means it's a system that requires H.264 RAW encoding
- self.videoFormat = [[SDLVideoStreamingFormat alloc] init];
- self.videoFormat.codec = videoAckPayload.videoCodec ?: SDLVideoStreamingCodecH264;
- self.videoFormat.protocol = videoAckPayload.videoProtocol ?: SDLVideoStreamingProtocolRAW;
-
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateReady];
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
- if (startServiceNAK.header.serviceType != SDLServiceTypeVideo) { return; }
-
- SDLControlFramePayloadNak *nakPayload = [[SDLControlFramePayloadNak alloc] initWithData:startServiceNAK.payload];
- SDLLogE(@"Request to start video service NAKed on transport %@, with payload: %@", protocol.transport, nakPayload);
-
- // If we have no payload rejected params, we don't know what to do to retry, so we'll just stop and maybe cry
- if (nakPayload.rejectedParams.count == 0) {
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
- return;
- }
-
- // If height and/or width was rejected, and we have another resolution to try, advance our counter to try another resolution
- if (([nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameHeightKey]]
- || [nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameWidthKey]])) {
- self.preferredResolutionIndex++;
- }
-
- if (([nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]]
- || [nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameVideoProtocolKey]])) {
- self.preferredFormatIndex++;
- }
-
- [self sdl_sendVideoStartService];
-}
-
-#pragma mark End Service ACK/NAK
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
- if (endServiceACK.header.serviceType != SDLServiceTypeVideo) { return; }
- SDLLogD(@"Request to end video service ACKed on transport %@", protocol.transport);
-
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
-}
-
-- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
- if (endServiceNAK.header.serviceType != SDLServiceTypeVideo) { return; }
-
- SDLControlFramePayloadNak *nakPayload = [[SDLControlFramePayloadNak alloc] initWithData:endServiceNAK.payload];
- SDLLogE(@"Request to end video service NAKed on transport %@, with payload: %@", protocol.transport, nakPayload);
-
- /// Core will NAK the video end service control frame if video is not streaming or if video is streaming but the HMI does not recognize that video is streaming.
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
-}
-
-#pragma mark - SDL RPC Notification callbacks
-
-- (void)sdl_didReceiveRegisterAppInterfaceResponse:(SDLRPCResponseNotification *)notification {
- NSAssert([notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]], @"A notification was sent with an unanticipated object");
- if (![notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]]) {
- return;
- }
-
- SDLLogD(@"Received Register App Interface");
- SDLRegisterAppInterfaceResponse *registerResponse = (SDLRegisterAppInterfaceResponse *)notification.response;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- SDLImageResolution *resolution = registerResponse.displayCapabilities.screenParams.resolution;
-#pragma clang diagnostic pop
- if (resolution != nil) {
- self.videoScaleManager.displayViewportResolution = CGSizeMake(resolution.resolutionWidth.floatValue,
- resolution.resolutionHeight.floatValue);
- // HAX: Workaround for Legacy Ford and Lincoln displays with > 800 resolution width or height. They don't support scaling and if we don't do this workaround, they will not correctly scale the view.
- NSString *make = registerResponse.vehicleType.make;
- CGSize resolution = self.videoScaleManager.displayViewportResolution;
- if (([make containsString:@"Ford"] || [make containsString:@"Lincoln"]) && (resolution.width > 800 || resolution.height > 800)) {
- self.videoScaleManager.scale = 1.0f / 0.75f; // Scale by 1.333333
- }
- }
-
- self.connectedVehicleMake = registerResponse.vehicleType.make;
-
- SDLLogD(@"Determined base screen size on display capabilities: %@", NSStringFromCGSize(self.videoScaleManager.displayViewportResolution));
-}
-
-/// Parses out the `hmiLevel` and `videoStreamingState` from an `OnHMIStatus` notification from Core. Since Core only allows video streaming when the `hmiLevel` is `FULL` or `LIMITED`, sending video data when the `hmiLevel` is not `FULL` or `LIMITED` will result in Core forcing an unregistration with a reason of `PROTOCOL_VIOLATION`.
-/// 1. The `hmiLevel` will go to `FULL` when the user opens the SDL app by tapping on the SDL app icon on the HMI or uses a voice command to launch the SDL app.
-/// 2. The `hmiLevel` will go to `LIMITED` when the user backgrounds the SDL app by opening another app or by going back to the home screen.
-/// 3. The `hmiLevel` will go to `NONE` when the user "exits" the app (either through gesture or voice commands). It will also go to `NONE` if video fails to stream and the user presses "cancel" on the HMI popup. In these cases the transport between the phone and accessory will still be open. It will also go to `NONE` when the user disconnects the transport between the phone and accessory. In this case no notification will be recieved since the transport was disconnected.
-/// 4. The `hmiLevel` will go to `BACKGROUND` if the app is in `LIMITED` and another app takes over video streaming capability (i.e. another navigation app's `hmiLevel` changes to `FULL`).
-///
-/// @param notification The `OnHMIStatus` notification
-- (void)sdl_hmiStatusDidChange:(SDLRPCNotificationNotification *)notification {
- NSAssert([notification.notification isKindOfClass:[SDLOnHMIStatus class]], @"A notification was sent with an unanticipated object");
- if (![notification.notification isKindOfClass:[SDLOnHMIStatus class]]) {
- return;
- }
-
- SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus*)notification.notification;
- if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
- return;
- }
-
- self.hmiLevel = hmiStatus.hmiLevel;
-
- SDLVideoStreamingState newState = hmiStatus.videoStreamingState ?: SDLVideoStreamingStateStreamable;
- if (![self.videoStreamingState isEqualToEnum:newState]) {
- SDLLogD(@"Video streaming state changed from %@ to %@", self.videoStreamingState, hmiStatus.videoStreamingState);
- self.videoStreamingState = newState;
- }
-
- // if startWithProtocol has not been called yet, abort here
- if (self.protocol == nil) {
- SDLLogW(@"No session established with head unit. HMI status is not relevant.");
- return;
- }
-
- if (self.isHmiStateVideoStreamCapable) {
- [self sdl_startVideoSession];
- } else {
- [self sdl_stopVideoSession];
- }
-}
-
-#pragma mark - SDLVideoEncoderDelegate
-
-- (void)videoEncoder:(SDLH264VideoEncoder *)encoder hasEncodedFrame:(NSData *)encodedVideo {
- SDLLogV(@"Video encoder encoded frame, sending data");
- // Do we care about app state here? I don't think so…
- BOOL capableVideoStreamState = [self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateReady];
-
- if (self.isHmiStateVideoStreamCapable && capableVideoStreamState) {
- if (self.isVideoEncrypted) {
- [self.protocol sendEncryptedRawData:encodedVideo onService:SDLServiceTypeVideo];
- } else {
- [self.protocol sendRawData:encodedVideo withServiceType:SDLServiceTypeVideo];
- }
- }
-}
-
-#pragma mark - Streaming session helpers
-
-- (void)sdl_startVideoSession {
- SDLLogV(@"Attempting to start video session");
- if (self.protocol == nil) {
- SDLLogW(@"No transport established with head unit. Video start service request will not be sent.");
- return;
- }
-
- if (!self.isHmiStateVideoStreamCapable) {
- SDLLogV(@"SDL Core is not ready to stream video. Video start service request will not be sent.");
- return;
- }
-
- if (!self.isStreamingSupported) {
- SDLLogV(@"Streaming is not supported. Video start service request will not be sent.");
- return;
- }
-
- if ([self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateStopped] && self.isHmiStateVideoStreamCapable) {
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStarting];
- } else {
- SDLLogE(@"Unable to send video start service request\n"
- "Video State must be in state STOPPED: %@\n"
- "HMI state must be LIMITED or FULL: %@\n",
- self.videoStreamStateMachine.currentState, self.hmiLevel);
- }
-}
-
-- (void)sdl_stopVideoSession {
- SDLLogV(@"Attempting to stop video session");
- if (!self.isStreamingSupported) {
- SDLLogW(@"Head unit does not support video streaming. Will not send an end video service request");
- return;
- }
-
- if (self.isVideoConnected || self.isVideoSuspended) {
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateShuttingDown];
- } else {
- SDLLogW(@"No video is currently streaming. Will not send an end video service request.");
- }
-}
-
-- (void)sdl_displayLinkFired:(CADisplayLink *)displayLink {
- NSAssert([NSThread isMainThread], @"Display link should always fire on the main thread");
- if (@available(iOS 10.0, *)) {
- SDLLogV(@"DisplayLink frame fired, duration: %f, last frame timestamp: %f, target timestamp: %f", displayLink.duration, displayLink.timestamp, displayLink.targetTimestamp);
- } else {
- SDLLogV(@"DisplayLink frame fired, duration: %f, last frame timestamp: %f, target timestamp: (not available)", displayLink.duration, displayLink.timestamp);
- }
-
- [self.touchManager syncFrame];
- [self.carWindow syncFrame];
-}
-
-- (void)sdl_sendBackgroundFrames {
- SDLLogV(@"Attempting to send background frames");
- if (!self.backgroundingPixelBuffer) {
- SDLLogW(@"No background pixel buffer, unable to send background frames");
- return;
- }
-
- int32_t timeRate = 30;
- if (self.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate] != nil) {
- timeRate = ((NSNumber *)self.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate]).intValue;
- }
-
- const CMTime interval = CMTimeMake(1, timeRate);
- for (int frameCount = 0; frameCount < FramesToSendOnBackground; frameCount++) {
- if (CMTIME_IS_VALID(self.lastPresentationTimestamp)) {
- self.lastPresentationTimestamp = CMTimeAdd(self.lastPresentationTimestamp, interval);
- [self.videoEncoder encodeFrame:self.backgroundingPixelBuffer presentationTimestamp:self.lastPresentationTimestamp];
- } else {
- [self.videoEncoder encodeFrame:self.backgroundingPixelBuffer];
- }
- }
-}
-
-- (void)sdl_requestVideoCapabilities:(SDLVideoCapabilityResponseHandler)responseHandler {
- SDLLogD(@"Requesting video capabilities");
- SDLGetSystemCapability *getVideoCapabilityRequest = [[SDLGetSystemCapability alloc] initWithType:SDLSystemCapabilityTypeVideoStreaming];
-
- [self.connectionManager sendConnectionManagerRequest:getVideoCapabilityRequest withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (!response.success || [response isMemberOfClass:SDLGenericResponse.class]) {
- SDLLogW(@"Video capabilities response failed: %@", error);
- responseHandler(nil);
- BLOCK_RETURN;
- }
-
- SDLVideoStreamingCapability *videoCapability = ((SDLGetSystemCapabilityResponse *)response).systemCapability.videoStreamingCapability;
- SDLLogD(@"Video capabilities response received: %@", videoCapability);
-
- self.videoScaleManager.scale = (videoCapability != nil && videoCapability.scale != nil) ? videoCapability.scale.floatValue : (float)0.0;
-
- responseHandler(videoCapability);
- }];
-}
-
-/**
- Pull the current format / resolution out of our preferred resolutions and craft a start video service payload out of it, then send a start service. If the format isn't one that we support, we're going to try the next format.
- */
-- (void)sdl_sendVideoStartService {
- SDLLogV(@"Attempting to find preferred format");
- while (self.preferredFormatIndex < self.preferredFormats.count) {
- if (![self.supportedFormats containsObject:self.preferredFormats[self.preferredFormatIndex]]) {
- self.preferredFormatIndex++;
- } else {
- SDLLogV(@"Preferred format index found: %lu", self.preferredFormatIndex);
- break;
- }
- }
-
- // If this fails we have no known formats to use
- if (self.preferredFormatIndex >= self.preferredFormats.count
- || self.preferredResolutionIndex >= self.preferredResolutions.count) {
- SDLLogE(@"No preferred format or no preferred resolution found that works: format index %lu, resolution index %lu", (unsigned long)self.preferredFormatIndex, (unsigned long)self.preferredResolutionIndex);
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
- return;
- }
-
- SDLVideoStreamingFormat *preferredFormat = self.preferredFormats[self.preferredFormatIndex];
- SDLImageResolution *preferredResolution = self.preferredResolutions[self.preferredResolutionIndex];
-
- SDLControlFramePayloadVideoStartService *startVideoPayload = [[SDLControlFramePayloadVideoStartService alloc] initWithVideoHeight:preferredResolution.resolutionHeight.intValue width:preferredResolution.resolutionWidth.intValue protocol:preferredFormat.protocol codec:preferredFormat.codec];
-
- // Decide if we need to start a secure service or not
- if ((self.requestedEncryptionType != SDLStreamingEncryptionFlagNone) && ([self.secureMakes containsObject:self.connectedVehicleMake])) {
- SDLLogD(@"Sending secure video start service with payload: %@", startVideoPayload);
- [self.protocol startSecureServiceWithType:SDLServiceTypeVideo payload:startVideoPayload.data tlsInitializationHandler:^(BOOL success, NSError *error) {
- if (error) {
- SDLLogE(@"TLS setup error: %@", error);
- [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
- }
- }];
- } else {
- SDLLogD(@"Sending insecure video start service with payload: %@", startVideoPayload);
- [self.protocol startServiceWithType:SDLServiceTypeVideo payload:startVideoPayload.data];
- }
-}
-
-#pragma mark Setters / Getters
-
-- (void)setRootViewController:(nullable UIViewController *)rootViewController {
- if (self.focusableItemManager != nil) {
- self.focusableItemManager.viewController = rootViewController;
- }
-
- if (self.carWindow != nil) {
- self.carWindow.rootViewController = rootViewController;
- }
-}
-
-- (nullable UIViewController *)rootViewController {
- if (self.carWindow != nil) {
- return self.carWindow.rootViewController;
- } else {
- return nil;
- }
-}
-
-- (BOOL)isAppStateVideoStreamCapable {
- return [self.appStateMachine isCurrentState:SDLAppStateActive];
-}
-
-- (BOOL)isHmiStateVideoStreamCapable {
- return (![self.videoStreamingState isEqualToEnum:SDLVideoStreamingStateNotStreamable]
- && ([self.hmiLevel isEqualToEnum:SDLHMILevelLimited] || [self.hmiLevel isEqualToEnum:SDLHMILevelFull]));
-}
-
-- (NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
- SDLVideoStreamingFormat *h264raw = [[SDLVideoStreamingFormat alloc] initWithCodec:SDLVideoStreamingCodecH264 protocol:SDLVideoStreamingProtocolRAW];
- SDLVideoStreamingFormat *h264rtp = [[SDLVideoStreamingFormat alloc] initWithCodec:SDLVideoStreamingCodecH264 protocol:SDLVideoStreamingProtocolRTP];
-
- return @[h264raw, h264rtp];
-}
-
-- (NSString *)videoStreamBackgroundString {
- return [NSString stringWithFormat:@"When it is safe to do so, open %@ on your phone", self.appName];
-}
-
-- (BOOL)isStreamingSupported {
- return (self.systemCapabilityManager != nil) ? [self.systemCapabilityManager isCapabilitySupported:SDLSystemCapabilityTypeVideoStreaming] : YES;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeButtonManager.m b/SmartDeviceLink/SDLSubscribeButtonManager.m
deleted file mode 100644
index 505740227..000000000
--- a/SmartDeviceLink/SDLSubscribeButtonManager.m
+++ /dev/null
@@ -1,311 +0,0 @@
-//
-// SDLSDLSubscribeButtonManager.m
-// SmartDeviceLink
-//
-// Created by Nicole on 5/21/20.
-// Copyright © 2020 smartdevicelink. All rights reserved.
-//
-
-#import "SDLSubscribeButtonManager.h"
-
-#import "SDLError.h"
-#import "SDLGlobals.h"
-#import "SDLHMIPermissions.h"
-#import "SDLLogMacros.h"
-#import "SDLOnButtonPress.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLOnPermissionsChange.h"
-#import "SDLPermissionItem.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLSubscribeButton.h"
-#import "SDLSubscribeButtonObserver.h"
-#import "SDLUnsubscribeButton.h"
-#import "SDLUnsubscribeButtonResponse.h"
-#import "SDLOnButtonEvent.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLSubscribeButtonManager()
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (strong, nonatomic) NSMutableDictionary<SDLButtonName, NSMutableArray<SDLSubscribeButtonObserver *> *> *subscribeButtonObservers;
-@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
-
-@end
-
-@implementation SDLSubscribeButtonManager
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager {
- self = [super init];
- if (!self) { return nil; }
-
- if (@available(iOS 10.0, *)) {
- _readWriteQueue = dispatch_queue_create_with_target("com.sdl.subscribeButtonManager.readWriteQueue", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
- } else {
- _readWriteQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- }
-
- _connectionManager = connectionManager;
- _subscribeButtonObservers = [NSMutableDictionary dictionary];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_handleButtonEvent:) name:SDLDidReceiveButtonEventNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_handleButtonPress:) name:SDLDidReceiveButtonPressNotification object:nil];
-
- return self;
-}
-
-- (void)start { }
-
-- (void)stop {
- __weak typeof(self) weakSelf = self;
- [self sdl_runSyncOnQueue:^{
- __strong typeof(weakSelf) strongself = weakSelf;
- [strongself->_subscribeButtonObservers removeAllObjects];
- }];
-}
-
-#pragma mark - Subscribe
-
-- (id<NSObject>)subscribeButton:(SDLButtonName)buttonName withUpdateHandler:(nullable SDLSubscribeButtonUpdateHandler)updateHandler {
- SDLLogD(@"Subscribing to subscribe button with name: %@, with block", buttonName);
-
- NSObject *observer = [[NSObject alloc] init];
- SDLSubscribeButtonObserver *observerObject = [[SDLSubscribeButtonObserver alloc] initWithObserver:observer updateHandler:updateHandler];
-
- if (self.subscribeButtonObservers[buttonName].count > 0) {
- // The app has already subscribed to the button, simply add the observer to the list of observers for the button name.
- [self sdl_addSubscribedObserver:observerObject forButtonName:buttonName];
- } else {
- // The app has not yet subscribed to the button, send the `SubscribeButton` request for the button name.
- [self sdl_subscribeToButtonNamed:buttonName withObserverObject:observerObject];
- }
-
- return observer;
-}
-
-- (void)subscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer selector:(SEL)selector; {
- SDLLogD(@"Subscribing to subscribe button with name: %@, observer object: %@, selector: %@", buttonName, observer, NSStringFromSelector(selector));
-
- NSUInteger numberOfParametersInSelector = [NSStringFromSelector(selector) componentsSeparatedByString:@":"].count - 1;
- if (numberOfParametersInSelector > 4) {
- SDLLogE(@"Attempted to subscribe to a subscribe button using a selector that contains more than 4 parameters");
- return;
- }
-
- if (observer == nil) {
- SDLLogE(@"Attempted to subscribe to subscribe button with name %@ with a selector on a *nil* observer, which will always fail", buttonName);
- return;
- }
-
- SDLSubscribeButtonObserver *observerObject = [[SDLSubscribeButtonObserver alloc] initWithObserver:observer selector:selector];
- if (self.subscribeButtonObservers[buttonName].count > 0) {
- [self sdl_addSubscribedObserver:observerObject forButtonName:buttonName];
- return;
- }
-
- [self sdl_subscribeToButtonNamed:buttonName withObserverObject:observerObject];
-}
-
-/// Helper method for checking if the observer is currently subscribed to the button
-/// @param observer The observer
-/// @param buttonName The name of the button
-/// @return True if the observer is currently subscribed to the button; false if not
-- (BOOL)sdl_isSubscribedObserver:(id<NSObject>)observer forButtonName:(SDLButtonName)buttonName {
- BOOL isSubscribedObserver = NO;
- for (SDLSubscribeButtonObserver *subscribedObserver in self.subscribeButtonObservers[buttonName]) {
- if (subscribedObserver.observer != observer ) { continue; }
- isSubscribedObserver = YES;
- break;
- }
-
- return isSubscribedObserver;
-}
-
-/// Helper method for adding an observer for the button
-/// @param subscribedObserver The observer
-/// @param buttonName The name of the button
-- (void)sdl_addSubscribedObserver:(SDLSubscribeButtonObserver *)subscribedObserver forButtonName:(SDLButtonName)buttonName {
- __weak typeof(self) weakSelf = self;
- [self sdl_runSyncOnQueue:^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- if (strongSelf.subscribeButtonObservers[buttonName] == nil) {
- SDLLogV(@"Adding first subscriber for button: %@", buttonName);
- strongSelf.subscribeButtonObservers[buttonName] = [NSMutableArray arrayWithObject:subscribedObserver];
- } else {
- SDLLogV(@"Adding another subscriber for button: %@", buttonName);
- [strongSelf.subscribeButtonObservers[buttonName] addObject:subscribedObserver];
- }
- }];
-}
-
-#pragma mark Send Subscribe Request
-
-/// Helper method for sending a `SubscribeButton` request and notifying subscribers of button events.
-/// @param buttonName The name of the subscribe button
-/// @param observerObject The observer object
-- (void)sdl_subscribeToButtonNamed:(SDLButtonName)buttonName withObserverObject:(SDLSubscribeButtonObserver *)observerObject {
- SDLSubscribeButton *subscribeButton = [[SDLSubscribeButton alloc] initWithButtonName:buttonName handler:nil];
- __weak typeof(self) weakSelf = self;
-
- [self.connectionManager sendConnectionRequest:subscribeButton withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
- // Check if the request was successful. If a subscription request got sent for a button that is already subscribed then the module will respond with `IGNORED` so just act as if subscription succeeded.
- if (!response.success.boolValue && ![response.resultCode isEqualToEnum:SDLResultIgnored]) {
- [strongSelf sdl_invokeObserver:observerObject withButtonName:buttonName buttonPress:nil buttonEvent:nil error:error];
- return;
- }
-
- [strongSelf sdl_addSubscribedObserver:observerObject forButtonName:buttonName];
- }];
-}
-
-#pragma mark - Unsubscribe
-#pragma mark Send Unsubscribe Request
-
-- (void)unsubscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer withCompletionHandler:(nullable SDLSubscribeButtonUpdateCompletionHandler)completionHandler {
- if (self.subscribeButtonObservers[buttonName] == nil || ![self sdl_isSubscribedObserver:observer forButtonName:buttonName]) {
- SDLLogE(@"Attempting to unsubscribe to the %@ subscribe button which is not currently subscribed", buttonName);
- return completionHandler([NSError sdl_subscribeButtonManager_notSubscribed]);
- }
-
- // If we have more than one observer, just remove this observer
- if (self.subscribeButtonObservers[buttonName].count > 1) {
- [self sdl_removeSubscribedObserver:observer forButtonName:buttonName];
- return completionHandler(nil);
- }
-
- // If there's only one observer, unsubscribe from the button
- SDLUnsubscribeButton *unsubscribeButton = [[SDLUnsubscribeButton alloc] initWithButtonName:buttonName];
- __weak typeof(self) weakSelf = self;
- [self.connectionManager sendConnectionRequest:unsubscribeButton withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
- if (!response.success.boolValue) {
- SDLLogE(@"Attempt to unsubscribe from subscribe button %@ failed", buttonName);
- return completionHandler(error);
- }
-
- SDLLogD(@"Successfully unsubscribed from subscribe button named %@", buttonName);
- [strongSelf sdl_removeSubscribedObserver:observer forButtonName:buttonName];
- return completionHandler(error);
- }];
-}
-
-/// Helper method for removing an observer for the button
-/// @param observer The observer
-/// @param buttonName The name of the button
-- (void)sdl_removeSubscribedObserver:(id<NSObject>)observer forButtonName:(SDLButtonName)buttonName {
- __weak typeof(self) weakSelf = self;
- [self sdl_runSyncOnQueue:^{
- __strong typeof(weakSelf) strongSelf = weakSelf;
- for (NSUInteger i = 0; i < strongSelf.subscribeButtonObservers[buttonName].count; i++) {
- SDLSubscribeButtonObserver *subscribedObserver = (SDLSubscribeButtonObserver *)strongSelf.subscribeButtonObservers[buttonName][i];
- if (subscribedObserver.observer != observer) { continue; }
- // Okay to mutate because we will break immediately afterward
- [strongSelf.subscribeButtonObservers[buttonName] removeObjectAtIndex:i];
- break;
- }
- }];
-}
-
-#pragma mark - Notifications
-
-/// Button event notification from the module
-/// @param notification Information about the button event
-- (void)sdl_handleButtonEvent:(SDLRPCNotificationNotification *)notification {
- SDLOnButtonEvent *buttonEvent = (SDLOnButtonEvent *)notification.notification;
- if (buttonEvent == nil) { return; }
-
- SDLButtonName buttonName = buttonEvent.buttonName;
- for (SDLSubscribeButtonObserver *subscribeButtonObserver in self.subscribeButtonObservers[buttonName]) {
- [self sdl_invokeObserver:subscribeButtonObserver withButtonName:buttonName buttonPress:nil buttonEvent:buttonEvent error:nil];
- }
-}
-
-/// Button press notification from the module
-/// @param notification Information about the button press
-- (void)sdl_handleButtonPress:(SDLRPCNotificationNotification *)notification {
- SDLOnButtonPress *buttonPress = (SDLOnButtonPress *)notification.notification;
- if (buttonPress == nil) { return; }
-
- SDLButtonName buttonName = buttonPress.buttonName;
- for (SDLSubscribeButtonObserver *subscribeButtonObserver in self.subscribeButtonObservers[buttonName]) {
- [self sdl_invokeObserver:subscribeButtonObserver withButtonName:buttonName buttonPress:buttonPress buttonEvent:nil error:nil];
- }
-}
-
-/// Helper method for notifying subscribers of button events.
-/// @param observer The object that will have `selector` called
-/// @param buttonName The name of the subscribe button
-/// @param buttonPress Indicates whether this is a long or short button press event
-/// @param buttonEvent Indicates that the button has been depressed or released
-/// @param error The error, if one occurred; nil if not
-- (void)sdl_invokeObserver:(SDLSubscribeButtonObserver *)observer withButtonName:(SDLButtonName)buttonName buttonPress:(nullable SDLOnButtonPress *)buttonPress buttonEvent:(nullable SDLOnButtonEvent *)buttonEvent error:(nullable NSError *)error {
- if (observer.updateBlock != nil) {
- observer.updateBlock(buttonPress, buttonEvent, error);
- } else {
- if (![observer.observer respondsToSelector:observer.selector]) {
- @throw [NSException sdl_invalidSubscribeButtonSelectorExceptionWithSelector:observer.selector];
- }
-
- NSUInteger numberOfParametersInSelector = [NSStringFromSelector(observer.selector) componentsSeparatedByString:@":"].count - 1;
-
- // If a selector has 0, 1, 2, or 3 parameters and only a button event has occured, do not notify the observer of the button event.
- if (buttonEvent != nil && numberOfParametersInSelector <= 3) {
- return;
- }
-
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[(NSObject *)observer.observer methodSignatureForSelector:observer.selector]];
- [invocation setSelector:observer.selector];
- [invocation setTarget:observer.observer];
-
- if (numberOfParametersInSelector >= 1) {
- [invocation setArgument:&buttonName atIndex:2];
- }
- if (numberOfParametersInSelector >= 2) {
- [invocation setArgument:&error atIndex:3];
- }
- if (numberOfParametersInSelector >= 3) {
- [invocation setArgument:&buttonPress atIndex:4];
- }
- if (numberOfParametersInSelector >= 4) {
- [invocation setArgument:&buttonEvent atIndex:5];
- }
- if (numberOfParametersInSelector >= 5) {
- @throw [NSException sdl_invalidSubscribeButtonSelectorExceptionWithSelector:observer.selector];
- }
-
- [invocation invoke];
- }
-}
-
-#pragma mark - Utilities
-
-/// Checks if we are already on the serial readWrite queue. If so, the block is added to the queue; if not, the block is dispatched to the readWrite queue.
-/// @discussion Used to ensure atomic access to global properties.
-/// @param block The block to be executed.
-- (void)sdl_runSyncOnQueue:(void (^)(void))block {
- if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
- block();
- } else {
- dispatch_sync(self.readWriteQueue, block);
- }
-}
-
-#pragma mark - Getters
-
-- (NSMutableDictionary<SDLButtonName, NSMutableArray<SDLSubscribeButtonObserver *> *> *)subscribeButtonObservers {
- __block NSMutableDictionary<SDLButtonName, NSMutableArray<SDLSubscribeButtonObserver *> *> *dict = nil;
- [self sdl_runSyncOnQueue:^{
- dict = self->_subscribeButtonObservers;
- }];
-
- return dict;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleData.h b/SmartDeviceLink/SDLSubscribeVehicleData.h
deleted file mode 100644
index d0e6d4629..000000000
--- a/SmartDeviceLink/SDLSubscribeVehicleData.h
+++ /dev/null
@@ -1,293 +0,0 @@
-// SDLSubscribeVehicleData.h
-//
-
-
-#import "SDLRPCRequest.h"
-
-/**
- * Subscribes to specific published vehicle data items. The data will be only sent if it has changed. The application will be notified by the `onVehicleData` notification whenever new data is available. The update rate is dependent on sensors, vehicle architecture and vehicle type.
- *
- * @warning A vehicle may only support a subset of the vehicle data items. Be prepared for the situation where a signal is not available on a vehicle.
- *
- * Function Group: Location, VehicleInfo and DrivingChara
- * HMILevel needs to be FULL, LIMITED or BACKGROUND
- * Since SmartDeviceLink 2.0
- * See SDLUnsubscribeVehicleData, SDLGetVehicleData
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLSubscribeVehicleData : SDLRPCRequest
-
-/**
- * Convenience init for subscribing to all possible vehicle data items.
- *
- * @param accelerationPedalPosition Subscribe to accelerationPedalPosition
- * @param airbagStatus Subscribe to airbagStatus
- * @param beltStatus Subscribe to beltStatus
- * @param bodyInformation Subscribe to bodyInformation
- * @param clusterModeStatus Subscribe to clusterModeStatus
- * @param deviceStatus Subscribe to deviceStatus
- * @param driverBraking Subscribe to driverBraking
- * @param eCallInfo Subscribe to eCallInfo
- * @param emergencyEvent Subscribe to emergencyEvent
- * @param engineTorque Subscribe to engineTorque
- * @param externalTemperature Subscribe to externalTemperature
- * @param fuelLevel Subscribe to fuelLevel
- * @param fuelLevelState Subscribe to fuelLevelState
- * @param gps Subscribe to gps
- * @param headLampStatus Subscribe to headLampStatus
- * @param instantFuelConsumption Subscribe to instantFuelConsumption
- * @param myKey Subscribe to myKey
- * @param odometer Subscribe to odometer
- * @param prndl Subscribe to prndl
- * @param rpm Subscribe to rpm
- * @param speed Subscribe to speed
- * @param steeringWheelAngle Subscribe to steeringWheelAngle
- * @param tirePressure Subscribe to tirePressure
- * @param wiperStatus Subscribe to wiperStatus
- * @return A SDLSubscribeVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
-
-/**
- * Convenience init for subscribing to all possible vehicle data items.
- *
- * @param accelerationPedalPosition Subscribe to accelerationPedalPosition
- * @param airbagStatus Subscribe to airbagStatus
- * @param beltStatus Subscribe to beltStatus
- * @param bodyInformation Subscribe to bodyInformation
- * @param clusterModeStatus Subscribe to clusterModeStatus
- * @param deviceStatus Subscribe to deviceStatus
- * @param driverBraking Subscribe to driverBraking
- * @param eCallInfo Subscribe to eCallInfo
- * @param electronicParkBrakeStatus Subscribe to electronicParkBrakeStatus
- * @param emergencyEvent Subscribe to emergencyEvent
- * @param engineOilLife Subscribe to engineOilLife
- * @param engineTorque Subscribe to engineTorque
- * @param externalTemperature Subscribe to externalTemperature
- * @param fuelLevel Subscribe to fuelLevel
- * @param fuelLevelState Subscribe to fuelLevelState
- * @param fuelRange Subscribe to fuelRange
- * @param gps Subscribe to gps
- * @param headLampStatus Subscribe to headLampStatus
- * @param instantFuelConsumption Subscribe to instantFuelConsumption
- * @param myKey Subscribe to myKey
- * @param odometer Subscribe to odometer
- * @param prndl Subscribe to prndl
- * @param rpm Subscribe to rpm
- * @param speed Subscribe to speed
- * @param steeringWheelAngle Subscribe to steeringWheelAngle
- * @param tirePressure Subscribe to tirePressure
- * @param turnSignal Subscribe to turnSignal
- * @param wiperStatus Subscribe to wiperStatus
- * @return A SDLSubscribeVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
-
-/**
- * Convenience init for subscribing to all possible vehicle data items.
- *
- * @param accelerationPedalPosition Subscribe to accelerationPedalPosition
- * @param airbagStatus Subscribe to airbagStatus
- * @param beltStatus Subscribe to beltStatus
- * @param bodyInformation Subscribe to bodyInformation
- * @param cloudAppVehicleID Subscribe to cloudAppVehicleID
- * @param clusterModeStatus Subscribe to clusterModeStatus
- * @param deviceStatus Subscribe to deviceStatus
- * @param driverBraking Subscribe to driverBraking
- * @param eCallInfo Subscribe to eCallInfo
- * @param electronicParkBrakeStatus Subscribe to electronicParkBrakeStatus
- * @param emergencyEvent Subscribe to emergencyEvent
- * @param engineOilLife Subscribe to engineOilLife
- * @param engineTorque Subscribe to engineTorque
- * @param externalTemperature Subscribe to externalTemperature
- * @param fuelLevel Subscribe to fuelLevel
- * @param fuelLevelState Subscribe to fuelLevelState
- * @param fuelRange Subscribe to fuelRange
- * @param gps Subscribe to gps
- * @param headLampStatus Subscribe to headLampStatus
- * @param instantFuelConsumption Subscribe to instantFuelConsumption
- * @param myKey Subscribe to myKey
- * @param odometer Subscribe to odometer
- * @param prndl Subscribe to prndl
- * @param rpm Subscribe to rpm
- * @param speed Subscribe to speed
- * @param steeringWheelAngle Subscribe to steeringWheelAngle
- * @param tirePressure Subscribe to tirePressure
- * @param turnSignal Subscribe to turnSignal
- * @param wiperStatus Subscribe to wiperStatus
- * @return A SDLSubscribeVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus;
-
-/**
- * A boolean value. If true, subscribes GPS data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *gps;
-
-/**
- * A boolean value. If true, subscribes Speed data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *speed;
-
-/**
- * A boolean value. If true, subscribes RPM data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *rpm;
-
-/**
- * A boolean value. If true, subscribes Fuel Level data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel;
-
-/**
- * A boolean value. If true, subscribes Fuel Level State data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel_State;
-
-/**
- * A boolean value. If true, subscribes Fuel Range data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelRange;
-
-/**
- * A boolean value. If true, subscribes Instant Fuel Consumption data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *instantFuelConsumption;
-
-/**
- * A boolean value. If true, subscribes External Temperature data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *externalTemperature;
-
-/**
- * A boolean value. If true, subscribes PRNDL data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *prndl;
-
-/**
- * A boolean value. If true, subscribes Tire Pressure status data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *tirePressure;
-
-/**
- * A boolean value. If true, subscribes Odometer data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *odometer;
-
-/**
- * A boolean value. If true, subscribes Belt Status data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *beltStatus;
-
-/**
- * A boolean value. If true, subscribes Body Information data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *bodyInformation;
-
-/**
- * A boolean value. If true, subscribes Device Status data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *deviceStatus;
-
-/**
- * A boolean value. If true, subscribes Driver Braking data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *driverBraking;
-
-/**
- * A boolean value. If true, subscribes Wiper Status data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *wiperStatus;
-
-/**
- * A boolean value. If true, subscribes Head Lamp Status data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *headLampStatus;
-
-/**
- * A boolean value. If true, subscribes to Engine Oil Life data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineOilLife;
-
-/**
- * A boolean value. If true, subscribes Engine Torque data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineTorque;
-
-/**
- * A boolean value. If true, subscribes Acc Pedal Position data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *accPedalPosition;
-
-/**
- * A boolean value. If true, subscribes Steering Wheel Angle data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *steeringWheelAngle;
-
-/**
- * A boolean value. If true, subscribes eCall Info data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *eCallInfo;
-
-/**
- * A boolean value. If true, subscribes Airbag Status data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *airbagStatus;
-
-/**
- * A boolean value. If true, subscribes Emergency Event data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *emergencyEvent;
-
-/**
- * A boolean value. If true, subscribes Cluster Mode Status data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *clusterModeStatus;
-
-/**
- * A boolean value. If true, subscribes myKey data.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *myKey;
-
-/**
- * A boolean value. If true, subscribes to the electronic parking brake status.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *electronicParkBrakeStatus;
-
-/**
- * A boolean value. If true, subscribes to the turn signal status.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *turnSignal;
-
-/**
- * A boolean value. If true, subscribes to the cloud app vehicle ID.
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
-
-/**
- Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @param vehicleDataState A boolean value. If true, requests the OEM custom vehicle data item.
-
- Added in SmartDeviceLink 6.0
- */
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
-
-/**
- Gets the OEM custom vehicle data value for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @return The state of an OEM custom vehicle data item for the given vehicle data name.
-
- Added in SmartDeviceLink 6.0
- */
-- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
-
-
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleData.m b/SmartDeviceLink/SDLSubscribeVehicleData.m
deleted file mode 100644
index a5bd22070..000000000
--- a/SmartDeviceLink/SDLSubscribeVehicleData.m
+++ /dev/null
@@ -1,313 +0,0 @@
-// SDLSubscribeVehicleData.m
-//
-
-
-#import "SDLSubscribeVehicleData.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSubscribeVehicleData
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameSubscribeVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure wiperStatus:(BOOL)wiperStatus {
- return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:NO emergencyEvent:emergencyEvent engineOilLife:NO engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:NO gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:NO wiperStatus:wiperStatus];
-}
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
- return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation cloudAppVehicleID:NO clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:electronicParkBrakeStatus emergencyEvent:emergencyEvent engineOilLife:engineOilLife engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:fuelRange gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:turnSignal wiperStatus:wiperStatus];
-}
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.accPedalPosition = @(accelerationPedalPosition);
- self.airbagStatus = @(airbagStatus);
- self.beltStatus = @(beltStatus);
- self.bodyInformation = @(bodyInformation);
- self.cloudAppVehicleID = @(cloudAppVehicleID);
- self.clusterModeStatus = @(clusterModeStatus);
- self.deviceStatus = @(deviceStatus);
- self.driverBraking = @(driverBraking);
- self.eCallInfo = @(eCallInfo);
- self.electronicParkBrakeStatus = @(electronicParkBrakeStatus);
- self.emergencyEvent = @(emergencyEvent);
- self.engineOilLife = @(engineOilLife);
- self.engineTorque = @(engineTorque);
- self.externalTemperature = @(externalTemperature);
- self.fuelLevel = @(fuelLevel);
- self.fuelLevel_State = @(fuelLevelState);
- self.fuelRange = @(fuelRange);
- self.myKey = @(myKey);
- self.odometer = @(odometer);
- self.gps = @(gps);
- self.headLampStatus = @(headLampStatus);
- self.instantFuelConsumption = @(instantFuelConsumption);
- self.prndl = @(prndl);
- self.rpm = @(rpm);
- self.speed = @(speed);
- self.steeringWheelAngle = @(steeringWheelAngle);
- self.tirePressure = @(tirePressure);
- self.turnSignal = @(turnSignal);
- self.wiperStatus = @(wiperStatus);
-
- return self;
-}
-
-- (void)setGps:(nullable NSNumber<SDLBool> *)gps {
- [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
-}
-
-- (nullable NSNumber<SDLBool> *)gps {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSpeed:(nullable NSNumber<SDLBool> *)speed {
- [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
-}
-
-- (nullable NSNumber<SDLBool> *)speed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRpm:(nullable NSNumber<SDLBool> *)rpm {
- [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
-}
-
-- (nullable NSNumber<SDLBool> *)rpm {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel:(nullable NSNumber<SDLBool> *)fuelLevel {
- [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelLevel {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel_State:(nullable NSNumber<SDLBool> *)fuelLevel_State {
- [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelLevel_State {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelRange:(nullable NSNumber<SDLBool> *)fuelRange {
- [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelRange {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil];
-}
-
-- (void)setInstantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption {
- [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
-}
-
-- (nullable NSNumber<SDLBool> *)instantFuelConsumption {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
-}
-
-- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
- [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
-}
-
-- (nullable NSNumber<SDLBool> *)externalTemperature {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
-}
-
-- (void)setPrndl:(nullable NSNumber<SDLBool> *)prndl {
- [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
-}
-
-- (nullable NSNumber<SDLBool> *)prndl {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTirePressure:(nullable NSNumber<SDLBool> *)tirePressure {
- [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
-}
-
-- (nullable NSNumber<SDLBool> *)tirePressure {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil];
-}
-
-- (void)setOdometer:(nullable NSNumber<SDLBool> *)odometer {
- [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
-}
-
-- (nullable NSNumber<SDLBool> *)odometer {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBeltStatus:(nullable NSNumber<SDLBool> *)beltStatus {
- [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)beltStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation {
- [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
-}
-
-- (nullable NSNumber<SDLBool> *)bodyInformation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDeviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus {
- [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)deviceStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDriverBraking:(nullable NSNumber<SDLBool> *)driverBraking {
- [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
-}
-
-- (nullable NSNumber<SDLBool> *)driverBraking {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil];
-}
-
-- (void)setWiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus {
- [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)wiperStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeadLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus {
- [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)headLampStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife {
- [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
-}
-
-- (nullable NSNumber<SDLBool> *)engineOilLife {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineTorque:(nullable NSNumber<SDLBool> *)engineTorque {
- [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
-}
-
-- (nullable NSNumber<SDLBool> *)engineTorque {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAccPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition {
- [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
-}
-
-- (nullable NSNumber<SDLBool> *)accPedalPosition {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSteeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle {
- [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
-}
-
-- (nullable NSNumber<SDLBool> *)steeringWheelAngle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
-}
-
-- (void)setECallInfo:(nullable NSNumber<SDLBool> *)eCallInfo {
- [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
-}
-
-- (nullable NSNumber<SDLBool> *)eCallInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAirbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus {
- [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)airbagStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEmergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent {
- [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
-}
-
-- (nullable NSNumber<SDLBool> *)emergencyEvent {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil];
-}
-
-- (void)setClusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus {
- [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)clusterModeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setMyKey:(nullable NSNumber<SDLBool> *)myKey {
- [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
-}
-
-- (nullable NSNumber<SDLBool> *)myKey {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil];
-}
-
-- (void)setElectronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
- [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTurnSignal:(nullable NSNumber<SDLBool> *)turnSignal {
- [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
-}
-
-- (nullable NSNumber<SDLBool> *)turnSignal {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
- [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
-}
-
-- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
-}
-
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
- [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
-}
-
-- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
- return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
deleted file mode 100644
index 3f4386499..000000000
--- a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.h
+++ /dev/null
@@ -1,244 +0,0 @@
-// SDLSubscribeVehicleDataResponse.h
-//
-
-#import "SDLRPCResponse.h"
-
-@class SDLVehicleDataResult;
-
-
-/**
- Response to SDLSubscribeVehicleData
-
- Since SmartDeviceLink 2.0
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLSubscribeVehicleDataResponse : SDLRPCResponse
-
-/**
- The result of requesting to subscribe to the GPSData.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *gps;
-
-/**
- The result of requesting to subscribe to the vehicle speed in kilometers per hour.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *speed;
-
-/**
- The result of requesting to subscribe to the number of revolutions per minute of the engine.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *rpm;
-
-/**
- The result of requesting to subscribe to the fuel level in the tank (percentage)
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel;
-
-/**
- The result of requesting to subscribe to the fuel level state.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel_State;
-
-/**
- The result of requesting to subscribe to the fuel range.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelRange;
-
-/**
- The result of requesting to subscribe to the instantaneous fuel consumption in microlitres.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *instantFuelConsumption;
-
-/**
- The result of requesting to subscribe to the external temperature in degrees celsius.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *externalTemperature;
-
-/**
- The result of requesting to subscribe to the PRNDL status.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *prndl;
-
-/**
- The result of requesting to subscribe to the tireStatus.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *tirePressure;
-
-/**
- The result of requesting to subscribe to the odometer in km.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *odometer;
-
-/**
- The result of requesting to subscribe to the status of the seat belts.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *beltStatus;
-
-/**
- The result of requesting to subscribe to the body information including power modes.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *bodyInformation;
-
-/**
- The result of requesting to subscribe to the device status including signal and battery strength.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *deviceStatus;
-
-/**
- The result of requesting to subscribe to the status of the brake pedal.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *driverBraking;
-
-/**
- The result of requesting to subscribe to the status of the wipers.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *wiperStatus;
-
-/**
- The result of requesting to subscribe to the status of the head lamps.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *headLampStatus;
-
-/**
- The result of requesting to subscribe to the estimated percentage of remaining oil life of the engine.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineOilLife;
-
-/**
- The result of requesting to subscribe to the torque value for engine (in Nm) on non-diesel variants.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineTorque;
-
-/**
- The result of requesting to subscribe to the accelerator pedal position (percentage depressed)
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *accPedalPosition;
-
-/**
- The result of requesting to subscribe to the current angle of the steering wheel (in deg)
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *steeringWheelAngle;
-
-/**
- The result of requesting to subscribe to the emergency call info
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *eCallInfo;
-
-/**
- The result of requesting to subscribe to the airbag status
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *airbagStatus;
-
-/**
- The result of requesting to subscribe to the emergency event
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *emergencyEvent;
-
-/**
- The result of requesting to subscribe to the cluster modes
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *clusterModes;
-
-/**
- The result of requesting to subscribe to the myKey status
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *myKey;
-
-/**
- The result of requesting to subscribe to the electronic parking brake status
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *electronicParkBrakeStatus;
-
-/**
- The result of requesting to subscribe to the turn signal
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *turnSignal;
-
-/**
- The result of requesting to subscribe to the cloud app vehicle ID
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
-
-/**
- Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @param vehicleDataState SDLVehicleDataResult object containing custom data type and result code information.
-
- Added SmartDeviceLink 6.0
- */
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
-
-/**
- Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @return SDLVehicleDataResult An object containing custom data type and result code information.
-
- Added SmartDeviceLink 6.0
- */
-- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
deleted file mode 100644
index 7ab6b4e63..000000000
--- a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m
+++ /dev/null
@@ -1,267 +0,0 @@
-// SDLSubscribeVehicleDataResponse.m
-//
-
-
-#import "SDLSubscribeVehicleDataResponse.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLVehicleDataResult.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSubscribeVehicleDataResponse
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameSubscribeVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (void)setGps:(nullable SDLVehicleDataResult *)gps {
- [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
-}
-
-- (nullable SDLVehicleDataResult *)gps {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setSpeed:(nullable SDLVehicleDataResult *)speed {
- [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
-}
-
-- (nullable SDLVehicleDataResult *)speed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setRpm:(nullable SDLVehicleDataResult *)rpm {
- [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
-}
-
-- (nullable SDLVehicleDataResult *)rpm {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setFuelLevel:(nullable SDLVehicleDataResult *)fuelLevel {
- [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
-}
-
-- (nullable SDLVehicleDataResult *)fuelLevel {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setFuelLevel_State:(nullable SDLVehicleDataResult *)fuelLevel_State {
- [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
-}
-
-- (nullable SDLVehicleDataResult *)fuelLevel_State {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setFuelRange:(nullable SDLVehicleDataResult *)fuelRange {
- [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
-}
-
-- (nullable SDLVehicleDataResult *)fuelRange {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setInstantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption {
- [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
-}
-
-- (nullable SDLVehicleDataResult *)instantFuelConsumption {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature {
- [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
-}
-
-- (nullable SDLVehicleDataResult *)externalTemperature {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setPrndl:(nullable SDLVehicleDataResult *)prndl {
- [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
-}
-
-- (nullable SDLVehicleDataResult *)prndl {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setTirePressure:(nullable SDLVehicleDataResult *)tirePressure {
- [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
-}
-
-- (nullable SDLVehicleDataResult *)tirePressure {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setOdometer:(nullable SDLVehicleDataResult *)odometer {
- [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
-}
-
-- (nullable SDLVehicleDataResult *)odometer {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setBeltStatus:(nullable SDLVehicleDataResult *)beltStatus {
- [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
-}
-
-- (nullable SDLVehicleDataResult *)beltStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setBodyInformation:(nullable SDLVehicleDataResult *)bodyInformation {
- [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
-}
-
-- (nullable SDLVehicleDataResult *)bodyInformation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setDeviceStatus:(nullable SDLVehicleDataResult *)deviceStatus {
- [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
-}
-
-- (nullable SDLVehicleDataResult *)deviceStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setDriverBraking:(nullable SDLVehicleDataResult *)driverBraking {
- [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
-}
-
-- (nullable SDLVehicleDataResult *)driverBraking {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setWiperStatus:(nullable SDLVehicleDataResult *)wiperStatus {
- [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
-}
-
-- (nullable SDLVehicleDataResult *)wiperStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setHeadLampStatus:(nullable SDLVehicleDataResult *)headLampStatus {
- [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
-}
-
-- (nullable SDLVehicleDataResult *)headLampStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setEngineOilLife:(nullable SDLVehicleDataResult *)engineOilLife {
- [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
-}
-
-- (nullable SDLVehicleDataResult *)engineOilLife {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setEngineTorque:(nullable SDLVehicleDataResult *)engineTorque {
- [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
-}
-
-- (nullable SDLVehicleDataResult *)engineTorque {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setAccPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition {
- [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
-}
-
-- (nullable SDLVehicleDataResult *)accPedalPosition {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setSteeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle {
- [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
-}
-
-- (nullable SDLVehicleDataResult *)steeringWheelAngle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setECallInfo:(nullable SDLVehicleDataResult *)eCallInfo {
- [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
-}
-
-- (nullable SDLVehicleDataResult *)eCallInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setAirbagStatus:(nullable SDLVehicleDataResult *)airbagStatus {
- [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
-}
-
-- (nullable SDLVehicleDataResult *)airbagStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setEmergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent {
- [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
-}
-
-- (nullable SDLVehicleDataResult *)emergencyEvent {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setClusterModes:(nullable SDLVehicleDataResult *)clusterModes {
- [self.parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes];
-}
-
-- (nullable SDLVehicleDataResult *)clusterModes {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setMyKey:(nullable SDLVehicleDataResult *)myKey {
- [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
-}
-
-- (nullable SDLVehicleDataResult *)myKey {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setElectronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
- [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
-}
-
-- (nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setTurnSignal:(nullable SDLVehicleDataResult *)turnSignal {
- [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
-}
-
-- (nullable SDLVehicleDataResult *)turnSignal {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID {
- [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
-}
-
-- (nullable SDLVehicleDataResult *)cloudAppVehicleID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState {
- [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
-}
-
-- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
- return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSupportedSeat.h b/SmartDeviceLink/SDLSupportedSeat.h
deleted file mode 100644
index 018e0514d..000000000
--- a/SmartDeviceLink/SDLSupportedSeat.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// SDLSupportedSeat.h
-//
-
-#import "SDLEnum.h"
-
-/**
- * List possible seats that is a remote controllable seat.
- * @warning This should not be used to supported seats, this is a deprecated parameter.
- */
-typedef SDLEnum SDLSupportedSeat SDL_SWIFT_ENUM __deprecated;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-/**
-* Save current seat positions and settings to seat memory.
-*/
-extern SDLSupportedSeat const SDLSupportedSeatDriver;
-#pragma clang diagnostic pop
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-/**
-* Restore / apply the seat memory settings to the current seat.
-*/
-extern SDLSupportedSeat const SDLSupportedSeatFrontPassenger;
-#pragma clang diagnostic pop
diff --git a/SmartDeviceLink/SDLSupportedSeat.m b/SmartDeviceLink/SDLSupportedSeat.m
deleted file mode 100644
index 1260ced9d..000000000
--- a/SmartDeviceLink/SDLSupportedSeat.m
+++ /dev/null
@@ -1,10 +0,0 @@
-// SDLSupportedSeat.m
-//
-
-#import "SDLSupportedSeat.h"
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-SDLSupportedSeat const SDLSupportedSeatDriver = @"DRIVER";
-SDLSupportedSeat const SDLSupportedSeatFrontPassenger = @"FRONT_PASSENGER";
-#pragma clang diagnostic pop
diff --git a/SmartDeviceLink/SDLSyncMsgVersion.h b/SmartDeviceLink/SDLSyncMsgVersion.h
deleted file mode 100644
index 7ef41b21d..000000000
--- a/SmartDeviceLink/SDLSyncMsgVersion.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SDLSyncMsgVersion.h
-//
-
-
-#import "SDLRPCMessage.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Specifies the version number of the SDL V4 interface. This is used by both the application and SDL to declare what interface version each is using.
- *
- * @since SDL 1.0
- */
-__deprecated_msg("Use SDLMsgVersion instead")
-@interface SDLSyncMsgVersion : SDLRPCStruct
-
-/// Convenience init to describe the SDL version
-///
-/// @param majorVersion The major version indicates versions that is not-compatible to previous versions
-/// @param minorVersion The minor version indicates a change to a previous version that should still allow to be run on an older version (with limited functionality)
-/// @param patchVersion Allows backward-compatible fixes to the API without increasing the minor version of the interface
-/// @return An SDLSyncMsgVersion object
-- (instancetype)initWithMajorVersion:(UInt8)majorVersion minorVersion:(UInt8)minorVersion patchVersion:(UInt8)patchVersion;
-
-/**
- * The major version indicates versions that is not-compatible to previous versions
- *
- * Required, Integer, 1 - 10
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *majorVersion;
-/**
- * The minor version indicates a change to a previous version that should still allow to be run on an older version (with limited functionality)
- *
- * Required, Integer, 0 - 1000
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *minorVersion;
-
-/**
- * Allows backward-compatible fixes to the API without increasing the minor version of the interface
- *
- * Optional, Integer, 0 - 1000
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLInt> *patchVersion;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSyncMsgVersion.m b/SmartDeviceLink/SDLSyncMsgVersion.m
deleted file mode 100644
index b922672ed..000000000
--- a/SmartDeviceLink/SDLSyncMsgVersion.m
+++ /dev/null
@@ -1,61 +0,0 @@
-// SDLSyncMsgVersion.m
-//
-
-
-#import "SDLSyncMsgVersion.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-implementations"
-@implementation SDLSyncMsgVersion
-#pragma clang diagnostic pop
-
-- (instancetype)initWithMajorVersion:(UInt8)majorVersion minorVersion:(UInt8)minorVersion patchVersion:(UInt8)patchVersion {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.majorVersion = @(majorVersion);
- self.minorVersion = @(minorVersion);
- self.patchVersion = @(patchVersion);
-
- return self;
-}
-
-- (void)setMajorVersion:(NSNumber<SDLInt> *)majorVersion {
- [self.store sdl_setObject:majorVersion forName:SDLRPCParameterNameMajorVersion];
-}
-
-- (NSNumber<SDLInt> *)majorVersion {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameMajorVersion ofClass:NSNumber.class error:&error];
-}
-
-- (void)setMinorVersion:(NSNumber<SDLInt> *)minorVersion {
- [self.store sdl_setObject:minorVersion forName:SDLRPCParameterNameMinorVersion];
-}
-
-- (NSNumber<SDLInt> *)minorVersion {
- NSError *error = nil;
- return [self.store sdl_objectForName:SDLRPCParameterNameMinorVersion ofClass:NSNumber.class error:&error];
-}
-
-- (void)setPatchVersion:(nullable NSNumber<SDLInt> *)patchVersion {
- [self.store sdl_setObject:patchVersion forName:SDLRPCParameterNamePatchVersion];
-}
-
-- (nullable NSNumber<SDLInt> *)patchVersion {
- return [self.store sdl_objectForName:SDLRPCParameterNamePatchVersion ofClass:NSNumber.class error:nil];
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"%@.%@.%@", self.majorVersion, self.minorVersion, self.patchVersion];
-}
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemAction.h b/SmartDeviceLink/SDLSystemAction.h
deleted file mode 100644
index 9c302cf77..000000000
--- a/SmartDeviceLink/SDLSystemAction.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// SDLSystemAction.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration that describes system actions that can be triggered. Used in SoftButton.
- */
-typedef SDLEnum SDLSystemAction SDL_SWIFT_ENUM;
-
-/**
- A default soft button action
- */
-extern SDLSystemAction const SDLSystemActionDefaultAction;
-
-/**
- An action causing your app to steal HMI focus
- */
-extern SDLSystemAction const SDLSystemActionStealFocus;
-
-/**
- An action causing you to keep context
- */
-extern SDLSystemAction const SDLSystemActionKeepContext;
diff --git a/SmartDeviceLink/SDLSystemCapability.h b/SmartDeviceLink/SDLSystemCapability.h
deleted file mode 100755
index f0ac7b2d8..000000000
--- a/SmartDeviceLink/SDLSystemCapability.h
+++ /dev/null
@@ -1,143 +0,0 @@
-//
-// SDLSystemCapability.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/10/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLRPCStruct.h"
-#import "SDLSystemCapabilityType.h"
-
-@class SDLAppServicesCapabilities;
-@class SDLPhoneCapability;
-@class SDLNavigationCapability;
-@class SDLVideoStreamingCapability;
-@class SDLRemoteControlCapabilities;
-@class SDLSeatLocationCapability;
-@class SDLDisplayCapability;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * The systemCapabilityType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist.
- *
- * First implemented in SDL Core v4.4
- */
-@interface SDLSystemCapability : SDLRPCStruct
-
-/**
- * Convenience init for an App Service Capability
- *
- * @param capability Describes the capabilities of app services including what service types are supported and the current state of services
- * @return A SDLSystemCapability object
- */
-- (instancetype)initWithAppServicesCapabilities:(SDLAppServicesCapabilities *)capability;
-
-/**
- * Convenience init for a Navigation Capability
- *
- * @param capability Describes the extended capabilities of the onboard navigation system
- * @return A SDLSystemCapability object
- */
-- (instancetype)initWithNavigationCapability:(SDLNavigationCapability *)capability;
-
-/**
- * Convenience init for a Phone Capability
- *
- * @param capability Describes the extended capabilities of the module's phone feature
- * @return A SDLSystemCapability object
- */
-- (instancetype)initWithPhoneCapability:(SDLPhoneCapability *)capability;
-
-/**
- * Convenience init for a Video Streaming Capability
- *
- * @param capability Describes the capabilities of the module's video streaming feature
- * @return A SDLSystemCapability object
- */
-- (instancetype)initWithVideoStreamingCapability:(SDLVideoStreamingCapability *)capability;
-
-/**
- * Convenience init for a Remote Control Capability
- *
- * @param capability Describes the extended capabilities of the module's remote control feature
- * @return A SDLSystemCapability object
- */
-- (instancetype)initWithRemoteControlCapability:(SDLRemoteControlCapabilities *)capability;
-
-/**
- Convenience init for DisplayCapability list
-
- @param capabilities Contains capabilities related to a physical screen and any associated windows
- @return A SDLSystemCapability object
- */
-- (instancetype)initWithDisplayCapabilities:(NSArray<SDLDisplayCapability *> *)capabilities;
-
-/**
- * Convenience init for a Remote Control Capability
- *
- * @param capability Describes information about the locations of each seat
- * @return A SDLSystemCapability object
- */
-- (instancetype)initWithSeatLocationCapability:(SDLSeatLocationCapability *)capability;
-
-/**
- * Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other parameter included.
- */
-@property (strong, nonatomic) SDLSystemCapabilityType systemCapabilityType;
-
-/**
- * Describes the capabilities of app services including what service types are supported and the current state of services.
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLAppServicesCapabilities *appServicesCapabilities;
-
-/**
- * Describes the extended capabilities of the onboard navigation system
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLNavigationCapability *navigationCapability;
-
-/**
- * Describes the extended capabilities of the module's phone feature
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLPhoneCapability *phoneCapability;
-
-/**
- * Describes the capabilities of the module's video streaming feature
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLVideoStreamingCapability *videoStreamingCapability;
-
-/**
- * Describes the extended capabilities of the module's remote control feature
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLRemoteControlCapabilities *remoteControlCapability;
-
-/**
- * Describes information about the locations of each seat
- *
- * Optional
- */
-@property (nullable, strong, nonatomic) SDLSeatLocationCapability *seatLocationCapability;
-
-/**
- Contain the display related information and all windows related to that display
-
- Optional
-
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) NSArray<SDLDisplayCapability *> *displayCapabilities;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapability.m b/SmartDeviceLink/SDLSystemCapability.m
deleted file mode 100755
index 3936e463b..000000000
--- a/SmartDeviceLink/SDLSystemCapability.m
+++ /dev/null
@@ -1,177 +0,0 @@
-//
-// SDLSystemCapability.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/10/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLSystemCapability.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLAppServicesCapabilities.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLNavigationCapability.h"
-#import "SDLPhoneCapability.h"
-#import "SDLSystemCapabilityType.h"
-#import "SDLVideoStreamingCapability.h"
-#import "SDLRemoteControlCapabilities.h"
-#import "SDLSeatLocationCapability.h"
-#import "SDLDisplayCapability.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSystemCapability
-
-- (instancetype)initWithAppServicesCapabilities:(SDLAppServicesCapabilities *)capability {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.systemCapabilityType = SDLSystemCapabilityTypeAppServices;
- self.appServicesCapabilities = capability;
-
- return self;
-}
-
-- (instancetype)initWithPhoneCapability:(SDLPhoneCapability *)capability {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.systemCapabilityType = SDLSystemCapabilityTypePhoneCall;
- self.phoneCapability = capability;
-
- return self;
-}
-
-- (instancetype)initWithNavigationCapability:(SDLNavigationCapability *)capability {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.systemCapabilityType = SDLSystemCapabilityTypeNavigation;
- self.navigationCapability = capability;
-
- return self;
-}
-
-- (instancetype)initWithVideoStreamingCapability:(SDLVideoStreamingCapability *)capability {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.systemCapabilityType = SDLSystemCapabilityTypeVideoStreaming;
- self.videoStreamingCapability = capability;
-
- return self;
-}
-
-- (instancetype)initWithRemoteControlCapability:(SDLRemoteControlCapabilities *)capability {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.systemCapabilityType = SDLSystemCapabilityTypeRemoteControl;
- self.remoteControlCapability = capability;
-
- return self;
-}
-
-- (instancetype)initWithDisplayCapabilities:(NSArray<SDLDisplayCapability *> *)capabilities {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.systemCapabilityType = SDLSystemCapabilityTypeDisplays;
- self.displayCapabilities = [capabilities copy];
-
- return self;
-}
-
-- (instancetype)initWithSeatLocationCapability:(SDLSeatLocationCapability *)capability {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.systemCapabilityType = SDLSystemCapabilityTypeSeatLocation;
- self.seatLocationCapability = capability;
-
- return self;
-}
-
-- (void)setSystemCapabilityType:(SDLSystemCapabilityType)type {
- [self.store sdl_setObject:type forName:SDLRPCParameterNameSystemCapabilityType];
-}
-
-- (SDLSystemCapabilityType)systemCapabilityType {
- NSError *error = nil;
- return [self.store sdl_enumForName:SDLRPCParameterNameSystemCapabilityType error:&error];
-}
-
-- (void)setAppServicesCapabilities:(nullable SDLAppServicesCapabilities *)appServicesCapabilities {
- [self.store sdl_setObject:appServicesCapabilities forName:SDLRPCParameterNameAppServicesCapabilities];
-}
-
-- (nullable SDLAppServicesCapabilities *)appServicesCapabilities {
- return [self.store sdl_objectForName:SDLRPCParameterNameAppServicesCapabilities ofClass:SDLAppServicesCapabilities.class error:nil];
-}
-
-- (void)setNavigationCapability:(nullable SDLNavigationCapability *)navigationCapability {
- [self.store sdl_setObject:navigationCapability forName:SDLRPCParameterNameNavigationCapability];
-}
-
-- (nullable SDLNavigationCapability *)navigationCapability {
- return [self.store sdl_objectForName:SDLRPCParameterNameNavigationCapability ofClass:SDLNavigationCapability.class error:nil];
-}
-
-- (void)setPhoneCapability:(nullable SDLPhoneCapability *)phoneCapability {
- [self.store sdl_setObject:phoneCapability forName:SDLRPCParameterNamePhoneCapability];
-}
-
-- (nullable SDLPhoneCapability *)phoneCapability {
- return [self.store sdl_objectForName:SDLRPCParameterNamePhoneCapability ofClass:SDLPhoneCapability.class error:nil];
-}
-
-- (void)setVideoStreamingCapability:(nullable SDLVideoStreamingCapability *)videoStreamingCapability {
- [self.store sdl_setObject:videoStreamingCapability forName:SDLRPCParameterNameVideoStreamingCapability];
-}
-
-- (nullable SDLVideoStreamingCapability *)videoStreamingCapability {
- return [self.store sdl_objectForName:SDLRPCParameterNameVideoStreamingCapability ofClass:SDLVideoStreamingCapability.class error:nil];
-}
-
-- (void)setRemoteControlCapability:(nullable SDLRemoteControlCapabilities *)remoteControlCapability {
- [self.store sdl_setObject:remoteControlCapability forName:SDLRPCParameterNameRemoteControlCapability];
-}
-
-- (nullable SDLRemoteControlCapabilities *)remoteControlCapability {
- return [self.store sdl_objectForName:SDLRPCParameterNameRemoteControlCapability ofClass:SDLRemoteControlCapabilities.class error:nil];
-}
-
-- (void)setSeatLocationCapability:(nullable SDLSeatLocationCapability *)seatLocationCapability {
- [self.store sdl_setObject:seatLocationCapability forName:SDLRPCParameterNameSeatLocationCapability];
-}
-
-- (nullable SDLSeatLocationCapability *)seatLocationCapability {
- return [self.store sdl_objectForName:SDLRPCParameterNameSeatLocationCapability ofClass:SDLSeatLocationCapability.class error:nil];
-}
-
-- (void)setDisplayCapabilities:(nullable NSArray<SDLDisplayCapability *> *)displayCapabilities {
- [self.store sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities];
-}
-
-- (nullable NSArray<SDLDisplayCapability *> *)displayCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapability.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapabilityManager.h b/SmartDeviceLink/SDLSystemCapabilityManager.h
deleted file mode 100644
index ca1c35792..000000000
--- a/SmartDeviceLink/SDLSystemCapabilityManager.h
+++ /dev/null
@@ -1,334 +0,0 @@
-//
-// SDLSystemCapabilityManager.h
-// SmartDeviceLink
-//
-// Created by Nicole on 3/26/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLHMIZoneCapabilities.h"
-#import "SDLPrerecordedSpeech.h"
-#import "SDLSpeechCapabilities.h"
-#import "SDLSystemCapabilityType.h"
-#import "SDLVrCapabilities.h"
-
-@class SDLAppServicesCapabilities;
-@class SDLAudioPassThruCapabilities;
-@class SDLButtonCapabilities;
-@class SDLDisplayCapability;
-@class SDLDisplayCapabilities;
-@class SDLHMICapabilities;
-@class SDLNavigationCapability;
-@class SDLPhoneCapability;
-@class SDLPresetBankCapabilities;
-@class SDLRemoteControlCapabilities;
-@class SDLSeatLocationCapability;
-@class SDLSoftButtonCapabilities;
-@class SDLSystemCapability;
-@class SDLSystemCapabilityManager;
-@class SDLVideoStreamingCapability;
-@class SDLWindowCapability;
-
-@protocol SDLConnectionManagerType;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * A completion handler called after a request for the capability type is returned from the remote system.
- *
- * @param error The error returned if the request for a capability type failed. The error is nil if the request was successful.
- * @param systemCapabilityManager The system capability manager
- */
-typedef void (^SDLUpdateCapabilityHandler)(NSError * _Nullable error, SDLSystemCapabilityManager *systemCapabilityManager);
-
-/**
- An observer block for whenever a subscription is called.
-
- @param capability The capability that was updated.
- */
-typedef void (^SDLCapabilityUpdateHandler)(SDLSystemCapability *capability);
-
-/**
- An observer block for whenever a subscription or value is retrieved.
-
- @param capability The capability that was updated.
- @param subscribed Whether or not the capability was subscribed or if the capability will only be pulled once.
- @param error An error that occurred.
- */
-typedef void (^SDLCapabilityUpdateWithErrorHandler)(SDLSystemCapability * _Nullable capability, BOOL subscribed, NSError * _Nullable error);
-
-/**
- A manager that handles updating and subscribing to SDL capabilities.
- */
-@interface SDLSystemCapabilityManager : NSObject
-
-/**
- * Provides window capabilities of all displays connected with SDL. By default, one display is connected and supported which includes window capability information of the default main window of the display. May be nil if the system has not provided display and window capability information yet.
- *
- * @see SDLDisplayCapability
- *
- * Optional, @since SDL 6.0
- */
-@property (nullable, strong, nonatomic, readonly) NSArray<SDLDisplayCapability *> *displays;
-
-/**
- * @see SDLDisplayCapabilities
- *
- * Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLDisplayCapabilities *displayCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access capabilities of a display/window.");
-
-/**
- * @see SDLHMICapabilities
- *
- * Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLHMICapabilities *hmiCapabilities;
-
-/**
- * If returned, the platform supports on-screen SoftButtons
- *
- * @see SDLSoftButtonCapabilities
- *
- * Optional, Array of length 1 - 100, of SDLSoftButtonCapabilities
- */
-@property (nullable, copy, nonatomic, readonly) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access soft button capabilities of a window.");
-
-/**
- * @see SDLButtonCapabilities
- *
- * Optional, Array of length 1 - 100, of SDLButtonCapabilities
- */
-@property (nullable, copy, nonatomic, readonly) NSArray<SDLButtonCapabilities *> *buttonCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access button capabilities of a window.");
-
-/**
- * If returned, the platform supports custom on-screen Presets
- *
- * @see SDLPresetBankCapabilities
- *
- * Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLPresetBankCapabilities *presetBankCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access preset bank capabilities of a window.");
-
-/**
- * @see SDLHMIZoneCapabilities
- *
- * Optional, Array of length 1 - 100, of SDLHMIZoneCapabilities
- */
-@property (nullable, copy, nonatomic, readonly) NSArray<SDLHMIZoneCapabilities> *hmiZoneCapabilities;
-
-/**
- * @see SDLSpeechCapabilities
- *
- * Optional, Array of length 1 - 100, of SDLSpeechCapabilities
- */
-@property (nullable, copy, nonatomic, readonly) NSArray<SDLSpeechCapabilities> *speechCapabilities;
-
-/**
- * @see SDLPrerecordedSpeech
- *
- * Optional, Array of length 1 - 100, of SDLPrerecordedSpeech
- */
-@property (nullable, copy, nonatomic, readonly) NSArray<SDLPrerecordedSpeech> *prerecordedSpeechCapabilities;
-
-/**
- * @see SDLVRCapabilities
- *
- * True if the head unit supports voice recognition; false if not.
- */
-@property (nonatomic, assign, readonly) BOOL vrCapability;
-
-/**
- * @see SDLAudioPassThruCapabilities
- *
- * Optional, Array of length 1 - 100, of SDLAudioPassThruCapabilities
- */
-@property (nullable, copy, nonatomic, readonly) NSArray<SDLAudioPassThruCapabilities *> *audioPassThruCapabilities;
-
-/**
- * @see SDLAudioPassThruCapabilities
- *
- * Optional, Array of length 1 - 100, of SDLAudioPassThruCapabilities
- */
-@property (nullable, strong, nonatomic, readonly) SDLAudioPassThruCapabilities *pcmStreamCapability;
-
-/**
- * If returned, the platform supports app services
- *
- * @see SDLAppServicesCapabilities
- *
- * Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLAppServicesCapabilities *appServicesCapabilities;
-
-/**
- If returned, the platform supports navigation
-
- @see SDLNavigationCapability
-
- Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLNavigationCapability *navigationCapability;
-
-/**
- If returned, the platform supports making phone calls
-
- @see SDLPhoneCapability
-
- Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLPhoneCapability *phoneCapability;
-
-/**
- If returned, the platform supports video streaming
-
- @see SDLVideoStreamingCapability
-
- Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLVideoStreamingCapability *videoStreamingCapability;
-
-/**
- If returned, the platform supports remote control capabilities
-
- @see SDLRemoteControlCapabilities
-
- Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLRemoteControlCapabilities *remoteControlCapability;
-
-/**
- If returned, the platform supports remote control capabilities for seats
-
- @see SDLSeatLocationCapability
-
- Optional
- */
-@property (nullable, strong, nonatomic, readonly) SDLSeatLocationCapability *seatLocationCapability;
-
-
-/**
- * Returns the window capability object of the default main window which is always pre-created by the connected system. This is a convenience method for easily accessing the capabilities of the default main window.
- *
- * @returns The window capability object representing the default main window capabilities or nil if no window capabilities exist.
- */
-@property (nullable, strong, nonatomic, readonly) SDLWindowCapability *defaultMainWindowCapability;
-
-/**
- YES if subscriptions are available on the connected module and you will automatically be notified if the value changes on the module. If NO, calls to `subscribe` methods will subscribe to updates, but the module will not automatically notify you. You will need to call `updateWithCapabilityType:completionHandler:` to force an update if you need one (though this should be rare). This does not apply to the `DISPLAYS` capability type which you can always subscribe to.
- */
-@property (assign, nonatomic, readonly) BOOL supportsSubscriptions;
-
-/**
- Init is unavailable. Dependencies must be injected using initWithConnectionManager:
-
- @return nil
- */
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- Creates a new system capability manager with a specified connection manager
-
- @param manager A connection manager to use to forward on RPCs
-
- @return An instance of SDLSystemCapabilityManager
- */
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager NS_DESIGNATED_INITIALIZER;
-
-/**
- Starts the manager. This method is used internally.
- */
-- (void)start;
-
-/**
- Stops the manager. This method is used internally.
- */
-- (void)stop;
-
-/**
- * Returns the window capability of one of your app's windows with the specified window ID that is on the primary display (i.e. the head unit itself). This is a convenience method to easily access capabilities of windows such as your apps' widget windows.
- *
- * To get the capabilities of the main window on the main display (i.e. your app's primary app screen on the head unit itself).
- *
- * @param windowID The ID of the window from which to get capabilities
- * @returns The window window capabilities of the window with the specified windowID, or nil if the window is not known or no window capabilities exist.
- */
-- (nullable SDLWindowCapability *)windowCapabilityWithWindowID:(NSUInteger)windowID;
-
-/// Returns whether or not the capability type is supported on the module. You can use this to check if subscribing to the capability will work. If this returns NO, then the feature is not supported by the head unit. If YES, the feature is supported by the head unit. You can subscribe to the capability type to get more information about the capability's support and features on the connected module.
-/// @param type The SystemCapabilityType that will be checked.
-/// @return Whether or not `type` is supported by the connected head unit.
-- (BOOL)isCapabilitySupported:(SDLSystemCapabilityType)type NS_SWIFT_NAME(isCapabilitySupported(type:));
-
-/**
- * This method has been superseded by the `subscribeToCapabilityType:` methods. You should use one of those methods instead unless you only want a value once (you don't want to keep a long-lasting observer) and it must be current (most capabilities do not need to be updated). If you have a separate subscription observer and are connected to a head unit that does not support subscriptions, when this method returns, it will also call all subscription callbacks that you've set up with the new value if there is one. Therefore, you can use this method to force an update to all subscriptions of that particular type on head units that don't support subscriptions (`supportsSubscriptions == NO`).
- *
- * @param type The type of capability to retrieve
- * @param handler The handler to be called when the retrieval is complete
- */
-- (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SDLUpdateCapabilityHandler)handler;
-
-/// Subscribe to a particular capability type using a block callback.
-///
-/// On v5.1.0+ systems (where `supportsSubscriptions == YES`):
-/// This method will be called immediately with the current value if a subscription already exists and will be called every time the value is updated.
-///
-/// On sub-v5.1.0 systems (where `supportsSubscriptions == NO`):
-/// The method will be called immediately with the current value and will _not_ be automatically called every time the value is updated, unless the `type` is `DISPLAYS` which is supported on every version. If `updateCapabilityType:completionHandler` is called and a new value is retrieved, this value will be updated then. If this is the first subscription of this `SDLSystemCapabilityType`, then the value will be retrieved and returned.
-///
-/// @param type The type of capability to subscribe to
-/// @param block The block to be called when the capability is updated
-/// @return An object that can be used to unsubscribe the block using unsubscribeFromCapabilityType:withObserver: by passing it in the observer callback, or nil if the manager can't attempt the subscription for some reason (such as the app being in HMI_NONE and the type is not DISPLAYS).
-- (nullable id<NSObject>)subscribeToCapabilityType:(SDLSystemCapabilityType)type withBlock:(SDLCapabilityUpdateHandler)block __deprecated_msg("use subscribeToCapabilityType:withUpdateHandler: instead");
-
-/// Subscribe to a particular capability type using a handler callback.
-///
-/// On v5.1.0+ systems (where `supportsSubscriptions == YES`):
-/// This method will be called immediately with the current value if a subscription already exists and will be called every time the value is updated.
-///
-/// Note that when the cached value is returned, the `subscribed` flag on the handler will be false until the subscription completes successfully and a new value is retrieved.
-///
-/// On sub-v5.1.0 systems (where `supportsSubscriptions == NO`):
-/// The method will be called immediately with the current value and will _not_ be automatically called every time the value is updated, unless the `type` is `DISPLAYS` which is supported on every version. If `updateCapabilityType:completionHandler` is called and a new value is retrieved, this value will be updated then. If this is the first subscription of this `SDLSystemCapabilityType`, then the value will be retrieved and returned.
-///
-/// @param type The type of capability to subscribe to
-/// @param handler The block to be called when the capability is updated with an error if one occurs
-/// @return An object that can be used to unsubscribe the block using unsubscribeFromCapabilityType:withObserver: by passing it in the observer callback, or nil if the manager can't attempt the subscription for some reason (such as the app being in HMI_NONE and the type is not DISPLAYS).
-- (nullable id<NSObject>)subscribeToCapabilityType:(SDLSystemCapabilityType)type withUpdateHandler:(SDLCapabilityUpdateWithErrorHandler)handler NS_SWIFT_NAME(subscribe(capabilityType:updateHandler:));
-
-
-/// Subscribe to a particular capability type with a selector callback.
-///
-/// The selector supports the following parameters:
-///
-/// 1. No parameters e.g. `- (void)phoneCapabilityUpdated;`
-///
-/// 2. One `SDLSystemCapability *` parameter, e.g. `- (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability`
-///
-/// 3. Two parameters, one `SDLSystemCapability *` parameter, and one `NSError` parameter, e.g. `- (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability error:(NSError *)error`
-///
-/// 4. Three parameters, one `SDLSystemCapability *` parameter, one `NSError` parameter, and one `BOOL` parameter e.g. `- (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability error:(NSError *)error subscribed:(BOOL)subscribed`
-///
-/// On v5.1.0+ systems (where `supportsSubscriptions == YES`):
-/// This method will be called immediately with the current value if a subscription already exists and will be called every time the value is updated.
-///
-/// On sub-v5.1.0 systems (where `supportsSubscriptions == NO`):
-/// The method will be called immediately with the current value and will _not_ be automatically called every time the value is updated, unless the `type` is `DISPLAYS` which is supported on every version. If `updateCapabilityType:completionHandler` is called and a new value is retrieved, this value will be updated then. If this is the first subscription of this `SDLSystemCapabilityType`, then the value will be retrieved and returned.
-///
-/// @param type The type of the system capability to subscribe to
-/// @param observer The object that will have `selector` called whenever the capability is updated
-/// @param selector The selector on `observer` that will be called whenever the capability is updated
-/// @return YES if the manager is attempting the subscription, or NO if the manager can't attempt the subscription for some reason (such as the app being in HMI_NONE and the type is not DISPLAYS), or the selector doesn't contain the correct number of parameters.
-- (BOOL)subscribeToCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer selector:(SEL)selector;
-
-/// Unsubscribe from a particular capability type. If it was subscribed with a block / handler, the return value should be passed to the `observer` to unsubscribe the block. If it was subscribed with a selector, the `observer` object (on which the selector exists and is called) should be passed to unsubscribe the object selector.
-///
-/// @param type The type of the system capability to unsubscribe from
-/// @param observer The object that will be unsubscribed. If a block was subscribed, the return value should be passed. If a selector was subscribed, the observer object should be passed.
-- (void)unsubscribeFromCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapabilityManager.m b/SmartDeviceLink/SDLSystemCapabilityManager.m
deleted file mode 100644
index e5817b9d7..000000000
--- a/SmartDeviceLink/SDLSystemCapabilityManager.m
+++ /dev/null
@@ -1,838 +0,0 @@
-//
-// SDLSystemCapabilityManager.m
-// SmartDeviceLink
-//
-// Created by Nicole on 3/26/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLSystemCapabilityManager.h"
-
-#import "SDLAppServiceCapability.h"
-#import "SDLAppServiceRecord.h"
-#import "SDLAppServicesCapabilities.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLDisplayCapabilities.h"
-#import "SDLDisplayCapability.h"
-#import "SDLError.h"
-#import "SDLGenericResponse.h"
-#import "SDLGetSystemCapability.h"
-#import "SDLGetSystemCapabilityResponse.h"
-#import "SDLGlobals.h"
-#import "SDLHMICapabilities.h"
-#import "SDLImageField+ScreenManagerExtensions.h"
-#import "SDLLogMacros.h"
-#import "SDLNavigationCapability.h"
-#import "SDLNotificationConstants.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLOnSystemCapabilityUpdated.h"
-#import "SDLPhoneCapability.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLRemoteControlCapabilities.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLSeatLocationCapability.h"
-#import "SDLSetDisplayLayoutResponse.h"
-#import "SDLSystemCapability.h"
-#import "SDLSystemCapabilityObserver.h"
-#import "SDLTextField+ScreenManagerExtensions.h"
-#import "SDLTextFieldName.h"
-#import "SDLVersion.h"
-#import "SDLVideoStreamingCapability.h"
-#import "SDLWindowCapability.h"
-#import "SDLWindowTypeCapabilities.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLSystemCapabilityManager ()
-
-typedef NSString * SDLServiceID;
-
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-
-@property (nullable, strong, nonatomic, readwrite) NSArray<SDLDisplayCapability *> *displays;
-@property (nullable, strong, nonatomic, readwrite) SDLDisplayCapabilities *displayCapabilities;
-@property (nullable, strong, nonatomic, readwrite) SDLHMICapabilities *hmiCapabilities;
-@property (nullable, copy, nonatomic, readwrite) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
-@property (nullable, copy, nonatomic, readwrite) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
-@property (nullable, strong, nonatomic, readwrite) SDLPresetBankCapabilities *presetBankCapabilities;
-@property (nullable, copy, nonatomic, readwrite) NSArray<SDLHMIZoneCapabilities> *hmiZoneCapabilities;
-@property (nullable, copy, nonatomic, readwrite) NSArray<SDLSpeechCapabilities> *speechCapabilities;
-@property (nullable, copy, nonatomic, readwrite) NSArray<SDLPrerecordedSpeech> *prerecordedSpeechCapabilities;
-@property (nonatomic, assign, readwrite) BOOL vrCapability;
-@property (nullable, copy, nonatomic, readwrite) NSArray<SDLAudioPassThruCapabilities *> *audioPassThruCapabilities;
-@property (nullable, strong, nonatomic, readwrite) SDLAudioPassThruCapabilities *pcmStreamCapability;
-@property (nullable, strong, nonatomic, readwrite) SDLNavigationCapability *navigationCapability;
-@property (nullable, strong, nonatomic, readwrite) SDLPhoneCapability *phoneCapability;
-@property (nullable, strong, nonatomic, readwrite) SDLVideoStreamingCapability *videoStreamingCapability;
-@property (nullable, strong, nonatomic, readwrite) SDLRemoteControlCapabilities *remoteControlCapability;
-@property (nullable, strong, nonatomic, readwrite) SDLSeatLocationCapability *seatLocationCapability;
-
-@property (nullable, strong, nonatomic) NSMutableDictionary<SDLServiceID, SDLAppServiceCapability *> *appServicesCapabilitiesDictionary;
-
-@property (assign, nonatomic, readwrite) BOOL supportsSubscriptions;
-@property (strong, nonatomic) NSMutableDictionary<SDLSystemCapabilityType, NSMutableArray<SDLSystemCapabilityObserver *> *> *capabilityObservers;
-@property (strong, nonatomic) NSMutableDictionary<SDLSystemCapabilityType, NSNumber<SDLBool> *> *subscriptionStatus;
-
-@property (assign, nonatomic) BOOL shouldConvertDeprecatedDisplayCapabilities;
-@property (strong, nonatomic) SDLHMILevel currentHMILevel;
-
-@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
-
-@end
-
-@implementation SDLSystemCapabilityManager
-
-#pragma mark - Lifecycle
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- if (@available(iOS 10.0, *)) {
- _readWriteQueue = dispatch_queue_create_with_target("com.sdl.systemCapabilityManager.readWriteQueue", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
- } else {
- _readWriteQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
- }
-
- _connectionManager = manager;
- _shouldConvertDeprecatedDisplayCapabilities = YES;
- _appServicesCapabilitiesDictionary = [NSMutableDictionary dictionary];
-
- _capabilityObservers = [NSMutableDictionary dictionary];
- _subscriptionStatus = [NSMutableDictionary dictionary];
-
- _currentHMILevel = SDLHMILevelNone;
-
- [self sdl_registerForNotifications];
-
- return self;
-}
-
-- (void)start { }
-
-/**
- * Resets the capabilities when a transport session is closed.
- */
-- (void)stop {
- SDLLogD(@"System Capability manager stopped");
- [self sdl_runSyncOnQueue:^{
- self.displayCapabilities = nil;
- self.displays = nil;
- self.hmiCapabilities = nil;
- self.softButtonCapabilities = nil;
- self.buttonCapabilities = nil;
- self.presetBankCapabilities = nil;
- self.hmiZoneCapabilities = nil;
- self.speechCapabilities = nil;
- self.prerecordedSpeechCapabilities = nil;
- self.vrCapability = NO;
- self.audioPassThruCapabilities = nil;
- self.pcmStreamCapability = nil;
- self.navigationCapability = nil;
- self.phoneCapability = nil;
- self.videoStreamingCapability = nil;
- self.remoteControlCapability = nil;
- self.seatLocationCapability = nil;
-
- self.supportsSubscriptions = NO;
-
- self.appServicesCapabilitiesDictionary = [NSMutableDictionary dictionary];
- [self.capabilityObservers removeAllObjects];
- [self.subscriptionStatus removeAllObjects];
-
- self.currentHMILevel = SDLHMILevelNone;
- self.shouldConvertDeprecatedDisplayCapabilities = YES;
- }];
-}
-
-#pragma mark - Getters
-
-- (BOOL)supportsSubscriptions {
- return [[SDLGlobals sharedGlobals].rpcVersion isGreaterThanOrEqualToVersion:[SDLVersion versionWithString:@"5.1.0"]];
-}
-
-- (nullable SDLAppServicesCapabilities *)appServicesCapabilities {
- if (self.appServicesCapabilitiesDictionary.count == 0) { return nil; }
-
- return [[SDLAppServicesCapabilities alloc] initWithAppServices:self.appServicesCapabilitiesDictionary.allValues];
-}
-
-#pragma mark - Window And Display Capabilities
-
-- (nullable SDLWindowCapability *)windowCapabilityWithWindowID:(NSUInteger)windowID {
- NSArray<SDLDisplayCapability *> *capabilities = self.displays;
- if (capabilities == nil || capabilities.count == 0) {
- return nil;
- }
-
- SDLDisplayCapability *mainDisplay = capabilities.firstObject;
- for (SDLWindowCapability *windowCapability in mainDisplay.windowCapabilities) {
- NSUInteger currentWindowID = windowCapability.windowID != nil ? windowCapability.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
- if (currentWindowID == windowID) {
- return windowCapability;
- }
- }
- return nil;
-}
-
-- (nullable SDLWindowCapability *)defaultMainWindowCapability {
- return [self windowCapabilityWithWindowID:SDLPredefinedWindowsDefaultWindow];
-}
-
-#pragma mark Convert Deprecated to New
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
-/// Convert the capabilities from a `RegisterAppInterfaceResponse` into a new-style `DisplayCapability` for the main display.
-/// @param rpc The `RegisterAppInterfaceResponse` RPC
-- (NSArray<SDLDisplayCapability *> *)sdl_createDisplayCapabilityListFromRegisterResponse:(SDLRegisterAppInterfaceResponse *)rpc {
- return [self sdl_createDisplayCapabilityListFromDeprecatedDisplayCapabilities:rpc.displayCapabilities buttons:rpc.buttonCapabilities softButtons:rpc.softButtonCapabilities];
-}
-
-- (NSArray<SDLDisplayCapability *> *)sdl_createDisplayCapabilityListFromSetDisplayLayoutResponse:(SDLSetDisplayLayoutResponse *)rpc {
- return [self sdl_createDisplayCapabilityListFromDeprecatedDisplayCapabilities:rpc.displayCapabilities buttons:rpc.buttonCapabilities softButtons:rpc.softButtonCapabilities];
-}
-#pragma clang diagnostic pop
-
-/// Creates a "new-style" display capability from the "old-style" `SDLDisplayCapabilities` object and other "old-style" objects that were returned in `RegisterAppInterfaceResponse` and `SetDisplayLayoutResponse`
-/// @param display The old-style `SDLDisplayCapabilities` object to convert
-/// @param buttons The old-style `SDLButtonCapabilities` object to convert
-/// @param softButtons The old-style `SDLSoftButtonCapabilities` to convert
-- (NSArray<SDLDisplayCapability *> *)sdl_createDisplayCapabilityListFromDeprecatedDisplayCapabilities:(SDLDisplayCapabilities *)display buttons:(NSArray<SDLButtonCapabilities *> *)buttons softButtons:(NSArray<SDLSoftButtonCapabilities *> *)softButtons {
- SDLLogV(@"Creating display capability from deprecated display capabilities");
- // Based on deprecated Display capabilities we don't know if widgets are supported. The default MAIN window is the only window we know is supported, so it's the only one we will expose.
- SDLWindowTypeCapabilities *windowTypeCapabilities = [[SDLWindowTypeCapabilities alloc] initWithType:SDLWindowTypeMain maximumNumberOfWindows:1];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- NSString *displayName = display.displayName ?: display.displayType;
-#pragma clang diagnostic pop
- SDLDisplayCapability *displayCapability = [[SDLDisplayCapability alloc] initWithDisplayName:displayName];
- displayCapability.windowTypeSupported = @[windowTypeCapabilities];
-
- // Create a window capability object for the default MAIN window
- SDLWindowCapability *defaultWindowCapability = [[SDLWindowCapability alloc] init];
- defaultWindowCapability.windowID = @(SDLPredefinedWindowsDefaultWindow);
- defaultWindowCapability.buttonCapabilities = [buttons copy];
- defaultWindowCapability.softButtonCapabilities = [softButtons copy];
-
- // return if display capabilities don't exist.
- if (display == nil) {
- defaultWindowCapability.textFields = [SDLTextField allTextFields];
- defaultWindowCapability.imageFields = [SDLImageField allImageFields];
- displayCapability.windowCapabilities = @[defaultWindowCapability];
- return @[displayCapability];
- }
-
- // Copy all available display capability properties
- defaultWindowCapability.templatesAvailable = [display.templatesAvailable copy];
- defaultWindowCapability.numCustomPresetsAvailable = [display.numCustomPresetsAvailable copy];
- defaultWindowCapability.textFields = [display.textFields copy];
- defaultWindowCapability.imageFields = [display.imageFields copy];
-
- /*
- The description from the mobile API to "graphicSupported:
- > The display's persistent screen supports referencing a static or dynamic image.
- For backward compatibility (AppLink 2.0) static image type is always presented
- */
- if (display.graphicSupported.boolValue) {
- defaultWindowCapability.imageTypeSupported = @[SDLImageTypeStatic, SDLImageTypeDynamic];
- } else {
- defaultWindowCapability.imageTypeSupported = @[SDLImageTypeStatic];
- }
-
- displayCapability.windowCapabilities = @[defaultWindowCapability];
- return @[displayCapability];
-}
-
-#pragma mark Convert New to Deprecated
-
-/// Update the internal deprecated display capability methods with new values based on the current value of the default main window capability and the primary display
-- (void)sdl_updateDeprecatedDisplayCapabilities {
- SDLLogV(@"Updating deprecated capabilities from default main window capabilities");
- SDLWindowCapability *defaultMainWindowCapabilities = self.defaultMainWindowCapability;
- if (self.displays.count == 0) {
- return;
- }
-
- // Create the deprecated capabilities for backward compatibility if developers try to access them
- SDLDisplayCapabilities *convertedCapabilities = [[SDLDisplayCapabilities alloc] init];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- convertedCapabilities.displayType = SDLDisplayTypeGeneric; // deprecated but it is mandatory
-#pragma clang diagnostic pop
- convertedCapabilities.displayName = self.displays.firstObject.displayName;
- convertedCapabilities.textFields = [defaultMainWindowCapabilities.textFields copy];
- convertedCapabilities.imageFields = [defaultMainWindowCapabilities.imageFields copy];
- convertedCapabilities.templatesAvailable = [defaultMainWindowCapabilities.templatesAvailable copy];
- convertedCapabilities.numCustomPresetsAvailable = [defaultMainWindowCapabilities.numCustomPresetsAvailable copy];
- convertedCapabilities.mediaClockFormats = @[]; // mandatory field but allows empty array
- convertedCapabilities.graphicSupported = @([defaultMainWindowCapabilities.imageTypeSupported containsObject:SDLImageTypeDynamic]);
-
- self.displayCapabilities = convertedCapabilities;
- self.buttonCapabilities = defaultMainWindowCapabilities.buttonCapabilities;
- self.softButtonCapabilities = defaultMainWindowCapabilities.softButtonCapabilities;
-}
-
-#pragma mark - System Capability Updates
-
-- (BOOL)isCapabilitySupported:(SDLSystemCapabilityType)type {
- if ([self sdl_cachedCapabilityForType:type] != nil) {
- return YES;
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypePhoneCall]) {
- return self.hmiCapabilities.phoneCall.boolValue;
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeNavigation]) {
- return self.hmiCapabilities.navigation.boolValue;
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
- return self.hmiCapabilities.displays.boolValue;
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeRemoteControl]) {
- return self.hmiCapabilities.remoteControl.boolValue;
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeSeatLocation]) {
- return self.hmiCapabilities.seatLocation.boolValue;
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeAppServices]) {
- //This is a corner case that the param was not available in 5.1.0, but the app services feature was available. We have to say it's available because we don't know.
- if ([[SDLGlobals sharedGlobals].rpcVersion isEqualToVersion:[SDLVersion versionWithString:@"5.1.0"]]) {
- return YES;
- }
-
- return self.hmiCapabilities.appServices.boolValue;
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming]) {
- if ([[SDLGlobals sharedGlobals].rpcVersion isGreaterThanOrEqualToVersion:[SDLVersion versionWithString:@"3.0.0"]] && [[SDLGlobals sharedGlobals].rpcVersion isLessThanOrEqualToVersion:[SDLVersion versionWithString:@"4.4.0"]]) {
- // This was before the system capability feature was added so check if graphics are supported instead using the deprecated display capabilities
- return self.displayCapabilities.graphicSupported.boolValue;
- }
-
- return self.hmiCapabilities.videoStreaming.boolValue;
- } else {
- return NO;
- }
-
-
- return NO;
-}
-
-- (nullable SDLSystemCapability *)sdl_cachedCapabilityForType:(SDLSystemCapabilityType)type {
- if ([type isEqualToEnum:SDLSystemCapabilityTypePhoneCall] && self.phoneCapability != nil) {
- return [[SDLSystemCapability alloc] initWithPhoneCapability:self.phoneCapability];
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeNavigation] && self.navigationCapability != nil) {
- return [[SDLSystemCapability alloc] initWithNavigationCapability:self.navigationCapability];
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeAppServices] && self.appServicesCapabilities != nil) {
- return [[SDLSystemCapability alloc] initWithAppServicesCapabilities:self.appServicesCapabilities];
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDisplays] && self.displays != nil) {
- return [[SDLSystemCapability alloc] initWithDisplayCapabilities:self.displays];
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeSeatLocation] && self.seatLocationCapability != nil) {
- return [[SDLSystemCapability alloc] initWithSeatLocationCapability:self.seatLocationCapability];
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeRemoteControl] && self.remoteControlCapability != nil) {
- return [[SDLSystemCapability alloc] initWithRemoteControlCapability:self.remoteControlCapability];
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming] && self.videoStreamingCapability != nil) {
- return [[SDLSystemCapability alloc] initWithVideoStreamingCapability:self.videoStreamingCapability];
- } else {
- return nil;
- }
-}
-
-- (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SDLUpdateCapabilityHandler)handler {
- SDLLogV(@"Updating capability type: %@", type);
- if ([self.currentHMILevel isEqualToEnum:SDLHMILevelNone] && ![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
- SDLLogE(@"Attempted to update type: %@ in HMI level NONE, which is not allowed. Please wait until you are in HMI BACKGROUND, LIMITED, or FULL before attempting to update any SystemCapabilityType DISPLAYS.", type);
- return handler([NSError sdl_systemCapabilityManager_cannotUpdateInHMINONE], self);
- } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
- SDLLogE(@"Attempted to update type DISPLAYS, which is not allowed. You are always subscribed to displays, please either pull the cached data directly or subscribe for updates to DISPLAYS.");
- return handler([NSError sdl_systemCapabilityManager_cannotUpdateTypeDISPLAYS], self);
- }
-
- // If we support subscriptions and we're already subscribed
- if (self.supportsSubscriptions && [self.subscriptionStatus[type] isEqualToNumber:@YES]) {
- // Just return the cached data because we get `onSystemCapability` callbacks
- handler(nil, self);
- } else {
- // Go and get the actual data
- __weak typeof(self) weakself = self;
- [self sdl_sendGetSystemCapabilityWithType:type subscribe:nil completionHandler:^(SDLSystemCapability * _Nonnull capability, BOOL subscribed, NSError * _Nonnull error) {
- handler(error, weakself);
- }];
- }
-}
-
-# pragma mark Subscribing
-
-/// Sends a GetSystemCapability and sends back the response
-/// @param type The type to get
-/// @param subscribe Whether to change the subscription status. YES to subscribe, NO to unsubscribe, nil to keep whatever the current state is
-/// @param handler The handler to be returned
-- (void)sdl_sendGetSystemCapabilityWithType:(SDLSystemCapabilityType)type subscribe:(nullable NSNumber<SDLBool> *)subscribe completionHandler:(nullable SDLCapabilityUpdateWithErrorHandler)handler {
- SDLLogV(@"Sending GetSystemCapability with type: %@, subscribe: %@", type, subscribe);
- SDLGetSystemCapability *getSystemCapability = [[SDLGetSystemCapability alloc] initWithType:type];
- getSystemCapability.subscribe = subscribe;
-
- __weak typeof(self) weakself = self;
- [self.connectionManager sendConnectionRequest:getSystemCapability withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- if (![response isKindOfClass:[SDLGetSystemCapabilityResponse class]]) {
- SDLLogE(@"GetSystemCapability failed, type: %@, did not return a GetSystemCapability response", type);
- if (handler == nil) { return; }
- handler(nil, NO, [NSError sdl_systemCapabilityManager_moduleDoesNotSupportSystemCapabilities]);
- return;
- }
-
- if (response.success.boolValue == false) {
- SDLLogE(@"GetSystemCapability failed, type: %@, error: %@", type, error);
- if (handler == nil) { return; }
- handler(nil, NO, error);
- return;
- }
-
- SDLGetSystemCapabilityResponse *getSystemCapabilityResponse = (SDLGetSystemCapabilityResponse *)response;
- SDLLogD(@"GetSystemCapability response succeeded, type: %@, response: %@", type, getSystemCapabilityResponse);
-
- if (![weakself.subscriptionStatus[type] isEqualToNumber:subscribe] && weakself.supportsSubscriptions) {
- [self sdl_runSyncOnQueue:^{
- weakself.subscriptionStatus[type] = subscribe;
- }];
- }
-
- [weakself sdl_saveSystemCapability:getSystemCapabilityResponse.systemCapability error:error completionHandler:handler];
- }];
-}
-
-#pragma mark Saving Capability Responses
-
-/**
- Saves a system capability. All system capabilities will update with the full object except for app services. For app services only the updated app service capabilities will be included in the `SystemCapability` sent from Core. The cached `appServicesCapabilities` will be updated with the new `appService` data.
-
- @param systemCapability The system capability to be saved
- @param handler The handler to be called when the save completes
- @return Whether or not the save occurred. This can be `NO` if the new system capability is equivalent to the old capability.
- */
-- (BOOL)sdl_saveSystemCapability:(nullable SDLSystemCapability *)systemCapability error:(nullable NSError *)error completionHandler:(nullable SDLCapabilityUpdateWithErrorHandler)handler {
- SDLLogV(@"Saving system capability type: %@", systemCapability);
-
- SDLSystemCapabilityType systemCapabilityType = systemCapability.systemCapabilityType;
-
- if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypePhoneCall]) {
- if ([self.phoneCapability isEqual:systemCapability.phoneCapability]) {
- [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
- return NO;
- }
- self.phoneCapability = systemCapability.phoneCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeNavigation]) {
- if ([self.navigationCapability isEqual:systemCapability.navigationCapability]) {
- [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
- return NO;
- }
- self.navigationCapability = systemCapability.navigationCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeRemoteControl]) {
- if ([self.remoteControlCapability isEqual:systemCapability.remoteControlCapability]) {
- [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
- return NO;
- }
- self.remoteControlCapability = systemCapability.remoteControlCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeSeatLocation]) {
- if ([self.seatLocationCapability isEqual:systemCapability.seatLocationCapability]) {
- [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
- return NO;
- }
- self.seatLocationCapability = systemCapability.seatLocationCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming]) {
- if ([self.videoStreamingCapability isEqual:systemCapability.videoStreamingCapability]) {
- [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
- return NO;
- }
- self.videoStreamingCapability = systemCapability.videoStreamingCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeAppServices]) {
- [self sdl_saveAppServicesCapabilitiesUpdate:systemCapability.appServicesCapabilities];
- systemCapability = [[SDLSystemCapability alloc] initWithAppServicesCapabilities:self.appServicesCapabilities];
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
- self.shouldConvertDeprecatedDisplayCapabilities = NO;
- [self sdl_saveDisplayCapabilityListUpdate:systemCapability.displayCapabilities];
- } else {
- SDLLogW(@"Received response for unknown System Capability Type: %@", systemCapabilityType);
- return NO;
- }
-
- SDLLogD(@"Updated system capability manager with new data: %@", systemCapability);
-
- [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
- return YES;
-}
-
-#pragma mark Merge Capability Deltas
-
-- (void)sdl_saveAppServicesCapabilitiesUpdate:(SDLAppServicesCapabilities *)newCapabilities {
- SDLLogV(@"Saving app services capability update with new capabilities: %@", newCapabilities);
- for (SDLAppServiceCapability *capability in newCapabilities.appServices) {
- // If the capability has been removed, delete the saved capability; otherwise just update with the new capability
- SDLAppServiceCapability *newCapability = [capability.updateReason isEqualToEnum:SDLServiceUpdateRemoved] ? nil : capability;
- [self sdl_runSyncOnQueue:^{
- self.appServicesCapabilitiesDictionary[capability.updatedAppServiceRecord.serviceID] = newCapability;
- }];
- }
-}
-
-/// Save a new new-style `DisplayCapability` update (only contains the delta) that was received by merging it with the existing version.
-/// @param newCapabilities The new `DisplayCapability` update delta.
-- (void)sdl_saveDisplayCapabilityListUpdate:(NSArray<SDLDisplayCapability *> *)newCapabilities {
- NSArray<SDLDisplayCapability *> *oldCapabilities = self.displays;
- SDLLogV(@"Saving display capability update with new capabilities: %@", newCapabilities);
-
- if (oldCapabilities == nil) {
- self.displays = newCapabilities;
- [self sdl_updateDeprecatedDisplayCapabilities];
- return;
- }
-
- SDLDisplayCapability *oldDefaultDisplayCapabilities = oldCapabilities.firstObject;
- NSMutableArray<SDLWindowCapability *> *copyWindowCapabilities = [oldDefaultDisplayCapabilities.windowCapabilities mutableCopy];
-
- SDLDisplayCapability *newDefaultDisplayCapabilities = newCapabilities.firstObject;
- NSArray<SDLWindowCapability *> *newWindowCapabilities = newDefaultDisplayCapabilities.windowCapabilities;
-
- for (SDLWindowCapability *newWindow in newWindowCapabilities) {
- BOOL oldFound = NO;
- for (NSUInteger i = 0; i < copyWindowCapabilities.count; i++) {
- SDLWindowCapability *oldWindow = copyWindowCapabilities[i];
- NSUInteger newWindowID = newWindow.windowID ? newWindow.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
- NSUInteger oldWindowID = oldWindow.windowID ? oldWindow.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
-
- if (newWindowID == oldWindowID) {
- // Replace the old window caps with new ones
- copyWindowCapabilities[i] = newWindow;
- oldFound = true;
- break;
- }
- }
-
- if (!oldFound) {
- // This is a new unknown window
- [copyWindowCapabilities addObject:newWindow];
- }
- }
-
- // replace the window capabilities array with the merged one.
- newDefaultDisplayCapabilities.windowCapabilities = [copyWindowCapabilities copy];
- self.displays = @[newDefaultDisplayCapabilities];
- [self sdl_updateDeprecatedDisplayCapabilities];
-}
-
-#pragma mark - Manager Subscriptions
-
-#pragma mark Subscribing
-
-- (nullable id<NSObject>)subscribeToCapabilityType:(SDLSystemCapabilityType)type withBlock:(SDLCapabilityUpdateHandler)block {
- SDLLogD(@"Subscribing to capability type: %@ with a handler (DEPRECATED)", type);
- SDLSystemCapabilityObserver *observerObject = [[SDLSystemCapabilityObserver alloc] initWithObserver:[[NSObject alloc] init] block:block];
-
- id<NSObject> subscribedObserver = [self sdl_subscribeToCapabilityType:type observerObject:observerObject];
- return subscribedObserver;
-}
-
-- (nullable id<NSObject>)subscribeToCapabilityType:(SDLSystemCapabilityType)type withUpdateHandler:(SDLCapabilityUpdateWithErrorHandler)handler {
- SDLLogD(@"Subscribing to capability type: %@ with a handler", type);
- SDLSystemCapabilityObserver *observerObject = [[SDLSystemCapabilityObserver alloc] initWithObserver:[[NSObject alloc] init] updateHandler:handler];
-
- id<NSObject> subscribedObserver = [self sdl_subscribeToCapabilityType:type observerObject:observerObject];
- return subscribedObserver;
-}
-
-- (BOOL)subscribeToCapabilityType:(SDLSystemCapabilityType)type withObserver:(id<NSObject>)observer selector:(SEL)selector {
- SDLLogD(@"Subscribing to capability type: %@, with observer: %@, selector: %@", type, observer, NSStringFromSelector(selector));
- NSUInteger numberOfParametersInSelector = [NSStringFromSelector(selector) componentsSeparatedByString:@":"].count - 1;
- if (numberOfParametersInSelector > 3) {
- SDLLogE(@"Attempted to subscribe to a capability using a selector that contains more than 3 parameters.");
- return NO;
- }
-
- if (observer == nil) {
- SDLLogE(@"Attempted to subscribe to type: %@ with a selector on a *nil* observer, which will always fail.", type);
- return NO;
- }
-
- SDLSystemCapabilityObserver *observerObject = [[SDLSystemCapabilityObserver alloc] initWithObserver:observer selector:selector];
-
- id<NSObject> subscribedObserver = [self sdl_subscribeToCapabilityType:type observerObject:observerObject];
- return subscribedObserver == nil ? NO : YES;
-}
-
-/// Helper method for subscribing to a system capability type
-/// @param type The SystemCapabilityType that will be subscribed
-/// @param observerObject An object that can be used to unsubscribe the block. If nil, the subscription was not succesful.
-/// @return The observer if the subscription was succesful; nil if not.
-- (nullable id<NSObject>)sdl_subscribeToCapabilityType:(SDLSystemCapabilityType)type observerObject:(SDLSystemCapabilityObserver *)observerObject {
- if ([self.currentHMILevel isEqualToEnum:SDLHMILevelNone] && ![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
- SDLLogE(@"Attempted to subscribe to type: %@ in HMI level NONE, which is not allowed. Please wait until you are in HMI BACKGROUND, LIMITED, or FULL before attempting to subscribe to any SystemCapabilityType other than DISPLAYS.", type);
- [self sdl_invokeObserver:observerObject withCapabilityType:type capability:nil error:[NSError sdl_systemCapabilityManager_cannotUpdateInHMINONE]];
- return nil;
- }
-
- if (self.capabilityObservers[type] == nil) {
- SDLLogD(@"This is the first subscription to capability type: %@, sending a GetSystemCapability with subscribe true", type);
-
- [self sdl_runSyncOnQueue:^{
- self.capabilityObservers[type] = [NSMutableArray arrayWithObject:observerObject];
- }];
-
- // We don't want to send this for the displays type because that's automatically subscribed
- if (![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
- [self sdl_sendGetSystemCapabilityWithType:type subscribe:@YES completionHandler:nil];
- } else {
- // If we're not calling the GSC RPC we should invoke the observer with the cached data
- [self sdl_invokeObserver:observerObject withCapabilityType:type capability:[self sdl_cachedCapabilityForType:type] error:nil];
- }
- } else {
- // Store the observer and call it immediately with the cached value
- [self sdl_runSyncOnQueue:^{
- [self.capabilityObservers[type] addObject:observerObject];
- }];
-
- [self sdl_invokeObserver:observerObject withCapabilityType:type capability:[self sdl_cachedCapabilityForType:type] error:nil];
- }
-
- return observerObject.observer;
-}
-
-#pragma mark Unubscribing
-
-- (void)unsubscribeFromCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer {
- SDLLogD(@"Unsubscribing from capability type: %@", type);
- for (SDLSystemCapabilityObserver *capabilityObserver in self.capabilityObservers[type]) {
- if ([observer isEqual:capabilityObserver.observer] && self.capabilityObservers[type] != nil) {
- [self sdl_runSyncOnQueue:^{
- [self.capabilityObservers[type] removeObject:capabilityObserver];
- }];
-
- [self sdl_removeNilObserversAndUnsubscribeIfNecessary];
- break;
- }
- }
-}
-
-- (void)sdl_removeNilObserversAndUnsubscribeIfNecessary {
- SDLLogV(@"Checking for nil observers and removing them, then checking for subscriptions we don't need and unsubscribing.");
- // Loop through our observers
- for (SDLSystemCapabilityType key in self.capabilityObservers.allKeys) {
- for (SDLSystemCapabilityObserver *observer in self.capabilityObservers[key]) {
- [self sdl_runSyncOnQueue:^{
- // If an observer object is nil, remove it
- if (observer.observer == nil) {
- [self.capabilityObservers[key] removeObject:observer];
- }
-
- // If we no longer have any observers for that type, remove the array
- if (self.capabilityObservers[key].count == 0) {
- [self.capabilityObservers removeObjectForKey:key];
- }
- }];
- }
- }
-
- // If we don't support subscriptions, we don't want to unsubscribe by sending an RPC below
- if (!self.supportsSubscriptions) {
- return;
- }
-
- // Loop through our subscription statuses, check if we're subscribed. If we are, and we do not have observers for that type, and that type is not DISPLAYS, then unsubscribe.
- for (SDLSystemCapabilityType type in self.subscriptionStatus.allKeys) {
- if ([self.subscriptionStatus[type] isEqualToNumber:@YES]
- && self.capabilityObservers[type] == nil
- && ![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
- SDLLogD(@"Removing the last subscription to type %@, sending a GetSystemCapability with subscribe false (will unsubscribe)", type);
- [self sdl_sendGetSystemCapabilityWithType:type subscribe:@NO completionHandler:nil];
- }
- }
-}
-
-#pragma mark Notifying Subscribers
-
-/// Calls all observers of a capability type with an updated capability
-/// @param capability The new capability update
-/// @param handler The update handler to call, if one exists after the observers are called
-- (void)sdl_callObserversForUpdate:(nullable SDLSystemCapability *)capability error:(nullable NSError *)error handler:(nullable SDLCapabilityUpdateWithErrorHandler)handler {
- SDLSystemCapabilityType type = capability.systemCapabilityType;
- SDLLogV(@"Calling observers for type: %@ with update: %@", type, capability);
-
- [self sdl_removeNilObserversAndUnsubscribeIfNecessary];
-
- for (SDLSystemCapabilityObserver *observer in self.capabilityObservers[type]) {
- [self sdl_invokeObserver:observer withCapabilityType:type capability:capability error:error];
- }
-
- if (handler == nil) { return; }
- handler(capability, self.subscriptionStatus[type].boolValue, error);
-}
-
-- (void)sdl_invokeObserver:(SDLSystemCapabilityObserver *)observer withCapabilityType:(SDLSystemCapabilityType)type capability:(nullable SDLSystemCapability *)capability error:(nullable NSError *)error {
- BOOL subscribed = self.subscriptionStatus[type].boolValue || [type isEqualToEnum:SDLSystemCapabilityTypeDisplays];
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- if (observer.block != nil) {
- observer.block(capability);
-#pragma clang diagnostic pop
- } else if (observer.updateBlock != nil) {
- observer.updateBlock(capability, subscribed, error);
- } else {
- if (![observer.observer respondsToSelector:observer.selector]) {
- @throw [NSException sdl_invalidSystemCapabilitySelectorExceptionWithSelector:observer.selector];
- }
-
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[(NSObject *)observer.observer methodSignatureForSelector:observer.selector]];
- [invocation setSelector:observer.selector];
- [invocation setTarget:observer.observer];
-
- NSUInteger numberOfParametersInSelector = [NSStringFromSelector(observer.selector) componentsSeparatedByString:@":"].count - 1;
- if (numberOfParametersInSelector >= 1) {
- [invocation setArgument:&capability atIndex:2];
- }
- if (numberOfParametersInSelector >= 2) {
- [invocation setArgument:&error atIndex:3];
- }
- if (numberOfParametersInSelector >= 3) {
- [invocation setArgument:&subscribed atIndex:4];
- }
- if (numberOfParametersInSelector >= 4) {
- @throw [NSException sdl_invalidSystemCapabilitySelectorExceptionWithSelector:observer.selector];
- }
-
- [invocation invoke];
- }
-}
-
-#pragma mark - Notifications
-
-/// Registers for notifications and responses from Core
-- (void)sdl_registerForNotifications {
- SDLLogV(@"Registering for notifications");
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_displayLayoutResponse:) name:SDLDidReceiveSetDisplayLayoutResponse object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_systemCapabilityUpdatedNotification:) name:SDLDidReceiveSystemCapabilityUpdatedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
-}
-
-/**
- * Called when a `RegisterAppInterfaceResponse` response is received from Core. The head unit capabilities are saved.
- *
- * @param notification The `RegisterAppInterfaceResponse` response received from Core
- */
-- (void)sdl_registerResponse:(SDLRPCResponseNotification *)notification {
- SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
- if (!response.success.boolValue) { return; }
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- self.displayCapabilities = response.displayCapabilities;
- self.softButtonCapabilities = response.softButtonCapabilities;
- self.buttonCapabilities = response.buttonCapabilities;
- self.presetBankCapabilities = response.presetBankCapabilities;
-#pragma clang diagnostic pop
-
- self.hmiCapabilities = response.hmiCapabilities;
- self.hmiZoneCapabilities = response.hmiZoneCapabilities;
- self.speechCapabilities = response.speechCapabilities;
- self.prerecordedSpeechCapabilities = response.prerecordedSpeech;
- self.vrCapability = (response.vrCapabilities.count > 0 && [response.vrCapabilities.firstObject isEqualToEnum:SDLVRCapabilitiesText]) ? YES : NO;
- self.audioPassThruCapabilities = response.audioPassThruCapabilities;
- self.pcmStreamCapability = response.pcmStreamCapabilities;
-
- self.shouldConvertDeprecatedDisplayCapabilities = YES;
- self.displays = [self sdl_createDisplayCapabilityListFromRegisterResponse:response];
-
- SDLLogV(@"Received RegisterAppInterface response, filled out display and other capabilities");
-
- // Call the observers in case the new display capability list is created from deprecated types
- SDLSystemCapability *systemCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:self.displays];
- [self sdl_callObserversForUpdate:systemCapability error:nil handler:nil];
-}
-
-/**
- * Called when a `SetDisplayLayoutResponse` response is received from Core. If the template was set successfully, the the new capabilities for the template are saved.
- *
- * @param notification The `SetDisplayLayoutResponse` response received from Core
- */
-- (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- SDLSetDisplayLayoutResponse *response = (SDLSetDisplayLayoutResponse *)notification.response;
-#pragma clang diagnostic pop
- if (!response.success.boolValue) { return; }
-
- // If we've received a display capability update then we should not convert our deprecated display capabilities and we should just return
- if (!self.shouldConvertDeprecatedDisplayCapabilities) { return; }
-
- self.displayCapabilities = response.displayCapabilities;
- self.buttonCapabilities = response.buttonCapabilities;
- self.softButtonCapabilities = response.softButtonCapabilities;
- self.presetBankCapabilities = response.presetBankCapabilities;
-
- self.displays = [self sdl_createDisplayCapabilityListFromSetDisplayLayoutResponse:response];
-
- SDLLogV(@"Received SetDisplayLayout response, filled out display and other capabilities");
-
- // Call the observers in case the new display capability list is created from deprecated types
- SDLSystemCapability *systemCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:self.displays];
- [self sdl_callObserversForUpdate:systemCapability error:nil handler:nil];
-}
-
-/**
- * Called when an `OnSystemCapabilityUpdated` notification is received from Core. The updated system capabilty is saved.
- *
- * @param notification The `OnSystemCapabilityUpdated` notification received from Core
- */
-- (void)sdl_systemCapabilityUpdatedNotification:(SDLRPCNotificationNotification *)notification {
- SDLOnSystemCapabilityUpdated *systemCapabilityUpdatedNotification = (SDLOnSystemCapabilityUpdated *)notification.notification;
- SDLLogV(@"Received OnSystemCapability update for type %@", systemCapabilityUpdatedNotification.systemCapability.systemCapabilityType);
-
- [self sdl_saveSystemCapability:systemCapabilityUpdatedNotification.systemCapability error:nil completionHandler:nil];
-}
-
-- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
- SDLOnHMIStatus *onHMIStatus = (SDLOnHMIStatus *)notification.notification;
- self.currentHMILevel = onHMIStatus.hmiLevel;
-}
-
-#pragma mark Utilities
-
-/// Checks if we are already on the serial readWrite queue. If so, the block is added to the queue; if not, the block is dispatched to the readWrite queue.
-/// @discussion Used to ensure atomic access to global properties.
-/// @param block The block to be executed.
-- (void)sdl_runSyncOnQueue:(void (^)(void))block {
- if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
- block();
- } else {
- dispatch_sync(self.readWriteQueue, block);
- }
-}
-
-#pragma mark Getters
-
-- (NSMutableDictionary<SDLSystemCapabilityType, NSMutableArray<SDLSystemCapabilityObserver *> *> *)capabilityObservers {
- __block NSMutableDictionary<SDLSystemCapabilityType, NSMutableArray<SDLSystemCapabilityObserver *> *> *dict = nil;
- [self sdl_runSyncOnQueue:^{
- dict = self->_capabilityObservers;
- }];
-
- return dict;
-}
-
-- (NSMutableDictionary<SDLSystemCapabilityType, NSNumber<SDLBool> *> *)subscriptionStatus {
- __block NSMutableDictionary<SDLSystemCapabilityType, NSNumber<SDLBool> *> *dict = nil;
- [self sdl_runSyncOnQueue:^{
- dict = self->_subscriptionStatus;
- }];
-
- return dict;
-}
-
-- (nullable NSMutableDictionary<SDLServiceID, SDLAppServiceCapability *> *)appServicesCapabilitiesDictionary {
- __block NSMutableDictionary<SDLServiceID, SDLAppServiceCapability *> *dict = nil;
- [self sdl_runSyncOnQueue:^{
- dict = self->_appServicesCapabilitiesDictionary;
- }];
-
- return dict;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapabilityObserver.h b/SmartDeviceLink/SDLSystemCapabilityObserver.h
deleted file mode 100644
index 11a6acfc1..000000000
--- a/SmartDeviceLink/SDLSystemCapabilityObserver.h
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// SDLSystemCapabilityObserver.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 5/23/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-@class SDLSystemCapability;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// A handler mirroring the one in SDLSystemCapabilityManager.h for `initWithObserver:block:`
-typedef void (^SDLCapabilityUpdateHandler)(SDLSystemCapability *capability);
-
-/// A handler mirroring the one in SDLSystemCapabilityManager.h for `initWithObserver:updateHandler:`
-typedef void (^SDLCapabilityUpdateWithErrorHandler)(SDLSystemCapability *_Nullable capability, BOOL subscribed, NSError *_Nullable error);
-
-/**
- An observer object for SDLSystemCapabilityManager
- */
-@interface SDLSystemCapabilityObserver : NSObject
-
-/**
- The object that will be used to call the selector if available, and to unsubscribe this observer
- */
-@property (strong, nonatomic) id<NSObject> observer;
-
-/**
- A selector called when the observer is triggered
- */
-@property (assign, nonatomic) SEL selector;
-
-/**
- A block called when the observer is triggered
- */
-@property (copy, nonatomic) SDLCapabilityUpdateHandler block __deprecated_msg("use updateBlock instead");
-
-/// A block called when the observer is triggered
-@property (copy, nonatomic) SDLCapabilityUpdateWithErrorHandler updateBlock;
-
-/**
- Create an observer using an object and a selector on that object
-
- @param observer The object to be called when the subscription triggers
- @param selector The selector to be called when the subscription triggers
- @return The observer
- */
-- (instancetype)initWithObserver:(id<NSObject>)observer selector:(SEL)selector;
-
-/**
- Create an observer using an object and a callback block
-
- @param observer The object that can be used to unsubscribe the block
- @param block The block that will be called when the subscription triggers
- @return The observer
- */
-- (instancetype)initWithObserver:(id<NSObject>)observer block:(SDLCapabilityUpdateHandler)block __deprecated_msg("use initWithObserver:updateHandler: instead");
-
-/// Create an observer using an object and a callback block
-
-/// @param observer The object that can be used to unsubscribe the block
-/// @param block The block that will be called when the subscription triggers
-/// @return The observer
-- (instancetype)initWithObserver:(id<NSObject>)observer updateHandler:(SDLCapabilityUpdateWithErrorHandler)block;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapabilityObserver.m b/SmartDeviceLink/SDLSystemCapabilityObserver.m
deleted file mode 100644
index 7b6ef0b0e..000000000
--- a/SmartDeviceLink/SDLSystemCapabilityObserver.m
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// SDLSystemCapabilityObserver.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 5/23/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLSystemCapabilityObserver.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSystemCapabilityObserver
-
-- (instancetype)initWithObserver:(id<NSObject>)observer selector:(SEL)selector {
- self = [super init];
- if (!self) { return nil; }
-
- _observer = observer;
- _selector = selector;
-
- return self;
-}
-
-- (instancetype)initWithObserver:(id<NSObject>)observer block:(SDLCapabilityUpdateHandler)block {
- self = [super init];
- if (!self) { return nil; }
-
- _observer = observer;
- _block = block;
-
- return self;
-}
-
-- (instancetype)initWithObserver:(id<NSObject>)observer updateHandler:(SDLCapabilityUpdateWithErrorHandler)block {
- self = [super init];
- if (!self) { return nil; }
-
- _observer = observer;
- _updateBlock = block;
-
- return self;
-}
-
-- (NSString *)description {
- if (self.selector) {
- return [NSString stringWithFormat:@"Observer: %@[%@] - %@", [_observer class], _observer, NSStringFromSelector(_selector)];
- } else {
- return [NSString stringWithFormat:@"Block Observer: %@", _observer];
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemCapabilityType.h b/SmartDeviceLink/SDLSystemCapabilityType.h
deleted file mode 100755
index 60f11a78a..000000000
--- a/SmartDeviceLink/SDLSystemCapabilityType.h
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// SDLSystemCapabilityType.h
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/10/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- The type of system capability to get more information on. Used in GetSystemCapability.
- */
-typedef SDLEnum SDLSystemCapabilityType SDL_SWIFT_ENUM;
-
-/**
- The app services capability
- */
-extern SDLSystemCapabilityType const SDLSystemCapabilityTypeAppServices;
-
-/**
- The navigation capability
- */
-extern SDLSystemCapabilityType const SDLSystemCapabilityTypeNavigation;
-
-/**
- The phone call capability
- */
-extern SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall;
-
-/**
- The video streaming capability
- */
-extern SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming;
-
-/**
- The remote control capability
- */
-extern SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl;
-
-/**
- Contains information about the locations of each seat
- */
-extern SDLSystemCapabilityType const SDLSystemCapabilityTypeSeatLocation;
-
-/**
- The Display type capability
-
- @since SDL 6.0
- */
-extern SDLSystemCapabilityType const SDLSystemCapabilityTypeDisplays;
diff --git a/SmartDeviceLink/SDLSystemCapabilityType.m b/SmartDeviceLink/SDLSystemCapabilityType.m
deleted file mode 100755
index 4185345e6..000000000
--- a/SmartDeviceLink/SDLSystemCapabilityType.m
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// SDLSystemCapabilityType.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/10/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLSystemCapabilityType.h"
-
-SDLSystemCapabilityType const SDLSystemCapabilityTypeAppServices = @"APP_SERVICES";
-SDLSystemCapabilityType const SDLSystemCapabilityTypeNavigation = @"NAVIGATION";
-SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall = @"PHONE_CALL";
-SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming = @"VIDEO_STREAMING";
-SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl = @"REMOTE_CONTROL";
-SDLSystemCapabilityType const SDLSystemCapabilityTypeSeatLocation = @"SEAT_LOCATION";
-SDLSystemCapabilityType const SDLSystemCapabilityTypeDisplays = @"DISPLAYS";
diff --git a/SmartDeviceLink/SDLSystemContext.h b/SmartDeviceLink/SDLSystemContext.h
deleted file mode 100644
index 83fc8e43c..000000000
--- a/SmartDeviceLink/SDLSystemContext.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// SDLSystemContext.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Indicates whether or not a user-initiated interaction is in progress, and if so, in what mode (i.e. MENU or VR). Used in OnHMIStatus
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLSystemContext SDL_SWIFT_ENUM;
-
-/**
- * No user interaction (user-initiated or app-initiated) is in progress.
- */
-extern SDLSystemContext const SDLSystemContextMain;
-
-/**
- * VR-oriented, user-initiated or app-initiated interaction is in-progress.
- */
-extern SDLSystemContext const SDLSystemContextVoiceRecognitionSession;
-
-/**
- * Menu-oriented, user-initiated or app-initiated interaction is in-progress.
- */
-extern SDLSystemContext const SDLSystemContextMenu;
-
-/**
- * The app's display HMI is currently being obscured by either a system or other app's overlay.
- *
- * @since SDL 2.0
- */
-extern SDLSystemContext const SDLSystemContextHMIObscured;
-
-/**
- * Broadcast only to whichever app has an alert currently being displayed.
- *
- * @since SDL 2.0
- */
-extern SDLSystemContext const SDLSystemContextAlert;
diff --git a/SmartDeviceLink/SDLSystemRequest.m b/SmartDeviceLink/SDLSystemRequest.m
deleted file mode 100644
index 6999a5bca..000000000
--- a/SmartDeviceLink/SDLSystemRequest.m
+++ /dev/null
@@ -1,74 +0,0 @@
-// SDLSystemRequest.m
-//
-
-
-#import "SDLSystemRequest.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLSystemRequest
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameSystemRequest]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithType:(SDLRequestType)requestType fileName:(nullable NSString *)fileName {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.requestType = requestType;
- self.fileName = fileName;
-
- return self;
-}
-
-- (instancetype)initWithProprietaryType:(NSString *)proprietaryType fileName:(nullable NSString *)fileName {
- self = [self init];
- if (!self) { return nil; }
-
- self.requestType = SDLRequestTypeOEMSpecific;
- self.requestSubType = proprietaryType;
- self.fileName = fileName;
-
- return self;
-}
-
-- (void)setRequestType:(SDLRequestType)requestType {
- [self.parameters sdl_setObject:requestType forName:SDLRPCParameterNameRequestType];
-}
-
-- (SDLRequestType)requestType {
- NSError *error = nil;
- return [self.parameters sdl_enumForName:SDLRPCParameterNameRequestType error:&error];
-}
-
-- (void)setRequestSubType:(nullable NSString *)requestSubType {
- [self.parameters sdl_setObject:requestSubType forName:SDLRPCParameterNameRequestSubType];
-}
-
-- (nullable NSString *)requestSubType {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRequestSubType ofClass:NSString.class error:nil];
-}
-
-- (void)setFileName:(nullable NSString *)fileName {
- [self.parameters sdl_setObject:fileName forName:SDLRPCParameterNameFilename];
-}
-
-- (nullable NSString *)fileName {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFilename ofClass:NSString.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTBTState.h b/SmartDeviceLink/SDLTBTState.h
deleted file mode 100644
index d1fccb658..000000000
--- a/SmartDeviceLink/SDLTBTState.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// SDLTBTState.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- The turn-by-turn state, used in OnTBTClientState.
- */
-typedef SDLEnum SDLTBTState SDL_SWIFT_ENUM;
-
-/**
- The route should be updated
- */
-extern SDLTBTState const SDLTBTStateRouteUpdateRequest;
-
-/**
- The route is accepted
- */
-extern SDLTBTState const SDLTBTStateRouteAccepted;
-
-/**
- The route is refused
- */
-extern SDLTBTState const SDLTBTStateRouteRefused;
-
-/**
- The route is cancelled
- */
-extern SDLTBTState const SDLTBTStateRouteCancelled;
-
-/**
- The route should update its Estimated Time of Arrival
- */
-extern SDLTBTState const SDLTBTStateETARequest;
-
-/**
- The route should update its next turn
- */
-extern SDLTBTState const SDLTBTStateNextTurnRequest;
-
-/**
- The route should update its status
- */
-extern SDLTBTState const SDLTBTStateRouteStatusRequest;
-
-/**
- The route update its summary
- */
-extern SDLTBTState const SDLTBTStateRouteSummaryRequest;
-
-/**
- The route should update the trip's status
- */
-extern SDLTBTState const SDLTBTStateTripStatusRequest;
-
-/**
- The route update timed out
- */
-extern SDLTBTState const SDLTBTStateRouteUpdateRequestTimeout;
diff --git a/SmartDeviceLink/SDLTPMS.h b/SmartDeviceLink/SDLTPMS.h
deleted file mode 100644
index 4831af523..000000000
--- a/SmartDeviceLink/SDLTPMS.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// SDLTPMS.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- An enum representing values of the tire pressure monitoring system
- */
-typedef SDLEnum SDLTPMS SDL_SWIFT_ENUM;
-
-/**
- If set the status of the tire is not known.
- */
-extern SDLTPMS const SDLTPMSUnknown;
-
-/**
- TPMS does not function.
- */
-extern SDLTPMS const SDLTPMSSystemFault;
-
-/**
- The sensor of the tire does not function.
- */
-extern SDLTPMS const SDLTPMSSensorFault;
-
-/**
- TPMS is reporting a low tire pressure for the tire.
- */
-extern SDLTPMS const SDLTPMSLow;
-
-/**
- TPMS is active and the tire pressure is monitored.
- */
-extern SDLTPMS const SDLTPMSSystemActive;
-
-/**
- TPMS is reporting that the tire must be trained.
- */
-extern SDLTPMS const SDLTPMSTrain;
-
-/**
- TPMS reports the training for the tire is completed.
- */
-extern SDLTPMS const SDLTPMSTrainingComplete;
-
-/**
- TPMS reports the tire is not trained.
- */
-extern SDLTPMS const SDLTPMSNotTrained;
diff --git a/SmartDeviceLink/SDLTemperatureUnit.h b/SmartDeviceLink/SDLTemperatureUnit.h
deleted file mode 100644
index ff4b10ea8..000000000
--- a/SmartDeviceLink/SDLTemperatureUnit.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// SDLTemperatureUnit.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- The unit of temperature to display. Used in Temperature.
- */
-typedef SDLEnum SDLTemperatureUnit SDL_SWIFT_ENUM;
-
-/**
- Reflects the current HMI setting for temperature unit in Celsius
- */
-extern SDLTemperatureUnit const SDLTemperatureUnitCelsius;
-
-/**
- Reflects the current HMI setting for temperature unit in Fahrenheit
- */
-extern SDLTemperatureUnit const SDLTemperatureUnitFahrenheit;
diff --git a/SmartDeviceLink/SDLTextAlignment.h b/SmartDeviceLink/SDLTextAlignment.h
deleted file mode 100644
index 5fafd443e..000000000
--- a/SmartDeviceLink/SDLTextAlignment.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLTextAlignment.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * The list of possible alignments of text in a field. May only work on some display types. used in Show.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLTextAlignment SDL_SWIFT_ENUM;
-
-/**
- * Text aligned left.
- */
-extern SDLTextAlignment const SDLTextAlignmentLeft;
-
-/**
- * Text aligned right.
- */
-extern SDLTextAlignment const SDLTextAlignmentRight;
-
-/**
- * Text aligned centered.
- */
-extern SDLTextAlignment const SDLTextAlignmentCenter;
diff --git a/SmartDeviceLink/SDLTextAndGraphicManager.h b/SmartDeviceLink/SDLTextAndGraphicManager.h
deleted file mode 100644
index c916e0426..000000000
--- a/SmartDeviceLink/SDLTextAndGraphicManager.h
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// SDLTextAndGraphicManager.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 2/22/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "SDLMetadataType.h"
-#import "SDLTextAlignment.h"
-
-@class SDLArtwork;
-@class SDLFileManager;
-@class SDLTextAndGraphicConfiguration;
-@class SDLSystemCapabilityManager;
-
-@protocol SDLConnectionManagerType;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- The handler run when the update has completed
-
- @param error An error if the update failed and an error occurred
- */
-typedef void(^SDLTextAndGraphicUpdateCompletionHandler)(NSError *__nullable error);
-
-@interface SDLTextAndGraphicManager : NSObject
-
-/**
- A text field that corresponds to SDLShow mainField1. Setting to nil is equivalent to setting an empty string.
- */
-@property (copy, nonatomic, nullable) NSString *textField1;
-@property (copy, nonatomic, nullable) NSString *textField2;
-@property (copy, nonatomic, nullable) NSString *textField3;
-@property (copy, nonatomic, nullable) NSString *textField4;
-@property (copy, nonatomic, nullable) NSString *mediaTrackTextField;
-@property (copy, nonatomic, nullable) NSString *title;
-@property (strong, nonatomic, nullable) SDLArtwork *primaryGraphic;
-@property (strong, nonatomic, nullable) SDLArtwork *secondaryGraphic;
-
-@property (copy, nonatomic, nullable) SDLTextAlignment alignment;
-@property (copy, nonatomic, nullable) SDLMetadataType textField1Type;
-@property (copy, nonatomic, nullable) SDLMetadataType textField2Type;
-@property (copy, nonatomic, nullable) SDLMetadataType textField3Type;
-@property (copy, nonatomic, nullable) SDLMetadataType textField4Type;
-
-/**
- * If you want to remove the current artwork, set it to this blank artwork.
- *
- * This artwork is set to null on disconnects to prevent a `sdl_fileManager_fileDoesNotExistError` error when the artwork is sent again on reconnects.
- */
-@property (strong, nonatomic, readonly, nullable) SDLArtwork *blankArtwork;
-
-@property (assign, nonatomic, getter=isBatchingUpdates) BOOL batchUpdates;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- Create a Text and Image Manager with a custom SDLTextAndImageConfiguration.
-
- @return A new SDLTextAndImageManager
- */
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager;
-
-/// Starts the manager. This method is used internally.
-- (void)start;
-
-/**
- * Stops the manager. This method is used internally.
- */
-- (void)stop;
-
-/**
- Update text fields with new text set into the text field properties. Pass an empty string `\@""` to clear the text field.
-
- If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
-
- If 3 lines are available: [field1, field2, field3 - field 4]
-
- If 2 lines are available: [field1 - field2, field3 - field4]
-
- If 1 line is available: [field1 - field2 - field3 - field4]
-
- Also updates the primary and secondary images with new image(s) if new one(s) been set. This method will take care of naming the files (based on a hash). This is assumed to be a non-persistant image.
-
- If it needs to be uploaded, it will be. Once the upload is complete, the on-screen graphic will be updated.
-
- @param handler A handler run when the fields have finished updating, with an error if the update failed. This handler may be called multiple times when the text update is sent and the image update is sent.
- */
-- (void)updateWithCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTextAndGraphicManager.m b/SmartDeviceLink/SDLTextAndGraphicManager.m
deleted file mode 100644
index 6324e13e3..000000000
--- a/SmartDeviceLink/SDLTextAndGraphicManager.m
+++ /dev/null
@@ -1,748 +0,0 @@
-//
-// SDLTextAndGraphicManager.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 2/22/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLTextAndGraphicManager.h"
-
-#import "SDLArtwork.h"
-#import "SDLConnectionManagerType.h"
-#import "SDLError.h"
-#import "SDLFileManager.h"
-#import "SDLImage.h"
-#import "SDLLogMacros.h"
-#import "SDLMetadataTags.h"
-#import "SDLNotificationConstants.h"
-#import "SDLOnHMIStatus.h"
-#import "SDLPredefinedWindows.h"
-#import "SDLRegisterAppInterfaceResponse.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLRPCResponseNotification.h"
-#import "SDLSetDisplayLayoutResponse.h"
-#import "SDLShow.h"
-#import "SDLSystemCapability.h"
-#import "SDLSystemCapabilityManager.h"
-#import "SDLTextField.h"
-#import "SDLWindowCapability.h"
-#import "SDLWindowCapability+ScreenManagerExtensions.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLTextAndGraphicManager()
-
-// Dependencies
-@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
-@property (weak, nonatomic) SDLFileManager *fileManager;
-@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
-
-/**
- A show describing the current text and images on the screen (not soft buttons, etc.)
- */
-@property (strong, nonatomic) SDLShow *currentScreenData;
-
-/**
- This is the "full" update, including both text and image names, whether or not that will succeed at the moment (e.g. if images are in the process of uploading)
- */
-@property (strong, nonatomic, nullable) SDLShow *inProgressUpdate;
-@property (copy, nonatomic, nullable) SDLTextAndGraphicUpdateCompletionHandler inProgressHandler;
-
-@property (strong, nonatomic, nullable) SDLShow *queuedImageUpdate;
-@property (assign, nonatomic) BOOL hasQueuedUpdate;
-@property (copy, nonatomic, nullable) SDLTextAndGraphicUpdateCompletionHandler queuedUpdateHandler;
-
-@property (strong, nonatomic, nullable) SDLWindowCapability *windowCapability;
-@property (strong, nonatomic, nullable) SDLHMILevel currentLevel;
-
-@property (strong, nonatomic, nullable) SDLArtwork *blankArtwork;
-
-@property (assign, nonatomic) BOOL waitingOnHMILevelUpdateToUpdate;
-@property (assign, nonatomic) BOOL isDirty;
-
-@end
-
-@implementation SDLTextAndGraphicManager
-
-- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager {
- self = [super init];
- if (!self) { return nil; }
-
- _connectionManager = connectionManager;
- _fileManager = fileManager;
- _systemCapabilityManager = systemCapabilityManager;
-
- _alignment = SDLTextAlignmentCenter;
-
- _currentScreenData = [[SDLShow alloc] init];
- _currentLevel = SDLHMILevelNone;
-
- _waitingOnHMILevelUpdateToUpdate = NO;
- _isDirty = NO;
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
-
- return self;
-}
-
-- (void)start {
- SDLLogD(@"Starting manager");
-
- // Make sure none of the properties were set after the manager was shut down
- [self sdl_reset];
-
- [self.systemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self selector:@selector(sdl_displayCapabilityDidUpdate:)];
-}
-
-- (void)stop {
- SDLLogD(@"Stopping manager");
- [self sdl_reset];
-
- [self.systemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self];
-}
-
-- (void)sdl_reset {
- SDLLogV(@"Resetting properties");
- _textField1 = nil;
- _textField2 = nil;
- _textField3 = nil;
- _textField4 = nil;
- _mediaTrackTextField = nil;
- _primaryGraphic = nil;
- _secondaryGraphic = nil;
- _alignment = SDLTextAlignmentCenter;
- _textField1Type = nil;
- _textField2Type = nil;
- _textField3Type = nil;
- _textField4Type = nil;
-
- _currentScreenData = [[SDLShow alloc] init];
- _inProgressUpdate = nil;
- _inProgressHandler = nil;
- _queuedImageUpdate = nil;
- _hasQueuedUpdate = NO;
- _queuedUpdateHandler = nil;
- _windowCapability = nil;
- _currentLevel = SDLHMILevelNone;
- _blankArtwork = nil;
- _waitingOnHMILevelUpdateToUpdate = NO;
- _isDirty = NO;
-}
-
-#pragma mark - Upload / Send
-
-- (void)updateWithCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler {
- if (self.isBatchingUpdates) { return; }
-
- // Don't send if we're in HMI NONE
- if (self.currentLevel == nil || [self.currentLevel isEqualToString:SDLHMILevelNone]) {
- self.waitingOnHMILevelUpdateToUpdate = YES;
- return;
- } else {
- self.waitingOnHMILevelUpdateToUpdate = NO;
- }
-
- if (self.isDirty) {
- self.isDirty = NO;
- [self sdl_updateWithCompletionHandler:handler];
- }
-}
-
-- (void)sdl_updateWithCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler {
- SDLLogD(@"Updating text and graphics");
- if (self.inProgressUpdate != nil) {
- SDLLogV(@"In progress update exists, queueing update");
- // If we already have a pending update, we're going to tell the old handler that it was superseded by a new update and then return
- if (self.queuedUpdateHandler != nil) {
- SDLLogV(@"Queued update already exists, superseding previous queued update");
- self.queuedUpdateHandler([NSError sdl_textAndGraphicManager_pendingUpdateSuperseded]);
- self.queuedUpdateHandler = nil;
- }
-
- if (handler != nil) {
- self.queuedUpdateHandler = handler;
- } else {
- self.hasQueuedUpdate = YES;
- }
-
- return;
- }
-
- SDLShow *fullShow = [[SDLShow alloc] init];
- fullShow.alignment = self.alignment;
- fullShow.metadataTags = [[SDLMetadataTags alloc] init];
- fullShow = [self sdl_assembleShowText:fullShow];
- fullShow = [self sdl_assembleShowImages:fullShow];
-
- self.inProgressHandler = handler;
-
- __weak typeof(self)weakSelf = self;
- if (!([self sdl_shouldUpdatePrimaryImage] || [self sdl_shouldUpdateSecondaryImage])) {
- SDLLogV(@"No images to send, sending text");
- // If there are no images to update, just send the text
- self.inProgressUpdate = [self sdl_extractTextFromShow:fullShow];
- } else if (![self sdl_artworkNeedsUpload:self.primaryGraphic] && ![self sdl_artworkNeedsUpload:self.secondaryGraphic]) {
- SDLLogV(@"Images already uploaded, sending full update");
- // The files to be updated are already uploaded, send the full show immediately
- self.inProgressUpdate = fullShow;
- } else {
- SDLLogV(@"Images need to be uploaded, sending text and uploading images");
-
- // We need to upload or queue the upload of the images
- // Send the text immediately
- self.inProgressUpdate = [self sdl_extractTextFromShow:fullShow];
-
- // Start uploading the images
- __block SDLShow *thisUpdate = fullShow;
- [self sdl_uploadImagesWithCompletionHandler:^(NSError *_Nullable error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
-
- if (error != nil) {
- SDLShow *showWithGraphics = [self sdl_createImageOnlyShowWithPrimaryArtwork:self.primaryGraphic secondaryArtwork:self.secondaryGraphic];
- if (showWithGraphics != nil) {
- SDLLogW(@"Some images failed to upload. Sending update with the successfully uploaded images");
- self.inProgressUpdate = showWithGraphics;
- } else {
- SDLLogE(@"All images failed to upload. No graphics to show, skipping update.");
- self.inProgressUpdate = nil;
- }
- return;
- }
-
- // Check if queued image update still matches our images (there could have been a new Show in the meantime) and send a new update if it does. Since the images will already be on the head unit, the whole show will be sent
- // TODO: Send delete if it doesn't?
- if ([strongSelf sdl_showImages:thisUpdate isEqualToShowImages:strongSelf.queuedImageUpdate]) {
- SDLLogV(@"Queued image update matches the images we need, sending update");
- return [strongSelf sdl_updateWithCompletionHandler:strongSelf.inProgressHandler];
- } else {
- SDLLogV(@"Queued image update does not match the images we need, skipping update");
- }
- }];
- // When the images are done uploading, send another show with the images
- self.queuedImageUpdate = fullShow;
- }
-
- if (self.inProgressUpdate == nil) { return; }
-
- [self.connectionManager sendConnectionRequest:self.inProgressUpdate withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
- __strong typeof(weakSelf) strongSelf = weakSelf;
- SDLLogD(@"Text and Graphic update completed");
-
- // TODO: Monitor and delete old images when space is low?
- if (response.success) {
- [strongSelf sdl_updateCurrentScreenDataFromShow:(SDLShow *)request];
- }
-
- strongSelf.inProgressUpdate = nil;
- if (strongSelf.inProgressHandler != nil) {
- strongSelf.inProgressHandler(error);
- strongSelf.inProgressHandler = nil;
- }
-
- if (strongSelf.hasQueuedUpdate) {
- SDLLogV(@"Queued update exists, sending another update");
- [strongSelf sdl_updateWithCompletionHandler:[strongSelf.queuedUpdateHandler copy]];
- strongSelf.queuedUpdateHandler = nil;
- strongSelf.hasQueuedUpdate = NO;
- }
- }];
-}
-
-- (void)sdl_uploadImagesWithCompletionHandler:(void (^)(NSError *_Nullable error))handler {
- NSMutableArray<SDLArtwork *> *artworksToUpload = [NSMutableArray array];
- if ([self sdl_shouldUpdatePrimaryImage] && !self.primaryGraphic.isStaticIcon) {
- [artworksToUpload addObject:self.primaryGraphic];
- }
- if ([self sdl_shouldUpdateSecondaryImage] && !self.secondaryGraphic.isStaticIcon) {
- [artworksToUpload addObject:self.secondaryGraphic];
- }
-
- if (artworksToUpload.count == 0
- && (self.primaryGraphic.isStaticIcon || self.secondaryGraphic.isStaticIcon)) {
- SDLLogD(@"Upload attempted on static icons, sending them without upload instead");
- handler(nil);
- }
-
- [self.fileManager uploadArtworks:artworksToUpload completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) {
- if (error != nil) {
- SDLLogW(@"Text and graphic manager artwork failed to upload with error: %@", error.localizedDescription);
- }
-
- handler(error);
- }];
-}
-
-#pragma mark - Assembly of Shows
-
-#pragma mark Images
-
-- (SDLShow *)sdl_assembleShowImages:(SDLShow *)show {
- if (![self sdl_shouldUpdatePrimaryImage] && ![self sdl_shouldUpdateSecondaryImage]) {
- return show;
- }
-
- if ([self sdl_shouldUpdatePrimaryImage]) {
- show.graphic = self.primaryGraphic.imageRPC;
- }
- if ([self sdl_shouldUpdateSecondaryImage]) {
- show.secondaryGraphic = self.secondaryGraphic.imageRPC;
- }
-
- return show;
-}
-
-#pragma mark Text
-
-- (SDLShow *)sdl_assembleShowText:(SDLShow *)show {
- [self sdl_setBlankTextFieldsWithShow:show];
-
- if (self.mediaTrackTextField != nil && [self sdl_shouldUpdateMediaTextField]) {
- show.mediaTrack = self.mediaTrackTextField;
- } else {
- show.mediaTrack = @"";
- }
-
- if (self.title != nil && [self sdl_shouldUpdateTitleField]) {
- show.templateTitle = self.title;
- } else {
- show.templateTitle = @"";
- }
-
- NSArray *nonNilFields = [self sdl_findNonNilTextFields];
- if (nonNilFields.count == 0) { return show; }
-
- NSUInteger numberOfLines = self.windowCapability.maxNumberOfMainFieldLines;
- if (numberOfLines == 1) {
- show = [self sdl_assembleOneLineShowText:show withShowFields:nonNilFields];
- } else if (numberOfLines == 2) {
- show = [self sdl_assembleTwoLineShowText:show];
- } else if (numberOfLines == 3) {
- show = [self sdl_assembleThreeLineShowText:show];
- } else if (numberOfLines == 4) {
- show = [self sdl_assembleFourLineShowText:show];
- }
-
- return show;
-}
-
-- (SDLShow *)sdl_assembleOneLineShowText:(SDLShow *)show withShowFields:(NSArray<NSString *> *)fields {
- NSMutableString *showString1 = [NSMutableString stringWithString:fields[0]];
- for (NSUInteger i = 1; i < fields.count; i++) {
- [showString1 appendFormat:@" - %@", fields[i]];
- }
- show.mainField1 = showString1.copy;
-
- SDLMetadataTags *tags = [[SDLMetadataTags alloc] init];
- NSMutableArray<SDLMetadataType> *metadataArray = [NSMutableArray array];
- self.textField1Type ? [metadataArray addObject:self.textField1Type] : nil;
- self.textField2Type ? [metadataArray addObject:self.textField2Type] : nil;
- self.textField3Type ? [metadataArray addObject:self.textField3Type] : nil;
- self.textField4Type ? [metadataArray addObject:self.textField4Type] : nil;
- tags.mainField1 = [metadataArray copy];
- show.metadataTags = tags;
-
- return show;
-}
-
-- (SDLShow *)sdl_assembleTwoLineShowText:(SDLShow *)show {
- NSMutableString *tempString = [NSMutableString string];
- if (self.textField1.length > 0) {
- // If text 1 exists, put it in slot 1
- [tempString appendString:self.textField1];
- show.metadataTags.mainField1 = self.textField1Type.length > 0 ? @[self.textField1Type] : @[];
- }
-
- if (self.textField2.length > 0) {
- if (!(self.textField3.length > 0 || self.textField4.length > 0)) {
- // If text 3 & 4 do not exist, put it in slot 2
- show.mainField2 = self.textField2;
- show.metadataTags.mainField2 = self.textField2Type.length > 0 ? @[self.textField2Type] : @[];
- } else if (self.textField1.length > 0) {
- // If text 1 exists, put it in slot 1 formatted
- [tempString appendFormat:@" - %@", self.textField2];
- show.metadataTags.mainField1 = self.textField2Type.length > 0 ? [show.metadataTags.mainField1 arrayByAddingObjectsFromArray:@[self.textField2Type]] : show.metadataTags.mainField1;
- } else {
- // If text 1 does not exist, put it in slot 1 unformatted
- [tempString appendString:self.textField2];
- show.metadataTags.mainField1 = self.textField2Type.length > 0 ? @[self.textField2Type] : @[];
- }
- }
-
- show.mainField1 = [tempString copy];
-
- tempString = [NSMutableString string];
- if (self.textField3.length > 0) {
- // If text 3 exists, put it in slot 2
- [tempString appendString:self.textField3];
- show.metadataTags.mainField2 = self.textField3Type.length > 0 ? @[self.textField3Type] : @[];
- }
-
- if (self.textField4.length > 0) {
- if (self.textField3.length > 0) {
- // If text 3 exists, put it in slot 2 formatted
- [tempString appendFormat:@" - %@", self.textField4];
- show.metadataTags.mainField2 = self.textField4Type.length > 0 ? [show.metadataTags.mainField2 arrayByAddingObjectsFromArray:@[self.textField4Type]] : show.metadataTags.mainField2;
- } else {
- // If text 3 does not exist, put it in slot 3 unformatted
- [tempString appendString:self.textField4];
- show.metadataTags.mainField2 = self.textField4Type.length > 0 ? @[self.textField4Type] : @[];
- }
- }
-
- if (tempString.length > 0) {
- show.mainField2 = [tempString copy];
- }
-
- return show;
-}
-
-- (SDLShow *)sdl_assembleThreeLineShowText:(SDLShow *)show {
- if (self.textField1.length > 0) {
- show.mainField1 = self.textField1;
- show.metadataTags.mainField1 = self.textField1Type.length > 0 ? @[self.textField1Type] : @[];
- }
-
- if (self.textField2.length > 0) {
- show.mainField2 = self.textField2;
- show.metadataTags.mainField2 = self.textField2Type.length > 0 ? @[self.textField2Type] : @[];
- }
-
- NSMutableString *tempString = [NSMutableString string];
- if (self.textField3.length > 0) {
- [tempString appendString:self.textField3];
- show.metadataTags.mainField3 = self.textField3Type.length > 0 ? @[self.textField3Type] : @[];
- }
-
- if (self.textField4.length > 0) {
- if (self.textField3.length > 0) {
- // If text 3 exists, put it in slot 3 formatted
- [tempString appendFormat:@" - %@", self.textField4];
- show.metadataTags.mainField3 = self.textField4Type.length > 0 ? [show.metadataTags.mainField3 arrayByAddingObjectsFromArray:@[self.textField4Type]] : show.metadataTags.mainField3;
- } else {
- // If text 3 does not exist, put it in slot 3 formatted
- [tempString appendString:self.textField4];
- show.metadataTags.mainField3 = self.textField4Type.length > 0 ? @[self.textField4Type] : @[];
- }
- }
-
- show.mainField3 = [tempString copy];
-
- return show;
-}
-
-- (SDLShow *)sdl_assembleFourLineShowText:(SDLShow *)show {
- if (self.textField1.length > 0) {
- show.mainField1 = self.textField1;
- show.metadataTags.mainField1 = self.textField1Type.length > 0 ? @[self.textField1Type] : @[];
- }
-
- if (self.textField2.length > 0) {
- show.mainField2 = self.textField2;
- show.metadataTags.mainField2 = self.textField2Type.length > 0 ? @[self.textField2Type] : @[];
- }
-
- if (self.textField3.length > 0) {
- show.mainField3 = self.textField3;
- show.metadataTags.mainField3 = self.textField3Type.length > 0 ? @[self.textField3Type] : @[];
- }
-
- if (self.textField4.length > 0) {
- show.mainField4 = self.textField4;
- show.metadataTags.mainField4 = self.textField4Type.length > 0 ? @[self.textField4Type] : @[];
- }
-
- return show;
-}
-
-- (SDLShow *)sdl_setBlankTextFieldsWithShow:(SDLShow *)show {
- show.mainField1 = @"";
- show.mainField2 = @"";
- show.mainField3 = @"";
- show.mainField4 = @"";
- show.mediaTrack = @"";
- show.templateTitle = @"";
-
- return show;
-}
-
-#pragma mark - Extraction
-
-- (SDLShow *)sdl_extractTextFromShow:(SDLShow *)show {
- SDLShow *newShow = [[SDLShow alloc] init];
- newShow.mainField1 = show.mainField1;
- newShow.mainField2 = show.mainField2;
- newShow.mainField3 = show.mainField3;
- newShow.mainField4 = show.mainField4;
- newShow.mediaTrack = show.mediaTrack;
- newShow.templateTitle = show.templateTitle;
- newShow.metadataTags = show.metadataTags;
-
- return newShow;
-}
-
-- (SDLShow *)sdl_extractImageFromShow:(SDLShow *)show {
- SDLShow *newShow = [[SDLShow alloc] init];
- newShow.graphic = show.graphic;
- newShow.secondaryGraphic = show.secondaryGraphic;
-
- return newShow;
-}
-
-- (nullable SDLShow *)sdl_createImageOnlyShowWithPrimaryArtwork:(nullable SDLArtwork *)primaryArtwork secondaryArtwork:(nullable SDLArtwork *)secondaryArtwork {
- SDLShow *newShow = [[SDLShow alloc] init];
- newShow.graphic = ![self sdl_artworkNeedsUpload:primaryArtwork] ? primaryArtwork.imageRPC : nil;
- newShow.secondaryGraphic = ![self sdl_artworkNeedsUpload:secondaryArtwork] ? secondaryArtwork.imageRPC : nil;
-
- if (newShow.graphic == nil && newShow.secondaryGraphic == nil) {
- SDLLogV(@"No graphics to upload");
- return nil;
- }
-
- return newShow;
-}
-
-- (void)sdl_updateCurrentScreenDataFromShow:(SDLShow *)show {
- // If the items are nil, they were not updated, so we can't just set it directly
- self.currentScreenData.mainField1 = show.mainField1 ?: self.currentScreenData.mainField1;
- self.currentScreenData.mainField2 = show.mainField2 ?: self.currentScreenData.mainField2;
- self.currentScreenData.mainField3 = show.mainField3 ?: self.currentScreenData.mainField3;
- self.currentScreenData.mainField4 = show.mainField4 ?: self.currentScreenData.mainField4;
- self.currentScreenData.mediaTrack = show.mediaTrack ?: self.currentScreenData.mediaTrack;
- self.currentScreenData.templateTitle = show.templateTitle ?: self.currentScreenData.templateTitle;
- self.currentScreenData.metadataTags = show.metadataTags ?: self.currentScreenData.metadataTags;
- self.currentScreenData.alignment = show.alignment ?: self.currentScreenData.alignment;
- self.currentScreenData.graphic = show.graphic ?: self.currentScreenData.graphic;
- self.currentScreenData.secondaryGraphic = show.secondaryGraphic ?: self.currentScreenData.secondaryGraphic;
-}
-
-#pragma mark - Helpers
-
-- (BOOL)sdl_artworkNeedsUpload:(SDLArtwork *)artwork {
- return (artwork != nil && ![self.fileManager hasUploadedFile:artwork] && !artwork.isStaticIcon);
-}
-
-- (BOOL)sdl_shouldUpdatePrimaryImage {
- BOOL templateSupportsPrimaryArtwork = [self.windowCapability hasImageFieldOfName:SDLImageFieldNameGraphic];
- BOOL graphicMatchesExisting = [self.currentScreenData.graphic.value isEqualToString:self.primaryGraphic.name];
- BOOL graphicExists = (self.primaryGraphic != nil);
-
- return (templateSupportsPrimaryArtwork && !graphicMatchesExisting && graphicExists);
-}
-
-- (BOOL)sdl_shouldUpdateSecondaryImage {
- BOOL templateSupportsSecondaryArtwork = [self.windowCapability hasImageFieldOfName:SDLImageFieldNameSecondaryGraphic];
- BOOL graphicMatchesExisting = [self.currentScreenData.secondaryGraphic.value isEqualToString:self.secondaryGraphic.name];
- BOOL graphicExists = (self.secondaryGraphic != nil);
-
- // Cannot detect if there is a secondary image, so we'll just try to detect if there's a primary image and allow it if there is.
- return (templateSupportsSecondaryArtwork && !graphicMatchesExisting && graphicExists);
-}
-
-- (BOOL)sdl_shouldUpdateMediaTextField {
- return [self.windowCapability hasTextFieldOfName:SDLTextFieldNameMediaTrack];
-}
-
-- (BOOL)sdl_shouldUpdateTitleField {
- return [self.windowCapability hasTextFieldOfName:SDLTextFieldNameTemplateTitle];
-}
-
-- (NSArray<NSString *> *)sdl_findNonNilTextFields {
- NSMutableArray *array = [NSMutableArray array];
- (self.textField1.length > 0) ? [array addObject:self.textField1] : nil;
- (self.textField2.length > 0) ? [array addObject:self.textField2] : nil;
- (self.textField3.length > 0) ? [array addObject:self.textField3] : nil;
- (self.textField4.length > 0) ? [array addObject:self.textField4] : nil;
-
- return [array copy];
-}
-
-- (NSArray<SDLMetadataType> *)sdl_findNonNilMetadataFields {
- NSMutableArray *array = [NSMutableArray array];
- (self.textField1Type.length) > 0 ? [array addObject:self.textField1Type] : nil;
- (self.textField2Type.length) > 0 ? [array addObject:self.textField2Type] : nil;
- (self.textField3Type.length) > 0 ? [array addObject:self.textField3Type] : nil;
- (self.textField4Type.length) > 0 ? [array addObject:self.textField4Type] : nil;
-
- return [array copy];
-}
-
-- (BOOL)sdl_hasData {
- BOOL hasTextFields = ([self sdl_findNonNilTextFields].count > 0) || (self.title.length > 0) || (self.mediaTrackTextField.length > 0);
- BOOL hasImageFields = (self.primaryGraphic != nil) || (self.secondaryGraphic != nil);
-
- return hasTextFields || hasImageFields;
-}
-
-#pragma mark - Equality
-
-- (BOOL)sdl_showImages:(SDLShow *)show isEqualToShowImages:(SDLShow *)show2 {
- BOOL same = NO;
- same = ((show.graphic.value == nil && show.graphic.value == nil)
- || [show.graphic.value isEqualToString:show2.graphic.value]);
- if (!same) { return NO; }
-
- same = ((show.secondaryGraphic.value == nil && show.secondaryGraphic.value == nil)
- || [show.secondaryGraphic.value isEqualToString:show2.secondaryGraphic.value]);
-
- return same;
-}
-
-#pragma mark - Getters / Setters
-
-#pragma mark - Setters
-
-- (void)setTextField1:(nullable NSString *)textField1 {
- _textField1 = textField1;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- // If we aren't batching, send the update immediately, if we are, set ourselves as dirty (so we know we should send an update after the batch ends)
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTextField2:(nullable NSString *)textField2 {
- _textField2 = textField2;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTextField3:(nullable NSString *)textField3 {
- _textField3 = textField3;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTextField4:(nullable NSString *)textField4 {
- _textField4 = textField4;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setMediaTrackTextField:(nullable NSString *)mediaTrackTextField {
- _mediaTrackTextField = mediaTrackTextField;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTitle:(nullable NSString *)title {
- _title = title;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setPrimaryGraphic:(nullable SDLArtwork *)primaryGraphic {
- _primaryGraphic = primaryGraphic;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setSecondaryGraphic:(nullable SDLArtwork *)secondaryGraphic {
- _secondaryGraphic = secondaryGraphic;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setAlignment:(nullable SDLTextAlignment)alignment {
- _alignment = alignment ? alignment : SDLTextAlignmentCenter;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTextField1Type:(nullable SDLMetadataType)textField1Type {
- _textField1Type = textField1Type;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTextField2Type:(nullable SDLMetadataType)textField2Type {
- _textField2Type = textField2Type;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTextField3Type:(nullable SDLMetadataType)textField3Type {
- _textField3Type = textField3Type;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)setTextField4Type:(nullable SDLMetadataType)textField4Type {
- _textField4Type = textField4Type;
- _isDirty = YES;
- if (!self.isBatchingUpdates) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (BOOL)hasQueuedUpdate {
- return (_hasQueuedUpdate || _queuedUpdateHandler != nil);
-}
-
-- (nullable SDLArtwork *)blankArtwork {
- if (_blankArtwork != nil) {
- return _blankArtwork;
- }
-
- UIGraphicsBeginImageContextWithOptions(CGSizeMake(5, 5), NO, 0.0);
- UIImage *blankImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
-
- _blankArtwork = [SDLArtwork artworkWithImage:blankImage name:@"sdl_BlankArt" asImageFormat:SDLArtworkImageFormatPNG];
-
- return _blankArtwork;
-}
-
-#pragma mark - Subscribed notifications
-
-- (void)sdl_displayCapabilityDidUpdate:(SDLSystemCapability *)systemCapability {
- // we won't use the object in the parameter but the convenience method of the system capability manager
- self.windowCapability = self.systemCapabilityManager.defaultMainWindowCapability;
-
- // Auto-send an updated show
- if ([self sdl_hasData]) {
- [self updateWithCompletionHandler:nil];
- }
-}
-
-- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
- SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
-
- if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
- return;
- }
-
- SDLHMILevel oldLevel = self.currentLevel;
- self.currentLevel = hmiStatus.hmiLevel;
-
- // Auto-send an updated show if we were in NONE and now we are not
- if ([oldLevel isEqualToString:SDLHMILevelNone] && ![self.currentLevel isEqualToString:SDLHMILevelNone] && self.waitingOnHMILevelUpdateToUpdate) {
- [self sdl_updateWithCompletionHandler:nil];
- }
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTextField+ScreenManagerExtensions.m b/SmartDeviceLink/SDLTextField+ScreenManagerExtensions.m
deleted file mode 100644
index 746c5ae23..000000000
--- a/SmartDeviceLink/SDLTextField+ScreenManagerExtensions.m
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// SDLTextField+ScreenManagerExtensions.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 5/20/20.
-// Copyright © 2020 smartdevicelink. All rights reserved.
-//
-
-#import "SDLTextField+ScreenManagerExtensions.h"
-
-@implementation SDLTextField (ScreenManagerExtensions)
-
-+ (NSArray<SDLTextFieldName> *)sdl_allTextFieldNames {
- return @[SDLTextFieldNameETA, SDLTextFieldNameMenuName, SDLTextFieldNameMenuTitle, SDLTextFieldNameStatusBar, SDLTextFieldNameAlertText1, SDLTextFieldNameAlertText2, SDLTextFieldNameAlertText3, SDLTextFieldNameMainField1, SDLTextFieldNameMainField2, SDLTextFieldNameMainField3, SDLTextFieldNameMainField4, SDLTextFieldNameMediaClock, SDLTextFieldNameMediaTrack, SDLTextFieldNamePhoneNumber, SDLTextFieldNameAddressLines, SDLTextFieldNameLocationName, SDLTextFieldNameSliderFooter, SDLTextFieldNameSliderHeader, SDLTextFieldNameTertiaryText, SDLTextFieldNameSecondaryText, SDLTextFieldNameTemplateTitle, SDLTextFieldNameTotalDistance, SDLTextFieldNameNavigationText1, SDLTextFieldNameNavigationText2, SDLTextFieldNameLocationDescription, SDLTextFieldNameScrollableMessageBody, SDLTextFieldNameInitialInteractionText, SDLTextFieldNameAudioPassThruDisplayText1, SDLTextFieldNameAudioPassThruDisplayText2];
-}
-
-+ (NSArray<SDLTextField *> *)allTextFields {
- NSMutableArray<SDLTextField *> *tempTextFields = [NSMutableArray array];
- for (SDLTextFieldName fieldName in [self sdl_allTextFieldNames]) {
- [tempTextFields addObject:[[SDLTextField alloc] initWithName:fieldName characterSet:SDLCharacterSetCID1 width:500 rows:8]];
- }
-
- return tempTextFields;
-}
-
-@end
diff --git a/SmartDeviceLink/SDLTextField.h b/SmartDeviceLink/SDLTextField.h
deleted file mode 100644
index d1dcedb1d..000000000
--- a/SmartDeviceLink/SDLTextField.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// SDLTextField.h
-//
-
-#import "SDLRPCMessage.h"
-
-#import "SDLCharacterSet.h"
-#import "SDLTextFieldName.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * Struct defining the characteristics of a displayed field on the HMI.
- *
- * @since SDL 1.0
- */
-@interface SDLTextField : SDLRPCStruct
-
-/**
- * The enumeration identifying the field.
- *
- * @see SDLTextFieldName
- *
- * Required
- */
-@property (strong, nonatomic) SDLTextFieldName name;
-
-/**
- * The character set that is supported in this field.
- *
- * @see SDLCharacterSet
- *
- * Required
- */
-@property (strong, nonatomic) SDLCharacterSet characterSet;
-
-/**
- * The number of characters in one row of this field.
- *
- * Required, Integer 1 - 500
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *width;
-
-/**
- * The number of rows for this text field.
- *
- * Required, Integer 1 - 8
- */
-@property (strong, nonatomic) NSNumber<SDLInt> *rows;
-
-/// Convenience initalizer for the TextField RPC struct
-/// @param name The name identifying this text field
-/// @param characterSet The character set of this text field
-/// @param width The number of characters per row allowed in this text field
-/// @param rows The number of rows allowed in this text field
-- (instancetype)initWithName:(SDLTextFieldName)name characterSet:(SDLCharacterSet)characterSet width:(NSUInteger)width rows:(NSUInteger)rows;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTextFieldName.h b/SmartDeviceLink/SDLTextFieldName.h
deleted file mode 100644
index 7827e4e2a..000000000
--- a/SmartDeviceLink/SDLTextFieldName.h
+++ /dev/null
@@ -1,201 +0,0 @@
-// SDLTextFieldName.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Names of the text fields that can appear on a SDL display. Used in TextFieldName.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLTextFieldName SDL_SWIFT_ENUM;
-
-/**
- * The first line of the first set of main fields of the persistent display. Applies to SDLShow.
- */
-extern SDLTextFieldName const SDLTextFieldNameMainField1;
-
-/**
- * The second line of the first set of main fields of the persistent display. Applies to SDLShow.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameMainField2;
-
-/**
- * The first line of the second set of main fields of the persistent display. Applies to SDLShow.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameMainField3;
-
-/**
- * The second line of the second set of main fields of the persistent display. Applies to SDLShow.
-
- @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameMainField4;
-
-/**
- The title line of the persistent display. Applies to SDLShow.
-
- @since SDL 6.0
- */
-extern SDLTextFieldName const SDLTextFieldNameTemplateTitle;
-
-/**
- * The status bar on the NGN display. Applies to SDLShow.
- */
-extern SDLTextFieldName const SDLTextFieldNameStatusBar;
-
-/**
- * Text value for MediaClock field. Must be properly formatted according to MediaClockFormat. Applies to SDLShow.
- *
- * @discussion This field is commonly used to show elapsed or remaining time in an audio track or audio capture.
- */
-extern SDLTextFieldName const SDLTextFieldNameMediaClock;
-
-/**
- * The track field of NGN type ACMs. This field is only available for media applications on a NGN display. Applies to SDLShow.
- *
- * @discussion This field is commonly used to show the current track number
- */
-extern SDLTextFieldName const SDLTextFieldNameMediaTrack;
-
-/**
- * The first line of the alert text field. Applies to SDLAlert.
- */
-extern SDLTextFieldName const SDLTextFieldNameAlertText1;
-
-/**
- * The second line of the alert text field. Applies to SDLAlert.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameAlertText2;
-
-/**
- * The third line of the alert text field. Applies to SDLAlert.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameAlertText3;
-
-/**
- * Long form body of text that can include newlines and tabs. Applies to SDLScrollableMessage.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameScrollableMessageBody;
-
-/**
- * First line suggestion for a user response (in the case of VR enabled interaction).
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameInitialInteractionText;
-
-/**
- * First line of navigation text.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameNavigationText1;
-
-/**
- * Second line of navigation text.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameNavigationText2;
-
-/**
- * Estimated Time of Arrival time for navigation.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameETA;
-
-/**
- * Total distance to destination for navigation.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameTotalDistance;
-
-/**
- * First line of text for audio pass thru.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText1;
-
-/**
- * Second line of text for audio pass thru.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText2;
-
-/**
- * Header text for slider.
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameSliderHeader;
-
-/**
- * Footer text for slider
- *
- * @since SDL 2.0
- */
-extern SDLTextFieldName const SDLTextFieldNameSliderFooter;
-
-/**
- * Primary text for SDLChoice
- */
-extern SDLTextFieldName const SDLTextFieldNameMenuName;
-
-/**
- * Secondary text for SDLChoice
- */
-extern SDLTextFieldName const SDLTextFieldNameSecondaryText;
-
-/**
- * Tertiary text for SDLChoice
- */
-extern SDLTextFieldName const SDLTextFieldNameTertiaryText;
-
-/**
- * Optional text to label an app menu button (for certain touchscreen platforms)
- */
-extern SDLTextFieldName const SDLTextFieldNameMenuTitle;
-
-/**
- * Optional name / title of intended location for SDLSendLocation
- *
- * @since SDL 4.0
- */
-extern SDLTextFieldName const SDLTextFieldNameLocationName;
-
-/**
- * Optional description of intended location / establishment (if applicable) for SDLSendLocation
- *
- * @since SDL 4.0
- */
-extern SDLTextFieldName const SDLTextFieldNameLocationDescription;
-
-/**
- * Optional location address (if applicable) for SDLSendLocation
- *
- * @since SDL 4.0
- */
-extern SDLTextFieldName const SDLTextFieldNameAddressLines;
-
-/**
- * Optional hone number of intended location / establishment (if applicable) for SDLSendLocation
- *
- * @since SDL 4.0
- */
-extern SDLTextFieldName const SDLTextFieldNamePhoneNumber;
diff --git a/SmartDeviceLink/SDLTextFieldName.m b/SmartDeviceLink/SDLTextFieldName.m
deleted file mode 100644
index 3bb04fd4b..000000000
--- a/SmartDeviceLink/SDLTextFieldName.m
+++ /dev/null
@@ -1,35 +0,0 @@
-// SDLTextFieldName.m
-//
-
-
-#import "SDLTextFieldName.h"
-
-SDLTextFieldName const SDLTextFieldNameMainField1 = @"mainField1";
-SDLTextFieldName const SDLTextFieldNameMainField2 = @"mainField2";
-SDLTextFieldName const SDLTextFieldNameMainField3 = @"mainField3";
-SDLTextFieldName const SDLTextFieldNameMainField4 = @"mainField4";
-SDLTextFieldName const SDLTextFieldNameTemplateTitle = @"templateTitle";
-SDLTextFieldName const SDLTextFieldNameStatusBar = @"statusBar";
-SDLTextFieldName const SDLTextFieldNameMediaClock = @"mediaClock";
-SDLTextFieldName const SDLTextFieldNameMediaTrack = @"mediaTrack";
-SDLTextFieldName const SDLTextFieldNameAlertText1 = @"alertText1";
-SDLTextFieldName const SDLTextFieldNameAlertText2 = @"alertText2";
-SDLTextFieldName const SDLTextFieldNameAlertText3 = @"alertText3";
-SDLTextFieldName const SDLTextFieldNameScrollableMessageBody = @"scrollableMessageBody";
-SDLTextFieldName const SDLTextFieldNameInitialInteractionText = @"initialInteractionText";
-SDLTextFieldName const SDLTextFieldNameNavigationText1 = @"navigationText1";
-SDLTextFieldName const SDLTextFieldNameNavigationText2 = @"navigationText2";
-SDLTextFieldName const SDLTextFieldNameETA = @"ETA";
-SDLTextFieldName const SDLTextFieldNameTotalDistance = @"totalDistance";
-SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText1 = @"audioPassThruDisplayText1";
-SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText2 = @"audioPassThruDisplayText2";
-SDLTextFieldName const SDLTextFieldNameSliderHeader = @"sliderHeader";
-SDLTextFieldName const SDLTextFieldNameSliderFooter = @"sliderFooter";
-SDLTextFieldName const SDLTextFieldNameMenuName = @"menuName";
-SDLTextFieldName const SDLTextFieldNameSecondaryText = @"secondaryText";
-SDLTextFieldName const SDLTextFieldNameTertiaryText = @"tertiaryText";
-SDLTextFieldName const SDLTextFieldNameMenuTitle = @"menuTitle";
-SDLTextFieldName const SDLTextFieldNameLocationName = @"locationName";
-SDLTextFieldName const SDLTextFieldNameLocationDescription = @"locationDescription";
-SDLTextFieldName const SDLTextFieldNameAddressLines = @"addressLines";
-SDLTextFieldName const SDLTextFieldNamePhoneNumber = @"phoneNumber";
diff --git a/SmartDeviceLink/SDLTimerMode.h b/SmartDeviceLink/SDLTimerMode.h
deleted file mode 100644
index 9e0b27bbf..000000000
--- a/SmartDeviceLink/SDLTimerMode.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// SDLTimerMode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- The direction of a timer. Used in nothing.
- */
-typedef SDLEnum SDLTimerMode SDL_SWIFT_ENUM;
-
-/**
- The timer should count up.
- */
-extern SDLTimerMode const SDLTimerModeUp;
-
-/**
- The timer should count down.
- */
-extern SDLTimerMode const SDLTimerModeDown;
-
-/**
- The timer should not count.
- */
-extern SDLTimerMode const SDLTimerModeNone;
diff --git a/SmartDeviceLink/SDLTouchManager.h b/SmartDeviceLink/SDLTouchManager.h
deleted file mode 100644
index c762d6822..000000000
--- a/SmartDeviceLink/SDLTouchManager.h
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// SDLTouchManager.h
-// SmartDeviceLink-iOS
-//
-// Created by Muller, Alexander (A.) on 6/14/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-#import "SDLTouchType.h"
-
-@protocol SDLFocusableItemHitTester;
-@protocol SDLTouchManagerDelegate;
-
-@class SDLTouch;
-@class SDLStreamingVideoScaleManager;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Handler for touch events
-///
-/// @param touch Describes a touch location
-/// @param type The type of touch
-typedef void(^SDLTouchEventHandler)(SDLTouch *touch, SDLTouchType type);
-
-/// Touch Manager responsible for processing touch event notifications.
-@interface SDLTouchManager : NSObject
-
-/**
- Notified of processed touches such as pinches, pans, and taps
- */
-@property (nonatomic, weak, nullable) id<SDLTouchManagerDelegate> touchEventDelegate;
-
-/**
- Returns all OnTouchEvent notifications as SDLTouch and SDLTouchType objects.
- */
-@property (copy, nonatomic, nullable) SDLTouchEventHandler touchEventHandler;
-
-/**
- Distance between two taps on the screen, in the head unit's coordinate system, used for registering double-tap callbacks.
-
- Defaults to 50 px.
- */
-@property (nonatomic, assign) CGFloat tapDistanceThreshold;
-
-/**
- Minimum distance for a pan gesture in the head unit's coordinate system, used for registering pan callbacks.
-
- Defaults to 8 px.
- */
-@property (nonatomic, assign) CGFloat panDistanceThreshold;
-
-/**
- Time (in seconds) between tap events to register a double-tap callback. This must be greater than 0.0.
-
- Default is 0.4 seconds.
- */
-@property (nonatomic, assign) CGFloat tapTimeThreshold;
-
-/**
- Time (in seconds) between movement events to register panning or pinching callbacks.
-
- Default is 0.05 seconds.
- */
-@property (nonatomic, assign) CGFloat movementTimeThreshold __deprecated_msg("This is now unused, the movement time threshold is now synced to the framerate automatically");
-
-/**
- If set to NO, the display link syncing will be ignored and `movementTimeThreshold` will be used. Defaults to YES.
- */
-@property (assign, nonatomic) BOOL enableSyncedPanning;
-
-/**
- Boolean denoting whether or not the touch manager should deliver touch event callbacks.
-
- Default is true.
- */
-@property (nonatomic, assign, getter=isTouchEnabled) BOOL touchEnabled;
-
-/**
- Cancels pending touch event timers that may be in progress.
-
- Currently only impacts the timer used to register single taps.
- */
-- (void)cancelPendingTouches;
-
-/// Initializer unavailable
-- (instancetype)init NS_UNAVAILABLE;
-
-/**
- Initialize a touch manager with a hit tester if available
-
- @param hitTester The hit tester to be used to correlate a point with a view
- @return The initialized touch manager
- */
-- (instancetype)initWithHitTester:(nullable id<SDLFocusableItemHitTester>)hitTester __deprecated_msg("Use initWithHitTester:hitTester videoScaleManager: instead");
-
-/**
- Initialize a touch manager with a hit tester and a video scale manager.
-
- @param hitTester The hit tester to be used to correlate a point with a view
- @param videoScaleManager The scale manager that scales from the display screen coordinate system to the app's viewport coordinate system
- @return The initialized touch manager
- */
-- (instancetype)initWithHitTester:(nullable id<SDLFocusableItemHitTester>)hitTester videoScaleManager:(SDLStreamingVideoScaleManager *)videoScaleManager;
-
-/**
- Called by SDLStreamingMediaManager in sync with the streaming framerate. This helps to moderate panning gestures by allowing the UI to be modified in time with the framerate.
- */
-- (void)syncFrame;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTouchManager.m b/SmartDeviceLink/SDLTouchManager.m
deleted file mode 100644
index 242f4e46e..000000000
--- a/SmartDeviceLink/SDLTouchManager.m
+++ /dev/null
@@ -1,511 +0,0 @@
-//
-// SDLTouchManager.m
-// SmartDeviceLink-iOS
-//
-// Created by Muller, Alexander (A.) on 6/14/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import "SDLTouchManager.h"
-
-#import "CGPoint_Util.h"
-#import "SDLGlobals.h"
-#import "SDLFocusableItemHitTester.h"
-#import "SDLLogMacros.h"
-#import "SDLNotificationConstants.h"
-#import "SDLOnTouchEvent.h"
-#import "SDLPinchGesture.h"
-#import "SDLRPCNotificationNotification.h"
-#import "SDLStreamingVideoScaleManager.h"
-#import "SDLTimer.h"
-#import "SDLTouch.h"
-#import "SDLTouchCoord.h"
-#import "SDLTouchEvent.h"
-#import "SDLTouchManagerDelegate.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef NS_ENUM(NSUInteger, SDLPerformingTouchType) {
- SDLPerformingTouchTypeNone,
- SDLPerformingTouchTypeSingleTouch,
- SDLPerformingTouchTypeMultiTouch,
- SDLPerformingTouchTypePanningTouch
-};
-
-/*!
- * @abstract
- * Touch Manager will ignore touches that represent more than 2 fingers on the screen.
- */
-static NSUInteger const MaximumNumberOfTouches = 2;
-
-@interface SDLTouchManager ()
-
-/*!
- * @abstract
- * First touch received from onOnTouchEvent.
- */
-@property (nonatomic, strong, nullable) SDLTouch *firstTouch;
-
-/*!
- * @abstract
- * Previous touch received from onOnTouchEvent.
- */
-@property (nonatomic, strong, nullable) SDLTouch *previousTouch;
-
-/*!
- * @abstract
- * Cached previous single tap used for double tap detection.
- */
-@property (nonatomic, strong, nullable) SDLTouch *singleTapTouch;
-
-/*!
- * @abstract
- * Distance of a previously generated pinch event. Used to calculate the scale of zoom motion.
- */
-@property (nonatomic, assign) CGFloat previousPinchDistance;
-
-/*!
- * @abstract
- * Current in-progress pinch gesture.
- */
-@property (nonatomic, strong, nullable) SDLPinchGesture *currentPinchGesture;
-
-/*!
- * @abstract
- * Timer used for distinguishing between single & double taps.
- */
-@property (nonatomic, strong, nullable) SDLTimer *singleTapTimer;
-
-/*!
- * @abstract
- * Current touch type being performed.
- */
-@property (nonatomic, assign) SDLPerformingTouchType performingTouchType;
-
-/**
- A hit tester that allows us to check for a view based on coordinates, if available.
- */
-@property (nonatomic, weak, nullable) id<SDLFocusableItemHitTester> hitTester;
-
-/**
- The last panning touch we received
- */
-@property (nonatomic) CGPoint lastStoredTouchLocation;
-
-/**
- The last panning touch that we notified the developer about
- */
-@property (nonatomic) CGPoint lastNotifiedTouchLocation;
-
-/**
- The scale manager that scales from the display screen coordinate system to the app's viewport coordinate system
-*/
-@property (strong, nonatomic) SDLStreamingVideoScaleManager *videoScaleManager;
-
-@end
-
-@implementation SDLTouchManager
-
-- (instancetype)initWithHitTester:(nullable id<SDLFocusableItemHitTester>)hitTester {
- return [self initWithHitTester:hitTester videoScaleManager:[[SDLStreamingVideoScaleManager alloc] init]];
-}
-
-- (instancetype)initWithHitTester:(nullable id<SDLFocusableItemHitTester>)hitTester videoScaleManager:(SDLStreamingVideoScaleManager *)videoScaleManager {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _hitTester = hitTester;
- _videoScaleManager = videoScaleManager;
- _movementTimeThreshold = 0.05f;
- _tapTimeThreshold = 0.4f;
- _tapDistanceThreshold = 50.0f;
- _panDistanceThreshold = 8.0f;
- _touchEnabled = YES;
- _enableSyncedPanning = YES;
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_onTouchEvent:) name:SDLDidReceiveTouchEventNotification object:nil];
-
- return self;
-}
-
-#pragma mark - Public
-- (void)cancelPendingTouches {
- [self sdl_cancelSingleTapTimer];
-}
-
-- (void)syncFrame {
- if (!self.isTouchEnabled || (!self.touchEventHandler && !self.touchEventDelegate)) {
- return;
- }
-
- if (self.performingTouchType == SDLPerformingTouchTypePanningTouch) {
- CGPoint storedTouchLocation = self.lastStoredTouchLocation;
- CGPoint notifiedTouchLocation = self.lastNotifiedTouchLocation;
-
- if (CGPointEqualToPoint(storedTouchLocation, CGPointZero) ||
- CGPointEqualToPoint(notifiedTouchLocation, CGPointZero) ||
- CGPointEqualToPoint(storedTouchLocation, notifiedTouchLocation)) {
- return;
- }
-
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceivePanningFromPoint:toPoint:)]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.touchEventDelegate touchManager:self
- didReceivePanningFromPoint:notifiedTouchLocation
- toPoint:storedTouchLocation];
-
- self.lastNotifiedTouchLocation = storedTouchLocation;
- });
- }
- } else if (self.performingTouchType == SDLPerformingTouchTypeMultiTouch) {
- if (self.previousPinchDistance == self.currentPinchGesture.distance) {
- return;
- }
-
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceivePinchAtCenterPoint:withScale:)]) {
-
- CGFloat scale = self.currentPinchGesture.distance / self.previousPinchDistance;
- CGPoint center = self.currentPinchGesture.center;
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.touchEventDelegate touchManager:self
- didReceivePinchAtCenterPoint:center
- withScale:scale];
- });
- }
-
- self.previousPinchDistance = self.currentPinchGesture.distance;
- }
-}
-
-#pragma mark - SDLDidReceiveTouchEventNotification
-
-/**
- * Handles detecting the type and state of the gesture and notifies the appropriate delegate callbacks.
-
- * @param notification A SDLOnTouchEvent notification.
- */
-- (void)sdl_onTouchEvent:(SDLRPCNotificationNotification *)notification {
- if (!self.isTouchEnabled
- || (!self.touchEventHandler && !self.touchEventDelegate)
- || ![notification.notification isKindOfClass:SDLOnTouchEvent.class]) {
- return;
- }
-
- SDLOnTouchEvent *onTouchEvent = (SDLOnTouchEvent *)notification.notification;
- onTouchEvent = [self.videoScaleManager scaleTouchEventCoordinates:onTouchEvent];
-
- SDLTouchType touchType = onTouchEvent.type;
- [onTouchEvent.event enumerateObjectsUsingBlock:^(SDLTouchEvent *touchEvent, NSUInteger idx, BOOL *stop) {
- SDLTouch *touch = [[SDLTouch alloc] initWithTouchEvent:touchEvent];
-
- if (self.touchEventHandler != NULL) {
- dispatch_async(dispatch_get_main_queue(), ^{
- self.touchEventHandler(touch, touchType);
- });
- }
-
- if (!self.touchEventDelegate || (touch.identifier > MaximumNumberOfTouches)) {
- return;
- }
-
- if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeBegin]) {
- [self sdl_handleTouchBegan:touch];
- } else if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeMove]) {
- [self sdl_handleTouchMoved:touch];
- } else if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeEnd]) {
- [self sdl_handleTouchEnded:touch];
- } else if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeCancel]) {
- [self sdl_handleTouchCanceled:touch];
- }
- }];
-}
-
-#pragma mark - Private
-/**
- * Handles a BEGIN touch event sent by Core
- *
- * @param touch Gesture information
- */
-- (void)sdl_handleTouchBegan:(SDLTouch *)touch {
- _performingTouchType = SDLPerformingTouchTypeSingleTouch;
-
- switch (touch.identifier) {
- case SDLTouchIdentifierFirstFinger: {
- self.firstTouch = touch;
- self.previousTouch = touch;
- } break;
- case SDLTouchIdentifierSecondFinger: {
- _performingTouchType = SDLPerformingTouchTypeMultiTouch;
- self.currentPinchGesture = [[SDLPinchGesture alloc] initWithFirstTouch:self.previousTouch secondTouch:touch];
- self.previousPinchDistance = self.currentPinchGesture.distance;
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:pinchDidStartInView:atCenterPoint:)]) {
- CGPoint center = self.currentPinchGesture.center;
- dispatch_async(dispatch_get_main_queue(), ^{
- UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:center] : nil;
- [self.touchEventDelegate touchManager:self pinchDidStartInView:hitView atCenterPoint:center];
- });
- }
- } break;
- }
-}
-
-/**
- * Handles a MOVE touch event sent by Core
- *
- * @param touch Gesture information
- */
-- (void)sdl_handleTouchMoved:(SDLTouch *)touch {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- if (!self.enableSyncedPanning &&
- ((touch.timeStamp - self.previousTouch.timeStamp) <= (self.movementTimeThreshold * NSEC_PER_USEC))) {
- return; // no-op
- }
-#pragma clang diagnostic pop
-
- CGFloat xDelta = fabs(touch.location.x - self.firstTouch.location.x);
- CGFloat yDelta = fabs(touch.location.y - self.firstTouch.location.y);
- if (xDelta <= self.panDistanceThreshold && yDelta <= self.panDistanceThreshold) {
- return;
- }
-
- switch (self.performingTouchType) {
- case SDLPerformingTouchTypeMultiTouch: {
- switch (touch.identifier) {
- case SDLTouchIdentifierFirstFinger: {
- self.currentPinchGesture.firstTouch = touch;
- } break;
- case SDLTouchIdentifierSecondFinger: {
- self.currentPinchGesture.secondTouch = touch;
- } break;
- }
-
- if (!self.enableSyncedPanning) {
- [self syncFrame];
- }
- } break;
- case SDLPerformingTouchTypeSingleTouch: {
- self.lastNotifiedTouchLocation = touch.location;
- self.lastStoredTouchLocation = touch.location;
-
- _performingTouchType = SDLPerformingTouchTypePanningTouch;
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:panningDidStartInView:atPoint:)]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:touch.location] : nil;
- [self.touchEventDelegate touchManager:self panningDidStartInView:hitView atPoint:touch.location];
- });
- }
- } break;
- case SDLPerformingTouchTypePanningTouch: {
- if (!self.enableSyncedPanning) {
- [self syncFrame];
- }
- self.lastStoredTouchLocation = touch.location;
- } break;
- case SDLPerformingTouchTypeNone: break;
- }
-
- self.previousTouch = touch;
-}
-
-/**
- * Handles a END touch type notification sent by Core
- *
- * @param touch Gesture information
- */
-- (void)sdl_handleTouchEnded:(SDLTouch *)touch {
- switch (self.performingTouchType) {
- case SDLPerformingTouchTypeMultiTouch: {
- [self sdl_setMultiTouchFingerTouchForTouch:touch];
- if (self.currentPinchGesture.isValid) {
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:pinchDidEndInView:atCenterPoint:)]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:self.currentPinchGesture.center] : nil;
- [self.touchEventDelegate touchManager:self pinchDidEndInView:hitView atCenterPoint:self.currentPinchGesture.center];
- self.currentPinchGesture = nil;
- });
- } else {
- self.currentPinchGesture = nil;
- }
- }
- } break;
- case SDLPerformingTouchTypePanningTouch: {
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:panningDidEndInView:atPoint:)]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:touch.location] : nil;
- [self.touchEventDelegate touchManager:self panningDidEndInView:hitView atPoint:touch.location];
- });
- }
- } break;
- case SDLPerformingTouchTypeSingleTouch: {
- if (self.singleTapTimer == nil) {
- // Initial Tap
- self.singleTapTouch = touch;
- [self sdl_initializeSingleTapTimerAtPoint:self.singleTapTouch.location];
- } else {
- // Double Tap
- [self sdl_cancelSingleTapTimer];
-
- NSUInteger timeStampDelta = touch.timeStamp - self.singleTapTouch.timeStamp;
- CGFloat xDelta = fabs(touch.location.x - self.singleTapTouch.location.x);
- CGFloat yDelta = fabs(touch.location.y - self.singleTapTouch.location.y);
-
- if (timeStampDelta <= self.tapTimeThreshold * NSEC_PER_USEC && xDelta <= self.tapDistanceThreshold && yDelta <= self.tapDistanceThreshold) {
- CGPoint centerPoint = CGPointCenterOfPoints(touch.location,
- self.singleTapTouch.location);
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceiveDoubleTapForView:atPoint:)]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:centerPoint] : nil;
- [self.touchEventDelegate touchManager:self didReceiveDoubleTapForView:hitView atPoint:centerPoint];
- });
- }
- }
-
- self.singleTapTouch = nil;
- }
- } break;
- case SDLPerformingTouchTypeNone: break;
- }
-
- self.firstTouch = nil;
- self.previousTouch = nil;
- _performingTouchType = SDLPerformingTouchTypeNone;
-}
-
-/**
- * Handles a CANCEL touch event sent by CORE. A CANCEL touch event is sent when a gesture is interrupted during a video stream. This can happen when a system dialog box appears on the screen, such as when the user is alerted about an incoming phone call.
- *
- * Pinch and pan gesture subscribers are notified if the gesture is canceled. Tap gestures are simply canceled without notification.
- *
- * @param touch Gesture information
- */
-- (void)sdl_handleTouchCanceled:(SDLTouch *)touch {
- if (self.singleTapTimer != nil) {
- // Cancel any ongoing single tap timer
- [self sdl_cancelSingleTapTimer];
- self.singleTapTouch = nil;
- }
-
- switch (self.performingTouchType) {
- case SDLPerformingTouchTypeMultiTouch: {
- [self sdl_setMultiTouchFingerTouchForTouch:touch];
- if (self.currentPinchGesture.isValid) {
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:pinchCanceledAtCenterPoint:)]) {
- CGPoint center = self.currentPinchGesture.center;
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.touchEventDelegate touchManager:self
- pinchCanceledAtCenterPoint:center];
- });
- }
- self.currentPinchGesture = nil;
- }
- } break;
- case SDLPerformingTouchTypePanningTouch: {
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:panningCanceledAtPoint:)]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.touchEventDelegate touchManager:self
- panningCanceledAtPoint:touch.location];
- });
- }
- } break;
- case SDLPerformingTouchTypeSingleTouch: // fallthrough
- case SDLPerformingTouchTypeNone: break;
- }
-
- self.firstTouch = nil;
- self.previousTouch = nil;
- _performingTouchType = SDLPerformingTouchTypeNone;
-}
-
-#pragma mark - Helpers
-
-/**
- * Saves the pinch touch gesture to the correct finger
- *
- * @param touch Gesture information
- */
-- (void)sdl_setMultiTouchFingerTouchForTouch:(SDLTouch *)touch {
- switch (touch.identifier) {
- case SDLTouchIdentifierFirstFinger: {
- self.currentPinchGesture.firstTouch = touch;
- } break;
- case SDLTouchIdentifierSecondFinger: {
- self.currentPinchGesture.secondTouch = touch;
- } break;
- }
-}
-
-/**
- * Creates a timer used to detect the type of tap gesture (single or double tap)
- *
- * @param point Screen coordinates of the tap gesture
- */
-- (void)sdl_initializeSingleTapTimerAtPoint:(CGPoint)point {
- if (self.singleTapTimer != nil) {
- [self sdl_cancelSingleTapTimer];
- }
-
- __weak typeof(self) weakSelf = self;
- self.singleTapTimer = [[SDLTimer alloc] initWithDuration:self.tapTimeThreshold];
- self.singleTapTimer.elapsedBlock = ^{
- [weakSelf sdl_singleTapTimerCallbackWithPoint:point];
- };
- [self.singleTapTimer start];
-}
-
-/**
- The method that will be called when the timer fires that was started in `sdl_initializeSingleTapTimerAtPoint:`.
-
- This is called on the main thread based on `sdl_initializeSingleTapTimerAtPoint:`
-
- @param point The point where the tap occurred
- */
-- (void)sdl_singleTapTimerCallbackWithPoint:(CGPoint)point {
- self.singleTapTouch = nil;
- [self sdl_cancelSingleTapTimer];
- if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceiveSingleTapForView:atPoint:)]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self sdl_getSingleTapHitView:point hitViewHandler:^(UIView * _Nullable selectedView) {
- [self.touchEventDelegate touchManager:self didReceiveSingleTapForView:selectedView atPoint:point];
- }];
- });
- }
-}
-
-/**
- * HAX to preserve the thread on which the delegate is notified for single taps; returning on the main thread would be a breaking change. All other touch gestures currently notify the delegate on the main thread. The single tap timer runs on a background thread so when a single tap is detected the hit test needs to be done on the main thread and then the result is returned on a background thread.
- *
- * Checks if a single tap is inside a view. As the single tap timer is run on a background thread, the check is done on a main thread and then the result is returned on a background thread.
- *
- * @param point Screen coordinates of the tap gesture
- * @param hitViewHandler A handler that returns the view the point is inside of; nil if the point does not lie inside of a view
- */
-- (void)sdl_getSingleTapHitView:(CGPoint)point hitViewHandler:(nullable void (^)(UIView * __nullable hitView))hitViewHandler {
- if (!self.hitTester) {
- if (!hitViewHandler) { return; }
- return hitViewHandler(nil);
- }
-
- UIView *hitView = [self.hitTester viewForPoint:point];
- if (!hitViewHandler) { return; }
-
- return hitViewHandler(hitView);
-}
-
-/**
- * Cancels a tap gesture timer
- */
-- (void)sdl_cancelSingleTapTimer {
- if (self.singleTapTimer == nil) {
- return;
- }
-
- [self.singleTapTimer cancel];
- self.singleTapTimer = nil;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTouchType.h b/SmartDeviceLink/SDLTouchType.h
deleted file mode 100644
index cce21c053..000000000
--- a/SmartDeviceLink/SDLTouchType.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// SDLTouchType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- The type of a touch in a projection application. Used in OnTouchEvent.
- */
-typedef SDLEnum SDLTouchType SDL_SWIFT_ENUM;
-
-/**
- The touch is the beginning of a finger pressed on the display.
- */
-extern SDLTouchType const SDLTouchTypeBegin;
-
-/**
- The touch is the movement of a finger pressed on the display.
- */
-extern SDLTouchType const SDLTouchTypeMove;
-
-/**
- The touch is the ending of a finger pressed on the display.
- */
-extern SDLTouchType const SDLTouchTypeEnd;
-
-/**
- The touch is the cancellation of a finger pressed on the display.
- */
-extern SDLTouchType const SDLTouchTypeCancel;
diff --git a/SmartDeviceLink/SDLTriggerSource.h b/SmartDeviceLink/SDLTriggerSource.h
deleted file mode 100644
index d6d44db53..000000000
--- a/SmartDeviceLink/SDLTriggerSource.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLTriggerSource.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Indicates whether choice/command was selected via VR or via a menu selection (using SEEKRIGHT/SEEKLEFT, TUNEUP, TUNEDOWN, OK buttons). Used in PerformInteractionResponse and OnCommand.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLTriggerSource SDL_SWIFT_ENUM;
-
-/**
- * Selection made via menu
- */
-extern SDLTriggerSource const SDLTriggerSourceMenu;
-
-/**
- * Selection made via Voice session
- */
-extern SDLTriggerSource const SDLTriggerSourceVoiceRecognition;
-
-/**
- * Selection made via Keyboard
- */
-extern SDLTriggerSource const SDLTriggerSourceKeyboard;
diff --git a/SmartDeviceLink/SDLTurnSignal.h b/SmartDeviceLink/SDLTurnSignal.h
deleted file mode 100644
index daca0b05b..000000000
--- a/SmartDeviceLink/SDLTurnSignal.h
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// SDLTurnSignal.h
-// SmartDeviceLink
-//
-// Created by Nicole on 7/19/18.
-// Copyright © 2018 smartdevicelink. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enumeration that describes the status of the turn light indicator.
- */
-typedef SDLEnum SDLTurnSignal SDL_SWIFT_ENUM;
-
-/**
- * Turn signal is OFF
- */
-extern SDLTurnSignal const SDLTurnSignalOff;
-
-/**
- * Left turn signal is on
- */
-extern SDLTurnSignal const SDLTurnSignalLeft;
-
-/**
- * Right turn signal is on
- */
-extern SDLTurnSignal const SDLTurnSignalRight;
-
-/**
- * Both signals (left and right) are on
- */
-extern SDLTurnSignal const SDLTurnSignalBoth;
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleData.h b/SmartDeviceLink/SDLUnsubscribeVehicleData.h
deleted file mode 100644
index 370f34882..000000000
--- a/SmartDeviceLink/SDLUnsubscribeVehicleData.h
+++ /dev/null
@@ -1,293 +0,0 @@
-// SDLUnsubscribeVehicleData.h
-//
-
-
-#import "SDLRPCRequest.h"
-
-/**
- * This function is used to unsubscribe the notifications from the
- * subscribeVehicleData function
- * <p>
- * Function Group: Location, VehicleInfo and DrivingChara
- * <p>
- * <b>HMILevel needs to be FULL, LIMITED or BACKGROUND</b>
- * </p>
- *
- * @since SmartDeviceLink 2.0<br/>
- * See SDLSubscribeVehicleData SDLGetVehicleData
- */
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLUnsubscribeVehicleData : SDLRPCRequest
-
-/**
- * Convenience init for unsubscribing to all possible vehicle data items.
- *
- * @param accelerationPedalPosition Unsubscribe to accelerationPedalPosition
- * @param airbagStatus Unsubscribe to airbagStatus
- * @param beltStatus Unsubscribe to beltStatus
- * @param bodyInformation Unsubscribe to bodyInformation
- * @param clusterModeStatus Unsubscribe to clusterModeStatus
- * @param deviceStatus Unsubscribe to deviceStatus
- * @param driverBraking Unsubscribe to driverBraking
- * @param eCallInfo Unsubscribe to eCallInfo
- * @param emergencyEvent Unsubscribe to emergencyEvent
- * @param engineTorque Unsubscribe to engineTorque
- * @param externalTemperature Unsubscribe to externalTemperature
- * @param fuelLevel Unsubscribe to fuelLevel
- * @param fuelLevelState Unsubscribe to fuelLevelState
- * @param gps Unsubscribe to gps
- * @param headLampStatus Unsubscribe to headLampStatus
- * @param instantFuelConsumption Unsubscribe to instantFuelConsumption
- * @param myKey Unsubscribe to myKey
- * @param odometer Unsubscribe to odometer
- * @param prndl Unsubscribe to prndl
- * @param rpm Unsubscribe to rpm
- * @param speed Unsubscribe to speed
- * @param steeringWheelAngle Unsubscribe to steeringWheelAngle
- * @param tirePressure Unsubscribe to tirePressure
- * @param wiperStatus Unsubscribe to wiperStatus
- * @return A SDLUnsubscribeVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
-
-/**
- * Convenience init for unsubscribing to all possible vehicle data items.
- *
- * @param accelerationPedalPosition Unsubscribe to accelerationPedalPosition
- * @param airbagStatus Unsubscribe to airbagStatus
- * @param beltStatus Unsubscribe to beltStatus
- * @param bodyInformation Unsubscribe to bodyInformation
- * @param clusterModeStatus Unsubscribe to clusterModeStatus
- * @param deviceStatus Unsubscribe to deviceStatus
- * @param driverBraking Unsubscribe to driverBraking
- * @param eCallInfo Unsubscribe to eCallInfo
- * @param electronicParkBrakeStatus Unsubscribe to electronicParkBrakeStatus
- * @param emergencyEvent Unsubscribe to emergencyEvent
- * @param engineOilLife Unsubscribe to engineOilLife
- * @param engineTorque Unsubscribe to engineTorque
- * @param externalTemperature Unsubscribe to externalTemperature
- * @param fuelLevel Unsubscribe to fuelLevel
- * @param fuelLevelState Unsubscribe to fuelLevelState
- * @param fuelRange Unsubscribe to fuelRange
- * @param gps Unsubscribe to gps
- * @param headLampStatus Unsubscribe to headLampStatus
- * @param instantFuelConsumption Unsubscribe to instantFuelConsumption
- * @param myKey Unsubscribe to myKey
- * @param odometer Unsubscribe to odometer
- * @param prndl Unsubscribe to prndl
- * @param rpm Unsubscribe to rpm
- * @param speed Unsubscribe to speed
- * @param steeringWheelAngle Unsubscribe to steeringWheelAngle
- * @param tirePressure Unsubscribe to tirePressure
- * @param turnSignal Unsubscribe to turnSignal
- * @param wiperStatus Unsubscribe to wiperStatus
- * @return A SDLUnsubscribeVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus: instead");
-
-/**
- * Convenience init for unsubscribing to all possible vehicle data items.
- *
- * @param accelerationPedalPosition Unsubscribe to accelerationPedalPosition
- * @param airbagStatus Unsubscribe to airbagStatus
- * @param beltStatus Unsubscribe to beltStatus
- * @param bodyInformation Unsubscribe to bodyInformation
- * @param cloudAppVehicleID Unsubscribe to cloudAppVehicleID
- * @param clusterModeStatus Unsubscribe to clusterModeStatus
- * @param deviceStatus Unsubscribe to deviceStatus
- * @param driverBraking Unsubscribe to driverBraking
- * @param eCallInfo Unsubscribe to eCallInfo
- * @param electronicParkBrakeStatus Unsubscribe to electronicParkBrakeStatus
- * @param emergencyEvent Unsubscribe to emergencyEvent
- * @param engineOilLife Unsubscribe to engineOilLife
- * @param engineTorque Unsubscribe to engineTorque
- * @param externalTemperature Unsubscribe to externalTemperature
- * @param fuelLevel Unsubscribe to fuelLevel
- * @param fuelLevelState Unsubscribe to fuelLevelState
- * @param fuelRange Unsubscribe to fuelRange
- * @param gps Unsubscribe to gps
- * @param headLampStatus Unsubscribe to headLampStatus
- * @param instantFuelConsumption Unsubscribe to instantFuelConsumption
- * @param myKey Unsubscribe to myKey
- * @param odometer Unsubscribe to odometer
- * @param prndl Unsubscribe to prndl
- * @param rpm Unsubscribe to rpm
- * @param speed Unsubscribe to speed
- * @param steeringWheelAngle Unsubscribe to steeringWheelAngle
- * @param tirePressure Unsubscribe to tirePressure
- * @param turnSignal Unsubscribe to turnSignal
- * @param wiperStatus Unsubscribe to wiperStatus
- * @return A SDLUnsubscribeVehicleData object
- */
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus;
-
-/**
- * If true, unsubscribes from GPS
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *gps;
-
-/**
- * If true, unsubscribes from Speed
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *speed;
-
-/**
- * If true, unsubscribes from RPM
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *rpm;
-
-/**
- * If true, unsubscribes from Fuel Level
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel;
-
-/**
- * If true, unsubscribes from Fuel Level State
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel_State;
-
-/**
- * If true, unsubscribes from Fuel Range
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelRange;
-
-/**
- * If true, unsubscribes from Instant Fuel Consumption
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *instantFuelConsumption;
-
-/**
- * If true, unsubscribes from External Temperature
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *externalTemperature;
-
-/**
- * If true, unsubscribes from PRNDL
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *prndl;
-
-/**
- * If true, unsubscribes from Tire Pressure
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *tirePressure;
-
-/**
- * If true, unsubscribes from Odometer
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *odometer;
-
-/**
- * If true, unsubscribes from Belt Status
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *beltStatus;
-
-/**
- * If true, unsubscribes from Body Information
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *bodyInformation;
-
-/**
- * If true, unsubscribes from Device Status
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *deviceStatus;
-
-/**
- * If true, unsubscribes from Driver Braking
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *driverBraking;
-
-/**
- * If true, unsubscribes from Wiper Status
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *wiperStatus;
-
-/**
- * If true, unsubscribes from Head Lamp Status
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *headLampStatus;
-
-/**
- * If true, unsubscribes from Engine Oil Life
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineOilLife;
-
-/**
- * If true, unsubscribes from Engine Torque
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineTorque;
-
-/**
- * If true, unsubscribes from Acc Pedal Position
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *accPedalPosition;
-
-/**
- * If true, unsubscribes from Steering Wheel Angle data
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *steeringWheelAngle;
-
-/**
- * If true, unsubscribes from eCallInfo
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *eCallInfo;
-
-/**
- * If true, unsubscribes from Airbag Status
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *airbagStatus;
-
-/**
- * If true, unsubscribes from Emergency Event
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *emergencyEvent;
-
-/**
- * If true, unsubscribes from Cluster Mode Status
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *clusterModeStatus;
-
-/**
- * If true, unsubscribes from My Key
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *myKey;
-
-/**
- A boolean value. If true, unsubscribes to the Electronic Parking Brake Status
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *electronicParkBrakeStatus;
-
-/**
- A boolean value. If true, unsubscribes to the Turn Signal
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *turnSignal;
-
-/**
- A boolean value. If true, unsubscribes to the Cloud App Vehicle ID
- */
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
-
-/**
- Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @param vehicleDataState A boolean value. If true, requests an unsubscribes of the OEM custom vehicle data item.
-
- Added SmartDeviceLink 6.0
- */
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
-
-/**
- Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item to unsubscribe for.
- @return A boolean value indicating if an unsubscribe request will occur for the OEM custom vehicle data item.
-
- Added SmartDeviceLink 6.0
- */
-- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleData.m b/SmartDeviceLink/SDLUnsubscribeVehicleData.m
deleted file mode 100644
index e83148be0..000000000
--- a/SmartDeviceLink/SDLUnsubscribeVehicleData.m
+++ /dev/null
@@ -1,313 +0,0 @@
-// SDLUnsubscribeVehicleData.m
-//
-
-
-#import "SDLUnsubscribeVehicleData.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLUnsubscribeVehicleData
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure wiperStatus:(BOOL)wiperStatus {
- return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:NO emergencyEvent:emergencyEvent engineOilLife:NO engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:NO gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:NO wiperStatus:wiperStatus];
-}
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
- return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation cloudAppVehicleID:NO clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:electronicParkBrakeStatus emergencyEvent:emergencyEvent engineOilLife:engineOilLife engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:fuelRange gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:turnSignal wiperStatus:wiperStatus];
-}
-
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
- self = [self init];
- if (!self) {
- return nil;
- }
-
- self.accPedalPosition = @(accelerationPedalPosition);
- self.airbagStatus = @(airbagStatus);
- self.beltStatus = @(beltStatus);
- self.bodyInformation = @(bodyInformation);
- self.cloudAppVehicleID = @(cloudAppVehicleID);
- self.clusterModeStatus = @(clusterModeStatus);
- self.deviceStatus = @(deviceStatus);
- self.driverBraking = @(driverBraking);
- self.eCallInfo = @(eCallInfo);
- self.electronicParkBrakeStatus = @(electronicParkBrakeStatus);
- self.emergencyEvent = @(emergencyEvent);
- self.engineOilLife = @(engineOilLife);
- self.engineTorque = @(engineTorque);
- self.externalTemperature = @(externalTemperature);
- self.fuelLevel = @(fuelLevel);
- self.fuelLevel_State = @(fuelLevelState);
- self.fuelRange = @(fuelRange);
- self.myKey = @(myKey);
- self.odometer = @(odometer);
- self.gps = @(gps);
- self.headLampStatus = @(headLampStatus);
- self.instantFuelConsumption = @(instantFuelConsumption);
- self.prndl = @(prndl);
- self.rpm = @(rpm);
- self.speed = @(speed);
- self.steeringWheelAngle = @(steeringWheelAngle);
- self.tirePressure = @(tirePressure);
- self.turnSignal = @(turnSignal);
- self.wiperStatus = @(wiperStatus);
-
- return self;
-}
-
-- (void)setGps:(nullable NSNumber<SDLBool> *)gps {
- [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
-}
-
-- (nullable NSNumber<SDLBool> *)gps {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSpeed:(nullable NSNumber<SDLBool> *)speed {
- [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
-}
-
-- (nullable NSNumber<SDLBool> *)speed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
-}
-
-- (void)setRpm:(nullable NSNumber<SDLBool> *)rpm {
- [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
-}
-
-- (nullable NSNumber<SDLBool> *)rpm {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel:(nullable NSNumber<SDLBool> *)fuelLevel {
- [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelLevel {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelLevel_State:(nullable NSNumber<SDLBool> *)fuelLevel_State {
- [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelLevel_State {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil];
-}
-
-- (void)setFuelRange:(nullable NSNumber<SDLBool> *)fuelRange {
- [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
-}
-
-- (nullable NSNumber<SDLBool> *)fuelRange {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil];
-}
-
-- (void)setInstantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption {
- [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
-}
-
-- (nullable NSNumber<SDLBool> *)instantFuelConsumption {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
-}
-
-- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
- [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
-}
-
-- (nullable NSNumber<SDLBool> *)externalTemperature {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
-}
-
-- (void)setPrndl:(nullable NSNumber<SDLBool> *)prndl {
- [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
-}
-
-- (nullable NSNumber<SDLBool> *)prndl {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTirePressure:(nullable NSNumber<SDLBool> *)tirePressure {
- [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
-}
-
-- (nullable NSNumber<SDLBool> *)tirePressure {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil];
-}
-
-- (void)setOdometer:(nullable NSNumber<SDLBool> *)odometer {
- [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
-}
-
-- (nullable NSNumber<SDLBool> *)odometer {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBeltStatus:(nullable NSNumber<SDLBool> *)beltStatus {
- [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)beltStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setBodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation {
- [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
-}
-
-- (nullable NSNumber<SDLBool> *)bodyInformation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDeviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus {
- [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)deviceStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDriverBraking:(nullable NSNumber<SDLBool> *)driverBraking {
- [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
-}
-
-- (nullable NSNumber<SDLBool> *)driverBraking {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil];
-}
-
-- (void)setWiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus {
- [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)wiperStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setHeadLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus {
- [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)headLampStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife {
- [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
-}
-
-- (nullable NSNumber<SDLBool> *)engineOilLife {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEngineTorque:(nullable NSNumber<SDLBool> *)engineTorque {
- [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
-}
-
-- (nullable NSNumber<SDLBool> *)engineTorque {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAccPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition {
- [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
-}
-
-- (nullable NSNumber<SDLBool> *)accPedalPosition {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSteeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle {
- [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
-}
-
-- (nullable NSNumber<SDLBool> *)steeringWheelAngle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
-}
-
-- (void)setECallInfo:(nullable NSNumber<SDLBool> *)eCallInfo {
- [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
-}
-
-- (nullable NSNumber<SDLBool> *)eCallInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil];
-}
-
-- (void)setAirbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus {
- [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)airbagStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setEmergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent {
- [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
-}
-
-- (nullable NSNumber<SDLBool> *)emergencyEvent {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil];
-}
-
-- (void)setClusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus {
- [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)clusterModeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setMyKey:(nullable NSNumber<SDLBool> *)myKey {
- [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
-}
-
-- (nullable NSNumber<SDLBool> *)myKey {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil];
-}
-
-- (void)setElectronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
- [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
-}
-
-- (nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTurnSignal:(nullable NSNumber<SDLBool> *)turnSignal {
- [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
-}
-
-- (nullable NSNumber<SDLBool> *)turnSignal {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil];
-}
-
-- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
- [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
-}
-
-- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
-}
-
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
- [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
-}
-
-- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
- return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
deleted file mode 100644
index da07d6616..000000000
--- a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.h
+++ /dev/null
@@ -1,243 +0,0 @@
-// SDLUnsubscribeVehicleDataResponse.h
-//
-
-#import "SDLRPCResponse.h"
-
-@class SDLVehicleDataResult;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Response to UnsubscribeVehicleData
-
- since SmartDeviceLink 2.0
- */
-@interface SDLUnsubscribeVehicleDataResponse : SDLRPCResponse
-
-/**
- The result of requesting to unsubscribe to the GPSData.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *gps;
-
-/**
- The result of requesting to unsubscribe to the vehicle speed in kilometers per hour.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *speed;
-
-/**
- The result of requesting to unsubscribe to the number of revolutions per minute of the engine.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *rpm;
-
-/**
- The result of requesting to unsubscribe to the fuel level in the tank (percentage)
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel;
-
-/**
- The result of requesting to unsubscribe to the fuel level state.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel_State;
-
-/**
- The result of requesting to unsubscribe to the fuel range.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelRange;
-
-/**
- The result of requesting to unsubscribe to the instantaneous fuel consumption in microlitres.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *instantFuelConsumption;
-
-/**
- The result of requesting to unsubscribe to the external temperature in degrees celsius.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *externalTemperature;
-
-/**
- The result of requesting to unsubscribe to the PRNDL status.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *prndl;
-
-/**
- The result of requesting to unsubscribe to the tireStatus.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *tirePressure;
-
-/**
- The result of requesting to unsubscribe to the odometer in km.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *odometer;
-
-/**
- The result of requesting to unsubscribe to the status of the seat belts.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *beltStatus;
-
-/**
- The result of requesting to unsubscribe to the body information including power modes.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *bodyInformation;
-
-/**
- The result of requesting to unsubscribe to the device status including signal and battery strength.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *deviceStatus;
-
-/**
- The result of requesting to unsubscribe to the status of the brake pedal.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *driverBraking;
-
-/**
- The result of requesting to unsubscribe to the status of the wipers.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *wiperStatus;
-
-/**
- The result of requesting to unsubscribe to the status of the head lamps.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *headLampStatus;
-
-/**
- The result of requesting to unsubscribe to the estimated percentage of remaining oil life of the engine.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineOilLife;
-
-/**
- The result of requesting to unsubscribe to the torque value for engine (in Nm) on non-diesel variants.
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineTorque;
-
-/**
- The result of requesting to unsubscribe to the accelerator pedal position (percentage depressed)
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *accPedalPosition;
-
-/**
- The result of requesting to unsubscribe to the current angle of the steering wheel (in deg)
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *steeringWheelAngle;
-
-/**
- The result of requesting to unsubscribe to the emergency call info
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *eCallInfo;
-
-/**
- The result of requesting to unsubscribe to the airbag status
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *airbagStatus;
-
-/**
- The result of requesting to unsubscribe to the emergency event
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *emergencyEvent;
-
-/**
- The result of requesting to unsubscribe to the cluster modes
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *clusterModes;
-
-/**
- The result of requesting to unsubscribe to the myKey status
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *myKey;
-
-/**
- The result of requesting to unsubscribe to the electronic parking brake status
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *electronicParkBrakeStatus;
-
-/**
- The result of requesting to unsubscribe to the turn signal
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *turnSignal;
-
-/**
- The result of requesting to unsubscribe to the cloud app vehicle id
-
- Optional
- */
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
-
-/**
- Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @param vehicleDataState SDLVehicleDataResult object containing custom data type and result code information.
-
- Added SmartDeviceLink 6.0
- */
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
-
-/**
- Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
-
- @param vehicleDataName The name of the OEM custom vehicle data item.
- @return SDLVehicleDataResult object containing custom data type and result code information.
-
- Added SmartDeviceLink 6.0
- */
-- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
deleted file mode 100644
index b86423085..000000000
--- a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m
+++ /dev/null
@@ -1,267 +0,0 @@
-// SDLUnsubscribeVehicleDataResponse.m
-//
-
-
-#import "SDLUnsubscribeVehicleDataResponse.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-#import "SDLVehicleDataResult.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLUnsubscribeVehicleDataResponse
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-- (instancetype)init {
- if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeVehicleData]) {
- }
- return self;
-}
-#pragma clang diagnostic pop
-
-- (void)setGps:(nullable SDLVehicleDataResult *)gps {
- [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
-}
-
-- (nullable SDLVehicleDataResult *)gps {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setSpeed:(nullable SDLVehicleDataResult *)speed {
- [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
-}
-
-- (nullable SDLVehicleDataResult *)speed {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setRpm:(nullable SDLVehicleDataResult *)rpm {
- [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
-}
-
-- (nullable SDLVehicleDataResult *)rpm {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setFuelLevel:(nullable SDLVehicleDataResult *)fuelLevel {
- [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
-}
-
-- (nullable SDLVehicleDataResult *)fuelLevel {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setFuelLevel_State:(nullable SDLVehicleDataResult *)fuelLevel_State {
- [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
-}
-
-- (nullable SDLVehicleDataResult *)fuelLevel_State {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setFuelRange:(nullable SDLVehicleDataResult *)fuelRange {
- [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
-}
-
-- (nullable SDLVehicleDataResult *)fuelRange {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setInstantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption {
- [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
-}
-
-- (nullable SDLVehicleDataResult *)instantFuelConsumption {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature {
- [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
-}
-
-- (nullable SDLVehicleDataResult *)externalTemperature {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setPrndl:(nullable SDLVehicleDataResult *)prndl {
- [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
-}
-
-- (nullable SDLVehicleDataResult *)prndl {
- return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setTirePressure:(nullable SDLVehicleDataResult *)tirePressure {
- [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
-}
-
-- (nullable SDLVehicleDataResult *)tirePressure {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setOdometer:(nullable SDLVehicleDataResult *)odometer {
- [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
-}
-
-- (nullable SDLVehicleDataResult *)odometer {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setBeltStatus:(nullable SDLVehicleDataResult *)beltStatus {
- [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
-}
-
-- (nullable SDLVehicleDataResult *)beltStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setBodyInformation:(nullable SDLVehicleDataResult *)bodyInformation {
- [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
-}
-
-- (nullable SDLVehicleDataResult *)bodyInformation {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setDeviceStatus:(nullable SDLVehicleDataResult *)deviceStatus {
- [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
-}
-
-- (nullable SDLVehicleDataResult *)deviceStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setDriverBraking:(nullable SDLVehicleDataResult *)driverBraking {
- [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
-}
-
-- (nullable SDLVehicleDataResult *)driverBraking {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setWiperStatus:(nullable SDLVehicleDataResult *)wiperStatus {
- [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
-}
-
-- (nullable SDLVehicleDataResult *)wiperStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setHeadLampStatus:(nullable SDLVehicleDataResult *)headLampStatus {
- [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
-}
-
-- (nullable SDLVehicleDataResult *)headLampStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setEngineOilLife:(nullable SDLVehicleDataResult *)engineOilLife {
- [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
-}
-
-- (nullable SDLVehicleDataResult *)engineOilLife {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setEngineTorque:(nullable SDLVehicleDataResult *)engineTorque {
- [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
-}
-
-- (nullable SDLVehicleDataResult *)engineTorque {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setAccPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition {
- [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
-}
-
-- (nullable SDLVehicleDataResult *)accPedalPosition {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setSteeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle {
- [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
-}
-
-- (nullable SDLVehicleDataResult *)steeringWheelAngle {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setECallInfo:(nullable SDLVehicleDataResult *)eCallInfo {
- [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
-}
-
-- (nullable SDLVehicleDataResult *)eCallInfo {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setAirbagStatus:(nullable SDLVehicleDataResult *)airbagStatus {
- [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
-}
-
-- (nullable SDLVehicleDataResult *)airbagStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setEmergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent {
- [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
-}
-
-- (nullable SDLVehicleDataResult *)emergencyEvent {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setClusterModes:(nullable SDLVehicleDataResult *)clusterModes {
- [self.parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes];
-}
-
-- (nullable SDLVehicleDataResult *)clusterModes {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setMyKey:(nullable SDLVehicleDataResult *)myKey {
- [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
-}
-
-- (nullable SDLVehicleDataResult *)myKey {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setElectronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
- [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
-}
-
-- (nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setTurnSignal:(nullable SDLVehicleDataResult *)turnSignal {
- [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
-}
-
-- (nullable SDLVehicleDataResult *)turnSignal {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID {
- [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
-}
-
-- (nullable SDLVehicleDataResult *)cloudAppVehicleID {
- return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState {
- [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
-}
-
-- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
- return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUpdateMode.h b/SmartDeviceLink/SDLUpdateMode.h
deleted file mode 100644
index 03748f3f7..000000000
--- a/SmartDeviceLink/SDLUpdateMode.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// SDLUpdateMode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Specifies what function should be performed on the media clock/counter. Used in SetMediaClockTimer.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLUpdateMode SDL_SWIFT_ENUM;
-
-/**
- * Starts the media clock timer counting upward, in increments of 1 second.
- */
-extern SDLUpdateMode const SDLUpdateModeCountUp;
-
-/**
- * Starts the media clock timer counting downward, in increments of 1 second.
- */
-extern SDLUpdateMode const SDLUpdateModeCountDown;
-
-/**
- * Pauses the media clock timer.
- */
-extern SDLUpdateMode const SDLUpdateModePause;
-
-/**
- * Resumes the media clock timer. The timer resumes counting in whatever mode was in effect before pausing (i.e. COUNTUP or COUNTDOWN).
- */
-extern SDLUpdateMode const SDLUpdateModeResume;
-
-/**
- * Clear the media clock timer.
- */
-extern SDLUpdateMode const SDLUpdateModeClear;
diff --git a/SmartDeviceLink/SDLVehicleDataActiveStatus.h b/SmartDeviceLink/SDLVehicleDataActiveStatus.h
deleted file mode 100644
index ceeabd350..000000000
--- a/SmartDeviceLink/SDLVehicleDataActiveStatus.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// SDLVehicleDataActiveStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Vehicle Data Activity Status. Used in nothing.
- */
-typedef SDLEnum SDLVehicleDataActiveStatus SDL_SWIFT_ENUM;
-
-/**
- Inactive not confirmed
- */
-extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusInactiveNotConfirmed;
-
-/**
- Inactive confirmed
- */
-extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusInactiveConfirmed;
-
-/**
- Active not confirmed
- */
-extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusActiveNotConfirmed;
-
-/**
- Active confirmed
- */
-extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusActiveConfirmed;
-
-/**
- Fault
- */
-extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusFault;
diff --git a/SmartDeviceLink/SDLVehicleDataEventStatus.h b/SmartDeviceLink/SDLVehicleDataEventStatus.h
deleted file mode 100644
index 1c78e2615..000000000
--- a/SmartDeviceLink/SDLVehicleDataEventStatus.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// SDLVehicleDataEventStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of a vehicle data event; e.g. a seat belt event status. Used in retrieving vehicle data.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLVehicleDataEventStatus SDL_SWIFT_ENUM;
-
-/**
- No event
- */
-extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusNoEvent;
-
-/**
- The event is a No status
- */
-extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusNo;
-
-/**
- The event is a Yes status
- */
-extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusYes;
-
-/**
- Vehicle data event is not supported
- */
-extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusNotSupported;
-
-/**
- The event is a Fault status
- */
-extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusFault;
diff --git a/SmartDeviceLink/SDLVehicleDataNotificationStatus.h b/SmartDeviceLink/SDLVehicleDataNotificationStatus.h
deleted file mode 100644
index dca5d8466..000000000
--- a/SmartDeviceLink/SDLVehicleDataNotificationStatus.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// SDLVehicleDataNotificationStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of a vehicle data notification. Used in ECallInfo
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLVehicleDataNotificationStatus SDL_SWIFT_ENUM;
-
-/**
- The vehicle data notification status is not supported
- */
-extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusNotSupported;
-
-/**
- The vehicle data notification status is normal
- */
-extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusNormal;
-
-/**
- The vehicle data notification status is active
- */
-extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusActive;
-
-/**
- The vehicle data notification status is not used
- */
-extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusNotUsed;
diff --git a/SmartDeviceLink/SDLVehicleDataResultCode.h b/SmartDeviceLink/SDLVehicleDataResultCode.h
deleted file mode 100644
index c90c5a594..000000000
--- a/SmartDeviceLink/SDLVehicleDataResultCode.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// SDLVehicleDataResultCode.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- Vehicle Data Result Code. Used in DIDResult.
- */
-typedef SDLEnum SDLVehicleDataResultCode SDL_SWIFT_ENUM;
-
-/**
- Individual vehicle data item / DTC / DID request or subscription successful
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeSuccess;
-
-/**
- DTC / DID request successful, however, not all active DTCs or full contents of DID location available
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeTruncatedData;
-
-/**
- This vehicle data item is not allowed for this app by SDL
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeDisallowed;
-
-/**
- The user has not granted access to this type of vehicle data item at this time
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeUserDisallowed;
-
-/**
- The ECU ID referenced is not a valid ID on the bus / system
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeInvalidId;
-
-/**
- The requested vehicle data item / DTC / DID is not currently available or responding on the bus / system
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeVehicleDataNotAvailable;
-
-/**
- The vehicle data item is already subscribed
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeDataAlreadySubscribed;
-
-/**
- The vehicle data item cannot be unsubscribed because it is not currently subscribed
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeDataNotSubscribed;
-
-/**
- The request for this item is ignored because it is already in progress
- */
-extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeIgnored;
diff --git a/SmartDeviceLink/SDLVehicleDataStatus.h b/SmartDeviceLink/SDLVehicleDataStatus.h
deleted file mode 100644
index c0f2ffc55..000000000
--- a/SmartDeviceLink/SDLVehicleDataStatus.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SDLVehicleDataStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of a binary vehicle data item. Used in MyKey.
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLVehicleDataStatus SDL_SWIFT_ENUM;
-
-/**
- No data avaliable
- */
-extern SDLVehicleDataStatus const SDLVehicleDataStatusNoDataExists;
-
-/**
- The status is Off
- */
-extern SDLVehicleDataStatus const SDLVehicleDataStatusOff;
-
-/**
- The status is On
- */
-extern SDLVehicleDataStatus const SDLVehicleDataStatusOn;
diff --git a/SmartDeviceLink/SDLVehicleDataType.h b/SmartDeviceLink/SDLVehicleDataType.h
deleted file mode 100644
index e65cdcef9..000000000
--- a/SmartDeviceLink/SDLVehicleDataType.h
+++ /dev/null
@@ -1,172 +0,0 @@
-// SDLVehicleDataType.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Defines the vehicle data types that can be published and/or subscribed to using SDLSubscribeVehicleData. Used in VehicleDataResult
- */
-typedef SDLEnum SDLVehicleDataType SDL_SWIFT_ENUM;
-
-/**
- GPS vehicle data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeGPS;
-
-/**
- Vehicle speed data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeSpeed;
-
-/**
- Vehicle RPM data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeRPM;
-
-/**
- Vehicle fuel level data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeFuelLevel;
-
-/**
- Vehicle fuel level state data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeFuelLevelState;
-
-/**
- Vehicle fuel consumption data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeFuelConsumption;
-
-/**
- Vehicle external temperature data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeExternalTemperature;
-
-/**
- Vehicle VIN data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeVIN;
-
-/**
- Vehicle PRNDL data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypePRNDL;
-
-/**
- Vehicle tire pressure data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeTirePressure;
-
-/**
- Vehicle odometer data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeOdometer;
-
-/**
- Vehicle belt status data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeBeltStatus;
-
-/**
- Vehicle body info data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeBodyInfo;
-
-/**
- Vehicle device status data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeDeviceStatus;
-
-/**
- Vehicle emergency call info data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeECallInfo;
-
-/**
- Vehicle fuel range data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeFuelRange;
-
-/**
- Vehicle airbag status data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeAirbagStatus;
-
-/**
- Vehicle emergency event info
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeEmergencyEvent;
-
-/**
- Vehicle cluster mode status data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeClusterModeStatus;
-
-/**
- Vehicle MyKey data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeMyKey;
-
-/**
- Vehicle braking data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeBraking;
-
-/**
- Vehicle wiper status data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeWiperStatus;
-
-/**
- Vehicle headlamp status
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeHeadlampStatus;
-
-/**
- Vehicle battery voltage data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeBatteryVoltage;
-
-/**
- Vehicle engine oil life data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeEngineOilLife;
-
-/**
- Vehicle engine torque data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeEngineTorque;
-
-/**
- Vehicle accleration pedal data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeAccelerationPedal;
-
-/**
- Vehicle steering wheel data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeSteeringWheel;
-
-/**
- Vehicle electronic parking brake status data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeElectronicParkBrakeStatus;
-
-/**
- Vehicle turn signal data
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeTurnSignal;
-
-/**
- The cloud application vehicle id. Used by cloud apps to identify a head unit
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID;
-
-/**
- Custom OEM Vehicle data
-
- Added in SDL 6.0
- */
-extern SDLVehicleDataType const SDLVehicleDataTypeOEMVehicleDataType;
diff --git a/SmartDeviceLink/SDLVehicleDataType.m b/SmartDeviceLink/SDLVehicleDataType.m
deleted file mode 100644
index 895613873..000000000
--- a/SmartDeviceLink/SDLVehicleDataType.m
+++ /dev/null
@@ -1,39 +0,0 @@
-// SDLVehicleDataType.m
-//
-
-
-#import "SDLVehicleDataType.h"
-
-SDLVehicleDataType const SDLVehicleDataTypeGPS = @"VEHICLEDATA_GPS";
-SDLVehicleDataType const SDLVehicleDataTypeSpeed = @"VEHICLEDATA_SPEED";
-SDLVehicleDataType const SDLVehicleDataTypeRPM = @"VEHICLEDATA_RPM";
-SDLVehicleDataType const SDLVehicleDataTypeFuelLevel = @"VEHICLEDATA_FUELLEVEL";
-SDLVehicleDataType const SDLVehicleDataTypeFuelLevelState = @"VEHICLEDATA_FUELLEVEL_STATE";
-SDLVehicleDataType const SDLVehicleDataTypeFuelConsumption = @"VEHICLEDATA_FUELCONSUMPTION";
-SDLVehicleDataType const SDLVehicleDataTypeFuelRange = @"VEHICLEDATA_FUELRANGE";
-SDLVehicleDataType const SDLVehicleDataTypeExternalTemperature = @"VEHICLEDATA_EXTERNTEMP";
-SDLVehicleDataType const SDLVehicleDataTypeVIN = @"VEHICLEDATA_VIN";
-SDLVehicleDataType const SDLVehicleDataTypePRNDL = @"VEHICLEDATA_PRNDL";
-SDLVehicleDataType const SDLVehicleDataTypeTirePressure = @"VEHICLEDATA_TIREPRESSURE";
-SDLVehicleDataType const SDLVehicleDataTypeOdometer = @"VEHICLEDATA_ODOMETER";
-SDLVehicleDataType const SDLVehicleDataTypeBeltStatus = @"VEHICLEDATA_BELTSTATUS";
-SDLVehicleDataType const SDLVehicleDataTypeBodyInfo = @"VEHICLEDATA_BODYINFO";
-SDLVehicleDataType const SDLVehicleDataTypeDeviceStatus = @"VEHICLEDATA_DEVICESTATUS";
-SDLVehicleDataType const SDLVehicleDataTypeECallInfo = @"VEHICLEDATA_ECALLINFO";
-SDLVehicleDataType const SDLVehicleDataTypeAirbagStatus = @"VEHICLEDATA_AIRBAGSTATUS";
-SDLVehicleDataType const SDLVehicleDataTypeEmergencyEvent = @"VEHICLEDATA_EMERGENCYEVENT";
-SDLVehicleDataType const SDLVehicleDataTypeClusterModeStatus = @"VEHICLEDATA_CLUSTERMODESTATUS";
-SDLVehicleDataType const SDLVehicleDataTypeMyKey = @"VEHICLEDATA_MYKEY";
-SDLVehicleDataType const SDLVehicleDataTypeBraking = @"VEHICLEDATA_BRAKING";
-SDLVehicleDataType const SDLVehicleDataTypeWiperStatus = @"VEHICLEDATA_WIPERSTATUS";
-SDLVehicleDataType const SDLVehicleDataTypeHeadlampStatus = @"VEHICLEDATA_HEADLAMPSTATUS";
-SDLVehicleDataType const SDLVehicleDataTypeBatteryVoltage = @"VEHICLEDATA_BATTVOLTAGE";
-SDLVehicleDataType const SDLVehicleDataTypeEngineOilLife = @"VEHICLEDATA_ENGINEOILLIFE";
-SDLVehicleDataType const SDLVehicleDataTypeEngineTorque = @"VEHICLEDATA_ENGINETORQUE";
-SDLVehicleDataType const SDLVehicleDataTypeAccelerationPedal = @"VEHICLEDATA_ACCPEDAL";
-SDLVehicleDataType const SDLVehicleDataTypeSteeringWheel = @"VEHICLEDATA_STEERINGWHEEL";
-SDLVehicleDataType const SDLVehicleDataTypeElectronicParkBrakeStatus = @"VEHICLEDATA_ELECTRONICPARKBRAKESTATUS";
-SDLVehicleDataType const SDLVehicleDataTypeTurnSignal = @"VEHICLEDATA_TURNSIGNAL";
-SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID = @"VEHICLEDATA_CLOUDAPPVEHICLEID";
-SDLVehicleDataType const SDLVehicleDataTypeOEMVehicleDataType = @"VEHICLEDATA_OEM_CUSTOM_DATA";
-
diff --git a/SmartDeviceLink/SDLVentilationMode.h b/SmartDeviceLink/SDLVentilationMode.h
deleted file mode 100644
index d3320e27e..000000000
--- a/SmartDeviceLink/SDLVentilationMode.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// SDLVentilationMode.h
-//
-
-#import "SDLEnum.h"
-
-/**
- The ventilation mode. Used in ClimateControlCapabilities
- */
-typedef SDLEnum SDLVentilationMode SDL_SWIFT_ENUM;
-
-/**
- The upper ventilation mode
- */
-extern SDLVentilationMode const SDLVentilationModeUpper;
-
-/**
- The lower ventilation mode
- */
-extern SDLVentilationMode const SDLVentilationModeLower;
-
-/**
- The both ventilation mode
- */
-extern SDLVentilationMode const SDLVentilationModeBoth;
-
-/**
- No ventilation mode
- */
-extern SDLVentilationMode const SDLVentilationModeNone;
-
diff --git a/SmartDeviceLink/SDLVersion.h b/SmartDeviceLink/SDLVersion.h
deleted file mode 100644
index 22ff79dc7..000000000
--- a/SmartDeviceLink/SDLVersion.h
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// SDLVersion.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 2/19/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-@class SDLSyncMsgVersion;
-@class SDLMsgVersion;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Specifies a major / minor / patch version number for semantic versioning purposes and comparisons
-@interface SDLVersion : NSObject <NSCopying>
-
-/// Major version (e.g. X.0.0)
-@property (nonatomic, assign) NSUInteger major;
-
-/// Minor version (e.g. 0.X.0)
-@property (nonatomic, assign) NSUInteger minor;
-
-/// Patch version (e.g. 0.0.X)
-@property (nonatomic, assign) NSUInteger patch;
-
-/// A String format of the current SDLVersion
-@property (nonatomic, copy, readonly) NSString *stringVersion;
-
-/// Convenience init
-///
-/// @param major Major version
-/// @param minor Minor version
-/// @param patch Patch version
-/// @return An SDLVersion object
-- (instancetype)initWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch;
-
-/// Convenience init
-///
-/// @param major Major version
-/// @param minor Minor version
-/// @param patch Patch version
-/// @return An SDLVersion object
-+ (instancetype)versionWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch;
-
-/// Convenience init
-///
-/// @param versionString String representation of the version
-/// @return An SDLVersion object
-- (nullable instancetype)initWithString:(NSString *)versionString;
-
-/// Convenience init
-///
-/// @param versionString String representation of the version
-/// @return An SDLVersion object
-+ (nullable instancetype)versionWithString:(NSString *)versionString;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-implementations"
-/// Deprecated convenience init to set version using SDLSyncMsgVersion
-///
-/// @param syncMsgVersion Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
-/// @return An SDLVersion object
-- (instancetype)initWithSyncMsgVersion:(SDLSyncMsgVersion *)syncMsgVersion __deprecated_msg(("Use initWithSDLMsgVersion:sdlMsgVersion: instead"));
-
-/// Deprecated convenience init to set version using SDLSyncMsgVersion
-///
-/// @param syncMsgVersion Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
-/// @return An SDLVersion object
-+ (instancetype)versionWithSyncMsgVersion:(SDLSyncMsgVersion *)syncMsgVersion __deprecated_msg(("Use versionWithSDLMsgVersion:sdlMsgVersion instead"));
-#pragma clang diagnostic pop
-
-/// Convenience init to set version using SDLMsgVersion
-///
-/// @param sdlMsgVersion Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
-/// @return An SDLVersion object
-- (instancetype)initWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion;
-
-/// Convenience init to set version using SDLMsgVersion
-///
-/// @param sdlMsgVersion Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
-/// @return SDLVersion object
-+ (instancetype)versionWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion;
-
-/// Compare two SDLVersions
-- (NSComparisonResult)compare:(SDLVersion *)otherVersion;
-
-/// Compare is less than
-///
-/// @param otherVersion SDLVersion Object
-/// @return BOOL
-- (BOOL)isLessThanVersion:(SDLVersion *)otherVersion;
-
-/// Compare is equal to
-///
-/// @param otherVersion SDLVersion Object
-/// @return BOOL
-- (BOOL)isEqualToVersion:(SDLVersion *)otherVersion;
-
-/// Compare is greater than
-///
-/// @param otherVersion SDLVersion Object
-/// @return BOOL
-- (BOOL)isGreaterThanVersion:(SDLVersion *)otherVersion;
-
-/// Compare is greater than or equal to
-///
-/// @param otherVersion SDLVersion Object
-/// @return BOOL
-- (BOOL)isGreaterThanOrEqualToVersion:(SDLVersion *)otherVersion;
-
-/// Compare is less than or equal to
-///
-/// @param otherVersion SDLVersion Object
-/// @return BOOL
-- (BOOL)isLessThanOrEqualToVersion:(SDLVersion *)otherVersion;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLVersion.m b/SmartDeviceLink/SDLVersion.m
deleted file mode 100644
index 9ec3e4824..000000000
--- a/SmartDeviceLink/SDLVersion.m
+++ /dev/null
@@ -1,160 +0,0 @@
-//
-// SDLVersion.m
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 2/19/19.
-// Copyright © 2019 smartdevicelink. All rights reserved.
-//
-
-#import "SDLVersion.h"
-
-#import "SDLSyncMsgVersion.h"
-#import "SDLMsgVersion.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLVersion
-
-#pragma mark - Initializers
-
-- (instancetype)initWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch {
- self = [super init];
- if (!self) { return nil; }
-
- _major = major;
- _minor = minor;
- _patch = patch;
-
- return self;
-}
-
-+ (instancetype)versionWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch {
- return [[self alloc] initWithMajor:major minor:minor patch:patch];
-}
-
-- (nullable instancetype)initWithString:(NSString *)versionString {
- self = [super init];
- if (!self) { return nil; }
-
- NSArray<NSString *> *splitVersions = [versionString componentsSeparatedByString:@"."];
- if (splitVersions.count != 3) {
- NSAssert(splitVersions.count == 3, @"Splitting a version string must result in major, minor, and patch. The format must be 'X.X.X'");
- return nil;
- }
-
- NSInteger majorInt = splitVersions[0].integerValue;
- NSInteger minorInt = splitVersions[1].integerValue;
- NSInteger patchInt = splitVersions[2].integerValue;
-
- if (majorInt < 0 || minorInt < 0 || patchInt < 0) {
- NSAssert(NO, @"Attempted to parse invalid SDLVersion: %@", splitVersions);
- return nil;
- }
-
- _major = (NSUInteger)majorInt;
- _minor = (NSUInteger)minorInt;
- _patch = (NSUInteger)patchInt;
-
- return self;
-}
-
-+ (nullable instancetype)versionWithString:(NSString *)versionString {
- return [[self alloc] initWithString:versionString];
-}
-
-- (instancetype)initWithSyncMsgVersion:(SDLSyncMsgVersion *)syncMsgVersion {
- self = [super init];
- if (!self) { return nil; }
-
- _major = syncMsgVersion.majorVersion.unsignedIntegerValue;
- _minor = syncMsgVersion.minorVersion.unsignedIntegerValue;
- _patch = syncMsgVersion.patchVersion.unsignedIntegerValue;
-
- return self;
-}
-
-+ (instancetype)versionWithSyncMsgVersion:(SDLSyncMsgVersion *)syncMsgVersion {
- return [[self alloc] initWithSyncMsgVersion:syncMsgVersion];
-}
-
-- (instancetype)initWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion {
- self = [super init];
- if (!self) { return nil; }
-
- _major = sdlMsgVersion.majorVersion.unsignedIntegerValue;
- _minor = sdlMsgVersion.minorVersion.unsignedIntegerValue;
- _patch = sdlMsgVersion.patchVersion.unsignedIntegerValue;
-
- return self;
-}
-
-+ (instancetype)versionWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion {
- return [[self alloc] initWithSDLMsgVersion:sdlMsgVersion];
-}
-
-#pragma mark - Setters / Getters
-
-- (NSString *)stringVersion {
- return [NSString stringWithFormat:@"%lu.%lu.%lu", (unsigned long)_major, (unsigned long)_minor, (unsigned long)_patch];
-}
-
-#pragma mark - Helper functions
-
-- (NSComparisonResult)compare:(SDLVersion *)otherVersion {
- if (self.major > otherVersion.major) {
- return NSOrderedDescending;
- } else if ((self.major == otherVersion.major) && (self.minor > otherVersion.minor)) {
- return NSOrderedDescending;
- } else if ((self.major == otherVersion.major) && (self.minor == otherVersion.minor) && (self.patch > otherVersion.patch)) {
- return NSOrderedDescending;
- } else if ((self.major == otherVersion.major) && (self.minor == otherVersion.minor) && (self.patch == otherVersion.patch)) {
- return NSOrderedSame;
- }
-
- return NSOrderedAscending;
-}
-
-- (BOOL)isLessThanVersion:(SDLVersion *)otherVersion {
- return ([self compare:otherVersion] == NSOrderedAscending);
-}
-
-- (BOOL)isEqualToVersion:(SDLVersion *)otherVersion {
- return ([self compare:otherVersion] == NSOrderedSame);
-}
-
-- (BOOL)isGreaterThanVersion:(SDLVersion *)otherVersion {
- return ([self compare:otherVersion] == NSOrderedDescending);
-}
-
-- (BOOL)isGreaterThanOrEqualToVersion:(SDLVersion *)otherVersion {
- return ([self isGreaterThanVersion:otherVersion] || [self isEqualToVersion:otherVersion]);
-}
-
-- (BOOL)isLessThanOrEqualToVersion:(SDLVersion *)otherVersion {
- return ([self isLessThanVersion:otherVersion] || [self isEqualToVersion:otherVersion]);
-}
-
-#pragma mark - NSObject overrides
-
-- (BOOL)isEqual:(id)object {
- if (object == nil) { return NO; }
- if (![object isMemberOfClass:self.class]) { return NO; }
-
- SDLVersion *otherVersion = (SDLVersion *)object;
-
- return [self isEqualToVersion:otherVersion];
-}
-
-- (NSString *)description {
- return self.stringVersion;
-}
-
-- (id)copyWithZone:(nullable NSZone *)zone {
- SDLVersion *new = [[SDLVersion allocWithZone:zone] initWithMajor:_major minor:_minor patch:_patch];
- return new;
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLVideoStreamingCapability.h b/SmartDeviceLink/SDLVideoStreamingCapability.h
deleted file mode 100644
index 17a446821..000000000
--- a/SmartDeviceLink/SDLVideoStreamingCapability.h
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// SDLVideoStreamingCapability.h
-// SmartDeviceLink-iOS
-//
-// Created by Brett McIsaac on 7/31/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLRPCMessage.h"
-
-@class SDLImageResolution;
-@class SDLVideoStreamingFormat;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Contains information about this system's video streaming capabilities
- */
-@interface SDLVideoStreamingCapability : SDLRPCStruct
-
-/**
-Convenience init for creating a video streaming capability.
-
-@param preferredResolution The preferred resolution of a video stream for decoding and rendering on HMI
-@param maxBitrate The maximum bitrate of video stream that is supported, in kbps
-@param supportedFormats Detailed information on each format supported by this system, in its preferred order
-@param hapticDataSupported True if the system can utilize the haptic spatial data from the source being streamed
-@return A SDLVideoStreamingCapability object
-*/
-- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported __deprecated_msg("Use initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:diagonalScreenSize:pixelPerInch:scale: instead");
-
-/**
- Convenience init for creating a video streaming capability with all parameters.
-
- @param preferredResolution The preferred resolution of a video stream for decoding and rendering on HMI
- @param maxBitrate The maximum bitrate of video stream that is supported, in kbps
- @param supportedFormats Detailed information on each format supported by this system, in its preferred order
- @param hapticDataSupported True if the system can utilize the haptic spatial data from the source being streamed
- @param diagonalScreenSize The diagonal screen size in inches
- @param pixelPerInch The diagonal resolution in pixels divided by the diagonal screen size in inches
- @param scale The scaling factor the app should use to change the size of the projecting view
- @return A SDLVideoStreamingCapability object
- */
-- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported diagonalScreenSize:(float)diagonalScreenSize pixelPerInch:(float)pixelPerInch scale:(float)scale;
-
-/**
- The preferred resolution of a video stream for decoding and rendering on HMI
-
- Optional
- */
-@property (nullable, strong, nonatomic) SDLImageResolution *preferredResolution;
-
-/**
- The maximum bitrate of video stream that is supported, in kbps, optional
-
- Optional, minvalue= 0, maxvalue= 2147483647
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *maxBitrate;
-
-/**
- Detailed information on each format supported by this system, in its preferred order
-
- Optional
- */
-@property (nullable, strong, nonatomic) NSArray<SDLVideoStreamingFormat *> *supportedFormats;
-
-/**
- True if the system can utilize the haptic spatial data from the source being streamed.
-
- Optional
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hapticSpatialDataSupported;
-
-/**
- The diagonal screen size in inches.
-
- Float, Optional, minvalue="0"
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *diagonalScreenSize;
-
-/**
- The diagonal resolution in pixels divided by the diagonal screen size in inches.
-
- Float, Optional, minvalue="0"
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *pixelPerInch;
-
-/**
- The scaling factor the app should use to change the size of the projecting view.
-
- Float, Optional, minvalue="1" maxvalue="10"
- @since SDL 6.0
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *scale;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLVideoStreamingCapability.m b/SmartDeviceLink/SDLVideoStreamingCapability.m
deleted file mode 100644
index 3239f5597..000000000
--- a/SmartDeviceLink/SDLVideoStreamingCapability.m
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-// SDLVideoStreamingCapability.m
-// SmartDeviceLink-iOS
-//
-// Created by Brett McIsaac on 7/31/17.
-// Copyright © 2017 smartdevicelink. All rights reserved.
-//
-
-#import "SDLImageResolution.h"
-#import "SDLVideoStreamingCapability.h"
-#import "SDLVideoStreamingFormat.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation SDLVideoStreamingCapability
-
-- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported {
- return [self initWithPreferredResolution:preferredResolution maxBitrate:@(maxBitrate) supportedFormats:supportedFormats hapticDataSupported:@(hapticDataSupported) diagonalScreenSize:nil ppi:nil scale:nil];
-}
-
-- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported diagonalScreenSize:(float)diagonalScreenSize pixelPerInch:(float)pixelPerInch scale:(float)scale {
- return [self initWithPreferredResolution:preferredResolution maxBitrate:@(maxBitrate) supportedFormats:supportedFormats hapticDataSupported:@(hapticDataSupported) diagonalScreenSize:@(diagonalScreenSize) ppi:@(pixelPerInch) scale:@(scale)];
-}
-
-- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(nullable NSNumber *)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(nullable NSNumber *)hapticDataSupported diagonalScreenSize:(nullable NSNumber *)diagonalScreenSize ppi:(nullable NSNumber *)pixelPerInch scale:(nullable NSNumber *)scale {
- self = [self init];
- if (!self) {
- return self;
- }
-
- self.maxBitrate = maxBitrate;
- self.preferredResolution = preferredResolution;
- self.supportedFormats = supportedFormats;
- self.hapticSpatialDataSupported = hapticDataSupported;
- self.diagonalScreenSize = diagonalScreenSize;
- self.pixelPerInch = pixelPerInch;
- self.scale = scale;
-
- return self;
-}
-
-- (void)setPreferredResolution:(nullable SDLImageResolution *)preferredResolution {
- [self.store sdl_setObject:preferredResolution forName:SDLRPCParameterNamePreferredResolution];
-}
-
-- (nullable SDLImageResolution *)preferredResolution {
- return [self.store sdl_objectForName:SDLRPCParameterNamePreferredResolution ofClass:SDLImageResolution.class error:nil];
-}
-
-- (void)setMaxBitrate:(nullable NSNumber<SDLInt> *)maxBitrate {
- [self.store sdl_setObject:maxBitrate forName:SDLRPCParameterNameMaxBitrate];
-}
-
-- (nullable NSNumber<SDLInt> *)maxBitrate {
- return [self.store sdl_objectForName:SDLRPCParameterNameMaxBitrate ofClass:NSNumber.class error:nil];
-}
-
-- (void)setSupportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
- [self.store sdl_setObject:supportedFormats forName:SDLRPCParameterNameSupportedFormats];
-}
-
-- (nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
- return [self.store sdl_objectsForName:SDLRPCParameterNameSupportedFormats ofClass:SDLVideoStreamingFormat.class error:nil];
-}
-
-- (void)setHapticSpatialDataSupported:(nullable NSNumber<SDLBool> *)hapticSpatialDataSupported {
- [self.store sdl_setObject:hapticSpatialDataSupported forName:SDLRPCParameterNameHapticSpatialDataSupported];
-}
-
-- (nullable NSNumber<SDLBool> *)hapticSpatialDataSupported {
- return [self.store sdl_objectForName:SDLRPCParameterNameHapticSpatialDataSupported ofClass:NSNumber.class error:nil];
-}
-
-- (void)setDiagonalScreenSize:(nullable NSNumber<SDLFloat> *)diagonalScreenSize {
- [self.store sdl_setObject:diagonalScreenSize forName:SDLRPCParameterNameDiagonalScreenSize];
-}
-
-- (nullable NSNumber<SDLFloat> *)diagonalScreenSize {
- return [self.store sdl_objectForName:SDLRPCParameterNameDiagonalScreenSize ofClass:NSNumber.class error:nil];
-}
-
-- (void)setPixelPerInch:(nullable NSNumber<SDLFloat> *)pixelPerInch {
- [self.store sdl_setObject:pixelPerInch forName:SDLRPCParameterNamePixelPerInch];
-}
-
-- (nullable NSNumber<SDLFloat> *)pixelPerInch {
- return [self.store sdl_objectForName:SDLRPCParameterNamePixelPerInch ofClass:NSNumber.class error:nil];
-}
-
-- (void)setScale:(nullable NSNumber<SDLFloat> *)scale {
- [self.store sdl_setObject:scale forName:SDLRPCParameterNameScale];
-}
-
-- (nullable NSNumber<SDLFloat> *)scale {
- return [self.store sdl_objectForName:SDLRPCParameterNameScale ofClass:NSNumber.class error:nil];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLVideoStreamingCodec.h b/SmartDeviceLink/SDLVideoStreamingCodec.h
deleted file mode 100644
index b547eaf74..000000000
--- a/SmartDeviceLink/SDLVideoStreamingCodec.h
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// SDLVideoStreamingCodec.h
-// SmartDeviceLink-iOS
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enum for each type of video streaming codec. Used in VideoStreamingFormat.
- */
-typedef SDLEnum SDLVideoStreamingCodec SDL_SWIFT_ENUM;
-
-/**
- * H264
- */
-extern SDLVideoStreamingCodec const SDLVideoStreamingCodecH264;
-
-/**
- * H265
- */
-extern SDLVideoStreamingCodec const SDLVideoStreamingCodecH265;
-
-/**
- * Theora
- */
-extern SDLVideoStreamingCodec const SDLVideoStreamingCodecTheora;
-
-/**
- * VP8
- */
-extern SDLVideoStreamingCodec const SDLVideoStreamingCodecVP8;
-
-/**
- * VP9
- */
-extern SDLVideoStreamingCodec const SDLVideoStreamingCodecVP9;
diff --git a/SmartDeviceLink/SDLVideoStreamingProtocol.h b/SmartDeviceLink/SDLVideoStreamingProtocol.h
deleted file mode 100644
index 1ebcbe9f8..000000000
--- a/SmartDeviceLink/SDLVideoStreamingProtocol.h
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// SDLVideoStreamingProtocol.h
-// SmartDeviceLink-iOS
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enum for each type of video streaming protocol, used in VideoStreamingFormat
- */
-typedef SDLEnum SDLVideoStreamingProtocol SDL_SWIFT_ENUM;
-
-/**
- * RAW
- */
-extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRAW;
-
-/**
- * RTP
- */
-extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRTP;
-
-/**
- * RTSP
- */
-extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRTSP;
-
-/**
- * RTMP
- */
-extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRTMP;
-
-/**
- * WebM
- */
-extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolWebM;
diff --git a/SmartDeviceLink/SDLVideoStreamingState.h b/SmartDeviceLink/SDLVideoStreamingState.h
deleted file mode 100644
index 6ebe98b72..000000000
--- a/SmartDeviceLink/SDLVideoStreamingState.h
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// SDLVideoStreamingState.h
-// SmartDeviceLink
-//
-// Created by Joel Fischer on 6/19/18.
-// Copyright © 2018 Livio. All rights reserved.
-//
-
-#import "SDLEnum.h"
-
-/**
- * Enum for each type of video streaming protocol, used in VideoStreamingFormat
- */
-typedef SDLEnum SDLVideoStreamingState SDL_SWIFT_ENUM;
-
-/**
- * STREAMABLE, the current app is allowed to stream video
- */
-extern SDLVideoStreamingState const SDLVideoStreamingStateStreamable;
-
-/**
- * NOT_STREAMABLE, the current app is not allowed to stream video
- */
-extern SDLVideoStreamingState const SDLVideoStreamingStateNotStreamable;
diff --git a/SmartDeviceLink/SDLVrCapabilities.h b/SmartDeviceLink/SDLVrCapabilities.h
deleted file mode 100644
index ea4612bea..000000000
--- a/SmartDeviceLink/SDLVrCapabilities.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// SDLVRCapabilities.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * The VR capabilities of the connected SDL platform. Used in RegisterAppInterfaceResponse.
- *
- * @since SDL 1.0
- */
-typedef SDLEnum SDLVRCapabilities SDL_SWIFT_ENUM;
-
-/**
- * The SDL platform is capable of recognizing spoken text in the current language.
- */
-extern SDLVRCapabilities const SDLVRCapabilitiesText;
diff --git a/SmartDeviceLink/SDLWarningLightStatus.h b/SmartDeviceLink/SDLWarningLightStatus.h
deleted file mode 100644
index f73e898c5..000000000
--- a/SmartDeviceLink/SDLWarningLightStatus.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// SDLWarningLightStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * Reflects the status of a cluster instrument warning light. Used in TireStatus
- *
- * @since SDL 2.0
- */
-typedef SDLEnum SDLWarningLightStatus SDL_SWIFT_ENUM;
-
-/**
- * The warning light is off
- */
-extern SDLWarningLightStatus const SDLWarningLightStatusOff;
-
-/**
- * The warning light is off
- */
-extern SDLWarningLightStatus const SDLWarningLightStatusOn;
-
-/**
- * The warning light is flashing
- */
-extern SDLWarningLightStatus const SDLWarningLightStatusFlash;
-
-/**
- * The warning light is unused
- */
-extern SDLWarningLightStatus const SDLWarningLightStatusNotUsed;
diff --git a/SmartDeviceLink/SDLWayPointType.h b/SmartDeviceLink/SDLWayPointType.h
deleted file mode 100644
index 06b672fac..000000000
--- a/SmartDeviceLink/SDLWayPointType.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// SDLWaypointType.h
-//
-
-#import "SDLEnum.h"
-
-/**
- The type of a navigation waypoint. Used in GetWayPoints.
- */
-typedef SDLEnum SDLWayPointType SDL_SWIFT_ENUM;
-
-/**
- All other waypoint types
- */
-extern SDLWayPointType const SDLWayPointTypeAll;
-
-/**
- The destination waypoint
- */
-extern SDLWayPointType const SDLWayPointTypeDestination;
diff --git a/SmartDeviceLink/SDLWindowCapability.h b/SmartDeviceLink/SDLWindowCapability.h
deleted file mode 100644
index 8360416b2..000000000
--- a/SmartDeviceLink/SDLWindowCapability.h
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// SDLWindowCapability.h
-// SmartDeviceLink
-
-#import "SDLRPCStruct.h"
-#import "SDLImageType.h"
-#import "SDLMenuLayout.h"
-
-@class SDLTextField;
-@class SDLImageField;
-@class SDLButtonCapabilities;
-@class SDLSoftButtonCapabilities;
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- Reflects content of DisplayCapabilities, ButtonCapabilities and SoftButtonCapabilities
-
- @since SDL 6.0
- */
-@interface SDLWindowCapability : SDLRPCStruct
-
-/**
- The specified ID of the window. Can be set to a predefined window, or omitted for the main window on the main display.
-
- Size: min 1 max 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *windowID;
-
-/**
- A set of all fields that support text data. @see TextField
-
- Size: min 1 max 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLTextField *> *textFields;
-
-/**
- A set of all fields that support images. @see ImageField
-
- Size: min 0 max 1000
- */
-@property (nullable, strong, nonatomic) NSArray<SDLImageField *> *imageFields;
-
-/**
- Provides information about image types supported by the system.
-
- Size: min 0 max 1000
- */
-@property (nullable, strong, nonatomic) NSArray<SDLImageType> *imageTypeSupported;
-
-/**
- A set of all window templates available on the head unit.
-
- Size: min 0 max 100
- */
-@property (nullable, strong, nonatomic) NSArray<NSString *> *templatesAvailable;
-
-/**
- The number of on-window custom presets available (if any); otherwise omitted.
-
- Size: min 1 max 100
- */
-@property (nullable, strong, nonatomic) NSNumber<SDLInt> *numCustomPresetsAvailable;
-
-/**
- The number of buttons and the capabilities of each on-window button.
-
- Size: min 1 max 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
-
-/**
- The number of soft buttons available on-window and the capabilities for each button.
-
- Size: min 1 max 100
- */
-@property (nullable, strong, nonatomic) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
-
-/**
- An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available.
-
- Optional, array of 1 to 100, see SDLMenuLayout
- */
-@property (nullable, strong, nonatomic) NSArray<SDLMenuLayout> *menuLayoutsAvailable;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLWindowCapability.m b/SmartDeviceLink/SDLWindowCapability.m
deleted file mode 100644
index 509e2aa96..000000000
--- a/SmartDeviceLink/SDLWindowCapability.m
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// SDLWindowCapability.m
-// SmartDeviceLink
-
-#import "SDLWindowCapability.h"
-
-#import "NSMutableDictionary+Store.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLTextField.h"
-#import "SDLImageField.h"
-#import "SDLButtonCapabilities.h"
-#import "SDLSoftButtonCapabilities.h"
-
-@implementation SDLWindowCapability
-
-- (void)setWindowID:(nullable NSNumber<SDLUInt> *)windowID {
- [self.store sdl_setObject:windowID forName:SDLRPCParameterNameWindowId];
-}
-
-- (nullable NSNumber<SDLUInt> *)windowID {
- return [self.store sdl_objectForName:SDLRPCParameterNameWindowId ofClass:NSNumber.class error:nil];
-}
-
-- (void)setTextFields:(nullable NSArray<SDLTextField *> *)textFields {
- [self.store sdl_setObject:textFields forName:SDLRPCParameterNameTextFields];
-}
-
-- (nullable NSArray<SDLTextField *> *)textFields {
- return [self.store sdl_objectsForName:SDLRPCParameterNameTextFields ofClass:SDLTextField.class error:nil];
-}
-
-- (void)setImageFields:(nullable NSArray<SDLImageField *> *)imageFields {
- [self.store sdl_setObject:imageFields forName:SDLRPCParameterNameImageFields];
-}
-
-- (nullable NSArray<SDLImageField *> *)imageFields {
- return [self.store sdl_objectsForName:SDLRPCParameterNameImageFields ofClass:SDLImageField.class error:nil];
-}
-
-- (void)setImageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported {
- [self.store sdl_setObject:imageTypeSupported forName:SDLRPCParameterNameImageTypeSupported];
-}
-
-- (nullable NSArray<SDLImageType> *)imageTypeSupported {
- return [self.store sdl_enumsForName:SDLRPCParameterNameImageTypeSupported error:nil];
-}
-
-- (void)setTemplatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable {
- [self.store sdl_setObject:templatesAvailable forName:SDLRPCParameterNameTemplatesAvailable];
-}
-
-- (nullable NSArray<NSString *> *)templatesAvailable {
- return [self.store sdl_objectsForName:SDLRPCParameterNameTemplatesAvailable ofClass:NSString.class error:nil];
-}
-
-- (void)setNumCustomPresetsAvailable:(nullable NSNumber<SDLInt> *)numCustomPresetsAvailable {
- [self.store sdl_setObject:numCustomPresetsAvailable forName:SDLRPCParameterNameNumberCustomPresetsAvailable];
-}
-
-- (nullable NSNumber<SDLInt> *)numCustomPresetsAvailable {
- return [self.store sdl_objectForName:SDLRPCParameterNameNumberCustomPresetsAvailable ofClass:NSNumber.class error:nil];
-}
-
-- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
- [self.store sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];
-}
-
-- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil];
-}
-
-
-- (void)setSoftButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
- [self.store sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities];
-}
-
-- (nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
- return [self.store sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil];
-}
-
-- (void)setMenuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable {
- [self.store sdl_setObject:menuLayoutsAvailable forName:SDLRPCParameterNameMenuLayoutsAvailable];
-}
-
-- (nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable {
- return [self.store sdl_enumsForName:SDLRPCParameterNameMenuLayoutsAvailable error:nil];
-}
-
-@end
diff --git a/SmartDeviceLink/SDLWindowType.h b/SmartDeviceLink/SDLWindowType.h
deleted file mode 100644
index 5dca1b3c3..000000000
--- a/SmartDeviceLink/SDLWindowType.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// SDLWindowType.h
-// SmartDeviceLink
-
-#import "SDLEnum.h"
-/**
- The type of the window to be created. Main window or widget.
-
- @since SDL 6.0
- */
-typedef SDLEnum SDLWindowType SDL_SWIFT_ENUM;
-
-/**
- This window type describes the main window on a display.
- */
-extern SDLWindowType const SDLWindowTypeMain;
-
-/**
- A widget is a small window that the app can create to provide information and soft buttons for quick app control.
- */
-extern SDLWindowType const SDLWindowTypeWidget;
diff --git a/SmartDeviceLink/SDLWiperStatus.h b/SmartDeviceLink/SDLWiperStatus.h
deleted file mode 100644
index 05fb748bf..000000000
--- a/SmartDeviceLink/SDLWiperStatus.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// SDLWiperStatus.h
-//
-
-
-#import "SDLEnum.h"
-
-/**
- * The status of the windshield wipers. Used in retrieving vehicle data.
- */
-typedef SDLEnum SDLWiperStatus SDL_SWIFT_ENUM;
-
-/**
- * Wiper is off
- */
-extern SDLWiperStatus const SDLWiperStatusOff;
-
-/**
- * Wiper is off automatically
- */
-extern SDLWiperStatus const SDLWiperStatusAutomaticOff;
-
-/**
- * Wiper is moving but off
- */
-extern SDLWiperStatus const SDLWiperStatusOffMoving;
-
-/**
- * Wiper is off due to a manual interval
- */
-extern SDLWiperStatus const SDLWiperStatusManualIntervalOff;
-
-/**
- * Wiper is on due to a manual interval
- */
-extern SDLWiperStatus const SDLWiperStatusManualIntervalOn;
-
-/**
- * Wiper is on low manually
- */
-extern SDLWiperStatus const SDLWiperStatusManualLow;
-
-/**
- * Wiper is on high manually
- */
-extern SDLWiperStatus const SDLWiperStatusManualHigh;
-
-/**
- * Wiper is on for a single wipe manually
- */
-extern SDLWiperStatus const SDLWiperStatusManualFlick;
-
-/**
- * Wiper is in wash mode
- */
-extern SDLWiperStatus const SDLWiperStatusWash;
-
-/**
- * Wiper is on low automatically
- */
-extern SDLWiperStatus const SDLWiperStatusAutomaticLow;
-
-/**
- * Wiper is on high automatically
- */
-extern SDLWiperStatus const SDLWiperStatusAutomaticHigh;
-
-/**
- * Wiper is performing a courtesy wipe
- */
-extern SDLWiperStatus const SDLWiperStatusCourtesyWipe;
-
-/**
- * Wiper is on automatic adjust
- */
-extern SDLWiperStatus const SDLWiperStatusAutomaticAdjust;
-
-/**
- * Wiper is stalled
- */
-extern SDLWiperStatus const SDLWiperStatusStalled;
-
-/**
- * Wiper data is not available
- */
-extern SDLWiperStatus const SDLWiperStatusNoDataExists;
diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h
index 177d60bd7..197e01b4c 100644
--- a/SmartDeviceLink/SmartDeviceLink.h
+++ b/SmartDeviceLink/SmartDeviceLink.h
@@ -9,8 +9,8 @@ FOUNDATION_EXPORT double SmartDeviceLinkVersionNumber;
/// Project version string for SmartDeviceLink.
FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
-/***** RPCs *****/
-// Superclasses
+#pragma mark - RPCs
+#pragma mark Superclasses
#import "SDLEnum.h"
#import "SDLRPCMessage.h"
#import "SDLRPCNotification.h"
@@ -18,7 +18,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLRPCResponse.h"
#import "SDLRPCStruct.h"
-// Requests
+#pragma mark Requests
#import "SDLAddCommand.h"
#import "SDLAddSubMenu.h"
#import "SDLAlert.h"
@@ -73,6 +73,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSubscribeButton.h"
#import "SDLSubscribeVehicleData.h"
#import "SDLSubscribeWayPoints.h"
+#import "SDLSubtleAlert.h"
#import "SDLSyncPData.h"
#import "SDLSystemRequest.h"
#import "SDLUnpublishAppService.h"
@@ -83,7 +84,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLUnsubscribeWayPoints.h"
#import "SDLUpdateTurnList.h"
-// Responses
+#pragma mark Responses
#import "SDLAddCommandResponse.h"
#import "SDLAddSubMenuResponse.h"
#import "SDLAlertManeuverResponse.h"
@@ -139,7 +140,9 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSubscribeButtonResponse.h"
#import "SDLSubscribeVehicleDataResponse.h"
#import "SDLSubscribeWayPointsResponse.h"
+#import "SDLSubtleAlertResponse.h"
#import "SDLSyncPDataResponse.h"
+#import "SDLSystemRequestResponse.h"
#import "SDLUnpublishAppServiceResponse.h"
#import "SDLReleaseInteriorVehicleDataModuleResponse.h"
#import "SDLUnregisterAppInterfaceResponse.h"
@@ -148,7 +151,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLUnsubscribeWayPointsResponse.h"
#import "SDLUpdateTurnListResponse.h"
-// Notifications
+#pragma mark Notifications
#import "SDLOnAppInterfaceUnregistered.h"
#import "SDLOnAppServiceData.h"
#import "SDLOnAudioPassThru.h"
@@ -162,18 +165,20 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLOnInteriorVehicleData.h"
#import "SDLOnKeyboardInput.h"
#import "SDLOnLanguageChange.h"
-#import "SDLOnLockScreenStatus.h"
#import "SDLOnPermissionsChange.h"
#import "SDLOnRCStatus.h"
+#import "SDLOnSubtleAlertPressed.h"
#import "SDLOnSyncPData.h"
#import "SDLOnSystemCapabilityUpdated.h"
#import "SDLOnSystemRequest.h"
#import "SDLOnTBTClientState.h"
#import "SDLOnTouchEvent.h"
+#import "SDLOnUpdateFile.h"
+#import "SDLOnUpdateSubMenu.h"
#import "SDLOnVehicleData.h"
#import "SDLOnWayPointChange.h"
-// Structs
+#pragma mark Structs
#import "SDLAirbagStatus.h"
#import "SDLAppInfo.h"
#import "SDLAppServiceCapability.h"
@@ -198,10 +203,13 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLDeviceStatus.h"
#import "SDLDisplayCapabilities.h"
#import "SDLDisplayCapability.h"
+#import "SDLDynamicUpdateCapabilities.h"
+#import "SDLDriverDistractionCapability.h"
#import "SDLECallInfo.h"
#import "SDLEmergencyEvent.h"
#import "SDLFuelRange.h"
#import "SDLEqualizerSettings.h"
+#import "SDLGearStatus.h"
#import "SDLGPSData.h"
#import "SDLGrid.h"
#import "SDLHapticRect.h"
@@ -254,9 +262,9 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLSISData.h"
#import "SDLSoftButton.h"
#import "SDLSoftButtonCapabilities.h"
+#import "SDLStabilityControlsStatus.h"
#import "SDLStartTime.h"
#import "SDLStationIDNumber.h"
-#import "SDLSyncMsgVersion.h"
#import "SDLMsgVersion.h"
#import "SDLSystemCapability.h"
#import "SDLTTSChunk.h"
@@ -268,6 +276,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLTouchCoord.h"
#import "SDLTouchEvent.h"
#import "SDLTouchEventCapabilities.h"
+#import "SDLTransmissionType.h"
#import "SDLTurn.h"
#import "SDLVehicleDataResult.h"
#import "SDLVehicleType.h"
@@ -279,9 +288,11 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLWeatherServiceData.h"
#import "SDLWeatherServiceManifest.h"
#import "SDLWindowCapability.h"
+#import "SDLWindowStatus.h"
+#import "SDLWindowState.h"
#import "SDLWindowTypeCapabilities.h"
-// Enums
+#pragma mark Enums
#import "SDLAmbientLightStatus.h"
#import "SDLAppHMIType.h"
#import "SDLAppInterfaceUnregisteredReason.h"
@@ -326,7 +337,6 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLKeypressMode.h"
#import "SDLLanguage.h"
#import "SDLLayoutMode.h"
-#import "SDLLockScreenStatus.h"
#import "SDLLightName.h"
#import "SDLLightStatus.h"
#import "SDLMaintenanceModeStatus.h"
@@ -390,8 +400,8 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLWindowType.h"
#import "SDLWiperStatus.h"
-// Developer API
-// Configurations
+#pragma mark - Developer API
+#pragma mark Configurations
#import "SDLConfiguration.h"
#import "SDLEncryptionConfiguration.h"
#import "SDLFileManagerConfiguration.h"
@@ -400,11 +410,11 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLLockScreenConfiguration.h"
#import "SDLStreamingMediaConfiguration.h"
-// Encryption
+#pragma mark Encryption
#import "SDLProtocolConstants.h"
#import "SDLServiceEncryptionDelegate.h"
-// Streaming
+#pragma mark Streaming
#import "SDLAudioFile.h"
#import "SDLAudioStreamManager.h"
#import "SDLAudioStreamManagerDelegate.h"
@@ -417,29 +427,29 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLStreamingMediaManagerDataSource.h"
#import "SDLStreamingVideoScaleManager.h"
-// Files
+#pragma mark Files
#import "SDLArtwork.h"
#import "SDLFile.h"
#import "SDLFileManager.h"
#import "SDLFileManagerConstants.h"
-// Lockscreen
+#pragma mark Lockscreen
#import "SDLLockScreenViewController.h"
-// Lifecycle
+#pragma mark Lifecycle
#import "SDLManager.h"
#import "SDLManagerDelegate.h"
-// System Capabilities
+#pragma mark System Capabilities
#import "SDLSystemCapabilityManager.h"
-// Permissions
+#pragma mark Permissions
#import "SDLPermissionConstants.h"
#import "SDLPermissionElement.h"
#import "SDLRPCPermissionStatus.h"
#import "SDLPermissionManager.h"
-// Screen
+#pragma mark Screen
#import "SDLScreenManager.h"
#import "SDLSoftButtonObject.h"
#import "SDLSoftButtonState.h"
@@ -453,11 +463,11 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLChoiceSetDelegate.h"
#import "SDLKeyboardDelegate.h"
-// Touches
+#pragma mark Touches
#import "SDLPinchGesture.h"
#import "SDLTouch.h"
-// Utilities
+#pragma mark - Utilities
#import "NSNumber+NumberType.h"
#import "SDLErrorConstants.h"
#import "SDLFunctionID.h"
@@ -466,12 +476,12 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLStreamingMediaManagerConstants.h"
#import "SDLVersion.h"
-// Notifications
+#pragma mark Notifications
#import "SDLRPCNotificationNotification.h"
#import "SDLRPCResponseNotification.h"
#import "SDLRPCRequestNotification.h"
-// Logger
+#pragma mark Logger
#import "SDLLogConstants.h"
#import "SDLLogConfiguration.h"
#import "SDLLogFileModule.h"
@@ -482,6 +492,3 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLLogTargetAppleSystemLog.h"
#import "SDLLogTargetFile.h"
#import "SDLLogTargetOSLog.h"
-
-// Macros
-#import "SDLMacros.h"
diff --git a/SmartDeviceLink/CGPoint_Util.h b/SmartDeviceLink/private/CGPoint_Util.h
index a95c353c7..a95c353c7 100644
--- a/SmartDeviceLink/CGPoint_Util.h
+++ b/SmartDeviceLink/private/CGPoint_Util.h
diff --git a/SmartDeviceLink/CGPoint_Util.m b/SmartDeviceLink/private/CGPoint_Util.m
index 91c7ce26e..91c7ce26e 100644
--- a/SmartDeviceLink/CGPoint_Util.m
+++ b/SmartDeviceLink/private/CGPoint_Util.m
diff --git a/SmartDeviceLink/CVPixelBufferRef+SDLUtil.h b/SmartDeviceLink/private/CVPixelBufferRef+SDLUtil.h
index 674c20215..674c20215 100644
--- a/SmartDeviceLink/CVPixelBufferRef+SDLUtil.h
+++ b/SmartDeviceLink/private/CVPixelBufferRef+SDLUtil.h
diff --git a/SmartDeviceLink/CVPixelBufferRef+SDLUtil.m b/SmartDeviceLink/private/CVPixelBufferRef+SDLUtil.m
index 1a62ece10..1a62ece10 100644
--- a/SmartDeviceLink/CVPixelBufferRef+SDLUtil.m
+++ b/SmartDeviceLink/private/CVPixelBufferRef+SDLUtil.m
diff --git a/SmartDeviceLink/EAAccessory+SDLProtocols.h b/SmartDeviceLink/private/EAAccessory+SDLProtocols.h
index 0c729b796..0c729b796 100644
--- a/SmartDeviceLink/EAAccessory+SDLProtocols.h
+++ b/SmartDeviceLink/private/EAAccessory+SDLProtocols.h
diff --git a/SmartDeviceLink/EAAccessory+SDLProtocols.m b/SmartDeviceLink/private/EAAccessory+SDLProtocols.m
index 881fea352..881fea352 100644
--- a/SmartDeviceLink/EAAccessory+SDLProtocols.m
+++ b/SmartDeviceLink/private/EAAccessory+SDLProtocols.m
diff --git a/SmartDeviceLink/EAAccessoryManager+SDLProtocols.h b/SmartDeviceLink/private/EAAccessoryManager+SDLProtocols.h
index c2d45cb2e..c2d45cb2e 100644
--- a/SmartDeviceLink/EAAccessoryManager+SDLProtocols.h
+++ b/SmartDeviceLink/private/EAAccessoryManager+SDLProtocols.h
diff --git a/SmartDeviceLink/EAAccessoryManager+SDLProtocols.m b/SmartDeviceLink/private/EAAccessoryManager+SDLProtocols.m
index 69d5f408a..69d5f408a 100644
--- a/SmartDeviceLink/EAAccessoryManager+SDLProtocols.m
+++ b/SmartDeviceLink/private/EAAccessoryManager+SDLProtocols.m
diff --git a/SmartDeviceLink/NSBundle+SDLBundle.h b/SmartDeviceLink/private/NSBundle+SDLBundle.h
index 6ca61461d..6ca61461d 100644
--- a/SmartDeviceLink/NSBundle+SDLBundle.h
+++ b/SmartDeviceLink/private/NSBundle+SDLBundle.h
diff --git a/SmartDeviceLink/NSBundle+SDLBundle.m b/SmartDeviceLink/private/NSBundle+SDLBundle.m
index 5880a5927..5880a5927 100644
--- a/SmartDeviceLink/NSBundle+SDLBundle.m
+++ b/SmartDeviceLink/private/NSBundle+SDLBundle.m
diff --git a/SmartDeviceLink/NSMapTable+Subscripting.h b/SmartDeviceLink/private/NSMapTable+Subscripting.h
index 313e25be4..313e25be4 100644
--- a/SmartDeviceLink/NSMapTable+Subscripting.h
+++ b/SmartDeviceLink/private/NSMapTable+Subscripting.h
diff --git a/SmartDeviceLink/NSMapTable+Subscripting.m b/SmartDeviceLink/private/NSMapTable+Subscripting.m
index 3ac063f62..3ac063f62 100644
--- a/SmartDeviceLink/NSMapTable+Subscripting.m
+++ b/SmartDeviceLink/private/NSMapTable+Subscripting.m
diff --git a/SmartDeviceLink/NSMutableArray+Safe.h b/SmartDeviceLink/private/NSMutableArray+Safe.h
index 795b186df..795b186df 100644
--- a/SmartDeviceLink/NSMutableArray+Safe.h
+++ b/SmartDeviceLink/private/NSMutableArray+Safe.h
diff --git a/SmartDeviceLink/NSMutableArray+Safe.m b/SmartDeviceLink/private/NSMutableArray+Safe.m
index fb6665b8c..fb6665b8c 100644
--- a/SmartDeviceLink/NSMutableArray+Safe.m
+++ b/SmartDeviceLink/private/NSMutableArray+Safe.m
diff --git a/SmartDeviceLink/NSMutableDictionary+SafeRemove.h b/SmartDeviceLink/private/NSMutableDictionary+SafeRemove.h
index 4c238cde4..4c238cde4 100644
--- a/SmartDeviceLink/NSMutableDictionary+SafeRemove.h
+++ b/SmartDeviceLink/private/NSMutableDictionary+SafeRemove.h
diff --git a/SmartDeviceLink/NSMutableDictionary+SafeRemove.m b/SmartDeviceLink/private/NSMutableDictionary+SafeRemove.m
index 250c1a896..250c1a896 100644
--- a/SmartDeviceLink/NSMutableDictionary+SafeRemove.m
+++ b/SmartDeviceLink/private/NSMutableDictionary+SafeRemove.m
diff --git a/SmartDeviceLink/private/NSMutableDictionary+Store.h b/SmartDeviceLink/private/NSMutableDictionary+Store.h
new file mode 100644
index 000000000..58f8d7557
--- /dev/null
+++ b/SmartDeviceLink/private/NSMutableDictionary+Store.h
@@ -0,0 +1,40 @@
+//
+// NSMutableDictionary+Store.h
+// SmartDeviceLink-iOS
+//
+// Created by Muller, Alexander (A.) on 11/7/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "SDLLogMacros.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NSString* SDLRPCParameterName NS_TYPED_ENUM;
+typedef NSString* SDLEnum NS_TYPED_ENUM;
+
+@interface NSDictionary (Store)
+
+- (void)sdl_setObject:(nullable NSObject *)object forName:(SDLRPCParameterName)name;
+
+- (nullable SDLEnum)sdl_enumForName:(SDLRPCParameterName)name error:(NSError * _Nullable *)error;
+- (nullable NSArray<SDLEnum> *)sdl_enumsForName:(SDLRPCParameterName)name error:(NSError * _Nullable *)error;
+
+/**
+ * @param classType expected class of returned object
+ * @param error if stored value isn't classType
+ * @return object of classType or nil
+*/
+- (nullable id)sdl_objectForName:(SDLRPCParameterName)name ofClass:(Class)classType error:(NSError * _Nullable *)error;
+
+/**
+ * @param classType expected class of array objects
+ * @param error if array objects value isn't classType or stored objects aren't array
+ * @return return array of classType or nil
+*/
+- (nullable NSArray *)sdl_objectsForName:(SDLRPCParameterName)name ofClass:(Class)classType error:(NSError * _Nullable *)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/NSMutableDictionary+Store.m b/SmartDeviceLink/private/NSMutableDictionary+Store.m
index c1a81363b..c1a81363b 100644
--- a/SmartDeviceLink/NSMutableDictionary+Store.m
+++ b/SmartDeviceLink/private/NSMutableDictionary+Store.m
diff --git a/SmartDeviceLink/SDLAsynchronousOperation.h b/SmartDeviceLink/private/SDLAsynchronousOperation.h
index b7e0e0614..b7e0e0614 100644
--- a/SmartDeviceLink/SDLAsynchronousOperation.h
+++ b/SmartDeviceLink/private/SDLAsynchronousOperation.h
diff --git a/SmartDeviceLink/SDLAsynchronousOperation.m b/SmartDeviceLink/private/SDLAsynchronousOperation.m
index d2e12384d..d2e12384d 100644
--- a/SmartDeviceLink/SDLAsynchronousOperation.m
+++ b/SmartDeviceLink/private/SDLAsynchronousOperation.m
diff --git a/SmartDeviceLink/SDLAsynchronousRPCOperation.h b/SmartDeviceLink/private/SDLAsynchronousRPCOperation.h
index 8bb27deb4..8bb27deb4 100644
--- a/SmartDeviceLink/SDLAsynchronousRPCOperation.h
+++ b/SmartDeviceLink/private/SDLAsynchronousRPCOperation.h
diff --git a/SmartDeviceLink/SDLAsynchronousRPCOperation.m b/SmartDeviceLink/private/SDLAsynchronousRPCOperation.m
index ad169c8a9..ad169c8a9 100644
--- a/SmartDeviceLink/SDLAsynchronousRPCOperation.m
+++ b/SmartDeviceLink/private/SDLAsynchronousRPCOperation.m
diff --git a/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.h b/SmartDeviceLink/private/SDLAsynchronousRPCRequestOperation.h
index 908d0d3e6..908d0d3e6 100644
--- a/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.h
+++ b/SmartDeviceLink/private/SDLAsynchronousRPCRequestOperation.h
diff --git a/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m b/SmartDeviceLink/private/SDLAsynchronousRPCRequestOperation.m
index 92b157e8d..92b157e8d 100644
--- a/SmartDeviceLink/SDLAsynchronousRPCRequestOperation.m
+++ b/SmartDeviceLink/private/SDLAsynchronousRPCRequestOperation.m
diff --git a/SmartDeviceLink/SDLBackgroundTaskManager.h b/SmartDeviceLink/private/SDLBackgroundTaskManager.h
index 8d9f18ad1..8d9f18ad1 100644
--- a/SmartDeviceLink/SDLBackgroundTaskManager.h
+++ b/SmartDeviceLink/private/SDLBackgroundTaskManager.h
diff --git a/SmartDeviceLink/SDLBackgroundTaskManager.m b/SmartDeviceLink/private/SDLBackgroundTaskManager.m
index 7746008cf..7746008cf 100644
--- a/SmartDeviceLink/SDLBackgroundTaskManager.m
+++ b/SmartDeviceLink/private/SDLBackgroundTaskManager.m
diff --git a/SmartDeviceLink/SDLCacheFileManager.h b/SmartDeviceLink/private/SDLCacheFileManager.h
index abdd957d1..abdd957d1 100644
--- a/SmartDeviceLink/SDLCacheFileManager.h
+++ b/SmartDeviceLink/private/SDLCacheFileManager.h
diff --git a/SmartDeviceLink/SDLCacheFileManager.m b/SmartDeviceLink/private/SDLCacheFileManager.m
index e5b1e23e9..e5b1e23e9 100644
--- a/SmartDeviceLink/SDLCacheFileManager.m
+++ b/SmartDeviceLink/private/SDLCacheFileManager.m
diff --git a/SmartDeviceLink/SDLCarWindow.h b/SmartDeviceLink/private/SDLCarWindow.h
index 45d2f0a62..45d2f0a62 100755
--- a/SmartDeviceLink/SDLCarWindow.h
+++ b/SmartDeviceLink/private/SDLCarWindow.h
diff --git a/SmartDeviceLink/SDLCarWindow.m b/SmartDeviceLink/private/SDLCarWindow.m
index 12f2e83b7..12f2e83b7 100644
--- a/SmartDeviceLink/SDLCarWindow.m
+++ b/SmartDeviceLink/private/SDLCarWindow.m
diff --git a/SmartDeviceLink/SDLCheckChoiceVROptionalOperation.h b/SmartDeviceLink/private/SDLCheckChoiceVROptionalOperation.h
index a7a9f14d0..a7a9f14d0 100644
--- a/SmartDeviceLink/SDLCheckChoiceVROptionalOperation.h
+++ b/SmartDeviceLink/private/SDLCheckChoiceVROptionalOperation.h
diff --git a/SmartDeviceLink/SDLCheckChoiceVROptionalOperation.m b/SmartDeviceLink/private/SDLCheckChoiceVROptionalOperation.m
index 0615cb01a..0615cb01a 100644
--- a/SmartDeviceLink/SDLCheckChoiceVROptionalOperation.m
+++ b/SmartDeviceLink/private/SDLCheckChoiceVROptionalOperation.m
diff --git a/SmartDeviceLink/SDLChoiceSetManager.h b/SmartDeviceLink/private/SDLChoiceSetManager.h
index e0c11ac71..e0c11ac71 100644
--- a/SmartDeviceLink/SDLChoiceSetManager.h
+++ b/SmartDeviceLink/private/SDLChoiceSetManager.h
diff --git a/SmartDeviceLink/private/SDLChoiceSetManager.m b/SmartDeviceLink/private/SDLChoiceSetManager.m
new file mode 100644
index 000000000..80d691b87
--- /dev/null
+++ b/SmartDeviceLink/private/SDLChoiceSetManager.m
@@ -0,0 +1,593 @@
+//
+// SDLChoiceSetManager.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 5/21/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLChoiceSetManager.h"
+
+#import "SDLCheckChoiceVROptionalOperation.h"
+#import "SDLChoice.h"
+#import "SDLChoiceCell.h"
+#import "SDLChoiceSet.h"
+#import "SDLChoiceSetDelegate.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLCreateInteractionChoiceSet.h"
+#import "SDLCreateInteractionChoiceSetResponse.h"
+#import "SDLDeleteChoicesOperation.h"
+#import "SDLDisplayCapability.h"
+#import "SDLError.h"
+#import "SDLFileManager.h"
+#import "SDLGlobals.h"
+#import "SDLHMILevel.h"
+#import "SDLKeyboardProperties.h"
+#import "SDLLogMacros.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLPerformInteraction.h"
+#import "SDLPerformInteractionResponse.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLPreloadChoicesOperation.h"
+#import "SDLPresentChoiceSetOperation.h"
+#import "SDLPresentKeyboardOperation.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLSetDisplayLayoutResponse.h"
+#import "SDLStateMachine.h"
+#import "SDLSystemCapability.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLWindowCapability.h"
+#import "SDLWindowCapability+ScreenManagerExtensions.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+SDLChoiceManagerState *const SDLChoiceManagerStateShutdown = @"Shutdown";
+SDLChoiceManagerState *const SDLChoiceManagerStateCheckingVoiceOptional = @"CheckingVoiceOptional";
+SDLChoiceManagerState *const SDLChoiceManagerStateReady = @"Ready";
+SDLChoiceManagerState *const SDLChoiceManagerStateStartupError = @"StartupError";
+
+typedef NSNumber * SDLChoiceId;
+
+@interface SDLChoiceCell()
+
+@property (assign, nonatomic) UInt16 choiceId;
+
+@end
+
+@interface SDLChoiceSetManager()
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic) SDLFileManager *fileManager;
+@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
+
+@property (strong, nonatomic, readonly) SDLStateMachine *stateMachine;
+@property (strong, nonatomic) NSOperationQueue *transactionQueue;
+@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
+
+@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
+@property (copy, nonatomic, nullable) SDLWindowCapability *currentWindowCapability;
+
+@property (strong, nonatomic) NSMutableSet<SDLChoiceCell *> *preloadedMutableChoices;
+@property (strong, nonatomic, readonly) NSSet<SDLChoiceCell *> *pendingPreloadChoices;
+@property (strong, nonatomic) NSMutableSet<SDLChoiceCell *> *pendingMutablePreloadChoices;
+@property (strong, nonatomic, nullable) SDLChoiceSet *pendingPresentationSet;
+@property (strong, nonatomic, nullable) SDLAsynchronousOperation *pendingPresentOperation;
+
+@property (assign, nonatomic) UInt16 nextChoiceId;
+@property (assign, nonatomic) UInt16 nextCancelId;
+@property (assign, nonatomic, getter=isVROptional) BOOL vrOptional;
+
+@end
+
+UInt16 const ChoiceCellIdMin = 1;
+UInt16 const ChoiceCellCancelIdMin = 1;
+
+@implementation SDLChoiceSetManager
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _connectionManager = connectionManager;
+ _fileManager = fileManager;
+ _systemCapabilityManager = systemCapabilityManager;
+ _stateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLChoiceManagerStateShutdown states:[self.class sdl_stateTransitionDictionary]];
+ _transactionQueue = [self sdl_newTransactionQueue];
+
+ _readWriteQueue = dispatch_queue_create_with_target("com.sdl.screenManager.choiceSetManager.readWriteQueue", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
+
+ _preloadedMutableChoices = [NSMutableSet set];
+ _pendingMutablePreloadChoices = [NSMutableSet set];
+
+ _nextChoiceId = ChoiceCellIdMin;
+ _nextCancelId = ChoiceCellCancelIdMin;
+ _vrOptional = YES;
+ _keyboardConfiguration = [self sdl_defaultKeyboardConfiguration];
+ _currentHMILevel = SDLHMILevelNone;
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
+
+ return self;
+}
+
+- (void)start {
+ SDLLogD(@"Starting manager");
+
+ [self.systemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self selector:@selector(sdl_displayCapabilityDidUpdate:)];
+
+ if ([self.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
+ [self.stateMachine transitionToState:SDLChoiceManagerStateCheckingVoiceOptional];
+ }
+
+ // Else, we're already started
+}
+
+- (void)stop {
+ SDLLogD(@"Stopping manager");
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ [self.stateMachine transitionToState:SDLChoiceManagerStateShutdown];
+ }];
+}
+
++ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_stateTransitionDictionary {
+ return @{
+ SDLChoiceManagerStateShutdown: @[SDLChoiceManagerStateCheckingVoiceOptional],
+ SDLChoiceManagerStateCheckingVoiceOptional: @[SDLChoiceManagerStateShutdown, SDLChoiceManagerStateReady, SDLChoiceManagerStateStartupError],
+ SDLChoiceManagerStateReady: @[SDLChoiceManagerStateShutdown],
+ SDLChoiceManagerStateStartupError: @[SDLChoiceManagerStateShutdown]
+ };
+}
+
+- (NSOperationQueue *)sdl_newTransactionQueue {
+ NSOperationQueue *queue = [[NSOperationQueue alloc] init];
+ queue.name = @"com.sdl.screenManager.choiceSetManager.transactionQueue";
+ queue.maxConcurrentOperationCount = 1;
+ queue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
+ queue.suspended = YES;
+
+ return queue;
+}
+
+/// Suspend the transaction queue if we are in HMI NONE
+/// OR if the text field name "menu name" (i.e. is the primary choice text) cannot be used, we assume we cannot present a PI.
+- (void)sdl_updateTransactionQueueSuspended {
+ if ([self.currentHMILevel isEqualToEnum:SDLHMILevelNone]
+ || (![self.currentWindowCapability hasTextFieldOfName:SDLTextFieldNameMenuName])) {
+ SDLLogD(@"Suspending the transaction queue. Current HMI level is: %@, window capability has MenuName (choice primary text): %@", self.currentHMILevel, ([self.currentWindowCapability hasTextFieldOfName:SDLTextFieldNameMenuName] ? @"YES" : @"NO"));
+ self.transactionQueue.suspended = YES;
+ } else {
+ SDLLogD(@"Starting the transaction queue");
+ self.transactionQueue.suspended = NO;
+ }
+}
+
+#pragma mark - State Management
+
+- (void)didEnterStateShutdown {
+ SDLLogV(@"Manager shutting down");
+
+ NSAssert(dispatch_get_specific(SDLProcessingQueueName) != nil, @"%@ must only be called on the SDL serial queue", NSStringFromSelector(_cmd));
+
+ _currentHMILevel = SDLHMILevelNone;
+
+ [self.transactionQueue cancelAllOperations];
+ self.transactionQueue = [self sdl_newTransactionQueue];
+ _preloadedMutableChoices = [NSMutableSet set];
+ _pendingMutablePreloadChoices = [NSMutableSet set];
+ _pendingPresentationSet = nil;
+
+ _vrOptional = YES;
+ _nextChoiceId = ChoiceCellIdMin;
+ _nextCancelId = ChoiceCellCancelIdMin;
+}
+
+- (void)didEnterStateCheckingVoiceOptional {
+ // Setup by sending a Choice Set without VR, seeing if there's an error. If there is, send one with VR. This choice set will be used for `presentKeyboard` interactions.
+ SDLCheckChoiceVROptionalOperation *checkOp = [[SDLCheckChoiceVROptionalOperation alloc] initWithConnectionManager:self.connectionManager];
+
+ __weak typeof(self) weakSelf = self;
+ __weak typeof(checkOp) weakOp = checkOp;
+ checkOp.completionBlock = ^{
+ if ([self.currentState isEqualToString:SDLChoiceManagerStateShutdown]) { return; }
+
+ weakSelf.vrOptional = weakOp.isVROptional;
+ if (weakOp.error != nil) {
+ [weakSelf.stateMachine transitionToState:SDLChoiceManagerStateStartupError];
+ } else {
+ [weakSelf.stateMachine transitionToState:SDLChoiceManagerStateReady];
+ }
+ };
+
+ [self.transactionQueue addOperation:checkOp];
+}
+
+- (void)didEnterStateStartupError {
+ // TODO
+}
+
+#pragma mark - Choice Management
+
+#pragma mark Upload / Delete
+
+- (void)preloadChoices:(NSArray<SDLChoiceCell *> *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler {
+ SDLLogV(@"Request to preload choices: %@", choices);
+ if ([self.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
+ NSError *error = [NSError sdl_choiceSetManager_incorrectState:self.currentState];
+ SDLLogE(@"Attempted to preload choices but the choice set manager is shut down: %@", error);
+ if (handler != nil) {
+ handler(error);
+ }
+ return;
+ }
+
+ NSMutableSet<SDLChoiceCell *> *choicesToUpload = [[self sdl_choicesToBeUploadedWithArray:choices] mutableCopy];
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ [choicesToUpload minusSet:self.preloadedMutableChoices];
+ [choicesToUpload minusSet:self.pendingMutablePreloadChoices];
+ }];
+
+ if (choicesToUpload.count == 0) {
+ SDLLogD(@"All choices already preloaded. No need to perform a preload");
+ if (handler != nil) {
+ handler(nil);
+ }
+
+ return;
+ }
+
+ [self sdl_updateIdsOnChoices:choicesToUpload];
+
+ // Add the preload cells to the pending preloads
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ [self.pendingMutablePreloadChoices unionSet:choicesToUpload];
+ }];
+
+ // Upload pending preloads
+ // For backward compatibility with Gen38Inch display type head units
+ SDLLogD(@"Preloading choices");
+ SDLLogV(@"Choices to be uploaded: %@", choicesToUpload);
+ NSString *displayName = self.systemCapabilityManager.displays.firstObject.displayName;
+ SDLPreloadChoicesOperation *preloadOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:self.connectionManager fileManager:self.fileManager displayName:displayName windowCapability:self.systemCapabilityManager.defaultMainWindowCapability isVROptional:self.isVROptional cellsToPreload:choicesToUpload];
+
+ __weak typeof(self) weakSelf = self;
+ __weak typeof(preloadOp) weakPreloadOp = preloadOp;
+ preloadOp.completionBlock = ^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ SDLLogD(@"Choices finished preloading");
+
+ if (handler != nil) {
+ handler(weakPreloadOp.error);
+ }
+
+ // Check if the manager has shutdown because the list of uploaded and pending choices should not be updated
+ if ([strongSelf.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
+ SDLLogD(@"Cancelling preloading choices because the manager is shut down");
+ return;
+ }
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ [strongSelf.preloadedMutableChoices unionSet:choicesToUpload];
+ [strongSelf.pendingMutablePreloadChoices minusSet:choicesToUpload];
+ }];
+ };
+ [self.transactionQueue addOperation:preloadOp];
+}
+
+- (void)deleteChoices:(NSArray<SDLChoiceCell *> *)choices {
+ SDLLogV(@"Request to delete choices: %@", choices);
+ if (![self.currentState isEqualToString:SDLChoiceManagerStateReady]) {
+ SDLLogE(@"Attempted to delete choices in an incorrect state: %@, they will not be deleted", self.currentState);
+ return;
+ }
+
+ // Find cells to be deleted that are already uploaded or are pending upload
+ NSSet<SDLChoiceCell *> *cellsToBeDeleted = [self sdl_choicesToBeDeletedWithArray:choices];
+ NSSet<SDLChoiceCell *> *cellsToBeRemovedFromPending = [self sdl_choicesToBeRemovedFromPendingWithArray:choices];
+
+ // If choices are deleted that are already uploaded or pending and are used by a pending presentation, cancel it and send an error
+ NSSet<SDLChoiceCell *> *pendingPresentationChoices = [NSSet setWithArray:self.pendingPresentationSet.choices];
+ if ((!self.pendingPresentOperation.isCancelled && !self.pendingPresentOperation.isFinished)
+ && ([cellsToBeDeleted intersectsSet:pendingPresentationChoices] || [cellsToBeRemovedFromPending intersectsSet:pendingPresentationChoices])) {
+ [self.pendingPresentOperation cancel];
+ if (self.pendingPresentationSet.delegate != nil) {
+ [self.pendingPresentationSet.delegate choiceSet:self.pendingPresentationSet didReceiveError:[NSError sdl_choiceSetManager_choicesDeletedBeforePresentation:@{@"deletedChoices": choices}]];
+ }
+ self.pendingPresentationSet = nil;
+ }
+
+ // Remove the cells from pending and delete choices
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ [self.pendingMutablePreloadChoices minusSet:cellsToBeRemovedFromPending];
+ }];
+
+ for (SDLAsynchronousOperation *op in self.transactionQueue.operations) {
+ if (![op isMemberOfClass:[SDLPreloadChoicesOperation class]]) { continue; }
+
+ SDLPreloadChoicesOperation *preloadOp = (SDLPreloadChoicesOperation *)op;
+ [preloadOp removeChoicesFromUpload:cellsToBeRemovedFromPending];
+ }
+
+ // Find choices to delete
+ if (cellsToBeDeleted.count == 0) { return; }
+
+ [self sdl_findIdsOnChoices:cellsToBeDeleted];
+ SDLDeleteChoicesOperation *deleteOp = [[SDLDeleteChoicesOperation alloc] initWithConnectionManager:self.connectionManager cellsToDelete:cellsToBeDeleted];
+
+ __weak typeof(self) weakSelf = self;
+ __weak typeof(deleteOp) weakOp = deleteOp;
+ deleteOp.completionBlock = ^{
+ SDLLogD(@"Finished deleting choices");
+
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (weakOp.error != nil) {
+ SDLLogE(@"Failed to delete choices: %@", weakOp.error);
+ return;
+ }
+
+ // Check if the manager has shutdown because the list of uploaded choices should not be updated
+ if ([strongSelf.currentState isEqualToString:SDLChoiceManagerStateShutdown]) {
+ SDLLogD(@"Cancelling deleting choices because manager is shut down");
+ return;
+ }
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ [strongSelf.preloadedMutableChoices minusSet:cellsToBeDeleted];
+ }];
+ };
+ [self.transactionQueue addOperation:deleteOp];
+}
+
+#pragma mark Present
+
+- (void)presentChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode withKeyboardDelegate:(nullable id<SDLKeyboardDelegate>)delegate {
+ if (![self.currentState isEqualToString:SDLChoiceManagerStateReady]) {
+ SDLLogE(@"Attempted to present choices in an incorrect state: %@, it will not be presented", self.currentState);
+ return;
+ }
+
+ if (choiceSet == nil) {
+ SDLLogW(@"Attempted to present a nil choice set, ignoring.");
+ return;
+ }
+
+ if (self.pendingPresentationSet != nil && !self.pendingPresentOperation.isFinished) {
+ SDLLogW(@"A choice set is pending: %@. We will try to cancel it in favor of presenting a different choice set: %@. If it's already on screen it cannot be cancelled", self.pendingPresentationSet, choiceSet);
+ [self.pendingPresentOperation cancel];
+ }
+
+ SDLLogD(@"Preloading and presenting choice set: %@", choiceSet);
+ self.pendingPresentationSet = choiceSet;
+
+ [self preloadChoices:self.pendingPresentationSet.choices withCompletionHandler:^(NSError * _Nullable error) {
+ if (error != nil) {
+ [choiceSet.delegate choiceSet:choiceSet didReceiveError:error];
+ return;
+ }
+ }];
+
+ [self sdl_findIdsOnChoiceSet:self.pendingPresentationSet];
+
+ SDLPresentChoiceSetOperation *presentOp = nil;
+ if (delegate == nil) {
+ // Non-searchable choice set
+ presentOp = [[SDLPresentChoiceSetOperation alloc] initWithConnectionManager:self.connectionManager choiceSet:self.pendingPresentationSet mode:mode keyboardProperties:nil keyboardDelegate:nil cancelID:self.nextCancelId];
+ } else {
+ // Searchable choice set
+ presentOp = [[SDLPresentChoiceSetOperation alloc] initWithConnectionManager:self.connectionManager choiceSet:self.pendingPresentationSet mode:mode keyboardProperties:self.keyboardConfiguration keyboardDelegate:delegate cancelID:self.nextCancelId];
+ }
+ self.pendingPresentOperation = presentOp;
+
+ __weak typeof(self) weakSelf = self;
+ __weak typeof(presentOp) weakOp = presentOp;
+ self.pendingPresentOperation.completionBlock = ^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ __strong typeof(weakOp) strongOp = weakOp;
+
+ SDLLogD(@"Finished presenting choice set: %@", strongOp.choiceSet);
+ if (strongOp.error != nil && strongOp.choiceSet.delegate != nil) {
+ [strongOp.choiceSet.delegate choiceSet:strongOp.choiceSet didReceiveError:strongOp.error];
+ } else if (strongOp.selectedCell != nil && strongOp.choiceSet.delegate != nil) {
+ [strongOp.choiceSet.delegate choiceSet:strongOp.choiceSet didSelectChoice:strongOp.selectedCell withSource:strongOp.selectedTriggerSource atRowIndex:strongOp.selectedCellRow];
+ }
+
+ strongSelf.pendingPresentOperation = nil;
+ strongSelf.pendingPresentationSet = nil;
+ };
+
+ [self.transactionQueue addOperation:presentOp];
+}
+
+- (nullable NSNumber<SDLInt> *)presentKeyboardWithInitialText:(NSString *)initialText delegate:(id<SDLKeyboardDelegate>)delegate {
+ if (![self.currentState isEqualToString:SDLChoiceManagerStateReady]) {
+ SDLLogE(@"Attempted to present keyboard in an incorrect state: %@, it will not be presented", self.currentState);
+ return nil;
+ }
+
+ if (self.pendingPresentationSet != nil) {
+ SDLLogW(@"There's already a pending presentation set, cancelling it in favor of a keyboard");
+ [self.pendingPresentOperation cancel];
+ self.pendingPresentationSet = nil;
+ }
+
+ SDLLogD(@"Presenting keyboard with initial text: %@", initialText);
+ // Present a keyboard with the choice set that we used to test VR's optional state
+ UInt16 keyboardCancelId = self.nextCancelId;
+ self.pendingPresentOperation = [[SDLPresentKeyboardOperation alloc] initWithConnectionManager:self.connectionManager keyboardProperties:self.keyboardConfiguration initialText:initialText keyboardDelegate:delegate cancelID:keyboardCancelId];
+ [self.transactionQueue addOperation:self.pendingPresentOperation];
+ return @(keyboardCancelId);
+}
+
+- (void)dismissKeyboardWithCancelID:(NSNumber<SDLInt> *)cancelID {
+ for (SDLAsynchronousOperation *op in self.transactionQueue.operations) {
+ if (![op isKindOfClass:SDLPresentKeyboardOperation.class]) { continue; }
+
+ SDLPresentKeyboardOperation *keyboardOperation = (SDLPresentKeyboardOperation *)op;
+ if (keyboardOperation.cancelId != cancelID.unsignedShortValue) { continue; }
+
+ SDLLogD(@"Dismissing keyboard with cancel ID: %@", cancelID);
+ [keyboardOperation dismissKeyboard];
+ break;
+ }
+}
+
+#pragma mark - Choice Management Helpers
+
+/// Checks the passed list of choices to be uploaded and returns the items that have not yet been uploaded to the module.
+/// @param choices The choices to be uploaded
+/// @return The choices that have not yet been uploaded to the module
+- (NSSet<SDLChoiceCell *> *)sdl_choicesToBeUploadedWithArray:(NSArray<SDLChoiceCell *> *)choices {
+ NSMutableSet<SDLChoiceCell *> *choicesSet = [NSMutableSet setWithArray:choices];
+ [choicesSet minusSet:self.preloadedChoices];
+
+ return [choicesSet copy];
+}
+
+/// Checks the passed list of choices to be deleted and returns the items that have been uploaded to the module.
+/// @param choices The choices to be deleted
+/// @return The choices that have been uploaded to the module
+- (NSSet<SDLChoiceCell *> *)sdl_choicesToBeDeletedWithArray:(NSArray<SDLChoiceCell *> *)choices {
+ NSMutableSet<SDLChoiceCell *> *choicesSet = [NSMutableSet setWithArray:choices];
+ [choicesSet intersectSet:self.preloadedChoices];
+
+ return [choicesSet copy];
+}
+
+/// Checks the passed list of choices to be deleted and returns the items that are waiting to be uploaded to the module.
+/// @param choices The choices to be deleted
+/// @return The choices that are waiting to be uploaded to the module
+- (NSSet<SDLChoiceCell *> *)sdl_choicesToBeRemovedFromPendingWithArray:(NSArray<SDLChoiceCell *> *)choices {
+ NSMutableSet<SDLChoiceCell *> *choicesSet = [NSMutableSet setWithArray:choices];
+ [choicesSet intersectSet:self.pendingPreloadChoices];
+
+ return [choicesSet copy];
+}
+
+/// Assigns a unique id to each choice item.
+/// @param choices An array of choices
+- (void)sdl_updateIdsOnChoices:(NSSet<SDLChoiceCell *> *)choices {
+ for (SDLChoiceCell *cell in choices) {
+ cell.choiceId = self.nextChoiceId;
+ }
+}
+
+/// Checks each choice item to find out if it has already been uploaded or if it is the the process of being uploaded. If so, the choice item is assigned the unique id of the uploaded item.
+/// @param choiceSet A set of choice items
+- (void)sdl_findIdsOnChoiceSet:(SDLChoiceSet *)choiceSet {
+ [self sdl_findIdsOnChoices:[NSSet setWithArray:choiceSet.choices]];
+}
+
+/// Checks each choice item to find out if it has already been uploaded or if it is the the process of being uploaded. If so, the choice item is assigned the unique id of the uploaded item.
+/// @param choices An array of choice items
+- (void)sdl_findIdsOnChoices:(NSSet<SDLChoiceCell *> *)choices {
+ for (SDLChoiceCell *cell in choices) {
+ SDLChoiceCell *uploadCell = [self.pendingPreloadChoices member:cell] ?: [self.preloadedChoices member:cell];
+ if (uploadCell == nil) { continue; }
+ cell.choiceId = uploadCell.choiceId;
+ }
+}
+
+#pragma mark - Keyboard Configuration
+
+- (void)setKeyboardConfiguration:(nullable SDLKeyboardProperties *)keyboardConfiguration {
+ if (keyboardConfiguration == nil) {
+ SDLLogD(@"Updating keyboard configuration to the default");
+ _keyboardConfiguration = [self sdl_defaultKeyboardConfiguration];
+ } else {
+ SDLLogD(@"Updating keyboard configuration to a new configuration: %@", keyboardConfiguration);
+ _keyboardConfiguration = [[SDLKeyboardProperties alloc] initWithLanguage:keyboardConfiguration.language layout:keyboardConfiguration.keyboardLayout keypressMode:SDLKeypressModeResendCurrentEntry limitedCharacterList:keyboardConfiguration.limitedCharacterList autoCompleteText:keyboardConfiguration.autoCompleteText autoCompleteList:keyboardConfiguration.autoCompleteList];
+
+ if (keyboardConfiguration.keypressMode != SDLKeypressModeResendCurrentEntry) {
+ SDLLogW(@"Attempted to set a keyboard configuration with an invalid keypress mode; only .resentCurrentEntry is valid. This value will be ignored, the rest of the properties will be set.");
+ }
+ }
+}
+
+- (SDLKeyboardProperties *)sdl_defaultKeyboardConfiguration {
+ return [[SDLKeyboardProperties alloc] initWithLanguage:SDLLanguageEnUs layout:SDLKeyboardLayoutQWERTY keypressMode:SDLKeypressModeResendCurrentEntry limitedCharacterList:nil autoCompleteText:nil autoCompleteList:nil];
+}
+
+#pragma mark - Getters
+
+- (NSSet<SDLChoiceCell *> *)preloadedChoices {
+ __block NSSet<SDLChoiceCell *> *set = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ set = [self->_preloadedMutableChoices copy];
+ }];
+
+ return set;
+}
+
+- (NSSet<SDLChoiceCell *> *)pendingPreloadChoices {
+ __block NSSet<SDLChoiceCell *> *set = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ set = [self->_pendingMutablePreloadChoices copy];
+ }];
+
+ return set;
+}
+
+- (UInt16)nextChoiceId {
+ __block UInt16 choiceId = 0;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ choiceId = self->_nextChoiceId;
+ self->_nextChoiceId = choiceId + 1;
+ }];
+
+ return choiceId;
+}
+
+- (UInt16)nextCancelId {
+ __block UInt16 cancelId = 0;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ cancelId = self->_nextCancelId;
+ self->_nextCancelId = cancelId + 1;
+ }];
+
+ return cancelId;
+}
+
+- (NSString *)currentState {
+ return self.stateMachine.currentState;
+}
+
+#pragma mark - RPC Responses / Notifications
+
+- (void)sdl_displayCapabilityDidUpdate:(SDLSystemCapability *)systemCapability {
+ NSArray<SDLDisplayCapability *> *capabilities = systemCapability.displayCapabilities;
+ if (capabilities == nil || capabilities.count == 0) {
+ self.currentWindowCapability = nil;
+ } else {
+ SDLDisplayCapability *mainDisplay = capabilities[0];
+ for (SDLWindowCapability *windowCapability in mainDisplay.windowCapabilities) {
+ NSUInteger currentWindowID = windowCapability.windowID != nil ? windowCapability.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
+ if (currentWindowID != SDLPredefinedWindowsDefaultWindow) { continue; }
+
+ self.currentWindowCapability = windowCapability;
+ break;
+ }
+ }
+
+ [self sdl_updateTransactionQueueSuspended];
+}
+
+- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
+ // We can only present a choice set if we're in FULL
+ SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) { return; }
+
+ self.currentHMILevel = hmiStatus.hmiLevel;
+
+ [self sdl_updateTransactionQueueSuspended];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLConnectionManagerType.h b/SmartDeviceLink/private/SDLConnectionManagerType.h
index 2602a7315..2602a7315 100644
--- a/SmartDeviceLink/SDLConnectionManagerType.h
+++ b/SmartDeviceLink/private/SDLConnectionManagerType.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.h b/SmartDeviceLink/private/SDLControlFramePayloadAudioStartServiceAck.h
index 9a9dc95f4..9a9dc95f4 100644
--- a/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadAudioStartServiceAck.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.m b/SmartDeviceLink/private/SDLControlFramePayloadAudioStartServiceAck.m
index 2dd186b1f..2dd186b1f 100644
--- a/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadAudioStartServiceAck.m
diff --git a/SmartDeviceLink/SDLControlFramePayloadConstants.h b/SmartDeviceLink/private/SDLControlFramePayloadConstants.h
index e0bd1d5e8..e0bd1d5e8 100644
--- a/SmartDeviceLink/SDLControlFramePayloadConstants.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadConstants.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadConstants.m b/SmartDeviceLink/private/SDLControlFramePayloadConstants.m
index c365c78a8..c365c78a8 100644
--- a/SmartDeviceLink/SDLControlFramePayloadConstants.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadConstants.m
diff --git a/SmartDeviceLink/SDLControlFramePayloadEndService.h b/SmartDeviceLink/private/SDLControlFramePayloadEndService.h
index 17790ab9e..17790ab9e 100644
--- a/SmartDeviceLink/SDLControlFramePayloadEndService.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadEndService.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadEndService.m b/SmartDeviceLink/private/SDLControlFramePayloadEndService.m
index cabfb09df..cabfb09df 100644
--- a/SmartDeviceLink/SDLControlFramePayloadEndService.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadEndService.m
diff --git a/SmartDeviceLink/private/SDLControlFramePayloadNak.h b/SmartDeviceLink/private/SDLControlFramePayloadNak.h
new file mode 100644
index 000000000..eb917de58
--- /dev/null
+++ b/SmartDeviceLink/private/SDLControlFramePayloadNak.h
@@ -0,0 +1,28 @@
+//
+// SDLControlFramePayloadNak.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/20/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLControlFramePayloadType.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLControlFramePayloadNak : NSObject <SDLControlFramePayloadType>
+
+/// An array of rejected parameters such as: [`hashId`]
+@property (copy, nonatomic, readonly, nullable) NSArray<NSString *> *rejectedParams;
+
+/// A string describing the failure
+@property (copy, nonatomic, readonly, nullable) NSString *reason;
+
+- (instancetype)initWithRejectedParams:(nullable NSArray<NSString *> *)rejectedParams reason:(nullable NSString *)reason;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLControlFramePayloadNak.m b/SmartDeviceLink/private/SDLControlFramePayloadNak.m
new file mode 100644
index 000000000..a6344bbc9
--- /dev/null
+++ b/SmartDeviceLink/private/SDLControlFramePayloadNak.m
@@ -0,0 +1,118 @@
+//
+// SDLControlFramePayloadNak.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/20/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLControlFramePayloadNak.h"
+
+#import "bson_object.h"
+#import "SDLControlFramePayloadConstants.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLControlFramePayloadNak ()
+
+@property (copy, nonatomic, readwrite, nullable) NSArray<NSString *> *rejectedParams;
+@property (copy, nonatomic, readwrite, nullable) NSString *reason;
+
+@end
+
+@implementation SDLControlFramePayloadNak
+
+- (instancetype)initWithRejectedParams:(nullable NSArray<NSString *> *)rejectedParams reason:(nullable NSString *)reason {
+ self = [super init];
+ if (!self) return nil;
+
+ _rejectedParams = rejectedParams;
+ _reason = reason;
+
+ return self;
+}
+
+- (instancetype)initWithData:(nullable NSData *)data {
+ self = [super init];
+ if (!self) return nil;
+
+ if (data.length > 0) {
+ [self sdl_parse:data];
+ }
+
+ return self;
+}
+
+- (nullable NSData *)data {
+ if (self.rejectedParams == nil && self.reason == nil) {
+ return nil;
+ }
+
+ BsonObject payloadObject;
+ bson_object_initialize_default(&payloadObject);
+
+ if (self.rejectedParams != nil) {
+ BsonArray arrayObject;
+ bson_array_initialize(&arrayObject, 512);
+
+ for (NSString *param in self.rejectedParams) {
+ bson_array_add_string(&arrayObject, (char *)param.UTF8String);
+ }
+
+ bson_object_put_array(&payloadObject, SDLControlFrameRejectedParams, &arrayObject);
+ }
+
+ if (self.reason != nil) {
+ bson_object_put_string(&payloadObject, SDLControlFrameReasonKey, (char *)self.reason.UTF8String);
+ }
+
+ BytePtr bsonData = bson_object_to_bytes(&payloadObject);
+ NSUInteger length = bson_object_size(&payloadObject);
+
+ bson_object_deinitialize(&payloadObject);
+
+ return [[NSData alloc] initWithBytes:bsonData length:length];
+}
+
+- (void)sdl_parse:(NSData *)data {
+ BsonObject payloadObject;
+ size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length);
+ if (retval <= 0) {
+ return;
+ }
+
+ // Pull out the reason
+ char *reasonChars = bson_object_get_string(&payloadObject, SDLControlFrameReasonKey);
+ if (reasonChars != NULL) {
+ self.reason = [NSString stringWithUTF8String:reasonChars];
+ }
+
+ // Pull out the rejected params
+ BsonArray *arrayObject = bson_object_get_array(&payloadObject, SDLControlFrameRejectedParams);
+ if (arrayObject == NULL) {
+ return;
+ }
+
+ NSMutableArray<NSString *> *rejectedParams = [NSMutableArray array];
+ char *paramString;
+ size_t index = 0;
+
+ paramString = bson_array_get_string(arrayObject, index);
+ while (paramString != NULL) {
+ [rejectedParams addObject:[NSString stringWithUTF8String:paramString]];
+ index++;
+ paramString = bson_array_get_string(arrayObject, index);
+ }
+
+ self.rejectedParams = [rejectedParams copy];
+ bson_object_deinitialize(&payloadObject);
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"<%@>: Rejected params: %@, reason: %@", NSStringFromClass(self.class), self.rejectedParams, self.reason];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartService.h b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartService.h
index 2a1f7d674..2a1f7d674 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRPCStartService.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartService.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartService.m b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartService.m
index 6409884d0..6409884d0 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRPCStartService.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartService.m
diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartServiceAck.h
index 295204aac..295204aac 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartServiceAck.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartServiceAck.m
index e6afae672..e6afae672 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadRPCStartServiceAck.m
diff --git a/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.h b/SmartDeviceLink/private/SDLControlFramePayloadRegisterSecondaryTransportNak.h
index 1435ba42e..1435ba42e 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadRegisterSecondaryTransportNak.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.m b/SmartDeviceLink/private/SDLControlFramePayloadRegisterSecondaryTransportNak.m
index 600fd1b61..600fd1b61 100644
--- a/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadRegisterSecondaryTransportNak.m
diff --git a/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.h b/SmartDeviceLink/private/SDLControlFramePayloadTransportEventUpdate.h
index 747934790..747934790 100644
--- a/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadTransportEventUpdate.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.m b/SmartDeviceLink/private/SDLControlFramePayloadTransportEventUpdate.m
index 24b49ccec..24b49ccec 100644
--- a/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadTransportEventUpdate.m
diff --git a/SmartDeviceLink/SDLControlFramePayloadType.h b/SmartDeviceLink/private/SDLControlFramePayloadType.h
index 2c9673ccc..2c9673ccc 100644
--- a/SmartDeviceLink/SDLControlFramePayloadType.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadType.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadVideoStartService.h b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartService.h
index 63274f3ef..63274f3ef 100644
--- a/SmartDeviceLink/SDLControlFramePayloadVideoStartService.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartService.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadVideoStartService.m b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartService.m
index d8dc841be..d8dc841be 100644
--- a/SmartDeviceLink/SDLControlFramePayloadVideoStartService.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartService.m
diff --git a/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.h b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartServiceAck.h
index 58b6887f6..58b6887f6 100644
--- a/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.h
+++ b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartServiceAck.h
diff --git a/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.m b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartServiceAck.m
index 7f071df50..7f071df50 100644
--- a/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.m
+++ b/SmartDeviceLink/private/SDLControlFramePayloadVideoStartServiceAck.m
diff --git a/SmartDeviceLink/SDLDeleteChoicesOperation.h b/SmartDeviceLink/private/SDLDeleteChoicesOperation.h
index b712759cb..b712759cb 100644
--- a/SmartDeviceLink/SDLDeleteChoicesOperation.h
+++ b/SmartDeviceLink/private/SDLDeleteChoicesOperation.h
diff --git a/SmartDeviceLink/SDLDeleteChoicesOperation.m b/SmartDeviceLink/private/SDLDeleteChoicesOperation.m
index 027c549dd..027c549dd 100644
--- a/SmartDeviceLink/SDLDeleteChoicesOperation.m
+++ b/SmartDeviceLink/private/SDLDeleteChoicesOperation.m
diff --git a/SmartDeviceLink/SDLDeleteFileOperation.h b/SmartDeviceLink/private/SDLDeleteFileOperation.h
index 9252ae725..9252ae725 100644
--- a/SmartDeviceLink/SDLDeleteFileOperation.h
+++ b/SmartDeviceLink/private/SDLDeleteFileOperation.h
diff --git a/SmartDeviceLink/SDLDeleteFileOperation.m b/SmartDeviceLink/private/SDLDeleteFileOperation.m
index e7ce7e204..e7ce7e204 100644
--- a/SmartDeviceLink/SDLDeleteFileOperation.m
+++ b/SmartDeviceLink/private/SDLDeleteFileOperation.m
diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.h b/SmartDeviceLink/private/SDLDynamicMenuUpdateAlgorithm.h
index 64d7d2585..64d7d2585 100644
--- a/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.h
+++ b/SmartDeviceLink/private/SDLDynamicMenuUpdateAlgorithm.h
diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.m b/SmartDeviceLink/private/SDLDynamicMenuUpdateAlgorithm.m
index 51bfd14e2..51bfd14e2 100644
--- a/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.m
+++ b/SmartDeviceLink/private/SDLDynamicMenuUpdateAlgorithm.m
diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.h b/SmartDeviceLink/private/SDLDynamicMenuUpdateRunScore.h
index 12f251970..12f251970 100644
--- a/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.h
+++ b/SmartDeviceLink/private/SDLDynamicMenuUpdateRunScore.h
diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.m b/SmartDeviceLink/private/SDLDynamicMenuUpdateRunScore.m
index 5066904a5..5066904a5 100644
--- a/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.m
+++ b/SmartDeviceLink/private/SDLDynamicMenuUpdateRunScore.m
diff --git a/SmartDeviceLink/SDLEncryptionLifecycleManager.h b/SmartDeviceLink/private/SDLEncryptionLifecycleManager.h
index 33641fcf5..33641fcf5 100644
--- a/SmartDeviceLink/SDLEncryptionLifecycleManager.h
+++ b/SmartDeviceLink/private/SDLEncryptionLifecycleManager.h
diff --git a/SmartDeviceLink/private/SDLEncryptionLifecycleManager.m b/SmartDeviceLink/private/SDLEncryptionLifecycleManager.m
new file mode 100644
index 000000000..8206a021f
--- /dev/null
+++ b/SmartDeviceLink/private/SDLEncryptionLifecycleManager.m
@@ -0,0 +1,327 @@
+//
+// SDLEncryptionLifecycleManager.m
+// SmartDeviceLink
+//
+// Created by standa1 on 6/27/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLAsynchronousRPCRequestOperation.h"
+#import "SDLConfiguration.h"
+#import "SDLEncryptionLifecycleManager.h"
+#import "SDLEncryptionManagerConstants.h"
+#import "SDLEncryptionConfiguration.h"
+#import "SDLError.h"
+#import "SDLLifecycleConfiguration.h"
+#import "SDLLogMacros.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLOnPermissionsChange.h"
+#import "SDLPermissionItem.h"
+#import "SDLPermissionConstants.h"
+#import "SDLProtocol.h"
+#import "SDLProtocolMessage.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLServiceEncryptionDelegate.h"
+#import "SDLStateMachine.h"
+#import "SDLVehicleType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NSString SDLVehicleMake;
+
+@interface SDLEncryptionLifecycleManager() <SDLProtocolDelegate>
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic) SDLProtocol *protocol;
+
+@property (strong, nonatomic, readwrite) SDLStateMachine *encryptionStateMachine;
+@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
+@property (strong, nonatomic, nullable) NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> *permissions;
+@property (assign, nonatomic) BOOL requiresEncryption;
+@property (strong, nonatomic) SDLConfiguration *configuration;
+
+@property (nonatomic, strong) NSMutableDictionary<SDLVehicleMake *, Class> *securityManagers;
+
+@end
+
+@implementation SDLEncryptionLifecycleManager
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ SDLLogV(@"Creating EncryptionLifecycleManager");
+ _connectionManager = connectionManager;
+ _currentHMILevel = nil;
+ _requiresEncryption = NO;
+ _securityManagers = [NSMutableDictionary dictionary];
+ _encryptionStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLEncryptionLifecycleManagerStateStopped states:[self.class sdl_encryptionStateTransitionDictionary]];
+ _permissions = [NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> dictionary];
+ _configuration = configuration;
+
+ for (Class securityManagerClass in _configuration.encryptionConfig.securityManagers) {
+ if (![securityManagerClass conformsToProtocol:@protocol(SDLSecurityType)]) {
+ NSString *reason = [NSString stringWithFormat:@"Invalid security manager: Class %@ does not conform to SDLSecurityType protocol", NSStringFromClass(securityManagerClass)];
+ @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:reason userInfo:nil];
+ }
+
+ NSSet<NSString *> *vehicleMakes = [securityManagerClass availableMakes];
+ if (vehicleMakes == nil || vehicleMakes.count == 0) {
+ NSString *reason = [NSString stringWithFormat:@"Invalid security manager: Failed to retrieve makes for class %@", NSStringFromClass(securityManagerClass)];
+ @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:reason userInfo:nil];
+ }
+
+ for (NSString *vehicleMake in vehicleMakes) {
+ self.securityManagers[vehicleMake] = securityManagerClass;
+ }
+ }
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerAppInterfaceResponseReceived:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_permissionsDidChange:) name:SDLDidChangePermissionsNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiLevelDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
+
+ return self;
+}
+
+#pragma mark - Lifecycle
+
+- (void)startWithProtocol:(SDLProtocol *)protocol {
+ SDLLogD(@"Starting encryption manager");
+ _protocol = protocol;
+
+ @synchronized(self.protocol.protocolDelegateTable) {
+ if (![self.protocol.protocolDelegateTable containsObject:self]) {
+ [self.protocol.protocolDelegateTable addObject:self];
+ }
+ }
+}
+
+- (void)stop {
+ SDLLogD(@"Stopping encryption manager");
+
+ [_permissions removeAllObjects];
+ _protocol = nil;
+ _currentHMILevel = nil;
+ _requiresEncryption = NO;
+
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
+}
+
+- (BOOL)isEncryptionReady {
+ return [self.encryptionStateMachine isCurrentState:SDLEncryptionLifecycleManagerStateReady];
+}
+
+- (void)startEncryptionService {
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStarting];
+}
+
+- (void)sdl_startEncryptionService {
+ SDLLogV(@"Attempting to start Encryption Service");
+ if (!self.protocol || !self.currentHMILevel) {
+ SDLLogV(@"Encryption manager is not yet started");
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
+ return;
+ }
+
+ if (![self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
+ if ([self sdl_appRequiresEncryption]) {
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStarting];
+ } else {
+ SDLLogE(@"Encryption Manager is not ready to encrypt.");
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
+ }
+ }
+}
+
+- (void)sdl_sendEncryptionStartService {
+ SDLLogD(@"Sending secure rpc start service");
+ [self.protocol startSecureServiceWithType:SDLServiceTypeRPC payload:nil tlsInitializationHandler:^(BOOL success, NSError *error) {
+ if (error) {
+ SDLLogE(@"TLS setup error: %@", error);
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:error];
+ }
+ }];
+}
+
+#pragma mark - State Machine
+
++ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_encryptionStateTransitionDictionary {
+ return @{
+ SDLEncryptionLifecycleManagerStateStopped : @[SDLEncryptionLifecycleManagerStateStarting],
+ SDLEncryptionLifecycleManagerStateStarting : @[SDLEncryptionLifecycleManagerStateStopped, SDLEncryptionLifecycleManagerStateReady],
+ SDLEncryptionLifecycleManagerStateReady : @[SDLEncryptionLifecycleManagerStateStopped]
+ };
+}
+
+- (void)didEnterStateEncryptionStarting {
+ SDLLogD(@"Encryption manager is starting");
+ [self sdl_sendEncryptionStartService];
+}
+
+- (void)didEnterStateEncryptionReady {
+ SDLLogD(@"Encryption manager is ready");
+}
+
+- (void)didEnterStateEncryptionStopped {
+ SDLLogD(@"Encryption manager stopped");
+}
+
+#pragma mark - SDLProtocolDelegate
+#pragma mark Encryption Start Service ACK
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
+ switch (startServiceACK.header.serviceType) {
+ case SDLServiceTypeRPC: {
+ [self sdl_handleEncryptionStartServiceACK:startServiceACK];
+ } break;
+ default: break;
+ }
+}
+
+- (void)sdl_handleEncryptionStartServiceACK:(SDLProtocolMessage *)encryptionStartServiceAck {
+ if (encryptionStartServiceAck.header.encrypted) {
+ SDLLogD(@"Encryption service started");
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateReady];
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:YES error:nil];
+ } else {
+ SDLLogD(@"Encryption service ACK received encryption = OFF");
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_encryption_off]];
+ }
+}
+
+#pragma mark Encryption Start Service NAK
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
+ switch (startServiceNAK.header.serviceType) {
+ case SDLServiceTypeRPC: {
+ [self sdl_handleEncryptionStartServiceNAK:startServiceNAK];
+ } break;
+ default: break;
+ }
+}
+
+- (void)sdl_handleEncryptionStartServiceNAK:(SDLProtocolMessage *)audioStartServiceNak {
+ SDLLogW(@"Encryption service failed to start due to NAK");
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_nak]];
+}
+
+#pragma mark Encryption End Service
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
+ switch (endServiceACK.header.serviceType) {
+ case SDLServiceTypeRPC: {
+ SDLLogW(@"Encryption RPC service ended with end service ACK");
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
+ } break;
+ default: break;
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
+ switch (endServiceNAK.header.serviceType) {
+ case SDLServiceTypeRPC: {
+ SDLLogW(@"Encryption RPC service ended with end service NAK");
+ [self.encryptionStateMachine transitionToState:SDLEncryptionLifecycleManagerStateStopped];
+ [self.configuration.encryptionConfig.delegate serviceEncryptionUpdatedOnService:SDLServiceTypeRPC encrypted:NO error:[NSError sdl_encryption_lifecycle_notReadyError]];
+ } break;
+ default: break;
+ }
+}
+
+#pragma mark - Notifications
+
+- (void)sdl_registerAppInterfaceResponseReceived:(SDLRPCResponseNotification *)notification {
+ if (![notification isResponseMemberOfClass:[SDLRegisterAppInterfaceResponse class]]) { return; }
+
+ SDLRegisterAppInterfaceResponse *registerResponse = notification.response;
+ self.protocol.securityManager = [self sdl_securityManagerForMake:registerResponse.vehicleType.make];
+ if (self.protocol.securityManager && [self.protocol.securityManager respondsToSelector:@selector(setAppId:)]) {
+ self.protocol.securityManager.appId = self.configuration.lifecycleConfig.fullAppId ? self.configuration.lifecycleConfig.fullAppId : self.configuration.lifecycleConfig.appId;
+ }
+}
+
+- (void)sdl_hmiLevelDidChange:(SDLRPCNotificationNotification *)notification {
+ if (![notification isNotificationMemberOfClass:[SDLOnHMIStatus class]]) { return; }
+
+ SDLOnHMIStatus *hmiStatus = notification.notification;
+ self.currentHMILevel = hmiStatus.hmiLevel;
+
+ // if startWithProtocol has not been called yet, abort here
+ if (!self.protocol) { return; }
+
+ if ([self.encryptionStateMachine isCurrentState:SDLEncryptionLifecycleManagerStateStopped]) {
+ [self sdl_startEncryptionService];
+ }
+}
+
+- (void)sdl_permissionsDidChange:(SDLRPCNotificationNotification *)notification {
+ if (![notification isNotificationMemberOfClass:[SDLOnPermissionsChange class]]) {
+ return;
+ }
+
+ SDLOnPermissionsChange *onPermissionChange = notification.notification;
+ NSArray<SDLPermissionItem *> *permissionItems = onPermissionChange.permissionItem;
+ [self.permissions removeAllObjects];
+
+ for (SDLPermissionItem *item in permissionItems) {
+ self.permissions[item.rpcName] = item;
+ }
+
+ self.requiresEncryption = (onPermissionChange.requireEncryption != nil) ? onPermissionChange.requireEncryption.boolValue : [self sdl_containsAtLeastOneRPCThatRequiresEncryption];
+
+ // if startWithProtocol has not been called yet, abort here
+ if (!self.protocol) { return; }
+
+ if ([self.encryptionStateMachine isCurrentState:SDLEncryptionLifecycleManagerStateStopped]) {
+ [self sdl_startEncryptionService];
+ }
+}
+
+
+#pragma mark - Utilities
+
+- (nullable id<SDLSecurityType>)sdl_securityManagerForMake:(NSString *)make {
+ if ((make != nil) && (self.securityManagers[make] != nil)) {
+ Class securityManagerClass = self.securityManagers[make];
+ return [[securityManagerClass alloc] init];
+ }
+
+ return nil;
+}
+
+#pragma mark Encryption Status
+
+- (BOOL)sdl_appRequiresEncryption {
+ if (self.requiresEncryption && [self sdl_containsAtLeastOneRPCThatRequiresEncryption]) {
+ return YES;
+ }
+ return NO;
+}
+
+- (BOOL)rpcRequiresEncryption:(__kindof SDLRPCMessage *)rpc {
+ if (self.permissions[rpc.name].requireEncryption != nil) {
+ return self.permissions[rpc.name].requireEncryption.boolValue;
+ }
+ return NO;
+}
+
+- (BOOL)sdl_containsAtLeastOneRPCThatRequiresEncryption {
+ for (SDLPermissionItem *item in self.permissions.allValues) {
+ if (item.requireEncryption) {
+ return YES;
+ }
+ }
+ return NO;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLEncryptionManagerConstants.h b/SmartDeviceLink/private/SDLEncryptionManagerConstants.h
index 43e00c365..43e00c365 100644
--- a/SmartDeviceLink/SDLEncryptionManagerConstants.h
+++ b/SmartDeviceLink/private/SDLEncryptionManagerConstants.h
diff --git a/SmartDeviceLink/SDLEncryptionManagerConstants.m b/SmartDeviceLink/private/SDLEncryptionManagerConstants.m
index 80181d729..80181d729 100644
--- a/SmartDeviceLink/SDLEncryptionManagerConstants.m
+++ b/SmartDeviceLink/private/SDLEncryptionManagerConstants.m
diff --git a/SmartDeviceLink/private/SDLError.h b/SmartDeviceLink/private/SDLError.h
new file mode 100644
index 000000000..b7fb5997c
--- /dev/null
+++ b/SmartDeviceLink/private/SDLError.h
@@ -0,0 +1,108 @@
+//
+// SDLErrorConstants.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/5/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLErrorConstants.h"
+#import "SDLResult.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NSError (SDLErrors)
+
+#pragma mark SDLEncryptionLifecycleManager
++ (NSError *)sdl_encryption_lifecycle_notReadyError;
++ (NSError *)sdl_encryption_lifecycle_encryption_off;
++ (NSError *)sdl_encryption_lifecycle_nak;
+
+#pragma mark SDLManager
+
++ (NSError *)sdl_lifecycle_rpcErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason;
++ (NSError *)sdl_lifecycle_notConnectedError;
++ (NSError *)sdl_lifecycle_notReadyError;
++ (NSError *)sdl_lifecycle_unknownRemoteErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason;
++ (NSError *)sdl_lifecycle_managersFailedToStart;
++ (NSError *)sdl_lifecycle_startedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info;
++ (NSError *)sdl_lifecycle_startedWithWarning:(nullable SDLResult)result info:(nullable NSString *)info;
++ (NSError *)sdl_lifecycle_failedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info;
++ (NSError *)sdl_lifecycle_multipleRequestsCancelled;
+
+#pragma mark SDLFileManager
+
++ (NSError *)sdl_fileManager_cannotOverwriteError;
++ (NSError *)sdl_fileManager_noKnownFileError;
++ (NSError *)sdl_fileManager_unableToStartError;
++ (NSError *)sdl_fileManager_unableToUploadError;
++ (NSError *)sdl_fileManager_unableToUpload_ErrorWithUserInfo:(NSDictionary *)userInfo;
++ (NSError *)sdl_fileManager_unableToDelete_ErrorWithUserInfo:(NSDictionary *)userInfo;
++ (NSError *)sdl_fileManager_fileDoesNotExistError;
++ (NSError *)sdl_fileManager_fileUploadCanceled;
++ (NSError *)sdl_fileManager_dataMissingError;
++ (NSError *)sdl_fileManager_staticIconError;
+
+#pragma mark Screen Managers
+
++ (NSError *)sdl_softButtonManager_pendingUpdateSuperseded;
++ (NSError *)sdl_subscribeButtonManager_notSubscribed;
++ (NSError *)sdl_textAndGraphicManager_pendingUpdateSuperseded;
+
+#pragma mark Menu Manager
+
++ (NSError *)sdl_menuManager_failedToUpdateWithDictionary:(NSDictionary *)userInfo;
+
+#pragma mark Choice Set Manager
+
++ (NSError *)sdl_choiceSetManager_choicesDeletedBeforePresentation:(NSDictionary *)userInfo;
++ (NSError *)sdl_choiceSetManager_choiceDeletionFailed:(NSDictionary *)userInfo;
++ (NSError *)sdl_choiceSetManager_choiceUploadFailed:(NSDictionary *)userInfo;
++ (NSError *)sdl_choiceSetManager_failedToCreateMenuItems;
++ (NSError *)sdl_choiceSetManager_incorrectState:(NSString *)state;
+
+
+#pragma mark System Capability Manager
+
++ (NSError *)sdl_systemCapabilityManager_moduleDoesNotSupportSystemCapabilities;
++ (NSError *)sdl_systemCapabilityManager_cannotUpdateInHMINONE;
++ (NSError *)sdl_systemCapabilityManager_cannotUpdateTypeDISPLAYS;
+
+#pragma mark Transport
+
++ (NSError *)sdl_transport_unknownError;
++ (NSError *)sdl_transport_connectionRefusedError;
++ (NSError *)sdl_transport_connectionTimedOutError;
++ (NSError *)sdl_transport_networkDownError;
+
+#pragma mark Store
+
++ (NSError *)sdl_rpcStore_invalidObjectErrorWithObject:(id)wrongObject expectedType:(Class)type;
+
+#pragma mark Cache File Manager
+
++ (NSError *)sdl_cacheFileManager_updateIconArchiveFileFailed;
+
+#pragma mark Audio Stream Manager
+
++ (NSError *)sdl_audioStreamManager_notConnected;
+
+@end
+
+@interface NSException (SDLExceptions)
+
++ (NSException *)sdl_missingHandlerException;
++ (NSException *)sdl_missingIdException;
++ (NSException *)sdl_missingFilesException;
++ (NSException *)sdl_invalidSoftButtonStateException;
++ (NSException *)sdl_carWindowOrientationException;
++ (NSException *)sdl_invalidLockscreenSetupException;
++ (NSException *)sdl_invalidSystemCapabilitySelectorExceptionWithSelector:(SEL)selector;
++ (NSException *)sdl_invalidSubscribeButtonSelectorExceptionWithSelector:(SEL)selector;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLError.m b/SmartDeviceLink/private/SDLError.m
new file mode 100644
index 000000000..7000d49b8
--- /dev/null
+++ b/SmartDeviceLink/private/SDLError.m
@@ -0,0 +1,454 @@
+//
+// SDLErrorConstants.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/5/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLError.h"
+
+#import "SDLChoiceSetManager.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation NSError (SDLErrors)
+
+#pragma mark - SDLEncryptionLifecycleManager
++ (NSError *)sdl_encryption_lifecycle_notReadyError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Encryption Lifecycle manager not ready",
+ NSLocalizedFailureReasonErrorKey: @"The SDL library is not finished setting up the connection, please wait until the encryption lifecycleState is SDLEncryptionLifecycleStateReady",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure HMI is not NONE and at least one RPC requires encryption in permissions?"
+ };
+
+ return [NSError errorWithDomain:SDLErrorDomainEncryptionLifecycleManager
+ code:SDLEncryptionLifecycleManagerErrorNotConnected
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_encryption_lifecycle_encryption_off {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Encryption Lifecycle received a ACK with encryption bit = 0",
+ NSLocalizedFailureReasonErrorKey: @"The SDL library received ACK with encryption = OFF.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure you are on a supported remote head unit with proper policies and your app id is approved."
+ };
+
+ return [NSError errorWithDomain:SDLErrorDomainEncryptionLifecycleManager
+ code:SDLEncryptionLifecycleManagerErrorEncryptionOff
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_encryption_lifecycle_nak {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Encryption Lifecycle received a negative acknowledgement",
+ NSLocalizedFailureReasonErrorKey: @"The remote head unit sent a NAK. Encryption service failed to start due to NAK.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure your certificates are valid."
+ };
+
+ return [NSError errorWithDomain:SDLErrorDomainEncryptionLifecycleManager
+ code:SDLEncryptionLifecycleManagerErrorNAK
+ userInfo:userInfo];
+
+}
+
+#pragma mark - SDLManager
+
++ (NSError *)sdl_lifecycle_rpcErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason {
+ NSString *descriptionString = description ?: @"";
+ NSString *reasonString = reason ?: @"";
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: descriptionString,
+ NSLocalizedFailureReasonErrorKey: reasonString
+ };
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorRPCRequestFailed
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_lifecycle_notConnectedError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Could not find a connection",
+ NSLocalizedFailureReasonErrorKey: @"The SDL library could not find a current connection to an SDL hardware device"
+ };
+
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorNotConnected
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_lifecycle_notReadyError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Lifecycle manager not ready",
+ NSLocalizedFailureReasonErrorKey: @"The SDL library is not finished setting up the connection, please wait until the lifecycleState is SDLLifecycleStateReady"
+ };
+
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorNotConnected
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_lifecycle_unknownRemoteErrorWithDescription:(nullable NSString *)description andReason:(nullable NSString *)reason {
+ NSString *descriptionString = description ?: @"";
+ NSString *reasonString = reason ?: @"";
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: descriptionString,
+ NSLocalizedFailureReasonErrorKey: reasonString
+ };
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorUnknownRemoteError
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_lifecycle_managersFailedToStart {
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorManagersFailedToStart
+ userInfo:nil];
+}
+
++ (NSError *)sdl_lifecycle_startedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info {
+ NSString *resultString = result ?: @"";
+ NSString *infoString = info ?: @"";
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: resultString,
+ NSLocalizedFailureReasonErrorKey: infoString
+ };
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorRegistrationFailed
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_lifecycle_startedWithWarning:(nullable SDLResult)result info:(nullable NSString *)info {
+ NSString *resultString = result ?: @"";
+ NSString *infoString = info ?: @"";
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: resultString,
+ NSLocalizedFailureReasonErrorKey: infoString
+ };
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorRegistrationSuccessWithWarning
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_lifecycle_failedWithBadResult:(nullable SDLResult)result info:(nullable NSString *)info {
+ NSString *resultString = result ?: @"";
+ NSString *infoString = info ?: @"";
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: resultString,
+ NSLocalizedFailureReasonErrorKey: infoString
+ };
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorRegistrationFailed
+ userInfo:userInfo];
+}
+
++ (NSError *)sdl_lifecycle_multipleRequestsCancelled {
+ return [NSError errorWithDomain:SDLErrorDomainLifecycleManager
+ code:SDLManagerErrorCancelled
+ userInfo:nil];
+}
+
+
+#pragma mark SDLFileManager
+
++ (NSError *)sdl_fileManager_cannotOverwriteError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Cannot overwrite remote file",
+ NSLocalizedFailureReasonErrorKey: @"The remote file system already has a file of this name, and the file manager is set to not automatically overwrite files",
+ NSLocalizedRecoverySuggestionErrorKey: @"Set SDLFileManager autoOverwrite to YES, or call forceUploadFile:completion:"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorCannotOverwrite userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_noKnownFileError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"No such remote file is currently known",
+ NSLocalizedFailureReasonErrorKey: @"The remote file is not currently known by the file manager. It could be that this file does not exist on the remote system or that the file manager has not completed its initialization and received a list of files from the remote system.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure a file with this name is present on the remote system and that the file manager has finished its initialization."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorNoKnownFile userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_unableToStartError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"The file manager was unable to start",
+ NSLocalizedFailureReasonErrorKey: @"This may be because files are not supported on this unit and / or LISTFILES returned an error",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the system is sending back a proper LIST FILES response"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorUnableToStart userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_unableToUploadError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"The file manager was unable to send this file",
+ NSLocalizedFailureReasonErrorKey: @"This could be because the file manager has not started, or the head unit does not support files",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the system is sending back a proper LIST FILES response and check the file manager's state"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorUnableToUpload userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_unableToUpload_ErrorWithUserInfo:(NSDictionary *)userInfo {
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerMultipleFileUploadTasksFailed userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_unableToDelete_ErrorWithUserInfo:(NSDictionary *)userInfo {
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerMultipleFileDeleteTasksFailed userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_fileUploadCanceled {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"The file upload was canceled",
+ NSLocalizedFailureReasonErrorKey: @"The file upload transaction was canceled before it could be completed",
+ NSLocalizedRecoverySuggestionErrorKey: @"The file upload was canceled"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerUploadCanceled userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_dataMissingError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"The file upload was canceled",
+ NSLocalizedFailureReasonErrorKey: @"The data for the file is missing",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure the data used to create the file is valid"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorFileDataMissing userInfo:userInfo];
+}
+
++ (NSError *)sdl_fileManager_staticIconError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"The file upload was canceled",
+ NSLocalizedFailureReasonErrorKey: @"The file is a static icon, which cannot be uploaded",
+ NSLocalizedRecoverySuggestionErrorKey: @"Stop trying to upload a static icon, set it via the screen manager or create an SDLImage instead"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorStaticIcon userInfo:userInfo];
+}
+
+#pragma mark SDLUploadFileOperation
+
++ (NSError *)sdl_fileManager_fileDoesNotExistError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"The file manager was unable to send the file",
+ NSLocalizedFailureReasonErrorKey: @"This could be because the file does not exist at the specified file path or that passed data is invalid",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the the correct file path is being set and that the passed data is valid"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorFileDoesNotExist userInfo:userInfo];
+}
+
+#pragma mark Screen Managers
+
++ (NSError *)sdl_textAndGraphicManager_pendingUpdateSuperseded {
+ return [NSError errorWithDomain:SDLErrorDomainTextAndGraphicManager code:SDLTextAndGraphicManagerErrorPendingUpdateSuperseded userInfo:@{
+ NSLocalizedDescriptionKey: @"The screen manager didn't complete this update because a newer update was requested. Any remaining pieces of this update that were not overridden by the new update will complete in that update."
+ }];
+}
+
++ (NSError *)sdl_softButtonManager_pendingUpdateSuperseded {
+ return [NSError errorWithDomain:SDLErrorDomainSoftButtonManager code:SDLSoftButtonManagerErrorPendingUpdateSuperseded userInfo:@{
+ NSLocalizedDescriptionKey: @"The screen manager didn't complete this update because a newer update was requested. Any remaining pieces of this update that were not overridden by the new update will complete in that update."
+ }];
+}
+
++ (NSError *)sdl_subscribeButtonManager_notSubscribed {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Subscribe Button Manager error",
+ NSLocalizedFailureReasonErrorKey: @"The subscribe button manager has not yet subscribed to the button being unsubscribed.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure you have used the Subscribe Button Manager to subscribe to the button name that you are attempting to unsubscribe."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainSubscribeButtonManager code:SDLSubscribeButtonManagerErrorNotSubscribed userInfo:userInfo];
+}
+
+#pragma mark Menu Manager
+
++ (NSError *)sdl_menuManager_failedToUpdateWithDictionary:(NSDictionary *)userInfo {
+ return [NSError errorWithDomain:SDLErrorDomainMenuManager code:SDLMenuManagerErrorRPCsFailed userInfo:userInfo];
+}
+
+#pragma mark Choice Set Manager
+
++ (NSError *)sdl_choiceSetManager_choicesDeletedBeforePresentation:(NSDictionary *)userInfo {
+ return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorPendingPresentationDeleted userInfo:userInfo];
+}
+
++ (NSError *)sdl_choiceSetManager_choiceDeletionFailed:(NSDictionary *)userInfo {
+ return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorDeletionFailed userInfo:userInfo];
+}
+
++ (NSError *)sdl_choiceSetManager_choiceUploadFailed:(NSDictionary *)userInfo {
+ return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorUploadFailed userInfo:userInfo];
+}
+
++ (NSError *)sdl_choiceSetManager_failedToCreateMenuItems {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Choice Set Manager error",
+ NSLocalizedFailureReasonErrorKey: @"Choice set manager failed to create menu items due to menuName being empty.",
+ NSLocalizedRecoverySuggestionErrorKey: @"If you are setting the menuName, it is possible that the head unit is sending incorrect displayCapabilities."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorFailedToCreateMenuItems userInfo:userInfo];
+}
+
++ (NSError *)sdl_choiceSetManager_incorrectState:(SDLChoiceManagerState *)state {
+ NSString *errorString = [NSString stringWithFormat:@"Choice Set Manager error invalid state: %@", state];
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: errorString,
+ NSLocalizedFailureReasonErrorKey: @"The choice set manager could be in an invalid state because the head unit doesn't support choice sets or the manager failed to set up correctly.",
+ NSLocalizedRecoverySuggestionErrorKey: @"If you are setting the menuName, it is possible that the head unit is sending incorrect displayCapabilities."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorInvalidState userInfo:userInfo];
+}
+
+#pragma mark System Capability Manager
+
++ (NSError *)sdl_systemCapabilityManager_moduleDoesNotSupportSystemCapabilities {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Module does not understand system capabilities",
+ NSLocalizedFailureReasonErrorKey: @"The connected module does not support system capabilities",
+ NSLocalizedRecoverySuggestionErrorKey: @"Use isCapabilitySupported to find out if the feature is supported on the head unit, but no more information about the feature is available on this module"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainSystemCapabilityManager code:SDLSystemCapabilityManagerErrorModuleDoesNotSupportSystemCapabilities userInfo:userInfo];
+}
+
++ (NSError *)sdl_systemCapabilityManager_cannotUpdateInHMINONE {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"System capabilities cannot be updated in HMI NONE.",
+ NSLocalizedFailureReasonErrorKey: @"The system capability manager attempted to subscribe or update a system capability in HMI NONE, which is not allowed.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Wait until you are in HMI BACKGROUND, LIMITED, OR FULL before subscribing or updating a capability."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainSystemCapabilityManager code:SDLSystemCapabilityManagerErrorHMINone userInfo:userInfo];
+}
+
++ (NSError *)sdl_systemCapabilityManager_cannotUpdateTypeDISPLAYS {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"System capability type DISPLAYS cannot be updated.",
+ NSLocalizedFailureReasonErrorKey: @"The system capability manager attempted to update system capability type DISPLAYS, which is not allowed.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Subscribe to DISPLAYS to automatically receive updates or retrieve a cached display capability value directly from the SystemCapabilityManager."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainSystemCapabilityManager code:SDLSystemCapabilityManagerErrorCannotUpdateTypeDisplays userInfo:userInfo];
+}
+
+#pragma mark Transport
+
++ (NSError *)sdl_transport_unknownError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"TCP connection error",
+ NSLocalizedFailureReasonErrorKey: @"TCP connection cannot be established due to unknown error.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that correct IP address and TCP port number are specified, and the phone is connected to the correct Wi-Fi network."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorUnknown userInfo:userInfo];
+}
+
++ (NSError *)sdl_transport_connectionRefusedError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"TCP connection cannot be established",
+ NSLocalizedFailureReasonErrorKey: @"The TCP connection is refused by head unit. Possible causes are that the specified TCP port number is not correct, or SDL Core is not running properly on the head unit.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that correct IP address and TCP port number are specified. Also, make sure that SDL Core on the head unit enables TCP transport."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorConnectionRefused userInfo:userInfo];
+}
+
++ (NSError *)sdl_transport_connectionTimedOutError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"TCP connection timed out",
+ NSLocalizedFailureReasonErrorKey: @"The TCP connection cannot be established within a given time. Possible causes are that the specified IP address is not correct, or the connection is blocked by a firewall.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that correct IP address and TCP port number are specified. Also, make sure that the head unit's system configuration accepts TCP connections."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorConnectionTimedOut userInfo:userInfo];
+}
+
++ (NSError *)sdl_transport_networkDownError {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Network is not available",
+ NSLocalizedFailureReasonErrorKey: @"TCP connection cannot be established because the phone is not connected to the network. Possible causes are: Wi-Fi being disabled on the phone or the phone is connected to a wrong Wi-Fi network.",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that the phone is connected to the Wi-Fi network that has the head unit on it. Also, make sure that correct IP address and TCP port number are specified."
+ };
+ return [NSError errorWithDomain:SDLErrorDomainTransport code:SDLTransportErrorNetworkDown userInfo:userInfo];
+}
+
+#pragma mark Store
+
++ (NSError *)sdl_rpcStore_invalidObjectErrorWithObject:(id)wrongObject expectedType:(Class)type {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Type of stored value doesn't match with requested",
+ NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"Requested %@ but returned %@", NSStringFromClass(type), NSStringFromClass([wrongObject class])],
+ NSLocalizedRecoverySuggestionErrorKey: @"Check the object type returned from the head unit system"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainRPCStore code:SDLRPCStoreErrorGetInvalidObject userInfo:userInfo];
+}
+
+#pragma mark Cache File Manager
+
++ (NSError *)sdl_cacheFileManager_updateIconArchiveFileFailed {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Failed to update the icon archive file",
+ NSLocalizedFailureReasonErrorKey: @"Unable to archive icon archive file to file path",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that file path is valid"
+ };
+ return [NSError errorWithDomain:SDLErrorDomainCacheFileManager code:SDLCacheManagerErrorUpdateIconArchiveFileFailure userInfo:userInfo];
+}
+
+#pragma mark Audio Stream Manager
++ (NSError *)sdl_audioStreamManager_notConnected {
+ NSDictionary<NSString *, NSString *> *userInfo = @{
+ NSLocalizedDescriptionKey: @"Couldn't send audio data, the audio service is not connected",
+ NSLocalizedFailureReasonErrorKey: @"The audio service must be connected before sending audio data",
+ NSLocalizedRecoverySuggestionErrorKey: @"Make sure that a connection has been established, you are a NAVIGATION app and have the NAVIGATION app type in your configuration, and you are the active NAVIGATION app"
+ };
+
+ return [NSError errorWithDomain:SDLErrorDomainAudioStreamManager code:SDLAudioStreamManagerErrorNotConnected userInfo:userInfo];
+}
+
+@end
+
+
+@implementation NSException (SDLExceptions)
+
++ (NSException *)sdl_missingHandlerException {
+ return [NSException
+ exceptionWithName:@"MissingHandlerException"
+ reason:@"This request requires a handler to be specified using the <RPC>WithHandler class"
+ userInfo:nil];
+}
+
++ (NSException *)sdl_missingIdException {
+ return [NSException
+ exceptionWithName:@"MissingIdException"
+ reason:@"This request requires an ID (command, softbutton, etc) to be specified"
+ userInfo:nil];
+}
+
++ (NSException *)sdl_missingFilesException {
+ return [NSException
+ exceptionWithName:@"MissingFilesNames"
+ reason:@"This request requires that the array of files not be empty"
+ userInfo:nil];
+}
+
++ (NSException *)sdl_invalidSoftButtonStateException {
+ return [NSException exceptionWithName:@"InvalidSoftButtonState" reason:@"Attempting to transition to a state that does not exist" userInfo:nil];
+}
+
++ (NSException *)sdl_carWindowOrientationException {
+ return [NSException exceptionWithName:@"com.sdl.carwindow.orientationException"
+ reason:@"SDLCarWindow rootViewController must support only a single interface orientation"
+ userInfo:nil];
+}
+
++ (NSException *)sdl_invalidLockscreenSetupException {
+ return [NSException exceptionWithName:@"com.sdl.lockscreen.setupException"
+ reason:@"SDL must be setup _after_ your app's window already exists"
+ userInfo:nil];
+}
+
++ (NSException *)sdl_invalidSystemCapabilitySelectorExceptionWithSelector:(SEL)selector {
+ return [NSException exceptionWithName:@"com.sdl.systemCapabilityManager.selectorException"
+ reason:[NSString stringWithFormat:@"Capability observation selector: %@ does not match possible selectors, which must have between 0 and 3 parameters, or is not a selector on the observer object. Check that your selector is formatted correctly, and that your observer is not nil. You should unsubscribe an observer before it goes to nil.", NSStringFromSelector(selector)]
+ userInfo:nil];
+}
+
++ (NSException *)sdl_invalidSubscribeButtonSelectorExceptionWithSelector:(SEL)selector {
+ return [NSException exceptionWithName:@"com.sdl.subscribeButtonManager.selectorException"
+ reason:[NSString stringWithFormat:@"Subscribe button observation selector: %@ does not match possible selectors, which must have between 0 and 4 parameters, or is not a selector on the observer object. Check that your selector is formatted correctly, and that your observer is not nil. You should unsubscribe an observer before it goes to nil.", NSStringFromSelector(selector)]
+ userInfo:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFileWrapper.h b/SmartDeviceLink/private/SDLFileWrapper.h
index 212e4c8b9..212e4c8b9 100644
--- a/SmartDeviceLink/SDLFileWrapper.h
+++ b/SmartDeviceLink/private/SDLFileWrapper.h
diff --git a/SmartDeviceLink/SDLFileWrapper.m b/SmartDeviceLink/private/SDLFileWrapper.m
index fac2b6580..fac2b6580 100644
--- a/SmartDeviceLink/SDLFileWrapper.m
+++ b/SmartDeviceLink/private/SDLFileWrapper.m
diff --git a/SmartDeviceLink/SDLFocusableItemHitTester.h b/SmartDeviceLink/private/SDLFocusableItemHitTester.h
index 7dd7662b4..7dd7662b4 100644
--- a/SmartDeviceLink/SDLFocusableItemHitTester.h
+++ b/SmartDeviceLink/private/SDLFocusableItemHitTester.h
diff --git a/SmartDeviceLink/SDLFocusableItemLocator.h b/SmartDeviceLink/private/SDLFocusableItemLocator.h
index 02afcb594..02afcb594 100644
--- a/SmartDeviceLink/SDLFocusableItemLocator.h
+++ b/SmartDeviceLink/private/SDLFocusableItemLocator.h
diff --git a/SmartDeviceLink/private/SDLFocusableItemLocator.m b/SmartDeviceLink/private/SDLFocusableItemLocator.m
new file mode 100644
index 000000000..fbd0c956a
--- /dev/null
+++ b/SmartDeviceLink/private/SDLFocusableItemLocator.m
@@ -0,0 +1,189 @@
+//
+// SDLHapticManager.m
+// SmartDeviceLink-iOS
+//
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLFocusableItemLocator.h"
+#import "SDLLogMacros.h"
+#import "SDLNotificationConstants.h"
+#import "SDLRectangle.h"
+#import "SDLHapticRect.h"
+#import "SDLSendHapticData.h"
+#import "SDLStreamingVideoScaleManager.h"
+#import "SDLTouch.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLFocusableItemLocator()
+
+/**
+ Array of focusable view objects extracted from the projection window
+ */
+@property (nonatomic, strong) NSMutableArray<UIView *> *focusableViews;
+@property (nonatomic, weak) id<SDLConnectionManagerType> connectionManager;
+
+/**
+ The scale manager that scales from the display screen coordinate system to the app's viewport coordinate system
+*/
+@property (strong, nonatomic) SDLStreamingVideoScaleManager *videoScaleManager;
+
+@end
+
+@implementation SDLFocusableItemLocator
+
+- (instancetype)initWithViewController:(UIViewController *)viewController connectionManager:(id<SDLConnectionManagerType>)connectionManager videoScaleManager:(SDLStreamingVideoScaleManager *)videoScaleManager {
+ self = [super init];
+ if(!self) {
+ return nil;
+ }
+
+ _viewController = viewController;
+ _connectionManager = connectionManager;
+ _videoScaleManager = videoScaleManager;
+ _focusableViews = [NSMutableArray array];
+
+ _enableHapticDataRequests = NO;
+
+ return self;
+}
+
+- (void)start {
+ SDLLogD(@"Starting");
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_projectionViewUpdated:) name:SDLDidUpdateProjectionView object:nil];
+}
+
+- (void)stop {
+ SDLLogD(@"Stopping");
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+ [self.focusableViews removeAllObjects];
+}
+
+- (void)updateInterfaceLayout {
+ [self.focusableViews removeAllObjects];
+ [self sdl_parseViewHierarchy:self.viewController.view];
+
+ // If there is a preferred view, move it to the front of the array
+ NSUInteger preferredViewIndex = [self.focusableViews indexOfObject:(UIView *)self.viewController.preferredFocusEnvironments.firstObject];
+ if (preferredViewIndex != NSNotFound && self.focusableViews.count > 1) {
+ [self.focusableViews exchangeObjectAtIndex:preferredViewIndex withObjectAtIndex:0];
+ }
+
+ SDLLogD(@"Updated VC layout, sending new haptic rects");
+ SDLLogV(@"For focusable views: %@", self.focusableViews);
+ [self sdl_sendHapticRPC];
+}
+
+/**
+ Crawls through the views recursively and adds focusable view into the member array
+
+ @param currentView is the view hierarchy to be processed
+ */
+- (void)sdl_parseViewHierarchy:(UIView *)currentView {
+ if (currentView == nil) {
+ SDLLogW(@"Error: Cannot parse nil view");
+ return;
+ }
+
+ SDLLogD(@"Parsing UIView heirarchy");
+ SDLLogV(@"UIView: %@", currentView);
+
+ // Finding focusable subviews
+ NSArray *focusableSubviews = [currentView.subviews filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(UIView * _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
+ return (evaluatedObject.canBecomeFocused || [evaluatedObject isKindOfClass:[UIButton class]]);
+ }]];
+ SDLLogV(@"Found focusable subviews: %@", focusableSubviews);
+
+ BOOL isButton = [currentView isKindOfClass:[UIButton class]];
+ if ((currentView.canBecomeFocused || isButton) && focusableSubviews.count == 0) {
+ //if current view is focusable and it doesn't have any focusable sub views then add the current view and return
+ [self.focusableViews addObject:currentView];
+ return;
+ } else if (currentView.subviews.count > 0) {
+ // if current view has focusable sub views parse them recursively
+ NSArray<UIView *> *subviews = currentView.subviews;
+
+ for (UIView *childView in subviews) {
+ [self sdl_parseViewHierarchy:childView];
+ }
+ } else {
+ return;
+ }
+}
+
+/**
+ Iterates through the focusable views, extracts rectangular parameters, creates Haptic RPC request and sends it
+ */
+- (void)sdl_sendHapticRPC {
+ if (!self.enableHapticDataRequests) {
+ SDLLogV(@"Attempting to send haptic data to a head unit that does not support haptic data. Haptic data will not be sent.");
+ return;
+ }
+
+ if (self.focusableViews.count == 0) {
+ SDLLogV(@"No haptic data to send for this view.");
+ return;
+ }
+
+ NSMutableArray<SDLHapticRect *> *hapticRects = [[NSMutableArray alloc] init];
+ for (UIView *view in self.focusableViews) {
+ CGPoint originOnScreen = [self.viewController.view convertPoint:view.frame.origin toView:nil];
+ CGRect convertedRect = {originOnScreen, view.bounds.size};
+ SDLRectangle *rect = [[SDLRectangle alloc] initWithCGRect:convertedRect];
+ // using the view index as the id field in SendHapticData request (should be guaranteed unique)
+ NSUInteger rectId = [self.focusableViews indexOfObject:view];
+ SDLHapticRect *hapticRect = [[SDLHapticRect alloc] initWithId:(UInt32)rectId rect:rect];
+ hapticRect = [self.videoScaleManager scaleHapticRect:hapticRect];
+
+ [hapticRects addObject:hapticRect];
+ }
+
+ SDLLogV(@"Sending haptic data: %@", hapticRects);
+ SDLSendHapticData *hapticRPC = [[SDLSendHapticData alloc] initWithHapticRectData:hapticRects];
+ [self.connectionManager sendConnectionManagerRequest:hapticRPC withResponseHandler:nil];
+}
+
+#pragma mark SDLFocusableItemHitTester functions
+- (nullable UIView *)viewForPoint:(CGPoint)point {
+ UIView *selectedView = nil;
+
+ for (UIView *view in self.focusableViews) {
+ //Convert the absolute location to local location and check if that falls within view boundary
+ CGPoint localPoint = [view convertPoint:point fromView:self.viewController.view];
+ if ([view pointInside:localPoint withEvent:nil]) {
+ if (selectedView != nil) {
+ selectedView = nil;
+ break;
+ //the point has been indentified in two views. We cannot identify which with confidence.
+ } else {
+ selectedView = view;
+ }
+ }
+ }
+
+ SDLLogD(@"Found a focusable view: %@, for point: %@", selectedView, NSStringFromCGPoint(point));
+ return selectedView;
+}
+
+#pragma mark notifications
+/**
+ Function that gets called when projection view updated notification occurs.
+
+ @param notification object with notification data
+ */
+- (void)sdl_projectionViewUpdated:(NSNotification *)notification {
+ if ([NSThread isMainThread]) {
+ [self updateInterfaceLayout];
+ } else {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self updateInterfaceLayout];
+ });
+ }
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFocusableItemLocatorType.h b/SmartDeviceLink/private/SDLFocusableItemLocatorType.h
index cc43ad207..cc43ad207 100644
--- a/SmartDeviceLink/SDLFocusableItemLocatorType.h
+++ b/SmartDeviceLink/private/SDLFocusableItemLocatorType.h
diff --git a/SmartDeviceLink/private/SDLGlobals.h b/SmartDeviceLink/private/SDLGlobals.h
new file mode 100644
index 000000000..321fc60b4
--- /dev/null
+++ b/SmartDeviceLink/private/SDLGlobals.h
@@ -0,0 +1,53 @@
+//
+// SDLGlobals.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 8/5/15.
+// Copyright (c) 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLProtocolConstants.h"
+
+@class SDLProtocolHeader;
+@class SDLVersion;
+
+NS_ASSUME_NONNULL_BEGIN
+
+#define SDL_SYSTEM_VERSION_LESS_THAN(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] == NSOrderedAscending)
+#define SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] != NSOrderedAscending)
+#define BLOCK_RETURN return
+
+extern NSString *const SDLMaxProxyProtocolVersion;
+extern NSString *const SDLMaxProxyRPCVersion;
+
+extern NSUInteger const SDLDefaultMTUSize;
+extern NSUInteger const SDLV1MTUSize;
+extern NSUInteger const SDLV3MTUSize;
+
+extern void *const SDLProcessingQueueName;
+extern void *const SDLConcurrentQueueName;
+
+@interface SDLGlobals : NSObject
+
+@property (copy, nonatomic, readonly) SDLVersion *protocolVersion;
+@property (strong, nonatomic) SDLVersion *rpcVersion;
+@property (copy, nonatomic) SDLVersion *maxHeadUnitProtocolVersion;
+
+@property (copy, nonatomic) dispatch_queue_t sdlProcessingQueue;
+@property (copy, nonatomic) dispatch_queue_t sdlConcurrentQueue;
+
++ (instancetype)sharedGlobals;
+
+- (void)setDynamicMTUSize:(NSUInteger)maxMTUSize forServiceType:(SDLServiceType)serviceType;
+- (NSUInteger)mtuSizeForServiceType:(SDLServiceType)serviceType;
+
+/// Calls a block on an SDL sub-queue of the internal serial SDLProcessingQueue. If the call to this method is already on that queue, the block will be run, if it is not, a `dispatch_sync` will occur to that queue first.
+/// @param queue The queue to run on. The passed queue should be a sub-queue of the SDLProcessingQueue. If it is not and the call to this method occurs on the passed queue, a deadlock will occur because the check will not pass correctly.
+/// @param block The block to run on the serial sub-queue.
++ (void)runSyncOnSerialSubQueue:(dispatch_queue_t)queue block:(void (^)(void))block;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLGlobals.m b/SmartDeviceLink/private/SDLGlobals.m
new file mode 100644
index 000000000..00d764edb
--- /dev/null
+++ b/SmartDeviceLink/private/SDLGlobals.m
@@ -0,0 +1,136 @@
+//
+// SDLGlobals.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 8/5/15.
+// Copyright (c) 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLGlobals.h"
+
+#import "SDLLogMacros.h"
+#import "SDLProtocolHeader.h"
+#import "SDLVersion.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+// VERSION DEPENDENT CODE
+NSString *const SDLMaxProxyProtocolVersion = @"5.3.0";
+NSString *const SDLMaxProxyRPCVersion = @"7.0.0";
+
+NSUInteger const SDLDefaultMTUSize = UINT32_MAX;
+NSUInteger const SDLV1MTUSize = 1024;
+NSUInteger const SDLV3MTUSize = 131024;
+
+void *const SDLProcessingQueueName = "com.sdl.serialProcessing";
+void *const SDLConcurrentQueueName = "com.sdl.concurrentProcessing";
+
+typedef NSNumber *ServiceTypeBox;
+typedef NSNumber *MTUBox;
+
+
+@interface SDLGlobals ()
+
+@property (strong, nonatomic) NSMutableDictionary<ServiceTypeBox, MTUBox> *dynamicMTUDict;
+@property (copy, nonatomic, readwrite) SDLVersion *protocolVersion;
+
+@end
+
+
+@implementation SDLGlobals
+
++ (instancetype)sharedGlobals {
+ static SDLGlobals *sharedGlobals = nil;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ sharedGlobals = [[SDLGlobals alloc] init];
+ });
+
+ return sharedGlobals;
+}
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _protocolVersion = [[SDLVersion alloc] initWithString:@"1.0.0"];
+ _maxHeadUnitProtocolVersion = [[SDLVersion alloc] initWithString:@"0.0.0"];
+ _rpcVersion = [[SDLVersion alloc] initWithString:@"1.0.0"];
+ _dynamicMTUDict = [NSMutableDictionary dictionary];
+
+ dispatch_queue_attr_t qosSerial = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, 0);
+ dispatch_queue_attr_t qosConcurrent = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INITIATED, 0);
+
+ _sdlProcessingQueue = dispatch_queue_create(SDLProcessingQueueName, qosSerial);
+ dispatch_queue_set_specific(_sdlProcessingQueue, SDLProcessingQueueName, SDLProcessingQueueName, NULL);
+ _sdlConcurrentQueue = dispatch_queue_create(SDLConcurrentQueueName, qosConcurrent);
+ dispatch_queue_set_specific(_sdlConcurrentQueue, SDLConcurrentQueueName, SDLConcurrentQueueName, NULL);
+
+ return self;
+}
+
++ (void)runSyncOnSerialSubQueue:(dispatch_queue_t)queue block:(void (^)(void))block {
+ if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
+ block();
+ } else {
+ dispatch_sync(queue, block);
+ }
+}
+
+#pragma mark - Custom Getters / Setters
+
+- (void)setMaxHeadUnitProtocolVersion:(SDLVersion *)maxHeadUnitVersion {
+ SDLVersion *maxProxyProtocolVersion = [SDLVersion versionWithString:SDLMaxProxyProtocolVersion];
+ self.protocolVersion = [maxHeadUnitVersion isGreaterThanVersion:maxProxyProtocolVersion] ? maxProxyProtocolVersion : maxHeadUnitVersion;
+
+ _maxHeadUnitProtocolVersion = maxHeadUnitVersion;
+}
+
+- (void)setDynamicMTUSize:(NSUInteger)maxMTUSize forServiceType:(SDLServiceType)serviceType {
+ SDLLogV(@"Setting dynamic MTU size: %lu for service %u", (unsigned long)maxMTUSize, serviceType);
+ self.dynamicMTUDict[@(serviceType)] = @(maxMTUSize);
+}
+
+- (NSUInteger)mtuSizeForServiceType:(SDLServiceType)serviceType {
+ if (self.dynamicMTUDict[@(serviceType)] != nil) {
+ return self.dynamicMTUDict[@(serviceType)].unsignedIntegerValue;
+ } else if (self.dynamicMTUDict[@(SDLServiceTypeRPC)]) {
+ return self.dynamicMTUDict[@(SDLServiceTypeRPC)].unsignedIntegerValue;
+ } else {
+ return [self sdl_defaultMaxMTUSize];
+ }
+}
+
+
+#pragma mark - Helpers
+
+- (NSUInteger)sdl_defaultMaxMTUSize {
+ // VERSION DEPENDENT CODE
+ switch (self.protocolVersion.major) {
+ case 1: // fallthrough
+ case 2: {
+ // HAX: This was set to 1024 at some point, for an unknown reason. We can't change it because of backward compatibility & validation concerns. The actual MTU for v1/2 is 1500 bytes.
+ return SDLV1MTUSize;
+ } break;
+ case 3: // fallthrough
+ case 4: // fallthrough
+ case 5: {
+ // If the head unit isn't running v3/4, but that's the connection scheme we're using, then we have to know that they could be running an MTU that's not 128k, so we default back to the v1/2 MTU for safety.
+ if ([self.maxHeadUnitProtocolVersion isGreaterThanVersion:[SDLVersion versionWithString:SDLMaxProxyProtocolVersion]]) {
+ return SDLV1MTUSize;
+ } else {
+ return SDLV3MTUSize;
+ }
+ } break;
+ default: {
+ NSAssert(NO, @"Unknown MTU size for protocol version: %@", self.protocolVersion);
+ return 0;
+ }
+ }
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLH264Packetizer.h b/SmartDeviceLink/private/SDLH264Packetizer.h
index 45c5e8d5c..45c5e8d5c 100644
--- a/SmartDeviceLink/SDLH264Packetizer.h
+++ b/SmartDeviceLink/private/SDLH264Packetizer.h
diff --git a/SmartDeviceLink/private/SDLH264VideoEncoder.h b/SmartDeviceLink/private/SDLH264VideoEncoder.h
new file mode 100644
index 000000000..ccb70f424
--- /dev/null
+++ b/SmartDeviceLink/private/SDLH264VideoEncoder.h
@@ -0,0 +1,71 @@
+//
+// SDLH264VideoEncoder
+// SmartDeviceLink-iOS
+//
+// Created by Muller, Alexander (A.) on 12/5/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <VideoToolbox/VideoToolbox.h>
+
+#import "SDLVideoStreamingProtocol.h"
+#import "SDLVideoEncoderDelegate.h"
+
+@protocol SDLH264Packetizer;
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, SDLVideoEncoderError) {
+ SDLVideoEncoderErrorConfigurationCompressionSessionCreationFailure = 0,
+ SDLVideoEncoderErrorConfigurationAllocationFailure = 1,
+ SDLVideoEncoderErrorConfigurationCompressionSessionSetPropertyFailure = 2,
+ SDLVideoEncoderErrorProtocolUnknown = 3
+};
+
+extern NSString *const SDLErrorDomainVideoEncoder;
+
+
+@interface SDLH264VideoEncoder : NSObject
+
+@property (nonatomic, weak, nullable) id<SDLVideoEncoderDelegate> delegate;
+
+/**
+ * The settings used in a VTCompressionSessionRef encoder. These will be verified when the video stream is started. Acceptable properties for this are located in VTCompressionProperties.
+ *
+ */
+@property (strong, nonatomic, readonly) NSDictionary<NSString *, id> *videoEncoderSettings;
+
+@property (strong, nonatomic) id<SDLH264Packetizer> packetizer;
+
+/**
+ * Provides default video encoder settings used.
+ */
+@property (class, strong, nonatomic, readonly) NSDictionary<NSString *, id> *defaultVideoEncoderSettings;
+
+/**
+ * The pixel buffer pool reference returned back from an active VTCompressionSessionRef encoder.
+ *
+ * @warning This will only return a valid pixel buffer pool after the encoder has been initialized (when the video session has started).
+ * @discussion Clients may call this once and retain the resulting pool, this call is cheap enough that it's OK to call it once per frame.
+ */
+@property (assign, nonatomic, readonly) CVPixelBufferPoolRef CV_NULLABLE pixelBufferPool;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+- (instancetype)initWithProtocol:(SDLVideoStreamingProtocol)protocol dimensions:(CGSize)dimensions ssrc:(UInt32)ssrc properties:(NSDictionary<NSString *, id> *)properties delegate:(id<SDLVideoEncoderDelegate> __nullable)delegate error:(NSError **)error NS_DESIGNATED_INITIALIZER;
+
+- (void)stop;
+
+- (BOOL)encodeFrame:(CVImageBufferRef)imageBuffer;
+
+- (BOOL)encodeFrame:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp;
+
+/**
+ * Creates a new pixel buffer using the pixelBufferPool property.
+ */
+- (CVPixelBufferRef CV_NULLABLE)newPixelBuffer;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLH264VideoEncoder.m b/SmartDeviceLink/private/SDLH264VideoEncoder.m
index 2d58a1263..2d58a1263 100644
--- a/SmartDeviceLink/SDLH264VideoEncoder.m
+++ b/SmartDeviceLink/private/SDLH264VideoEncoder.m
diff --git a/SmartDeviceLink/SDLHexUtility.h b/SmartDeviceLink/private/SDLHexUtility.h
index 95b564b57..95b564b57 100644
--- a/SmartDeviceLink/SDLHexUtility.h
+++ b/SmartDeviceLink/private/SDLHexUtility.h
diff --git a/SmartDeviceLink/SDLHexUtility.m b/SmartDeviceLink/private/SDLHexUtility.m
index c05283691..c05283691 100644
--- a/SmartDeviceLink/SDLHexUtility.m
+++ b/SmartDeviceLink/private/SDLHexUtility.m
diff --git a/SmartDeviceLink/SDLIAPConstants.h b/SmartDeviceLink/private/SDLIAPConstants.h
index 0f72f93fd..0f72f93fd 100644
--- a/SmartDeviceLink/SDLIAPConstants.h
+++ b/SmartDeviceLink/private/SDLIAPConstants.h
diff --git a/SmartDeviceLink/SDLIAPConstants.m b/SmartDeviceLink/private/SDLIAPConstants.m
index 3990d7686..3990d7686 100644
--- a/SmartDeviceLink/SDLIAPConstants.m
+++ b/SmartDeviceLink/private/SDLIAPConstants.m
diff --git a/SmartDeviceLink/SDLIAPControlSession.h b/SmartDeviceLink/private/SDLIAPControlSession.h
index 03940ef98..03940ef98 100644
--- a/SmartDeviceLink/SDLIAPControlSession.h
+++ b/SmartDeviceLink/private/SDLIAPControlSession.h
diff --git a/SmartDeviceLink/SDLIAPControlSession.m b/SmartDeviceLink/private/SDLIAPControlSession.m
index 50d7a98e4..50d7a98e4 100644
--- a/SmartDeviceLink/SDLIAPControlSession.m
+++ b/SmartDeviceLink/private/SDLIAPControlSession.m
diff --git a/SmartDeviceLink/SDLIAPControlSessionDelegate.h b/SmartDeviceLink/private/SDLIAPControlSessionDelegate.h
index 67ba2b042..67ba2b042 100644
--- a/SmartDeviceLink/SDLIAPControlSessionDelegate.h
+++ b/SmartDeviceLink/private/SDLIAPControlSessionDelegate.h
diff --git a/SmartDeviceLink/SDLIAPDataSession.h b/SmartDeviceLink/private/SDLIAPDataSession.h
index 463af6e9f..463af6e9f 100644
--- a/SmartDeviceLink/SDLIAPDataSession.h
+++ b/SmartDeviceLink/private/SDLIAPDataSession.h
diff --git a/SmartDeviceLink/SDLIAPDataSession.m b/SmartDeviceLink/private/SDLIAPDataSession.m
index 785573fde..785573fde 100644
--- a/SmartDeviceLink/SDLIAPDataSession.m
+++ b/SmartDeviceLink/private/SDLIAPDataSession.m
diff --git a/SmartDeviceLink/SDLIAPDataSessionDelegate.h b/SmartDeviceLink/private/SDLIAPDataSessionDelegate.h
index 687da5f56..687da5f56 100644
--- a/SmartDeviceLink/SDLIAPDataSessionDelegate.h
+++ b/SmartDeviceLink/private/SDLIAPDataSessionDelegate.h
diff --git a/SmartDeviceLink/SDLIAPSession.h b/SmartDeviceLink/private/SDLIAPSession.h
index 6bc62ed5f..6bc62ed5f 100644
--- a/SmartDeviceLink/SDLIAPSession.h
+++ b/SmartDeviceLink/private/SDLIAPSession.h
diff --git a/SmartDeviceLink/SDLIAPSession.m b/SmartDeviceLink/private/SDLIAPSession.m
index eaf79725f..eaf79725f 100644
--- a/SmartDeviceLink/SDLIAPSession.m
+++ b/SmartDeviceLink/private/SDLIAPSession.m
diff --git a/SmartDeviceLink/SDLIAPTransport.h b/SmartDeviceLink/private/SDLIAPTransport.h
index 5b768788a..5b768788a 100644
--- a/SmartDeviceLink/SDLIAPTransport.h
+++ b/SmartDeviceLink/private/SDLIAPTransport.h
diff --git a/SmartDeviceLink/SDLIAPTransport.m b/SmartDeviceLink/private/SDLIAPTransport.m
index 11da3a1d6..11da3a1d6 100644
--- a/SmartDeviceLink/SDLIAPTransport.m
+++ b/SmartDeviceLink/private/SDLIAPTransport.m
diff --git a/SmartDeviceLink/SDLIconArchiveFile.h b/SmartDeviceLink/private/SDLIconArchiveFile.h
index 9d50ade1b..9d50ade1b 100644
--- a/SmartDeviceLink/SDLIconArchiveFile.h
+++ b/SmartDeviceLink/private/SDLIconArchiveFile.h
diff --git a/SmartDeviceLink/SDLIconArchiveFile.m b/SmartDeviceLink/private/SDLIconArchiveFile.m
index d4bb70d4d..d4bb70d4d 100644
--- a/SmartDeviceLink/SDLIconArchiveFile.m
+++ b/SmartDeviceLink/private/SDLIconArchiveFile.m
diff --git a/SmartDeviceLink/SDLImageField+ScreenManagerExtensions.h b/SmartDeviceLink/private/SDLImageField+ScreenManagerExtensions.h
index 5db85093c..5db85093c 100644
--- a/SmartDeviceLink/SDLImageField+ScreenManagerExtensions.h
+++ b/SmartDeviceLink/private/SDLImageField+ScreenManagerExtensions.h
diff --git a/SmartDeviceLink/SDLImageField+ScreenManagerExtensions.m b/SmartDeviceLink/private/SDLImageField+ScreenManagerExtensions.m
index 1c7cc09c1..1c7cc09c1 100644
--- a/SmartDeviceLink/SDLImageField+ScreenManagerExtensions.m
+++ b/SmartDeviceLink/private/SDLImageField+ScreenManagerExtensions.m
diff --git a/SmartDeviceLink/SDLLifecycleManager.h b/SmartDeviceLink/private/SDLLifecycleManager.h
index 1911c4877..1911c4877 100644
--- a/SmartDeviceLink/SDLLifecycleManager.h
+++ b/SmartDeviceLink/private/SDLLifecycleManager.h
diff --git a/SmartDeviceLink/private/SDLLifecycleManager.m b/SmartDeviceLink/private/SDLLifecycleManager.m
new file mode 100644
index 000000000..8d25b79f7
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLifecycleManager.m
@@ -0,0 +1,969 @@
+//
+// SDLLifecycleManager.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/19/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLLifecycleManager.h"
+
+#import "NSMapTable+Subscripting.h"
+#import "SDLLifecycleRPCAdapter.h"
+#import "SDLAsynchronousRPCOperation.h"
+#import "SDLAsynchronousRPCRequestOperation.h"
+#import "SDLBackgroundTaskManager.h"
+#import "SDLChangeRegistration.h"
+#import "SDLConfiguration.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLEncryptionConfiguration.h"
+#import "SDLLogMacros.h"
+#import "SDLError.h"
+#import "SDLEncryptionLifecycleManager.h"
+#import "SDLFile.h"
+#import "SDLFileManager.h"
+#import "SDLFileManagerConfiguration.h"
+#import "SDLGlobals.h"
+#import "SDLIAPTransport.h"
+#import "SDLLifecycleConfiguration.h"
+#import "SDLLifecycleConfigurationUpdate.h"
+#import "SDLLifecycleMobileHMIStateHandler.h"
+#import "SDLLifecycleSyncPDataHandler.h"
+#import "SDLLifecycleSystemRequestHandler.h"
+#import "SDLLockScreenConfiguration.h"
+#import "SDLLockScreenManager.h"
+#import "SDLLockScreenPresenter.h"
+#import "SDLLogConfiguration.h"
+#import "SDLLogFileModuleMap.h"
+#import "SDLLogManager.h"
+#import "SDLManagerDelegate.h"
+#import "SDLNotificationDispatcher.h"
+#import "SDLOnAppInterfaceUnregistered.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLOnHashChange.h"
+#import "SDLPermissionManager.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLProtocol.h"
+#import "SDLLifecycleProtocolHandler.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRegisterAppInterface.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLResponseDispatcher.h"
+#import "SDLResult.h"
+#import "SDLScreenManager.h"
+#import "SDLSecondaryTransportManager.h"
+#import "SDLSequentialRPCRequestOperation.h"
+#import "SDLSetAppIcon.h"
+#import "SDLStateMachine.h"
+#import "SDLStreamingMediaConfiguration.h"
+#import "SDLStreamingMediaManager.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLTCPTransport.h"
+#import "SDLUnregisterAppInterface.h"
+#import "SDLVersion.h"
+#import "SDLWindowCapability.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+SDLLifecycleState *const SDLLifecycleStateStopped = @"Stopped";
+SDLLifecycleState *const SDLLifecycleStateStarted = @"Started";
+SDLLifecycleState *const SDLLifecycleStateReconnecting = @"Reconnecting";
+SDLLifecycleState *const SDLLifecycleStateConnected = @"Connected";
+SDLLifecycleState *const SDLLifecycleStateRegistered = @"Registered";
+SDLLifecycleState *const SDLLifecycleStateUpdatingConfiguration = @"UpdatingConfiguration";
+SDLLifecycleState *const SDLLifecycleStateSettingUpManagers = @"SettingUpManagers";
+SDLLifecycleState *const SDLLifecycleStateSettingUpAppIcon = @"SettingUpAppIcon";
+SDLLifecycleState *const SDLLifecycleStateSettingUpHMI = @"SettingUpHMI";
+SDLLifecycleState *const SDLLifecycleStateUnregistering = @"Unregistering";
+SDLLifecycleState *const SDLLifecycleStateReady = @"Ready";
+
+NSString *const BackgroundTaskTransportName = @"com.sdl.transport.backgroundTask";
+
+#pragma mark - Protected Class Interfaces
+@interface SDLStreamingMediaManager ()
+
+@property (strong, nonatomic, nullable) SDLSecondaryTransportManager *secondaryTransportManager;
+
+@end
+
+#pragma mark - SDLLifecycleManager Private Interface
+
+@interface SDLLifecycleManager () <SDLConnectionManagerType>
+
+// Readonly public properties
+@property (copy, nonatomic, readwrite) SDLConfiguration *configuration;
+@property (strong, nonatomic, readwrite, nullable) NSString *authToken;
+@property (strong, nonatomic, readwrite) SDLNotificationDispatcher *notificationDispatcher;
+@property (strong, nonatomic, readwrite) SDLResponseDispatcher *responseDispatcher;
+@property (strong, nonatomic, readwrite) SDLStateMachine *lifecycleStateMachine;
+
+// Private Managers
+@property (strong, nonatomic, nullable) SDLSecondaryTransportManager *secondaryTransportManager;
+@property (strong, nonatomic) SDLEncryptionLifecycleManager *encryptionLifecycleManager;
+
+// Private properties
+@property (copy, nonatomic) SDLManagerReadyBlock readyHandler;
+@property (copy, nonatomic) dispatch_queue_t lifecycleQueue;
+@property (assign, nonatomic) int32_t lastCorrelationId;
+@property (copy, nonatomic) SDLBackgroundTaskManager *backgroundTaskManager;
+@property (strong, nonatomic) SDLLanguage currentVRLanguage;
+
+// RPC Handlers
+@property (strong, nonatomic) SDLLifecycleSyncPDataHandler *syncPDataHandler;
+@property (strong, nonatomic) SDLLifecycleSystemRequestHandler *systemRequestHandler;
+@property (strong, nonatomic) SDLLifecycleMobileHMIStateHandler *mobileHMIStateHandler;
+
+// Protocol and Transport
+@property (strong, nonatomic, nullable) SDLLifecycleProtocolHandler *protocolHandler;
+
+@end
+
+
+@implementation SDLLifecycleManager
+
+#pragma mark Lifecycle
+
+- (instancetype)init {
+ return [self initWithConfiguration:[[SDLConfiguration alloc] initWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" fullAppId:@"001"] lockScreen:[SDLLockScreenConfiguration enabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:nil] delegate:nil];
+}
+
+- (instancetype)initWithConfiguration:(SDLConfiguration *)configuration delegate:(nullable id<SDLManagerDelegate>)delegate {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ // Dependencies
+ _configuration = [configuration copy];
+ _delegate = delegate;
+
+ // Logging
+ [SDLLogManager setConfiguration:_configuration.loggingConfig];
+
+ SDLLogD(@"Initializing Lifecycle Manager");
+ SDLLogD(@"SDL iOS Library Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"CFBundleShortVersionString"]);
+ SDLLogD(@"iOS Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"DTPlatformVersion"]);
+ SDLLogD(@"SDK Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"DTSDKName"]);
+ SDLLogD(@"Minimum OS Version: %@", [NSBundle bundleForClass:self.class].infoDictionary[@"MinimumOSVersion"]);
+
+ // Private properties
+ _lifecycleStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLLifecycleStateStopped states:[self.class sdl_stateTransitionDictionary]];
+ _lastCorrelationId = 0;
+ _notificationDispatcher = [[SDLNotificationDispatcher alloc] init];
+ _responseDispatcher = [[SDLResponseDispatcher alloc] initWithNotificationDispatcher:_notificationDispatcher];
+ _registerResponse = nil;
+
+ _rpcOperationQueue = [[NSOperationQueue alloc] init];
+ _rpcOperationQueue.name = @"com.sdl.lifecycle.rpcOperation.concurrent";
+ _rpcOperationQueue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
+ _lifecycleQueue = dispatch_queue_create_with_target("com.sdl.lifecycle", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
+
+ _currentVRLanguage = _configuration.lifecycleConfig.language;
+
+ // Managers
+ _fileManager = [[SDLFileManager alloc] initWithConnectionManager:self configuration:_configuration.fileManagerConfig];
+ _permissionManager = [[SDLPermissionManager alloc] init];
+ _lockScreenManager = [[SDLLockScreenManager alloc] initWithConfiguration:_configuration.lockScreenConfig notificationDispatcher:_notificationDispatcher presenter:[[SDLLockScreenPresenter alloc] init]];
+ _systemCapabilityManager = [[SDLSystemCapabilityManager alloc] initWithConnectionManager:self];
+ _screenManager = [[SDLScreenManager alloc] initWithConnectionManager:self fileManager:_fileManager systemCapabilityManager:_systemCapabilityManager];
+
+ if ([self.class sdl_isStreamingConfiguration:self.configuration]) {
+ _streamManager = [[SDLStreamingMediaManager alloc] initWithConnectionManager:self configuration:configuration systemCapabilityManager:self.systemCapabilityManager];
+ } else {
+ SDLLogV(@"Skipping StreamingMediaManager setup due to app type");
+ }
+
+ if (configuration.encryptionConfig.securityManagers != nil) {
+ _encryptionLifecycleManager = [[SDLEncryptionLifecycleManager alloc] initWithConnectionManager:self configuration:_configuration];
+ }
+
+ // RPC Handlers
+ _syncPDataHandler = [[SDLLifecycleSyncPDataHandler alloc] initWithConnectionManager:self];
+ _systemRequestHandler = [[SDLLifecycleSystemRequestHandler alloc] initWithConnectionManager:self];
+ _mobileHMIStateHandler = [[SDLLifecycleMobileHMIStateHandler alloc] initWithConnectionManager:self];
+
+ // Notifications
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_rpcServiceDidConnect) name:SDLRPCServiceDidConnect object:_notificationDispatcher];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_transportDidDisconnect) name:SDLTransportDidDisconnect object:_notificationDispatcher];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hmiStatusDidChange:) name:SDLDidChangeHMIStatusNotification object:_notificationDispatcher];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(remoteHardwareDidUnregister:) name:SDLDidReceiveAppUnregisteredNotification object:_notificationDispatcher];
+
+ _backgroundTaskManager = [[SDLBackgroundTaskManager alloc] initWithBackgroundTaskName:BackgroundTaskTransportName];
+
+ return self;
+}
+
+- (void)startWithReadyHandler:(SDLManagerReadyBlock)readyHandler {
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self sdl_startWithReadyHandler:readyHandler];
+ }];
+}
+
+- (void)sdl_startWithReadyHandler:(SDLManagerReadyBlock)readyHandler {
+ if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateStopped]) {
+ SDLLogW(@"Warning: SDL has already been started, this attempt will be ignored");
+ return;
+ }
+
+ SDLLogD(@"Starting lifecycle manager");
+ self.readyHandler = [readyHandler copy];
+
+ [self sdl_transitionToState:SDLLifecycleStateStarted];
+}
+
+- (void)stop {
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ SDLLogD(@"Lifecycle manager stopped");
+ if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
+ [self sdl_transitionToState:SDLLifecycleStateUnregistering];
+ } else {
+ [self sdl_transitionToState:SDLLifecycleStateStopped];
+ }
+ }];
+}
+
+- (void)startRPCEncryption {
+ [self.encryptionLifecycleManager startEncryptionService];
+}
+
+#pragma mark Getters
+
+- (SDLState *)lifecycleState {
+ return self.lifecycleStateMachine.currentState;
+}
+
+
+#pragma mark State Machine
+
++ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_stateTransitionDictionary {
+ return @{
+ SDLLifecycleStateStopped: @[SDLLifecycleStateStarted],
+ SDLLifecycleStateStarted: @[SDLLifecycleStateConnected, SDLLifecycleStateStopped, SDLLifecycleStateReconnecting],
+ SDLLifecycleStateReconnecting: @[SDLLifecycleStateStarted, SDLLifecycleStateStopped],
+ SDLLifecycleStateConnected: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateRegistered],
+ SDLLifecycleStateRegistered: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateUnregistering, SDLLifecycleStateSettingUpManagers, SDLLifecycleStateUpdatingConfiguration],
+ SDLLifecycleStateUpdatingConfiguration: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateSettingUpManagers],
+ SDLLifecycleStateSettingUpManagers: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateSettingUpAppIcon],
+ SDLLifecycleStateSettingUpAppIcon: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateSettingUpHMI],
+ SDLLifecycleStateSettingUpHMI: @[SDLLifecycleStateStopped, SDLLifecycleStateReconnecting, SDLLifecycleStateReady],
+ SDLLifecycleStateUnregistering: @[SDLLifecycleStateStopped],
+ SDLLifecycleStateReady: @[SDLLifecycleStateUnregistering, SDLLifecycleStateStopped, SDLLifecycleStateReconnecting]
+ };
+}
+
+- (void)didEnterStateStarted {
+ // Start a background task so a session can be established even when the app is backgrounded.
+ [self.backgroundTaskManager startBackgroundTask];
+
+ // Start up the internal protocol, transport, and other internal managers
+ self.secondaryTransportManager = nil;
+ SDLLifecycleConfiguration *lifecycleConfig = self.configuration.lifecycleConfig;
+ id<SDLTransportType> newTransport = nil;
+
+ if (lifecycleConfig.tcpDebugMode) {
+ newTransport = [[SDLTCPTransport alloc] initWithHostName:lifecycleConfig.tcpDebugIPAddress portNumber:@(lifecycleConfig.tcpDebugPort).stringValue];
+ } else {
+ newTransport = [[SDLIAPTransport alloc] init];
+
+ if (self.configuration.lifecycleConfig.allowedSecondaryTransports != SDLSecondaryTransportsNone
+ && [self.class sdl_isStreamingConfiguration:self.configuration]) {
+ // Reuse the queue to run the secondary transport manager's state machine
+ self.secondaryTransportManager = [[SDLSecondaryTransportManager alloc] initWithStreamingProtocolDelegate:(id<SDLStreamingProtocolDelegate>)self.streamManager serialQueue:self.lifecycleQueue];
+ self.streamManager.secondaryTransportManager = self.secondaryTransportManager;
+ }
+ }
+
+ SDLProtocol *newProtocol = [[SDLProtocol alloc] initWithTransport:newTransport encryptionManager:self.encryptionLifecycleManager];
+ self.protocolHandler = [[SDLLifecycleProtocolHandler alloc] initWithProtocol:newProtocol notificationDispatcher:self.notificationDispatcher configuration:self.configuration];
+ [self.protocolHandler start];
+
+ [self.secondaryTransportManager startWithPrimaryProtocol:self.protocolHandler.protocol]; // Will not run if secondaryTransportManager is nil
+}
+
+- (void)didEnterStateStopped {
+ [self sdl_stopManager:NO];
+}
+
+- (void)didEnterStateReconnecting {
+ [self sdl_stopManager:YES];
+}
+
+/// Shuts down the all the managers used to manage the lifecycle of the SDL app after the connection between the phone and SDL enabled accessory has closed. If a restart is desired, attempt to start looking for another SDL enabled accessory. If no restart is desired, another connection will not be made with a SDL enabled accessory during the current app session
+/// @param shouldRestart Whether or not to start looking for another SDL enabled accessory.
+- (void)sdl_stopManager:(BOOL)shouldRestart {
+ SDLLogV(@"Stopping manager, %@", (shouldRestart ? @"will restart" : @"will not restart"));
+
+ dispatch_group_t stopManagersTask = dispatch_group_create();
+ dispatch_group_enter(stopManagersTask);
+
+ if (self.protocolHandler != nil) {
+ dispatch_group_enter(stopManagersTask);
+ [self.protocolHandler stopWithCompletionHandler:^{
+ dispatch_group_leave(stopManagersTask);
+ }];
+ }
+ if (self.secondaryTransportManager != nil) {
+ dispatch_group_enter(stopManagersTask);
+ [self.secondaryTransportManager stopWithCompletionHandler:^{
+ dispatch_group_leave(stopManagersTask);
+ }];
+ }
+
+ dispatch_group_leave(stopManagersTask);
+
+ // This will always run after all `leave`s
+ __weak typeof(self) weakSelf = self;
+ dispatch_group_notify(stopManagersTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ [strongSelf sdl_stopManagersAndRestart:shouldRestart];
+ });
+}
+
+/// Helper method for shutting down the remaining managers that do not need extra time to shutdown. Once all the managers have been shutdown, attempt to start looking for another SDL enabled accessory.
+/// @param shouldRestart Whether or not to start looking for another SDL enabled accessory.
+- (void)sdl_stopManagersAndRestart:(BOOL)shouldRestart {
+ [self.fileManager stop];
+ [self.permissionManager stop];
+ [self.lockScreenManager stop];
+ [self.screenManager stop];
+ [self.encryptionLifecycleManager stop];
+ [self.streamManager stop];
+ [self.systemCapabilityManager stop];
+ [self.responseDispatcher clear];
+
+ [self.rpcOperationQueue cancelAllOperations];
+
+ [self.syncPDataHandler stop];
+ [self.systemRequestHandler stop];
+ [self.mobileHMIStateHandler stop];
+
+ self.registerResponse = nil;
+ self.lastCorrelationId = 0;
+ self.hmiLevel = nil;
+ self.audioStreamingState = nil;
+ self.videoStreamingState = nil;
+ self.systemContext = nil;
+
+ // Due to a race condition internally with EAStream, we cannot immediately attempt to restart the proxy, as we will randomly crash.
+ // Apple Bug ID #30059457
+ __weak typeof(self) weakSelf = self;
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), self.lifecycleQueue, ^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf) { return; }
+
+ [strongSelf.delegate managerDidDisconnect];
+
+ if (shouldRestart) {
+ [strongSelf sdl_transitionToState:SDLLifecycleStateStarted];
+ } else {
+ // End the background task because a session will not be established
+ [strongSelf.backgroundTaskManager endBackgroundTask];
+ }
+ });
+}
+
+- (void)didEnterStateConnected {
+ // If the negotiated protocol version is greater than the minimum allowable version, we need to end service and disconnect
+ if ([self.configuration.lifecycleConfig.minimumProtocolVersion isGreaterThanVersion:[SDLGlobals sharedGlobals].protocolVersion]) {
+ SDLLogW(@"Disconnecting from head unit, protocol version %@ is less than configured minimum version %@", [SDLGlobals sharedGlobals].protocolVersion.stringVersion, self.configuration.lifecycleConfig.minimumProtocolVersion.stringVersion);
+ [self.protocolHandler.protocol endServiceWithType:SDLServiceTypeRPC];
+ [self sdl_transitionToState:SDLLifecycleStateStopped];
+ return;
+ }
+
+ // Build a register app interface request with the configuration data
+ SDLRegisterAppInterface *regRequest = [[SDLRegisterAppInterface alloc] initWithLifecycleConfiguration:self.configuration.lifecycleConfig];
+
+ // Send the request and depending on the response, post the notification
+ __weak typeof(self) weakSelf = self;
+ [self sendConnectionManagerRequest:regRequest withResponseHandler:^(__kindof SDLRPCRequest *_Nullable request, __kindof SDLRPCResponse *_Nullable response, NSError *_Nullable error) {
+ // If the success BOOL is NO or we received an error at this point, we failed. Call the ready handler and transition to the DISCONNECTED state.
+ if (error != nil || ![response.success boolValue]) {
+ SDLLogE(@"Failed to register the app. Error: %@, Response: %@", error, response);
+ if (weakSelf.readyHandler) {
+ weakSelf.readyHandler(NO, error);
+ }
+
+ if (weakSelf.lifecycleState != SDLLifecycleStateReconnecting) {
+ [weakSelf sdl_transitionToState:SDLLifecycleStateStopped];
+ }
+
+ return;
+ }
+
+ weakSelf.registerResponse = (SDLRegisterAppInterfaceResponse *)response;
+ [SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithSDLMsgVersion:weakSelf.registerResponse.sdlMsgVersion];
+ [weakSelf sdl_transitionToState:SDLLifecycleStateRegistered];
+ }];
+}
+
+- (void)didEnterStateRegistered {
+ // If the negotiated RPC version is greater than the minimum allowable version, we need to unregister and disconnect
+ if ([self.configuration.lifecycleConfig.minimumRPCVersion isGreaterThanVersion:[SDLGlobals sharedGlobals].rpcVersion]) {
+ SDLLogW(@"Disconnecting from head unit, RPC version %@ is less than configured minimum version %@", [SDLGlobals sharedGlobals].rpcVersion.stringVersion, self.configuration.lifecycleConfig.minimumRPCVersion.stringVersion);
+ [self sdl_transitionToState:SDLLifecycleStateUnregistering];
+ return;
+ }
+
+ NSArray<SDLLanguage> *supportedLanguages = self.configuration.lifecycleConfig.languagesSupported;
+ SDLLanguage desiredHMILanguage = self.configuration.lifecycleConfig.language;
+ SDLLanguage desiredVRLanguage = self.currentVRLanguage;
+
+ SDLLanguage actualHMILanguage = self.registerResponse.hmiDisplayLanguage;
+ SDLLanguage actualVRLanguage = self.registerResponse.language;
+
+ BOOL delegateCanUpdateLifecycle = [self.delegate respondsToSelector:@selector(managerShouldUpdateLifecycleToLanguage:hmiLanguage:)];
+
+ // language mismatch? but actual language is a supported language? and delegate has implemented method?
+ if (delegateCanUpdateLifecycle
+ && ([supportedLanguages containsObject:actualHMILanguage] || [supportedLanguages containsObject:actualVRLanguage])
+ && (![actualHMILanguage isEqualToEnum:desiredHMILanguage] || ![actualVRLanguage isEqualToEnum:desiredVRLanguage])) {
+ // If the delegate is implemented, AND the new HMI / VR language is a supported language, AND the new HMI / VR language is not the current language, THEN go to the updating configuration state and see if the dev wants to change the registration.
+ [self sdl_transitionToState:SDLLifecycleStateUpdatingConfiguration];
+ } else {
+ [self sdl_transitionToState:SDLLifecycleStateSettingUpManagers];
+ }
+}
+
+- (void)didEnterStateUpdatingConfiguration {
+ // We can expect that the delegate has implemented the update method and the actual language is a supported language
+ SDLLanguage actualHMILanguage = self.registerResponse.hmiDisplayLanguage;
+ SDLLanguage actualLanguage = self.registerResponse.language;
+ SDLLogD(@"Updating configuration due to language mismatch. New language: %@, new hmiLanguage: %@", actualLanguage, actualHMILanguage);
+
+ SDLLifecycleConfigurationUpdate *configUpdate = nil;
+ BOOL delegateRespondsToSelector = [self.delegate respondsToSelector:@selector(managerShouldUpdateLifecycleToLanguage:hmiLanguage:)];
+ if (delegateRespondsToSelector) {
+ configUpdate = [self.delegate managerShouldUpdateLifecycleToLanguage:actualLanguage hmiLanguage:actualHMILanguage];
+ }
+
+ if (configUpdate) {
+ self.configuration.lifecycleConfig.language = actualHMILanguage;
+ self.currentVRLanguage = actualLanguage;
+ if (configUpdate.appName) {
+ self.configuration.lifecycleConfig.appName = configUpdate.appName;
+ }
+ if (configUpdate.shortAppName) {
+ self.configuration.lifecycleConfig.shortAppName = configUpdate.shortAppName;
+ }
+ if (configUpdate.ttsName) {
+ self.configuration.lifecycleConfig.ttsName = configUpdate.ttsName;
+ }
+ if (configUpdate.voiceRecognitionCommandNames) {
+ self.configuration.lifecycleConfig.voiceRecognitionCommandNames = configUpdate.voiceRecognitionCommandNames;
+ }
+
+ SDLChangeRegistration *changeRegistration = [[SDLChangeRegistration alloc] initWithLanguage:actualLanguage hmiDisplayLanguage:actualHMILanguage];
+ changeRegistration.appName = configUpdate.appName;
+ changeRegistration.ngnMediaScreenAppName = configUpdate.shortAppName;
+ changeRegistration.ttsName = configUpdate.ttsName;
+ changeRegistration.vrSynonyms = configUpdate.voiceRecognitionCommandNames;
+
+ [self sendConnectionManagerRequest:changeRegistration withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogW(@"Failed to update language with change registration. Request: %@, Response: %@, error: %@", request, response, error);
+ return;
+ }
+
+ SDLLogD(@"Successfully updated language with change registration. Request sent: %@", request);
+ }];
+ }
+
+ [self sdl_transitionToState:SDLLifecycleStateSettingUpManagers];
+}
+
+- (void)didEnterStateSettingUpManagers {
+ dispatch_group_t managerGroup = dispatch_group_create();
+
+ // Make sure there's at least one group_enter until we have synchronously run through all the startup calls
+ dispatch_group_enter(managerGroup);
+ SDLLogD(@"Setting up assistant managers");
+ [self.lockScreenManager start];
+ [self.systemCapabilityManager start];
+
+ dispatch_group_enter(managerGroup);
+ [self.fileManager startWithCompletionHandler:^(BOOL success, NSError *_Nullable error) {
+ if (!success) {
+ SDLLogW(@"File manager was unable to start; error: %@", error);
+ }
+
+ dispatch_group_leave(managerGroup);
+ }];
+
+ dispatch_group_enter(managerGroup);
+ [self.permissionManager startWithCompletionHandler:^(BOOL success, NSError *_Nullable error) {
+ if (!success) {
+ SDLLogW(@"Permission manager was unable to start; error: %@", error);
+ }
+
+ dispatch_group_leave(managerGroup);
+ }];
+
+ if (self.encryptionLifecycleManager != nil) {
+ [self.encryptionLifecycleManager startWithProtocol:self.protocolHandler.protocol];
+ }
+
+ // Starts the streaming media manager if only using the primary transport (i.e. secondary transports has been disabled in the lifecyle configuration). If using a secondary transport, setup is handled by the stream manager.
+ if (self.secondaryTransportManager == nil && self.streamManager != nil) {
+ [self.streamManager startWithProtocol:self.protocolHandler.protocol];
+ }
+
+ dispatch_group_enter(managerGroup);
+ [self.screenManager startWithCompletionHandler:^(NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogW(@"Screen Manager was unable to start; error: %@", error);
+ }
+
+ dispatch_group_leave(managerGroup);
+ }];
+
+ // We're done synchronously calling all startup methods, so we can now wait.
+ dispatch_group_leave(managerGroup);
+
+ // When done, we want to transition, even if there were errors. They may be expected, e.g. on head units that do not support files.
+ dispatch_group_notify(managerGroup, self.lifecycleQueue, ^{
+ // We could have been shut down while waiting for the completion of starting file manager and permission manager.
+ if (self.lifecycleState == SDLLifecycleStateSettingUpManagers) {
+ [self sdl_transitionToState:SDLLifecycleStateSettingUpAppIcon];
+ }
+ });
+}
+
+- (void)didEnterStateSettingUpAppIcon {
+ if (self.registerResponse.iconResumed.boolValue) {
+ [self sdl_transitionToState:SDLLifecycleStateSettingUpHMI];
+ return;
+ }
+
+ // We only want to send the app icon when the file manager is complete, and when that's done, wait for hmi status to be ready
+ __weak typeof(self) weakself = self;
+ [self sdl_sendAppIcon:self.configuration.lifecycleConfig.appIcon withCompletion:^() {
+ dispatch_async(weakself.lifecycleQueue, ^{
+ // We could have been shut down while setting up the app icon, make sure we still want to continue or we could crash
+ if (weakself.lifecycleState == SDLLifecycleStateSettingUpAppIcon) {
+ [weakself sdl_transitionToState:SDLLifecycleStateSettingUpHMI];
+ }
+ });
+ }];
+}
+
+- (void)didEnterStateSettingUpHMI {
+ // We want to make sure we've gotten a SDLOnHMIStatus notification
+ if (self.hmiLevel == nil) {
+ // If nil, return and wait until we get a notification
+ return;
+ }
+
+ // We are sure to have a HMIStatus, set state to ready
+ [self sdl_transitionToState:SDLLifecycleStateReady];
+}
+
+- (void)didEnterStateReady {
+ SDLResult registerResult = self.registerResponse.resultCode;
+ NSString *registerInfo = self.registerResponse.info;
+ NSError *startError = nil;
+
+ // If the resultCode isn't success, we got a warning. Errors were handled in `didEnterStateConnected`.
+ if (![registerResult isEqualToEnum:SDLResultSuccess]) {
+ startError = [NSError sdl_lifecycle_startedWithWarning:registerResult info:registerInfo];
+ }
+
+ // If we got to this point, we succeeded, send the error if there was a warning.
+ self.readyHandler(YES, startError);
+
+ [self.notificationDispatcher postNotificationName:SDLDidBecomeReady infoObject:nil];
+
+ // Send the hmi level going from NONE to whatever we're at now (could still be NONE)
+ [self.delegate hmiLevel:SDLHMILevelNone didChangeToLevel:self.hmiLevel];
+
+ // Send the audio streaming state going from NOT_AUDIBLE to whatever we're at now (could still be NOT_AUDIBLE)
+ if ([self.delegate respondsToSelector:@selector(audioStreamingState:didChangeToState:)]) {
+ [self.delegate audioStreamingState:SDLAudioStreamingStateNotAudible didChangeToState:self.audioStreamingState];
+ }
+
+ if ([self.delegate respondsToSelector:@selector(videoStreamingState:didChangetoState:)]) {
+ [self.delegate videoStreamingState:SDLVideoStreamingStateNotStreamable didChangetoState:self.videoStreamingState];
+ }
+
+ // Stop the background task now that setup has completed
+ [self.backgroundTaskManager endBackgroundTask];
+}
+
+- (void)didEnterStateUnregistering {
+ SDLUnregisterAppInterface *unregisterRequest = [[SDLUnregisterAppInterface alloc] init];
+
+ __weak typeof(self) weakSelf = self;
+ [self sdl_sendConnectionRequest:unregisterRequest
+ withResponseHandler:^(__kindof SDLRPCRequest *_Nullable request, __kindof SDLRPCResponse *_Nullable response, NSError *_Nullable error) {
+ if (error != nil || ![response.success boolValue]) {
+ SDLLogE(@"SDL Error unregistering, we are going to hard disconnect: %@, response: %@", error, response);
+ }
+
+ [weakSelf sdl_transitionToState:SDLLifecycleStateStopped];
+ }];
+}
+
+
+#pragma mark Post Manager Setup Processing
+
+- (void)sdl_sendAppIcon:(nullable SDLFile *)appIcon withCompletion:(void (^)(void))completion {
+ // If no app icon was set, just move on to ready
+ if (appIcon == nil || ![self.systemCapabilityManager.defaultMainWindowCapability.imageTypeSupported containsObject:SDLImageTypeDynamic]) {
+ completion();
+ return;
+ }
+
+ [self.fileManager uploadFile:appIcon completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError *_Nullable error) {
+ // These errors could be recoverable (particularly "cannot overwrite"), so we'll still attempt to set the app icon
+ if (error != nil) {
+ if (error.code == SDLFileManagerErrorCannotOverwrite) {
+ SDLLogW(@"Failed to upload app icon: A file with this name already exists on the system");
+ } else {
+ SDLLogW(@"Unexpected error uploading app icon: %@", error);
+ completion();
+ return;
+ }
+ }
+
+ // Once we've tried to put the file on the remote system, try to set the app icon
+ SDLSetAppIcon *setAppIcon = [[SDLSetAppIcon alloc] init];
+ setAppIcon.syncFileName = appIcon.name;
+
+ [self sendConnectionManagerRequest:setAppIcon
+ withResponseHandler:^(__kindof SDLRPCRequest *_Nullable request, __kindof SDLRPCResponse *_Nullable response, NSError *_Nullable error) {
+ if (error != nil) {
+ SDLLogW(@"Error setting up app icon: %@", error);
+ }
+
+ // We've succeeded or failed
+ completion();
+ }];
+ }];
+}
+
+
+#pragma mark Sending Requests
+
+- (void)sendRPC:(__kindof SDLRPCMessage *)rpc {
+ if ([rpc isKindOfClass:SDLRPCRequest.class]) {
+ SDLRPCRequest *requestRPC = (SDLRPCRequest *)rpc;
+ [self sendRequest:requestRPC withResponseHandler:nil];
+ } else if ([rpc isKindOfClass:SDLRPCResponse.class] || [rpc isKindOfClass:SDLRPCNotification.class]) {
+ [self sdl_sendRPC:rpc];
+ } else {
+ NSAssert(false, @"The request should be of type `Request`, `Response` or `Notification");
+ }
+}
+
+- (void)sdl_sendRPC:(__kindof SDLRPCMessage *)rpc {
+ SDLAsynchronousRPCOperation *op = [[SDLAsynchronousRPCOperation alloc] initWithConnectionManager:self rpc:rpc];
+ [self.rpcOperationQueue addOperation:op];
+}
+
+- (void)sendRequest:(SDLRPCRequest *)request withResponseHandler:(nullable SDLResponseHandler)handler {
+ SDLAsynchronousRPCRequestOperation *op = [[SDLAsynchronousRPCRequestOperation alloc] initWithConnectionManager:self request:request responseHandler:handler];
+ [self.rpcOperationQueue addOperation:op];
+}
+
+- (void)sendRequests:(NSArray<SDLRPCRequest *> *)requests progressHandler:(nullable SDLMultipleAsyncRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler {
+ if (requests.count == 0) {
+ completionHandler(YES);
+ return;
+ }
+
+ SDLAsynchronousRPCRequestOperation *op = [[SDLAsynchronousRPCRequestOperation alloc] initWithConnectionManager:self requests:requests progressHandler:progressHandler completionHandler:completionHandler];
+ [self.rpcOperationQueue addOperation:op];
+}
+
+- (void)sendSequentialRequests:(NSArray<SDLRPCRequest *> *)requests progressHandler:(nullable SDLMultipleSequentialRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler {
+ if (requests.count == 0) {
+ completionHandler(YES);
+ return;
+ }
+
+ SDLSequentialRPCRequestOperation *op = [[SDLSequentialRPCRequestOperation alloc] initWithConnectionManager:self requests:requests progressHandler:progressHandler completionHandler:completionHandler];
+ [self.rpcOperationQueue addOperation:op];
+}
+
+/// Send a request immediately without going through the RPC operation queue
+/// @param rpc The RPC to send
+- (void)sendConnectionRPC:(__kindof SDLRPCMessage *)rpc {
+ NSAssert(([rpc isKindOfClass:SDLRPCResponse.class] || [rpc isKindOfClass:SDLRPCNotification.class]), @"Only RPCs of type `Response` or `Notfication` can be sent using this method. To send RPCs of type `Request` use sendConnectionRequest:withResponseHandler:.");
+
+ if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
+ SDLLogW(@"Manager not ready, message not sent (%@)", rpc);
+ return;
+ }
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self sdl_sendConnectionRequest:rpc withResponseHandler:nil];
+ }];
+}
+
+/// Send a non-request RPC immediately without going through the RPC operation queue, and allow requests to be sent before the managers have completed setup.
+/// @param rpc The RPC to send
+- (void)sendConnectionManagerRPC:(__kindof SDLRPCMessage *)rpc {
+ NSAssert(([rpc isKindOfClass:SDLRPCResponse.class] || [rpc isKindOfClass:SDLRPCNotification.class]), @"Only RPCs of type `Response` or `Notfication` can be sent using this method. To send RPCs of type `Request` use sendConnectionRequest:withResponseHandler:.");
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self sdl_sendConnectionRequest:rpc withResponseHandler:nil];
+ }];
+}
+
+/// Send a request immediately without going through the RPC operation queue
+/// @param request The request to send
+/// @param handler A callback handler for responses to the request
+- (void)sendConnectionRequest:(__kindof SDLRPCRequest *)request withResponseHandler:(nullable SDLResponseHandler)handler {
+ if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
+ SDLLogW(@"Manager not ready, request not sent (%@)", request);
+ if (handler) {
+ handler(request, nil, [NSError sdl_lifecycle_notReadyError]);
+ }
+
+ return;
+ }
+
+ if (!request.isPayloadProtected && [self.encryptionLifecycleManager rpcRequiresEncryption:request]) {
+ request.payloadProtected = YES;
+ }
+
+ if (request.isPayloadProtected && !self.encryptionLifecycleManager.isEncryptionReady) {
+ SDLLogW(@"Encryption Manager not ready, request not sent (%@)", request);
+ if (handler) {
+ handler(request, nil, [NSError sdl_encryption_lifecycle_notReadyError]);
+ }
+
+ return;
+ }
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self sdl_sendConnectionRequest:request withResponseHandler:handler];
+ }];
+}
+
+/// Send a request immediately without going through the RPC operation queue, and allow requests to be sent before the managers have completed setup.
+/// @param request The request to send
+/// @param handler A callback handler for responses to the request
+- (void)sendConnectionManagerRequest:(__kindof SDLRPCMessage *)request withResponseHandler:(nullable SDLResponseHandler)handler {
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self sdl_sendConnectionRequest:request withResponseHandler:handler];
+ }];
+}
+
+/// Send a request by sending it directly through the protocol, without going through the RPC operation queue
+/// @param request The request to send
+/// @param handler A callback handler for responses to the request
+- (void)sdl_sendConnectionRequest:(__kindof SDLRPCMessage *)request withResponseHandler:(nullable SDLResponseHandler)handler {
+ // We will allow things to be sent in a "SDLLifecycleStateConnected" state in the private method, but block it in the public method sendRequest:withCompletionHandler: so that the lifecycle manager can complete its setup without being bothered by developer error
+ NSParameterAssert(request != nil);
+
+ // If, for some reason, the request is nil we should error out.
+ if (request == nil) {
+ NSError *error = [NSError sdl_lifecycle_rpcErrorWithDescription:@"Nil Request Sent" andReason:@"A nil RPC request was passed and cannot be sent."];
+ SDLLogW(@"%@", error);
+ if (handler) {
+ handler(nil, nil, error);
+ }
+ return;
+ }
+
+ // Before we send a message, we have to check if we need to adapt the RPC. When adapting the RPC, there could be multiple RPCs that need to be sent.
+ NSArray<SDLRPCMessage *> *messages = [SDLLifecycleRPCAdapter adaptRPC:request direction:SDLRPCDirectionOutgoing];
+ for (SDLRPCMessage *message in messages) {
+ if ([request isKindOfClass:SDLRPCRequest.class]) {
+ // Generate and add a correlation ID to the request. When a response for the request is returned from Core, it will have the same correlation ID
+ SDLRPCRequest *requestRPC = (SDLRPCRequest *)message;
+ NSNumber *corrID = [self sdl_getNextCorrelationId];
+ requestRPC.correlationID = corrID;
+ [self.responseDispatcher storeRequest:requestRPC handler:handler];
+ [self.protocolHandler.protocol sendRPC:requestRPC];
+ } else if ([request isKindOfClass:SDLRPCResponse.class] || [request isKindOfClass:SDLRPCNotification.class]) {
+ [self.protocolHandler.protocol sendRPC:message];
+ } else {
+ SDLLogE(@"Will not send an RPC with unknown type, %@. The request should be of type SDLRPCRequest, SDLRPCResponse, or SDLRPCNotification.", request.class);
+ }
+ }
+}
+
+#pragma mark Helper Methods
+
+/// Returns true if the app type set in the configuration is `NAVIGATION` or `PROJECTION`; false for any other app type.
+/// @param configuration This session's configuration
++ (BOOL)sdl_isStreamingConfiguration:(SDLConfiguration *)configuration {
+ if ([configuration.lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] ||
+ [configuration.lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection] ||
+ [configuration.lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeNavigation] ||
+ [configuration.lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeProjection]) {
+ return YES;
+ }
+
+ return NO;
+}
+
+- (NSNumber<SDLInt> *)sdl_getNextCorrelationId {
+ if (self.lastCorrelationId == INT32_MAX) {
+ self.lastCorrelationId = 0;
+ }
+
+ return @(++self.lastCorrelationId);
+}
+
++ (BOOL)sdl_checkNotification:(NSNotification *)notification containsKindOfClass:(Class) class {
+ NSAssert([notification.userInfo[SDLNotificationUserInfoObject] isKindOfClass:class], @"A notification was sent with an unanticipated object");
+ if (![notification.userInfo[SDLNotificationUserInfoObject] isKindOfClass:class]) {
+ return NO;
+ }
+
+ return YES;
+}
+
+- (void)sdl_transitionToState:(SDLState *)state {
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self.lifecycleStateMachine transitionToState:state];
+ }];
+}
+
+/**
+ * Gets the authentication token returned by the `StartServiceACK` header
+ *
+ * @return An authentication token
+ */
+- (nullable NSString *)authToken {
+ return self.protocolHandler.protocol.authToken;
+}
+
+#pragma mark SDL notification observers
+
+- (void)sdl_rpcServiceDidConnect {
+ // Ignore the connection while we are reconnecting. The proxy needs to be disposed and restarted in order to ensure correct state. https://github.com/smartdevicelink/sdl_ios/issues/1172
+ if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]
+ && ![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReconnecting]) {
+ SDLLogD(@"Transport connected");
+
+ dispatch_async(self.lifecycleQueue, ^{
+ [self sdl_transitionToState:SDLLifecycleStateConnected];
+ });
+ }
+}
+
+- (void)sdl_transportDidDisconnect {
+ SDLLogD(@"Transport Disconnected");
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ if (self.lifecycleState == SDLLifecycleStateUnregistering || self.lifecycleState == SDLLifecycleStateStopped) {
+ [self sdl_transitionToState:SDLLifecycleStateStopped];
+ } else {
+ [self sdl_transitionToState:SDLLifecycleStateReconnecting];
+ }
+ }];
+}
+
+- (void)hmiStatusDidChange:(SDLRPCNotificationNotification *)notification {
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self sdl_hmiStatusDidChange:notification];
+ }];
+}
+
+- (void)sdl_hmiStatusDidChange:(SDLRPCNotificationNotification *)notification {
+ if (![notification isNotificationMemberOfClass:[SDLOnHMIStatus class]]) {
+ return;
+ }
+
+ SDLOnHMIStatus *hmiStatusNotification = notification.notification;
+
+ if (hmiStatusNotification.windowID != nil && hmiStatusNotification.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
+ SDLHMILevel oldHMILevel = self.hmiLevel;
+ self.hmiLevel = hmiStatusNotification.hmiLevel;
+
+ SDLAudioStreamingState oldAudioStreamingState = self.audioStreamingState;
+ self.audioStreamingState = hmiStatusNotification.audioStreamingState;
+
+ SDLVideoStreamingState oldVideoStreamingState = self.videoStreamingState;
+ self.videoStreamingState = hmiStatusNotification.videoStreamingState;
+
+ SDLSystemContext oldSystemContext = self.systemContext;
+ self.systemContext = hmiStatusNotification.systemContext;
+
+ if (![oldHMILevel isEqualToEnum:self.hmiLevel]) {
+ SDLLogD(@"HMI level changed from %@ to %@", oldHMILevel, self.hmiLevel);
+ }
+
+ if (![oldAudioStreamingState isEqualToEnum:self.audioStreamingState]) {
+ SDLLogD(@"Audio streaming state changed from %@ to %@", oldAudioStreamingState, self.audioStreamingState);
+ }
+
+ if (![oldVideoStreamingState isEqualToEnum:self.videoStreamingState]) {
+ SDLLogD(@"Video streaming state changed from %@ to %@", oldVideoStreamingState, self.videoStreamingState);
+ }
+
+ if (![oldSystemContext isEqualToEnum:self.systemContext]) {
+ SDLLogD(@"System context changed from %@ to %@", oldSystemContext, self.systemContext);
+ }
+
+ if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateSettingUpHMI]) {
+ [self sdl_transitionToState:SDLLifecycleStateReady];
+ }
+
+ if (![self.lifecycleStateMachine isCurrentState:SDLLifecycleStateReady]) {
+ return;
+ }
+
+ if (![oldHMILevel isEqualToEnum:self.hmiLevel]
+ && !(oldHMILevel == nil && self.hmiLevel == nil)) {
+ [self.delegate hmiLevel:oldHMILevel didChangeToLevel:self.hmiLevel];
+ }
+
+ if (![oldAudioStreamingState isEqualToEnum:self.audioStreamingState]
+ && !(oldAudioStreamingState == nil && self.audioStreamingState == nil)
+ && [self.delegate respondsToSelector:@selector(audioStreamingState:didChangeToState:)]) {
+ [self.delegate audioStreamingState:oldAudioStreamingState didChangeToState:self.audioStreamingState];
+ }
+
+ if (![oldVideoStreamingState isEqualToEnum:self.videoStreamingState]
+ && !(oldVideoStreamingState == nil && self.videoStreamingState == nil)
+ && [self.delegate respondsToSelector:@selector(videoStreamingState:didChangetoState:)]) {
+ [self.delegate videoStreamingState:oldVideoStreamingState didChangetoState:self.videoStreamingState];
+ }
+
+ if (![oldSystemContext isEqualToEnum:self.systemContext]
+ && !(oldSystemContext == nil && self.systemContext == nil)
+ && [self.delegate respondsToSelector:@selector(systemContext:didChangeToContext:)]) {
+ [self.delegate systemContext:oldSystemContext didChangeToContext:self.systemContext];
+ }
+}
+
+- (void)remoteHardwareDidUnregister:(SDLRPCNotificationNotification *)notification {
+ [SDLGlobals runSyncOnSerialSubQueue:self.lifecycleQueue block:^{
+ [self sdl_remoteHardwareDidUnregister:notification];
+ }];
+}
+
+- (void)sdl_remoteHardwareDidUnregister:(SDLRPCNotificationNotification *)notification {
+ if (![notification isNotificationMemberOfClass:[SDLOnAppInterfaceUnregistered class]]) {
+ return;
+ }
+
+ SDLOnAppInterfaceUnregistered *appUnregisteredNotification = notification.notification;
+ SDLLogE(@"Remote Device forced unregistration for reason: %@", appUnregisteredNotification.reason);
+
+ if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateUnregistering]) {
+ [self sdl_transitionToState:SDLLifecycleStateStopped];
+ } else if ([self.lifecycleStateMachine isCurrentState:SDLLifecycleStateStopped]) {
+ return;
+ } else if (appUnregisteredNotification.reason != nil
+ && ([appUnregisteredNotification.reason isEqualToEnum:SDLAppInterfaceUnregisteredReasonAppUnauthorized]
+ || [appUnregisteredNotification.reason isEqualToEnum:SDLAppInterfaceUnregisteredReasonProtocolViolation])) {
+ [self sdl_transitionToState:SDLLifecycleStateStopped];
+ } else {
+ [self sdl_transitionToState:SDLLifecycleStateReconnecting];
+ }
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleMobileHMIStateHandler.h b/SmartDeviceLink/private/SDLLifecycleMobileHMIStateHandler.h
index 0463995e3..0463995e3 100644
--- a/SmartDeviceLink/SDLLifecycleMobileHMIStateHandler.h
+++ b/SmartDeviceLink/private/SDLLifecycleMobileHMIStateHandler.h
diff --git a/SmartDeviceLink/SDLLifecycleMobileHMIStateHandler.m b/SmartDeviceLink/private/SDLLifecycleMobileHMIStateHandler.m
index 5a9be2543..5a9be2543 100644
--- a/SmartDeviceLink/SDLLifecycleMobileHMIStateHandler.m
+++ b/SmartDeviceLink/private/SDLLifecycleMobileHMIStateHandler.m
diff --git a/SmartDeviceLink/SDLLifecycleProtocolHandler.h b/SmartDeviceLink/private/SDLLifecycleProtocolHandler.h
index f39964e8b..f39964e8b 100644
--- a/SmartDeviceLink/SDLLifecycleProtocolHandler.h
+++ b/SmartDeviceLink/private/SDLLifecycleProtocolHandler.h
diff --git a/SmartDeviceLink/private/SDLLifecycleProtocolHandler.m b/SmartDeviceLink/private/SDLLifecycleProtocolHandler.m
new file mode 100644
index 000000000..858b0bdaf
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLifecycleProtocolHandler.m
@@ -0,0 +1,218 @@
+//
+// SDLProtocolDelegateHandler.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 6/10/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLifecycleProtocolHandler.h"
+
+#import "SDLConfiguration.h"
+#import "SDLControlFramePayloadRPCStartService.h"
+#import "SDLError.h"
+#import "SDLGlobals.h"
+#import "SDLLifecycleConfiguration.h"
+#import "SDLLifecycleRPCAdapter.h"
+#import "SDLLogMacros.h"
+#import "SDLNotificationConstants.h"
+#import "SDLNotificationDispatcher.h"
+#import "SDLProtocol.h"
+#import "SDLProtocolHeader.h"
+#import "SDLProtocolMessage.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCMessage.h"
+#import "SDLRPCMessageType.h"
+#import "SDLTimer.h"
+
+static const float StartSessionTime = 10.0;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLifecycleProtocolHandler ()
+
+@property (weak, nonatomic) SDLNotificationDispatcher *notificationDispatcher;
+
+@property (strong, nonatomic) SDLTimer *rpcStartServiceTimeoutTimer;
+@property (copy, nonatomic) NSString *appId;
+
+@end
+
+@implementation SDLLifecycleProtocolHandler
+
+- (instancetype)initWithProtocol:(SDLProtocol *)protocol notificationDispatcher:(SDLNotificationDispatcher *)notificationDispatcher configuration:(SDLConfiguration *)configuration {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _protocol = protocol;
+ _notificationDispatcher = notificationDispatcher;
+
+ _appId = configuration.lifecycleConfig.fullAppId ? configuration.lifecycleConfig.fullAppId : configuration.lifecycleConfig.appId;
+ _protocol.appId = _appId;
+
+ [_protocol.protocolDelegateTable addObject:self];
+
+ return self;
+}
+
+- (void)start {
+ [self.protocol start];
+}
+
+- (void)stopWithCompletionHandler:(void (^)(void))disconnectCompletionHandler {
+ [self.protocol stopWithCompletionHandler:^{
+ disconnectCompletionHandler();
+ }];
+}
+
+
+#pragma mark - SDLProtocolDelegate
+
+/// Called when the transport is opened. We will send the RPC Start Service and wait for the RPC Start Service ACK
+- (void)protocolDidOpen:(SDLProtocol *)protocol {
+ if (self.protocol != protocol) { return; }
+
+ SDLLogD(@"Transport opened, sending an RPC Start Service, and starting timer for RPC Start Service ACK to be received.");
+ [self.notificationDispatcher postNotificationName:SDLTransportDidConnect infoObject:nil];
+
+ SDLControlFramePayloadRPCStartService *startServicePayload = [[SDLControlFramePayloadRPCStartService alloc] initWithVersion:SDLMaxProxyProtocolVersion];
+ [self.protocol startServiceWithType:SDLServiceTypeRPC payload:startServicePayload.data];
+
+ if (self.rpcStartServiceTimeoutTimer == nil) {
+ self.rpcStartServiceTimeoutTimer = [[SDLTimer alloc] initWithDuration:StartSessionTime repeat:NO];
+ __weak typeof(self) weakSelf = self;
+ self.rpcStartServiceTimeoutTimer.elapsedBlock = ^{
+ SDLLogE(@"Start session timed out after %f seconds, closing the connection.", StartSessionTime);
+ [weakSelf.protocol stopWithCompletionHandler:^{}];
+ };
+ }
+ [self.rpcStartServiceTimeoutTimer start];
+}
+
+/// Called when the transport is closed.
+- (void)protocolDidClose:(SDLProtocol *)protocol {
+ if (self.protocol != protocol) { return; }
+
+ SDLLogW(@"Transport disconnected");
+ [self.notificationDispatcher postNotificationName:SDLTransportDidDisconnect infoObject:nil];
+}
+
+- (void)protocol:(SDLProtocol *)protocol transportDidError:(NSError *)error {
+ if (self.protocol != protocol) { return; }
+
+ SDLLogW(@"Transport error: %@", error);
+ [self.notificationDispatcher postNotificationName:SDLTransportConnectError infoObject:error];
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
+ if (self.protocol != protocol) { return; }
+
+ SDLLogD(@"Start Service (ACK) SessionId: %d for serviceType %d", startServiceACK.header.sessionID, startServiceACK.header.serviceType);
+
+ if (startServiceACK.header.serviceType == SDLServiceTypeRPC) {
+ [self.rpcStartServiceTimeoutTimer cancel];
+ [self.notificationDispatcher postNotificationName:SDLRPCServiceDidConnect infoObject:nil];
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
+ if (self.protocol != protocol) { return; }
+
+ SDLLogD(@"Start Service (NAK): SessionId: %d for serviceType %d", startServiceNAK.header.sessionID, startServiceNAK.header.serviceType);
+
+ if (startServiceNAK.header.serviceType == SDLServiceTypeRPC) {
+ [self.rpcStartServiceTimeoutTimer cancel];
+ [self.notificationDispatcher postNotificationName:SDLRPCServiceConnectionDidError infoObject:nil];
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
+ if (self.protocol != protocol) { return; }
+
+ SDLLogD(@"End Service (ACK): SessionId: %d for serviceType %d", endServiceACK.header.sessionID, endServiceACK.header.serviceType);
+
+ if (endServiceACK.header.serviceType == SDLServiceTypeRPC) {
+ [self.rpcStartServiceTimeoutTimer cancel];
+ [self.notificationDispatcher postNotificationName:SDLRPCServiceDidDisconnect infoObject:nil];
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
+ if (self.protocol != protocol) { return; }
+
+ if (endServiceNAK.header.serviceType == SDLServiceTypeRPC) {
+ NSError *error = [NSError sdl_lifecycle_unknownRemoteErrorWithDescription:@"RPC Service failed to stop" andReason:nil];
+ [self.notificationDispatcher postNotificationName:SDLRPCServiceConnectionDidError infoObject:error];
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveMessage:(SDLProtocolMessage *)msg {
+ if (self.protocol != protocol) { return; }
+
+ NSDictionary<NSString *, id> *rpcMessageAsDictionary = [msg rpcDictionary];
+ SDLRPCMessage *receivedMessage = [[SDLRPCMessage alloc] initWithDictionary:rpcMessageAsDictionary];
+ NSString *fullName = [self sdl_fullNameForMessage:receivedMessage];
+
+ // From the function name, create the corresponding RPCObject and initialize it
+ NSString *functionClassName = [NSString stringWithFormat:@"SDL%@", fullName];
+ SDLRPCMessage *newMessage = [[NSClassFromString(functionClassName) alloc] initWithDictionary:rpcMessageAsDictionary];
+
+ // If we were unable to create the message, it's an unknown type; discard it
+ if (newMessage == nil) {
+ SDLLogE(@"Unable to create message for RPC: %@", rpcMessageAsDictionary);
+ return;
+ }
+
+ // Adapt the incoming message then call the callback
+ NSArray<SDLRPCMessage *> *adaptedMessages = [SDLLifecycleRPCAdapter adaptRPC:newMessage direction:SDLRPCDirectionIncoming];
+ for (SDLRPCMessage *message in adaptedMessages) {
+ [self sdl_sendCallbackForMessage:message];
+ }
+}
+
+#pragma mark - Utilities
+
+- (void)sdl_sendCallbackForMessage:(SDLRPCMessage *)message {
+ // Log the RPC message
+ SDLLogV(@"Sending callback for RPC message: %@", message);
+
+ SDLNotificationName notificationName = [self sdl_notificationNameForMessage:message];
+ if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameResponse]) {
+ [self.notificationDispatcher postRPCResponseNotification:notificationName response:(SDLRPCResponse *)message];
+ } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameRequest]) {
+ [self.notificationDispatcher postRPCRequestNotification:notificationName request:(SDLRPCRequest *)message];
+ } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameNotification]) {
+ [self.notificationDispatcher postRPCNotificationNotification:notificationName notification:(SDLRPCNotification *)message];
+ }
+}
+
+- (SDLNotificationName)sdl_notificationNameForMessage:(SDLRPCMessage *)message {
+ NSString *messageName = message.name;
+ if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameResponse]) {
+ return [NSString stringWithFormat:@"com.sdl.response.%@", messageName];
+ } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameRequest]) {
+ return [NSString stringWithFormat:@"com.sdl.request.%@", messageName];
+ } else if ([message.messageType isEqualToEnum:SDLRPCMessageTypeNameNotification]) {
+ return [NSString stringWithFormat:@"com.sdl.notification.%@", messageName];
+ }
+
+ return messageName;
+}
+
+- (NSString *)sdl_fullNameForMessage:(SDLRPCMessage *)message {
+ NSString *functionName = message.name;
+ NSString *messageType = message.messageType;
+
+ // If it's a response, append "response"
+ if ([messageType isEqualToEnum:SDLRPCMessageTypeNameResponse]) {
+ if (![functionName isEqualToEnum:SDLRPCFunctionNameGenericResponse]) {
+ functionName = [NSString stringWithFormat:@"%@Response", functionName];
+ }
+ }
+
+ return functionName;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleRPCAdapter.h b/SmartDeviceLink/private/SDLLifecycleRPCAdapter.h
index 1eea483d4..1eea483d4 100644
--- a/SmartDeviceLink/SDLLifecycleRPCAdapter.h
+++ b/SmartDeviceLink/private/SDLLifecycleRPCAdapter.h
diff --git a/SmartDeviceLink/SDLLifecycleRPCAdapter.m b/SmartDeviceLink/private/SDLLifecycleRPCAdapter.m
index 3b965172c..3b965172c 100644
--- a/SmartDeviceLink/SDLLifecycleRPCAdapter.m
+++ b/SmartDeviceLink/private/SDLLifecycleRPCAdapter.m
diff --git a/SmartDeviceLink/SDLLifecycleSyncPDataHandler.h b/SmartDeviceLink/private/SDLLifecycleSyncPDataHandler.h
index f80ca385d..f80ca385d 100644
--- a/SmartDeviceLink/SDLLifecycleSyncPDataHandler.h
+++ b/SmartDeviceLink/private/SDLLifecycleSyncPDataHandler.h
diff --git a/SmartDeviceLink/SDLLifecycleSyncPDataHandler.m b/SmartDeviceLink/private/SDLLifecycleSyncPDataHandler.m
index 58ef27696..58ef27696 100644
--- a/SmartDeviceLink/SDLLifecycleSyncPDataHandler.m
+++ b/SmartDeviceLink/private/SDLLifecycleSyncPDataHandler.m
diff --git a/SmartDeviceLink/SDLLifecycleSystemRequestHandler.h b/SmartDeviceLink/private/SDLLifecycleSystemRequestHandler.h
index 40865361a..40865361a 100644
--- a/SmartDeviceLink/SDLLifecycleSystemRequestHandler.h
+++ b/SmartDeviceLink/private/SDLLifecycleSystemRequestHandler.h
diff --git a/SmartDeviceLink/private/SDLLifecycleSystemRequestHandler.m b/SmartDeviceLink/private/SDLLifecycleSystemRequestHandler.m
new file mode 100644
index 000000000..2acf97aa4
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLifecycleSystemRequestHandler.m
@@ -0,0 +1,336 @@
+//
+// SDLLifecycleSystemRequestHandler.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 6/8/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "SDLLifecycleSystemRequestHandler.h"
+
+#import "SDLCacheFileManager.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLGlobals.h"
+#import "SDLLogMacros.h"
+#import "SDLNotificationConstants.h"
+#import "SDLOnSystemRequest.h"
+#import "SDLPutFile.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLSystemRequest.h"
+
+static const float DefaultConnectionTimeout = 45.0;
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void (^URLSessionTaskCompletionHandler)(NSData *data, NSURLResponse *response, NSError *error);
+typedef void (^URLSessionDownloadTaskCompletionHandler)(NSURL *location, NSURLResponse *response, NSError *error);
+
+@interface SDLLifecycleSystemRequestHandler ()
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> manager;
+@property (strong, nonatomic) SDLCacheFileManager *cacheFileManager;
+@property (strong, nonatomic) NSURLSession *urlSession;
+
+@end
+
+@implementation SDLLifecycleSystemRequestHandler
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager {
+ self = [super init];
+ if (!self) { return nil; }
+
+ SDLLogV(@"Initializing SystemRequest handler");
+ _manager = manager;
+
+ _cacheFileManager = [[SDLCacheFileManager alloc] init];
+
+ NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
+ configuration.timeoutIntervalForRequest = DefaultConnectionTimeout;
+ configuration.timeoutIntervalForResource = DefaultConnectionTimeout;
+ configuration.requestCachePolicy = NSURLRequestUseProtocolCachePolicy;
+ _urlSession = [NSURLSession sessionWithConfiguration:configuration];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(systemRequestReceived:) name:SDLDidReceiveSystemRequestNotification object:nil];
+
+ return self;
+}
+
+- (void)stop {
+ SDLLogV(@"Stopping SystemRequest handler and stopping all URL session tasks");
+ [self.urlSession getTasksWithCompletionHandler:^(NSArray<NSURLSessionDataTask *> * _Nonnull dataTasks, NSArray<NSURLSessionUploadTask *> * _Nonnull uploadTasks, NSArray<NSURLSessionDownloadTask *> * _Nonnull downloadTasks) {
+ for (NSURLSessionTask *task in dataTasks) {
+ [task cancel];
+ }
+
+ for (NSURLSessionTask *task in uploadTasks) {
+ [task cancel];
+ }
+
+ for (NSURLSessionTask *task in downloadTasks) {
+ [task cancel];
+ }
+ }];
+}
+
+#pragma mark - Handle OnSystemRequest
+- (void)sdl_handleSystemRequestLaunchApp:(SDLOnSystemRequest *)request {
+ NSURL *urlScheme = [NSURL URLWithString:request.url];
+ if (urlScheme == nil) {
+ SDLLogW(@"System request LaunchApp failed: invalid URL sent from module: %@", request.url);
+ return;
+ }
+
+ // If system version is less than 9.0 http://stackoverflow.com/a/5337804/1370927
+ if (SDL_SYSTEM_VERSION_LESS_THAN(@"9.0")) {
+ // Return early if we can't openURL because openURL will crash instead of fail silently in < 9.0
+ if (![[UIApplication sharedApplication] canOpenURL:urlScheme]) {
+ return;
+ }
+ }
+
+ [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil];
+}
+
+- (void)sdl_handleSystemRequestProprietary:(SDLOnSystemRequest *)request {
+ NSDictionary<NSString *, id> *jsonDict = [self sdl_validateAndParseProprietarySystemRequest:request];
+ if (jsonDict == nil || request.url == nil) {
+ return;
+ }
+
+ // Send the HTTP Request
+ __weak typeof(self) weakSelf = self;
+ [self sdl_uploadForBodyDataDictionary:jsonDict
+ urlString:request.url
+ completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+
+ if (error) {
+ SDLLogW(@"OnSystemRequest HTTP response error: %@", error);
+ return;
+ }
+ if (data == nil || data.length == 0) {
+ SDLLogW(@"OnSystemRequest HTTP response error: no data received");
+ return;
+ }
+
+ // Create the SystemRequest RPC to send to module.
+ SDLLogV(@"OnSystemRequest HTTP response");
+ SDLSystemRequest *request = [[SDLSystemRequest alloc] init];
+ request.requestType = SDLRequestTypeProprietary;
+ request.bulkData = data;
+
+ // Send the RPC Request
+ [strongSelf.manager sendConnectionManagerRequest:request withResponseHandler:nil];
+ }];
+}
+
+// TODO: Move to lock screen manager
+- (void)sdl_handleSystemRequestLockScreenIconURL:(SDLOnSystemRequest *)request {
+ [self.cacheFileManager retrieveImageForRequest:request withCompletionHandler:^(UIImage * _Nullable image, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogW(@"Failed to retrieve lock screen icon: %@", error.localizedDescription);
+ return;
+ }
+
+ NSDictionary<NSString *, id> *userInfo = nil;
+ if (image != nil) {
+ userInfo = @{SDLNotificationUserInfoObject: image};
+ }
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidReceiveLockScreenIcon object:nil userInfo:userInfo];
+ }];
+}
+
+- (void)sdl_handleSystemRequestIconURL:(SDLOnSystemRequest *)request {
+ __weak typeof(self) weakSelf = self;
+ [self sdl_sendDataTaskWithURL:[NSURL URLWithString:request.url]
+ completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (error != nil) {
+ SDLLogW(@"OnSystemRequest (icon url) HTTP download task failed: %@", error.localizedDescription);
+ return;
+ } else if (data.length == 0) {
+ SDLLogW(@"OnSystemRequest (icon url) HTTP download task failed to get the cloud app icon image data");
+ return;
+ }
+
+ SDLSystemRequest *iconURLSystemRequest = [[SDLSystemRequest alloc] initWithType:SDLRequestTypeIconURL fileName:request.url];
+ iconURLSystemRequest.bulkData = data;
+
+ [strongSelf.manager sendConnectionManagerRequest:iconURLSystemRequest withResponseHandler:nil];
+ }];
+}
+
+- (void)sdl_handleSystemRequestHTTP:(SDLOnSystemRequest *)request {
+ if (request.bulkData.length == 0) {
+ // TODO: not sure how we want to handle http requests that don't have bulk data (maybe as GET?)
+ return;
+ }
+
+ __weak typeof(self) weakSelf = self;
+ [self sdl_uploadData:request.bulkData
+ toURLString:request.url
+ completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (error != nil) {
+ SDLLogW(@"OnSystemRequest (HTTP) error: %@", error.localizedDescription);
+ return;
+ }
+
+ if (data.length == 0) {
+ SDLLogW(@"OnSystemRequest (HTTP) error: no data returned");
+ return;
+ }
+
+ // Show the HTTP response
+ SDLLogV(@"OnSystemRequest (HTTP) response: %@", response);
+
+ // Create the PutFile RPC to send to module.
+ SDLPutFile *putFile = [[SDLPutFile alloc] init];
+ putFile.fileType = SDLFileTypeJSON;
+ putFile.sdlFileName = @"response_data";
+ putFile.bulkData = data;
+
+ // Send RPC Request
+ [strongSelf.manager sendConnectionManagerRequest:putFile withResponseHandler:nil];
+ }];
+}
+
+#pragma mark - HTTP
+
+/**
+ * Start an upload for some data to a web address specified
+ *
+ * @param data The data to be passed to the server
+ * @param urlString The URL the data should be POSTed to
+ * @param completionHandler A completion handler of what to do when the server responds
+ */
+- (void)sdl_uploadData:(NSData *_Nonnull)data toURLString:(NSString *_Nonnull)urlString completionHandler:(URLSessionTaskCompletionHandler _Nullable)completionHandler {
+ // NSURLRequest configuration
+ NSURL *url = [NSURL URLWithString:urlString];
+ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
+ [request setValue:@"application/json" forHTTPHeaderField:@"content-type"];
+ request.HTTPMethod = @"POST";
+
+ SDLLogV(@"OnSystemRequest (HTTP) upload task created for URL: %@", urlString);
+
+ // Create the upload task
+ [self sdl_sendUploadRequest:request withData:data completionHandler:completionHandler];
+}
+
+/**
+ * Start an upload for a body data dictionary, this is used by the "proprietary" system request needed for backward compatibility
+ *
+ * @param dictionary The system request dictionary that contains the HTTP data to be sent
+ * @param urlString A string containing the URL to send the upload to
+ * @param completionHandler A completion handler returning the response from the server to the upload task
+ */
+- (void)sdl_uploadForBodyDataDictionary:(NSDictionary<NSString *, id> *)dictionary urlString:(NSString *)urlString completionHandler:(URLSessionTaskCompletionHandler)completionHandler {
+ NSParameterAssert(dictionary != nil);
+ NSParameterAssert(urlString != nil);
+ NSParameterAssert(completionHandler != NULL);
+
+ // Extract data from the dictionary
+ NSDictionary<NSString *, id> *requestData = dictionary[@"HTTPRequest"];
+ NSDictionary *headers = requestData[@"headers"];
+ NSString *contentType = headers[@"ContentType"];
+ NSTimeInterval timeout = [headers[@"ConnectTimeout"] doubleValue];
+ NSString *method = headers[@"RequestMethod"];
+ NSString *bodyString = requestData[@"body"];
+ NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
+
+ // NSURLRequest configuration
+ NSURL *url = [NSURL URLWithString:urlString];
+ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
+ [request setValue:contentType forHTTPHeaderField:@"content-type"];
+ request.timeoutInterval = timeout;
+ request.HTTPMethod = method;
+
+ SDLLogV(@"OnSystemRequest (Proprietary) upload task created for URL: %@", urlString);
+
+ // Create the upload task
+ [self sdl_sendUploadRequest:request withData:bodyData completionHandler:completionHandler];
+}
+
+- (void)sdl_sendUploadRequest:(NSURLRequest*)request withData:(NSData*)data completionHandler:(URLSessionTaskCompletionHandler)completionHandler {
+ NSMutableURLRequest* mutableRequest = [request mutableCopy];
+
+ if ([mutableRequest.URL.scheme isEqualToString:@"http"]) {
+ mutableRequest.URL = [NSURL URLWithString:[mutableRequest.URL.absoluteString stringByReplacingCharactersInRange:NSMakeRange(0, 4) withString:@"https"]];
+ }
+
+ [[self.urlSession uploadTaskWithRequest:request fromData:data completionHandler:completionHandler] resume];
+}
+
+- (void)sdl_sendDataTaskWithURL:(NSURL*)url completionHandler:(URLSessionTaskCompletionHandler)completionHandler {
+ if ([url.scheme isEqualToString:@"http"]) {
+ url = [NSURL URLWithString:[url.absoluteString stringByReplacingCharactersInRange:NSMakeRange(0, 4) withString:@"https"]];
+ }
+
+ [[self.urlSession dataTaskWithURL:url completionHandler:completionHandler] resume];
+}
+
+#pragma mark - Validation
+
+/**
+ * Determine if the System Request is valid and return it's JSON dictionary, if available.
+ *
+ * @param request The system request to parse
+ *
+ * @return A parsed JSON dictionary, or nil if it couldn't be parsed
+ */
+- (nullable NSDictionary<NSString *, id> *)sdl_validateAndParseProprietarySystemRequest:(SDLOnSystemRequest *)request {
+ NSString *urlString = request.url;
+ SDLFileType fileType = request.fileType;
+
+ // Validate input
+ if (urlString == nil || [NSURL URLWithString:urlString] == nil) {
+ SDLLogW(@"OnSystemRequest validation failure: URL is nil");
+ return nil;
+ }
+ if (![fileType isEqualToEnum:SDLFileTypeJSON]) {
+ SDLLogW(@"OnSystemRequest validation failure: file type is not JSON");
+ return nil;
+ }
+
+ // Get data dictionary from the bulkData
+ NSError *error = nil;
+ NSDictionary<NSString *, id> *JSONDictionary = [NSJSONSerialization JSONObjectWithData:request.bulkData options:kNilOptions error:&error];
+ if (error != nil) {
+ SDLLogW(@"OnSystemRequest validation failure: data is not valid JSON");
+ return nil;
+ }
+
+ return JSONDictionary;
+}
+
+#pragma mark - Notifications
+
+- (void)systemRequestReceived:(SDLRPCNotificationNotification *)notification {
+ SDLOnSystemRequest *onSystemRequest = notification.notification;
+ SDLRequestType requestType = onSystemRequest.requestType;
+
+ // Handle the various OnSystemRequest types
+ if ([requestType isEqualToEnum:SDLRequestTypeProprietary]) {
+ [self sdl_handleSystemRequestProprietary:onSystemRequest];
+ } else if ([requestType isEqualToEnum:SDLRequestTypeLockScreenIconURL]) {
+ [self sdl_handleSystemRequestLockScreenIconURL:onSystemRequest];
+ } else if ([requestType isEqualToEnum:SDLRequestTypeIconURL]) {
+ [self sdl_handleSystemRequestIconURL:onSystemRequest];
+ } else if ([requestType isEqualToEnum:SDLRequestTypeHTTP]) {
+ [self sdl_handleSystemRequestHTTP:onSystemRequest];
+ } else if ([requestType isEqualToEnum:SDLRequestTypeLaunchApp]) {
+ if ([NSThread isMainThread]) {
+ [self sdl_handleSystemRequestLaunchApp:onSystemRequest];
+ } else {
+ dispatch_sync(dispatch_get_main_queue(), ^{
+ [self sdl_handleSystemRequestLaunchApp:onSystemRequest];
+ });
+ }
+ }
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLListFilesOperation.h b/SmartDeviceLink/private/SDLListFilesOperation.h
index fc8453820..fc8453820 100644
--- a/SmartDeviceLink/SDLListFilesOperation.h
+++ b/SmartDeviceLink/private/SDLListFilesOperation.h
diff --git a/SmartDeviceLink/SDLListFilesOperation.m b/SmartDeviceLink/private/SDLListFilesOperation.m
index 693d52eea..693d52eea 100644
--- a/SmartDeviceLink/SDLListFilesOperation.m
+++ b/SmartDeviceLink/private/SDLListFilesOperation.m
diff --git a/SmartDeviceLink/private/SDLLockScreenConstants.h b/SmartDeviceLink/private/SDLLockScreenConstants.h
new file mode 100644
index 000000000..0865666ae
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLockScreenConstants.h
@@ -0,0 +1,18 @@
+//
+// SDLLockScreenConstants.h
+// SmartDeviceLink-iOS
+//
+// Created by Nicole on 9/4/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Describes the status of the lock screen
+typedef NS_ENUM(NSUInteger, SDLLockScreenStatus) {
+ SDLLockScreenStatusOff, // LockScreen is not required
+ SDLLockScreenStatusOptional, // LockScreen is optional
+ SDLLockScreenStatusRequired // LockScreen is required
+};
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLockScreenManager.h b/SmartDeviceLink/private/SDLLockScreenManager.h
index e4ef48666..e4ef48666 100644
--- a/SmartDeviceLink/SDLLockScreenManager.h
+++ b/SmartDeviceLink/private/SDLLockScreenManager.h
diff --git a/SmartDeviceLink/private/SDLLockScreenManager.m b/SmartDeviceLink/private/SDLLockScreenManager.m
new file mode 100644
index 000000000..85d570543
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLockScreenManager.m
@@ -0,0 +1,251 @@
+//
+// SDLLockScreenManager.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/8/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLockScreenManager.h"
+
+#import "NSBundle+SDLBundle.h"
+#import "SDLLogMacros.h"
+#import "SDLLockScreenConfiguration.h"
+#import "SDLLockScreenStatusManager.h"
+#import "SDLLockScreenViewController.h"
+#import "SDLNotificationConstants.h"
+#import "SDLNotificationDispatcher.h"
+#import "SDLLockScreenStatusInfo.h"
+#import "SDLOnDriverDistraction.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLViewControllerPresentable.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLockScreenManager ()
+
+@property (assign, nonatomic) BOOL canPresent;
+@property (strong, nonatomic, readwrite) SDLLockScreenConfiguration *config;
+@property (strong, nonatomic) id<SDLViewControllerPresentable> presenter;
+@property (strong, nonatomic) SDLLockScreenStatusManager *statusManager;
+
+@property (strong, nonatomic, nullable) SDLLockScreenStatusInfo *lastLockNotification;
+@property (strong, nonatomic, nullable) SDLOnDriverDistraction *lastDriverDistractionNotification;
+@property (assign, nonatomic, readwrite, getter=isLockScreenDismissable) BOOL lockScreenDismissable;
+@property (assign, nonatomic) BOOL lockScreenDismissedByUser;
+
+@end
+
+
+@implementation SDLLockScreenManager
+
+- (instancetype)initWithConfiguration:(SDLLockScreenConfiguration *)config notificationDispatcher:(SDLNotificationDispatcher *)dispatcher presenter:(id<SDLViewControllerPresentable>)presenter {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _canPresent = NO;
+ _lockScreenDismissable = NO;
+ _config = config;
+ _presenter = presenter;
+ _lockScreenDismissedByUser = NO;
+ _statusManager = [[SDLLockScreenStatusManager alloc] initWithNotificationDispatcher:dispatcher];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_lockScreenStatusDidChange:) name:SDLDidChangeLockScreenStatusNotification object:_statusManager];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_lockScreenIconReceived:) name:SDLDidReceiveLockScreenIcon object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_appDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_driverDistractionStateDidChange:) name:SDLDidChangeDriverDistractionStateNotification object:dispatcher];
+
+ return self;
+}
+
+- (void)start {
+ self.canPresent = NO;
+
+ __weak typeof(self) weakSelf = self;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+
+ if (UIApplication.sharedApplication.applicationState != UIApplicationStateActive) {
+ SDLLogW(@"Attempted to start lock screen manager, but we are in the background. We will attempt to start again when we are in the foreground.");
+ return;
+ }
+
+ // This usually means that we disconnected and connected with the device in the background. We will need to check and dismiss the view controller if it's presented before setting up a new one.
+ if (strongSelf.presenter.lockViewController != nil) {
+ [strongSelf.presenter stopWithCompletionHandler:^{
+ __strong typeof(weakSelf) strongSelf2 = weakSelf;
+ [strongSelf2 sdl_start];
+ }];
+ } else {
+ [strongSelf sdl_start];
+ }
+ });
+}
+
+- (void)sdl_start {
+ // Create and initialize the lock screen controller depending on the configuration
+ if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeNever) {
+ self.presenter.lockViewController = nil;
+ return;
+ } else if (self.config.customViewController != nil) {
+ self.presenter.lockViewController = self.config.customViewController;
+ } else {
+ SDLLockScreenViewController *viewController = nil;
+
+ @try {
+ viewController = [[UIStoryboard storyboardWithName:@"SDLLockScreen" bundle:[NSBundle sdlBundle]] instantiateInitialViewController];
+ } @catch (NSException *exception) {
+ SDLLogE(@"Attempted to instantiate the default SDL Lock Screen and could not find the storyboard. Be sure the 'SmartDeviceLink' bundle is within your main bundle. We're just going to return without instantiating the lock screen");
+ return;
+ }
+
+ viewController.appIcon = self.config.appIcon;
+ viewController.backgroundColor = self.config.backgroundColor;
+ self.presenter.lockViewController = viewController;
+ }
+
+ self.canPresent = YES;
+
+ [self sdl_checkLockScreen];
+}
+
+- (void)stop {
+ // Don't allow the lockscreen to present again until we start
+ self.canPresent = NO;
+ self.lastLockNotification = nil;
+ self.lastDriverDistractionNotification = nil;
+ [self.presenter stopWithCompletionHandler:nil];
+}
+
+- (nullable UIViewController *)lockScreenViewController {
+ return self.presenter.lockViewController;
+}
+
+#pragma mark - Notification Selectors
+
+- (void)sdl_lockScreenStatusDidChange:(SDLRPCNotificationNotification *)notification {
+ SDLLockScreenStatusInfo *lockScreenStatus = (SDLLockScreenStatusInfo *)notification.userInfo[SDLNotificationUserInfoObject];
+ if (lockScreenStatus == nil) { return; }
+
+ self.lastLockNotification = lockScreenStatus;
+
+ [self sdl_checkLockScreen];
+}
+
+- (void)sdl_lockScreenIconReceived:(NSNotification *)notification {
+ if (![notification.userInfo[SDLNotificationUserInfoObject] isKindOfClass:[UIImage class]]) {
+ return;
+ }
+
+ UIImage *icon = notification.userInfo[SDLNotificationUserInfoObject];
+
+ // If the VC is our special type, then add the vehicle icon. If they passed in a custom VC, there's no current way to show the vehicle icon. If they're managing it themselves, they can grab the notification themselves.
+ if ([self.lockScreenViewController isKindOfClass:[SDLLockScreenViewController class]] && self.config.showDeviceLogo) {
+ ((SDLLockScreenViewController *)self.lockScreenViewController).vehicleIcon = icon;
+ }
+}
+
+- (void)sdl_appDidBecomeActive:(NSNotification *)notification {
+ __weak typeof(self) weakSelf = self;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ // Restart, and potentially dismiss the lock screen if the app was disconnected in the background
+ if (!strongSelf.canPresent) {
+ [strongSelf start];
+ }
+
+ [strongSelf sdl_checkLockScreen];
+ });
+}
+
+- (void)sdl_driverDistractionStateDidChange:(SDLRPCNotificationNotification *)notification {
+ if (![notification isNotificationMemberOfClass:[SDLOnDriverDistraction class]]) {
+ return;
+ }
+
+ self.lastDriverDistractionNotification = notification.notification;
+ [self sdl_updateLockScreenDismissable];
+}
+
+#pragma mark - Private Helpers
+
+- (void)sdl_checkLockScreen {
+ if (self.lockScreenViewController == nil || self.lastLockNotification == nil) {
+ return;
+ }
+
+ __weak typeof(self) weakSelf = self;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [weakSelf sdl_updatePresentation];
+ });
+}
+
+- (void)sdl_updatePresentation {
+ if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeAlways) {
+ if (self.canPresent) {
+ [self.presenter updateLockScreenToShow:YES withCompletionHandler:nil];
+ }
+ } else if (self.lastLockNotification.lockScreenStatus == SDLLockScreenStatusRequired) {
+ if (self.canPresent && !self.lockScreenDismissedByUser) {
+ [self.presenter updateLockScreenToShow:YES withCompletionHandler:nil];
+ }
+ } else if (self.lastLockNotification.lockScreenStatus == SDLLockScreenStatusOptional) {
+ if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeOptionalOrRequired && self.canPresent && !self.lockScreenDismissedByUser) {
+ [self.presenter updateLockScreenToShow:YES withCompletionHandler:nil];
+ } else if (self.config.displayMode != SDLLockScreenConfigurationDisplayModeOptionalOrRequired) {
+ [self.presenter updateLockScreenToShow:NO withCompletionHandler:nil];
+ }
+ } else if (self.lastLockNotification.lockScreenStatus == SDLLockScreenStatusOff) {
+ [self.presenter updateLockScreenToShow:NO withCompletionHandler:nil];
+ }
+}
+
+- (void)sdl_updateLockScreenDismissable {
+ if (self.lastDriverDistractionNotification == nil ||
+ self.lastDriverDistractionNotification.lockScreenDismissalEnabled == nil ||
+ !self.lastDriverDistractionNotification.lockScreenDismissalEnabled.boolValue ||
+ !self.config.enableDismissGesture) {
+ self.lockScreenDismissable = NO;
+ } else {
+ self.lockScreenDismissable = YES;
+ }
+
+ if (self.lockScreenDismissedByUser &&
+ [self.lastDriverDistractionNotification.state isEqualToEnum:SDLDriverDistractionStateOn] &&
+ !self.lockScreenDismissable) {
+ self.lockScreenDismissedByUser = NO;
+ }
+
+ if (!self.lockScreenDismissedByUser) {
+ [self sdl_updateLockscreenViewControllerWithDismissableState:self.lockScreenDismissable];
+ }
+}
+
+- (void)sdl_updateLockscreenViewControllerWithDismissableState:(BOOL)enabled {
+ if (![self.lockScreenViewController isKindOfClass:[SDLLockScreenViewController class]]) {
+ return;
+ }
+
+ __weak typeof(self) weakSelf = self;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ __strong typeof(self) strongSelf = weakSelf;
+ SDLLockScreenViewController *lockscreenViewController = (SDLLockScreenViewController *)strongSelf.lockScreenViewController;
+ if (enabled) {
+ [lockscreenViewController addDismissGestureWithCallback:^{
+ [strongSelf.presenter updateLockScreenToShow:NO withCompletionHandler:nil];
+ strongSelf.lockScreenDismissedByUser = YES;
+ }];
+ lockscreenViewController.lockedLabelText = strongSelf.lastDriverDistractionNotification.lockScreenDismissalWarning;
+ } else {
+ [lockscreenViewController removeDismissGesture];
+ lockscreenViewController.lockedLabelText = nil;
+ }
+ });
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLockScreenPresenter.h b/SmartDeviceLink/private/SDLLockScreenPresenter.h
index 11b2ca962..11b2ca962 100644
--- a/SmartDeviceLink/SDLLockScreenPresenter.h
+++ b/SmartDeviceLink/private/SDLLockScreenPresenter.h
diff --git a/SmartDeviceLink/SDLLockScreenPresenter.m b/SmartDeviceLink/private/SDLLockScreenPresenter.m
index 03bca9e0a..03bca9e0a 100644
--- a/SmartDeviceLink/SDLLockScreenPresenter.m
+++ b/SmartDeviceLink/private/SDLLockScreenPresenter.m
diff --git a/SmartDeviceLink/SDLLockScreenRootViewController.h b/SmartDeviceLink/private/SDLLockScreenRootViewController.h
index 1f28c13df..1f28c13df 100644
--- a/SmartDeviceLink/SDLLockScreenRootViewController.h
+++ b/SmartDeviceLink/private/SDLLockScreenRootViewController.h
diff --git a/SmartDeviceLink/SDLLockScreenRootViewController.m b/SmartDeviceLink/private/SDLLockScreenRootViewController.m
index 4c706f8bc..4c706f8bc 100644
--- a/SmartDeviceLink/SDLLockScreenRootViewController.m
+++ b/SmartDeviceLink/private/SDLLockScreenRootViewController.m
diff --git a/SmartDeviceLink/private/SDLLockScreenStatusInfo.h b/SmartDeviceLink/private/SDLLockScreenStatusInfo.h
new file mode 100644
index 000000000..753a2a1b7
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLockScreenStatusInfo.h
@@ -0,0 +1,51 @@
+//
+// SDLLockScreenStatusInfo.h
+// SmartDeviceLink
+//
+
+#import "SDLRPCNotification.h"
+
+#import "SDLHMILevel.h"
+#import "SDLLockScreenConstants.h"
+
+/**
+ To help prevent driver distraction, any SmartDeviceLink application is required to implement a lockscreen that must be enforced while the application is active on the system while the vehicle is in motion.
+
+ This lockscreen must perform the following:
+
+ Limit all application control usability from the mobile device with a full-screen static image overlay or separate view.
+
+ For simplicity, the `OnLockScreenStatus` RPC will be provided via the `onOnLockScreenNotification` call back. The call back will include the LockScreenStatus enum which indicates if the lockscreen is required, optional or not required.
+
+ The call back also includes details regarding the current HMI_Status level, driver distraction status and user selection status of the application.
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLockScreenStatusInfo : NSObject
+
+- (instancetype)initWithDriverDistractionStatus:(nullable NSNumber<SDLBool> *)driverDistractionStatus userSelected:(nullable NSNumber<SDLBool> *)userSelected lockScreenStatus:(SDLLockScreenStatus)lockScreenStatus hmiLevel:(nullable SDLHMILevel)hmiLevel;
+
+/**
+ Get the current driver distraction status(i.e. whether driver distraction rules are in effect, or not)
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *driverDistractionStatus;
+
+/**
+ Get user selection status for the application (has the app been selected via hmi or voice command)
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *userSelected;
+
+/**
+ Indicates if the lockscreen should be required, optional or off
+ */
+@property (assign, nonatomic) SDLLockScreenStatus lockScreenStatus;
+
+/**
+ Get HMILevel in effect for the application
+ */
+@property (strong, nonatomic, nullable) SDLHMILevel hmiLevel;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLLockScreenStatusInfo.m b/SmartDeviceLink/private/SDLLockScreenStatusInfo.m
new file mode 100644
index 000000000..d7395c11f
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLockScreenStatusInfo.m
@@ -0,0 +1,45 @@
+//
+// SDLLockScreenStatusInfo.m
+// SmartDeviceLink
+//
+
+#import "SDLLockScreenStatusInfo.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLHMILevel.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLLockScreenStatusInfo
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _lockScreenStatus = SDLLockScreenStatusOff;
+
+ return self;
+}
+
+- (instancetype)initWithDriverDistractionStatus:(nullable NSNumber<SDLBool> *)driverDistractionStatus userSelected:(nullable NSNumber<SDLBool> *)userSelected lockScreenStatus:(SDLLockScreenStatus)lockScreenStatus hmiLevel:(nullable SDLHMILevel)hmiLevel {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ _driverDistractionStatus = driverDistractionStatus;
+ _userSelected = userSelected;
+ _lockScreenStatus = lockScreenStatus;
+ _hmiLevel = hmiLevel;
+
+ return self;
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"driverDistractionStatus: %@, userSelected: %@, lockScreenStatus: %lu, hmiLevel: %@", self.driverDistractionStatus, self.userSelected, (unsigned long)self.lockScreenStatus, self.hmiLevel];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLLockScreenStatusManager.h b/SmartDeviceLink/private/SDLLockScreenStatusManager.h
new file mode 100644
index 000000000..fd8cff605
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLockScreenStatusManager.h
@@ -0,0 +1,32 @@
+//
+// SDLLockScreenManager.h
+// SmartDeviceLink
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLHMILevel.h"
+#import "SDLLockScreenConstants.h"
+
+@class SDLNotificationDispatcher;
+@class SDLLockScreenStatusInfo;
+
+NS_ASSUME_NONNULL_BEGIN
+
+static NSString *const SDLDidChangeLockScreenStatusNotification = @"com.sdl.notification.lockScreenStatus";
+
+
+@interface SDLLockScreenStatusManager : NSObject
+
+@property (assign, nonatomic) BOOL userSelected;
+@property (assign, nonatomic) BOOL driverDistracted;
+@property (nullable, strong, nonatomic) SDLHMILevel hmiLevel;
+@property (assign, nonatomic, readonly) SDLLockScreenStatus lockScreenStatus;
+@property (strong, nonatomic, readonly) SDLLockScreenStatusInfo *lockScreenStatusNotification;
+
+- (instancetype)init NS_UNAVAILABLE;
+- (instancetype)initWithNotificationDispatcher:(SDLNotificationDispatcher *)dispatcher;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLLockScreenStatusManager.m b/SmartDeviceLink/private/SDLLockScreenStatusManager.m
new file mode 100644
index 000000000..3b15b60ff
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLockScreenStatusManager.m
@@ -0,0 +1,133 @@
+//
+// SDLLockScreenManager.m
+// SmartDeviceLink
+//
+
+#import "SDLLockScreenStatusManager.h"
+
+#import "SDLLogMacros.h"
+#import "SDLNotificationConstants.h"
+#import "SDLNotificationDispatcher.h"
+#import "SDLOnDriverDistraction.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLLockScreenStatusInfo.h"
+#import "SDLRPCNotificationNotification.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLockScreenStatusManager ()
+
+@property (assign, nonatomic) BOOL haveDriverDistractionStatus;
+@property (weak, nonatomic) SDLNotificationDispatcher *notificationDispatcher;
+
+@end
+
+
+@implementation SDLLockScreenStatusManager
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithNotificationDispatcher:(SDLNotificationDispatcher *)dispatcher {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _userSelected = NO;
+ _driverDistracted = NO;
+ _haveDriverDistractionStatus = NO;
+ _notificationDispatcher = dispatcher;
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusDidUpdate:) name:SDLDidChangeHMIStatusNotification object:dispatcher];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_driverDistractionDidUpdate:) name:SDLDidChangeDriverDistractionStateNotification object:dispatcher];
+
+ return self;
+}
+
+
+#pragma mark - Getters / Setters
+#pragma mark Custom setters
+
+- (void)setDriverDistracted:(BOOL)driverDistracted {
+ _driverDistracted = driverDistracted;
+ _haveDriverDistractionStatus = YES;
+}
+
+- (void)setHmiLevel:(nullable SDLHMILevel)hmiLevel {
+ if (_hmiLevel != hmiLevel) {
+ _hmiLevel = hmiLevel;
+ }
+
+ if ([hmiLevel isEqualToEnum:SDLHMILevelFull] || [hmiLevel isEqualToEnum:SDLHMILevelLimited]) {
+ self.userSelected = YES;
+ } else if ([hmiLevel isEqualToEnum:SDLHMILevelNone]) {
+ self.userSelected = NO;
+ }
+}
+
+
+#pragma mark Custom Getters
+
+- (SDLLockScreenStatusInfo *)lockScreenStatusNotification {
+ SDLLockScreenStatusInfo *notification = [[SDLLockScreenStatusInfo alloc] initWithDriverDistractionStatus:@(self.driverDistracted) userSelected:@(self.userSelected) lockScreenStatus:self.lockScreenStatus hmiLevel:self.hmiLevel];
+ return notification;
+}
+
+- (SDLLockScreenStatus)lockScreenStatus {
+ if (self.hmiLevel == nil || [self.hmiLevel isEqualToEnum:SDLHMILevelNone]) {
+ // App is not active on the car
+ return SDLLockScreenStatusOff;
+ } else if ([self.hmiLevel isEqualToEnum:SDLHMILevelBackground]) {
+ // App is in the background on the car
+ if (self.userSelected) {
+ // It was user selected
+ if (self.haveDriverDistractionStatus && !self.driverDistracted) {
+ // We have the distraction status, and the driver is not distracted
+ return SDLLockScreenStatusOptional;
+ } else {
+ // We don't have the distraction status, and/or the driver is distracted
+ return SDLLockScreenStatusRequired;
+ }
+ } else {
+ return SDLLockScreenStatusOff;
+ }
+ } else if ([self.hmiLevel isEqualToEnum:SDLHMILevelFull] || [self.hmiLevel isEqualToEnum:SDLHMILevelLimited]) {
+ // App is in the foreground on the car in some manner
+ if (self.haveDriverDistractionStatus && !self.driverDistracted) {
+ // We have the distraction status, and the driver is not distracted
+ return SDLLockScreenStatusOptional;
+ } else {
+ // We don't have the distraction status, and/or the driver is distracted
+ return SDLLockScreenStatusRequired;
+ }
+ } else {
+ // This shouldn't be possible.
+ return SDLLockScreenStatusOff;
+ }
+}
+
+#pragma mark - Utilities
+
+- (void)sdl_postLockScreenStatus:(SDLLockScreenStatusInfo *)statusNotification {
+ SDLLogD(@"Lock screen status changed: %@", statusNotification);
+
+ [self.notificationDispatcher postNotificationName:SDLDidChangeLockScreenStatusNotification infoObject:statusNotification];
+}
+
+#pragma mark - Observers
+
+- (void)sdl_hmiStatusDidUpdate:(SDLRPCNotificationNotification *)notification {
+ SDLOnHMIStatus *hmiStatus = notification.notification;
+
+ self.hmiLevel = hmiStatus.hmiLevel;
+ [self sdl_postLockScreenStatus:self.lockScreenStatusNotification];
+}
+
+- (void)sdl_driverDistractionDidUpdate:(SDLRPCNotificationNotification *)notification {
+ SDLOnDriverDistraction *driverDistraction = notification.notification;
+
+ self.driverDistracted = [driverDistraction.state isEqualToEnum:SDLDriverDistractionStateOn];
+ [self sdl_postLockScreenStatus:self.lockScreenStatusNotification];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogFileModuleMap.h b/SmartDeviceLink/private/SDLLogFileModuleMap.h
index e079cd7e9..e079cd7e9 100644
--- a/SmartDeviceLink/SDLLogFileModuleMap.h
+++ b/SmartDeviceLink/private/SDLLogFileModuleMap.h
diff --git a/SmartDeviceLink/private/SDLLogFileModuleMap.m b/SmartDeviceLink/private/SDLLogFileModuleMap.m
new file mode 100644
index 000000000..403a82258
--- /dev/null
+++ b/SmartDeviceLink/private/SDLLogFileModuleMap.m
@@ -0,0 +1,147 @@
+//
+// SDLLogFileModuleMap.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 3/2/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLogFileModuleMap.h"
+
+#import "SDLLogFileModule.h"
+
+@implementation SDLLogFileModuleMap
+
++ (NSSet<SDLLogFileModule *> *)sdlModuleMap {
+ return [NSSet setWithArray:@[[self sdl_transportModule],
+ [self sdl_tcpTransportModule],
+ [self sdl_iapTransportModule],
+ [self sdl_secondaryTransportModule],
+ [self sdl_protocolModule],
+ [self sdl_rpcModule],
+ [self sdl_dispatcherModule],
+ [self sdl_fileManagerModule],
+ [self sdl_encryptionLifecycleManagerModule],
+ [self sdl_lifecycleManagerModule],
+ [self sdl_systemCapabilityModule],
+ [self sdl_lockscreenManagerModule],
+ [self sdl_streamingMediaManagerModule],
+ [self sdl_videoStreamingMediaManagerModule],
+ [self sdl_videoStreamingMediaTranscoderModule],
+ [self sdl_audioStreamingMediaManagerModule],
+ [self sdl_audioStreamingMediaTranscoderModule],
+ [self sdl_screenManagerModule],
+ [self sdl_screenManagerTextAndGraphicModule],
+ [self sdl_screenManagerSoftButtonModule],
+ [self sdl_screenManagerSubscribeButtonModule],
+ [self sdl_screenManagerMenuModule],
+ [self sdl_screenManagerChoiceSetModule],
+ [self sdl_utilitiesModule]]];
+}
+
+#pragma mark Transport
+
++ (SDLLogFileModule *)sdl_transportModule {
+ return [SDLLogFileModule moduleWithName:@"Transport" files:[NSSet setWithArray:@[@"SDLStreamDelegate"]]];
+}
+
++ (SDLLogFileModule *)sdl_tcpTransportModule {
+ return [SDLLogFileModule moduleWithName:@"Transport/TCP" files:[NSSet setWithArray:@[@"SDLTCPTransport"]]];
+}
+
++ (SDLLogFileModule *)sdl_iapTransportModule {
+ return [SDLLogFileModule moduleWithName:@"Transport/IAP" files:[NSSet setWithArray:@[@"SDLIAPSession", @"SDLIAPTransport", @"SDLIAPDataSession", @"SDLIAPControlSession"]]];
+}
+
++ (SDLLogFileModule *)sdl_secondaryTransportModule {
+ return [SDLLogFileModule moduleWithName:@"Transport/Secondary" files:[NSSet setWithArray:@[@"SDLSecondaryTransportManager"]]];
+}
+
+#pragma mark Low-Level
+
++ (SDLLogFileModule *)sdl_protocolModule {
+ return [SDLLogFileModule moduleWithName:@"Protocol" files:[NSSet setWithArray:@[@"SDLProtocol", @"SDLProtocolMessageAssembler", @"SDLProtocolMessageDisassembler", @"SDLProtocolReceivedMessageRouter", @"SDLV1ProtocolMessage", @"SDLV2ProtocolMessage", @"SDLV1ProtocolHeader", @"SDLV2ProtocolHeader", @"SDLGlobals"]]];
+}
+
++ (SDLLogFileModule *)sdl_rpcModule {
+ return [SDLLogFileModule moduleWithName:@"RPC" files:[NSSet setWithArray:@[@"SDLRPCPayload", @"NSMutableDictionary+Store"]]];
+}
+
+#pragma mark Managers
+
++ (SDLLogFileModule *)sdl_dispatcherModule {
+ return [SDLLogFileModule moduleWithName:@"Dispatcher" files:[NSSet setWithArray:@[@"SDLNotificationDispatcher", @"SDLResponseDispatcher"]]];
+}
+
++ (SDLLogFileModule *)sdl_fileManagerModule {
+ return [SDLLogFileModule moduleWithName:@"File" files:[NSSet setWithArray:@[@"SDLFileManager", @"SDLFile", @"SDLArtwork", @"SDLListFilesOperation", @"SDLUploadFileOperation", @"SDLDeleteFileOperation"]]];
+}
+
++ (SDLLogFileModule *)sdl_encryptionLifecycleManagerModule {
+ return [SDLLogFileModule moduleWithName:@"Encryption" files:[NSSet setWithArray:@[@"SDLEncryptionLifecycleManager", @"SDLEncryptionConfiguration", @"SDLEncryptionManagerConstants"]]];
+}
+
++ (SDLLogFileModule *)sdl_lifecycleManagerModule {
+ return [SDLLogFileModule moduleWithName:@"Lifecycle" files:[NSSet setWithArray:@[@"SDLLifecycleManager", @"SDLManager", @"SDLAsynchronousOperation", @"SDLBackgroundTaskManager", @"SDLPolicyDataParser", @"SDLLifecycleProtocolHandler", @"SDLLifecycleRPCAdapter", @"SDLLifecycleSyncPDataHandler", @"SDLLifecycleSystemRequestHandler", @"SDLLifecycleMobileHMIStateHandler"]]];
+}
+
++ (SDLLogFileModule *)sdl_systemCapabilityModule {
+ return [SDLLogFileModule moduleWithName:@"System Capability" files:[NSSet setWithArray:@[@"SDLSystemCapabilityManager"]]];
+}
+
++ (SDLLogFileModule *)sdl_lockscreenManagerModule {
+ return [SDLLogFileModule moduleWithName:@"Lockscreen" files:[NSSet setWithArray:@[@"SDLLockScreenManager", @"SDLLockScreenViewController", @"SDLLockScreenPresenter", @"SDLCacheFileManager", @"SDLLockScreenStatusManager"]]];
+}
+
++ (SDLLogFileModule *)sdl_streamingMediaManagerModule {
+ return [SDLLogFileModule moduleWithName:@"Audio and Video Streaming" files:[NSSet setWithArray:@[@"SDLStreamingMediaManager"]]];
+}
+
++ (SDLLogFileModule *)sdl_videoStreamingMediaManagerModule {
+ return [SDLLogFileModule moduleWithName:@"Video Streaming" files:[NSSet setWithArray:@[@"SDLStreamingVideoLifecycleManager", @"SDLTouchManager", @"SDLCarWindow", @"SDLFocusableItemLocator"]]];
+}
+
++ (SDLLogFileModule *)sdl_videoStreamingMediaTranscoderModule {
+ return [SDLLogFileModule moduleWithName:@"Video Streaming/Transcoding" files:[NSSet setWithArray:@[@"SDLH264VideoEncoder", @"SDLRAWH264Packetizer", @"SDLRTPH264Packetizer"]]];
+}
+
++ (SDLLogFileModule *)sdl_audioStreamingMediaManagerModule {
+ return [SDLLogFileModule moduleWithName:@"Audio Streaming" files:[NSSet setWithArray:@[@"SDLStreamingAudioLifecycleManager"]]];
+}
+
++ (SDLLogFileModule *)sdl_audioStreamingMediaTranscoderModule {
+ return [SDLLogFileModule moduleWithName:@"Audio Streaming/Transcoding" files:[NSSet setWithArray:@[@"SDLAudioStreamManager", @"SDLPCMAudioConverter"]]];
+}
+
++ (SDLLogFileModule *)sdl_screenManagerModule {
+ return [SDLLogFileModule moduleWithName:@"Screen" files:[NSSet setWithArray:@[@"SDLScreenManager"]]];
+}
+
++ (SDLLogFileModule *)sdl_screenManagerTextAndGraphicModule {
+ return [SDLLogFileModule moduleWithName:@"Screen/TextAndGraphic" files:[NSSet setWithArray:@[@"SDLTextAndGraphicManager", @"SDLTextAndGraphicUpdateOperation"]]];
+}
+
++ (SDLLogFileModule *)sdl_screenManagerSoftButtonModule {
+ return [SDLLogFileModule moduleWithName:@"Screen/SoftButton" files:[NSSet setWithArray:@[@"SDLSoftButtonManager", @"SDLSoftButtonObject", @"SDLSoftButtonState", @"SDLSoftButtonTransitionOperation", @"SDLSoftButtonReplaceOperation"]]];
+}
+
++ (SDLLogFileModule *)sdl_screenManagerSubscribeButtonModule {
+ return [SDLLogFileModule moduleWithName:@"Screen/SubscribeButton" files:[NSSet setWithArray:@[@"SDLSubscribeButtonManager", @"SDLSubscribeButtonObserver"]]];
+}
+
++ (SDLLogFileModule *)sdl_screenManagerMenuModule {
+ return [SDLLogFileModule moduleWithName:@"Screen/Menu" files:[NSSet setWithArray:@[@"SDLMenuManager", @"SDLVoiceCommandManager"]]];
+}
+
++ (SDLLogFileModule *)sdl_screenManagerChoiceSetModule {
+ return [SDLLogFileModule moduleWithName:@"Screen/ChoiceSet" files:[NSSet setWithArray:@[@"SDLChoiceSetManager", @"SDLCheckChoiceVROptionalOperation", @"SDLDeleteChoicesOperation", @"SDLPreloadChoicesOperation", @"SDLPresentChoiceSetOperation", @"SDLPresentKeyboardOperation", @"SDLChoiceSet"]]];
+}
+
+
+#pragma mark Utilities
+
++ (SDLLogFileModule *)sdl_utilitiesModule {
+ return [SDLLogFileModule moduleWithName:@"Utilities" files:[NSSet setWithArray:@[@"SDLStateMachine"]]];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLLogModel.h b/SmartDeviceLink/private/SDLLogModel.h
index ead7766f6..ead7766f6 100644
--- a/SmartDeviceLink/SDLLogModel.h
+++ b/SmartDeviceLink/private/SDLLogModel.h
diff --git a/SmartDeviceLink/SDLLogModel.m b/SmartDeviceLink/private/SDLLogModel.m
index 6e9aeccb7..6e9aeccb7 100644
--- a/SmartDeviceLink/SDLLogModel.m
+++ b/SmartDeviceLink/private/SDLLogModel.m
diff --git a/SmartDeviceLink/SDLMenuManager.h b/SmartDeviceLink/private/SDLMenuManager.h
index a17775131..a17775131 100644
--- a/SmartDeviceLink/SDLMenuManager.h
+++ b/SmartDeviceLink/private/SDLMenuManager.h
diff --git a/SmartDeviceLink/private/SDLMenuManager.m b/SmartDeviceLink/private/SDLMenuManager.m
new file mode 100644
index 000000000..af91dc3a1
--- /dev/null
+++ b/SmartDeviceLink/private/SDLMenuManager.m
@@ -0,0 +1,737 @@
+//
+// SDLMenuManager.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 4/9/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLMenuManager.h"
+
+#import "SDLAddCommand.h"
+#import "SDLAddSubMenu.h"
+#import "SDLArtwork.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLDeleteCommand.h"
+#import "SDLDeleteSubMenu.h"
+#import "SDLDisplayCapability.h"
+#import "SDLDisplayType.h"
+#import "SDLError.h"
+#import "SDLFileManager.h"
+#import "SDLGlobals.h"
+#import "SDLImage.h"
+#import "SDLLogMacros.h"
+#import "SDLMenuCell.h"
+#import "SDLMenuConfiguration.h"
+#import "SDLMenuParams.h"
+#import "SDLDynamicMenuUpdateRunScore.h"
+#import "SDLDynamicMenuUpdateAlgorithm.h"
+#import "SDLOnCommand.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLSetDisplayLayoutResponse.h"
+#import "SDLSetGlobalProperties.h"
+#import "SDLScreenManager.h"
+#import "SDLShowAppMenu.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLWindowCapability.h"
+#import "SDLWindowCapability+ScreenManagerExtensions.h"
+#import "SDLVersion.h"
+#import "SDLVoiceCommand.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLMenuCell()
+
+@property (assign, nonatomic) UInt32 parentCellId;
+@property (assign, nonatomic) UInt32 cellId;
+
+@end
+
+@interface SDLMenuManager()
+
+// Dependencies
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic) SDLFileManager *fileManager;
+@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
+
+@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
+@property (copy, nonatomic, nullable) SDLSystemContext currentSystemContext;
+
+@property (strong, nonatomic, nullable) NSArray<SDLRPCRequest *> *inProgressUpdate;
+@property (assign, nonatomic) BOOL hasQueuedUpdate;
+@property (assign, nonatomic) BOOL waitingOnHMIUpdate;
+@property (copy, nonatomic) NSArray<SDLMenuCell *> *waitingUpdateMenuCells;
+@property (strong, nonatomic, nullable) SDLWindowCapability *windowCapability;
+
+@property (assign, nonatomic) UInt32 lastMenuId;
+@property (copy, nonatomic) NSArray<SDLMenuCell *> *oldMenuCells;
+
+@end
+
+UInt32 const ParentIdNotFound = UINT32_MAX;
+UInt32 const MenuCellIdMin = 1;
+
+@implementation SDLMenuManager
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _lastMenuId = MenuCellIdMin;
+ _menuConfiguration = [[SDLMenuConfiguration alloc] init];
+ _menuCells = @[];
+ _oldMenuCells = @[];
+ _dynamicMenuUpdatesMode = SDLDynamicMenuUpdatesModeOnWithCompatibility;
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_commandNotification:) name:SDLDidReceiveCommandNotification object:nil];
+
+ return self;
+}
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(nonnull SDLSystemCapabilityManager *)systemCapabilityManager {
+ self = [self init];
+ if (!self) { return nil; }
+
+ _connectionManager = connectionManager;
+ _fileManager = fileManager;
+ _systemCapabilityManager = systemCapabilityManager;
+
+ return self;
+}
+
+- (void)start {
+ [self.systemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self selector:@selector(sdl_displayCapabilityDidUpdate:)];
+}
+
+- (void)stop {
+ _lastMenuId = MenuCellIdMin;
+ _menuCells = @[];
+ _oldMenuCells = @[];
+
+ _currentHMILevel = nil;
+ _currentSystemContext = SDLSystemContextMain;
+ _inProgressUpdate = nil;
+ _hasQueuedUpdate = NO;
+ _waitingOnHMIUpdate = NO;
+ _waitingUpdateMenuCells = @[];
+}
+
+#pragma mark - Setters
+
+- (void)setMenuConfiguration:(SDLMenuConfiguration *)menuConfiguration {
+ NSArray<SDLMenuLayout> *layoutsAvailable = self.windowCapability.menuLayoutsAvailable;
+
+ if ([[SDLGlobals sharedGlobals].rpcVersion isLessThanVersion:[SDLVersion versionWithMajor:6 minor:0 patch:0]]) {
+ SDLLogW(@"Menu configurations is only supported on head units with RPC spec version 6.0.0 or later. Currently connected head unit RPC spec version is %@", [SDLGlobals sharedGlobals].rpcVersion);
+ return;
+ } else if (layoutsAvailable == nil) {
+ SDLLogW(@"Could not set the main menu configuration. Which menu layouts can be used is not available");
+ return;
+ } else if (![layoutsAvailable containsObject:menuConfiguration.mainMenuLayout]
+ || ![layoutsAvailable containsObject:menuConfiguration.defaultSubmenuLayout]) {
+ SDLLogE(@"One or more of the set menu layouts are not available on this system. The menu configuration will not be set. Available menu layouts: %@, set menu layouts: %@", layoutsAvailable, menuConfiguration);
+ return;
+ } else if (self.currentHMILevel == nil
+ || [self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
+ SDLLogE(@"Could not set main menu configuration, HMI level: %@, required: 'Not-NONE', system context: %@, required: 'Not MENU'", self.currentHMILevel, self.currentSystemContext);
+ return;
+ }
+
+ SDLMenuConfiguration *oldConfig = _menuConfiguration;
+ _menuConfiguration = menuConfiguration;
+
+ SDLSetGlobalProperties *setGlobalsRPC = [[SDLSetGlobalProperties alloc] init];
+ setGlobalsRPC.menuLayout = menuConfiguration.mainMenuLayout;
+
+ __weak typeof(self) weakself = self;
+ [self.connectionManager sendConnectionRequest:setGlobalsRPC withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ __strong typeof(weakself) strongself = weakself;
+ if (error != nil) {
+ SDLLogE(@"Could not set main menu configuration: %@", error);
+ strongself.menuConfiguration = oldConfig;
+ return;
+ }
+ }];
+}
+
+- (void)setMenuCells:(NSArray<SDLMenuCell *> *)menuCells {
+ if (self.currentHMILevel == nil
+ || [self.currentHMILevel isEqualToEnum:SDLHMILevelNone]
+ || [self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]) {
+ SDLLogD(@"Waiting for HMI update to send menu cells");
+ self.waitingOnHMIUpdate = YES;
+ self.waitingUpdateMenuCells = menuCells;
+ return;
+ }
+
+ self.waitingOnHMIUpdate = NO;
+
+ NSMutableSet *titleCheckSet = [NSMutableSet set];
+ NSMutableSet<NSString *> *allMenuVoiceCommands = [NSMutableSet set];
+ NSUInteger voiceCommandCount = 0;
+ for (SDLMenuCell *cell in menuCells) {
+ [titleCheckSet addObject:cell.title];
+ if (cell.voiceCommands == nil) { continue; }
+ [allMenuVoiceCommands addObjectsFromArray:cell.voiceCommands];
+ voiceCommandCount += cell.voiceCommands.count;
+ }
+
+ // Check for duplicate titles
+ if (titleCheckSet.count != menuCells.count) {
+ SDLLogE(@"Not all cell titles are unique. The menu will not be set.");
+ return;
+ }
+
+ // Check for duplicate voice recognition commands
+ if (allMenuVoiceCommands.count != voiceCommandCount) {
+ SDLLogE(@"Attempted to create a menu with duplicate voice commands. Voice commands must be unique. The menu will not be set.");
+ return;
+ }
+
+ _oldMenuCells = _menuCells;
+ _menuCells = menuCells;
+
+ if ([self sdl_isDynamicMenuUpdateActive:self.dynamicMenuUpdatesMode]) {
+ [self sdl_startDynamicMenuUpdate];
+ } else {
+ [self sdl_startNonDynamicMenuUpdate];
+ }
+}
+
+#pragma mark - Open Menu
+
+- (BOOL)openMenu {
+ if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
+ SDLLogE(@"The openMenu method is not supported on this head unit.");
+ return NO;
+ }
+
+ SDLShowAppMenu *openMenu = [[SDLShowAppMenu alloc] init];
+
+ [self.connectionManager sendConnectionRequest:openMenu withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if ([response.resultCode isEqualToEnum:SDLResultWarnings]) {
+ SDLLogW(@"Warning opening application menu: %@", error);
+ } else if (![response.resultCode isEqualToEnum:SDLResultSuccess]) {
+ SDLLogE(@"Error opening application menu: %@", error);
+ } else {
+ SDLLogD(@"Successfully opened application main menu");
+ }
+ }];
+
+ return YES;
+}
+
+- (BOOL)openSubmenu:(SDLMenuCell *)cell {
+ if (cell.subCells.count == 0) {
+ SDLLogE(@"The cell %@ does not contain any sub cells, so no submenu can be opened", cell);
+ return NO;
+ } else if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
+ SDLLogE(@"The openSubmenu method is not supported on this head unit.");
+ return NO;
+ } else if (![self.menuCells containsObject:cell]) {
+ SDLLogE(@"This cell has not been sent to the head unit, so no submenu can be opened. Make sure that the cell exists in the SDLManager.menu array");
+ return NO;
+ }
+
+ SDLShowAppMenu *subMenu = [[SDLShowAppMenu alloc] initWithMenuID:cell.cellId];
+
+ [self.connectionManager sendConnectionRequest:subMenu withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if ([response.resultCode isEqualToEnum:SDLResultWarnings]) {
+ SDLLogW(@"Warning opening application menu to submenu cell %@, with error: %@", cell, error);
+ } else if (![response.resultCode isEqualToEnum:SDLResultSuccess]) {
+ SDLLogE(@"Error opening application menu to submenu cell %@, with error: %@", cell, error);
+ } else {
+ SDLLogD(@"Successfully opened application menu to submenu cell: %@", cell);
+ }
+ }];
+
+ return YES;
+}
+
+#pragma mark - Build Deletes, Keeps, Adds
+
+- (void)sdl_startSubMenuUpdatesWithOldKeptCells:(NSArray<SDLMenuCell *> *)oldKeptCells newKeptCells:(NSArray<SDLMenuCell *> *)newKeptCells atIndex:(NSUInteger)startIndex {
+ if (oldKeptCells.count == 0 || startIndex >= oldKeptCells.count) {
+ self.inProgressUpdate = nil;
+ return;
+ }
+
+ if (oldKeptCells[startIndex].subCells.count > 0) {
+ SDLDynamicMenuUpdateRunScore *tempScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldKeptCells[startIndex].subCells updatedMenuCells:newKeptCells[startIndex].subCells];
+ NSArray<NSNumber *> *deleteMenuStatus = tempScore.oldStatus;
+ NSArray<NSNumber *> *addMenuStatus = tempScore.updatedStatus;
+
+ NSArray<SDLMenuCell *> *cellsToDelete = [self sdl_filterDeleteMenuItemsWithOldMenuItems:oldKeptCells[startIndex].subCells basedOnStatusList:deleteMenuStatus];
+ NSArray<SDLMenuCell *> *cellsToAdd = [self sdl_filterAddMenuItemsWithNewMenuItems:newKeptCells[startIndex].subCells basedOnStatusList:addMenuStatus];
+
+ NSArray<SDLMenuCell *> *oldKeeps = [self sdl_filterKeepMenuItemsWithOldMenuItems:oldKeptCells[startIndex].subCells basedOnStatusList:deleteMenuStatus];
+ NSArray<SDLMenuCell *> *newKeeps = [self sdl_filterKeepMenuItemsWithNewMenuItems:newKeptCells[startIndex].subCells basedOnStatusList:addMenuStatus];
+
+ [self sdl_updateIdsOnMenuCells:cellsToAdd parentId:newKeptCells[startIndex].cellId];
+ [self transferCellIDFromOldCells:oldKeeps toKeptCells:newKeeps];
+
+ __weak typeof(self) weakself = self;
+ [self sdl_sendDeleteCurrentMenu:cellsToDelete withCompletionHandler:^(NSError * _Nullable error) {
+ [weakself sdl_sendUpdatedMenu:cellsToAdd usingMenu:weakself.menuCells[startIndex].subCells withCompletionHandler:^(NSError * _Nullable error) {
+ // After the first set of submenu cells were added and deleted we must find the next set of subcells untll we loop through all the elemetns
+ [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeptCells newKeptCells:newKeptCells atIndex:(startIndex + 1)];
+ }];
+ }];
+ } else {
+ // After the first set of submenu cells were added and deleted we must find the next set of subcells untll we loop through all the elemetns
+ [self sdl_startSubMenuUpdatesWithOldKeptCells:oldKeptCells newKeptCells:newKeptCells atIndex:(startIndex + 1)];
+ }
+}
+
+- (NSArray<SDLMenuCell *> *)sdl_filterDeleteMenuItemsWithOldMenuItems:(NSArray<SDLMenuCell *> *)oldMenuCells basedOnStatusList:(NSArray<NSNumber *> *)oldStatusList {
+ NSMutableArray<SDLMenuCell *> *deleteCells = [[NSMutableArray alloc] init];
+ // The index of the status should corrleate 1-1 with the number of items in the menu
+ // [2,0,2,0] => [A,B,C,D] = [B,D]
+ for (NSUInteger index = 0; index < oldStatusList.count; index++) {
+ if (oldStatusList[index].integerValue == MenuCellStateDelete) {
+ [deleteCells addObject:oldMenuCells[index]];
+ }
+ }
+ return [deleteCells copy];
+}
+
+- (NSArray<SDLMenuCell *> *)sdl_filterAddMenuItemsWithNewMenuItems:(NSArray<SDLMenuCell *> *)newMenuCells basedOnStatusList:(NSArray<NSNumber *> *)newStatusList {
+ NSMutableArray<SDLMenuCell *> *addCells = [[NSMutableArray alloc] init];
+ // The index of the status should corrleate 1-1 with the number of items in the menu
+ // [2,1,2,1] => [A,B,C,D] = [B,D]
+ for (NSUInteger index = 0; index < newStatusList.count; index++) {
+ if (newStatusList[index].integerValue == MenuCellStateAdd) {
+ [addCells addObject:newMenuCells[index]];
+ }
+ }
+ return [addCells copy];
+}
+
+- (NSArray<SDLMenuCell *> *)sdl_filterKeepMenuItemsWithOldMenuItems:(NSArray<SDLMenuCell *> *)oldMenuCells basedOnStatusList:(NSArray<NSNumber *> *)keepStatusList {
+ NSMutableArray<SDLMenuCell *> *keepMenuCells = [[NSMutableArray alloc] init];
+
+ for (NSUInteger index = 0; index < keepStatusList.count; index++) {
+ if (keepStatusList[index].integerValue == MenuCellStateKeep) {
+ [keepMenuCells addObject:oldMenuCells[index]];
+ }
+ }
+ return [keepMenuCells copy];
+}
+
+- (NSArray<SDLMenuCell *> *)sdl_filterKeepMenuItemsWithNewMenuItems:(NSArray<SDLMenuCell *> *)newMenuCells basedOnStatusList:(NSArray<NSNumber *> *)keepStatusList {
+ NSMutableArray<SDLMenuCell *> *keepMenuCells = [[NSMutableArray alloc] init];
+ for (NSUInteger index = 0; index < keepStatusList.count; index++) {
+ if (keepStatusList[index].integerValue == MenuCellStateKeep) {
+ [keepMenuCells addObject:newMenuCells[index]];
+ }
+ }
+ return [keepMenuCells copy];
+}
+
+- (void)transferCellIDFromOldCells:(NSArray<SDLMenuCell *> *)oldCells toKeptCells:(NSArray<SDLMenuCell *> *)newCells {
+ if (oldCells.count == 0) { return; }
+ for (NSUInteger i = 0; i < newCells.count; i++) {
+ newCells[i].cellId = oldCells[i].cellId;
+ }
+}
+
+#pragma mark - Updating System
+
+- (void)sdl_startDynamicMenuUpdate {
+ SDLDynamicMenuUpdateRunScore *runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:self.oldMenuCells updatedMenuCells:self.menuCells];
+
+ NSArray<NSNumber *> *deleteMenuStatus = runScore.oldStatus;
+ NSArray<NSNumber *> *addMenuStatus = runScore.updatedStatus;
+
+ NSArray<SDLMenuCell *> *cellsToDelete = [self sdl_filterDeleteMenuItemsWithOldMenuItems:self.oldMenuCells basedOnStatusList:deleteMenuStatus];
+ NSArray<SDLMenuCell *> *cellsToAdd = [self sdl_filterAddMenuItemsWithNewMenuItems:self.menuCells basedOnStatusList:addMenuStatus];
+ // These arrays should ONLY contain KEEPS. These will be used for SubMenu compares
+ NSArray<SDLMenuCell *> *oldKeeps = [self sdl_filterKeepMenuItemsWithOldMenuItems:self.oldMenuCells basedOnStatusList:deleteMenuStatus];
+ NSArray<SDLMenuCell *> *newKeeps = [self sdl_filterKeepMenuItemsWithNewMenuItems:self.menuCells basedOnStatusList:addMenuStatus];
+
+ // Cells that will be added need new ids
+ [self sdl_updateIdsOnMenuCells:cellsToAdd parentId:ParentIdNotFound];
+
+ // Since we are creating a new Menu but keeping old cells we must firt transfer the old cellIDs to the new menus kept cells.
+ [self transferCellIDFromOldCells:oldKeeps toKeptCells:newKeeps];
+
+ // Upload the artworks
+ NSArray<SDLArtwork *> *artworksToBeUploaded = [self sdl_findAllArtworksToBeUploadedFromCells:cellsToAdd];
+ if (artworksToBeUploaded.count > 0) {
+ [self.fileManager uploadArtworks:artworksToBeUploaded completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogE(@"Error uploading menu artworks: %@", error);
+ }
+ SDLLogD(@"Menu artworks uploaded");
+ // Update cells with artworks once they're uploaded
+ __weak typeof(self) weakself = self;
+ [self sdl_updateMenuWithCellsToDelete:cellsToDelete cellsToAdd:cellsToAdd completionHandler:^(NSError * _Nullable error) {
+ [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeeps newKeptCells:newKeeps atIndex:0];
+ }];
+ }];
+ } else {
+ // Cells have no artwork to load
+ __weak typeof(self) weakself = self;
+ [self sdl_updateMenuWithCellsToDelete:cellsToDelete cellsToAdd:cellsToAdd completionHandler:^(NSError * _Nullable error) {
+ [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeeps newKeptCells:newKeeps atIndex:0];
+ }];
+ }
+}
+
+- (void)sdl_startNonDynamicMenuUpdate {
+ [self sdl_updateIdsOnMenuCells:self.menuCells parentId:ParentIdNotFound];
+
+ NSArray<SDLArtwork *> *artworksToBeUploaded = [self sdl_findAllArtworksToBeUploadedFromCells:self.menuCells];
+ if (artworksToBeUploaded.count > 0) {
+ [self.fileManager uploadArtworks:artworksToBeUploaded completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogE(@"Error uploading menu artworks: %@", error);
+ }
+
+ SDLLogD(@"Menu artworks uploaded");
+ [self sdl_updateMenuWithCellsToDelete:self.oldMenuCells cellsToAdd:self.menuCells completionHandler:nil];
+ }];
+ } else {
+ // Cells have no artwork to load
+ [self sdl_updateMenuWithCellsToDelete:self.oldMenuCells cellsToAdd:self.menuCells completionHandler:nil];
+ }
+}
+
+- (void)sdl_updateMenuWithCellsToDelete:(NSArray<SDLMenuCell *> *)deleteCells cellsToAdd:(NSArray<SDLMenuCell *> *)addCells completionHandler:(nullable SDLMenuUpdateCompletionHandler)completionHandler {
+ if (self.currentHMILevel == nil
+ || [self.currentHMILevel isEqualToEnum:SDLHMILevelNone]
+ || [self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]) {
+ self.waitingOnHMIUpdate = YES;
+ self.waitingUpdateMenuCells = self.menuCells;
+ return;
+ }
+
+ if (self.inProgressUpdate != nil) {
+ // There's an in progress update, we need to put this on hold
+ self.hasQueuedUpdate = YES;
+ return;
+ }
+ __weak typeof(self) weakself = self;
+ [self sdl_sendDeleteCurrentMenu:deleteCells withCompletionHandler:^(NSError * _Nullable error) {
+ [weakself sdl_sendUpdatedMenu:addCells usingMenu:weakself.menuCells withCompletionHandler:^(NSError * _Nullable error) {
+ weakself.inProgressUpdate = nil;
+
+ if (completionHandler != nil) {
+ completionHandler(error);
+ }
+
+ if (weakself.hasQueuedUpdate) {
+ [weakself sdl_updateMenuWithCellsToDelete:deleteCells cellsToAdd:addCells completionHandler:nil];
+ weakself.hasQueuedUpdate = NO;
+ }
+ }];
+ }];
+}
+
+#pragma mark Delete Old Menu Items
+
+- (void)sdl_sendDeleteCurrentMenu:(nullable NSArray<SDLMenuCell *> *)deleteMenuCells withCompletionHandler:(SDLMenuUpdateCompletionHandler)completionHandler {
+ if (deleteMenuCells.count == 0) {
+ completionHandler(nil);
+ return;
+ }
+
+ NSArray<SDLRPCRequest *> *deleteMenuCommands = [self sdl_deleteCommandsForCells:deleteMenuCells];
+ [self.connectionManager sendRequests:deleteMenuCommands progressHandler:nil completionHandler:^(BOOL success) {
+ if (!success) {
+ SDLLogW(@"Unable to delete all old menu commands");
+ } else {
+ SDLLogD(@"Finished deleting old menu");
+ }
+
+ completionHandler(nil);
+ }];
+}
+
+#pragma mark Send New Menu Items
+
+/**
+ Creates add commands
+
+ @param updatedMenu The cells you will be adding
+ @param menu The list of all cells. This may be different then self.menuCells since this function is called on subcell cells as well. When comparing 2 sub menu cells this function will be passed the list of all subcells on that cell.
+ @param completionHandler handler
+ */
+- (void)sdl_sendUpdatedMenu:(NSArray<SDLMenuCell *> *)updatedMenu usingMenu:(NSArray<SDLMenuCell *> *)menu withCompletionHandler:(SDLMenuUpdateCompletionHandler)completionHandler {
+ if (self.menuCells.count == 0 || updatedMenu.count == 0) {
+ SDLLogD(@"There are no cells to update.");
+ completionHandler(nil);
+ return;
+ }
+
+ NSArray<SDLRPCRequest *> *mainMenuCommands = nil;
+ NSArray<SDLRPCRequest *> *subMenuCommands = nil;
+
+ if ([self sdl_findAllArtworksToBeUploadedFromCells:self.menuCells].count > 0 || ![self.windowCapability hasImageFieldOfName:SDLImageFieldNameCommandIcon]) {
+ // Send artwork-less menu
+ mainMenuCommands = [self sdl_mainMenuCommandsForCells:updatedMenu withArtwork:NO usingIndexesFrom:menu];
+ subMenuCommands = [self sdl_subMenuCommandsForCells:updatedMenu withArtwork:NO];
+ } else {
+ // Send full artwork menu
+ mainMenuCommands = [self sdl_mainMenuCommandsForCells:updatedMenu withArtwork:YES usingIndexesFrom:menu];
+ subMenuCommands = [self sdl_subMenuCommandsForCells:updatedMenu withArtwork:YES];
+ }
+
+ self.inProgressUpdate = [mainMenuCommands arrayByAddingObjectsFromArray:subMenuCommands];
+
+ __block NSMutableDictionary<SDLRPCRequest *, NSError *> *errors = [NSMutableDictionary dictionary];
+ __weak typeof(self) weakSelf = self;
+ [self.connectionManager sendRequests:mainMenuCommands progressHandler:^void(__kindof SDLRPCRequest * _Nonnull request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error, float percentComplete) {
+ if (error != nil) {
+ errors[request] = error;
+ }
+ } completionHandler:^(BOOL success) {
+ if (!success) {
+ SDLLogE(@"Failed to send main menu commands: %@", errors);
+ completionHandler([NSError sdl_menuManager_failedToUpdateWithDictionary:errors]);
+ return;
+ }
+
+ [weakSelf.connectionManager sendRequests:subMenuCommands progressHandler:^(__kindof SDLRPCRequest * _Nonnull request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error, float percentComplete) {
+ if (error != nil) {
+ errors[request] = error;
+ }
+ } completionHandler:^(BOOL success) {
+ if (!success) {
+ SDLLogE(@"Failed to send sub menu commands: %@", errors);
+ completionHandler([NSError sdl_menuManager_failedToUpdateWithDictionary:errors]);
+ return;
+ }
+
+ SDLLogD(@"Finished updating menu");
+ completionHandler(nil);
+ }];
+ }];
+}
+
+#pragma mark - Helpers
+
+- (BOOL)sdl_isDynamicMenuUpdateActive:(SDLDynamicMenuUpdatesMode)dynamicMenuUpdatesMode {
+ switch (dynamicMenuUpdatesMode) {
+ case SDLDynamicMenuUpdatesModeForceOn:
+ return YES;
+ case SDLDynamicMenuUpdatesModeForceOff:
+ return NO;
+ case SDLDynamicMenuUpdatesModeOnWithCompatibility:
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ return ![self.systemCapabilityManager.displays.firstObject.displayName isEqualToString:SDLDisplayTypeGen38Inch];
+#pragma clang diagnostic pop
+ }
+}
+
+#pragma mark Artworks
+
+- (NSArray<SDLArtwork *> *)sdl_findAllArtworksToBeUploadedFromCells:(NSArray<SDLMenuCell *> *)cells {
+ if (![self.windowCapability hasImageFieldOfName:SDLImageFieldNameCommandIcon]) {
+ return @[];
+ }
+
+ NSMutableSet<SDLArtwork *> *mutableArtworks = [NSMutableSet set];
+ for (SDLMenuCell *cell in cells) {
+ if ([self sdl_artworkNeedsUpload:cell.icon]) {
+ [mutableArtworks addObject:cell.icon];
+ }
+
+ if (cell.subCells.count > 0) {
+ [mutableArtworks addObjectsFromArray:[self sdl_findAllArtworksToBeUploadedFromCells:cell.subCells]];
+ }
+ }
+
+ return [mutableArtworks allObjects];
+}
+
+- (BOOL)sdl_artworkNeedsUpload:(SDLArtwork *)artwork {
+ return (artwork != nil && ![self.fileManager hasUploadedFile:artwork] && !artwork.isStaticIcon);
+}
+
+#pragma mark IDs
+
+- (void)sdl_updateIdsOnMenuCells:(NSArray<SDLMenuCell *> *)menuCells parentId:(UInt32)parentId {
+ for (SDLMenuCell *cell in menuCells) {
+ cell.cellId = self.lastMenuId++;
+ cell.parentCellId = parentId;
+ if (cell.subCells.count > 0) {
+ [self sdl_updateIdsOnMenuCells:cell.subCells parentId:cell.cellId];
+ }
+ }
+}
+
+#pragma mark Deletes
+
+- (NSArray<SDLRPCRequest *> *)sdl_deleteCommandsForCells:(NSArray<SDLMenuCell *> *)cells {
+ NSMutableArray<SDLRPCRequest *> *mutableDeletes = [NSMutableArray array];
+ for (SDLMenuCell *cell in cells) {
+ if (cell.subCells == nil) {
+ SDLDeleteCommand *delete = [[SDLDeleteCommand alloc] initWithId:cell.cellId];
+ [mutableDeletes addObject:delete];
+ } else {
+ SDLDeleteSubMenu *delete = [[SDLDeleteSubMenu alloc] initWithId:cell.cellId];
+ [mutableDeletes addObject:delete];
+ }
+ }
+
+ return [mutableDeletes copy];
+}
+
+#pragma mark Commands / SubMenu RPCs
+/**
+ This method will receive the cells to be added and the updated menu array. It will then build an array of add commands using the correct index to position the new items in the correct location.
+
+ @param cells that will be added to the menu, this array must contain only cells that are not already in the menu.
+ @param shouldHaveArtwork artwork bool
+ @param menu the new menu array, this array should contain all the values the develeoper has set to be included in the new menu. This is used for placing the newly added cells in the correct locaiton.
+ e.g. If the new menu array is [A, B, C, D] but only [C, D] are new we need to pass [A, B , C , D] so C and D can be added to index 2 and 3 respectively.
+ @return list of SDLRPCRequest addCommands
+ */
+- (NSArray<SDLRPCRequest *> *)sdl_mainMenuCommandsForCells:(NSArray<SDLMenuCell *> *)cells withArtwork:(BOOL)shouldHaveArtwork usingIndexesFrom:(NSArray<SDLMenuCell *> *)menu {
+ NSMutableArray<SDLRPCRequest *> *mutableCommands = [NSMutableArray array];
+
+ for (NSUInteger menuInteger = 0; menuInteger < menu.count; menuInteger++) {
+ for (NSUInteger updateCellsIndex = 0; updateCellsIndex < cells.count; updateCellsIndex++) {
+ if ([menu[menuInteger] isEqual:cells[updateCellsIndex]]) {
+ if (cells[updateCellsIndex].subCells.count > 0) {
+ [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cells[updateCellsIndex] withArtwork:shouldHaveArtwork position:(UInt16)menuInteger]];
+ } else {
+ [mutableCommands addObject:[self sdl_commandForMenuCell:cells[updateCellsIndex] withArtwork:shouldHaveArtwork position:(UInt16)menuInteger]];
+ }
+ }
+ }
+ }
+
+ return [mutableCommands copy];
+}
+
+- (NSArray<SDLRPCRequest *> *)sdl_subMenuCommandsForCells:(NSArray<SDLMenuCell *> *)cells withArtwork:(BOOL)shouldHaveArtwork {
+ NSMutableArray<SDLRPCRequest *> *mutableCommands = [NSMutableArray array];
+ for (SDLMenuCell *cell in cells) {
+ if (cell.subCells.count > 0) {
+ [mutableCommands addObjectsFromArray:[self sdl_allCommandsForCells:cell.subCells withArtwork:shouldHaveArtwork]];
+ }
+ }
+
+ return [mutableCommands copy];
+}
+
+- (NSArray<SDLRPCRequest *> *)sdl_allCommandsForCells:(NSArray<SDLMenuCell *> *)cells withArtwork:(BOOL)shouldHaveArtwork {
+ NSMutableArray<SDLRPCRequest *> *mutableCommands = [NSMutableArray array];
+
+ for (NSUInteger cellIndex = 0; cellIndex < cells.count; cellIndex++) {
+ if (cells[cellIndex].subCells.count > 0) {
+ [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cells[cellIndex] withArtwork:shouldHaveArtwork position:(UInt16)cellIndex]];
+ [mutableCommands addObjectsFromArray:[self sdl_allCommandsForCells:cells[cellIndex].subCells withArtwork:shouldHaveArtwork]];
+ } else {
+ [mutableCommands addObject:[self sdl_commandForMenuCell:cells[cellIndex] withArtwork:shouldHaveArtwork position:(UInt16)cellIndex]];
+ }
+ }
+
+ return [mutableCommands copy];
+}
+
+- (SDLAddCommand *)sdl_commandForMenuCell:(SDLMenuCell *)cell withArtwork:(BOOL)shouldHaveArtwork position:(UInt16)position {
+ SDLAddCommand *command = [[SDLAddCommand alloc] init];
+
+ SDLMenuParams *params = [[SDLMenuParams alloc] init];
+ params.menuName = cell.title;
+ params.parentID = cell.parentCellId != UINT32_MAX ? @(cell.parentCellId) : nil;
+ params.position = @(position);
+
+ command.menuParams = params;
+ command.vrCommands = (cell.voiceCommands.count == 0) ? nil : cell.voiceCommands;
+ command.cmdIcon = (cell.icon && shouldHaveArtwork) ? cell.icon.imageRPC : nil;
+ command.cmdID = @(cell.cellId);
+
+ return command;
+}
+
+- (SDLAddSubMenu *)sdl_subMenuCommandForMenuCell:(SDLMenuCell *)cell withArtwork:(BOOL)shouldHaveArtwork position:(UInt16)position {
+ SDLImage *icon = (shouldHaveArtwork && (cell.icon.name != nil)) ? cell.icon.imageRPC : nil;
+
+ SDLMenuLayout submenuLayout = nil;
+ if (cell.submenuLayout && [self.systemCapabilityManager.defaultMainWindowCapability.menuLayoutsAvailable containsObject:cell.submenuLayout]) {
+ submenuLayout = cell.submenuLayout;
+ } else {
+ submenuLayout = self.menuConfiguration.defaultSubmenuLayout;
+ }
+
+ return [[SDLAddSubMenu alloc] initWithMenuID:cell.cellId menuName:cell.title position:@(position) menuIcon:icon menuLayout:submenuLayout parentID:nil];
+}
+
+#pragma mark - Calling handlers
+
+- (BOOL)sdl_callHandlerForCells:(NSArray<SDLMenuCell *> *)cells command:(SDLOnCommand *)onCommand {
+ for (SDLMenuCell *cell in cells) {
+ if (cell.cellId == onCommand.cmdID.unsignedIntegerValue && cell.handler != nil) {
+ cell.handler(onCommand.triggerSource);
+ return YES;
+ }
+
+ if (cell.subCells.count > 0) {
+ BOOL succeeded = [self sdl_callHandlerForCells:cell.subCells command:onCommand];
+ if (succeeded) { return YES; }
+ }
+ }
+
+ return NO;
+}
+
+#pragma mark - Observers
+
+- (void)sdl_commandNotification:(SDLRPCNotificationNotification *)notification {
+ SDLOnCommand *onCommand = (SDLOnCommand *)notification.notification;
+
+ [self sdl_callHandlerForCells:self.menuCells command:onCommand];
+}
+
+- (void)sdl_displayCapabilityDidUpdate:(SDLSystemCapability *)systemCapability {
+ // We won't use the object in the parameter but the convenience method of the system capability manager
+ self.windowCapability = self.systemCapabilityManager.defaultMainWindowCapability;
+}
+
+- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
+ SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
+ SDLHMILevel oldHMILevel = self.currentHMILevel;
+ self.currentHMILevel = hmiStatus.hmiLevel;
+
+ // Auto-send an updated menu if we were in NONE and now we are not, and we need an update
+ if ([oldHMILevel isEqualToString:SDLHMILevelNone] && ![self.currentHMILevel isEqualToString:SDLHMILevelNone] &&
+ ![self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]) {
+ if (self.waitingOnHMIUpdate) {
+ [self setMenuCells:self.waitingUpdateMenuCells];
+ self.waitingUpdateMenuCells = @[];
+ return;
+ }
+ }
+
+ // If we don't check for this and only update when not in the menu, there can be IN_USE errors, especially with submenus. We also don't want to encourage changing out the menu while the user is using it for usability reasons.
+ SDLSystemContext oldSystemContext = self.currentSystemContext;
+ self.currentSystemContext = hmiStatus.systemContext;
+
+ if ([oldSystemContext isEqualToEnum:SDLSystemContextMenu]
+ && ![self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]
+ && ![self.currentHMILevel isEqualToEnum:SDLHMILevelNone]) {
+ if (self.waitingOnHMIUpdate) {
+ [self setMenuCells:self.waitingUpdateMenuCells];
+ self.waitingUpdateMenuCells = @[];
+ }
+ }
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMutableDataQueue.h b/SmartDeviceLink/private/SDLMutableDataQueue.h
index ece0c0e76..ece0c0e76 100644
--- a/SmartDeviceLink/SDLMutableDataQueue.h
+++ b/SmartDeviceLink/private/SDLMutableDataQueue.h
diff --git a/SmartDeviceLink/SDLMutableDataQueue.m b/SmartDeviceLink/private/SDLMutableDataQueue.m
index 0640749b6..0640749b6 100644
--- a/SmartDeviceLink/SDLMutableDataQueue.m
+++ b/SmartDeviceLink/private/SDLMutableDataQueue.m
diff --git a/SmartDeviceLink/SDLNotificationDispatcher.h b/SmartDeviceLink/private/SDLNotificationDispatcher.h
index a923879c0..a923879c0 100644
--- a/SmartDeviceLink/SDLNotificationDispatcher.h
+++ b/SmartDeviceLink/private/SDLNotificationDispatcher.h
diff --git a/SmartDeviceLink/SDLNotificationDispatcher.m b/SmartDeviceLink/private/SDLNotificationDispatcher.m
index bd8ab7e7a..bd8ab7e7a 100644
--- a/SmartDeviceLink/SDLNotificationDispatcher.m
+++ b/SmartDeviceLink/private/SDLNotificationDispatcher.m
diff --git a/SmartDeviceLink/SDLObjectWithPriority.h b/SmartDeviceLink/private/SDLObjectWithPriority.h
index 848773f05..848773f05 100644
--- a/SmartDeviceLink/SDLObjectWithPriority.h
+++ b/SmartDeviceLink/private/SDLObjectWithPriority.h
diff --git a/SmartDeviceLink/SDLObjectWithPriority.m b/SmartDeviceLink/private/SDLObjectWithPriority.m
index 6c8d72878..6c8d72878 100644
--- a/SmartDeviceLink/SDLObjectWithPriority.m
+++ b/SmartDeviceLink/private/SDLObjectWithPriority.m
diff --git a/SmartDeviceLink/SDLPCMAudioConverter.h b/SmartDeviceLink/private/SDLPCMAudioConverter.h
index abd1a880a..abd1a880a 100755
--- a/SmartDeviceLink/SDLPCMAudioConverter.h
+++ b/SmartDeviceLink/private/SDLPCMAudioConverter.h
diff --git a/SmartDeviceLink/SDLPCMAudioConverter.m b/SmartDeviceLink/private/SDLPCMAudioConverter.m
index 853f5a6fb..853f5a6fb 100755
--- a/SmartDeviceLink/SDLPCMAudioConverter.m
+++ b/SmartDeviceLink/private/SDLPCMAudioConverter.m
diff --git a/SmartDeviceLink/private/SDLPermissionFilter.h b/SmartDeviceLink/private/SDLPermissionFilter.h
new file mode 100644
index 000000000..71437d2b7
--- /dev/null
+++ b/SmartDeviceLink/private/SDLPermissionFilter.h
@@ -0,0 +1,73 @@
+//
+// SDLPermissionFilter.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 11/18/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLPermissionConstants.h"
+#import "SDLPermissionElement.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLPermissionFilter : NSObject <NSCopying>
+
+/**
+ * An identifier for the permission filter to allow it to be removed at a later time.
+ */
+@property (copy, nonatomic, readonly) SDLPermissionObserverIdentifier identifier;
+
+/**
+ * The type of this filter group.
+ */
+@property (assign, nonatomic, readonly) SDLPermissionGroupType groupType;
+
+/**
+ * The block that will be called on status changes to RPC permission status objects
+ */
+@property (copy, nonatomic, readonly) SDLRPCPermissionStatusChangedHandler rpcPermissionStatusHandler;
+
+/**
+ * All of the permission elements in this filter group.
+ */
+@property (copy, nonatomic, readonly) NSArray<SDLPermissionElement *> *permissionElements;
+
+/// Initializer unavailable
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * Create a new permission filter group.
+ *
+ * @param rpcNames The names of the RPCs to watch permissions of.
+ * @param groupType The type of notifications to be sent for this filter group.
+ * @param permissionStatusHandler The block observer to be called when changes occur.
+ *
+ * @return An instance of `SDLPermissionFilter`.
+ */
+- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionStatusHandler:(SDLRPCPermissionStatusChangedHandler)permissionStatusHandler;
+
+/**
+ * Whether the current filter is equivalent with another filter or not.
+ *
+ * @param otherFilter The other filter to test equivalence with.
+ *
+ * @return YES if this filter is equivalent with `otherFilter`, NO otherwise.
+ */
+- (BOOL)isEqualToFilter:(SDLPermissionFilter *)otherFilter;
+
+/**
+ * Gets all the RPC names from an array of SDLPermissionElements
+ *
+ * @param permissionElements The permission elements to convert.
+ *
+ * @return An array of RPC names
+ */
+- (NSArray<SDLRPCFunctionName> *)rpcNamesFromPermissionElements:(NSArray<SDLPermissionElement *> *)permissionElements;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLPermissionFilter.m b/SmartDeviceLink/private/SDLPermissionFilter.m
new file mode 100644
index 000000000..11ee06c3e
--- /dev/null
+++ b/SmartDeviceLink/private/SDLPermissionFilter.m
@@ -0,0 +1,79 @@
+//
+// SDLPermissionFilter.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 11/18/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLPermissionFilter.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLPermissionFilter
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionStatusHandler:(SDLRPCPermissionStatusChangedHandler)permissionStatusHandler {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _identifier = [NSUUID UUID];
+ _permissionElements = rpcNames;
+ _groupType = groupType;
+ _rpcPermissionStatusHandler = permissionStatusHandler;
+
+ return self;
+}
+
+#pragma mark - Helpers
+
+- (NSArray<SDLRPCFunctionName> *)rpcNamesFromPermissionElements:(NSArray<SDLPermissionElement *> *)permissionElements {
+ NSMutableArray *rpcNames = [[NSMutableArray alloc] init];
+ for (SDLPermissionElement *element in permissionElements) {
+ [rpcNames addObject:element.rpcName];
+ }
+
+ return [rpcNames copy];
+}
+
+
+#pragma mark - NSCopying
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLPermissionFilter *newFilter = [[self.class allocWithZone:zone] initWithPermissions:[_permissionElements copyWithZone:zone] groupType:_groupType permissionStatusHandler:[_rpcPermissionStatusHandler copyWithZone:zone]];
+ newFilter->_identifier = _identifier;
+
+ return newFilter;
+}
+
+
+#pragma mark - Equality
+
+- (BOOL)isEqual:(id)object {
+ if (object == self) {
+ return YES;
+ }
+
+ if (![object isMemberOfClass:[self class]]) {
+ return NO;
+ }
+
+ return [self isEqualToFilter:object];
+}
+
+- (BOOL)isEqualToFilter:(SDLPermissionFilter *)otherFilter {
+ return [self.identifier isEqual:otherFilter.identifier];
+}
+
+
+#pragma mark - Description
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"Permission Filter Identifier: %@, group type: %@, RPCs: %@", self.identifier, @(self.groupType), self.permissionElements];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPreloadChoicesOperation.h b/SmartDeviceLink/private/SDLPreloadChoicesOperation.h
index 965a0c176..965a0c176 100644
--- a/SmartDeviceLink/SDLPreloadChoicesOperation.h
+++ b/SmartDeviceLink/private/SDLPreloadChoicesOperation.h
diff --git a/SmartDeviceLink/SDLPreloadChoicesOperation.m b/SmartDeviceLink/private/SDLPreloadChoicesOperation.m
index 82f7435ff..82f7435ff 100644
--- a/SmartDeviceLink/SDLPreloadChoicesOperation.m
+++ b/SmartDeviceLink/private/SDLPreloadChoicesOperation.m
diff --git a/SmartDeviceLink/SDLPresentChoiceSetOperation.h b/SmartDeviceLink/private/SDLPresentChoiceSetOperation.h
index df82bfa22..df82bfa22 100644
--- a/SmartDeviceLink/SDLPresentChoiceSetOperation.h
+++ b/SmartDeviceLink/private/SDLPresentChoiceSetOperation.h
diff --git a/SmartDeviceLink/private/SDLPresentChoiceSetOperation.m b/SmartDeviceLink/private/SDLPresentChoiceSetOperation.m
new file mode 100644
index 000000000..0788b0b97
--- /dev/null
+++ b/SmartDeviceLink/private/SDLPresentChoiceSetOperation.m
@@ -0,0 +1,335 @@
+//
+// SDLPresentChoiceSetOperation.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 5/24/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLPresentChoiceSetOperation.h"
+
+#import "SDLCancelInteraction.h"
+#import "SDLChoiceCell.h"
+#import "SDLChoiceSet.h"
+#import "SDLChoiceSetDelegate.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLGlobals.h"
+#import "SDLKeyboardDelegate.h"
+#import "SDLKeyboardProperties.h"
+#import "SDLLogMacros.h"
+#import "SDLNotificationConstants.h"
+#import "SDLOnKeyboardInput.h"
+#import "SDLPerformInteraction.h"
+#import "SDLPerformInteractionResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLSetGlobalProperties.h"
+#import "SDLVersion.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLChoiceCell()
+
+@property (assign, nonatomic) UInt16 choiceId;
+
+@end
+
+@interface SDLChoiceSet()
+
+@property (copy, nonatomic) SDLChoiceSetCanceledHandler canceledHandler;
+
+
+@end
+
+@interface SDLPresentChoiceSetOperation()
+
+@property (strong, nonatomic) NSUUID *operationId;
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (strong, nonatomic, readwrite) SDLChoiceSet *choiceSet;
+@property (strong, nonatomic) SDLInteractionMode presentationMode;
+@property (strong, nonatomic, nullable) SDLKeyboardProperties *originalKeyboardProperties;
+@property (strong, nonatomic, nullable) SDLKeyboardProperties *keyboardProperties;
+@property (weak, nonatomic) id<SDLKeyboardDelegate> keyboardDelegate;
+
+@property (strong, nonatomic, readonly) SDLPerformInteraction *performInteraction;
+@property (strong, nonatomic, readonly) SDLLayoutMode layoutMode;
+@property (strong, nonatomic, readonly) NSArray<NSNumber<SDLInt> *> *choiceIds;
+@property (assign, nonatomic) UInt16 cancelId;
+@property (assign, nonatomic) BOOL updatedKeyboardProperties;
+
+@property (copy, nonatomic, nullable) NSError *internalError;
+@property (strong, nonatomic, readwrite, nullable) SDLChoiceCell *selectedCell;
+@property (strong, nonatomic, readwrite, nullable) SDLTriggerSource selectedTriggerSource;
+@property (assign, nonatomic, readwrite) NSUInteger selectedCellRow;
+
+@end
+
+@implementation SDLPresentChoiceSetOperation
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager choiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode keyboardProperties:(nullable SDLKeyboardProperties *)originalKeyboardProperties keyboardDelegate:(nullable id<SDLKeyboardDelegate>)keyboardDelegate cancelID:(UInt16)cancelID {
+ self = [super init];
+ if (!self) { return self; }
+
+ _connectionManager = connectionManager;
+ _choiceSet = choiceSet;
+
+ __weak typeof(self) weakSelf = self;
+ self.choiceSet.canceledHandler = ^{
+ [weakSelf sdl_cancelInteraction];
+ };
+
+ _presentationMode = mode;
+ _operationId = [NSUUID UUID];
+
+ _originalKeyboardProperties = originalKeyboardProperties;
+ _keyboardProperties = originalKeyboardProperties;
+ _keyboardDelegate = keyboardDelegate;
+ _cancelId = cancelID;
+
+ _selectedCellRow = NSNotFound;
+
+ return self;
+}
+
+- (void)start {
+ [super start];
+ if (self.isCancelled) { return; }
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_keyboardInputNotification:) name:SDLDidReceiveKeyboardInputNotification object:nil];
+
+ [self sdl_start];
+}
+
+- (void)sdl_start {
+ // Check if we're using a keyboard (searchable) choice set and setup keyboard properties if we need to
+ if (self.keyboardDelegate != nil && [self.keyboardDelegate respondsToSelector:@selector(customKeyboardConfiguration)]) {
+ SDLKeyboardProperties *customProperties = self.keyboardDelegate.customKeyboardConfiguration;
+ if (customProperties != nil) {
+ self.keyboardProperties = customProperties;
+ }
+ }
+
+ [self sdl_updateKeyboardPropertiesWithCompletionHandler:^{
+ if (self.isCancelled) {
+ [self finishOperation];
+ return;
+ }
+
+ [self sdl_presentChoiceSet];
+ }];
+}
+
+#pragma mark - Sending Requests
+
+- (void)sdl_updateKeyboardPropertiesWithCompletionHandler:(nullable void(^)(void))completionHandler {
+ if (self.keyboardProperties == nil) {
+ if (completionHandler != nil) {
+ completionHandler();
+ }
+ return;
+ }
+
+ SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
+ setProperties.keyboardProperties = self.keyboardProperties;
+
+ __weak typeof(self) weakself = self;
+ [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogE(@"Error setting keyboard properties to new value: %@, with error: %@", request, error);
+ }
+
+ weakself.updatedKeyboardProperties = YES;
+
+ if (completionHandler != nil) {
+ completionHandler();
+ }
+ }];
+}
+
+- (void)sdl_presentChoiceSet {
+ __weak typeof(self) weakself = self;
+ [self.connectionManager sendConnectionRequest:self.performInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogE(@"Presenting choice set failed with response: %@, error: %@", response, error);
+ weakself.internalError = error;
+
+ [weakself finishOperation];
+ return;
+ }
+
+ SDLPerformInteractionResponse *performResponse = (SDLPerformInteractionResponse *)response;
+ [weakself sdl_setSelectedCellWithId:performResponse.choiceID];
+ weakself.selectedTriggerSource = performResponse.triggerSource;
+
+ [weakself finishOperation];
+ }];
+}
+
+#pragma mark - Helpers
+
+- (void)sdl_setSelectedCellWithId:(NSNumber<SDLInt> *)cellId {
+ __weak typeof(self) weakself = self;
+ [self.choiceSet.choices enumerateObjectsUsingBlock:^(SDLChoiceCell * _Nonnull cell, NSUInteger i, BOOL * _Nonnull stop) {
+ if (cell.choiceId == cellId.unsignedIntValue) {
+ weakself.selectedCell = cell;
+ weakself.selectedCellRow = i;
+ }
+ }];
+}
+
+/**
+ * Cancels the choice set. If the choice set has not yet been sent to Core, it will not be sent. If the choice set is already presented on Core, the choice set will be immediately dismissed. Canceling an already presented choice set will only work if connected to Core versions 6.0+. On older versions of Core, the choice set will not be dismissed.
+ */
+- (void)sdl_cancelInteraction {
+ if (self.isFinished) {
+ SDLLogW(@"This operation has already finished so it can not be canceled.");
+ return;
+ } else if (self.isCancelled) {
+ SDLLogW(@"This operation has already been canceled. It will be finished at some point during the operation.");
+ return;
+ } else if (self.isExecuting) {
+ if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
+ SDLLogE(@"Canceling a choice set is not supported on this head unit");
+ return;
+ }
+
+ SDLLogD(@"Canceling the presented choice set interaction");
+
+ SDLCancelInteraction *cancelInteraction = [[SDLCancelInteraction alloc] initWithPerformInteractionCancelID:self.cancelId];
+
+ __weak typeof(self) weakSelf = self;
+ [self.connectionManager sendConnectionRequest:cancelInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ weakSelf.internalError = error;
+ SDLLogE(@"Error canceling the presented choice set: %@, with error: %@", request, error);
+ return;
+ }
+ SDLLogD(@"The presented choice set was canceled successfully");
+ }];
+ } else {
+ SDLLogD(@"Canceling a choice set that has not yet been sent to Core");
+ [self cancel];
+ }
+}
+
+#pragma mark - Getters
+
+- (SDLPerformInteraction *)performInteraction {
+ SDLPerformInteraction *performInteraction = [[SDLPerformInteraction alloc] init];
+ performInteraction.interactionMode = self.presentationMode;
+ performInteraction.initialText = self.choiceSet.title;
+ performInteraction.initialPrompt = self.choiceSet.initialPrompt;
+ performInteraction.helpPrompt = self.choiceSet.helpPrompt;
+ performInteraction.timeoutPrompt = self.choiceSet.timeoutPrompt;
+ performInteraction.vrHelp = self.choiceSet.helpList;
+ performInteraction.timeout = @((NSUInteger)(self.choiceSet.timeout * 1000));
+ performInteraction.interactionLayout = self.layoutMode;
+ performInteraction.interactionChoiceSetIDList = self.choiceIds;
+ performInteraction.cancelID = @(self.cancelId);
+
+ return performInteraction;
+}
+
+- (SDLLayoutMode)layoutMode {
+ switch (self.choiceSet.layout) {
+ case SDLChoiceSetLayoutList:
+ return self.keyboardDelegate ? SDLLayoutModeListWithSearch : SDLLayoutModeListOnly;
+ case SDLChoiceSetLayoutTiles:
+ return self.keyboardDelegate ? SDLLayoutModeIconWithSearch : SDLLayoutModeIconOnly;
+ }
+}
+
+- (NSArray<NSNumber<SDLInt> *> *)choiceIds {
+ NSMutableArray<NSNumber<SDLInt> *> *choiceIds = [NSMutableArray arrayWithCapacity:self.choiceSet.choices.count];
+ for (SDLChoiceCell *cell in self.choiceSet.choices) {
+ [choiceIds addObject:@(cell.choiceId)];
+ }
+
+ return [choiceIds copy];
+}
+
+#pragma mark - SDL Notifications
+
+- (void)sdl_keyboardInputNotification:(SDLRPCNotificationNotification *)notification {
+ if (self.isCancelled) {
+ [self finishOperation];
+ return;
+ }
+
+ if (self.keyboardDelegate == nil) { return; }
+ SDLOnKeyboardInput *onKeyboard = notification.notification;
+
+ if ([self.keyboardDelegate respondsToSelector:@selector(keyboardDidSendEvent:text:)]) {
+ [self.keyboardDelegate keyboardDidSendEvent:onKeyboard.event text:onKeyboard.data];
+ }
+
+ __weak typeof(self) weakself = self;
+ if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventVoice] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventSubmitted]) {
+ // Submit voice or text
+ [self.keyboardDelegate userDidSubmitInput:onKeyboard.data withEvent:onKeyboard.event];
+ } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventKeypress]) {
+ // Notify of keypress
+ if ([self.keyboardDelegate respondsToSelector:@selector(updateAutocompleteWithInput:autoCompleteResultsHandler:)]) {
+ [self.keyboardDelegate updateAutocompleteWithInput:onKeyboard.data autoCompleteResultsHandler:^(NSArray<NSString *> * _Nullable updatedAutoCompleteList) {
+ NSArray<NSString *> *newList = nil;
+ if (updatedAutoCompleteList.count > 100) {
+ newList = [updatedAutoCompleteList subarrayWithRange:NSMakeRange(0, 100)];
+ } else {
+ newList = updatedAutoCompleteList;
+ }
+
+ weakself.keyboardProperties.autoCompleteList = (newList.count > 0) ? newList : @[];
+ weakself.keyboardProperties.autoCompleteText = (newList.count > 0) ? newList.firstObject : nil;
+ [weakself sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
+ }];
+ }
+
+ if ([self.keyboardDelegate respondsToSelector:@selector(updateCharacterSetWithInput:completionHandler:)]) {
+ [self.keyboardDelegate updateCharacterSetWithInput:onKeyboard.data completionHandler:^(NSArray<NSString *> *updatedCharacterSet) {
+ weakself.keyboardProperties.limitedCharacterList = updatedCharacterSet;
+ [self sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
+ }];
+ }
+ } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventAborted] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventCancelled]) {
+ // Notify of abort / cancellation
+ [self.keyboardDelegate keyboardDidAbortWithReason:onKeyboard.event];
+ }
+}
+
+#pragma mark - Property Overrides
+
+- (void)finishOperation {
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+
+ if (self.keyboardProperties == nil) {
+ [super finishOperation];
+ return;
+ }
+
+ // We need to reset the keyboard properties
+ SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
+ setProperties.keyboardProperties = self.originalKeyboardProperties;
+
+ [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogE(@"Error resetting keyboard properties to values: %@, with error: %@", request, error);
+ }
+
+ [super finishOperation];
+ }];
+}
+
+- (nullable NSString *)name {
+ return [NSString stringWithFormat:@"%@ - %@", self.class, self.operationId];
+}
+
+- (NSOperationQueuePriority)queuePriority {
+ return NSOperationQueuePriorityNormal;
+}
+
+- (nullable NSError *)error {
+ return self.internalError;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPresentKeyboardOperation.h b/SmartDeviceLink/private/SDLPresentKeyboardOperation.h
index 9a5a6cfb5..9a5a6cfb5 100644
--- a/SmartDeviceLink/SDLPresentKeyboardOperation.h
+++ b/SmartDeviceLink/private/SDLPresentKeyboardOperation.h
diff --git a/SmartDeviceLink/private/SDLPresentKeyboardOperation.m b/SmartDeviceLink/private/SDLPresentKeyboardOperation.m
new file mode 100644
index 000000000..633ccfba6
--- /dev/null
+++ b/SmartDeviceLink/private/SDLPresentKeyboardOperation.m
@@ -0,0 +1,244 @@
+//
+// SDLPresentKeyboardOperation.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 5/24/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLPresentKeyboardOperation.h"
+
+#import "SDLCancelInteraction.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLGlobals.h"
+#import "SDLKeyboardDelegate.h"
+#import "SDLKeyboardProperties.h"
+#import "SDLLogMacros.h"
+#import "SDLNotificationConstants.h"
+#import "SDLOnKeyboardInput.h"
+#import "SDLPerformInteraction.h"
+#import "SDLPerformInteractionResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLSetGlobalProperties.h"
+#import "SDLVersion.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLPresentKeyboardOperation()
+
+@property (strong, nonatomic) NSUUID *operationId;
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic) id<SDLKeyboardDelegate> keyboardDelegate;
+@property (copy, nonatomic) NSString *initialText;
+@property (strong, nonatomic) SDLKeyboardProperties *originalKeyboardProperties;
+@property (strong, nonatomic) SDLKeyboardProperties *keyboardProperties;
+@property (assign, nonatomic, readwrite) UInt16 cancelId;
+
+@property (strong, nonatomic, readonly) SDLPerformInteraction *performInteraction;
+
+@property (copy, nonatomic, nullable) NSError *internalError;
+
+@end
+
+@implementation SDLPresentKeyboardOperation
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager keyboardProperties:(SDLKeyboardProperties *)originalKeyboardProperties initialText:(NSString *)initialText keyboardDelegate:(id<SDLKeyboardDelegate>)keyboardDelegate cancelID:(UInt16)cancelID {
+ self = [super init];
+ if (!self) { return self; }
+
+ _connectionManager = connectionManager;
+ _initialText = initialText;
+ _keyboardDelegate = keyboardDelegate;
+ _originalKeyboardProperties = originalKeyboardProperties;
+ _keyboardProperties = originalKeyboardProperties;
+ _cancelId = cancelID;
+ _operationId = [NSUUID UUID];
+
+ return self;
+}
+
+- (void)start {
+ [super start];
+ if (self.isCancelled) { return; }
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_keyboardInputNotification:) name:SDLDidReceiveKeyboardInputNotification object:nil];
+
+ [self sdl_start];
+}
+
+- (void)sdl_start {
+ if (self.keyboardDelegate != nil && [self.keyboardDelegate respondsToSelector:@selector(customKeyboardConfiguration)]) {
+ SDLKeyboardProperties *customProperties = self.keyboardDelegate.customKeyboardConfiguration;
+ if (customProperties != nil) {
+ self.keyboardProperties = customProperties;
+ }
+ }
+
+ [self sdl_updateKeyboardPropertiesWithCompletionHandler:^{
+ if (self.isCancelled) {
+ [self finishOperation];
+ return;
+ }
+
+ [self sdl_presentKeyboard];
+ }];
+}
+
+#pragma mark - Sending Requests
+
+- (void)sdl_updateKeyboardPropertiesWithCompletionHandler:(nullable void(^)(void))completionHandler {
+ SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
+ setProperties.keyboardProperties = self.keyboardProperties;
+
+ [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogE(@"Error setting keyboard properties to new value: %@, with error: %@", request, error);
+ }
+
+ if (completionHandler != nil) {
+ completionHandler();
+ }
+ }];
+}
+
+- (void)sdl_presentKeyboard {
+ [self.connectionManager sendConnectionRequest:self.performInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (self.isCancelled) {
+ [self finishOperation];
+ return;
+ }
+
+ if (error != nil) {
+ self.internalError = error;
+ }
+
+ [self finishOperation];
+ }];
+}
+
+- (void)dismissKeyboard {
+ if (self.isFinished) {
+ SDLLogW(@"This operation has already finished so it can not be canceled.");
+ return;
+ } else if (self.isCancelled) {
+ SDLLogW(@"This operation has already been canceled. It will be finished at some point during the operation.");
+ return;
+ } else if (self.isExecuting) {
+ if ([SDLGlobals.sharedGlobals.rpcVersion isLessThanVersion:[[SDLVersion alloc] initWithMajor:6 minor:0 patch:0]]) {
+ SDLLogE(@"Canceling a keyboard is not supported on this head unit");
+ return;
+ }
+
+ SDLLogD(@"Canceling the presented keyboard");
+
+ SDLCancelInteraction *cancelInteraction = [[SDLCancelInteraction alloc] initWithPerformInteractionCancelID:self.cancelId];
+
+ __weak typeof(self) weakSelf = self;
+ [self.connectionManager sendConnectionRequest:cancelInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ weakSelf.internalError = error;
+ SDLLogE(@"Error canceling the keyboard: %@, with error: %@", request, error);
+ return;
+ }
+ SDLLogD(@"The presented keyboard was canceled successfully");
+ }];
+ } else {
+ SDLLogD(@"Canceling a keyboard that has not yet been sent to Core");
+ [self cancel];
+ }
+}
+
+#pragma mark - Private Getters / Setters
+
+- (SDLPerformInteraction *)performInteraction {
+ SDLPerformInteraction *performInteraction = [[SDLPerformInteraction alloc] init];
+ performInteraction.initialText = self.initialText;
+ performInteraction.interactionMode = SDLInteractionModeManualOnly;
+ performInteraction.interactionChoiceSetIDList = @[];
+ performInteraction.interactionLayout = SDLLayoutModeKeyboard;
+ performInteraction.cancelID = @(self.cancelId);
+
+ return performInteraction;
+}
+
+#pragma mark - Notification Observers
+
+- (void)sdl_keyboardInputNotification:(SDLRPCNotificationNotification *)notification {
+ if (self.isCancelled) {
+ [self finishOperation];
+ return;
+ }
+
+ if (self.keyboardDelegate == nil) { return; }
+ SDLOnKeyboardInput *onKeyboard = notification.notification;
+
+ if ([self.keyboardDelegate respondsToSelector:@selector(keyboardDidSendEvent:text:)]) {
+ [self.keyboardDelegate keyboardDidSendEvent:onKeyboard.event text:onKeyboard.data];
+ }
+
+ __weak typeof(self) weakself = self;
+ if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventVoice] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventSubmitted]) {
+ // Submit voice or text
+ [self.keyboardDelegate userDidSubmitInput:onKeyboard.data withEvent:onKeyboard.event];
+ } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventKeypress]) {
+ // Notify of keypress
+ if ([self.keyboardDelegate respondsToSelector:@selector(updateAutocompleteWithInput:autoCompleteResultsHandler:)]) {
+ [self.keyboardDelegate updateAutocompleteWithInput:onKeyboard.data autoCompleteResultsHandler:^(NSArray<NSString *> * _Nullable updatedAutoCompleteList) {
+ NSArray<NSString *> *newList = nil;
+ if (updatedAutoCompleteList.count > 100) {
+ newList = [updatedAutoCompleteList subarrayWithRange:NSMakeRange(0, 100)];
+ } else {
+ newList = updatedAutoCompleteList;
+ }
+
+ weakself.keyboardProperties.autoCompleteList = (newList.count > 0) ? newList : @[];
+ weakself.keyboardProperties.autoCompleteText = (newList.count > 0) ? newList.firstObject : nil;
+ [weakself sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
+ }];
+ }
+
+ if ([self.keyboardDelegate respondsToSelector:@selector(updateCharacterSetWithInput:completionHandler:)]) {
+ [self.keyboardDelegate updateCharacterSetWithInput:onKeyboard.data completionHandler:^(NSArray<NSString *> *updatedCharacterSet) {
+ weakself.keyboardProperties.limitedCharacterList = updatedCharacterSet;
+ [self sdl_updateKeyboardPropertiesWithCompletionHandler:nil];
+ }];
+ }
+ } else if ([onKeyboard.event isEqualToEnum:SDLKeyboardEventAborted] || [onKeyboard.event isEqualToEnum:SDLKeyboardEventCancelled]) {
+ // Notify of abort / cancellation
+ [self.keyboardDelegate keyboardDidAbortWithReason:onKeyboard.event];
+ }
+}
+
+#pragma mark - Property Overrides
+
+- (nullable NSString *)name {
+ return [NSString stringWithFormat:@"%@ - %@", self.class, self.operationId];
+}
+
+- (NSOperationQueuePriority)queuePriority {
+ return NSOperationQueuePriorityNormal;
+}
+
+- (void)finishOperation {
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+
+ // We need to reset the keyboard properties
+ SDLSetGlobalProperties *setProperties = [[SDLSetGlobalProperties alloc] init];
+ setProperties.keyboardProperties = self.originalKeyboardProperties;
+
+ [self.connectionManager sendConnectionRequest:setProperties withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogE(@"Error resetting keyboard properties to values: %@, with error: %@", request, error);
+ }
+
+ [super finishOperation];
+ }];
+}
+
+- (nullable NSError *)error {
+ return self.internalError;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPrioritizedObjectCollection.h b/SmartDeviceLink/private/SDLPrioritizedObjectCollection.h
index 993f7d903..993f7d903 100644
--- a/SmartDeviceLink/SDLPrioritizedObjectCollection.h
+++ b/SmartDeviceLink/private/SDLPrioritizedObjectCollection.h
diff --git a/SmartDeviceLink/SDLPrioritizedObjectCollection.m b/SmartDeviceLink/private/SDLPrioritizedObjectCollection.m
index b28a99ca7..b28a99ca7 100644
--- a/SmartDeviceLink/SDLPrioritizedObjectCollection.m
+++ b/SmartDeviceLink/private/SDLPrioritizedObjectCollection.m
diff --git a/SmartDeviceLink/SDLProtocol.h b/SmartDeviceLink/private/SDLProtocol.h
index a9a21f66d..a9a21f66d 100644
--- a/SmartDeviceLink/SDLProtocol.h
+++ b/SmartDeviceLink/private/SDLProtocol.h
diff --git a/SmartDeviceLink/private/SDLProtocol.m b/SmartDeviceLink/private/SDLProtocol.m
new file mode 100644
index 000000000..a76e6a24d
--- /dev/null
+++ b/SmartDeviceLink/private/SDLProtocol.m
@@ -0,0 +1,797 @@
+// SDLProtocol.m
+//
+
+
+#import "SDLFunctionID.h"
+
+#import "SDLTransportType.h"
+#import "SDLControlFramePayloadConstants.h"
+#import "SDLControlFramePayloadEndService.h"
+#import "SDLControlFramePayloadNak.h"
+#import "SDLControlFramePayloadRegisterSecondaryTransportNak.h"
+#import "SDLControlFramePayloadRPCStartService.h"
+#import "SDLControlFramePayloadRPCStartServiceAck.h"
+#import "SDLEncryptionLifecycleManager.h"
+#import "SDLLogMacros.h"
+#import "SDLGlobals.h"
+#import "SDLPrioritizedObjectCollection.h"
+#import "SDLProtocol.h"
+#import "SDLProtocolHeader.h"
+#import "SDLProtocolMessage.h"
+#import "SDLProtocolMessageDisassembler.h"
+#import "SDLProtocolReceivedMessageRouter.h"
+#import "SDLRPCNotification.h"
+#import "SDLRPCPayload.h"
+#import "SDLRPCRequest.h"
+#import "SDLRPCResponse.h"
+#import "SDLSecurityType.h"
+#import "SDLTimer.h"
+#import "SDLVersion.h"
+#import "SDLV2ProtocolHeader.h"
+
+NSString *const SDLProtocolSecurityErrorDomain = @"com.sdl.protocol.security";
+
+
+#pragma mark - SDLProtocol Private Interface
+
+typedef NSNumber SDLServiceTypeBox;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLProtocol () {
+ UInt32 _messageID;
+ SDLPrioritizedObjectCollection *_prioritizedCollection;
+}
+
+@property (strong, nonatomic) NSMutableData *receiveBuffer;
+@property (nullable, strong, nonatomic) SDLProtocolReceivedMessageRouter *messageRouter;
+@property (strong, nonatomic) NSMutableDictionary<SDLServiceTypeBox *, SDLProtocolHeader *> *serviceHeaders;
+@property (assign, nonatomic) int32_t hashId;
+
+// Readonly public properties
+@property (strong, nonatomic, readwrite, nullable) NSString *authToken;
+
+@end
+
+
+#pragma mark - SDLProtocol Implementation
+
+@implementation SDLProtocol
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithTransport:(id<SDLTransportType>)transport encryptionManager:(nullable SDLEncryptionLifecycleManager *)encryptionManager {
+ self = [super init];
+ if (!self) { return nil; }
+
+ SDLLogV(@"Initializing protocol with transport: %@, encryption manager: %@", transport, encryptionManager);
+ _messageID = 0;
+ _hashId = SDLControlFrameInt32NotFound;
+ _prioritizedCollection = [[SDLPrioritizedObjectCollection alloc] init];
+ _protocolDelegateTable = [NSHashTable weakObjectsHashTable];
+ _serviceHeaders = [[NSMutableDictionary alloc] init];
+ _messageRouter = [[SDLProtocolReceivedMessageRouter alloc] init];
+ _messageRouter.delegate = self;
+
+ _transport = transport;
+ _transport.delegate = self;
+
+ _encryptionLifecycleManager = encryptionManager;
+
+ return self;
+}
+
+- (void)start {
+ SDLLogD(@"Starting protocol: %@", self);
+ [self.transport connect];
+}
+
+- (void)stopWithCompletionHandler:(void (^)(void))disconnectCompletionHandler {
+ SDLLogD(@"Stopping protocol: %@, disconnecting transport and stopping security manager", self);
+ [self.securityManager stop];
+ [self.transport disconnectWithCompletionHandler:^{
+ disconnectCompletionHandler();
+ }];
+}
+
+#pragma mark - Service metadata
+- (BOOL)storeHeader:(SDLProtocolHeader *)header forServiceType:(SDLServiceType)serviceType {
+ if (header == nil) {
+ return NO;
+ }
+
+ SDLLogD(@"Storing SessionID %i of serviceType %i", header.sessionID, serviceType);
+ self.serviceHeaders[@(serviceType)] = [header copy];
+ return YES;
+}
+
+- (UInt8)sdl_retrieveSessionIDforServiceType:(SDLServiceType)serviceType {
+ SDLProtocolHeader *header = self.serviceHeaders[@(serviceType)];
+ if (header == nil) {
+ // The first time the RPC service type is created, there's no header, so we don't need to warn.
+ if (serviceType != SDLServiceTypeRPC) {
+ SDLLogW(@"Warning: Tried to retrieve sessionID for serviceType %i, but no header is saved for that service type.", serviceType);
+ }
+
+ return 0;
+ }
+
+ return header.sessionID;
+}
+
+#pragma mark - SDLTransportDelegate
+
+- (void)onTransportConnected {
+ SDLLogV(@"Transport connected, opening protocol");
+ NSArray<id<SDLProtocolDelegate>> *listeners;
+ @synchronized(self.protocolDelegateTable) {
+ listeners = self.protocolDelegateTable.allObjects;
+ }
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocolDidOpen:)]) {
+ [listener protocolDidOpen:self];
+ }
+ }
+}
+
+- (void)onTransportDisconnected {
+ SDLLogV(@"Transport disconnected, closing protocol");
+ NSArray<id<SDLProtocolDelegate>> *listeners;
+ @synchronized(self.protocolDelegateTable) {
+ listeners = self.protocolDelegateTable.allObjects;
+ }
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocolDidClose:)]) {
+ [listener protocolDidClose:self];
+ }
+ }
+}
+
+- (void)onDataReceived:(NSData *)receivedData {
+ [self sdl_handleBytesFromTransport:receivedData];
+}
+
+- (void)onError:(NSError *)error {
+ SDLLogV(@"Transport received an error: %@", error);
+ for (id<SDLProtocolDelegate> listener in self.protocolDelegateTable.allObjects) {
+ if ([listener respondsToSelector:@selector(protocol:transportDidError:)]) {
+ [listener protocol:self transportDidError:error];
+ }
+ }
+}
+
+#pragma mark - Start Service
+
+- (void)startServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload {
+ // No encryption, just build and send the message synchronously
+ SDLProtocolMessage *message = [self sdl_createStartServiceMessageWithType:serviceType encrypted:NO payload:payload];
+ SDLLogD(@"Sending start service: %@", message);
+ [self sdl_sendDataToTransport:message.data onService:serviceType];
+}
+
+- (void)startSecureServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload tlsInitializationHandler:(void (^)(BOOL success, NSError *error))tlsInitializationHandler {
+ SDLLogD(@"Attempting to start TLS for service type: %hhu", serviceType);
+ [self sdl_initializeTLSEncryptionWithCompletionHandler:^(BOOL success, NSError *error) {
+ if (!success) {
+ // We can't start the service because we don't have encryption, return the error
+ tlsInitializationHandler(success, error);
+ BLOCK_RETURN;
+ }
+
+ // TLS initialization succeeded. Build and send the message.
+ SDLProtocolMessage *message = [self sdl_createStartServiceMessageWithType:serviceType encrypted:YES payload:nil];
+ SDLLogD(@"TLS initialized, sending start service for message: %@", message);
+ [self sdl_sendDataToTransport:message.data onService:serviceType];
+ }];
+}
+
+- (SDLProtocolMessage *)sdl_createStartServiceMessageWithType:(SDLServiceType)serviceType encrypted:(BOOL)encryption payload:(nullable NSData *)payload {
+ SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
+ NSData *servicePayload = payload;
+
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceTypeRPC];
+ header.frameType = SDLFrameTypeControl;
+ header.serviceType = serviceType;
+ header.frameData = SDLFrameInfoStartService;
+
+ // Sending a StartSession with the encrypted bit set causes module to initiate SSL Handshake with a ClientHello message, which should be handled by the 'processControlService' method.
+ header.encrypted = encryption;
+
+ return [SDLProtocolMessage messageWithHeader:header andPayload:servicePayload];
+}
+
+- (void)sdl_initializeTLSEncryptionWithCompletionHandler:(void (^)(BOOL success, NSError *_Nullable error))completionHandler {
+ if (self.securityManager == nil) {
+ SDLLogE(@"Could not start streaming service, encryption was requested by the remote system but failed because there is no security manager set for this app.");
+
+ if (completionHandler != nil) {
+ completionHandler(NO, [NSError errorWithDomain:SDLProtocolSecurityErrorDomain code:SDLProtocolErrorNoSecurityManager userInfo:nil]);
+ }
+
+ return;
+ }
+
+ SDLLogD(@"Telling security manager to initialize");
+ [self.securityManager initializeWithAppId:self.appId completionHandler:^(NSError *_Nullable error) {
+ if (error) {
+ SDLLogE(@"Security Manager failed to initialize with error: %@", error);
+
+ if (completionHandler != nil) {
+ completionHandler(NO, error);
+ }
+ } else {
+ if (completionHandler != nil) {
+ completionHandler(YES, nil);
+ }
+ }
+ }];
+}
+
+
+#pragma mark - End Service
+
+- (void)endServiceWithType:(SDLServiceType)serviceType {
+ SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
+ header.frameType = SDLFrameTypeControl;
+ header.serviceType = serviceType;
+ header.frameData = SDLFrameInfoEndService;
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:serviceType];
+
+ // Assemble the payload, it's a full control frame if we're on 5.0+, it's just the hash id if we are not
+ NSData *payload = nil;
+ if (self.hashId != SDLControlFrameInt32NotFound) {
+ if([SDLGlobals sharedGlobals].protocolVersion.major > 4) {
+ SDLControlFramePayloadEndService *endServicePayload = [[SDLControlFramePayloadEndService alloc] initWithHashId:self.hashId];
+ payload = endServicePayload.data;
+ } else {
+ payload = [NSData dataWithBytes:&_hashId length:sizeof(_hashId)];
+ }
+ }
+
+ SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:payload];
+ SDLLogD(@"Sending end service: %@", message);
+ [self sdl_sendDataToTransport:message.data onService:serviceType];
+}
+
+
+#pragma mark - Register Secondary Transport
+
+- (void)registerSecondaryTransport {
+ SDLLogV(@"Attempting to register the secondary transport");
+
+ SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
+ header.frameType = SDLFrameTypeControl;
+ header.serviceType = SDLServiceTypeControl;
+ header.frameData = SDLFrameInfoRegisterSecondaryTransport;
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceTypeControl];
+ if ([SDLGlobals sharedGlobals].protocolVersion.major >= 2) {
+ [((SDLV2ProtocolHeader *)header) setMessageID:++_messageID];
+ }
+
+ SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:nil];
+ SDLLogD(@"Sending register secondary transport: %@", message);
+ [self sdl_sendDataToTransport:message.data onService:SDLServiceTypeControl];
+}
+
+
+#pragma mark - Send Data
+
+- (void)sendRPC:(SDLRPCMessage *)message {
+ if (!message.isPayloadProtected && [self.encryptionLifecycleManager rpcRequiresEncryption:message]) {
+ message.payloadProtected = YES;
+ }
+
+ if (message.isPayloadProtected && !self.encryptionLifecycleManager.isEncryptionReady) {
+ SDLLogW(@"Encryption Manager not ready, request not sent (%@)", message);
+ return;
+ }
+
+ [self sendRPC:message encrypted:message.isPayloadProtected error:nil];
+}
+
+- (BOOL)sendRPC:(SDLRPCMessage *)message encrypted:(BOOL)encryption error:(NSError *__autoreleasing *)error {
+ NSParameterAssert(message != nil);
+ NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[message serializeAsDictionary:(Byte)[SDLGlobals sharedGlobals].protocolVersion.major] options:kNilOptions error:error];
+
+ if (error != nil) {
+ SDLLogW(@"Error encoding JSON data: %@", *error);
+ }
+
+ NSData *messagePayload = nil;
+ SDLLogV(@"Sending RPC: %@", message);
+
+ // Build the message payload. Include the binary header if necessary
+ // VERSION DEPENDENT CODE
+ switch ([SDLGlobals sharedGlobals].protocolVersion.major) {
+ case 1: {
+ // No binary header in version 1
+ messagePayload = jsonData;
+ } break;
+ case 2: // Fallthrough
+ case 3: // Fallthrough
+ case 4: // Fallthrough
+ case 5: {
+ // Build a binary header
+ // Serialize the RPC data into an NSData
+ SDLRPCPayload *rpcPayload = [[SDLRPCPayload alloc] init];
+ rpcPayload.functionID = [[[SDLFunctionID sharedInstance] functionIdForName:message.name] unsignedIntValue];
+ rpcPayload.jsonData = jsonData;
+ rpcPayload.binaryData = message.bulkData;
+
+ // If it's a request or a response, we need to pull out the correlation ID, so we'll downcast
+ if ([message isKindOfClass:SDLRPCRequest.class]) {
+ rpcPayload.rpcType = SDLRPCMessageTypeRequest;
+ rpcPayload.correlationID = [((SDLRPCRequest *)message).correlationID unsignedIntValue];
+ } else if ([message isKindOfClass:SDLRPCResponse.class]) {
+ rpcPayload.rpcType = SDLRPCMessageTypeResponse;
+ rpcPayload.correlationID = [((SDLRPCResponse *)message).correlationID unsignedIntValue];
+ } else if ([message isKindOfClass:[SDLRPCNotification class]]) {
+ rpcPayload.rpcType = SDLRPCMessageTypeNotification;
+ } else {
+ NSAssert(NO, @"Unknown message type attempted to send. Type: %@", [message class]);
+ return NO;
+ }
+
+ // If we're trying to encrypt, try to have the security manager encrypt it. Return if it fails.
+ // TODO: (Joel F.)[2016-02-09] We should assert if the service isn't setup for encryption. See [#350](https://github.com/smartdevicelink/sdl_ios/issues/350)
+ if (encryption) {
+ NSError *encryptError = nil;
+
+ messagePayload = [self.securityManager encryptData:rpcPayload.data withError:&encryptError];
+
+ if (encryptError) {
+ SDLLogE(@"Error encrypting request! %@", encryptError);
+ }
+ } else {
+ messagePayload = rpcPayload.data;
+ }
+
+ if (!messagePayload) {
+ return NO;
+ }
+
+ } break;
+ default: {
+ NSAssert(NO, @"Attempting to send an RPC based on an unknown version number: %@, message: %@", @([SDLGlobals sharedGlobals].protocolVersion.major), message);
+ } break;
+ }
+
+ // Build the protocol level header & message
+ SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
+ header.encrypted = encryption;
+ header.frameType = SDLFrameTypeSingle;
+ header.serviceType = (message.bulkData.length <= 0) ? SDLServiceTypeRPC : SDLServiceTypeBulkData;
+ header.frameData = SDLFrameInfoSingleFrame;
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceTypeRPC];
+
+ // V2+ messages need to have message ID property set.
+ if ([SDLGlobals sharedGlobals].protocolVersion.major >= 2) {
+ [((SDLV2ProtocolHeader *)header) setMessageID:++_messageID];
+ }
+
+ SDLProtocolMessage *protocolMessage = [SDLProtocolMessage messageWithHeader:header andPayload:messagePayload];
+
+ // See if the message is small enough to send in one transmission. If not, break it up into smaller messages and send.
+ if (protocolMessage.size < [[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]) {
+ SDLLogV(@"Sending protocol message: %@", protocolMessage);
+ [self sdl_sendDataToTransport:protocolMessage.data onService:SDLServiceTypeRPC];
+ } else {
+ NSArray<SDLProtocolMessage *> *messages = [SDLProtocolMessageDisassembler disassemble:protocolMessage withLimit:[[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]];
+ for (SDLProtocolMessage *smallerMessage in messages) {
+ SDLLogV(@"Sending protocol message: %@", smallerMessage);
+ [self sdl_sendDataToTransport:smallerMessage.data onService:SDLServiceTypeRPC];
+ }
+ }
+
+ return YES;
+}
+
+// Use for normal messages
+- (void)sdl_sendDataToTransport:(NSData *)data onService:(NSInteger)priority {
+ [_prioritizedCollection addObject:data withPriority:priority];
+
+ NSData *dataToTransmit = nil;
+ while (dataToTransmit = (NSData *)[self->_prioritizedCollection nextObject]) {
+ [self.transport sendData:dataToTransmit];
+ }
+}
+
+- (void)sendRawData:(NSData *)data withServiceType:(SDLServiceType)serviceType {
+ [self sdl_sendRawData:data onService:serviceType encryption:NO];
+}
+
+- (void)sendEncryptedRawData:(NSData *)data onService:(SDLServiceType)serviceType {
+ [self sdl_sendRawData:data onService:serviceType encryption:YES];
+}
+
+- (void)sdl_sendRawData:(NSData *)data onService:(SDLServiceType)service encryption:(BOOL)encryption {
+ SDLV2ProtocolHeader *header = [[SDLV2ProtocolHeader alloc] initWithVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
+ header.encrypted = encryption;
+ header.frameType = SDLFrameTypeSingle;
+ header.serviceType = service;
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:service];
+ header.messageID = ++_messageID;
+
+ if (encryption && data.length) {
+ NSError *encryptError = nil;
+ data = [self.securityManager encryptData:data withError:&encryptError];
+
+ if (encryptError) {
+ SDLLogE(@"Error attempting to encrypt raw data for service: %@, error: %@", @(service), encryptError);
+ }
+ }
+
+ SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:data];
+
+ if (message.size < [[SDLGlobals sharedGlobals] mtuSizeForServiceType:service]) {
+ SDLLogV(@"Sending protocol message: %@", message);
+ [self sdl_sendDataToTransport:message.data onService:header.serviceType];
+ } else {
+ NSArray<SDLProtocolMessage *> *messages = [SDLProtocolMessageDisassembler disassemble:message withLimit:[[SDLGlobals sharedGlobals] mtuSizeForServiceType:service]];
+ for (SDLProtocolMessage *smallerMessage in messages) {
+ SDLLogV(@"Sending protocol message: %@", smallerMessage);
+ [self sdl_sendDataToTransport:smallerMessage.data onService:header.serviceType];
+ }
+ }
+}
+
+
+#pragma mark - Receive and Process Data
+
+// Turn received bytes into message objects.
+- (void)sdl_handleBytesFromTransport:(NSData *)receivedData {
+ // Initialize the receive buffer which will contain bytes while messages are constructed.
+ if (self.receiveBuffer == nil) {
+ self.receiveBuffer = [NSMutableData dataWithCapacity:(4 * [[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC])];
+ }
+
+ // Save the data
+ [self.receiveBuffer appendData:receivedData];
+
+ [self sdl_processMessages];
+}
+
+- (void)sdl_processMessages {
+ UInt8 incomingVersion = [SDLProtocolHeader determineVersion:self.receiveBuffer];
+
+ // If we have enough bytes, create the header.
+ SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:incomingVersion];
+ NSUInteger headerSize = header.size;
+ if (self.receiveBuffer.length >= headerSize) {
+ [header parse:self.receiveBuffer];
+ } else {
+ return;
+ }
+
+ // If we have enough bytes, finish building the message.
+ SDLProtocolMessage *message = nil;
+ NSUInteger payloadSize = header.bytesInPayload;
+ NSUInteger messageSize = headerSize + payloadSize;
+ if (self.receiveBuffer.length >= messageSize) {
+ NSUInteger payloadOffset = headerSize;
+ NSUInteger payloadLength = payloadSize;
+ NSData *payload = [self.receiveBuffer subdataWithRange:NSMakeRange(payloadOffset, payloadLength)];
+
+ // If the message in encrypted and there is payload, try to decrypt it
+ if (header.encrypted && payload.length) {
+ NSError *decryptError = nil;
+ payload = [self.securityManager decryptData:payload withError:&decryptError];
+
+ if (decryptError) {
+ SDLLogE(@"Error attempting to decrypt a payload with error: %@", decryptError);
+ return;
+ }
+ }
+
+ message = [SDLProtocolMessage messageWithHeader:header andPayload:payload];
+ } else {
+ // Need to wait for more bytes.
+ SDLLogV(@"Protocol header complete, message incomplete, waiting for %ld more bytes. Header: %@", (long)(messageSize - self.receiveBuffer.length), header);
+ return;
+ }
+
+ // Need to maintain the receiveBuffer, remove the bytes from it which we just processed.
+ self.receiveBuffer = [[self.receiveBuffer subdataWithRange:NSMakeRange(messageSize, self.receiveBuffer.length - messageSize)] mutableCopy];
+
+ // Pass on the message to the message router.
+ [self.messageRouter handleReceivedMessage:message protocol:self];
+
+ // Call recursively until the buffer is empty or incomplete message is encountered
+ if (self.receiveBuffer.length > 0) {
+ [self sdl_processMessages];
+ }
+}
+
+
+#pragma mark - SDLProtocolDelegate from SDLReceivedProtocolMessageRouter
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
+ SDLLogD(@"Received start service ACK: %@", startServiceACK);
+
+ // V5+ Packet
+ if (startServiceACK.header.version >= 5) {
+ switch (startServiceACK.header.serviceType) {
+ case SDLServiceTypeRPC: {
+ SDLControlFramePayloadRPCStartServiceAck *startServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithData:startServiceACK.payload];
+
+ if (startServiceACKPayload.mtu != SDLControlFrameInt64NotFound) {
+ [[SDLGlobals sharedGlobals] setDynamicMTUSize:(NSUInteger)startServiceACKPayload.mtu forServiceType:startServiceACK.header.serviceType];
+ }
+ if (startServiceACKPayload.hashId != SDLControlFrameInt32NotFound) {
+ self.hashId = startServiceACKPayload.hashId;
+ }
+
+ [SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion = (startServiceACKPayload.protocolVersion != nil) ? [SDLVersion versionWithString:startServiceACKPayload.protocolVersion] : [SDLVersion versionWithMajor:startServiceACK.header.version minor:0 patch:0];
+
+ self.authToken = [SDLGlobals.sharedGlobals.maxHeadUnitProtocolVersion isGreaterThanOrEqualToVersion:[[SDLVersion alloc] initWithMajor:5 minor:2 patch:0]] ? startServiceACKPayload.authToken : nil;
+
+ // TODO: Hash id?
+ } break;
+ case SDLServiceTypeAudio: {
+ SDLControlFramePayloadRPCStartServiceAck *startServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithData:startServiceACK.payload];
+
+ if (startServiceACKPayload.mtu != SDLControlFrameInt64NotFound) {
+ [[SDLGlobals sharedGlobals] setDynamicMTUSize:(NSUInteger)startServiceACKPayload.mtu forServiceType:SDLServiceTypeAudio];
+ }
+ } break;
+ case SDLServiceTypeVideo: {
+ SDLControlFramePayloadRPCStartServiceAck *startServiceACKPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithData:startServiceACK.payload];
+
+ if (startServiceACKPayload.mtu != SDLControlFrameInt64NotFound) {
+ [[SDLGlobals sharedGlobals] setDynamicMTUSize:(NSUInteger)startServiceACKPayload.mtu forServiceType:SDLServiceTypeVideo];
+ }
+ } break;
+ default:
+ break;
+ }
+ } else { // V4 and below packet
+ switch (startServiceACK.header.serviceType) {
+ case SDLServiceTypeRPC: {
+ [SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion = [SDLVersion versionWithMajor:startServiceACK.header.version minor:0 patch:0];
+ } break;
+ default:
+ break;
+ }
+ }
+
+ // Store the header of this service away for future use
+ self.serviceHeaders[@(startServiceACK.header.serviceType)] = [startServiceACK.header copy];
+
+ // Pass along to all the listeners
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveStartServiceACK:)]) {
+ [listener protocol:protocol didReceiveStartServiceACK:startServiceACK];
+ }
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
+ [self sdl_logControlNAKPayload:startServiceNAK];
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveStartServiceNAK:)]) {
+ [listener protocol:protocol didReceiveStartServiceNAK:startServiceNAK];
+ }
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
+ SDLLogD(@"End service ACK: %@", endServiceACK);
+ // Remove the session id
+ [self.serviceHeaders removeObjectForKey:@(endServiceACK.header.serviceType)];
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveEndServiceACK:)]) {
+ [listener protocol:protocol didReceiveEndServiceACK:endServiceACK];
+ }
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
+ [self sdl_logControlNAKPayload:endServiceNAK];
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveEndServiceNAK:)]) {
+ [listener protocol:protocol didReceiveEndServiceNAK:endServiceNAK];
+ }
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveRegisterSecondaryTransportACK:(SDLProtocolMessage *)registerSecondaryTransportACK {
+ SDLLogD(@"Register Secondary Transport ACK: %@", registerSecondaryTransportACK);
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveRegisterSecondaryTransportACK:)]) {
+ [listener protocol:protocol didReceiveRegisterSecondaryTransportACK:registerSecondaryTransportACK];
+ }
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveRegisterSecondaryTransportNAK:(SDLProtocolMessage *)registerSecondaryTransportNAK {
+ [self sdl_logControlNAKPayload:registerSecondaryTransportNAK];
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveRegisterSecondaryTransportNAK:)]) {
+ [listener protocol:protocol didReceiveRegisterSecondaryTransportNAK:registerSecondaryTransportNAK];
+ }
+ }
+}
+
+- (void)handleHeartbeatForSession:(Byte)session {
+ SDLLogV(@"Received a heartbeat");
+
+ // Respond with a heartbeat ACK
+ SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:(UInt8)[SDLGlobals sharedGlobals].protocolVersion.major];
+ header.frameType = SDLFrameTypeControl;
+ header.serviceType = SDLServiceTypeControl;
+ header.frameData = SDLFrameInfoHeartbeatACK;
+ header.sessionID = session;
+ SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:nil];
+ [self sdl_sendDataToTransport:message.data onService:header.serviceType];
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(handleHeartbeatForSession:)]) {
+ [listener handleHeartbeatForSession:session];
+ }
+ }
+}
+
+- (void)handleHeartbeatACK {
+ SDLLogV(@"Received a heartbeat ACK");
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(handleHeartbeatACK)]) {
+ [listener handleHeartbeatACK];
+ }
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveTransportEventUpdate:(SDLProtocolMessage *)transportEventUpdate {
+ SDLLogD(@"Received a transport event update: %@", transportEventUpdate);
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveTransportEventUpdate:)]) {
+ [listener protocol:protocol didReceiveTransportEventUpdate:transportEventUpdate];
+ }
+ }
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveMessage:(SDLProtocolMessage *)msg {
+ // Control service (but not control frame type) messages are TLS handshake messages
+ if (msg.header.serviceType == SDLServiceTypeControl) {
+ [self sdl_processSecurityMessage:msg];
+ return;
+ }
+
+ SDLLogV(@"Other protocol message received: %@", msg);
+
+ NSArray<id<SDLProtocolDelegate>> *listeners = [self sdl_getProtocolListeners];
+ for (id<SDLProtocolDelegate> listener in listeners) {
+ if ([listener respondsToSelector:@selector(protocol:didReceiveMessage:)]) {
+ [listener protocol:protocol didReceiveMessage:msg];
+ }
+ }
+}
+
+- (void)sdl_logControlNAKPayload:(SDLProtocolMessage *)nakMessage {
+ switch (nakMessage.header.frameData) {
+ case SDLFrameInfoStartServiceNACK: // fallthrough
+ case SDLFrameInfoEndServiceNACK: {
+ if (nakMessage.header.version >= 5) {
+ SDLControlFramePayloadNak *endServiceNakPayload = [[SDLControlFramePayloadNak alloc] initWithData:nakMessage.payload];
+ SDLLogE(@"%@ service NAK'd, service type: %@, payload: %@", (nakMessage.header.frameData == SDLFrameInfoStartServiceNACK) ? @"Start" : @"End", @(nakMessage.header.serviceType), endServiceNakPayload);
+ } else {
+ SDLLogE(@"NAK received message: %@", nakMessage);
+ }
+ } break;
+ case SDLFrameInfoRegisterSecondaryTransportNACK: {
+ SDLControlFramePayloadRegisterSecondaryTransportNak *payload = [[SDLControlFramePayloadRegisterSecondaryTransportNak alloc] initWithData:nakMessage.payload];
+ SDLLogE(@"Register Secondary Transport NAK'd, reason: %@", payload.reason);
+ } break;
+ default: break;
+ }
+}
+
+- (NSArray<id<SDLProtocolDelegate>> *)sdl_getProtocolListeners {
+ @synchronized(self.protocolDelegateTable) {
+ return self.protocolDelegateTable.allObjects;
+ }
+}
+
+
+#pragma mark - TLS Handshake
+
+// TODO: These should be split out to a separate class to be tested properly
+- (void)sdl_processSecurityMessage:(SDLProtocolMessage *)clientHandshakeMessage {
+ SDLLogD(@"Received a security message: %@", clientHandshakeMessage);
+
+ if (self.securityManager == nil) {
+ SDLLogE(@"Failed to process security message because no security manager is set.");
+ return;
+ }
+
+ // Misformatted handshake message, something went wrong
+ if (clientHandshakeMessage.payload.length <= 12) {
+ SDLLogE(@"Security message is malformed, less than 12 bytes. It does not have a protocol header.");
+ }
+
+ // Tear off the binary header of the client protocol message to get at the actual TLS handshake
+ // TODO: (Joel F.)[2016-02-15] Should check for errors
+ NSData *clientHandshakeData = [clientHandshakeMessage.payload subdataWithRange:NSMakeRange(12, (clientHandshakeMessage.payload.length - 12))];
+
+ // Ask the security manager for server data based on the client data sent
+ NSError *handshakeError = nil;
+ NSData *serverHandshakeData = [self.securityManager runHandshakeWithClientData:clientHandshakeData error:&handshakeError];
+
+ // If the handshake went bad and the security library ain't happy, send over the failure to the module. This should result in an ACK with encryption off.
+ SDLProtocolMessage *serverSecurityMessage = nil;
+ if (serverHandshakeData == nil) {
+ SDLLogE(@"Error running TLS handshake procedure. Sending error to module. Error: %@", handshakeError);
+
+ serverSecurityMessage = [self.class sdl_serverSecurityFailedMessageWithClientMessageHeader:clientHandshakeMessage.header messageId:++_messageID];
+ } else {
+ // The handshake went fine, send the module the remaining handshake data
+ serverSecurityMessage = [self.class sdl_serverSecurityHandshakeMessageWithData:serverHandshakeData clientMessageHeader:clientHandshakeMessage.header messageId:++_messageID];
+ }
+
+ // Send the response or error message. If it's an error message, the module will ACK the Start Service without encryption. If it's a TLS handshake message, the module will ACK with encryption
+ SDLLogD(@"Sending security message: %@", serverSecurityMessage);
+ [self sdl_sendDataToTransport:serverSecurityMessage.data onService:SDLServiceTypeControl];
+}
+
++ (SDLProtocolMessage *)sdl_serverSecurityHandshakeMessageWithData:(NSData *)data clientMessageHeader:(SDLProtocolHeader *)clientHeader messageId:(UInt32)messageId {
+ // This can't possibly be a v1 header because v1 does not have control protocol messages
+ SDLV2ProtocolHeader *serverMessageHeader = [SDLProtocolHeader headerForVersion:clientHeader.version];
+ serverMessageHeader.encrypted = NO;
+ serverMessageHeader.frameType = SDLFrameTypeSingle;
+ serverMessageHeader.serviceType = SDLServiceTypeControl;
+ serverMessageHeader.frameData = SDLFrameInfoSingleFrame;
+ serverMessageHeader.sessionID = clientHeader.sessionID;
+ serverMessageHeader.messageID = messageId;
+
+ // For a control service packet, we need a binary header with a function ID corresponding to what type of packet we're sending.
+ SDLRPCPayload *serverTLSPayload = [[SDLRPCPayload alloc] init];
+ serverTLSPayload.functionID = 0x01; // TLS Handshake message
+ serverTLSPayload.rpcType = 0x00;
+ serverTLSPayload.correlationID = 0x00;
+ serverTLSPayload.binaryData = data;
+
+ NSData *binaryData = serverTLSPayload.data;
+
+ return [SDLProtocolMessage messageWithHeader:serverMessageHeader andPayload:binaryData];
+}
+
++ (SDLProtocolMessage *)sdl_serverSecurityFailedMessageWithClientMessageHeader:(SDLProtocolHeader *)clientHeader messageId:(UInt32)messageId {
+ // This can't possibly be a v1 header because v1 does not have control protocol messages
+ SDLV2ProtocolHeader *serverMessageHeader = [SDLProtocolHeader headerForVersion:clientHeader.version];
+ serverMessageHeader.encrypted = NO;
+ serverMessageHeader.frameType = SDLFrameTypeSingle;
+ serverMessageHeader.serviceType = SDLServiceTypeControl;
+ serverMessageHeader.frameData = SDLFrameInfoSingleFrame;
+ serverMessageHeader.sessionID = clientHeader.sessionID;
+ serverMessageHeader.messageID = messageId;
+
+ // For a control service packet, we need a binary header with a function ID corresponding to what type of packet we're sending.
+ SDLRPCPayload *serverTLSPayload = [[SDLRPCPayload alloc] init];
+ serverTLSPayload.functionID = 0x02; // TLS Error message
+ serverTLSPayload.rpcType = 0x02;
+ serverTLSPayload.correlationID = 0x00;
+
+ NSData *binaryData = serverTLSPayload.data;
+
+ // TODO: (Joel F.)[2016-02-15] This is supposed to have some JSON data and json data size
+ return [SDLProtocolMessage messageWithHeader:serverMessageHeader andPayload:binaryData];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLProtocolDelegate.h b/SmartDeviceLink/private/SDLProtocolDelegate.h
index f3c55902c..f3c55902c 100644
--- a/SmartDeviceLink/SDLProtocolDelegate.h
+++ b/SmartDeviceLink/private/SDLProtocolDelegate.h
diff --git a/SmartDeviceLink/SDLProtocolHeader.h b/SmartDeviceLink/private/SDLProtocolHeader.h
index 4d9550a87..4d9550a87 100644
--- a/SmartDeviceLink/SDLProtocolHeader.h
+++ b/SmartDeviceLink/private/SDLProtocolHeader.h
diff --git a/SmartDeviceLink/SDLProtocolHeader.m b/SmartDeviceLink/private/SDLProtocolHeader.m
index afe93724d..afe93724d 100644
--- a/SmartDeviceLink/SDLProtocolHeader.m
+++ b/SmartDeviceLink/private/SDLProtocolHeader.m
diff --git a/SmartDeviceLink/SDLProtocolMessage.h b/SmartDeviceLink/private/SDLProtocolMessage.h
index 2fb741aed..2fb741aed 100644
--- a/SmartDeviceLink/SDLProtocolMessage.h
+++ b/SmartDeviceLink/private/SDLProtocolMessage.h
diff --git a/SmartDeviceLink/SDLProtocolMessage.m b/SmartDeviceLink/private/SDLProtocolMessage.m
index 6ed86e05d..6ed86e05d 100644
--- a/SmartDeviceLink/SDLProtocolMessage.m
+++ b/SmartDeviceLink/private/SDLProtocolMessage.m
diff --git a/SmartDeviceLink/SDLProtocolMessageAssembler.h b/SmartDeviceLink/private/SDLProtocolMessageAssembler.h
index 589d8032a..589d8032a 100644
--- a/SmartDeviceLink/SDLProtocolMessageAssembler.h
+++ b/SmartDeviceLink/private/SDLProtocolMessageAssembler.h
diff --git a/SmartDeviceLink/SDLProtocolMessageAssembler.m b/SmartDeviceLink/private/SDLProtocolMessageAssembler.m
index e02ead324..e02ead324 100644
--- a/SmartDeviceLink/SDLProtocolMessageAssembler.m
+++ b/SmartDeviceLink/private/SDLProtocolMessageAssembler.m
diff --git a/SmartDeviceLink/SDLProtocolMessageDisassembler.h b/SmartDeviceLink/private/SDLProtocolMessageDisassembler.h
index 644b1c1de..644b1c1de 100644
--- a/SmartDeviceLink/SDLProtocolMessageDisassembler.h
+++ b/SmartDeviceLink/private/SDLProtocolMessageDisassembler.h
diff --git a/SmartDeviceLink/SDLProtocolMessageDisassembler.m b/SmartDeviceLink/private/SDLProtocolMessageDisassembler.m
index 21ab55f63..21ab55f63 100644
--- a/SmartDeviceLink/SDLProtocolMessageDisassembler.m
+++ b/SmartDeviceLink/private/SDLProtocolMessageDisassembler.m
diff --git a/SmartDeviceLink/SDLProtocolReceivedMessageRouter.h b/SmartDeviceLink/private/SDLProtocolReceivedMessageRouter.h
index d025310a3..d025310a3 100644
--- a/SmartDeviceLink/SDLProtocolReceivedMessageRouter.h
+++ b/SmartDeviceLink/private/SDLProtocolReceivedMessageRouter.h
diff --git a/SmartDeviceLink/SDLProtocolReceivedMessageRouter.m b/SmartDeviceLink/private/SDLProtocolReceivedMessageRouter.m
index 6c51f0079..6c51f0079 100644
--- a/SmartDeviceLink/SDLProtocolReceivedMessageRouter.m
+++ b/SmartDeviceLink/private/SDLProtocolReceivedMessageRouter.m
diff --git a/SmartDeviceLink/SDLRAWH264Packetizer.h b/SmartDeviceLink/private/SDLRAWH264Packetizer.h
index df1a9baf7..df1a9baf7 100644
--- a/SmartDeviceLink/SDLRAWH264Packetizer.h
+++ b/SmartDeviceLink/private/SDLRAWH264Packetizer.h
diff --git a/SmartDeviceLink/SDLRAWH264Packetizer.m b/SmartDeviceLink/private/SDLRAWH264Packetizer.m
index a40acd345..a40acd345 100644
--- a/SmartDeviceLink/SDLRAWH264Packetizer.m
+++ b/SmartDeviceLink/private/SDLRAWH264Packetizer.m
diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.h b/SmartDeviceLink/private/SDLRPCParameterNames.h
new file mode 100644
index 000000000..7222039de
--- /dev/null
+++ b/SmartDeviceLink/private/SDLRPCParameterNames.h
@@ -0,0 +1,779 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+// SDLRPCParameterNames.h
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NSString* SDLRPCParameterName NS_TYPED_ENUM;
+
+extern SDLRPCParameterName const SDLRPCParameterNameACEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameACEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameACMaxEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameACMaxEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameAccelerationPedalPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameAcceptsWayPoints;
+extern SDLRPCParameterName const SDLRPCParameterNameAction;
+extern SDLRPCParameterName const SDLRPCParameterNameActual;
+extern SDLRPCParameterName const SDLRPCParameterNameActualGear;
+extern SDLRPCParameterName const SDLRPCParameterNameAddress;
+extern SDLRPCParameterName const SDLRPCParameterNameAddressLines;
+extern SDLRPCParameterName const SDLRPCParameterNameAdministrativeArea;
+extern SDLRPCParameterName const SDLRPCParameterNameAirbagStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameAlertIcon;
+extern SDLRPCParameterName const SDLRPCParameterNameAlerts;
+extern SDLRPCParameterName const SDLRPCParameterNameAlertText1;
+extern SDLRPCParameterName const SDLRPCParameterNameAlertText2;
+extern SDLRPCParameterName const SDLRPCParameterNameAlertText3;
+extern SDLRPCParameterName const SDLRPCParameterNameAlignment;
+extern SDLRPCParameterName const SDLRPCParameterNameAllocatedModules;
+extern SDLRPCParameterName const SDLRPCParameterNameAllowAppConsumers;
+extern SDLRPCParameterName const SDLRPCParameterNameAllowed;
+extern SDLRPCParameterName const SDLRPCParameterNameAllowMultipleAccess;
+extern SDLRPCParameterName const SDLRPCParameterNameAltitude;
+extern SDLRPCParameterName const SDLRPCParameterNameAltitudeMeters;
+extern SDLRPCParameterName const SDLRPCParameterNameAmbientLightSensorStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameAmbientLightStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameApparentTemperature;
+extern SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureHigh;
+extern SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureLow;
+extern SDLRPCParameterName const SDLRPCParameterNameApproximatePosition;
+extern SDLRPCParameterName const SDLRPCParameterNameAppBundleId;
+extern SDLRPCParameterName const SDLRPCParameterNameAppDisplayName;
+extern SDLRPCParameterName const SDLRPCParameterNameAppHMIType;
+extern SDLRPCParameterName const SDLRPCParameterNameAppId;
+extern SDLRPCParameterName const SDLRPCParameterNameAppInfo;
+extern SDLRPCParameterName const SDLRPCParameterNameAppName;
+extern SDLRPCParameterName const SDLRPCParameterNameAppServiceId;
+extern SDLRPCParameterName const SDLRPCParameterNameAppServiceManifest;
+extern SDLRPCParameterName const SDLRPCParameterNameAppServiceRecord;
+extern SDLRPCParameterName const SDLRPCParameterNameAppServices;
+extern SDLRPCParameterName const SDLRPCParameterNameAppServicesCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameAppVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType;
+extern SDLRPCParameterName const SDLRPCParameterNameAutoCompleteList;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioControlData;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioPassThruCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText1;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioStreamingIndicator;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioStreamingState;
+extern SDLRPCParameterName const SDLRPCParameterNameAudioType;
+extern SDLRPCParameterName const SDLRPCParameterNameAuthToken;
+extern SDLRPCParameterName const SDLRPCParameterNameAutoCompleteText;
+extern SDLRPCParameterName const SDLRPCParameterNameAutoModeEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameAutoModeEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameAuxECallNotificationStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDs;
+extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannels;
+extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDsAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannelsAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameBackgroundColor;
+extern SDLRPCParameterName const SDLRPCParameterNameBackTiltAngle;
+extern SDLRPCParameterName const SDLRPCParameterNameBackTiltAngleAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameBackVerticalPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameBackVerticalPositionAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameBand;
+extern SDLRPCParameterName const SDLRPCParameterNameBatteryLevelStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameBearing;
+extern SDLRPCParameterName const SDLRPCParameterNameBeltStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameBitsPerSample;
+extern SDLRPCParameterName const SDLRPCParameterNameBodyInformation;
+extern SDLRPCParameterName const SDLRPCParameterNameBlue;
+extern SDLRPCParameterName const SDLRPCParameterNameBluetoothIconOn;
+extern SDLRPCParameterName const SDLRPCParameterNameBulkData;
+extern SDLRPCParameterName const SDLRPCParameterNameButtonCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameButtonEventMode;
+extern SDLRPCParameterName const SDLRPCParameterNameButtonName;
+extern SDLRPCParameterName const SDLRPCParameterNameButtonPressMode;
+extern SDLRPCParameterName const SDLRPCParameterNameCancelID;
+extern SDLRPCParameterName const SDLRPCParameterNameCapacity;
+extern SDLRPCParameterName const SDLRPCParameterNameCapacityUnit;
+extern SDLRPCParameterName const SDLRPCParameterNameColor;
+extern SDLRPCParameterName const SDLRPCParameterNameCol;
+extern SDLRPCParameterName const SDLRPCParameterNameColSpan;
+extern SDLRPCParameterName const SDLRPCParameterNameColumns;
+extern SDLRPCParameterName const SDLRPCParameterNameCoolingEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameCoolingEnabledAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameCoolingLevel;
+extern SDLRPCParameterName const SDLRPCParameterNameCoolingLevelAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameCoordinate;
+extern SDLRPCParameterName const SDLRPCParameterNameCallActive;
+extern SDLRPCParameterName const SDLRPCParameterNameCarModeStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameCarrier;
+extern SDLRPCParameterName const SDLRPCParameterNameChannelId;
+extern SDLRPCParameterName const SDLRPCParameterNameChannelName;
+extern SDLRPCParameterName const SDLRPCParameterNameChannelSetting;
+extern SDLRPCParameterName const SDLRPCParameterNameCharacterSet;
+extern SDLRPCParameterName const SDLRPCParameterNameChoiceId;
+extern SDLRPCParameterName const SDLRPCParameterNameChoiceSet;
+extern SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameClimateControlData;
+extern SDLRPCParameterName const SDLRPCParameterNameClimateControlCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameCloudCover;
+extern SDLRPCParameterName const SDLRPCParameterNameClusterModes;
+extern SDLRPCParameterName const SDLRPCParameterNameClusterModeStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameCommandIcon;
+extern SDLRPCParameterName const SDLRPCParameterNameCommandId;
+extern SDLRPCParameterName const SDLRPCParameterNameCompassDirection;
+extern SDLRPCParameterName const SDLRPCParameterNameCorrelationId;
+extern SDLRPCParameterName const SDLRPCParameterNameCountryCode;
+extern SDLRPCParameterName const SDLRPCParameterNameCountryName;
+extern SDLRPCParameterName const SDLRPCParameterNameCRC;
+extern SDLRPCParameterName const SDLRPCParameterNameClockText;
+extern SDLRPCParameterName const SDLRPCParameterNameCloudAppVehicleID;
+extern SDLRPCParameterName const SDLRPCParameterNameCloudTransportType;
+extern SDLRPCParameterName const SDLRPCParameterNameCurrentForecast;
+extern SDLRPCParameterName const SDLRPCParameterNameCurrentForecastSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature;
+extern SDLRPCParameterName const SDLRPCParameterNameCushion;
+extern SDLRPCParameterName const SDLRPCParameterNameCustomButtonId;
+extern SDLRPCParameterName const SDLRPCParameterNameCustomPresets;
+extern SDLRPCParameterName const SDLRPCParameterNameOEMCustomDataType;
+extern SDLRPCParameterName const SDLRPCParameterNameData;
+extern SDLRPCParameterName const SDLRPCParameterNameDataResult;
+extern SDLRPCParameterName const SDLRPCParameterNameDataType;
+extern SDLRPCParameterName const SDLRPCParameterNameDay;
+extern SDLRPCParameterName const SDLRPCParameterNameDayColorScheme;
+extern SDLRPCParameterName const SDLRPCParameterNameDefrostZone;
+extern SDLRPCParameterName const SDLRPCParameterNameDefrostZoneAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDeliveryMode;
+extern SDLRPCParameterName const SDLRPCParameterNameDensity;
+extern SDLRPCParameterName const SDLRPCParameterNameDensityAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDesiredTemperature;
+extern SDLRPCParameterName const SDLRPCParameterNameDesiredTemperatureAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDestination;
+extern SDLRPCParameterName const SDLRPCParameterNameDestinationETA;
+extern SDLRPCParameterName const SDLRPCParameterNameDetails;
+extern SDLRPCParameterName const SDLRPCParameterNameDeviation;
+extern SDLRPCParameterName const SDLRPCParameterNameDeviceInfo;
+extern SDLRPCParameterName const SDLRPCParameterNameDeviceStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameDiagonalScreenSize;
+extern SDLRPCParameterName const SDLRPCParameterNameDialNumberEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameDIDLocation;
+extern SDLRPCParameterName const SDLRPCParameterNameDIDResult;
+extern SDLRPCParameterName const SDLRPCParameterNameDimension;
+extern SDLRPCParameterName const SDLRPCParameterNameDisplays;
+extern SDLRPCParameterName const SDLRPCParameterNameDisplayCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameDisplayMode;
+extern SDLRPCParameterName const SDLRPCParameterNameDisplayModeUnitAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDisplayLayout;
+extern SDLRPCParameterName const SDLRPCParameterNameDisplayName;
+extern SDLRPCParameterName const SDLRPCParameterNameDisplayType;
+extern SDLRPCParameterName const SDLRPCParameterNameDistanceUnit;
+extern SDLRPCParameterName const SDLRPCParameterNameDistanceToEmpty;
+extern SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuver;
+extern SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuverScale;
+extern SDLRPCParameterName const SDLRPCParameterNameDistanceUnitAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDoublePressAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverBeltDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverBraking;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverBuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverCurtainAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverDistraction;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverDistractionCapability;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverDistractionStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverDoorAjar;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverKneeAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverSideAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNameDrivingSide;
+extern SDLRPCParameterName const SDLRPCParameterNameDTC;
+extern SDLRPCParameterName const SDLRPCParameterNameDTCMask;
+extern SDLRPCParameterName const SDLRPCParameterNameDualModeEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameDualModeEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDuration;
+extern SDLRPCParameterName const SDLRPCParameterNameDuplicateUpdatesFromWindowID;
+extern SDLRPCParameterName const SDLRPCParameterNameDynamicUpdateCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameE911Override;
+extern SDLRPCParameterName const SDLRPCParameterNameECallConfirmationStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameECallEventActive;
+extern SDLRPCParameterName const SDLRPCParameterNameECallInfo;
+extern SDLRPCParameterName const SDLRPCParameterNameECallNotificationStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameECUHeader;
+extern SDLRPCParameterName const SDLRPCParameterNameECUName;
+extern SDLRPCParameterName const SDLRPCParameterNameElectronicParkBrakeStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameEmergencyEvent;
+extern SDLRPCParameterName const SDLRPCParameterNameEmergencyEventType;
+extern SDLRPCParameterName const SDLRPCParameterNameEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameEndpoint;
+extern SDLRPCParameterName const SDLRPCParameterNameEndTime;
+extern SDLRPCParameterName const SDLRPCParameterNameEngineOilLife;
+extern SDLRPCParameterName const SDLRPCParameterNameEngineTorque;
+extern SDLRPCParameterName const SDLRPCParameterNameEqualizerAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameEqualizerMaxChannelId;
+extern SDLRPCParameterName const SDLRPCParameterNameEqualizerSettings;
+extern SDLRPCParameterName const SDLRPCParameterNameEscSystem;
+extern SDLRPCParameterName const SDLRPCParameterNameETA;
+extern SDLRPCParameterName const SDLRPCParameterNameEvent;
+extern SDLRPCParameterName const SDLRPCParameterNameExpires;
+extern SDLRPCParameterName const SDLRPCParameterNameExternalTemperature;
+extern SDLRPCParameterName const SDLRPCParameterNameFanSpeed;
+extern SDLRPCParameterName const SDLRPCParameterNameFanSpeedAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameFCCFacilityId;
+extern SDLRPCParameterName const SDLRPCParameterNameFileName;
+extern SDLRPCParameterName const SDLRPCParameterNameFilenames;
+extern SDLRPCParameterName const SDLRPCParameterNameFileType;
+extern SDLRPCParameterName const SDLRPCParameterNameFirmness;
+extern SDLRPCParameterName const SDLRPCParameterNameFirmwareRevision;
+extern SDLRPCParameterName const SDLRPCParameterNameFreeModules;
+extern SDLRPCParameterName const SDLRPCParameterNameFrequencyInteger;
+extern SDLRPCParameterName const SDLRPCParameterNameFrequencyFraction;
+extern SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPositionAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameFuelCutoffStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameFuelLevel;
+extern SDLRPCParameterName const SDLRPCParameterNameFuelLevelState;
+extern SDLRPCParameterName const SDLRPCParameterNameFuelMaintenanceMode;
+extern SDLRPCParameterName const SDLRPCParameterNameFuelRange;
+extern SDLRPCParameterName const SDLRPCParameterNameFullAppID;
+extern SDLRPCParameterName const SDLRPCParameterNameFunctionID;
+extern SDLRPCParameterName const SDLRPCParameterNameGetWayPointsEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameGPS;
+extern SDLRPCParameterName const SDLRPCParameterNameGearStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameGraphic;
+extern SDLRPCParameterName const SDLRPCParameterNameGraphicSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameGreen;
+extern SDLRPCParameterName const SDLRPCParameterNameGrid;
+extern SDLRPCParameterName const SDLRPCParameterNameHandledRPCs;
+extern SDLRPCParameterName const SDLRPCParameterNameHandsOffSteering;
+extern SDLRPCParameterName const SDLRPCParameterNameHapticRectData;
+extern SDLRPCParameterName const SDLRPCParameterNameHapticSpatialDataSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameHardware;
+extern SDLRPCParameterName const SDLRPCParameterNameHashId;
+extern SDLRPCParameterName const SDLRPCParameterNameHDOP;
+extern SDLRPCParameterName const SDLRPCParameterNameHDChannel;
+extern SDLRPCParameterName const SDLRPCParameterNameHDChannelAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHDRadioEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameHDRadioEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeading;
+extern SDLRPCParameterName const SDLRPCParameterNameHeadLampStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPositionAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPositionAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatingLevel;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatingLevelAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatingEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatingEnabledAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameClimateEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameClimateEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameHeight;
+extern SDLRPCParameterName const SDLRPCParameterNameHelpPrompt;
+extern SDLRPCParameterName const SDLRPCParameterNameHighBeamsOn;
+extern SDLRPCParameterName const SDLRPCParameterNameHMICapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguage;
+extern SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguageDesired;
+extern SDLRPCParameterName const SDLRPCParameterNameHMILevel;
+extern SDLRPCParameterName const SDLRPCParameterNameHMIPermissions;
+extern SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlData;
+extern SDLRPCParameterName const SDLRPCParameterNameHMIZoneCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameHorizontalPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameHorizontalPositionAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameHour;
+extern SDLRPCParameterName const SDLRPCParameterNameHourlyForecast;
+extern SDLRPCParameterName const SDLRPCParameterNameHours;
+extern SDLRPCParameterName const SDLRPCParameterNameHumidity;
+extern SDLRPCParameterName const SDLRPCParameterNameHybridAppPreference;
+extern SDLRPCParameterName const SDLRPCParameterNameIconResumed;
+extern SDLRPCParameterName const SDLRPCParameterNameId;
+extern SDLRPCParameterName const SDLRPCParameterNameIgnitionStableStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameIgnitionStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameImage;
+extern SDLRPCParameterName const SDLRPCParameterNameImageFields;
+extern SDLRPCParameterName const SDLRPCParameterNameImageResolution;
+extern SDLRPCParameterName const SDLRPCParameterNameImageSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameImageTemplate;
+extern SDLRPCParameterName const SDLRPCParameterNameImageType;
+extern SDLRPCParameterName const SDLRPCParameterNameImageTypeSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameInfo;
+extern SDLRPCParameterName const SDLRPCParameterNameInitialPrompt;
+extern SDLRPCParameterName const SDLRPCParameterNameInitialText;
+extern SDLRPCParameterName const SDLRPCParameterNameInnerLeftRear;
+extern SDLRPCParameterName const SDLRPCParameterNameInnerRightRear;
+extern SDLRPCParameterName const SDLRPCParameterNameInstantFuelConsumption;
+extern SDLRPCParameterName const SDLRPCParameterNameInstructions;
+extern SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetId;
+extern SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetIdList;
+extern SDLRPCParameterName const SDLRPCParameterNameInteractionLayout;
+extern SDLRPCParameterName const SDLRPCParameterNameInteractionMode;
+extern SDLRPCParameterName const SDLRPCParameterNameIsExplicit;
+extern SDLRPCParameterName const SDLRPCParameterNameIsHighlighted;
+extern SDLRPCParameterName const SDLRPCParameterNameIsMediaApplication;
+extern SDLRPCParameterName const SDLRPCParameterNameIsSubscribed;
+extern SDLRPCParameterName const SDLRPCParameterNameJunctionType;
+extern SDLRPCParameterName const SDLRPCParameterNameKeepContext;
+extern SDLRPCParameterName const SDLRPCParameterNameKeepContextAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameKeyboardLayout;
+extern SDLRPCParameterName const SDLRPCParameterNameKeyboardProperties;
+extern SDLRPCParameterName const SDLRPCParameterNameKeypressMode;
+extern SDLRPCParameterName const SDLRPCParameterNameLabel;
+extern SDLRPCParameterName const SDLRPCParameterNameLanguage;
+extern SDLRPCParameterName const SDLRPCParameterNameLanguageDesired;
+extern SDLRPCParameterName const SDLRPCParameterNameLatitudeDegrees;
+extern SDLRPCParameterName const SDLRPCParameterNameLeftFront;
+extern SDLRPCParameterName const SDLRPCParameterNameLeftRear;
+extern SDLRPCParameterName const SDLRPCParameterNameLeftRearInflatableBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameLeftRow2BuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameLeftRow3BuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameLength;
+extern SDLRPCParameterName const SDLRPCParameterNameLevel;
+extern SDLRPCParameterName const SDLRPCParameterNameLevels;
+extern SDLRPCParameterName const SDLRPCParameterNameLevelSpan;
+extern SDLRPCParameterName const SDLRPCParameterNameLevelState;
+extern SDLRPCParameterName const SDLRPCParameterNameLightControlCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameLightControlData;
+extern SDLRPCParameterName const SDLRPCParameterNameLightState;
+extern SDLRPCParameterName const SDLRPCParameterNameLimitedCharacterList;
+extern SDLRPCParameterName const SDLRPCParameterNameLocality;
+extern SDLRPCParameterName const SDLRPCParameterNameLocation;
+extern SDLRPCParameterName const SDLRPCParameterNameLocationCoordinate;
+extern SDLRPCParameterName const SDLRPCParameterNameLocationDescription;
+extern SDLRPCParameterName const SDLRPCParameterNameLocationDetails;
+extern SDLRPCParameterName const SDLRPCParameterNameLocationImage;
+extern SDLRPCParameterName const SDLRPCParameterNameLocationName;
+extern SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalWarning;
+extern SDLRPCParameterName const SDLRPCParameterNameLongitudeDegrees;
+extern SDLRPCParameterName const SDLRPCParameterNameLongPress;
+extern SDLRPCParameterName const SDLRPCParameterNameLongPressAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameLowBeamsOn;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField1;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField2;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField3;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField4;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField1Type;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField2Type;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField3Type;
+extern SDLRPCParameterName const SDLRPCParameterNameMainField4Type;
+extern SDLRPCParameterName const SDLRPCParameterNameMajorVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameMake;
+extern SDLRPCParameterName const SDLRPCParameterNameManeuverComplete;
+extern SDLRPCParameterName const SDLRPCParameterNameManualTextEntry;
+extern SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmness;
+extern SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmnessAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameMassageEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameMassageEnabledAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameMassageMode;
+extern SDLRPCParameterName const SDLRPCParameterNameMassageModeAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameMassageZone;
+extern SDLRPCParameterName const SDLRPCParameterNameMaxBitrate;
+extern SDLRPCParameterName const SDLRPCParameterNameMaxDuration;
+extern SDLRPCParameterName const SDLRPCParameterNameMaxHourlyForecastAmount;
+extern SDLRPCParameterName const SDLRPCParameterNameMaximumChangeVelocity;
+extern SDLRPCParameterName const SDLRPCParameterNameMaximumNumberOfWindows;
+extern SDLRPCParameterName const SDLRPCParameterNameMaxMinutelyForecastAmount;
+extern SDLRPCParameterName const SDLRPCParameterNameMaxMultidayForecastAmount;
+extern SDLRPCParameterName const SDLRPCParameterNameMaxNumberRFCOMMPorts;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaAlbum;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaArtist;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaClock;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaClockFormats;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaServiceData;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaServiceManifest;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaTitle;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaTrack;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaImage;
+extern SDLRPCParameterName const SDLRPCParameterNameMediaType;
+extern SDLRPCParameterName const SDLRPCParameterNameMemory;
+extern SDLRPCParameterName const SDLRPCParameterNameMemoryAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuIcon;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuID;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuLayout;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuLayoutsAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuLength;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuName;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuParams;
+extern SDLRPCParameterName const SDLRPCParameterNameMenuTitle;
+extern SDLRPCParameterName const SDLRPCParameterNameMessageData;
+extern SDLRPCParameterName const SDLRPCParameterNameMessageDataResult;
+extern SDLRPCParameterName const SDLRPCParameterNameMessageLength;
+extern SDLRPCParameterName const SDLRPCParameterNameMetadataTags;
+extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BeltDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow2BuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameMiddleRow3BuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameMillisecond;
+extern SDLRPCParameterName const SDLRPCParameterNameMinorVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameMinute;
+extern SDLRPCParameterName const SDLRPCParameterNameMinuteForecast;
+extern SDLRPCParameterName const SDLRPCParameterNameMinutes;
+extern SDLRPCParameterName const SDLRPCParameterNameModel;
+extern SDLRPCParameterName const SDLRPCParameterNameModuleData;
+extern SDLRPCParameterName const SDLRPCParameterNameModuleId;
+extern SDLRPCParameterName const SDLRPCParameterNameModuleIds;
+extern SDLRPCParameterName const SDLRPCParameterNameModuleInfo;
+extern SDLRPCParameterName const SDLRPCParameterNameModuleName;
+extern SDLRPCParameterName const SDLRPCParameterNameModuleType;
+extern SDLRPCParameterName const SDLRPCParameterNameModelYear;
+extern SDLRPCParameterName const SDLRPCParameterNameMonoAudioOutputMuted;
+extern SDLRPCParameterName const SDLRPCParameterNameMonth;
+extern SDLRPCParameterName const SDLRPCParameterNameMoonPhase;
+extern SDLRPCParameterName const SDLRPCParameterNameMultidayForecast;
+extern SDLRPCParameterName const SDLRPCParameterNameMultipleEvents;
+extern SDLRPCParameterName const SDLRPCParameterNameMultiTouchAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameMuteAudio;
+extern SDLRPCParameterName const SDLRPCParameterNameMyKey;
+extern SDLRPCParameterName const SDLRPCParameterNameName;
+extern SDLRPCParameterName const SDLRPCParameterNameNavigation;
+extern SDLRPCParameterName const SDLRPCParameterNameNavigationCapability;
+extern SDLRPCParameterName const SDLRPCParameterNameNavigationServiceData;
+extern SDLRPCParameterName const SDLRPCParameterNameNavigationServiceManifest;
+extern SDLRPCParameterName const SDLRPCParameterNameNavigationText;
+extern SDLRPCParameterName const SDLRPCParameterNameNavigationText1;
+extern SDLRPCParameterName const SDLRPCParameterNameNavigationText2;
+extern SDLRPCParameterName const SDLRPCParameterNameNearestStormBearing;
+extern SDLRPCParameterName const SDLRPCParameterNameNearestStormDistance;
+extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistance;
+extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistanceScale;
+extern SDLRPCParameterName const SDLRPCParameterNameNextInstructionETA;
+extern SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon;
+extern SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName;
+extern SDLRPCParameterName const SDLRPCParameterNameNicknames;
+extern SDLRPCParameterName const SDLRPCParameterNameNightColorScheme;
+extern SDLRPCParameterName const SDLRPCParameterNameNotification;
+extern SDLRPCParameterName const SDLRPCParameterNameNumber;
+extern SDLRPCParameterName const SDLRPCParameterNameNumberCustomPresetsAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameNumberTicks;
+extern SDLRPCParameterName const SDLRPCParameterNameOdometer;
+extern SDLRPCParameterName const SDLRPCParameterNameOffset;
+extern SDLRPCParameterName const SDLRPCParameterNameOnLockScreenStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameOnScreenPresetsAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameOperationName;
+extern SDLRPCParameterName const SDLRPCParameterNameOrigin;
+extern SDLRPCParameterName const SDLRPCParameterNameOriginApp;
+extern SDLRPCParameterName const SDLRPCParameterNameOS;
+extern SDLRPCParameterName const SDLRPCParameterNameOSVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameParameterPermissions;
+extern SDLRPCParameterName const SDLRPCParameterNameParameters;
+extern SDLRPCParameterName const SDLRPCParameterNameParentID;
+extern SDLRPCParameterName const SDLRPCParameterNameParkBrakeActive;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerBeltDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerBuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerChildDetected;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerCurtainAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerDoorAjar;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerKneeAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerSideAirbagDeployed;
+extern SDLRPCParameterName const SDLRPCParameterNamePatchVersion;
+extern SDLRPCParameterName const SDLRPCParameterNamePCMStreamCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNamePDOP;
+extern SDLRPCParameterName const SDLRPCParameterNamePermissionItem;
+extern SDLRPCParameterName const SDLRPCParameterNamePersistentFile;
+extern SDLRPCParameterName const SDLRPCParameterNamePhoneCall;
+extern SDLRPCParameterName const SDLRPCParameterNamePhoneCapability;
+extern SDLRPCParameterName const SDLRPCParameterNamePhoneNumber;
+extern SDLRPCParameterName const SDLRPCParameterNamePhoneRoaming;
+extern SDLRPCParameterName const SDLRPCParameterNamePixelPerInch;
+extern SDLRPCParameterName const SDLRPCParameterNamePlaylistName;
+extern SDLRPCParameterName const SDLRPCParameterNamePlayTone;
+extern SDLRPCParameterName const SDLRPCParameterNamePosition;
+extern SDLRPCParameterName const SDLRPCParameterNamePostalCode;
+extern SDLRPCParameterName const SDLRPCParameterNamePowerModeActive;
+extern SDLRPCParameterName const SDLRPCParameterNamePowerModeQualificationStatus;
+extern SDLRPCParameterName const SDLRPCParameterNamePowerModeStatus;
+extern SDLRPCParameterName const SDLRPCParameterNamePrecipAccumulation;
+extern SDLRPCParameterName const SDLRPCParameterNamePrecipIntensity;
+extern SDLRPCParameterName const SDLRPCParameterNamePrecipProbability;
+extern SDLRPCParameterName const SDLRPCParameterNamePrecipType;
+extern SDLRPCParameterName const SDLRPCParameterNamePreferredResolution;
+extern SDLRPCParameterName const SDLRPCParameterNamePrerecordedSpeech;
+extern SDLRPCParameterName const SDLRPCParameterNamePresetBankCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNamePressAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNamePressure;
+extern SDLRPCParameterName const SDLRPCParameterNamePressureTelltale;
+extern SDLRPCParameterName const SDLRPCParameterNamePrimaryAudioSource;
+extern SDLRPCParameterName const SDLRPCParameterNamePrimaryColor;
+extern SDLRPCParameterName const SDLRPCParameterNamePRNDL;
+extern SDLRPCParameterName const SDLRPCParameterNameProgramIdentification;
+extern SDLRPCParameterName const SDLRPCParameterNameProgressIndicator;
+extern SDLRPCParameterName const SDLRPCParameterNameProperties;
+extern SDLRPCParameterName const SDLRPCParameterNameProgramService;
+extern SDLRPCParameterName const SDLRPCParameterNameProgramType;
+extern SDLRPCParameterName const SDLRPCParameterNamePrompt;
+extern SDLRPCParameterName const SDLRPCParameterNameQueueCurrentTrackNumber;
+extern SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackDuration;
+extern SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackProgress;
+extern SDLRPCParameterName const SDLRPCParameterNameQueueTotalTrackCount;
+extern SDLRPCParameterName const SDLRPCParameterNameRadioBandAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameRadioControlCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameRadioControlData;
+extern SDLRPCParameterName const SDLRPCParameterNameRadioEnable;
+extern SDLRPCParameterName const SDLRPCParameterNameRadioEnableAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameRadioFrequencyAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameRange;
+extern SDLRPCParameterName const SDLRPCParameterNameRDSData;
+extern SDLRPCParameterName const SDLRPCParameterNameRDSDataAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameRearLeftDoorAjar;
+extern SDLRPCParameterName const SDLRPCParameterNameRearRightDoorAjar;
+extern SDLRPCParameterName const SDLRPCParameterNameReason;
+extern SDLRPCParameterName const SDLRPCParameterNameRect;
+extern SDLRPCParameterName const SDLRPCParameterNameRed;
+extern SDLRPCParameterName const SDLRPCParameterNameRegion;
+extern SDLRPCParameterName const SDLRPCParameterNameRegions;
+extern SDLRPCParameterName const SDLRPCParameterNameRemoteControl;
+extern SDLRPCParameterName const SDLRPCParameterNameRemoteControlCapability;
+extern SDLRPCParameterName const SDLRPCParameterNameRequest;
+extern SDLRPCParameterName const SDLRPCParameterNameRequestServiceActive;
+extern SDLRPCParameterName const SDLRPCParameterNameRequestSubType;
+extern SDLRPCParameterName const SDLRPCParameterNameRequestType;
+extern SDLRPCParameterName const SDLRPCParameterNameRequireEncryption;
+extern SDLRPCParameterName const SDLRPCParameterNameReserved;
+extern SDLRPCParameterName const SDLRPCParameterNameResolution;
+extern SDLRPCParameterName const SDLRPCParameterNameResolutionHeight;
+extern SDLRPCParameterName const SDLRPCParameterNameResolutionWidth;
+extern SDLRPCParameterName const SDLRPCParameterNameResponse;
+extern SDLRPCParameterName const SDLRPCParameterNameResult;
+extern SDLRPCParameterName const SDLRPCParameterNameResultCode;
+extern SDLRPCParameterName const SDLRPCParameterNameRightFront;
+extern SDLRPCParameterName const SDLRPCParameterNameRightRear;
+extern SDLRPCParameterName const SDLRPCParameterNameRightRearInflatableBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameRightRow2BuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameRightRow3BuckleBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameRolloverEvent;
+extern SDLRPCParameterName const SDLRPCParameterNameRow;
+extern SDLRPCParameterName const SDLRPCParameterNameRows;
+extern SDLRPCParameterName const SDLRPCParameterNameRowSpan;
+extern SDLRPCParameterName const SDLRPCParameterNameRPCName;
+extern SDLRPCParameterName const SDLRPCParameterNameRPCSpecVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameRPM;
+extern SDLRPCParameterName const SDLRPCParameterNameRadioText;
+extern SDLRPCParameterName const SDLRPCParameterNameSamplingRate;
+extern SDLRPCParameterName const SDLRPCParameterNameSatellites;
+extern SDLRPCParameterName const SDLRPCParameterNameScale;
+extern SDLRPCParameterName const SDLRPCParameterNameScreenParams;
+extern SDLRPCParameterName const SDLRPCParameterNameScrollableMessageBody;
+extern SDLRPCParameterName const SDLRPCParameterNameSDLVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameSearchAddress;
+extern SDLRPCParameterName const SDLRPCParameterNameSeatControlData;
+extern SDLRPCParameterName const SDLRPCParameterNameSeatControlCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameSeatLocation;
+extern SDLRPCParameterName const SDLRPCParameterNameSeatLocationCapability;
+extern SDLRPCParameterName const SDLRPCParameterNameSeats;
+extern SDLRPCParameterName const SDLRPCParameterNameSecondaryColor;
+extern SDLRPCParameterName const SDLRPCParameterNameSecondaryGraphic;
+extern SDLRPCParameterName const SDLRPCParameterNameSecondaryImage;
+extern SDLRPCParameterName const SDLRPCParameterNameSecondaryText;
+extern SDLRPCParameterName const SDLRPCParameterNameSecond;
+extern SDLRPCParameterName const SDLRPCParameterNameSeconds;
+extern SDLRPCParameterName const SDLRPCParameterNameSendLocationEnabled;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceActive;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceArea;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceData;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceIcon;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceID;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceManifest;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceName;
+extern SDLRPCParameterName const SDLRPCParameterNameServicePublished;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceSpecificResult;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceType;
+extern SDLRPCParameterName const SDLRPCParameterNameServiceUri;
+extern SDLRPCParameterName const SDLRPCParameterNameSeverity;
+extern SDLRPCParameterName const SDLRPCParameterNameShifted;
+extern SDLRPCParameterName const SDLRPCParameterNameShortPress;
+extern SDLRPCParameterName const SDLRPCParameterNameShortPressAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameSignalLevelStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameSignalChangeThreshold;
+extern SDLRPCParameterName const SDLRPCParameterNameSignalChangeThresholdAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameSignalStrength;
+extern SDLRPCParameterName const SDLRPCParameterNameSignalStrengthAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameSiriusXMRadioAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameSISData;
+extern SDLRPCParameterName const SDLRPCParameterNameSISDataAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameSliderFooter;
+extern SDLRPCParameterName const SDLRPCParameterNameSliderHeader;
+extern SDLRPCParameterName const SDLRPCParameterNameSliderPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameSoftButtonCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameSoftButtonId;
+extern SDLRPCParameterName const SDLRPCParameterNameSoftButtons;
+extern SDLRPCParameterName const SDLRPCParameterNameSource;
+extern SDLRPCParameterName const SDLRPCParameterNameSourceAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameSpaceAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameSpeechCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameSpeed;
+extern SDLRPCParameterName const SDLRPCParameterNameRGBColorSpaceAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameStabilityControlsStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameStartTime;
+extern SDLRPCParameterName const SDLRPCParameterNameState;
+extern SDLRPCParameterName const SDLRPCParameterNameStateAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameStateOfCharge;
+extern SDLRPCParameterName const SDLRPCParameterNameStationIDNumber;
+extern SDLRPCParameterName const SDLRPCParameterNameStationLongName;
+extern SDLRPCParameterName const SDLRPCParameterNameStationLocation;
+extern SDLRPCParameterName const SDLRPCParameterNameStationMessage;
+extern SDLRPCParameterName const SDLRPCParameterNameStationShortName;
+extern SDLRPCParameterName const SDLRPCParameterNameStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameStatusAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameStatusBar;
+extern SDLRPCParameterName const SDLRPCParameterNameSteeringWheelAngle;
+extern SDLRPCParameterName const SDLRPCParameterNameStereoAudioOutputMuted;
+extern SDLRPCParameterName const SDLRPCParameterNameSubAdministrativeArea;
+extern SDLRPCParameterName const SDLRPCParameterNameSubLocality;
+extern SDLRPCParameterName const SDLRPCParameterNameSubMenuDepth;
+extern SDLRPCParameterName const SDLRPCParameterNameSubscribe;
+extern SDLRPCParameterName const SDLRPCParameterNameSubThoroughfare;
+extern SDLRPCParameterName const SDLRPCParameterNameSuccess;
+extern SDLRPCParameterName const SDLRPCParameterNameSummary;
+extern SDLRPCParameterName const SDLRPCParameterNameSupportedDiagnosticModes;
+extern SDLRPCParameterName const SDLRPCParameterNameSupportedDynamicImageFieldNames;
+extern SDLRPCParameterName const SDLRPCParameterNameSupportsDynamicSubMenus;
+extern SDLRPCParameterName const SDLRPCParameterNameSupportedFormats;
+extern SDLRPCParameterName const SDLRPCParameterNameSupportedLights;
+extern SDLRPCParameterName const SDLRPCParameterNameSyncFileName;
+extern SDLRPCParameterName const SDLRPCParameterNameSyncMessageVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameSystemAction;
+extern SDLRPCParameterName const SDLRPCParameterNameSystemCapability;
+extern SDLRPCParameterName const SDLRPCParameterNameSystemCapabilityType;
+extern SDLRPCParameterName const SDLRPCParameterNameSystemContext;
+extern SDLRPCParameterName const SDLRPCParameterNameSystemFile;
+extern SDLRPCParameterName const SDLRPCParameterNameSystemSoftwareVersion;
+extern SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackDuration;
+extern SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackProgress;
+extern SDLRPCParameterName const SDLRPCParameterNameTrafficAnnouncementIdentification;
+extern SDLRPCParameterName const SDLRPCParameterNameTargetId;
+extern SDLRPCParameterName const SDLRPCParameterNameTemperatureHigh;
+extern SDLRPCParameterName const SDLRPCParameterNameTemperatureLow;
+extern SDLRPCParameterName const SDLRPCParameterNameTemperatureUnit;
+extern SDLRPCParameterName const SDLRPCParameterNameTemperatureUnitAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameTemplate;
+extern SDLRPCParameterName const SDLRPCParameterNameTemplateConfiguration;
+extern SDLRPCParameterName const SDLRPCParameterNameTemplatesAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameTemplateTitle;
+extern SDLRPCParameterName const SDLRPCParameterNameTertiaryText;
+extern SDLRPCParameterName const SDLRPCParameterNameText;
+extern SDLRPCParameterName const SDLRPCParameterNameTextFields;
+extern SDLRPCParameterName const SDLRPCParameterNameTextMessageAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameTextSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameThoroughfare;
+extern SDLRPCParameterName const SDLRPCParameterNameTime;
+extern SDLRPCParameterName const SDLRPCParameterNameTimeIssued;
+extern SDLRPCParameterName const SDLRPCParameterNameTimeout;
+extern SDLRPCParameterName const SDLRPCParameterNameTimeoutCapitalized;
+extern SDLRPCParameterName const SDLRPCParameterNameTimeoutPrompt;
+extern SDLRPCParameterName const SDLRPCParameterNameTS;
+extern SDLRPCParameterName const SDLRPCParameterNameTimeStamp;
+extern SDLRPCParameterName const SDLRPCParameterNameTimeToDestination;
+extern SDLRPCParameterName const SDLRPCParameterNameTimezoneHourOffset;
+extern SDLRPCParameterName const SDLRPCParameterNameTimezoneMinuteOffset;
+extern SDLRPCParameterName const SDLRPCParameterNameTirePressure;
+extern SDLRPCParameterName const SDLRPCParameterNameTitle;
+extern SDLRPCParameterName const SDLRPCParameterNameTotalDistance;
+extern SDLRPCParameterName const SDLRPCParameterNameTouchEventAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameTPMS;
+extern SDLRPCParameterName const SDLRPCParameterNameTrafficProgramIdentification;
+extern SDLRPCParameterName const SDLRPCParameterNameTrailerSwayControl;
+extern SDLRPCParameterName const SDLRPCParameterNameTransmissionType;
+extern SDLRPCParameterName const SDLRPCParameterNameTriggerSource;
+extern SDLRPCParameterName const SDLRPCParameterNameTrim;
+extern SDLRPCParameterName const SDLRPCParameterNameTryAgainTime;
+extern SDLRPCParameterName const SDLRPCParameterNameTTSChunks;
+extern SDLRPCParameterName const SDLRPCParameterNameTTSName;
+extern SDLRPCParameterName const SDLRPCParameterNameTurnIcon;
+extern SDLRPCParameterName const SDLRPCParameterNameTurnList;
+extern SDLRPCParameterName const SDLRPCParameterNameTurnSignal;
+extern SDLRPCParameterName const SDLRPCParameterNameType;
+extern SDLRPCParameterName const SDLRPCParameterNameUnit;
+extern SDLRPCParameterName const SDLRPCParameterNameUnsubscribe;
+extern SDLRPCParameterName const SDLRPCParameterNameUpdatedAppServiceRecord;
+extern SDLRPCParameterName const SDLRPCParameterNameUpdateMode;
+extern SDLRPCParameterName const SDLRPCParameterNameUpdateReason;
+extern SDLRPCParameterName const SDLRPCParameterNameUpdateSubCells;
+extern SDLRPCParameterName const SDLRPCParameterNameUpDownAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameURL;
+extern SDLRPCParameterName const SDLRPCParameterNameURLUppercase;
+extern SDLRPCParameterName const SDLRPCParameterNameUserDisallowed;
+extern SDLRPCParameterName const SDLRPCParameterNameUserLocation;
+extern SDLRPCParameterName const SDLRPCParameterNameUserSelected;
+extern SDLRPCParameterName const SDLRPCParameterNameUserSelectedGear;
+extern SDLRPCParameterName const SDLRPCParameterNameUTCDay;
+extern SDLRPCParameterName const SDLRPCParameterNameUTCHours;
+extern SDLRPCParameterName const SDLRPCParameterNameUTCMinutes;
+extern SDLRPCParameterName const SDLRPCParameterNameUTCMonth;
+extern SDLRPCParameterName const SDLRPCParameterNameUTCSeconds;
+extern SDLRPCParameterName const SDLRPCParameterNameUTCYear;
+extern SDLRPCParameterName const SDLRPCParameterNameValue;
+extern SDLRPCParameterName const SDLRPCParameterNameVDOP;
+extern SDLRPCParameterName const SDLRPCParameterNameVehicleType;
+extern SDLRPCParameterName const SDLRPCParameterNameVerticalPosition;
+extern SDLRPCParameterName const SDLRPCParameterNameVerticalPositionAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameVideoCodec;
+extern SDLRPCParameterName const SDLRPCParameterNameVideoProtocol;
+extern SDLRPCParameterName const SDLRPCParameterNameVideoStreaming;
+extern SDLRPCParameterName const SDLRPCParameterNameVideoStreamingCapability;
+extern SDLRPCParameterName const SDLRPCParameterNameVideoStreamingState;
+extern SDLRPCParameterName const SDLRPCParameterNameVisibility;
+extern SDLRPCParameterName const SDLRPCParameterNameVentilationMode;
+extern SDLRPCParameterName const SDLRPCParameterNameVentilationModeAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameVIN;
+extern SDLRPCParameterName const SDLRPCParameterNameVoiceRecognitionOn;
+extern SDLRPCParameterName const SDLRPCParameterNameVolume;
+extern SDLRPCParameterName const SDLRPCParameterNameVolumeAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameVRCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameVRCommands;
+extern SDLRPCParameterName const SDLRPCParameterNameVRHelp;
+extern SDLRPCParameterName const SDLRPCParameterNameVRHelpTitle;
+extern SDLRPCParameterName const SDLRPCParameterNameVRSynonyms;
+extern SDLRPCParameterName const SDLRPCParameterNameWayPoints;
+extern SDLRPCParameterName const SDLRPCParameterNameWayPointType;
+extern SDLRPCParameterName const SDLRPCParameterNameWeatherForLocationSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameWeatherIcon;
+extern SDLRPCParameterName const SDLRPCParameterNameWeatherServiceData;
+extern SDLRPCParameterName const SDLRPCParameterNameWeatherServiceManifest;
+extern SDLRPCParameterName const SDLRPCParameterNameWeatherSummary;
+extern SDLRPCParameterName const SDLRPCParameterNameWidth;
+extern SDLRPCParameterName const SDLRPCParameterNameWindBearing;
+extern SDLRPCParameterName const SDLRPCParameterNameWindGust;
+extern SDLRPCParameterName const SDLRPCParameterNameWindSpeed;
+extern SDLRPCParameterName const SDLRPCParameterNameWiperStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowCapabilities;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowId;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowName;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowStatus;
+extern SDLRPCParameterName const SDLRPCParameterNameWindowTypeSupported;
+extern SDLRPCParameterName const SDLRPCParameterNameX;
+extern SDLRPCParameterName const SDLRPCParameterNameY;
+extern SDLRPCParameterName const SDLRPCParameterNameYear;
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.m b/SmartDeviceLink/private/SDLRPCParameterNames.m
new file mode 100644
index 000000000..353b4d779
--- /dev/null
+++ b/SmartDeviceLink/private/SDLRPCParameterNames.m
@@ -0,0 +1,775 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+// SDLRPCParameterNames.h
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+SDLRPCParameterName const SDLRPCParameterNameACEnable = @"acEnable";
+SDLRPCParameterName const SDLRPCParameterNameACEnableAvailable = @"acEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameACMaxEnable = @"acMaxEnable";
+SDLRPCParameterName const SDLRPCParameterNameACMaxEnableAvailable = @"acMaxEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameAccelerationPedalPosition = @"accPedalPosition";
+SDLRPCParameterName const SDLRPCParameterNameAcceptsWayPoints = @"acceptsWayPoints";
+SDLRPCParameterName const SDLRPCParameterNameAction = @"action";
+SDLRPCParameterName const SDLRPCParameterNameActual = @"actual";
+SDLRPCParameterName const SDLRPCParameterNameActualGear = @"actualGear";
+SDLRPCParameterName const SDLRPCParameterNameAddress = @"address";
+SDLRPCParameterName const SDLRPCParameterNameAddressLines = @"addressLines";
+SDLRPCParameterName const SDLRPCParameterNameAdministrativeArea = @"administrativeArea";
+SDLRPCParameterName const SDLRPCParameterNameAirbagStatus = @"airbagStatus";
+SDLRPCParameterName const SDLRPCParameterNameAlertIcon = @"alertIcon";
+SDLRPCParameterName const SDLRPCParameterNameAlerts = @"alerts";
+SDLRPCParameterName const SDLRPCParameterNameAlertText1 = @"alertText1";
+SDLRPCParameterName const SDLRPCParameterNameAlertText2 = @"alertText2";
+SDLRPCParameterName const SDLRPCParameterNameAlertText3 = @"alertText3";
+SDLRPCParameterName const SDLRPCParameterNameAlignment = @"alignment";
+SDLRPCParameterName const SDLRPCParameterNameAllowAppConsumers = @"allowAppConsumers";
+SDLRPCParameterName const SDLRPCParameterNameAllowed = @"allowed";
+SDLRPCParameterName const SDLRPCParameterNameAllowMultipleAccess = @"allowMultipleAccess";
+SDLRPCParameterName const SDLRPCParameterNameAllocatedModules = @"allocatedModules";
+SDLRPCParameterName const SDLRPCParameterNameAltitude = @"altitude";
+SDLRPCParameterName const SDLRPCParameterNameAltitudeMeters = @"altitudeMeters";
+SDLRPCParameterName const SDLRPCParameterNameAmbientLightSensorStatus = @"ambientLightSensorStatus";
+SDLRPCParameterName const SDLRPCParameterNameAmbientLightStatus = @"ambientLightStatus";
+SDLRPCParameterName const SDLRPCParameterNameApparentTemperature = @"apparentTemperature";
+SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureHigh = @"apparentTemperatureHigh";
+SDLRPCParameterName const SDLRPCParameterNameApparentTemperatureLow = @"apparentTemperatureLow";
+SDLRPCParameterName const SDLRPCParameterNameApproximatePosition = @"approximatePosition";
+SDLRPCParameterName const SDLRPCParameterNameAppBundleId = @"appBundleID";
+SDLRPCParameterName const SDLRPCParameterNameAppHMIType = @"appHMIType";
+SDLRPCParameterName const SDLRPCParameterNameAppId = @"appID";
+SDLRPCParameterName const SDLRPCParameterNameAppInfo = @"appInfo";
+SDLRPCParameterName const SDLRPCParameterNameAppName = @"appName";
+SDLRPCParameterName const SDLRPCParameterNameAppServiceId = @"appServiceId";
+SDLRPCParameterName const SDLRPCParameterNameAppServiceManifest = @"appServiceManifest";
+SDLRPCParameterName const SDLRPCParameterNameAppServiceRecord = @"appServiceRecord";
+SDLRPCParameterName const SDLRPCParameterNameAppServices = @"appServices";
+SDLRPCParameterName const SDLRPCParameterNameAppServicesCapabilities = @"appServicesCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameAppDisplayName = @"appDisplayName";
+SDLRPCParameterName const SDLRPCParameterNameAppVersion = @"appVersion";
+SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities = @"audioControlCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameAudioControlData = @"audioControlData";
+SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType = @"associatedServiceType";
+SDLRPCParameterName const SDLRPCParameterNameAudioPassThruCapabilities = @"audioPassThruCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText1 = @"audioPassThruDisplayText1";
+SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2 = @"audioPassThruDisplayText2";
+SDLRPCParameterName const SDLRPCParameterNameAudioStreamingIndicator = @"audioStreamingIndicator";
+SDLRPCParameterName const SDLRPCParameterNameAudioStreamingState = @"audioStreamingState";
+SDLRPCParameterName const SDLRPCParameterNameAudioType = @"audioType";
+SDLRPCParameterName const SDLRPCParameterNameAuthToken = @"authToken";
+SDLRPCParameterName const SDLRPCParameterNameAutoCompleteList = @"autoCompleteList";
+SDLRPCParameterName const SDLRPCParameterNameAutoCompleteText = @"autoCompleteText";
+SDLRPCParameterName const SDLRPCParameterNameAutoModeEnable = @"autoModeEnable";
+SDLRPCParameterName const SDLRPCParameterNameAutoModeEnableAvailable = @"autoModeEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameAuxECallNotificationStatus = @"auxECallNotificationStatus";
+SDLRPCParameterName const SDLRPCParameterNameAvailableHDs = @"availableHDs";
+SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannels = @"availableHDChannels";
+SDLRPCParameterName const SDLRPCParameterNameAvailableHDsAvailable = @"availableHDsAvailable";
+SDLRPCParameterName const SDLRPCParameterNameAvailableHDChannelsAvailable = @"availableHDChannelsAvailable";
+SDLRPCParameterName const SDLRPCParameterNameBackgroundColor = @"backgroundColor";
+SDLRPCParameterName const SDLRPCParameterNameBackTiltAngle = @"backTiltAngle";
+SDLRPCParameterName const SDLRPCParameterNameBackTiltAngleAvailable = @"backTiltAngleAvailable";
+SDLRPCParameterName const SDLRPCParameterNameBackVerticalPosition = @"backVerticalPosition";
+SDLRPCParameterName const SDLRPCParameterNameBackVerticalPositionAvailable = @"backVerticalPositionAvailable";
+SDLRPCParameterName const SDLRPCParameterNameBand = @"band";
+SDLRPCParameterName const SDLRPCParameterNameBatteryLevelStatus = @"battLevelStatus";
+SDLRPCParameterName const SDLRPCParameterNameBearing = @"bearing";
+SDLRPCParameterName const SDLRPCParameterNameBeltStatus = @"beltStatus";
+SDLRPCParameterName const SDLRPCParameterNameBitsPerSample = @"bitsPerSample";
+SDLRPCParameterName const SDLRPCParameterNameBodyInformation = @"bodyInformation";
+SDLRPCParameterName const SDLRPCParameterNameBlue = @"blue";
+SDLRPCParameterName const SDLRPCParameterNameBluetoothIconOn = @"btIconOn";
+SDLRPCParameterName const SDLRPCParameterNameBulkData = @"bulkData";
+SDLRPCParameterName const SDLRPCParameterNameButtonCapabilities = @"buttonCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameButtonEventMode = @"buttonEventMode";
+SDLRPCParameterName const SDLRPCParameterNameButtonName = @"buttonName";
+SDLRPCParameterName const SDLRPCParameterNameButtonPressMode = @"buttonPressMode";
+SDLRPCParameterName const SDLRPCParameterNameCancelID = @"cancelID";
+SDLRPCParameterName const SDLRPCParameterNameCapacity = @"capacity";
+SDLRPCParameterName const SDLRPCParameterNameCapacityUnit = @"capacityUnit";
+SDLRPCParameterName const SDLRPCParameterNameCoolingEnabled = @"coolingEnabled";
+SDLRPCParameterName const SDLRPCParameterNameCoolingEnabledAvailable = @"coolingEnabledAvailable";
+SDLRPCParameterName const SDLRPCParameterNameCoolingLevel = @"coolingLevel";
+SDLRPCParameterName const SDLRPCParameterNameCoolingLevelAvailable = @"coolingLevelAvailable";
+SDLRPCParameterName const SDLRPCParameterNameCoordinate = @"c";
+SDLRPCParameterName const SDLRPCParameterNameCallActive = @"callActive";
+SDLRPCParameterName const SDLRPCParameterNameCarModeStatus = @"carModeStatus";
+SDLRPCParameterName const SDLRPCParameterNameCarrier = @"carrier";
+SDLRPCParameterName const SDLRPCParameterNameChannelId = @"channelId";
+SDLRPCParameterName const SDLRPCParameterNameChannelName = @"channelName";
+SDLRPCParameterName const SDLRPCParameterNameChannelSetting = @"channelSetting";
+SDLRPCParameterName const SDLRPCParameterNameCharacterSet = @"characterSet";
+SDLRPCParameterName const SDLRPCParameterNameChoiceId = @"choiceID";
+SDLRPCParameterName const SDLRPCParameterNameChoiceSet = @"choiceSet";
+SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnable = @"circulateAirEnable";
+SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnableAvailable = @"circulateAirEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameClimateControlData = @"climateControlData";
+SDLRPCParameterName const SDLRPCParameterNameClimateControlCapabilities = @"climateControlCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameCloudCover = @"cloudCover";
+SDLRPCParameterName const SDLRPCParameterNameClusterModes = @"clusterModes";
+SDLRPCParameterName const SDLRPCParameterNameClusterModeStatus = @"clusterModeStatus";
+SDLRPCParameterName const SDLRPCParameterNameColor = @"color";
+SDLRPCParameterName const SDLRPCParameterNameCol = @"col";
+SDLRPCParameterName const SDLRPCParameterNameColSpan = @"colspan";
+SDLRPCParameterName const SDLRPCParameterNameColumns = @"columns";
+SDLRPCParameterName const SDLRPCParameterNameCommandIcon = @"cmdIcon";
+SDLRPCParameterName const SDLRPCParameterNameCommandId = @"cmdID";
+SDLRPCParameterName const SDLRPCParameterNameCompassDirection = @"compassDirection";
+SDLRPCParameterName const SDLRPCParameterNameCorrelationId = @"correlationID";
+SDLRPCParameterName const SDLRPCParameterNameCountryCode = @"countryCode";
+SDLRPCParameterName const SDLRPCParameterNameCountryName = @"countryName";
+SDLRPCParameterName const SDLRPCParameterNameCRC = @"crc";
+SDLRPCParameterName const SDLRPCParameterNameClockText = @"CT";
+SDLRPCParameterName const SDLRPCParameterNameCloudAppVehicleID = @"cloudAppVehicleID";
+SDLRPCParameterName const SDLRPCParameterNameCloudTransportType = @"cloudTransportType";
+SDLRPCParameterName const SDLRPCParameterNameCurrentForecast = @"currentForecast";
+SDLRPCParameterName const SDLRPCParameterNameCurrentForecastSupported = @"currentForecastSupported";
+SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature = @"currentTemperature";
+SDLRPCParameterName const SDLRPCParameterNameCushion = @"cushion";
+SDLRPCParameterName const SDLRPCParameterNameCustomButtonId = @"customButtonID";
+SDLRPCParameterName const SDLRPCParameterNameCustomPresets = @"customPresets";
+SDLRPCParameterName const SDLRPCParameterNameData = @"data";
+SDLRPCParameterName const SDLRPCParameterNameDataResult = @"dataResult";
+SDLRPCParameterName const SDLRPCParameterNameDataType = @"dataType";
+SDLRPCParameterName const SDLRPCParameterNameDay = @"day";
+SDLRPCParameterName const SDLRPCParameterNameDayColorScheme = @"dayColorScheme";
+SDLRPCParameterName const SDLRPCParameterNameDefrostZone = @"defrostZone";
+SDLRPCParameterName const SDLRPCParameterNameDefrostZoneAvailable = @"defrostZoneAvailable";
+SDLRPCParameterName const SDLRPCParameterNameDeliveryMode = @"deliveryMode";
+SDLRPCParameterName const SDLRPCParameterNameDensity = @"density";
+SDLRPCParameterName const SDLRPCParameterNameDensityAvailable = @"densityAvailable";
+SDLRPCParameterName const SDLRPCParameterNameDesiredTemperature = @"desiredTemperature";
+SDLRPCParameterName const SDLRPCParameterNameDesiredTemperatureAvailable = @"desiredTemperatureAvailable";
+SDLRPCParameterName const SDLRPCParameterNameDestination = @"destination";
+SDLRPCParameterName const SDLRPCParameterNameDestinationETA = @"destinationETA";
+SDLRPCParameterName const SDLRPCParameterNameDeviceInfo = @"deviceInfo";
+SDLRPCParameterName const SDLRPCParameterNameDeviceStatus = @"deviceStatus";
+SDLRPCParameterName const SDLRPCParameterNameDetails = @"details";
+SDLRPCParameterName const SDLRPCParameterNameDeviation = @"deviation";
+SDLRPCParameterName const SDLRPCParameterNameDiagonalScreenSize = @"diagonalScreenSize";
+SDLRPCParameterName const SDLRPCParameterNameDialNumberEnabled = @"dialNumberEnabled";
+SDLRPCParameterName const SDLRPCParameterNameDIDLocation = @"didLocation";
+SDLRPCParameterName const SDLRPCParameterNameDIDResult = @"didResult";
+SDLRPCParameterName const SDLRPCParameterNameDimension = @"dimension";
+SDLRPCParameterName const SDLRPCParameterNameDisplays = @"displays";
+SDLRPCParameterName const SDLRPCParameterNameDisplayCapabilities = @"displayCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameDisplayLayout = @"displayLayout";
+SDLRPCParameterName const SDLRPCParameterNameDisplayMode = @"displayMode";
+SDLRPCParameterName const SDLRPCParameterNameDisplayModeUnitAvailable = @"displayModeUnitAvailable";
+SDLRPCParameterName const SDLRPCParameterNameDisplayName = @"displayName";
+SDLRPCParameterName const SDLRPCParameterNameDisplayType = @"displayType";
+SDLRPCParameterName const SDLRPCParameterNameDistanceToEmpty = @"distanceToEmpty";
+SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuver = @"distanceToManeuver";
+SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuverScale = @"distanceToManeuverScale";
+SDLRPCParameterName const SDLRPCParameterNameDistanceUnitAvailable = @"distanceUnitAvailable";
+SDLRPCParameterName const SDLRPCParameterNameDistanceUnit = @"distanceUnit";
+SDLRPCParameterName const SDLRPCParameterNameDoublePressAvailable = @"doublePressAvailable";
+SDLRPCParameterName const SDLRPCParameterNameDriverAirbagDeployed = @"driverAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNameDriverBeltDeployed = @"driverBeltDeployed";
+SDLRPCParameterName const SDLRPCParameterNameDriverBraking = @"driverBraking";
+SDLRPCParameterName const SDLRPCParameterNameDriverBuckleBelted = @"driverBuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameDriverCurtainAirbagDeployed = @"driverCurtainAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNameDriverDistraction = @"driverDistraction";
+SDLRPCParameterName const SDLRPCParameterNameDriverDistractionCapability = @"driverDistractionCapability";
+SDLRPCParameterName const SDLRPCParameterNameDriverDistractionStatus = @"driverDistractionStatus";
+SDLRPCParameterName const SDLRPCParameterNameDriverDoorAjar = @"driverDoorAjar";
+SDLRPCParameterName const SDLRPCParameterNameDriverKneeAirbagDeployed = @"driverKneeAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNameDriverSideAirbagDeployed = @"driverSideAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNameDrivingSide = @"drivingSide";
+SDLRPCParameterName const SDLRPCParameterNameDTC = @"dtc";
+SDLRPCParameterName const SDLRPCParameterNameDTCMask = @"dtcMask";
+SDLRPCParameterName const SDLRPCParameterNameDualModeEnable = @"dualModeEnable";
+SDLRPCParameterName const SDLRPCParameterNameDualModeEnableAvailable = @"dualModeEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameDuration = @"duration";
+SDLRPCParameterName const SDLRPCParameterNameDuplicateUpdatesFromWindowID = @"duplicateUpdatesFromWindowID";
+SDLRPCParameterName const SDLRPCParameterNameDynamicUpdateCapabilities = @"dynamicUpdateCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameE911Override = @"e911Override";
+SDLRPCParameterName const SDLRPCParameterNameECallConfirmationStatus = @"eCallConfirmationStatus";
+SDLRPCParameterName const SDLRPCParameterNameECallEventActive = @"eCallEventActive";
+SDLRPCParameterName const SDLRPCParameterNameECallInfo = @"eCallInfo";
+SDLRPCParameterName const SDLRPCParameterNameECallNotificationStatus = @"eCallNotificationStatus";
+SDLRPCParameterName const SDLRPCParameterNameECUHeader = @"ecuHeader";
+SDLRPCParameterName const SDLRPCParameterNameECUName = @"ecuName";
+SDLRPCParameterName const SDLRPCParameterNameElectronicParkBrakeStatus = @"electronicParkBrakeStatus";
+SDLRPCParameterName const SDLRPCParameterNameEmergencyEvent = @"emergencyEvent";
+SDLRPCParameterName const SDLRPCParameterNameEmergencyEventType = @"emergencyEventType";
+SDLRPCParameterName const SDLRPCParameterNameEnabled = @"enabled";
+SDLRPCParameterName const SDLRPCParameterNameEndpoint = @"endpoint";
+SDLRPCParameterName const SDLRPCParameterNameEndTime = @"endTime";
+SDLRPCParameterName const SDLRPCParameterNameEngineOilLife = @"engineOilLife";
+SDLRPCParameterName const SDLRPCParameterNameEngineTorque = @"engineTorque";
+SDLRPCParameterName const SDLRPCParameterNameEqualizerAvailable = @"equalizerAvailable";
+SDLRPCParameterName const SDLRPCParameterNameEqualizerMaxChannelId = @"equalizerMaxChannelId";
+SDLRPCParameterName const SDLRPCParameterNameEqualizerSettings = @"equalizerSettings";
+SDLRPCParameterName const SDLRPCParameterNameEscSystem = @"escSystem";
+SDLRPCParameterName const SDLRPCParameterNameETA = @"eta";
+SDLRPCParameterName const SDLRPCParameterNameEvent = @"event";
+SDLRPCParameterName const SDLRPCParameterNameExpires = @"expires";
+SDLRPCParameterName const SDLRPCParameterNameExternalTemperature = @"externalTemperature";
+SDLRPCParameterName const SDLRPCParameterNameFanSpeed = @"fanSpeed";
+SDLRPCParameterName const SDLRPCParameterNameFanSpeedAvailable = @"fanSpeedAvailable";
+SDLRPCParameterName const SDLRPCParameterNameFCCFacilityId = @"fccFacilityId";
+SDLRPCParameterName const SDLRPCParameterNameFileName = @"fileName";
+SDLRPCParameterName const SDLRPCParameterNameFilenames = @"filenames";
+SDLRPCParameterName const SDLRPCParameterNameFileType = @"fileType";
+SDLRPCParameterName const SDLRPCParameterNameFirmness = @"firmness";
+SDLRPCParameterName const SDLRPCParameterNameFirmwareRevision = @"firmwareRev";
+SDLRPCParameterName const SDLRPCParameterNameFreeModules = @"freeModules";
+SDLRPCParameterName const SDLRPCParameterNameFrequencyInteger = @"frequencyInteger";
+SDLRPCParameterName const SDLRPCParameterNameFrequencyFraction = @"frequencyFraction";
+SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPosition = @"frontVerticalPosition";
+SDLRPCParameterName const SDLRPCParameterNameFrontVerticalPositionAvailable = @"frontVerticalPositionAvailable";
+SDLRPCParameterName const SDLRPCParameterNameFuelCutoffStatus = @"fuelCutoffStatus";
+SDLRPCParameterName const SDLRPCParameterNameFuelLevel = @"fuelLevel";
+SDLRPCParameterName const SDLRPCParameterNameFuelLevelState = @"fuelLevel_State";
+SDLRPCParameterName const SDLRPCParameterNameFuelMaintenanceMode = @"fuelMaintenanceMode";
+SDLRPCParameterName const SDLRPCParameterNameFuelRange = @"fuelRange";
+SDLRPCParameterName const SDLRPCParameterNameFunctionID = @"functionID";
+SDLRPCParameterName const SDLRPCParameterNameFullAppID = @"fullAppID";
+SDLRPCParameterName const SDLRPCParameterNameGearStatus = @"gearStatus";
+SDLRPCParameterName const SDLRPCParameterNameGetWayPointsEnabled = @"getWayPointsEnabled";
+SDLRPCParameterName const SDLRPCParameterNameGPS = @"gps";
+SDLRPCParameterName const SDLRPCParameterNameGraphic = @"graphic";
+SDLRPCParameterName const SDLRPCParameterNameGraphicSupported = @"graphicSupported";
+SDLRPCParameterName const SDLRPCParameterNameGreen = @"green";
+SDLRPCParameterName const SDLRPCParameterNameGrid = @"grid";
+SDLRPCParameterName const SDLRPCParameterNameHandledRPCs = @"handledRPCs";
+SDLRPCParameterName const SDLRPCParameterNameHandsOffSteering = @"handsOffSteering";
+SDLRPCParameterName const SDLRPCParameterNameHapticRectData = @"hapticRectData";
+SDLRPCParameterName const SDLRPCParameterNameHapticSpatialDataSupported = @"hapticSpatialDataSupported";
+SDLRPCParameterName const SDLRPCParameterNameHardware = @"hardware";
+SDLRPCParameterName const SDLRPCParameterNameHashId = @"hashID";
+SDLRPCParameterName const SDLRPCParameterNameHDChannel = @"hdChannel";
+SDLRPCParameterName const SDLRPCParameterNameHDChannelAvailable = @"hdChannelAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHDOP = @"hdop";
+SDLRPCParameterName const SDLRPCParameterNameHDRadioEnable = @"hdRadioEnable";
+SDLRPCParameterName const SDLRPCParameterNameHDRadioEnableAvailable = @"hdRadioEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeading = @"heading";
+SDLRPCParameterName const SDLRPCParameterNameHeadLampStatus = @"headLampStatus";
+SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPosition = @"headSupportHorizontalPosition";
+SDLRPCParameterName const SDLRPCParameterNameHeadSupportHorizontalPositionAvailable = @"headSupportHorizontalPositionAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPosition = @"headSupportVerticalPosition";
+SDLRPCParameterName const SDLRPCParameterNameHeadSupportVerticalPositionAvailable = @"headSupportVerticalPositionAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeatingLevel = @"heatingLevel";
+SDLRPCParameterName const SDLRPCParameterNameHeatingLevelAvailable = @"heatingLevelAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeatingEnabled = @"heatingEnabled";
+SDLRPCParameterName const SDLRPCParameterNameHeatingEnabledAvailable = @"heatingEnabledAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelAvailable = @"heatedSteeringWheelAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldAvailable = @"heatedWindshieldAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowAvailable = @"heatedRearWindowAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsAvailable = @"heatedMirrorsAvailable";
+SDLRPCParameterName const SDLRPCParameterNameClimateEnable = @"climateEnable";
+SDLRPCParameterName const SDLRPCParameterNameClimateEnableAvailable = @"climateEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedSteeringWheelEnable = @"heatedSteeringWheelEnable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedWindshieldEnable = @"heatedWindshieldEnable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedRearWindowEnable = @"heatedRearWindowEnable";
+SDLRPCParameterName const SDLRPCParameterNameHeatedMirrorsEnable = @"heatedMirrorsEnable";
+SDLRPCParameterName const SDLRPCParameterNameHeight = @"height";
+SDLRPCParameterName const SDLRPCParameterNameHelpPrompt = @"helpPrompt";
+SDLRPCParameterName const SDLRPCParameterNameHighBeamsOn = @"highBeamsOn";
+SDLRPCParameterName const SDLRPCParameterNameHMICapabilities = @"hmiCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlData = @"hmiSettingsControlData";
+SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguage = @"hmiDisplayLanguage";
+SDLRPCParameterName const SDLRPCParameterNameHMIDisplayLanguageDesired = @"hmiDisplayLanguageDesired";
+SDLRPCParameterName const SDLRPCParameterNameHMILevel = @"hmiLevel";
+SDLRPCParameterName const SDLRPCParameterNameHMILevelLowercase = @"hmilevel";
+SDLRPCParameterName const SDLRPCParameterNameHMIPermissions = @"hmiPermissions";
+SDLRPCParameterName const SDLRPCParameterNameHmiSettingsControlCapabilities = @"hmiSettingsControlCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameHMIZoneCapabilities = @"hmiZoneCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameHorizontalPosition = @"horizontalPosition";
+SDLRPCParameterName const SDLRPCParameterNameHorizontalPositionAvailable = @"horizontalPositionAvailable";
+SDLRPCParameterName const SDLRPCParameterNameHour = @"hour";
+SDLRPCParameterName const SDLRPCParameterNameHourlyForecast = @"hourlyForecast";
+SDLRPCParameterName const SDLRPCParameterNameHours = @"hours";
+SDLRPCParameterName const SDLRPCParameterNameHumidity = @"humidity";
+SDLRPCParameterName const SDLRPCParameterNameHybridAppPreference = @"hybridAppPreference";
+SDLRPCParameterName const SDLRPCParameterNameIconResumed = @"iconResumed";
+SDLRPCParameterName const SDLRPCParameterNameId = @"id";
+SDLRPCParameterName const SDLRPCParameterNameIgnitionStableStatus = @"ignitionStableStatus";
+SDLRPCParameterName const SDLRPCParameterNameIgnitionStatus = @"ignitionStatus";
+SDLRPCParameterName const SDLRPCParameterNameImage = @"image";
+SDLRPCParameterName const SDLRPCParameterNameImageFields = @"imageFields";
+SDLRPCParameterName const SDLRPCParameterNameImageResolution = @"imageResolution";
+SDLRPCParameterName const SDLRPCParameterNameImageSupported = @"imageSupported";
+SDLRPCParameterName const SDLRPCParameterNameImageTemplate = @"isTemplate";
+SDLRPCParameterName const SDLRPCParameterNameImageType = @"imageType";
+SDLRPCParameterName const SDLRPCParameterNameImageTypeSupported = @"imageTypeSupported";
+SDLRPCParameterName const SDLRPCParameterNameInfo = @"info";
+SDLRPCParameterName const SDLRPCParameterNameInitialPrompt = @"initialPrompt";
+SDLRPCParameterName const SDLRPCParameterNameInitialText = @"initialText";
+SDLRPCParameterName const SDLRPCParameterNameInnerLeftRear = @"innerLeftRear";
+SDLRPCParameterName const SDLRPCParameterNameInnerRightRear = @"innerRightRear";
+SDLRPCParameterName const SDLRPCParameterNameInstantFuelConsumption = @"instantFuelConsumption";
+SDLRPCParameterName const SDLRPCParameterNameInstructions = @"instructions";
+SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetId = @"interactionChoiceSetID";
+SDLRPCParameterName const SDLRPCParameterNameInteractionChoiceSetIdList = @"interactionChoiceSetIDList";
+SDLRPCParameterName const SDLRPCParameterNameInteractionLayout = @"interactionLayout";
+SDLRPCParameterName const SDLRPCParameterNameInteractionMode = @"interactionMode";
+SDLRPCParameterName const SDLRPCParameterNameIsExplicit = @"isExplicit";
+SDLRPCParameterName const SDLRPCParameterNameIsHighlighted = @"isHighlighted";
+SDLRPCParameterName const SDLRPCParameterNameIsMediaApplication = @"isMediaApplication";
+SDLRPCParameterName const SDLRPCParameterNameIsSubscribed = @"isSubscribed";
+SDLRPCParameterName const SDLRPCParameterNameJunctionType = @"junctionType";
+SDLRPCParameterName const SDLRPCParameterNameKeepContext = @"keepContext";
+SDLRPCParameterName const SDLRPCParameterNameKeepContextAvailable = @"keepContextAvailable";
+SDLRPCParameterName const SDLRPCParameterNameKeyboardLayout = @"keyboardLayout";
+SDLRPCParameterName const SDLRPCParameterNameKeyboardProperties = @"keyboardProperties";
+SDLRPCParameterName const SDLRPCParameterNameKeypressMode = @"keypressMode";
+SDLRPCParameterName const SDLRPCParameterNameLabel = @"label";
+SDLRPCParameterName const SDLRPCParameterNameLanguage = @"language";
+SDLRPCParameterName const SDLRPCParameterNameLanguageDesired = @"languageDesired";
+SDLRPCParameterName const SDLRPCParameterNameLatitudeDegrees = @"latitudeDegrees";
+SDLRPCParameterName const SDLRPCParameterNameLeftFront = @"leftFront";
+SDLRPCParameterName const SDLRPCParameterNameLeftRear = @"leftRear";
+SDLRPCParameterName const SDLRPCParameterNameLeftRearInflatableBelted = @"leftRearInflatableBelted";
+SDLRPCParameterName const SDLRPCParameterNameLeftRow2BuckleBelted = @"leftRow2BuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameLeftRow3BuckleBelted = @"leftRow3BuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameLength = @"length";
+SDLRPCParameterName const SDLRPCParameterNameLevel = @"level";
+SDLRPCParameterName const SDLRPCParameterNameLevels = @"levels";
+SDLRPCParameterName const SDLRPCParameterNameLevelSpan = @"levelspan";
+SDLRPCParameterName const SDLRPCParameterNameLevelState = @"levelState";
+SDLRPCParameterName const SDLRPCParameterNameLightControlCapabilities = @"lightControlCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameLightControlData = @"lightControlData";
+SDLRPCParameterName const SDLRPCParameterNameLightState = @"lightState";
+SDLRPCParameterName const SDLRPCParameterNameLimitedCharacterList = @"limitedCharacterList";
+SDLRPCParameterName const SDLRPCParameterNameLocality = @"locality";
+SDLRPCParameterName const SDLRPCParameterNameLocation = @"location";
+SDLRPCParameterName const SDLRPCParameterNameLocationCoordinate = @"coordinate";
+SDLRPCParameterName const SDLRPCParameterNameLocationDescription = @"locationDescription";
+SDLRPCParameterName const SDLRPCParameterNameLocationDetails = @"locationDetails";
+SDLRPCParameterName const SDLRPCParameterNameLocationImage = @"locationImage";
+SDLRPCParameterName const SDLRPCParameterNameLocationName = @"locationName";
+SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalEnabled = @"lockScreenDismissalEnabled";
+SDLRPCParameterName const SDLRPCParameterNameLockScreenDismissalWarning = @"lockScreenDismissalWarning";
+SDLRPCParameterName const SDLRPCParameterNameLongitudeDegrees = @"longitudeDegrees";
+SDLRPCParameterName const SDLRPCParameterNameLongPress = @"longPress";
+SDLRPCParameterName const SDLRPCParameterNameLongPressAvailable = @"longPressAvailable";
+SDLRPCParameterName const SDLRPCParameterNameLowBeamsOn = @"lowBeamsOn";
+SDLRPCParameterName const SDLRPCParameterNameMainField1 = @"mainField1";
+SDLRPCParameterName const SDLRPCParameterNameMainField2 = @"mainField2";
+SDLRPCParameterName const SDLRPCParameterNameMainField3 = @"mainField3";
+SDLRPCParameterName const SDLRPCParameterNameMainField4 = @"mainField4";
+SDLRPCParameterName const SDLRPCParameterNameMajorVersion = @"majorVersion";
+SDLRPCParameterName const SDLRPCParameterNameMake = @"make";
+SDLRPCParameterName const SDLRPCParameterNameManeuverComplete = @"maneuverComplete";
+SDLRPCParameterName const SDLRPCParameterNameManualTextEntry = @"manualTextEntry";
+SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmness = @"massageCushionFirmness";
+SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmnessAvailable = @"massageCushionFirmnessAvailable";
+SDLRPCParameterName const SDLRPCParameterNameMassageEnabled = @"massageEnabled";
+SDLRPCParameterName const SDLRPCParameterNameMassageEnabledAvailable = @"massageEnabledAvailable";
+SDLRPCParameterName const SDLRPCParameterNameMassageMode = @"massageMode";
+SDLRPCParameterName const SDLRPCParameterNameMassageModeAvailable = @"massageModeAvailable";
+SDLRPCParameterName const SDLRPCParameterNameMassageZone = @"massageZone";
+SDLRPCParameterName const SDLRPCParameterNameMaxBitrate = @"maxBitrate";
+SDLRPCParameterName const SDLRPCParameterNameMaxDuration = @"maxDuration";
+SDLRPCParameterName const SDLRPCParameterNameMaxHourlyForecastAmount = @"maxHourlyForecastAmount";
+SDLRPCParameterName const SDLRPCParameterNameMaximumChangeVelocity = @"maximumChangeVelocity";
+SDLRPCParameterName const SDLRPCParameterNameMaximumNumberOfWindows = @"maximumNumberOfWindows";
+SDLRPCParameterName const SDLRPCParameterNameMaxMinutelyForecastAmount = @"maxMinutelyForecastAmount";
+SDLRPCParameterName const SDLRPCParameterNameMaxMultidayForecastAmount = @"maxMultidayForecastAmount";
+SDLRPCParameterName const SDLRPCParameterNameMaxNumberRFCOMMPorts = @"maxNumberRFCOMMPorts";
+SDLRPCParameterName const SDLRPCParameterNameMediaAlbum = @"mediaAlbum";
+SDLRPCParameterName const SDLRPCParameterNameMediaArtist = @"mediaArtist";
+SDLRPCParameterName const SDLRPCParameterNameMediaClock = @"mediaClock";
+SDLRPCParameterName const SDLRPCParameterNameMediaClockFormats = @"mediaClockFormats";
+SDLRPCParameterName const SDLRPCParameterNameMediaServiceData = @"mediaServiceData";
+SDLRPCParameterName const SDLRPCParameterNameMediaServiceManifest = @"mediaServiceManifest";
+SDLRPCParameterName const SDLRPCParameterNameMediaImage = @"mediaImage";
+SDLRPCParameterName const SDLRPCParameterNameMediaTitle = @"mediaTitle";
+SDLRPCParameterName const SDLRPCParameterNameMediaTrack = @"mediaTrack";
+SDLRPCParameterName const SDLRPCParameterNameMediaType = @"mediaType";
+SDLRPCParameterName const SDLRPCParameterNameMemory = @"memory";
+SDLRPCParameterName const SDLRPCParameterNameMemoryAvailable = @"memoryAvailable";
+SDLRPCParameterName const SDLRPCParameterNameMenuIcon = @"menuIcon";
+SDLRPCParameterName const SDLRPCParameterNameMenuID = @"menuID";
+SDLRPCParameterName const SDLRPCParameterNameMenuLayout = @"menuLayout";
+SDLRPCParameterName const SDLRPCParameterNameMenuLayoutsAvailable = @"menuLayoutsAvailable";
+SDLRPCParameterName const SDLRPCParameterNameMenuLength = @"menuLength";
+SDLRPCParameterName const SDLRPCParameterNameMenuName = @"menuName";
+SDLRPCParameterName const SDLRPCParameterNameMenuParams = @"menuParams";
+SDLRPCParameterName const SDLRPCParameterNameMenuTitle = @"menuTitle";
+SDLRPCParameterName const SDLRPCParameterNameMessageData = @"messageData";
+SDLRPCParameterName const SDLRPCParameterNameMessageDataResult = @"messageDataResult";
+SDLRPCParameterName const SDLRPCParameterNameMessageLength = @"messageLength";
+SDLRPCParameterName const SDLRPCParameterNameMetadataTags = @"metadataTags";
+SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BeltDeployed = @"middleRow1BeltDeployed";
+SDLRPCParameterName const SDLRPCParameterNameMiddleRow1BuckleBelted = @"middleRow1BuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameMiddleRow2BuckleBelted = @"middleRow2BuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameMiddleRow3BuckleBelted = @"middleRow3BuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameMillisecond = @"millisecond";
+SDLRPCParameterName const SDLRPCParameterNameMinorVersion = @"minorVersion";
+SDLRPCParameterName const SDLRPCParameterNameMinute = @"minute";
+SDLRPCParameterName const SDLRPCParameterNameMinuteForecast = @"minuteForecast";
+SDLRPCParameterName const SDLRPCParameterNameMinutes = @"minutes";
+SDLRPCParameterName const SDLRPCParameterNameModel = @"model";
+SDLRPCParameterName const SDLRPCParameterNameModuleData = @"moduleData";
+SDLRPCParameterName const SDLRPCParameterNameModuleId = @"moduleId";
+SDLRPCParameterName const SDLRPCParameterNameModuleIds = @"moduleIds";
+SDLRPCParameterName const SDLRPCParameterNameModuleInfo = @"moduleInfo";
+SDLRPCParameterName const SDLRPCParameterNameModuleName = @"moduleName";
+SDLRPCParameterName const SDLRPCParameterNameModuleType = @"moduleType";
+SDLRPCParameterName const SDLRPCParameterNameModelYear = @"modelYear";
+SDLRPCParameterName const SDLRPCParameterNameMonoAudioOutputMuted = @"monoAudioOutputMuted";
+SDLRPCParameterName const SDLRPCParameterNameMonth = @"month";
+SDLRPCParameterName const SDLRPCParameterNameMoonPhase = @"moonPhase";
+SDLRPCParameterName const SDLRPCParameterNameMultidayForecast = @"multidayForecast";
+SDLRPCParameterName const SDLRPCParameterNameMultipleEvents = @"multipleEvents";
+SDLRPCParameterName const SDLRPCParameterNameMultiTouchAvailable = @"multiTouchAvailable";
+SDLRPCParameterName const SDLRPCParameterNameMuteAudio = @"muteAudio";
+SDLRPCParameterName const SDLRPCParameterNameMyKey = @"myKey";
+SDLRPCParameterName const SDLRPCParameterNameName = @"name";
+SDLRPCParameterName const SDLRPCParameterNameNavigation = @"navigation";
+SDLRPCParameterName const SDLRPCParameterNameNavigationCapability = @"navigationCapability";
+SDLRPCParameterName const SDLRPCParameterNameNavigationServiceData = @"navigationServiceData";
+SDLRPCParameterName const SDLRPCParameterNameNavigationServiceManifest = @"navigationServiceManifest";
+SDLRPCParameterName const SDLRPCParameterNameNavigationText = @"navigationText";
+SDLRPCParameterName const SDLRPCParameterNameNavigationText1 = @"navigationText1";
+SDLRPCParameterName const SDLRPCParameterNameNavigationText2 = @"navigationText2";
+SDLRPCParameterName const SDLRPCParameterNameNearestStormBearing = @"nearestStormBearing";
+SDLRPCParameterName const SDLRPCParameterNameNearestStormDistance = @"nearestStormDistance";
+SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistance = @"nextInstructionDistance";
+SDLRPCParameterName const SDLRPCParameterNameNextInstructionDistanceScale = @"nextInstructionDistanceScale";
+SDLRPCParameterName const SDLRPCParameterNameNextInstructionETA = @"nextInstructionETA";
+SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon = @"nextTurnIcon";
+SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName = @"ngnMediaScreenAppName";
+SDLRPCParameterName const SDLRPCParameterNameNicknames = @"nicknames";
+SDLRPCParameterName const SDLRPCParameterNameNightColorScheme = @"nightColorScheme";
+SDLRPCParameterName const SDLRPCParameterNameNotification = @"notification";
+SDLRPCParameterName const SDLRPCParameterNameNumber = @"number";
+SDLRPCParameterName const SDLRPCParameterNameNumberCustomPresetsAvailable = @"numCustomPresetsAvailable";
+SDLRPCParameterName const SDLRPCParameterNameNumberTicks = @"numTicks";
+SDLRPCParameterName const SDLRPCParameterNameOdometer = @"odometer";
+SDLRPCParameterName const SDLRPCParameterNameOEMCustomDataType = @"oemCustomDataType";
+SDLRPCParameterName const SDLRPCParameterNameOffset = @"offset";
+SDLRPCParameterName const SDLRPCParameterNameOnLockScreenStatus = @"OnLockScreenStatus";
+SDLRPCParameterName const SDLRPCParameterNameOnScreenPresetsAvailable = @"onScreenPresetsAvailable";
+SDLRPCParameterName const SDLRPCParameterNameOperationName = @"name";
+SDLRPCParameterName const SDLRPCParameterNameOrigin = @"origin";
+SDLRPCParameterName const SDLRPCParameterNameOriginApp = @"originApp";
+SDLRPCParameterName const SDLRPCParameterNameOS = @"os";
+SDLRPCParameterName const SDLRPCParameterNameOSVersion = @"osVersion";
+SDLRPCParameterName const SDLRPCParameterNameParameterPermissions = @"parameterPermissions";
+SDLRPCParameterName const SDLRPCParameterNameParameters = @"parameters";
+SDLRPCParameterName const SDLRPCParameterNameParentID = @"parentID";
+SDLRPCParameterName const SDLRPCParameterNameParkBrakeActive = @"parkBrakeActive";
+SDLRPCParameterName const SDLRPCParameterNamePassengerAirbagDeployed = @"passengerAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNamePassengerBeltDeployed = @"passengerBeltDeployed";
+SDLRPCParameterName const SDLRPCParameterNamePassengerBuckleBelted = @"passengerBuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNamePassengerChildDetected = @"passengerChildDetected";
+SDLRPCParameterName const SDLRPCParameterNamePassengerCurtainAirbagDeployed = @"passengerCurtainAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNamePassengerDoorAjar = @"passengerDoorAjar";
+SDLRPCParameterName const SDLRPCParameterNamePassengerKneeAirbagDeployed = @"passengerKneeAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNamePassengerSideAirbagDeployed = @"passengerSideAirbagDeployed";
+SDLRPCParameterName const SDLRPCParameterNamePatchVersion = @"patchVersion";
+SDLRPCParameterName const SDLRPCParameterNamePCMStreamCapabilities = @"pcmStreamCapabilities";
+SDLRPCParameterName const SDLRPCParameterNamePDOP = @"pdop";
+SDLRPCParameterName const SDLRPCParameterNamePermissionItem = @"permissionItem";
+SDLRPCParameterName const SDLRPCParameterNamePersistentFile = @"persistentFile";
+SDLRPCParameterName const SDLRPCParameterNamePhoneCall = @"phoneCall";
+SDLRPCParameterName const SDLRPCParameterNamePhoneCapability = @"phoneCapability";
+SDLRPCParameterName const SDLRPCParameterNamePhoneNumber = @"phoneNumber";
+SDLRPCParameterName const SDLRPCParameterNamePhoneRoaming = @"phoneRoaming";
+SDLRPCParameterName const SDLRPCParameterNamePixelPerInch = @"pixelPerInch";
+SDLRPCParameterName const SDLRPCParameterNamePrimaryColor = @"primaryColor";
+SDLRPCParameterName const SDLRPCParameterNamePlaylistName = @"playlistName";
+SDLRPCParameterName const SDLRPCParameterNamePlayTone = @"playTone";
+SDLRPCParameterName const SDLRPCParameterNamePosition = @"position";
+SDLRPCParameterName const SDLRPCParameterNamePostalCode = @"postalCode";
+SDLRPCParameterName const SDLRPCParameterNamePrecipAccumulation = @"precipAccumulation";
+SDLRPCParameterName const SDLRPCParameterNamePrecipIntensity = @"precipIntensity";
+SDLRPCParameterName const SDLRPCParameterNamePrecipProbability = @"precipProbability";
+SDLRPCParameterName const SDLRPCParameterNamePrecipType = @"precipType";
+SDLRPCParameterName const SDLRPCParameterNamePowerModeActive = @"powerModeActive";
+SDLRPCParameterName const SDLRPCParameterNamePowerModeQualificationStatus = @"powerModeQualificationStatus";
+SDLRPCParameterName const SDLRPCParameterNamePowerModeStatus = @"powerModeStatus";
+SDLRPCParameterName const SDLRPCParameterNamePreferredResolution = @"preferredResolution";
+SDLRPCParameterName const SDLRPCParameterNamePrerecordedSpeech = @"prerecordedSpeech";
+SDLRPCParameterName const SDLRPCParameterNamePresetBankCapabilities = @"presetBankCapabilities";
+SDLRPCParameterName const SDLRPCParameterNamePressAvailable = @"pressAvailable";
+SDLRPCParameterName const SDLRPCParameterNamePressure = @"pressure";
+SDLRPCParameterName const SDLRPCParameterNamePressureTelltale = @"pressureTelltale";
+SDLRPCParameterName const SDLRPCParameterNamePrimaryAudioSource = @"primaryAudioSource";
+SDLRPCParameterName const SDLRPCParameterNamePRNDL = @"prndl";
+SDLRPCParameterName const SDLRPCParameterNameProgramIdentification = @"PI";
+SDLRPCParameterName const SDLRPCParameterNameProgressIndicator = @"progressIndicator";
+SDLRPCParameterName const SDLRPCParameterNameProperties = @"properties";
+SDLRPCParameterName const SDLRPCParameterNameProgramService = @"PS";
+SDLRPCParameterName const SDLRPCParameterNameProgramType = @"PTY";
+SDLRPCParameterName const SDLRPCParameterNamePrompt = @"prompt";
+SDLRPCParameterName const SDLRPCParameterNameQueueCurrentTrackNumber = @"queueCurrentTrackNumber";
+SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackDuration = @"queuePlaybackDuration";
+SDLRPCParameterName const SDLRPCParameterNameQueuePlaybackProgress = @"queuePlaybackProgress";
+SDLRPCParameterName const SDLRPCParameterNameQueueTotalTrackCount = @"queueTotalTrackCount";
+SDLRPCParameterName const SDLRPCParameterNameRadioBandAvailable = @"radioBandAvailable";
+SDLRPCParameterName const SDLRPCParameterNameRadioControlCapabilities = @"radioControlCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameRadioFrequencyAvailable = @"radioFrequencyAvailable";
+SDLRPCParameterName const SDLRPCParameterNameRadioControlData = @"radioControlData";
+SDLRPCParameterName const SDLRPCParameterNameRadioEnable = @"radioEnable";
+SDLRPCParameterName const SDLRPCParameterNameRadioEnableAvailable = @"radioEnableAvailable";
+SDLRPCParameterName const SDLRPCParameterNameRange = @"range";
+SDLRPCParameterName const SDLRPCParameterNameRDSData = @"rdsData";
+SDLRPCParameterName const SDLRPCParameterNameRDSDataAvailable = @"rdsDataAvailable";
+SDLRPCParameterName const SDLRPCParameterNameRearLeftDoorAjar = @"rearLeftDoorAjar";
+SDLRPCParameterName const SDLRPCParameterNameRearRightDoorAjar = @"rearRightDoorAjar";
+SDLRPCParameterName const SDLRPCParameterNameReason = @"reason";
+SDLRPCParameterName const SDLRPCParameterNameRed = @"red";
+SDLRPCParameterName const SDLRPCParameterNameRect = @"rect";
+SDLRPCParameterName const SDLRPCParameterNameRegion = @"REG";
+SDLRPCParameterName const SDLRPCParameterNameRegions = @"regions";
+SDLRPCParameterName const SDLRPCParameterNameRemoteControl = @"remoteControl";
+SDLRPCParameterName const SDLRPCParameterNameRemoteControlCapability = @"remoteControlCapability";
+SDLRPCParameterName const SDLRPCParameterNameRequest = @"request";
+SDLRPCParameterName const SDLRPCParameterNameRequestServiceActive = @"requestServiceActive";
+SDLRPCParameterName const SDLRPCParameterNameRequestSubType = @"requestSubType";
+SDLRPCParameterName const SDLRPCParameterNameRequestType = @"requestType";
+SDLRPCParameterName const SDLRPCParameterNameRequireEncryption = @"requireEncryption";
+SDLRPCParameterName const SDLRPCParameterNameReserved = @"reserved";
+SDLRPCParameterName const SDLRPCParameterNameSecondaryColor = @"secondaryColor";
+SDLRPCParameterName const SDLRPCParameterNameResolution = @"resolution";
+SDLRPCParameterName const SDLRPCParameterNameResolutionHeight = @"resolutionHeight";
+SDLRPCParameterName const SDLRPCParameterNameResolutionWidth = @"resolutionWidth";
+SDLRPCParameterName const SDLRPCParameterNameResponse = @"response";
+SDLRPCParameterName const SDLRPCParameterNameResult = @"result";
+SDLRPCParameterName const SDLRPCParameterNameResultCode = @"resultCode";
+SDLRPCParameterName const SDLRPCParameterNameRightFront = @"rightFront";
+SDLRPCParameterName const SDLRPCParameterNameRightRear = @"rightRear";
+SDLRPCParameterName const SDLRPCParameterNameRightRearInflatableBelted = @"rightRearInflatableBelted";
+SDLRPCParameterName const SDLRPCParameterNameRightRow2BuckleBelted = @"rightRow2BuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameRightRow3BuckleBelted = @"rightRow3BuckleBelted";
+SDLRPCParameterName const SDLRPCParameterNameRolloverEvent = @"rolloverEvent";
+SDLRPCParameterName const SDLRPCParameterNameRow = @"row";
+SDLRPCParameterName const SDLRPCParameterNameRows = @"rows";
+SDLRPCParameterName const SDLRPCParameterNameRowSpan = @"rowspan";
+SDLRPCParameterName const SDLRPCParameterNameRPCName = @"rpcName";
+SDLRPCParameterName const SDLRPCParameterNameRPCSpecVersion = @"rpcSpecVersion";
+SDLRPCParameterName const SDLRPCParameterNameRPM = @"rpm";
+SDLRPCParameterName const SDLRPCParameterNameRadioText = @"RT";
+SDLRPCParameterName const SDLRPCParameterNameSamplingRate = @"samplingRate";
+SDLRPCParameterName const SDLRPCParameterNameSatellites = @"satellites";
+SDLRPCParameterName const SDLRPCParameterNameScale = @"scale";
+SDLRPCParameterName const SDLRPCParameterNameScreenParams = @"screenParams";
+SDLRPCParameterName const SDLRPCParameterNameScrollableMessageBody = @"scrollableMessageBody";
+SDLRPCParameterName const SDLRPCParameterNameSDLVersion = @"sdlVersion";
+SDLRPCParameterName const SDLRPCParameterNameSearchAddress = @"searchAddress";
+SDLRPCParameterName const SDLRPCParameterNameSeatControlData = @"seatControlData";
+SDLRPCParameterName const SDLRPCParameterNameSeatControlCapabilities = @"seatControlCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameSeatLocation = @"seatLocation";
+SDLRPCParameterName const SDLRPCParameterNameSeatLocationCapability = @"seatLocationCapability";
+SDLRPCParameterName const SDLRPCParameterNameSeats = @"seats";
+SDLRPCParameterName const SDLRPCParameterNameSecondaryGraphic = @"secondaryGraphic";
+SDLRPCParameterName const SDLRPCParameterNameSecondaryImage = @"secondaryImage";
+SDLRPCParameterName const SDLRPCParameterNameSecondaryText = @"secondaryText";
+SDLRPCParameterName const SDLRPCParameterNameSecond = @"second";
+SDLRPCParameterName const SDLRPCParameterNameSeconds = @"seconds";
+SDLRPCParameterName const SDLRPCParameterNameSendLocationEnabled = @"sendLocationEnabled";
+SDLRPCParameterName const SDLRPCParameterNameServiceActive = @"serviceActive";
+SDLRPCParameterName const SDLRPCParameterNameServiceArea = @"serviceArea";
+SDLRPCParameterName const SDLRPCParameterNameServiceData = @"serviceData";
+SDLRPCParameterName const SDLRPCParameterNameServiceIcon = @"serviceIcon";
+SDLRPCParameterName const SDLRPCParameterNameServiceID = @"serviceID";
+SDLRPCParameterName const SDLRPCParameterNameServiceManifest = @"serviceManifest";
+SDLRPCParameterName const SDLRPCParameterNameServiceName = @"serviceName";
+SDLRPCParameterName const SDLRPCParameterNameServicePublished = @"servicePublished";
+SDLRPCParameterName const SDLRPCParameterNameServiceSpecificResult = @"serviceSpecificResult";
+SDLRPCParameterName const SDLRPCParameterNameServiceType = @"serviceType";
+SDLRPCParameterName const SDLRPCParameterNameServiceUri = @"serviceUri";
+SDLRPCParameterName const SDLRPCParameterNameSeverity = @"severity";
+SDLRPCParameterName const SDLRPCParameterNameShifted = @"shifted";
+SDLRPCParameterName const SDLRPCParameterNameShortPress = @"shortPress";
+SDLRPCParameterName const SDLRPCParameterNameShortPressAvailable = @"shortPressAvailable";
+SDLRPCParameterName const SDLRPCParameterNameSignalLevelStatus = @"signalLevelStatus";
+SDLRPCParameterName const SDLRPCParameterNameSignalChangeThreshold = @"signalChangeThreshold";
+SDLRPCParameterName const SDLRPCParameterNameSignalChangeThresholdAvailable = @"signalChangeThresholdAvailable";
+SDLRPCParameterName const SDLRPCParameterNameSignalStrength = @"signalStrength";
+SDLRPCParameterName const SDLRPCParameterNameSignalStrengthAvailable = @"signalStrengthAvailable";
+SDLRPCParameterName const SDLRPCParameterNameSiriusXMRadioAvailable = @"siriusxmRadioAvailable";
+SDLRPCParameterName const SDLRPCParameterNameSISData = @"sisData";
+SDLRPCParameterName const SDLRPCParameterNameSISDataAvailable = @"sisDataAvailable";
+SDLRPCParameterName const SDLRPCParameterNameSliderFooter = @"sliderFooter";
+SDLRPCParameterName const SDLRPCParameterNameSliderHeader = @"sliderHeader";
+SDLRPCParameterName const SDLRPCParameterNameSliderPosition = @"sliderPosition";
+SDLRPCParameterName const SDLRPCParameterNameSoftButtonCapabilities = @"softButtonCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameSoftButtonId = @"softButtonID";
+SDLRPCParameterName const SDLRPCParameterNameSoftButtons = @"softButtons";
+SDLRPCParameterName const SDLRPCParameterNameSource = @"source";
+SDLRPCParameterName const SDLRPCParameterNameSourceAvailable = @"sourceAvailable";
+SDLRPCParameterName const SDLRPCParameterNameSpaceAvailable = @"spaceAvailable";
+SDLRPCParameterName const SDLRPCParameterNameSpeechCapabilities = @"speechCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameSpeed = @"speed";
+SDLRPCParameterName const SDLRPCParameterNameRGBColorSpaceAvailable = @"rgbColorSpaceAvailable";
+SDLRPCParameterName const SDLRPCParameterNameStabilityControlsStatus = @"stabilityControlsStatus";
+SDLRPCParameterName const SDLRPCParameterNameStartTime = @"startTime";
+SDLRPCParameterName const SDLRPCParameterNameState = @"state";
+SDLRPCParameterName const SDLRPCParameterNameStateAvailable = @"stateAvailable";
+SDLRPCParameterName const SDLRPCParameterNameStateOfCharge = @"stateOfCharge";
+SDLRPCParameterName const SDLRPCParameterNameStationIDNumber = @"stationIDNumber";
+SDLRPCParameterName const SDLRPCParameterNameStationLongName = @"stationLongName";
+SDLRPCParameterName const SDLRPCParameterNameStationLocation = @"stationLocation";
+SDLRPCParameterName const SDLRPCParameterNameStationMessage = @"stationMessage";
+SDLRPCParameterName const SDLRPCParameterNameStationShortName = @"stationShortName";
+SDLRPCParameterName const SDLRPCParameterNameStatus = @"status";
+SDLRPCParameterName const SDLRPCParameterNameStatusAvailable = @"statusAvailable";
+SDLRPCParameterName const SDLRPCParameterNameStatusBar = @"statusBar";
+SDLRPCParameterName const SDLRPCParameterNameSteeringWheelAngle = @"steeringWheelAngle";
+SDLRPCParameterName const SDLRPCParameterNameStereoAudioOutputMuted = @"stereoAudioOutputMuted";
+SDLRPCParameterName const SDLRPCParameterNameSubAdministrativeArea = @"subAdministrativeArea";
+SDLRPCParameterName const SDLRPCParameterNameSubLocality = @"subLocality";
+SDLRPCParameterName const SDLRPCParameterNameSubMenuDepth = @"subMenuDepth";
+SDLRPCParameterName const SDLRPCParameterNameSubscribe = @"subscribe";
+SDLRPCParameterName const SDLRPCParameterNameSubThoroughfare = @"subThoroughfare";
+SDLRPCParameterName const SDLRPCParameterNameSuccess = @"success";
+SDLRPCParameterName const SDLRPCParameterNameSummary = @"summary";
+SDLRPCParameterName const SDLRPCParameterNameSupportedDiagnosticModes = @"supportedDiagModes";
+SDLRPCParameterName const SDLRPCParameterNameSupportedDynamicImageFieldNames = @"supportedDynamicImageFieldNames";
+SDLRPCParameterName const SDLRPCParameterNameSupportsDynamicSubMenus = @"supportsDynamicSubMenus";
+SDLRPCParameterName const SDLRPCParameterNameSupportedFormats = @"supportedFormats";
+SDLRPCParameterName const SDLRPCParameterNameSupportedLights = @"supportedLights";
+SDLRPCParameterName const SDLRPCParameterNameSyncFileName = @"syncFileName";
+SDLRPCParameterName const SDLRPCParameterNameSyncMessageVersion = @"syncMsgVersion";
+SDLRPCParameterName const SDLRPCParameterNameSystemAction = @"systemAction";
+SDLRPCParameterName const SDLRPCParameterNameSystemCapability = @"systemCapability";
+SDLRPCParameterName const SDLRPCParameterNameSystemCapabilityType = @"systemCapabilityType";
+SDLRPCParameterName const SDLRPCParameterNameSystemContext = @"systemContext";
+SDLRPCParameterName const SDLRPCParameterNameSystemFile = @"systemFile";
+SDLRPCParameterName const SDLRPCParameterNameSystemSoftwareVersion = @"systemSoftwareVersion";
+SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackDuration = @"trackPlaybackDuration";
+SDLRPCParameterName const SDLRPCParameterNameTrackPlaybackProgress = @"trackPlaybackProgress";
+SDLRPCParameterName const SDLRPCParameterNameTrafficAnnouncementIdentification = @"TA";
+SDLRPCParameterName const SDLRPCParameterNameTargetId = @"targetID";
+SDLRPCParameterName const SDLRPCParameterNameTemperatureHigh = @"temperatureHigh";
+SDLRPCParameterName const SDLRPCParameterNameTemperatureLow = @"temperatureLow";
+SDLRPCParameterName const SDLRPCParameterNameTemperatureUnit = @"temperatureUnit";
+SDLRPCParameterName const SDLRPCParameterNameTemplate = @"template";
+SDLRPCParameterName const SDLRPCParameterNameTemplateConfiguration = @"templateConfiguration";
+SDLRPCParameterName const SDLRPCParameterNameTemperatureUnitAvailable = @"temperatureUnitAvailable";
+SDLRPCParameterName const SDLRPCParameterNameTemplatesAvailable = @"templatesAvailable";
+SDLRPCParameterName const SDLRPCParameterNameTemplateTitle = @"templateTitle";
+SDLRPCParameterName const SDLRPCParameterNameTertiaryText = @"tertiaryText";
+SDLRPCParameterName const SDLRPCParameterNameText = @"text";
+SDLRPCParameterName const SDLRPCParameterNameTextFields = @"textFields";
+SDLRPCParameterName const SDLRPCParameterNameTextMessageAvailable = @"textMsgAvailable";
+SDLRPCParameterName const SDLRPCParameterNameTextSupported = @"textSupported";
+SDLRPCParameterName const SDLRPCParameterNameThoroughfare = @"thoroughfare";
+SDLRPCParameterName const SDLRPCParameterNameTimeIssued = @"timeIssued";
+SDLRPCParameterName const SDLRPCParameterNameTime = @"time";
+SDLRPCParameterName const SDLRPCParameterNameTimeout = @"timeout";
+SDLRPCParameterName const SDLRPCParameterNameTimeoutCapitalized = @"Timeout";
+SDLRPCParameterName const SDLRPCParameterNameTimeoutPrompt = @"timeoutPrompt";
+SDLRPCParameterName const SDLRPCParameterNameTS = @"ts";
+SDLRPCParameterName const SDLRPCParameterNameTimeStamp = @"timeStamp";
+SDLRPCParameterName const SDLRPCParameterNameTimeToDestination = @"timeToDestination";
+SDLRPCParameterName const SDLRPCParameterNameTimezoneHourOffset = @"tz_hour";
+SDLRPCParameterName const SDLRPCParameterNameTimezoneMinuteOffset = @"tz_minute";
+SDLRPCParameterName const SDLRPCParameterNameTirePressure = @"tirePressure";
+SDLRPCParameterName const SDLRPCParameterNameTitle = @"title";
+SDLRPCParameterName const SDLRPCParameterNameTotalDistance = @"totalDistance";
+SDLRPCParameterName const SDLRPCParameterNameTouchEventAvailable = @"touchEventAvailable";
+SDLRPCParameterName const SDLRPCParameterNameTPMS = @"tpms";
+SDLRPCParameterName const SDLRPCParameterNameTrafficProgramIdentification = @"TP";
+SDLRPCParameterName const SDLRPCParameterNameTrailerSwayControl = @"trailerSwayControl";
+SDLRPCParameterName const SDLRPCParameterNameTransmissionType = @"transmissionType";
+SDLRPCParameterName const SDLRPCParameterNameTriggerSource = @"triggerSource";
+SDLRPCParameterName const SDLRPCParameterNameTrim = @"trim";
+SDLRPCParameterName const SDLRPCParameterNameTryAgainTime = @"tryAgainTime";
+SDLRPCParameterName const SDLRPCParameterNameTTSChunks = @"ttsChunks";
+SDLRPCParameterName const SDLRPCParameterNameTTSName = @"ttsName";
+SDLRPCParameterName const SDLRPCParameterNameTurnIcon = @"turnIcon";
+SDLRPCParameterName const SDLRPCParameterNameTurnList = @"turnList";
+SDLRPCParameterName const SDLRPCParameterNameTurnSignal = @"turnSignal";
+SDLRPCParameterName const SDLRPCParameterNameType = @"type";
+SDLRPCParameterName const SDLRPCParameterNameUnit = @"unit";
+SDLRPCParameterName const SDLRPCParameterNameUnsubscribe = @"Unsubscribe";
+SDLRPCParameterName const SDLRPCParameterNameUpdatedAppServiceRecord = @"updatedAppServiceRecord";
+SDLRPCParameterName const SDLRPCParameterNameUpdateMode = @"updateMode";
+SDLRPCParameterName const SDLRPCParameterNameUpdateReason= @"updateReason";
+SDLRPCParameterName const SDLRPCParameterNameUpdateSubCells = @"updateSubCells";
+SDLRPCParameterName const SDLRPCParameterNameUpDownAvailable = @"upDownAvailable";
+SDLRPCParameterName const SDLRPCParameterNameURL = @"url";
+SDLRPCParameterName const SDLRPCParameterNameURLUppercase = @"URL";
+SDLRPCParameterName const SDLRPCParameterNameUserDisallowed = @"userDisallowed";
+SDLRPCParameterName const SDLRPCParameterNameUserLocation = @"userLocation";
+SDLRPCParameterName const SDLRPCParameterNameUserSelected = @"userSelected";
+SDLRPCParameterName const SDLRPCParameterNameUserSelectedGear = @"userSelectedGear";
+SDLRPCParameterName const SDLRPCParameterNameUTCDay = @"utcDay";
+SDLRPCParameterName const SDLRPCParameterNameUTCHours = @"utcHours";
+SDLRPCParameterName const SDLRPCParameterNameUTCMinutes = @"utcMinutes";
+SDLRPCParameterName const SDLRPCParameterNameUTCMonth = @"utcMonth";
+SDLRPCParameterName const SDLRPCParameterNameUTCSeconds = @"utcSeconds";
+SDLRPCParameterName const SDLRPCParameterNameUTCYear = @"utcYear";
+SDLRPCParameterName const SDLRPCParameterNameValue = @"value";
+SDLRPCParameterName const SDLRPCParameterNameVDOP = @"vdop";
+SDLRPCParameterName const SDLRPCParameterNameVehicleType = @"vehicleType";
+SDLRPCParameterName const SDLRPCParameterNameVerticalPosition = @"verticalPosition";
+SDLRPCParameterName const SDLRPCParameterNameVerticalPositionAvailable = @"verticalPositionAvailable";
+SDLRPCParameterName const SDLRPCParameterNameVideoCodec = @"codec";
+SDLRPCParameterName const SDLRPCParameterNameVideoProtocol = @"protocol";
+SDLRPCParameterName const SDLRPCParameterNameVideoStreaming = @"videoStreaming";
+SDLRPCParameterName const SDLRPCParameterNameVideoStreamingCapability = @"videoStreamingCapability";
+SDLRPCParameterName const SDLRPCParameterNameVideoStreamingState = @"videoStreamingState";
+SDLRPCParameterName const SDLRPCParameterNameVisibility = @"visibility";
+SDLRPCParameterName const SDLRPCParameterNameVentilationMode = @"ventilationMode";
+SDLRPCParameterName const SDLRPCParameterNameVentilationModeAvailable = @"ventilationModeAvailable";
+SDLRPCParameterName const SDLRPCParameterNameVIN = @"vin";
+SDLRPCParameterName const SDLRPCParameterNameVoiceRecognitionOn = @"voiceRecOn";
+SDLRPCParameterName const SDLRPCParameterNameVolume = @"volume";
+SDLRPCParameterName const SDLRPCParameterNameVolumeAvailable = @"volumeAvailable";
+SDLRPCParameterName const SDLRPCParameterNameVRCapabilities = @"vrCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameVRCommands = @"vrCommands";
+SDLRPCParameterName const SDLRPCParameterNameVRHelp = @"vrHelp";
+SDLRPCParameterName const SDLRPCParameterNameVRHelpTitle = @"vrHelpTitle";
+SDLRPCParameterName const SDLRPCParameterNameVRSynonyms = @"vrSynonyms";
+SDLRPCParameterName const SDLRPCParameterNameWayPoints = @"wayPoints";
+SDLRPCParameterName const SDLRPCParameterNameWayPointType = @"wayPointType";
+SDLRPCParameterName const SDLRPCParameterNameWeatherForLocationSupported = @"weatherForLocationSupported";
+SDLRPCParameterName const SDLRPCParameterNameWeatherIcon = @"weatherIcon";
+SDLRPCParameterName const SDLRPCParameterNameWeatherServiceData = @"weatherServiceData";
+SDLRPCParameterName const SDLRPCParameterNameWeatherServiceManifest = @"weatherServiceManifest";
+SDLRPCParameterName const SDLRPCParameterNameWeatherSummary = @"weatherSummary";
+SDLRPCParameterName const SDLRPCParameterNameWidth = @"width";
+SDLRPCParameterName const SDLRPCParameterNameWindBearing = @"windBearing";
+SDLRPCParameterName const SDLRPCParameterNameWindGust = @"windGust";
+SDLRPCParameterName const SDLRPCParameterNameWindSpeed = @"windSpeed";
+SDLRPCParameterName const SDLRPCParameterNameWiperStatus = @"wiperStatus";
+SDLRPCParameterName const SDLRPCParameterNameWindowCapabilities = @"windowCapabilities";
+SDLRPCParameterName const SDLRPCParameterNameWindowId = @"windowID";
+SDLRPCParameterName const SDLRPCParameterNameWindowName = @"windowName";
+SDLRPCParameterName const SDLRPCParameterNameWindowStatus = @"windowStatus";
+SDLRPCParameterName const SDLRPCParameterNameWindowTypeSupported = @"windowTypeSupported";
+SDLRPCParameterName const SDLRPCParameterNameX = @"x";
+SDLRPCParameterName const SDLRPCParameterNameY = @"y";
+SDLRPCParameterName const SDLRPCParameterNameYear = @"year";
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRPCPayload.h b/SmartDeviceLink/private/SDLRPCPayload.h
index 5794cb5ea..5794cb5ea 100644
--- a/SmartDeviceLink/SDLRPCPayload.h
+++ b/SmartDeviceLink/private/SDLRPCPayload.h
diff --git a/SmartDeviceLink/SDLRPCPayload.m b/SmartDeviceLink/private/SDLRPCPayload.m
index ae6704e80..ae6704e80 100644
--- a/SmartDeviceLink/SDLRPCPayload.m
+++ b/SmartDeviceLink/private/SDLRPCPayload.m
diff --git a/SmartDeviceLink/SDLRTPH264Packetizer.h b/SmartDeviceLink/private/SDLRTPH264Packetizer.h
index 043a8ab05..043a8ab05 100644
--- a/SmartDeviceLink/SDLRTPH264Packetizer.h
+++ b/SmartDeviceLink/private/SDLRTPH264Packetizer.h
diff --git a/SmartDeviceLink/SDLRTPH264Packetizer.m b/SmartDeviceLink/private/SDLRTPH264Packetizer.m
index ddb5f80e9..ddb5f80e9 100644
--- a/SmartDeviceLink/SDLRTPH264Packetizer.m
+++ b/SmartDeviceLink/private/SDLRTPH264Packetizer.m
diff --git a/SmartDeviceLink/SDLResponseDispatcher.h b/SmartDeviceLink/private/SDLResponseDispatcher.h
index dae3e64a2..dae3e64a2 100644
--- a/SmartDeviceLink/SDLResponseDispatcher.h
+++ b/SmartDeviceLink/private/SDLResponseDispatcher.h
diff --git a/SmartDeviceLink/private/SDLResponseDispatcher.m b/SmartDeviceLink/private/SDLResponseDispatcher.m
new file mode 100644
index 000000000..56ed29832
--- /dev/null
+++ b/SmartDeviceLink/private/SDLResponseDispatcher.m
@@ -0,0 +1,399 @@
+//
+// SDLResponseDispatcher.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/8/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import "SDLResponseDispatcher.h"
+
+#import "NSMutableArray+Safe.h"
+#import "NSMutableDictionary+SafeRemove.h"
+#import "SDLAddCommand.h"
+#import "SDLAlert.h"
+#import "SDLButtonName.h"
+#import "SDLDeleteCommand.h"
+#import "SDLDeleteCommandResponse.h"
+#import "SDLError.h"
+#import "SDLGlobals.h"
+#import "SDLLogMacros.h"
+#import "SDLOnAudioPassThru.h"
+#import "SDLOnButtonEvent.h"
+#import "SDLOnButtonPress.h"
+#import "SDLOnCommand.h"
+#import "SDLPerformAudioPassThru.h"
+#import "SDLPerformAudioPassThruResponse.h"
+#import "SDLRPCResponse.h"
+#import "SDLResult.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLScrollableMessage.h"
+#import "SDLShow.h"
+#import "SDLSoftButton.h"
+#import "SDLSubscribeButton.h"
+#import "SDLUnsubscribeButton.h"
+#import "SDLUnsubscribeButtonResponse.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLResponseDispatcher ()
+
+@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
+
+@property (strong, nonatomic, readwrite) NSMapTable<SDLRPCCorrelationId *, SDLResponseHandler> *rpcResponseHandlerMap;
+@property (strong, nonatomic, readwrite) NSMutableDictionary<SDLRPCCorrelationId *, SDLRPCRequest *> *rpcRequestDictionary;
+@property (strong, nonatomic, readwrite) NSMapTable<SDLAddCommandCommandId *, SDLRPCCommandNotificationHandler> *commandHandlerMap;
+@property (strong, nonatomic, readwrite) NSMapTable<SDLSubscribeButtonName *, SDLRPCButtonNotificationHandler> *buttonHandlerMap;
+@property (strong, nonatomic, readwrite) NSMapTable<SDLSoftButtonId *, SDLRPCButtonNotificationHandler> *customButtonHandlerMap;
+@property (strong, nonatomic, readwrite, nullable) SDLAudioPassThruHandler audioPassThruHandler;
+
+@end
+
+
+// https://www.objc.io/issues/2-concurrency/low-level-concurrency-apis/#multiple-readers-single-writer
+@implementation SDLResponseDispatcher
+
+- (instancetype)init {
+ return [self initWithNotificationDispatcher:nil];
+}
+
+- (instancetype)initWithNotificationDispatcher:(nullable id)dispatcher {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ _readWriteQueue = dispatch_queue_create_with_target("com.sdl.lifecycle.responseDispatcher", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
+ _rpcResponseHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
+ _rpcRequestDictionary = [NSMutableDictionary dictionary];
+ _commandHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
+ _buttonHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
+ _customButtonHandlerMap = [NSMapTable mapTableWithKeyOptions:NSMapTableCopyIn valueOptions:NSMapTableCopyIn];
+
+ // Responses
+ for (SDLNotificationName responseName in [SDLNotificationConstants allResponseNames]) {
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlersForResponse:) name:responseName object:dispatcher];
+ }
+
+ // Buttons
+ for (SDLNotificationName buttonNotificationName in [SDLNotificationConstants allButtonEventNotifications]) {
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlerForButton:) name:buttonNotificationName object:dispatcher];
+ }
+
+ // Commands
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlerForCommand:) name:SDLDidReceiveCommandNotification object:dispatcher];
+
+ // Audio Pass Thru
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_runHandlerForAudioPassThru:) name:SDLDidReceiveAudioPassThruNotification object:dispatcher];
+
+ return self;
+}
+
+
+#pragma mark - Storage
+
+- (void)storeRequest:(SDLRPCRequest *)request handler:(nullable SDLResponseHandler)handler {
+ __weak typeof(self) weakself = self;
+ NSNumber *correlationId = request.correlationID;
+
+ // Check for RPCs that require an extra handler
+ if ([request isKindOfClass:[SDLAddCommand class]]) {
+ SDLAddCommand *addCommand = (SDLAddCommand *)request;
+ if (addCommand.cmdID == nil) {
+ @throw [NSException sdl_missingIdException];
+ }
+ if (addCommand.handler != nil) {
+ [self sdl_runAsyncOnQueue:^{
+ __strong typeof(weakself) strongself = weakself;
+ strongself->_commandHandlerMap[addCommand.cmdID] = addCommand.handler;
+ }];
+ }
+ } else if ([request isKindOfClass:[SDLSubscribeButton class]]) {
+ // Convert SDLButtonName to NSString, since it doesn't conform to <NSCopying>
+ SDLSubscribeButton *subscribeButton = (SDLSubscribeButton *)request;
+ SDLButtonName buttonName = subscribeButton.buttonName;
+ if (buttonName == nil) {
+ @throw [NSException sdl_missingIdException];
+ }
+ if (subscribeButton.handler != nil) {
+ [self sdl_runAsyncOnQueue:^{
+ __strong typeof(weakself) strongself = weakself;
+ strongself->_buttonHandlerMap[buttonName] = subscribeButton.handler;
+ }];
+ }
+ } else if ([request isKindOfClass:[SDLAlert class]]) {
+ SDLAlert *alert = (SDLAlert *)request;
+ [self sdl_addToCustomButtonHandlerMap:alert.softButtons];
+ } else if ([request isKindOfClass:[SDLScrollableMessage class]]) {
+ SDLScrollableMessage *scrollableMessage = (SDLScrollableMessage *)request;
+ [self sdl_addToCustomButtonHandlerMap:scrollableMessage.softButtons];
+ } else if ([request isKindOfClass:[SDLShow class]]) {
+ SDLShow *show = (SDLShow *)request;
+ [self sdl_addToCustomButtonHandlerMap:show.softButtons];
+ } else if ([request isKindOfClass:[SDLPerformAudioPassThru class]]) {
+ SDLPerformAudioPassThru *performAudioPassThru = (SDLPerformAudioPassThru *)request;
+
+ [self sdl_runAsyncOnQueue:^{
+ __strong typeof(weakself) strongself = weakself;
+ strongself->_audioPassThruHandler = performAudioPassThru.audioDataHandler;
+ }];
+ }
+
+ // Always store the request, it's needed in some cases whether or not there was a handler (e.g. DeleteCommand).
+ [self sdl_runAsyncOnQueue:^{
+ __strong typeof(weakself) strongself = weakself;
+
+ strongself->_rpcRequestDictionary[correlationId] = request;
+ if (handler != nil) {
+ strongself->_rpcResponseHandlerMap[correlationId] = handler;
+ }
+ }];
+}
+
+- (void)clear {
+ __weak typeof(self) weakself = self;
+
+ __block NSArray<SDLResponseHandler> *handlers = nil;
+ __block NSArray<SDLRPCRequest *> *requests = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ __strong typeof(weakself) strongself = weakself;
+ NSMutableArray *handlerArray = [NSMutableArray array];
+ NSMutableArray *requestArray = [NSMutableArray array];
+
+ // When we get disconnected we have to delete all existing responseHandlers as they are not valid anymore
+ for (SDLRPCCorrelationId *correlationID in strongself->_rpcResponseHandlerMap.dictionaryRepresentation) {
+ SDLResponseHandler responseHandler = strongself->_rpcResponseHandlerMap[correlationID];
+ SDLRPCRequest *request = strongself->_rpcRequestDictionary[correlationID];
+
+ if (responseHandler != NULL) {
+ [handlerArray addObject:responseHandler];
+ [requestArray addObject:request];
+ }
+ }
+
+ handlers = [handlerArray copy];
+ requests = [requestArray copy];
+ }];
+
+ for (NSUInteger i = 0; i < handlers.count; i++) {
+ SDLResponseHandler responseHandler = handlers[i];
+ SDLRPCRequest *request = requests[i];
+
+ responseHandler(request, nil, [NSError sdl_lifecycle_notConnectedError]);
+ }
+
+ [self sdl_runAsyncOnQueue:^{
+ __strong typeof(weakself) strongself = weakself;
+
+ [strongself->_rpcRequestDictionary removeAllObjects];
+ [strongself->_rpcResponseHandlerMap removeAllObjects];
+ [strongself->_commandHandlerMap removeAllObjects];
+ [strongself->_buttonHandlerMap removeAllObjects];
+ [strongself->_customButtonHandlerMap removeAllObjects];
+ strongself->_audioPassThruHandler = nil;
+ }];
+}
+
+- (void)sdl_addToCustomButtonHandlerMap:(NSArray<SDLSoftButton *> *)softButtons {
+ __weak typeof(self) weakself = self;
+ for (SDLSoftButton *sb in softButtons) {
+ if (sb.softButtonID == nil) {
+ @throw [NSException sdl_missingIdException];
+ }
+
+ if (sb.handler != nil) {
+ [self sdl_runAsyncOnQueue:^{
+ __strong typeof(weakself) strongself = weakself;
+ strongself->_customButtonHandlerMap[sb.softButtonID] = sb.handler;
+ }];
+ }
+ }
+}
+
+
+#pragma mark - Notification Handler
+
+// Called by notifications
+- (void)sdl_runHandlersForResponse:(SDLRPCResponseNotification *)notification {
+ __weak typeof(self) weakself = self;
+ if (![notification isResponseKindOfClass:[SDLRPCResponse class]]) {
+ return;
+ }
+
+ __kindof SDLRPCResponse *response = notification.response;
+
+ NSError *error = nil;
+ if (!response.success.boolValue) {
+ error = [NSError sdl_lifecycle_rpcErrorWithDescription:response.resultCode andReason:response.info];
+ }
+
+ __block SDLResponseHandler handler = nil;
+ __block SDLRPCRequest *request = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ handler = self->_rpcResponseHandlerMap[response.correlationID];
+ request = self->_rpcRequestDictionary[response.correlationID];
+ }];
+
+ // Find the appropriate request completion handler, remove the request and response handler
+ [self sdl_runAsyncOnQueue:^{
+ __strong typeof(weakself) strongself = weakself;
+ [strongself->_rpcRequestDictionary safeRemoveObjectForKey:response.correlationID];
+ [strongself->_rpcResponseHandlerMap safeRemoveObjectForKey:response.correlationID];
+
+ // If we errored on the response, the delete / unsubscribe was unsuccessful
+ if (error == nil) {
+ // If it's a DeleteCommand, UnsubscribeButton, or PerformAudioPassThru we need to remove handlers for the corresponding RPCs
+ if ([response isKindOfClass:[SDLDeleteCommandResponse class]]) {
+ SDLDeleteCommand *deleteCommandRequest = (SDLDeleteCommand *)request;
+ NSNumber *deleteCommandId = deleteCommandRequest.cmdID;
+ [strongself->_commandHandlerMap safeRemoveObjectForKey:deleteCommandId];
+ } else if ([response isKindOfClass:[SDLUnsubscribeButtonResponse class]]) {
+ SDLUnsubscribeButton *unsubscribeButtonRequest = (SDLUnsubscribeButton *)request;
+ SDLButtonName unsubscribeButtonName = unsubscribeButtonRequest.buttonName;
+ [strongself->_buttonHandlerMap safeRemoveObjectForKey:unsubscribeButtonName];
+ } else if ([response isKindOfClass:[SDLPerformAudioPassThruResponse class]]) {
+ strongself->_audioPassThruHandler = nil;
+ }
+ }
+
+ dispatch_async([SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
+ // Run the response handler
+ if (handler) {
+ if (!response.success.boolValue) {
+ SDLLogW(@"Request failed: %@, response: %@, error: %@", request, response, error);
+ }
+ handler(request, response, error);
+ }
+ });
+ }];
+}
+
+#pragma mark Command
+
+- (void)sdl_runHandlerForCommand:(SDLRPCNotificationNotification *)notification {
+ SDLOnCommand *onCommandNotification = notification.notification;
+
+ SDLRPCCommandNotificationHandler handler = self.commandHandlerMap[onCommandNotification.cmdID];
+ if (handler != nil) {
+ handler(onCommandNotification);
+ }
+}
+
+#pragma mark Button
+
+- (void)sdl_runHandlerForButton:(SDLRPCNotificationNotification *)notification {
+ __kindof SDLRPCNotification *rpcNotification = notification.notification;
+ SDLButtonName name = nil;
+ NSNumber *customID = nil;
+
+ if ([rpcNotification isMemberOfClass:[SDLOnButtonEvent class]]) {
+ name = ((SDLOnButtonEvent *)rpcNotification).buttonName;
+ customID = ((SDLOnButtonEvent *)rpcNotification).customButtonID;
+ } else if ([rpcNotification isMemberOfClass:[SDLOnButtonPress class]]) {
+ name = ((SDLOnButtonPress *)rpcNotification).buttonName;
+ customID = ((SDLOnButtonPress *)rpcNotification).customButtonID;
+ } else {
+ return;
+ }
+
+ SDLRPCButtonNotificationHandler handler = nil;
+ if ([name isEqualToEnum:SDLButtonNameCustomButton]) {
+ // Custom buttons
+ handler = self.customButtonHandlerMap[customID];
+ } else {
+ // Static buttons
+ handler = self.buttonHandlerMap[name];
+ }
+
+ if (handler == nil) {
+ return;
+ }
+
+ if ([rpcNotification isMemberOfClass:[SDLOnButtonEvent class]]) {
+ handler(nil, rpcNotification);
+ } else if ([rpcNotification isMemberOfClass:[SDLOnButtonPress class]]) {
+ handler(rpcNotification, nil);
+ }
+}
+
+#pragma mark Audio Pass Thru
+
+- (void)sdl_runHandlerForAudioPassThru:(SDLRPCNotificationNotification *)notification {
+ SDLOnAudioPassThru *onAudioPassThruNotification = notification.notification;
+
+ SDLAudioPassThruHandler handler = self.audioPassThruHandler;
+ if (handler != nil) {
+ handler(onAudioPassThruNotification.bulkData);
+ }
+}
+
+#pragma mark Utilities
+
+- (void)sdl_runAsyncOnQueue:(void (^)(void))block {
+ if (dispatch_get_specific(SDLProcessingQueueName) != nil) {
+ block();
+ } else {
+ dispatch_async(self.readWriteQueue, block);
+ }
+}
+
+#pragma mark Getters
+
+- (NSMapTable<SDLRPCCorrelationId *, SDLResponseHandler> *)rpcResponseHandlerMap {
+ __block NSMapTable<SDLRPCCorrelationId *, SDLResponseHandler> *map = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ map = self->_rpcResponseHandlerMap;
+ }];
+
+ return map;
+}
+
+- (NSMutableDictionary<SDLRPCCorrelationId *, SDLRPCRequest *> *)rpcRequestDictionary {
+ __block NSMutableDictionary<SDLRPCCorrelationId *, SDLRPCRequest *> *dict = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ dict = self->_rpcRequestDictionary;
+ }];
+
+ return dict;
+}
+
+- (NSMapTable<SDLAddCommandCommandId *, SDLRPCCommandNotificationHandler> *)commandHandlerMap {
+ __block NSMapTable<SDLAddCommandCommandId *, SDLRPCCommandNotificationHandler> *map = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ map = self->_commandHandlerMap;
+ }];
+
+ return map;
+}
+
+- (NSMapTable<SDLSubscribeButtonName *, SDLRPCButtonNotificationHandler> *)buttonHandlerMap {
+ __block NSMapTable<SDLSubscribeButtonName *, SDLRPCButtonNotificationHandler> *map = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ map = self->_buttonHandlerMap;
+ }];
+
+ return map;
+}
+
+- (NSMapTable<SDLSoftButtonId *, SDLRPCButtonNotificationHandler> *)customButtonHandlerMap {
+ __block NSMapTable<SDLSoftButtonId *, SDLRPCButtonNotificationHandler> *map = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ map = self->_customButtonHandlerMap;
+ }];
+
+ return map;
+}
+
+- (nullable SDLAudioPassThruHandler)audioPassThruHandler {
+ __block SDLAudioPassThruHandler audioPassThruHandler = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ audioPassThruHandler = self->_audioPassThruHandler;
+ }];
+
+ return audioPassThruHandler;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSecondaryTransportManager.h b/SmartDeviceLink/private/SDLSecondaryTransportManager.h
index 3552588db..3552588db 100644
--- a/SmartDeviceLink/SDLSecondaryTransportManager.h
+++ b/SmartDeviceLink/private/SDLSecondaryTransportManager.h
diff --git a/SmartDeviceLink/SDLSecondaryTransportManager.m b/SmartDeviceLink/private/SDLSecondaryTransportManager.m
index f6054494e..f6054494e 100644
--- a/SmartDeviceLink/SDLSecondaryTransportManager.m
+++ b/SmartDeviceLink/private/SDLSecondaryTransportManager.m
diff --git a/SmartDeviceLink/SDLSequentialRPCRequestOperation.h b/SmartDeviceLink/private/SDLSequentialRPCRequestOperation.h
index 1d13dfbb4..1d13dfbb4 100644
--- a/SmartDeviceLink/SDLSequentialRPCRequestOperation.h
+++ b/SmartDeviceLink/private/SDLSequentialRPCRequestOperation.h
diff --git a/SmartDeviceLink/SDLSequentialRPCRequestOperation.m b/SmartDeviceLink/private/SDLSequentialRPCRequestOperation.m
index 96c44b82c..96c44b82c 100644
--- a/SmartDeviceLink/SDLSequentialRPCRequestOperation.m
+++ b/SmartDeviceLink/private/SDLSequentialRPCRequestOperation.m
diff --git a/SmartDeviceLink/SDLSoftButtonManager.h b/SmartDeviceLink/private/SDLSoftButtonManager.h
index d7a6b4506..d7a6b4506 100644
--- a/SmartDeviceLink/SDLSoftButtonManager.h
+++ b/SmartDeviceLink/private/SDLSoftButtonManager.h
diff --git a/SmartDeviceLink/SDLSoftButtonManager.m b/SmartDeviceLink/private/SDLSoftButtonManager.m
index 01a8d0c05..01a8d0c05 100644
--- a/SmartDeviceLink/SDLSoftButtonManager.m
+++ b/SmartDeviceLink/private/SDLSoftButtonManager.m
diff --git a/SmartDeviceLink/SDLSoftButtonReplaceOperation.h b/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.h
index f7a66b331..f7a66b331 100644
--- a/SmartDeviceLink/SDLSoftButtonReplaceOperation.h
+++ b/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.h
diff --git a/SmartDeviceLink/SDLSoftButtonReplaceOperation.m b/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m
index d3a68735c..d3a68735c 100644
--- a/SmartDeviceLink/SDLSoftButtonReplaceOperation.m
+++ b/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m
diff --git a/SmartDeviceLink/SDLSoftButtonTransitionOperation.h b/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.h
index 2679c9895..2679c9895 100644
--- a/SmartDeviceLink/SDLSoftButtonTransitionOperation.h
+++ b/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.h
diff --git a/SmartDeviceLink/SDLSoftButtonTransitionOperation.m b/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m
index add03489c..add03489c 100644
--- a/SmartDeviceLink/SDLSoftButtonTransitionOperation.m
+++ b/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m
diff --git a/SmartDeviceLink/SDLStateMachine.h b/SmartDeviceLink/private/SDLStateMachine.h
index fa3b3093b..fa3b3093b 100644
--- a/SmartDeviceLink/SDLStateMachine.h
+++ b/SmartDeviceLink/private/SDLStateMachine.h
diff --git a/SmartDeviceLink/SDLStateMachine.m b/SmartDeviceLink/private/SDLStateMachine.m
index 1819584ed..1819584ed 100644
--- a/SmartDeviceLink/SDLStateMachine.m
+++ b/SmartDeviceLink/private/SDLStateMachine.m
diff --git a/SmartDeviceLink/SDLStreamingAudioLifecycleManager.h b/SmartDeviceLink/private/SDLStreamingAudioLifecycleManager.h
index 436bd5ca5..436bd5ca5 100644
--- a/SmartDeviceLink/SDLStreamingAudioLifecycleManager.h
+++ b/SmartDeviceLink/private/SDLStreamingAudioLifecycleManager.h
diff --git a/SmartDeviceLink/private/SDLStreamingAudioLifecycleManager.m b/SmartDeviceLink/private/SDLStreamingAudioLifecycleManager.m
new file mode 100644
index 000000000..5e77bb305
--- /dev/null
+++ b/SmartDeviceLink/private/SDLStreamingAudioLifecycleManager.m
@@ -0,0 +1,306 @@
+//
+// SDLStreamingAudioLifecycleManager.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 6/19/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLStreamingAudioLifecycleManager.h"
+
+#import "SDLAudioStreamManager.h"
+#import "SDLConfiguration.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLControlFramePayloadAudioStartServiceAck.h"
+#import "SDLControlFramePayloadConstants.h"
+#import "SDLControlFramePayloadNak.h"
+#import "SDLDisplayCapabilities.h"
+#import "SDLGlobals.h"
+#import "SDLHMICapabilities.h"
+#import "SDLLogMacros.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLProtocol.h"
+#import "SDLProtocolMessage.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLStateMachine.h"
+#import "SDLStreamingMediaConfiguration.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLEncryptionConfiguration.h"
+#import "SDLVehicleType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLStreamingAudioLifecycleManager()
+
+@property (nonatomic, strong, readwrite) SDLAudioStreamManager *audioTranscodingManager;
+@property (strong, nonatomic, readwrite) SDLStateMachine *audioStreamStateMachine;
+@property (assign, nonatomic, readonly, getter=isHmiStateAudioStreamCapable) BOOL hmiStateAudioStreamCapable;
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic, nullable) SDLSystemCapabilityManager *systemCapabilityManager;
+@property (weak, nonatomic) SDLProtocol *protocol;
+
+@property (copy, nonatomic) NSArray<NSString *> *secureMakes;
+@property (copy, nonatomic, nullable) NSString *connectedVehicleMake;
+@property (assign, nonatomic, readwrite, getter=isAudioEncrypted) BOOL audioEncrypted;
+
+@property (nonatomic, copy, nullable) void (^audioServiceEndedCompletionHandler)(void);
+@end
+
+@implementation SDLStreamingAudioLifecycleManager
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _connectionManager = connectionManager;
+ _audioTranscodingManager = [[SDLAudioStreamManager alloc] initWithManager:self];
+ _systemCapabilityManager = systemCapabilityManager;
+ _requestedEncryptionType = configuration.streamingMediaConfig.maximumDesiredEncryption;
+
+ NSMutableArray<NSString *> *tempMakeArray = [NSMutableArray array];
+ for (Class securityManagerClass in configuration.encryptionConfig.securityManagers) {
+ [tempMakeArray addObjectsFromArray:[securityManagerClass availableMakes].allObjects];
+ }
+ NSOrderedSet *tempMakeSet = [NSOrderedSet orderedSetWithArray:tempMakeArray];
+ _secureMakes = [tempMakeSet.array copy];
+
+ _audioStreamStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLAudioStreamManagerStateStopped states:[self.class sdl_audioStreamingStateTransitionDictionary]];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_didReceiveRegisterAppInterfaceResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiLevelDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
+
+ return self;
+}
+
+- (void)startWithProtocol:(SDLProtocol *)protocol {
+ SDLLogD(@"Starting with protocol: %@", protocol);
+ _protocol = protocol;
+
+ @synchronized(self.protocol.protocolDelegateTable) {
+ if (![self.protocol.protocolDelegateTable containsObject:self]) {
+ [self.protocol.protocolDelegateTable addObject:self];
+ }
+ }
+
+ // attempt to start streaming since we may already have necessary conditions met
+ [self sdl_startAudioSession];
+}
+
+- (void)stop {
+ SDLLogD(@"Stopping manager");
+ _protocol = nil;
+ _hmiLevel = SDLHMILevelNone;
+ _connectedVehicleMake = nil;
+ [self.audioTranscodingManager stop];
+
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
+}
+
+- (void)secondaryTransportDidDisconnect {
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
+}
+
+- (void)endAudioServiceWithCompletionHandler:(void (^)(void))audioEndedCompletionHandler {
+ SDLLogD(@"Ending audio service");
+ self.audioServiceEndedCompletionHandler = audioEndedCompletionHandler;
+
+ [self.audioTranscodingManager stop];
+ [self.protocol endServiceWithType:SDLServiceTypeAudio];
+}
+
+- (BOOL)sendAudioData:(NSData*)audioData {
+ if (!self.isAudioConnected) {
+ return NO;
+ }
+
+ SDLLogV(@"Sending raw audio data");
+ if (self.isAudioEncrypted) {
+ [self.protocol sendEncryptedRawData:audioData onService:SDLServiceTypeAudio];
+ } else {
+ [self.protocol sendRawData:audioData withServiceType:SDLServiceTypeAudio];
+ }
+ return YES;
+}
+
+#pragma mark Getters
+
+- (BOOL)isAudioConnected {
+ return [self.audioStreamStateMachine isCurrentState:SDLAudioStreamManagerStateReady];
+}
+
+- (SDLAudioStreamManagerState *)currentAudioStreamState {
+ return self.audioStreamStateMachine.currentState;
+}
+
+#pragma mark - State Machine
++ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_audioStreamingStateTransitionDictionary {
+ return @{
+ SDLAudioStreamManagerStateStopped : @[SDLAudioStreamManagerStateStarting],
+ SDLAudioStreamManagerStateStarting : @[SDLAudioStreamManagerStateStopped, SDLAudioStreamManagerStateReady],
+ SDLAudioStreamManagerStateReady : @[SDLAudioStreamManagerStateShuttingDown, SDLAudioStreamManagerStateStopped],
+ SDLAudioStreamManagerStateShuttingDown : @[SDLAudioStreamManagerStateStopped]
+ };
+}
+
+- (void)didEnterStateAudioStreamStopped {
+ SDLLogD(@"Audio stream stopped");
+ _audioEncrypted = NO;
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLAudioStreamDidStopNotification object:nil];
+
+ if (self.audioServiceEndedCompletionHandler != nil) {
+ self.audioServiceEndedCompletionHandler();
+ self.audioServiceEndedCompletionHandler = nil;
+ }
+}
+
+- (void)didEnterStateAudioStreamStarting {
+ SDLLogD(@"Audio stream starting");
+ if ((self.requestedEncryptionType != SDLStreamingEncryptionFlagNone) && ([self.secureMakes containsObject:self.connectedVehicleMake])) {
+ [self.protocol startSecureServiceWithType:SDLServiceTypeAudio payload:nil tlsInitializationHandler:^(BOOL success, NSError * _Nonnull error) {
+ if (error) {
+ SDLLogE(@"TLS setup error: %@", error);
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
+ }
+ }];
+ } else {
+ [self.protocol startServiceWithType:SDLServiceTypeAudio payload:nil];
+ }
+}
+
+- (void)didEnterStateAudioStreamReady {
+ SDLLogD(@"Audio stream ready");
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLAudioStreamDidStartNotification object:nil];
+}
+
+- (void)didEnterStateAudioStreamShuttingDown {
+ SDLLogD(@"Audio stream shutting down");
+ [self.protocol endServiceWithType:SDLServiceTypeAudio];
+}
+
+#pragma mark - SDLProtocolDelegate
+#pragma mark Start Service ACK/NAK
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
+ if (startServiceACK.header.serviceType != SDLServiceTypeAudio) { return; }
+
+ self.audioEncrypted = startServiceACK.header.encrypted;
+
+ SDLControlFramePayloadAudioStartServiceAck *audioAckPayload = [[SDLControlFramePayloadAudioStartServiceAck alloc] initWithData:startServiceACK.payload];
+ SDLLogD(@"Request to start audio service ACKed on transport %@, with payload: %@", protocol.transport, audioAckPayload);
+
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateReady];
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
+ if (startServiceNAK.header.serviceType != SDLServiceTypeAudio) { return; }
+
+ SDLLogE(@"Request to start audio service NAKed on transport %@, with payload: %@", protocol.transport, startServiceNAK.payload);
+
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
+}
+
+#pragma mark End Service ACK/NAK
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
+ if (endServiceACK.header.serviceType != SDLServiceTypeAudio) { return; }
+ SDLLogD(@"Request to end audio service ACKed on transport %@", protocol.transport);
+
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
+ if (endServiceNAK.header.serviceType != SDLServiceTypeAudio) { return; }
+
+ SDLControlFramePayloadNak *nakPayload = [[SDLControlFramePayloadNak alloc] initWithData:endServiceNAK.payload];
+ SDLLogE(@"Request to end audio service NAKed on transport %@, with payload: %@", protocol.transport, nakPayload);
+
+ /// Core will NAK the audio end service control frame if audio is not streaming or if video is streaming but the HMI does not recognize that audio is streaming.
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStopped];
+}
+
+#pragma mark - SDL RPC Notification callbacks
+
+- (void)sdl_didReceiveRegisterAppInterfaceResponse:(SDLRPCResponseNotification *)notification {
+ NSAssert([notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]], @"A notification was sent with an unanticipated object");
+ if (![notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]]) {
+ return;
+ }
+
+ SDLLogV(@"Received Register App Interface response");
+ SDLRegisterAppInterfaceResponse *registerResponse = (SDLRegisterAppInterfaceResponse*)notification.response;
+
+ self.connectedVehicleMake = registerResponse.vehicleType.make;
+}
+
+- (void)sdl_hmiLevelDidChange:(SDLRPCNotificationNotification *)notification {
+ NSAssert([notification.notification isKindOfClass:[SDLOnHMIStatus class]], @"A notification was sent with an unanticipated object");
+ if (![notification.notification isKindOfClass:[SDLOnHMIStatus class]]) {
+ return;
+ }
+
+ SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus*)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
+ self.hmiLevel = hmiStatus.hmiLevel;
+
+ // if startWithProtocol has not been called yet, abort here
+ if (!self.protocol) { return; }
+
+ if (self.isHmiStateAudioStreamCapable) {
+ [self sdl_startAudioSession];
+ } else {
+ [self sdl_stopAudioSession];
+ }
+}
+
+#pragma mark - Streaming session helpers
+
+- (void)sdl_startAudioSession {
+ SDLLogV(@"Attempting to start audio session");
+ if (!self.protocol) {
+ return;
+ }
+
+ if (!self.isStreamingSupported) {
+ return;
+ }
+
+ if ([self.audioStreamStateMachine isCurrentState:SDLAudioStreamManagerStateStopped] && self.isHmiStateAudioStreamCapable) {
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateStarting];
+ }
+}
+
+- (void)sdl_stopAudioSession {
+ SDLLogV(@"Attempting to stop audio session");
+ if (!self.isStreamingSupported) {
+ return;
+ }
+
+ if (self.isAudioConnected) {
+ [self.audioStreamStateMachine transitionToState:SDLAudioStreamManagerStateShuttingDown];
+ }
+}
+
+#pragma mark Setters / Getters
+
+- (BOOL)isHmiStateAudioStreamCapable {
+ return [self.hmiLevel isEqualToEnum:SDLHMILevelLimited] || [self.hmiLevel isEqualToEnum:SDLHMILevelFull];
+}
+
+- (BOOL)isStreamingSupported {
+ return (self.systemCapabilityManager != nil) ? [self.systemCapabilityManager isCapabilitySupported:SDLSystemCapabilityTypeVideoStreaming] : YES;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStreamingProtocolDelegate.h b/SmartDeviceLink/private/SDLStreamingProtocolDelegate.h
index 1639c3b7d..1639c3b7d 100644
--- a/SmartDeviceLink/SDLStreamingProtocolDelegate.h
+++ b/SmartDeviceLink/private/SDLStreamingProtocolDelegate.h
diff --git a/SmartDeviceLink/SDLStreamingVideoLifecycleManager.h b/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.h
index 9fb1b39a1..9fb1b39a1 100644
--- a/SmartDeviceLink/SDLStreamingVideoLifecycleManager.h
+++ b/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.h
diff --git a/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m b/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m
new file mode 100644
index 000000000..5d1236a98
--- /dev/null
+++ b/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m
@@ -0,0 +1,846 @@
+//
+// SDLStreamingVideoLifecycleManager.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 6/19/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLStreamingVideoLifecycleManager.h"
+
+#import "CVPixelBufferRef+SDLUtil.h"
+#import "SDLCarWindow.h"
+#import "SDLConfiguration.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLControlFramePayloadConstants.h"
+#import "SDLControlFramePayloadNak.h"
+#import "SDLControlFramePayloadVideoStartService.h"
+#import "SDLControlFramePayloadVideoStartServiceAck.h"
+#import "SDLDisplayCapabilities.h"
+#import "SDLFocusableItemLocator.h"
+#import "SDLGenericResponse.h"
+#import "SDLGetSystemCapability.h"
+#import "SDLGetSystemCapabilityResponse.h"
+#import "SDLGlobals.h"
+#import "SDLH264VideoEncoder.h"
+#import "SDLHMILevel.h"
+#import "SDLImageResolution.h"
+#import "SDLLifecycleConfiguration.h"
+#import "SDLLogMacros.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLProtocol.h"
+#import "SDLProtocolMessage.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLScreenParams.h"
+#import "SDLStateMachine.h"
+#import "SDLStreamingMediaConfiguration.h"
+#import "SDLEncryptionConfiguration.h"
+#import "SDLStreamingMediaManagerDataSource.h"
+#import "SDLStreamingVideoScaleManager.h"
+#import "SDLSystemCapability.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLTouchManager.h"
+#import "SDLVehicleType.h"
+#import "SDLVideoEncoderDelegate.h"
+#import "SDLVideoStreamingCapability.h"
+
+static NSUInteger const FramesToSendOnBackground = 30;
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_Nullable capability);
+
+@interface SDLStreamingVideoLifecycleManager() <SDLVideoEncoderDelegate>
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic, nullable) SDLSystemCapabilityManager *systemCapabilityManager;
+@property (weak, nonatomic) SDLProtocol *protocol;
+
+@property (assign, nonatomic, readonly, getter=isAppStateVideoStreamCapable) BOOL appStateVideoStreamCapable;
+@property (assign, nonatomic, readonly, getter=isHmiStateVideoStreamCapable) BOOL hmiStateVideoStreamCapable;
+
+@property (strong, nonatomic, readwrite) SDLStateMachine *videoStreamStateMachine;
+@property (strong, nonatomic, readwrite) SDLStateMachine *appStateMachine;
+
+@property (strong, nonatomic, readwrite, nullable) SDLVideoStreamingFormat *videoFormat;
+
+@property (strong, nonatomic, nullable) SDLH264VideoEncoder *videoEncoder;
+@property (strong, nonatomic) NSMutableDictionary *videoEncoderSettings;
+@property (copy, nonatomic) NSDictionary<NSString *, id> *customEncoderSettings;
+@property (copy, nonatomic) NSArray<NSString *> *secureMakes;
+@property (copy, nonatomic, nullable) NSString *connectedVehicleMake;
+
+@property (copy, nonatomic, readonly) NSString *appName;
+@property (assign, nonatomic) CV_NULLABLE CVPixelBufferRef backgroundingPixelBuffer;
+
+@property (strong, nonatomic, nullable) CADisplayLink *displayLink;
+@property (assign, nonatomic) BOOL useDisplayLink;
+
+@property (assign, nonatomic, readwrite, getter=isVideoEncrypted) BOOL videoEncrypted;
+
+/**
+ * SSRC of RTP header field.
+ *
+ * SSRC field identifies the source of a stream and it should be
+ * chosen randomly (see section 3 and 5.1 in RFC 3550).
+ *
+ * @note A random value is generated and used as default.
+ */
+@property (assign, nonatomic) UInt32 ssrc;
+@property (assign, nonatomic) CMTime lastPresentationTimestamp;
+
+@property (copy, nonatomic, readonly) NSString *videoStreamBackgroundString;
+@property (nonatomic, copy, nullable) void (^videoServiceEndedCompletionHandler)(void);
+
+@end
+
+@implementation SDLStreamingVideoLifecycleManager
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _appName = configuration.lifecycleConfig.appName;
+ _connectionManager = connectionManager;
+ _systemCapabilityManager = systemCapabilityManager;
+ _videoEncoderSettings = [NSMutableDictionary dictionary];
+ [_videoEncoderSettings addEntriesFromDictionary: SDLH264VideoEncoder.defaultVideoEncoderSettings];
+ _customEncoderSettings = configuration.streamingMediaConfig.customVideoEncoderSettings;
+ _videoScaleManager = [[SDLStreamingVideoScaleManager alloc] init];
+
+ if (configuration.streamingMediaConfig.rootViewController != nil) {
+ NSAssert(configuration.streamingMediaConfig.enableForcedFramerateSync, @"When using CarWindow (rootViewController != nil), forceFrameRateSync must be YES");
+
+ SDLLogD(@"Initializing focusable item locator");
+ _focusableItemManager = [[SDLFocusableItemLocator alloc] initWithViewController:configuration.streamingMediaConfig.rootViewController connectionManager:_connectionManager videoScaleManager:_videoScaleManager];
+
+ SDLLogD(@"Initializing CarWindow");
+ _carWindow = [[SDLCarWindow alloc] initWithStreamManager:self configuration:configuration.streamingMediaConfig];
+ _carWindow.rootViewController = configuration.streamingMediaConfig.rootViewController;
+ }
+
+ _touchManager = [[SDLTouchManager alloc] initWithHitTester:(id)_focusableItemManager videoScaleManager:_videoScaleManager];
+
+ _requestedEncryptionType = configuration.streamingMediaConfig.maximumDesiredEncryption;
+ _dataSource = configuration.streamingMediaConfig.dataSource;
+ _useDisplayLink = configuration.streamingMediaConfig.enableForcedFramerateSync;
+ _backgroundingPixelBuffer = NULL;
+ _showVideoBackgroundDisplay = YES;
+ _preferredFormatIndex = 0;
+ _preferredResolutionIndex = 0;
+
+ _hmiLevel = SDLHMILevelNone;
+ _videoStreamingState = SDLVideoStreamingStateNotStreamable;
+
+ NSMutableArray<NSString *> *tempMakeArray = [NSMutableArray array];
+ for (Class securityManagerClass in configuration.encryptionConfig.securityManagers) {
+ [tempMakeArray addObjectsFromArray:[securityManagerClass availableMakes].allObjects];
+ }
+ NSOrderedSet *tempMakeSet = [NSOrderedSet orderedSetWithArray:tempMakeArray];
+ _secureMakes = [tempMakeSet.array copy];
+
+ SDLAppState *initialState = SDLAppStateInactive;
+ switch ([[UIApplication sharedApplication] applicationState]) {
+ case UIApplicationStateActive: {
+ initialState = SDLAppStateActive;
+ } break;
+ case UIApplicationStateInactive: // fallthrough
+ case UIApplicationStateBackground: {
+ initialState = SDLAppStateInactive;
+ } break;
+ default: break;
+ }
+
+ _appStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:initialState states:[self.class sdl_appStateTransitionDictionary]];
+ _videoStreamStateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLVideoStreamManagerStateStopped states:[self.class sdl_videoStreamStateTransitionDictionary]];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_didReceiveRegisterAppInterfaceResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_appStateDidUpdate:) name:UIApplicationDidBecomeActiveNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_appStateDidUpdate:) name:UIApplicationWillResignActiveNotification object:nil];
+
+ _ssrc = arc4random_uniform(UINT32_MAX);
+ _lastPresentationTimestamp = kCMTimeInvalid;
+
+ return self;
+}
+
+- (void)startWithProtocol:(SDLProtocol *)protocol {
+ SDLLogD(@"Starting with protocol: %@", protocol);
+ _protocol = protocol;
+
+ @synchronized(self.protocol.protocolDelegateTable) {
+ if (![self.protocol.protocolDelegateTable containsObject:self]) {
+ [self.protocol.protocolDelegateTable addObject:self];
+ }
+ }
+
+ [self.focusableItemManager start];
+
+ // attempt to start streaming since we may already have necessary conditions met
+ [self sdl_startVideoSession];
+}
+
+- (void)stop {
+ SDLLogD(@"Stopping manager");
+
+ _backgroundingPixelBuffer = NULL;
+ _preferredFormatIndex = 0;
+ _preferredResolutionIndex = 0;
+ _lastPresentationTimestamp = kCMTimeInvalid;
+ _hmiLevel = SDLHMILevelNone;
+ _videoStreamingState = SDLVideoStreamingStateNotStreamable;
+ _protocol = nil;
+ [self.videoScaleManager stop];
+ [self.focusableItemManager stop];
+ _connectedVehicleMake = nil;
+
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+}
+
+- (void)secondaryTransportDidDisconnect {
+ SDLLogD(@"Stopping video manager");
+ [self.focusableItemManager stop];
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+}
+
+- (void)endVideoServiceWithCompletionHandler:(void (^)(void))videoEndedCompletionHandler {
+ SDLLogD(@"Ending video service");
+ [self sdl_disposeDisplayLink];
+ self.videoServiceEndedCompletionHandler = videoEndedCompletionHandler;
+ [self.protocol endServiceWithType:SDLServiceTypeVideo];
+}
+
+- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer {
+ return [self sendVideoData:imageBuffer presentationTimestamp:kCMTimeInvalid];
+}
+
+- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp {
+ if (!self.isVideoConnected) {
+ SDLLogW(@"Attempted to send video data, but not connected");
+ return NO;
+ } else if (!self.isAppStateVideoStreamCapable) {
+ SDLLogW(@"Attempted to send video data, but app is not in the foreground");
+ return NO;
+ } else if (!self.isHmiStateVideoStreamCapable) {
+ SDLLogW(@"Attempted to send video data, but the app is not in LIMITED or FULL HMI state");
+ return NO;
+ }
+
+ /*
+ * reject input image for following cases:
+ * - presentation timestamp is not increasing
+ * - app tries to send images while background images are shown
+ */
+ if (CMTIME_IS_VALID(self.lastPresentationTimestamp) && CMTIME_IS_VALID(presentationTimestamp)
+ && CMTIME_COMPARE_INLINE(presentationTimestamp, <=, self.lastPresentationTimestamp)) {
+ SDLLogW(@"The video data is out of date");
+ return NO;
+ }
+ self.lastPresentationTimestamp = presentationTimestamp;
+
+ SDLLogV(@"Sending data to video encoder");
+ return [self.videoEncoder encodeFrame:imageBuffer presentationTimestamp:presentationTimestamp];
+}
+
+#pragma mark Getters
+
+- (BOOL)isVideoConnected {
+ return [self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateReady];
+}
+
+- (BOOL)isVideoSuspended {
+ return [self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateSuspended];
+}
+
+- (BOOL)isVideoStreamingPaused {
+ return !(self.isVideoConnected && self.isHmiStateVideoStreamCapable && self.isAppStateVideoStreamCapable);
+}
+
+- (CVPixelBufferPoolRef __nullable)pixelBufferPool {
+ return self.videoEncoder.pixelBufferPool;
+}
+
+- (SDLAppState *)currentAppState {
+ return self.appStateMachine.currentState;
+}
+
+- (SDLVideoStreamManagerState *)currentVideoStreamState {
+ return self.videoStreamStateMachine.currentState;
+}
+
+#pragma mark - State Machines
+#pragma mark App State
++ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_appStateTransitionDictionary {
+ return @{
+ // Will go from Inactive to Active if coming from a Phone Call.
+ // Will go from Inactive to IsRegainingActive if coming from Background.
+ SDLAppStateInactive : @[SDLAppStateActive],
+ SDLAppStateActive : @[SDLAppStateInactive]
+ };
+}
+
+- (void)sdl_appStateDidUpdate:(NSNotification*)notification {
+ if (notification.name == UIApplicationWillResignActiveNotification) {
+ [self.appStateMachine transitionToState:SDLAppStateInactive];
+ } else if (notification.name == UIApplicationDidBecomeActiveNotification) {
+ [self.appStateMachine transitionToState:SDLAppStateActive];
+ }
+}
+
+- (void)didEnterStateAppInactive {
+ SDLLogD(@"App became inactive");
+ if (self.protocol == nil) {
+ SDLLogV(@"No session established with head unit. Ignoring app backgrounded notification");
+ return;
+ }
+
+ if (_showVideoBackgroundDisplay) {
+ [self sdl_sendBackgroundFrames];
+ }
+ [self.touchManager cancelPendingTouches];
+
+ if (self.isVideoConnected) {
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateSuspended];
+ } else {
+ [self sdl_stopVideoSession];
+ }
+}
+
+// Per Apple's guidelines: https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html
+// We should be waiting to start any OpenGL drawing until UIApplicationDidBecomeActive is called.
+- (void)didEnterStateAppActive {
+ SDLLogD(@"App became active");
+ if (self.protocol == nil) {
+ SDLLogV(@"No session established with head unit. Ignoring app foregounded notification");
+ return;
+ }
+
+ if (self.isVideoSuspended) {
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateReady];
+ } else {
+ [self sdl_startVideoSession];
+ }
+}
+
+#pragma mark Video Streaming
++ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_videoStreamStateTransitionDictionary {
+ return @{
+ SDLVideoStreamManagerStateStopped : @[SDLVideoStreamManagerStateStarting],
+ SDLVideoStreamManagerStateStarting : @[SDLVideoStreamManagerStateStopped, SDLVideoStreamManagerStateReady],
+ SDLVideoStreamManagerStateReady : @[SDLVideoStreamManagerStateSuspended, SDLVideoStreamManagerStateShuttingDown, SDLVideoStreamManagerStateStopped],
+ SDLVideoStreamManagerStateSuspended : @[SDLVideoStreamManagerStateReady, SDLVideoStreamManagerStateShuttingDown, SDLVideoStreamManagerStateStopped],
+ SDLVideoStreamManagerStateShuttingDown : @[SDLVideoStreamManagerStateStopped]
+ };
+}
+
+- (void)sdl_disposeDisplayLink {
+ if (self.displayLink == nil) { return; }
+ SDLLogD(@"Destroying display link");
+ [self.displayLink invalidate];
+ self.displayLink = nil;
+}
+
+- (void)didEnterStateVideoStreamStopped {
+ SDLLogD(@"Video stream stopped");
+ _videoEncrypted = NO;
+ _videoFormat = nil;
+
+ if (_videoEncoder != nil) {
+ [_videoEncoder stop];
+ _videoEncoder = nil;
+ }
+
+ _backgroundingPixelBuffer = NULL;
+ _preferredFormatIndex = 0;
+ _preferredResolutionIndex = 0;
+ _lastPresentationTimestamp = kCMTimeInvalid;
+
+ [self sdl_disposeDisplayLink];
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLVideoStreamDidStopNotification object:nil];
+
+ if (self.videoServiceEndedCompletionHandler != nil) {
+ self.videoServiceEndedCompletionHandler();
+ self.videoServiceEndedCompletionHandler = nil;
+ }
+}
+
+- (void)didEnterStateVideoStreamStarting {
+ SDLLogD(@"Video stream starting");
+
+ __weak typeof(self) weakSelf = self;
+ [self sdl_requestVideoCapabilities:^(SDLVideoStreamingCapability * _Nullable capability) {
+ SDLLogD(@"Received video capability response");
+ SDLLogV(@"Capability: %@", capability);
+
+ if (capability != nil) {
+ // If we got a response, get the head unit's preferred formats and resolutions
+ weakSelf.preferredFormats = capability.supportedFormats;
+ weakSelf.preferredResolutions = @[capability.preferredResolution];
+ if (capability.maxBitrate != nil) {
+ weakSelf.videoEncoderSettings[(__bridge NSString *) kVTCompressionPropertyKey_AverageBitRate] = [[NSNumber alloc] initWithUnsignedLongLong:(capability.maxBitrate.unsignedLongLongValue * 1000)];
+ }
+
+ if (weakSelf.dataSource != nil) {
+ SDLLogV(@"Calling data source for modified preferred formats");
+ weakSelf.preferredFormats = [weakSelf.dataSource preferredVideoFormatOrderFromHeadUnitPreferredOrder:weakSelf.preferredFormats];
+ }
+
+ if (weakSelf.focusableItemManager != nil) {
+ weakSelf.focusableItemManager.enableHapticDataRequests = capability.hapticSpatialDataSupported.boolValue;
+ }
+
+ SDLLogD(@"Got specialized video capabilites, preferred formats: %@, haptics enabled %@", weakSelf.preferredFormats, (capability.hapticSpatialDataSupported.boolValue ? @"YES" : @"NO"));
+ } else {
+ // If no response, assume that the format is H264 RAW and get the screen resolution from the RAI response's display capabilities.
+ SDLVideoStreamingFormat *format = [[SDLVideoStreamingFormat alloc] initWithCodec:SDLVideoStreamingCodecH264 protocol:SDLVideoStreamingProtocolRAW];
+ SDLImageResolution *resolution = [[SDLImageResolution alloc] initWithWidth:(uint16_t)weakSelf.videoScaleManager.displayViewportResolution.width height:(uint16_t)weakSelf.videoScaleManager.displayViewportResolution.height];
+ weakSelf.preferredFormats = @[format];
+ weakSelf.preferredResolutions = @[resolution];
+
+ if (weakSelf.focusableItemManager != nil) {
+ weakSelf.focusableItemManager.enableHapticDataRequests = NO;
+ }
+
+ SDLLogD(@"Using generic video capabilites, preferred formats: %@, resolutions: %@, haptics disabled", weakSelf.preferredFormats, weakSelf.preferredResolutions);
+ }
+
+ // Apply customEncoderSettings here. Note that value from HMI (such as maxBitrate) will be overwritten by custom settings.
+ for (id key in self.customEncoderSettings.keyEnumerator) {
+ self.videoEncoderSettings[key] = [self.customEncoderSettings valueForKey:key];
+ }
+
+ if (weakSelf.dataSource != nil) {
+ SDLLogV(@"Calling data source for modified preferred resolutions");
+ weakSelf.preferredResolutions = [weakSelf.dataSource resolutionFromHeadUnitPreferredResolution:weakSelf.preferredResolutions.firstObject];
+ SDLLogD(@"Got specialized video resolutions: %@", weakSelf.preferredResolutions);
+ }
+
+ [self sdl_sendVideoStartService];
+ }];
+}
+
+- (void)didEnterStateVideoStreamReady {
+ SDLLogD(@"Video stream ready");
+
+ if (self.videoEncoder != nil) {
+ [self.videoEncoder stop];
+ self.videoEncoder = nil;
+ }
+
+ [self sdl_disposeDisplayLink];
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLVideoStreamDidStartNotification object:nil];
+
+ if (!self.isAppStateVideoStreamCapable) {
+ SDLLogD(@"App is in the background and can not stream video. Video will resume when app is foregrounded");
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateSuspended];
+ return;
+ }
+
+ if (self.videoEncoder == nil) {
+ NSError* error = nil;
+ NSAssert(self.videoFormat != nil, @"No video format is known, but it must be if we got a protocol start service response");
+
+ SDLLogD(@"Attempting to create video encoder");
+ self.videoEncoder = [[SDLH264VideoEncoder alloc] initWithProtocol:self.videoFormat.protocol dimensions:self.videoScaleManager.appViewportFrame.size ssrc:self.ssrc properties:self.videoEncoderSettings delegate:self error:&error];
+
+ if (error || self.videoEncoder == nil) {
+ SDLLogE(@"Could not create a video encoder: %@", error);
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+ return;
+ }
+
+ if (!self.backgroundingPixelBuffer) {
+ CVPixelBufferRef backgroundingPixelBuffer = [self.videoEncoder newPixelBuffer];
+ if (CVPixelBufferAddText(backgroundingPixelBuffer, self.videoStreamBackgroundString) == NO) {
+ SDLLogE(@"Could not create a backgrounding frame");
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+ return;
+ }
+
+ self.backgroundingPixelBuffer = backgroundingPixelBuffer;
+ }
+ self.lastPresentationTimestamp = kCMTimeInvalid;
+ }
+
+ if (self.useDisplayLink) {
+ __weak typeof(self) weakSelf = self;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ NSInteger targetFramerate = ((NSNumber *)strongSelf.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate]).integerValue;
+ SDLLogD(@"Initializing CADisplayLink with framerate: %ld", (long)targetFramerate);
+ strongSelf.displayLink = [CADisplayLink displayLinkWithTarget:strongSelf selector:@selector(sdl_displayLinkFired:)];
+ strongSelf.displayLink.preferredFramesPerSecond = targetFramerate;
+ [strongSelf.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
+ });
+ } else {
+ self.touchManager.enableSyncedPanning = NO;
+ }
+}
+
+- (void)didEnterStateVideoStreamSuspended {
+ SDLLogD(@"Video stream suspended");
+ [self sdl_disposeDisplayLink];
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLVideoStreamSuspendedNotification object:nil];
+}
+
+- (void)didEnterStateVideoStreamShuttingDown {
+ SDLLogD(@"Video stream shutting down");
+ [self.protocol endServiceWithType:SDLServiceTypeVideo];
+}
+
+#pragma mark - SDLProtocolDelegate
+#pragma mark Start Service ACK/NAK
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceACK:(SDLProtocolMessage *)startServiceACK {
+ if (startServiceACK.header.serviceType != SDLServiceTypeVideo) { return; }
+
+ self.videoEncrypted = startServiceACK.header.encrypted;
+
+ SDLControlFramePayloadVideoStartServiceAck *videoAckPayload = [[SDLControlFramePayloadVideoStartServiceAck alloc] initWithData:startServiceACK.payload];
+ SDLLogD(@"Request to start video service ACKed on transport %@, with payload: %@", protocol.transport, videoAckPayload);
+
+ // This is the definitive screen size that will be used
+ if ((videoAckPayload.height != SDLControlFrameInt32NotFound || videoAckPayload.height != 0) && (videoAckPayload.width != SDLControlFrameInt32NotFound && videoAckPayload.width != 0)) {
+ self.videoScaleManager.displayViewportResolution = CGSizeMake(videoAckPayload.width, videoAckPayload.height);
+ } else if (self.preferredResolutions.count > 0) {
+ // If a preferred resolution was set, use the first option to set the screen size
+ SDLImageResolution *preferredResolution = self.preferredResolutions.firstObject;
+ CGSize newScreenSize = CGSizeMake(preferredResolution.resolutionWidth.floatValue, preferredResolution.resolutionHeight.floatValue);
+ if (!CGSizeEqualToSize(self.videoScaleManager.displayViewportResolution, newScreenSize)) {
+ SDLLogW(@"The preferred resolution does not match the screen dimensions returned by the Register App Interface Response. Video may look distorted or video may not show up on the head unit");
+ self.videoScaleManager.displayViewportResolution = CGSizeMake(preferredResolution.resolutionWidth.floatValue, preferredResolution.resolutionHeight.floatValue);
+ }
+ } // else we are using the screen size we got from the RAIR earlier
+
+ // Figure out the definitive format that will be used. If the protocol / codec weren't passed in the payload, it's probably a system that doesn't support those properties, which also means it's a system that requires H.264 RAW encoding
+ self.videoFormat = [[SDLVideoStreamingFormat alloc] init];
+ self.videoFormat.codec = videoAckPayload.videoCodec ?: SDLVideoStreamingCodecH264;
+ self.videoFormat.protocol = videoAckPayload.videoProtocol ?: SDLVideoStreamingProtocolRAW;
+
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateReady];
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveStartServiceNAK:(SDLProtocolMessage *)startServiceNAK {
+ if (startServiceNAK.header.serviceType != SDLServiceTypeVideo) { return; }
+
+ SDLControlFramePayloadNak *nakPayload = [[SDLControlFramePayloadNak alloc] initWithData:startServiceNAK.payload];
+ SDLLogE(@"Request to start video service NAKed on transport %@, with payload: %@", protocol.transport, nakPayload);
+
+ // If we have no payload rejected params, we don't know what to do to retry, so we'll just stop and maybe cry
+ if (nakPayload.rejectedParams.count == 0) {
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+ return;
+ }
+
+ // If height and/or width was rejected, and we have another resolution to try, advance our counter to try another resolution
+ if (([nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameHeightKey]]
+ || [nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameWidthKey]])) {
+ self.preferredResolutionIndex++;
+ }
+
+ if (([nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]]
+ || [nakPayload.rejectedParams containsObject:[NSString stringWithUTF8String:SDLControlFrameVideoProtocolKey]])) {
+ self.preferredFormatIndex++;
+ }
+
+ [self sdl_sendVideoStartService];
+}
+
+#pragma mark End Service ACK/NAK
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceACK:(SDLProtocolMessage *)endServiceACK {
+ if (endServiceACK.header.serviceType != SDLServiceTypeVideo) { return; }
+ SDLLogD(@"Request to end video service ACKed on transport %@", protocol.transport);
+
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+}
+
+- (void)protocol:(SDLProtocol *)protocol didReceiveEndServiceNAK:(SDLProtocolMessage *)endServiceNAK {
+ if (endServiceNAK.header.serviceType != SDLServiceTypeVideo) { return; }
+
+ SDLControlFramePayloadNak *nakPayload = [[SDLControlFramePayloadNak alloc] initWithData:endServiceNAK.payload];
+ SDLLogE(@"Request to end video service NAKed on transport %@, with payload: %@", protocol.transport, nakPayload);
+
+ /// Core will NAK the video end service control frame if video is not streaming or if video is streaming but the HMI does not recognize that video is streaming.
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+}
+
+#pragma mark - SDL RPC Notification callbacks
+
+- (void)sdl_didReceiveRegisterAppInterfaceResponse:(SDLRPCResponseNotification *)notification {
+ NSAssert([notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]], @"A notification was sent with an unanticipated object");
+ if (![notification.response isKindOfClass:[SDLRegisterAppInterfaceResponse class]]) {
+ return;
+ }
+
+ SDLLogD(@"Received Register App Interface");
+ SDLRegisterAppInterfaceResponse *registerResponse = (SDLRegisterAppInterfaceResponse *)notification.response;
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+ SDLImageResolution *resolution = registerResponse.displayCapabilities.screenParams.resolution;
+#pragma clang diagnostic pop
+ if (resolution != nil) {
+ self.videoScaleManager.displayViewportResolution = CGSizeMake(resolution.resolutionWidth.floatValue,
+ resolution.resolutionHeight.floatValue);
+ // HAX: Workaround for Legacy Ford and Lincoln displays with > 800 resolution width or height. They don't support scaling and if we don't do this workaround, they will not correctly scale the view.
+ NSString *make = registerResponse.vehicleType.make;
+ CGSize resolution = self.videoScaleManager.displayViewportResolution;
+ if (([make containsString:@"Ford"] || [make containsString:@"Lincoln"]) && (resolution.width > 800 || resolution.height > 800)) {
+ self.videoScaleManager.scale = 1.0f / 0.75f; // Scale by 1.333333
+ }
+ }
+
+ self.connectedVehicleMake = registerResponse.vehicleType.make;
+
+ SDLLogD(@"Determined base screen size on display capabilities: %@", NSStringFromCGSize(self.videoScaleManager.displayViewportResolution));
+}
+
+/// Parses out the `hmiLevel` and `videoStreamingState` from an `OnHMIStatus` notification from Core. Since Core only allows video streaming when the `hmiLevel` is `FULL` or `LIMITED`, sending video data when the `hmiLevel` is not `FULL` or `LIMITED` will result in Core forcing an unregistration with a reason of `PROTOCOL_VIOLATION`.
+/// 1. The `hmiLevel` will go to `FULL` when the user opens the SDL app by tapping on the SDL app icon on the HMI or uses a voice command to launch the SDL app.
+/// 2. The `hmiLevel` will go to `LIMITED` when the user backgrounds the SDL app by opening another app or by going back to the home screen.
+/// 3. The `hmiLevel` will go to `NONE` when the user "exits" the app (either through gesture or voice commands). It will also go to `NONE` if video fails to stream and the user presses "cancel" on the HMI popup. In these cases the transport between the phone and accessory will still be open. It will also go to `NONE` when the user disconnects the transport between the phone and accessory. In this case no notification will be recieved since the transport was disconnected.
+/// 4. The `hmiLevel` will go to `BACKGROUND` if the app is in `LIMITED` and another app takes over video streaming capability (i.e. another navigation app's `hmiLevel` changes to `FULL`).
+///
+/// @param notification The `OnHMIStatus` notification
+- (void)sdl_hmiStatusDidChange:(SDLRPCNotificationNotification *)notification {
+ NSAssert([notification.notification isKindOfClass:[SDLOnHMIStatus class]], @"A notification was sent with an unanticipated object");
+ if (![notification.notification isKindOfClass:[SDLOnHMIStatus class]]) {
+ return;
+ }
+
+ SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus*)notification.notification;
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
+ self.hmiLevel = hmiStatus.hmiLevel;
+
+ SDLVideoStreamingState newState = hmiStatus.videoStreamingState ?: SDLVideoStreamingStateStreamable;
+ if (![self.videoStreamingState isEqualToEnum:newState]) {
+ SDLLogD(@"Video streaming state changed from %@ to %@", self.videoStreamingState, hmiStatus.videoStreamingState);
+ self.videoStreamingState = newState;
+ }
+
+ // if startWithProtocol has not been called yet, abort here
+ if (self.protocol == nil) {
+ SDLLogW(@"No session established with head unit. HMI status is not relevant.");
+ return;
+ }
+
+ if (self.isHmiStateVideoStreamCapable) {
+ [self sdl_startVideoSession];
+ } else {
+ [self sdl_stopVideoSession];
+ }
+}
+
+#pragma mark - SDLVideoEncoderDelegate
+
+- (void)videoEncoder:(SDLH264VideoEncoder *)encoder hasEncodedFrame:(NSData *)encodedVideo {
+ SDLLogV(@"Video encoder encoded frame, sending data");
+ // Do we care about app state here? I don't think so…
+ BOOL capableVideoStreamState = [self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateReady];
+
+ if (self.isHmiStateVideoStreamCapable && capableVideoStreamState) {
+ if (self.isVideoEncrypted) {
+ [self.protocol sendEncryptedRawData:encodedVideo onService:SDLServiceTypeVideo];
+ } else {
+ [self.protocol sendRawData:encodedVideo withServiceType:SDLServiceTypeVideo];
+ }
+ }
+}
+
+#pragma mark - Streaming session helpers
+
+- (void)sdl_startVideoSession {
+ SDLLogV(@"Attempting to start video session");
+ if (self.protocol == nil) {
+ SDLLogW(@"No transport established with head unit. Video start service request will not be sent.");
+ return;
+ }
+
+ if (!self.isHmiStateVideoStreamCapable) {
+ SDLLogV(@"SDL Core is not ready to stream video. Video start service request will not be sent.");
+ return;
+ }
+
+ if (!self.isStreamingSupported) {
+ SDLLogV(@"Streaming is not supported. Video start service request will not be sent.");
+ return;
+ }
+
+ if ([self.videoStreamStateMachine isCurrentState:SDLVideoStreamManagerStateStopped] && self.isHmiStateVideoStreamCapable) {
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStarting];
+ } else {
+ SDLLogE(@"Unable to send video start service request\n"
+ "Video State must be in state STOPPED: %@\n"
+ "HMI state must be LIMITED or FULL: %@\n",
+ self.videoStreamStateMachine.currentState, self.hmiLevel);
+ }
+}
+
+- (void)sdl_stopVideoSession {
+ SDLLogV(@"Attempting to stop video session");
+ if (!self.isStreamingSupported) {
+ SDLLogW(@"Head unit does not support video streaming. Will not send an end video service request");
+ return;
+ }
+
+ if (self.isVideoConnected || self.isVideoSuspended) {
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateShuttingDown];
+ } else {
+ SDLLogW(@"No video is currently streaming. Will not send an end video service request.");
+ }
+}
+
+- (void)sdl_displayLinkFired:(CADisplayLink *)displayLink {
+ NSAssert([NSThread isMainThread], @"Display link should always fire on the main thread");
+
+ SDLLogV(@"DisplayLink frame fired, duration: %f, last frame timestamp: %f, target timestamp: %f", displayLink.duration, displayLink.timestamp, displayLink.targetTimestamp);
+
+ [self.touchManager syncFrame];
+ [self.carWindow syncFrame];
+}
+
+- (void)sdl_sendBackgroundFrames {
+ SDLLogV(@"Attempting to send background frames");
+ if (!self.backgroundingPixelBuffer) {
+ SDLLogW(@"No background pixel buffer, unable to send background frames");
+ return;
+ }
+
+ int32_t timeRate = 30;
+ if (self.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate] != nil) {
+ timeRate = ((NSNumber *)self.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate]).intValue;
+ }
+
+ const CMTime interval = CMTimeMake(1, timeRate);
+ for (int frameCount = 0; frameCount < FramesToSendOnBackground; frameCount++) {
+ if (CMTIME_IS_VALID(self.lastPresentationTimestamp)) {
+ self.lastPresentationTimestamp = CMTimeAdd(self.lastPresentationTimestamp, interval);
+ [self.videoEncoder encodeFrame:self.backgroundingPixelBuffer presentationTimestamp:self.lastPresentationTimestamp];
+ } else {
+ [self.videoEncoder encodeFrame:self.backgroundingPixelBuffer];
+ }
+ }
+}
+
+- (void)sdl_requestVideoCapabilities:(SDLVideoCapabilityResponseHandler)responseHandler {
+ SDLLogD(@"Requesting video capabilities");
+ SDLGetSystemCapability *getVideoCapabilityRequest = [[SDLGetSystemCapability alloc] initWithType:SDLSystemCapabilityTypeVideoStreaming];
+
+ [self.connectionManager sendConnectionManagerRequest:getVideoCapabilityRequest withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (!response.success || [response isMemberOfClass:SDLGenericResponse.class]) {
+ SDLLogW(@"Video capabilities response failed: %@", error);
+ responseHandler(nil);
+ BLOCK_RETURN;
+ }
+
+ SDLVideoStreamingCapability *videoCapability = ((SDLGetSystemCapabilityResponse *)response).systemCapability.videoStreamingCapability;
+ SDLLogD(@"Video capabilities response received: %@", videoCapability);
+
+ self.videoScaleManager.scale = (videoCapability != nil && videoCapability.scale != nil) ? videoCapability.scale.floatValue : (float)0.0;
+
+ responseHandler(videoCapability);
+ }];
+}
+
+/**
+ Pull the current format / resolution out of our preferred resolutions and craft a start video service payload out of it, then send a start service. If the format isn't one that we support, we're going to try the next format.
+ */
+- (void)sdl_sendVideoStartService {
+ SDLLogV(@"Attempting to find preferred format");
+ while (self.preferredFormatIndex < self.preferredFormats.count) {
+ if (![self.supportedFormats containsObject:self.preferredFormats[self.preferredFormatIndex]]) {
+ self.preferredFormatIndex++;
+ } else {
+ SDLLogV(@"Preferred format index found: %lu", self.preferredFormatIndex);
+ break;
+ }
+ }
+
+ // If this fails we have no known formats to use
+ if (self.preferredFormatIndex >= self.preferredFormats.count
+ || self.preferredResolutionIndex >= self.preferredResolutions.count) {
+ SDLLogE(@"No preferred format or no preferred resolution found that works: format index %lu, resolution index %lu", (unsigned long)self.preferredFormatIndex, (unsigned long)self.preferredResolutionIndex);
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+ return;
+ }
+
+ SDLVideoStreamingFormat *preferredFormat = self.preferredFormats[self.preferredFormatIndex];
+ SDLImageResolution *preferredResolution = self.preferredResolutions[self.preferredResolutionIndex];
+
+ SDLControlFramePayloadVideoStartService *startVideoPayload = [[SDLControlFramePayloadVideoStartService alloc] initWithVideoHeight:preferredResolution.resolutionHeight.intValue width:preferredResolution.resolutionWidth.intValue protocol:preferredFormat.protocol codec:preferredFormat.codec];
+
+ // Decide if we need to start a secure service or not
+ if ((self.requestedEncryptionType != SDLStreamingEncryptionFlagNone) && ([self.secureMakes containsObject:self.connectedVehicleMake])) {
+ SDLLogD(@"Sending secure video start service with payload: %@", startVideoPayload);
+ [self.protocol startSecureServiceWithType:SDLServiceTypeVideo payload:startVideoPayload.data tlsInitializationHandler:^(BOOL success, NSError *error) {
+ if (error) {
+ SDLLogE(@"TLS setup error: %@", error);
+ [self.videoStreamStateMachine transitionToState:SDLVideoStreamManagerStateStopped];
+ }
+ }];
+ } else {
+ SDLLogD(@"Sending insecure video start service with payload: %@", startVideoPayload);
+ [self.protocol startServiceWithType:SDLServiceTypeVideo payload:startVideoPayload.data];
+ }
+}
+
+#pragma mark Setters / Getters
+
+- (void)setRootViewController:(nullable UIViewController *)rootViewController {
+ if (self.focusableItemManager != nil) {
+ self.focusableItemManager.viewController = rootViewController;
+ }
+
+ if (self.carWindow != nil) {
+ self.carWindow.rootViewController = rootViewController;
+ }
+}
+
+- (nullable UIViewController *)rootViewController {
+ if (self.carWindow != nil) {
+ return self.carWindow.rootViewController;
+ } else {
+ return nil;
+ }
+}
+
+- (BOOL)isAppStateVideoStreamCapable {
+ return [self.appStateMachine isCurrentState:SDLAppStateActive];
+}
+
+- (BOOL)isHmiStateVideoStreamCapable {
+ return (![self.videoStreamingState isEqualToEnum:SDLVideoStreamingStateNotStreamable]
+ && ([self.hmiLevel isEqualToEnum:SDLHMILevelLimited] || [self.hmiLevel isEqualToEnum:SDLHMILevelFull]));
+}
+
+- (NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
+ SDLVideoStreamingFormat *h264raw = [[SDLVideoStreamingFormat alloc] initWithCodec:SDLVideoStreamingCodecH264 protocol:SDLVideoStreamingProtocolRAW];
+ SDLVideoStreamingFormat *h264rtp = [[SDLVideoStreamingFormat alloc] initWithCodec:SDLVideoStreamingCodecH264 protocol:SDLVideoStreamingProtocolRTP];
+
+ return @[h264raw, h264rtp];
+}
+
+- (NSString *)videoStreamBackgroundString {
+ return [NSString stringWithFormat:@"When it is safe to do so, open %@ on your phone", self.appName];
+}
+
+- (BOOL)isStreamingSupported {
+ return (self.systemCapabilityManager != nil) ? [self.systemCapabilityManager isCapabilitySupported:SDLSystemCapabilityTypeVideoStreaming] : YES;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeButtonManager.h b/SmartDeviceLink/private/SDLSubscribeButtonManager.h
index c73d3d83b..c73d3d83b 100644
--- a/SmartDeviceLink/SDLSubscribeButtonManager.h
+++ b/SmartDeviceLink/private/SDLSubscribeButtonManager.h
diff --git a/SmartDeviceLink/private/SDLSubscribeButtonManager.m b/SmartDeviceLink/private/SDLSubscribeButtonManager.m
new file mode 100644
index 000000000..5492b2362
--- /dev/null
+++ b/SmartDeviceLink/private/SDLSubscribeButtonManager.m
@@ -0,0 +1,294 @@
+//
+// SDLSDLSubscribeButtonManager.m
+// SmartDeviceLink
+//
+// Created by Nicole on 5/21/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSubscribeButtonManager.h"
+
+#import "SDLError.h"
+#import "SDLGlobals.h"
+#import "SDLHMIPermissions.h"
+#import "SDLLogMacros.h"
+#import "SDLOnButtonPress.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLOnPermissionsChange.h"
+#import "SDLPermissionItem.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLSubscribeButton.h"
+#import "SDLSubscribeButtonObserver.h"
+#import "SDLUnsubscribeButton.h"
+#import "SDLUnsubscribeButtonResponse.h"
+#import "SDLOnButtonEvent.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLSubscribeButtonManager()
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (strong, nonatomic) NSMutableDictionary<SDLButtonName, NSMutableArray<SDLSubscribeButtonObserver *> *> *subscribeButtonObservers;
+@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
+
+@end
+
+@implementation SDLSubscribeButtonManager
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _readWriteQueue = dispatch_queue_create_with_target("com.sdl.subscribeButtonManager.readWriteQueue", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
+
+ _connectionManager = connectionManager;
+ _subscribeButtonObservers = [NSMutableDictionary dictionary];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_handleButtonEvent:) name:SDLDidReceiveButtonEventNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_handleButtonPress:) name:SDLDidReceiveButtonPressNotification object:nil];
+
+ return self;
+}
+
+- (void)start { }
+
+- (void)stop {
+ __weak typeof(self) weakSelf = self;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ __strong typeof(weakSelf) strongself = weakSelf;
+ [strongself->_subscribeButtonObservers removeAllObjects];
+ }];
+}
+
+#pragma mark - Subscribe
+
+- (id<NSObject>)subscribeButton:(SDLButtonName)buttonName withUpdateHandler:(nullable SDLSubscribeButtonUpdateHandler)updateHandler {
+ SDLLogD(@"Subscribing to subscribe button with name: %@, with block", buttonName);
+
+ NSObject *observer = [[NSObject alloc] init];
+ SDLSubscribeButtonObserver *observerObject = [[SDLSubscribeButtonObserver alloc] initWithObserver:observer updateHandler:updateHandler];
+
+ if (self.subscribeButtonObservers[buttonName].count > 0) {
+ // The app has already subscribed to the button, simply add the observer to the list of observers for the button name.
+ [self sdl_addSubscribedObserver:observerObject forButtonName:buttonName];
+ } else {
+ // The app has not yet subscribed to the button, send the `SubscribeButton` request for the button name.
+ [self sdl_subscribeToButtonNamed:buttonName withObserverObject:observerObject];
+ }
+
+ return observer;
+}
+
+- (void)subscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer selector:(SEL)selector; {
+ SDLLogD(@"Subscribing to subscribe button with name: %@, observer object: %@, selector: %@", buttonName, observer, NSStringFromSelector(selector));
+
+ NSUInteger numberOfParametersInSelector = [NSStringFromSelector(selector) componentsSeparatedByString:@":"].count - 1;
+ if (numberOfParametersInSelector > 4) {
+ SDLLogE(@"Attempted to subscribe to a subscribe button using a selector that contains more than 4 parameters");
+ return;
+ }
+
+ if (observer == nil) {
+ SDLLogE(@"Attempted to subscribe to subscribe button with name %@ with a selector on a *nil* observer, which will always fail", buttonName);
+ return;
+ }
+
+ SDLSubscribeButtonObserver *observerObject = [[SDLSubscribeButtonObserver alloc] initWithObserver:observer selector:selector];
+ if (self.subscribeButtonObservers[buttonName].count > 0) {
+ [self sdl_addSubscribedObserver:observerObject forButtonName:buttonName];
+ return;
+ }
+
+ [self sdl_subscribeToButtonNamed:buttonName withObserverObject:observerObject];
+}
+
+/// Helper method for checking if the observer is currently subscribed to the button
+/// @param observer The observer
+/// @param buttonName The name of the button
+/// @return True if the observer is currently subscribed to the button; false if not
+- (BOOL)sdl_isSubscribedObserver:(id<NSObject>)observer forButtonName:(SDLButtonName)buttonName {
+ BOOL isSubscribedObserver = NO;
+ for (SDLSubscribeButtonObserver *subscribedObserver in self.subscribeButtonObservers[buttonName]) {
+ if (subscribedObserver.observer != observer ) { continue; }
+ isSubscribedObserver = YES;
+ break;
+ }
+
+ return isSubscribedObserver;
+}
+
+/// Helper method for adding an observer for the button
+/// @param subscribedObserver The observer
+/// @param buttonName The name of the button
+- (void)sdl_addSubscribedObserver:(SDLSubscribeButtonObserver *)subscribedObserver forButtonName:(SDLButtonName)buttonName {
+ __weak typeof(self) weakSelf = self;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (strongSelf.subscribeButtonObservers[buttonName] == nil) {
+ SDLLogV(@"Adding first subscriber for button: %@", buttonName);
+ strongSelf.subscribeButtonObservers[buttonName] = [NSMutableArray arrayWithObject:subscribedObserver];
+ } else {
+ SDLLogV(@"Adding another subscriber for button: %@", buttonName);
+ [strongSelf.subscribeButtonObservers[buttonName] addObject:subscribedObserver];
+ }
+ }];
+}
+
+#pragma mark Send Subscribe Request
+
+/// Helper method for sending a `SubscribeButton` request and notifying subscribers of button events.
+/// @param buttonName The name of the subscribe button
+/// @param observerObject The observer object
+- (void)sdl_subscribeToButtonNamed:(SDLButtonName)buttonName withObserverObject:(SDLSubscribeButtonObserver *)observerObject {
+ SDLSubscribeButton *subscribeButton = [[SDLSubscribeButton alloc] initWithButtonName:buttonName handler:nil];
+ __weak typeof(self) weakSelf = self;
+
+ [self.connectionManager sendConnectionRequest:subscribeButton withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ // Check if the request was successful. If a subscription request got sent for a button that is already subscribed then the module will respond with `IGNORED` so just act as if subscription succeeded.
+ if (!response.success.boolValue && ![response.resultCode isEqualToEnum:SDLResultIgnored]) {
+ [strongSelf sdl_invokeObserver:observerObject withButtonName:buttonName buttonPress:nil buttonEvent:nil error:error];
+ return;
+ }
+
+ [strongSelf sdl_addSubscribedObserver:observerObject forButtonName:buttonName];
+ }];
+}
+
+#pragma mark - Unsubscribe
+#pragma mark Send Unsubscribe Request
+
+- (void)unsubscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer withCompletionHandler:(nullable SDLSubscribeButtonUpdateCompletionHandler)completionHandler {
+ if (self.subscribeButtonObservers[buttonName] == nil || ![self sdl_isSubscribedObserver:observer forButtonName:buttonName]) {
+ SDLLogE(@"Attempting to unsubscribe to the %@ subscribe button which is not currently subscribed", buttonName);
+ return completionHandler([NSError sdl_subscribeButtonManager_notSubscribed]);
+ }
+
+ // If we have more than one observer, just remove this observer
+ if (self.subscribeButtonObservers[buttonName].count > 1) {
+ [self sdl_removeSubscribedObserver:observer forButtonName:buttonName];
+ return completionHandler(nil);
+ }
+
+ // If there's only one observer, unsubscribe from the button
+ SDLUnsubscribeButton *unsubscribeButton = [[SDLUnsubscribeButton alloc] initWithButtonName:buttonName];
+ __weak typeof(self) weakSelf = self;
+ [self.connectionManager sendConnectionRequest:unsubscribeButton withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!response.success.boolValue) {
+ SDLLogE(@"Attempt to unsubscribe from subscribe button %@ failed", buttonName);
+ return completionHandler(error);
+ }
+
+ SDLLogD(@"Successfully unsubscribed from subscribe button named %@", buttonName);
+ [strongSelf sdl_removeSubscribedObserver:observer forButtonName:buttonName];
+ return completionHandler(error);
+ }];
+}
+
+/// Helper method for removing an observer for the button
+/// @param observer The observer
+/// @param buttonName The name of the button
+- (void)sdl_removeSubscribedObserver:(id<NSObject>)observer forButtonName:(SDLButtonName)buttonName {
+ __weak typeof(self) weakSelf = self;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ for (NSUInteger i = 0; i < strongSelf.subscribeButtonObservers[buttonName].count; i++) {
+ SDLSubscribeButtonObserver *subscribedObserver = (SDLSubscribeButtonObserver *)strongSelf.subscribeButtonObservers[buttonName][i];
+ if (subscribedObserver.observer != observer) { continue; }
+ // Okay to mutate because we will break immediately afterward
+ [strongSelf.subscribeButtonObservers[buttonName] removeObjectAtIndex:i];
+ break;
+ }
+ }];
+}
+
+#pragma mark - Notifications
+
+/// Button event notification from the module
+/// @param notification Information about the button event
+- (void)sdl_handleButtonEvent:(SDLRPCNotificationNotification *)notification {
+ SDLOnButtonEvent *buttonEvent = (SDLOnButtonEvent *)notification.notification;
+ if (buttonEvent == nil) { return; }
+
+ SDLButtonName buttonName = buttonEvent.buttonName;
+ for (SDLSubscribeButtonObserver *subscribeButtonObserver in self.subscribeButtonObservers[buttonName]) {
+ [self sdl_invokeObserver:subscribeButtonObserver withButtonName:buttonName buttonPress:nil buttonEvent:buttonEvent error:nil];
+ }
+}
+
+/// Button press notification from the module
+/// @param notification Information about the button press
+- (void)sdl_handleButtonPress:(SDLRPCNotificationNotification *)notification {
+ SDLOnButtonPress *buttonPress = (SDLOnButtonPress *)notification.notification;
+ if (buttonPress == nil) { return; }
+
+ SDLButtonName buttonName = buttonPress.buttonName;
+ for (SDLSubscribeButtonObserver *subscribeButtonObserver in self.subscribeButtonObservers[buttonName]) {
+ [self sdl_invokeObserver:subscribeButtonObserver withButtonName:buttonName buttonPress:buttonPress buttonEvent:nil error:nil];
+ }
+}
+
+/// Helper method for notifying subscribers of button events.
+/// @param observer The object that will have `selector` called
+/// @param buttonName The name of the subscribe button
+/// @param buttonPress Indicates whether this is a long or short button press event
+/// @param buttonEvent Indicates that the button has been depressed or released
+/// @param error The error, if one occurred; nil if not
+- (void)sdl_invokeObserver:(SDLSubscribeButtonObserver *)observer withButtonName:(SDLButtonName)buttonName buttonPress:(nullable SDLOnButtonPress *)buttonPress buttonEvent:(nullable SDLOnButtonEvent *)buttonEvent error:(nullable NSError *)error {
+ if (observer.updateBlock != nil) {
+ observer.updateBlock(buttonPress, buttonEvent, error);
+ } else {
+ if (![observer.observer respondsToSelector:observer.selector]) {
+ @throw [NSException sdl_invalidSubscribeButtonSelectorExceptionWithSelector:observer.selector];
+ }
+
+ NSUInteger numberOfParametersInSelector = [NSStringFromSelector(observer.selector) componentsSeparatedByString:@":"].count - 1;
+
+ // If a selector has 0, 1, 2, or 3 parameters and only a button event has occured, do not notify the observer of the button event.
+ if (buttonEvent != nil && numberOfParametersInSelector <= 3) {
+ return;
+ }
+
+ NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[(NSObject *)observer.observer methodSignatureForSelector:observer.selector]];
+ [invocation setSelector:observer.selector];
+ [invocation setTarget:observer.observer];
+
+ if (numberOfParametersInSelector >= 1) {
+ [invocation setArgument:&buttonName atIndex:2];
+ }
+ if (numberOfParametersInSelector >= 2) {
+ [invocation setArgument:&error atIndex:3];
+ }
+ if (numberOfParametersInSelector >= 3) {
+ [invocation setArgument:&buttonPress atIndex:4];
+ }
+ if (numberOfParametersInSelector >= 4) {
+ [invocation setArgument:&buttonEvent atIndex:5];
+ }
+ if (numberOfParametersInSelector >= 5) {
+ @throw [NSException sdl_invalidSubscribeButtonSelectorExceptionWithSelector:observer.selector];
+ }
+
+ [invocation invoke];
+ }
+}
+
+#pragma mark - Getters
+
+- (NSMutableDictionary<SDLButtonName, NSMutableArray<SDLSubscribeButtonObserver *> *> *)subscribeButtonObservers {
+ __block NSMutableDictionary<SDLButtonName, NSMutableArray<SDLSubscribeButtonObserver *> *> *dict = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ dict = self->_subscribeButtonObservers;
+ }];
+
+ return dict;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeButtonObserver.h b/SmartDeviceLink/private/SDLSubscribeButtonObserver.h
index 49e783f97..49e783f97 100644
--- a/SmartDeviceLink/SDLSubscribeButtonObserver.h
+++ b/SmartDeviceLink/private/SDLSubscribeButtonObserver.h
diff --git a/SmartDeviceLink/SDLSubscribeButtonObserver.m b/SmartDeviceLink/private/SDLSubscribeButtonObserver.m
index 9c9b72f68..9c9b72f68 100644
--- a/SmartDeviceLink/SDLSubscribeButtonObserver.m
+++ b/SmartDeviceLink/private/SDLSubscribeButtonObserver.m
diff --git a/SmartDeviceLink/private/SDLSystemCapabilityObserver.h b/SmartDeviceLink/private/SDLSystemCapabilityObserver.h
new file mode 100644
index 000000000..0e08c028e
--- /dev/null
+++ b/SmartDeviceLink/private/SDLSystemCapabilityObserver.h
@@ -0,0 +1,57 @@
+//
+// SDLSystemCapabilityObserver.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 5/23/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class SDLSystemCapability;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// A handler mirroring the one in SDLSystemCapabilityManager.h for `initWithObserver:block:`
+typedef void (^SDLCapabilityUpdateHandler)(SDLSystemCapability *capability);
+
+/// A handler mirroring the one in SDLSystemCapabilityManager.h for `initWithObserver:updateHandler:`
+typedef void (^SDLCapabilityUpdateWithErrorHandler)(SDLSystemCapability *_Nullable capability, BOOL subscribed, NSError *_Nullable error);
+
+/**
+ An observer object for SDLSystemCapabilityManager
+ */
+@interface SDLSystemCapabilityObserver : NSObject
+
+/**
+ The object that will be used to call the selector if available, and to unsubscribe this observer
+ */
+@property (strong, nonatomic) id<NSObject> observer;
+
+/**
+ A selector called when the observer is triggered
+ */
+@property (assign, nonatomic) SEL selector;
+
+/// A block called when the observer is triggered
+@property (copy, nonatomic) SDLCapabilityUpdateWithErrorHandler updateBlock;
+
+/**
+ Create an observer using an object and a selector on that object
+
+ @param observer The object to be called when the subscription triggers
+ @param selector The selector to be called when the subscription triggers
+ @return The observer
+ */
+- (instancetype)initWithObserver:(id<NSObject>)observer selector:(SEL)selector;
+
+/// Create an observer using an object and a callback block
+
+/// @param observer The object that can be used to unsubscribe the block
+/// @param block The block that will be called when the subscription triggers
+/// @return The observer
+- (instancetype)initWithObserver:(id<NSObject>)observer updateHandler:(SDLCapabilityUpdateWithErrorHandler)block;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLSystemCapabilityObserver.m b/SmartDeviceLink/private/SDLSystemCapabilityObserver.m
new file mode 100644
index 000000000..f4bd3eb7a
--- /dev/null
+++ b/SmartDeviceLink/private/SDLSystemCapabilityObserver.m
@@ -0,0 +1,45 @@
+//
+// SDLSystemCapabilityObserver.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 5/23/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSystemCapabilityObserver.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSystemCapabilityObserver
+
+- (instancetype)initWithObserver:(id<NSObject>)observer selector:(SEL)selector {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _observer = observer;
+ _selector = selector;
+
+ return self;
+}
+
+- (instancetype)initWithObserver:(id<NSObject>)observer updateHandler:(SDLCapabilityUpdateWithErrorHandler)block {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _observer = observer;
+ _updateBlock = block;
+
+ return self;
+}
+
+- (NSString *)description {
+ if (self.selector) {
+ return [NSString stringWithFormat:@"Observer: %@[%@] - %@", [_observer class], _observer, NSStringFromSelector(_selector)];
+ } else {
+ return [NSString stringWithFormat:@"Block Observer: %@", _observer];
+ }
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTCPTransport.h b/SmartDeviceLink/private/SDLTCPTransport.h
index 5b7ac09f0..5b7ac09f0 100644
--- a/SmartDeviceLink/SDLTCPTransport.h
+++ b/SmartDeviceLink/private/SDLTCPTransport.h
diff --git a/SmartDeviceLink/SDLTCPTransport.m b/SmartDeviceLink/private/SDLTCPTransport.m
index 962c1ffc4..962c1ffc4 100644
--- a/SmartDeviceLink/SDLTCPTransport.m
+++ b/SmartDeviceLink/private/SDLTCPTransport.m
diff --git a/SmartDeviceLink/private/SDLTextAndGraphicManager.h b/SmartDeviceLink/private/SDLTextAndGraphicManager.h
new file mode 100644
index 000000000..5f402313e
--- /dev/null
+++ b/SmartDeviceLink/private/SDLTextAndGraphicManager.h
@@ -0,0 +1,105 @@
+//
+// SDLTextAndGraphicManager.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 2/22/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLMetadataType.h"
+#import "SDLTextAlignment.h"
+
+@class SDLArtwork;
+@class SDLFileManager;
+@class SDLTemplateConfiguration;
+@class SDLTextAndGraphicConfiguration;
+@class SDLSystemCapabilityManager;
+
+@protocol SDLConnectionManagerType;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The handler run when the update has completed
+
+ @param error An error if the update failed and an error occurred
+ */
+typedef void(^SDLTextAndGraphicUpdateCompletionHandler)(NSError *__nullable error);
+
+@interface SDLTextAndGraphicManager : NSObject
+
+/**
+ A text field that corresponds to SDLShow mainField1. Setting to nil is equivalent to setting an empty string.
+ */
+@property (copy, nonatomic, nullable) NSString *textField1;
+@property (copy, nonatomic, nullable) NSString *textField2;
+@property (copy, nonatomic, nullable) NSString *textField3;
+@property (copy, nonatomic, nullable) NSString *textField4;
+@property (copy, nonatomic, nullable) NSString *mediaTrackTextField;
+@property (copy, nonatomic, nullable) NSString *title;
+@property (strong, nonatomic, nullable) SDLArtwork *primaryGraphic;
+@property (strong, nonatomic, nullable) SDLArtwork *secondaryGraphic;
+
+@property (copy, nonatomic, nullable) SDLTextAlignment alignment;
+@property (copy, nonatomic, nullable) SDLMetadataType textField1Type;
+@property (copy, nonatomic, nullable) SDLMetadataType textField2Type;
+@property (copy, nonatomic, nullable) SDLMetadataType textField3Type;
+@property (copy, nonatomic, nullable) SDLMetadataType textField4Type;
+
+@property (copy, nonatomic, nullable) SDLTemplateConfiguration *templateConfiguration;
+
+/**
+ * If you want to remove the current artwork, set it to this blank artwork.
+ *
+ * This artwork is set to null on disconnects to prevent a `sdl_fileManager_fileDoesNotExistError` error when the artwork is sent again on reconnects.
+ */
+@property (strong, nonatomic, readonly, nullable) SDLArtwork *blankArtwork;
+
+@property (assign, nonatomic, getter=isBatchingUpdates) BOOL batchUpdates;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ Create a Text and Image Manager with a custom SDLTextAndImageConfiguration.
+
+ @return A new SDLTextAndImageManager
+ */
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager;
+
+/// Starts the manager. This method is used internally.
+- (void)start;
+
+/**
+ * Stops the manager. This method is used internally.
+ */
+- (void)stop;
+
+/**
+ Update text fields with new text set into the text field properties. Pass an empty string `\@""` to clear the text field.
+
+ If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
+
+ If 3 lines are available: [field1, field2, field3 - field 4]
+
+ If 2 lines are available: [field1 - field2, field3 - field4]
+
+ If 1 line is available: [field1 - field2 - field3 - field4]
+
+ Also updates the primary and secondary images with new image(s) if new one(s) been set. This method will take care of naming the files (based on a hash). This is assumed to be a non-persistant image.
+
+ If it needs to be uploaded, it will be. Once the upload is complete, the on-screen graphic will be updated.
+
+ @param handler A handler run when the fields have finished updating, with an error if the update failed. This handler may be called multiple times when the text update is sent and the image update is sent.
+ */
+- (void)updateWithCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler;
+
+/// Change the current layout to a new layout and optionally update the layout's night and day color schemes. The values set for the text, graphics, buttons and template title persist between layout changes. To update the text, graphics, buttons and template title at the same time as the template, batch all the updates between `beginUpdates` and `endUpdates`. If the layout update fails while batching, then the updated text, graphics, buttons or template title will also not be updated.
+/// @param templateConfiguration The new configuration of the template, including the layout and color scheme.
+/// @param handler A handler that will be called when the layout change finished.
+- (void)changeLayout:(SDLTemplateConfiguration *)templateConfiguration withCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLTextAndGraphicManager.m b/SmartDeviceLink/private/SDLTextAndGraphicManager.m
new file mode 100644
index 000000000..cd6ad0894
--- /dev/null
+++ b/SmartDeviceLink/private/SDLTextAndGraphicManager.m
@@ -0,0 +1,416 @@
+//
+// SDLTextAndGraphicManager.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 2/22/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLTextAndGraphicManager.h"
+
+#import "SDLArtwork.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLDisplayCapability.h"
+#import "SDLError.h"
+#import "SDLFileManager.h"
+#import "SDLImage.h"
+#import "SDLLogMacros.h"
+#import "SDLMetadataTags.h"
+#import "SDLNotificationConstants.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLSetDisplayLayoutResponse.h"
+#import "SDLShow.h"
+#import "SDLSystemCapability.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLTemplateConfiguration.h"
+#import "SDLTextField.h"
+#import "SDLTextAndGraphicUpdateOperation.h"
+#import "SDLTextAndGraphicState.h"
+#import "SDLWindowCapability.h"
+#import "SDLWindowCapability+ScreenManagerExtensions.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLTextAndGraphicManager()
+
+// Dependencies
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic) SDLFileManager *fileManager;
+@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
+
+/**
+ A state describing the current text and images on the screen as well as the current template (this does not include soft buttons, menu items, etc.)
+ */
+@property (strong, nonatomic) SDLTextAndGraphicState *currentScreenData;
+
+@property (strong, nonatomic) NSOperationQueue *transactionQueue;
+
+@property (strong, nonatomic, nullable) SDLWindowCapability *windowCapability;
+@property (strong, nonatomic, nullable) SDLHMILevel currentLevel;
+
+@property (strong, nonatomic, nullable) SDLArtwork *blankArtwork;
+
+@property (assign, nonatomic) BOOL waitingOnHMILevelUpdateToUpdate;
+@property (assign, nonatomic) BOOL isDirty;
+
+@end
+
+@implementation SDLTextAndGraphicManager
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _connectionManager = connectionManager;
+ _fileManager = fileManager;
+ _systemCapabilityManager = systemCapabilityManager;
+ _transactionQueue = [self sdl_newTransactionQueue];
+
+ _alignment = SDLTextAlignmentCenter;
+
+ _currentScreenData = [[SDLTextAndGraphicState alloc] init];
+ _currentLevel = SDLHMILevelNone;
+
+ _waitingOnHMILevelUpdateToUpdate = NO;
+ _isDirty = NO;
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
+
+ return self;
+}
+
+- (void)start {
+ SDLLogD(@"Starting manager");
+
+ // Make sure none of the properties were set after the manager was shut down
+ [self sdl_reset];
+
+ [self.systemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self selector:@selector(sdl_displayCapabilityDidUpdate:)];
+}
+
+- (void)stop {
+ SDLLogD(@"Stopping manager");
+ [self sdl_reset];
+
+ [self.systemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypeDisplays withObserver:self];
+}
+
+- (void)sdl_reset {
+ SDLLogV(@"Resetting properties");
+ _textField1 = nil;
+ _textField2 = nil;
+ _textField3 = nil;
+ _textField4 = nil;
+ _mediaTrackTextField = nil;
+ _primaryGraphic = nil;
+ _secondaryGraphic = nil;
+ _alignment = SDLTextAlignmentCenter;
+ _textField1Type = nil;
+ _textField2Type = nil;
+ _textField3Type = nil;
+ _textField4Type = nil;
+
+ _currentScreenData = [[SDLTextAndGraphicState alloc] init];
+ _transactionQueue = [self sdl_newTransactionQueue];
+ _windowCapability = nil;
+ _currentLevel = SDLHMILevelNone;
+ _blankArtwork = nil;
+ _waitingOnHMILevelUpdateToUpdate = NO;
+ _isDirty = NO;
+}
+
+- (NSOperationQueue *)sdl_newTransactionQueue {
+ NSOperationQueue *queue = [[NSOperationQueue alloc] init];
+ queue.name = @"SDLTextAndGraphicManager Transaction Queue";
+ queue.maxConcurrentOperationCount = 1;
+ queue.qualityOfService = NSQualityOfServiceUserInitiated;
+ queue.suspended = YES;
+
+ return queue;
+}
+
+/// Suspend the queue if the window capabilities are nil (we assume that text and graphics are not supported yet)
+/// OR if the HMI level is NONE since we want to delay sending RPCs until we're in non-NONE
+- (void)sdl_updateTransactionQueueSuspended {
+ if (self.windowCapability == nil || [self.currentLevel isEqualToEnum:SDLHMILevelNone]) {
+ SDLLogD(@"Suspending the transaction queue. Current HMI level is NONE: %@, window capabilities are nil: %@", ([self.currentLevel isEqualToEnum:SDLHMILevelNone] ? @"YES" : @"NO"), (self.windowCapability == nil ? @"YES" : @"NO"));
+ self.transactionQueue.suspended = YES;
+ } else {
+ SDLLogD(@"Starting the transaction queue");
+ self.transactionQueue.suspended = NO;
+ }
+}
+
+#pragma mark - Upload / Send
+
+- (void)updateWithCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler {
+ if (self.isBatchingUpdates) { return; }
+
+ if (self.isDirty) {
+ self.isDirty = NO;
+ [self sdl_updateAndCancelPreviousOperations:YES completionHandler:handler];
+ }
+}
+
+- (void)sdl_updateAndCancelPreviousOperations:(BOOL)supersedePreviousOperations completionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler {
+ SDLLogD(@"Updating text and graphics");
+ if (self.transactionQueue.operationCount > 0 && supersedePreviousOperations) {
+ SDLLogV(@"Transactions already exist, cancelling them");
+ [self.transactionQueue cancelAllOperations];
+ }
+
+ __weak typeof(self) weakSelf = self;
+ SDLTextAndGraphicUpdateOperation *updateOperation = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:self.connectionManager fileManager:self.fileManager currentCapabilities:self.windowCapability currentScreenData:self.currentScreenData newState:[self currentState] currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState *_Nullable newScreenData, NSError *_Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (newScreenData != nil) {
+ // Update our current screen data
+ strongSelf.currentScreenData = newScreenData;
+ [strongSelf sdl_updatePendingOperationsWithNewScreenData:newScreenData];
+ } else if (error != nil) {
+ // Invalidate data that's different from our current screen data if a Show or SetDisplayLayout fails. This will prevent subsequent `Show`s from failing if the request failed due to the developer setting invalid data or subsequent `SetDisplayLayout`s from failing if the template is not supported on the module.
+ [strongSelf sdl_resetFieldsToCurrentScreenData];
+ [strongSelf sdl_updatePendingOperationsWithNewScreenData:strongSelf.currentScreenData];
+ }
+ } updateCompletionHandler:handler];
+
+ __weak typeof(updateOperation) weakOp = updateOperation;
+ updateOperation.completionBlock = ^{
+ if (weakOp.error != nil) {
+ SDLLogE(@"Update operation failed with error: %@", weakOp.error);
+ }
+ };
+ [self.transactionQueue addOperation:updateOperation];
+}
+
+- (void)sdl_updatePendingOperationsWithNewScreenData:(SDLTextAndGraphicState *)newScreenData {
+ for (NSOperation *operation in self.transactionQueue.operations) {
+ if (operation.isExecuting) { continue; }
+ SDLTextAndGraphicUpdateOperation *updateOp = (SDLTextAndGraphicUpdateOperation *)operation;
+
+ updateOp.currentScreenData = newScreenData;
+ }
+}
+
+- (void)sdl_resetFieldsToCurrentScreenData {
+ _textField1 = _currentScreenData.textField1;
+ _textField2 = _currentScreenData.textField2;
+ _textField3 = _currentScreenData.textField3;
+ _textField4 = _currentScreenData.textField4;
+ _mediaTrackTextField = _currentScreenData.mediaTrackTextField;
+ _title = _currentScreenData.title;
+ _alignment = _currentScreenData.alignment;
+ _textField1Type = _currentScreenData.textField1Type;
+ _textField2Type = _currentScreenData.textField2Type;
+ _textField3Type = _currentScreenData.textField3Type;
+ _textField4Type = _currentScreenData.textField4Type;
+ _templateConfiguration = _currentScreenData.templateConfig;
+ _primaryGraphic = _currentScreenData.primaryGraphic;
+ _secondaryGraphic = _currentScreenData.secondaryGraphic;
+}
+
+#pragma mark - Change Layout
+
+- (void)changeLayout:(SDLTemplateConfiguration *)templateConfiguration withCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)handler {
+ self.templateConfiguration = templateConfiguration;
+ [self updateWithCompletionHandler:handler];
+}
+
+#pragma mark - Convert to State
+
+- (SDLTextAndGraphicState *)currentState {
+ return [[SDLTextAndGraphicState alloc] initWithTextField1:_textField1 textField2:_textField2 textField3:_textField3 textField4:_textField4 mediaText:_mediaTrackTextField title:_title primaryGraphic:_primaryGraphic secondaryGraphic:_secondaryGraphic alignment:_alignment textField1Type:_textField1Type textField2Type:_textField2Type textField3Type:_textField3Type textField4Type:_textField4Type templateConfiguration:_templateConfiguration];
+}
+
+#pragma mark - Helpers
+
+- (NSArray<NSString *> *)sdl_findNonNilTextFields {
+ NSMutableArray *array = [NSMutableArray array];
+ (self.textField1.length > 0) ? [array addObject:self.textField1] : nil;
+ (self.textField2.length > 0) ? [array addObject:self.textField2] : nil;
+ (self.textField3.length > 0) ? [array addObject:self.textField3] : nil;
+ (self.textField4.length > 0) ? [array addObject:self.textField4] : nil;
+
+ return [array copy];
+}
+
+- (BOOL)sdl_hasData {
+ BOOL hasTextFields = ([self sdl_findNonNilTextFields].count > 0) || (self.title.length > 0) || (self.mediaTrackTextField.length > 0);
+ BOOL hasImageFields = (self.primaryGraphic != nil) || (self.secondaryGraphic != nil);
+
+ return hasTextFields || hasImageFields;
+}
+
+#pragma mark - Getters / Setters
+
+- (void)setTextField1:(nullable NSString *)textField1 {
+ _textField1 = textField1;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ // If we aren't batching, send the update immediately, if we are, set ourselves as dirty (so we know we should send an update after the batch ends)
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTextField2:(nullable NSString *)textField2 {
+ _textField2 = textField2;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTextField3:(nullable NSString *)textField3 {
+ _textField3 = textField3;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTextField4:(nullable NSString *)textField4 {
+ _textField4 = textField4;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setMediaTrackTextField:(nullable NSString *)mediaTrackTextField {
+ _mediaTrackTextField = mediaTrackTextField;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTitle:(nullable NSString *)title {
+ _title = title;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setPrimaryGraphic:(nullable SDLArtwork *)primaryGraphic {
+ _primaryGraphic = primaryGraphic;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setSecondaryGraphic:(nullable SDLArtwork *)secondaryGraphic {
+ _secondaryGraphic = secondaryGraphic;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setAlignment:(nullable SDLTextAlignment)alignment {
+ _alignment = alignment ? alignment : SDLTextAlignmentCenter;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTextField1Type:(nullable SDLMetadataType)textField1Type {
+ _textField1Type = textField1Type;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTextField2Type:(nullable SDLMetadataType)textField2Type {
+ _textField2Type = textField2Type;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTextField3Type:(nullable SDLMetadataType)textField3Type {
+ _textField3Type = textField3Type;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTextField4Type:(nullable SDLMetadataType)textField4Type {
+ _textField4Type = textField4Type;
+ _isDirty = YES;
+ if (!self.isBatchingUpdates) {
+ [self updateWithCompletionHandler:nil];
+ }
+}
+
+- (void)setTemplateConfiguration:(nullable SDLTemplateConfiguration *)templateConfiguration {
+ _templateConfiguration = templateConfiguration;
+ _isDirty = YES;
+ // Don't do the `isBatchingUpdates` like elsewhere because the call is already handled in `changeLayout:withCompletionHandler:`
+}
+
+- (nullable SDLArtwork *)blankArtwork {
+ if (_blankArtwork != nil) {
+ return _blankArtwork;
+ }
+
+ UIGraphicsBeginImageContextWithOptions(CGSizeMake(5, 5), NO, 0.0);
+ UIImage *blankImage = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+
+ _blankArtwork = [SDLArtwork artworkWithImage:blankImage name:@"sdl_BlankArt" asImageFormat:SDLArtworkImageFormatPNG];
+
+ return _blankArtwork;
+}
+
+#pragma mark - Subscribed notifications
+
+- (void)sdl_displayCapabilityDidUpdate:(SDLSystemCapability *)systemCapability {
+ // Extract and update the capabilities
+ NSArray<SDLDisplayCapability *> *capabilities = systemCapability.displayCapabilities;
+ if (capabilities == nil || capabilities.count == 0) {
+ self.windowCapability = nil;
+ } else {
+ SDLDisplayCapability *mainDisplay = capabilities[0];
+ for (SDLWindowCapability *windowCapability in mainDisplay.windowCapabilities) {
+ NSUInteger currentWindowID = windowCapability.windowID != nil ? windowCapability.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
+ if (currentWindowID != SDLPredefinedWindowsDefaultWindow) { continue; }
+
+ // Check if the window capability is equal to the one we already have. If it is, abort.
+ if ([windowCapability isEqual:self.windowCapability]) { return; }
+ self.windowCapability = windowCapability;
+ break;
+ }
+ }
+
+ [self sdl_updateTransactionQueueSuspended];
+
+ // Auto-send an updated show
+ if ([self sdl_hasData]) {
+ // TODO: HAX: Capability updates cannot supersede earlier updates because of the case where a developer batched a `changeLayout` call w/ T&G changes on <6.0 systems could cause this to come in before the operation completes. That would cause the operation to report a "failure" (because it was superseded by this call) when in fact the operation didn't fail at all and is just being adjusted. Even though iOS is able to tell the developer that it was superseded, Java Suite cannot, and therefore we are matching functionality with their library.
+ [self sdl_updateAndCancelPreviousOperations:NO completionHandler:nil];
+ }
+}
+
+- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
+ SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
+ self.currentLevel = hmiStatus.hmiLevel;
+ [self sdl_updateTransactionQueueSuspended];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLTextAndGraphicState.h b/SmartDeviceLink/private/SDLTextAndGraphicState.h
new file mode 100644
index 000000000..e0f61b5c6
--- /dev/null
+++ b/SmartDeviceLink/private/SDLTextAndGraphicState.h
@@ -0,0 +1,42 @@
+//
+// SDLTextAndGraphicState.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 8/13/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLMetadataType.h"
+#import "SDLTextAlignment.h"
+
+@class SDLArtwork;
+@class SDLTemplateConfiguration;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLTextAndGraphicState : NSObject <NSCopying>
+
+@property (copy, nonatomic, nullable) NSString *textField1;
+@property (copy, nonatomic, nullable) NSString *textField2;
+@property (copy, nonatomic, nullable) NSString *textField3;
+@property (copy, nonatomic, nullable) NSString *textField4;
+@property (copy, nonatomic, nullable) NSString *mediaTrackTextField;
+@property (copy, nonatomic, nullable) NSString *title;
+@property (strong, nonatomic, nullable) SDLArtwork *primaryGraphic;
+@property (strong, nonatomic, nullable) SDLArtwork *secondaryGraphic;
+
+@property (copy, nonatomic, nullable) SDLTextAlignment alignment;
+@property (copy, nonatomic, nullable) SDLMetadataType textField1Type;
+@property (copy, nonatomic, nullable) SDLMetadataType textField2Type;
+@property (copy, nonatomic, nullable) SDLMetadataType textField3Type;
+@property (copy, nonatomic, nullable) SDLMetadataType textField4Type;
+
+@property (copy, nonatomic, nullable) SDLTemplateConfiguration *templateConfig;
+
+- (instancetype)initWithTextField1:(nullable NSString *)textField1 textField2:(nullable NSString *)textField2 textField3:(nullable NSString *)textField3 textField4:(nullable NSString *)textField4 mediaText:(nullable NSString *)mediaTrackTextField title:(nullable NSString *)title primaryGraphic:(nullable SDLArtwork *)primaryGraphic secondaryGraphic:(nullable SDLArtwork *)secondaryGraphic alignment:(nullable SDLTextAlignment)alignment textField1Type:(nullable SDLMetadataType)textField1Type textField2Type:(nullable SDLMetadataType)textField2Type textField3Type:(nullable SDLMetadataType)textField3Type textField4Type:(nullable SDLMetadataType)textField4Type templateConfiguration:(nullable SDLTemplateConfiguration *)templateConfig;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLTextAndGraphicState.m b/SmartDeviceLink/private/SDLTextAndGraphicState.m
new file mode 100644
index 000000000..c14afe5fb
--- /dev/null
+++ b/SmartDeviceLink/private/SDLTextAndGraphicState.m
@@ -0,0 +1,61 @@
+//
+// SDLTextAndGraphicState.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 8/13/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLTextAndGraphicState.h"
+
+#import "SDLArtwork.h"
+#import "SDLTemplateConfiguration.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLTextAndGraphicState
+
+- (instancetype)initWithTextField1:(nullable NSString *)textField1 textField2:(nullable NSString *)textField2 textField3:(nullable NSString *)textField3 textField4:(nullable NSString *)textField4 mediaText:(nullable NSString *)mediaTrackTextField title:(nullable NSString *)title primaryGraphic:(nullable SDLArtwork *)primaryGraphic secondaryGraphic:(nullable SDLArtwork *)secondaryGraphic alignment:(nullable SDLTextAlignment)alignment textField1Type:(nullable SDLMetadataType)textField1Type textField2Type:(nullable SDLMetadataType)textField2Type textField3Type:(nullable SDLMetadataType)textField3Type textField4Type:(nullable SDLMetadataType)textField4Type templateConfiguration:(nullable SDLTemplateConfiguration *)templateConfig {
+ self = [self init];
+ if (!self) { return nil; }
+
+ _textField1 = textField1;
+ _textField2 = textField2;
+ _textField3 = textField3;
+ _textField4 = textField4;
+ _mediaTrackTextField = mediaTrackTextField;
+ _title = title;
+ _primaryGraphic = primaryGraphic;
+ _secondaryGraphic = secondaryGraphic;
+ _alignment = alignment;
+ _textField1Type = textField1Type;
+ _textField2Type = textField2Type;
+ _textField3Type = textField3Type;
+ _textField4Type = textField4Type;
+ _templateConfig = templateConfig;
+
+ return self;
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"Text Field 1: %@, 2: %@, 3: %@, 4: %@, media track: %@, title: %@, alignment: %@, text 1 type: %@, 2: %@, 3: %@, 4: %@, primary graphic: %@, secondary graphic: %@, template config: %@", _textField1, _textField2, _textField3, _textField4, _mediaTrackTextField, _title, _alignment, _textField1Type, _textField2Type, _textField3Type, _textField4Type, _primaryGraphic, _secondaryGraphic, _templateConfig];
+}
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ return [[SDLTextAndGraphicState allocWithZone:zone] initWithTextField1:[_textField1 copy] textField2:[_textField2 copy] textField3:[_textField3 copy] textField4:[_textField4 copy] mediaText:[_mediaTrackTextField copy] title:[_title copy] primaryGraphic:[_primaryGraphic copy] secondaryGraphic:[_secondaryGraphic copy] alignment:[_alignment copy] textField1Type:[_textField1Type copy] textField2Type:[_textField2Type copy] textField3Type:[_textField3Type copy] textField4Type:[_textField4Type copy] templateConfiguration:[_templateConfig copy]];
+}
+
+- (BOOL)isEqualToTextAndGraphicState:(SDLTextAndGraphicState *)state {
+ return [_textField1 isEqualToString:state.textField1] && [_textField2 isEqualToString:state.textField2] && [_textField3 isEqualToString:state.textField3] && [_textField4 isEqualToString:state.textField4] && [_mediaTrackTextField isEqualToString:state.mediaTrackTextField] && [_title isEqualToString:state.title] && [_primaryGraphic isEqual:state.primaryGraphic] && [_secondaryGraphic isEqual:state.secondaryGraphic] && [_alignment isEqualToString:state.alignment] && [_textField1Type isEqualToString:state.textField1Type] && [_textField2Type isEqualToString:state.textField2Type] && [_textField3Type isEqualToString:state.textField3Type] && [_textField4Type isEqualToString:state.textField4Type] && [_templateConfig isEqual:state.templateConfig];
+}
+
+- (BOOL)isEqual:(id)object {
+ if (self == object) { return YES; }
+ if (![object isMemberOfClass:self.class]) { return NO; }
+
+ return [self isEqualToTextAndGraphicState:(SDLTextAndGraphicState *)object];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.h b/SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.h
new file mode 100644
index 000000000..d3f88b667
--- /dev/null
+++ b/SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.h
@@ -0,0 +1,43 @@
+//
+// SDLTextAndGraphicUpdateOperation.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 8/13/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLAsynchronousOperation.h"
+
+@class SDLArtwork;
+@class SDLFileManager;
+@class SDLImageField;
+@class SDLTextField;
+@class SDLShow;
+@class SDLTemplateConfiguration;
+@class SDLTextAndGraphicState;
+@class SDLWindowCapability;
+
+@protocol SDLConnectionManagerType;
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void(^SDLTextAndGraphicUpdateCompletionHandler)(NSError *__nullable error);
+typedef void(^CurrentDataUpdatedHandler)(SDLTextAndGraphicState *__nullable newScreenData, NSError *__nullable error);
+
+@interface SDLTextAndGraphicUpdateOperation : SDLAsynchronousOperation
+
+/// The current state of the screen in TextAndGraphicState form. This is passed as a dependency in the init but it may need to be updated if a previous operation updated the state of the screen. This will be updated with new screen data when this operation sends successful shows.
+@property (strong, nonatomic) SDLTextAndGraphicState *currentScreenData;
+
+/// Initialize the operation with its dependencies
+/// @param connectionManager The connection manager to send RPCs
+/// @param fileManager The file manager to upload artwork
+/// @param currentCapabilities The current window capability describing whether or not image fields and text fields are supported
+/// @param currentData The current show data to determine which text and image fields need to be sent
+/// @param newState The new text and graphic manager state to be compared with currentData and sent in a Show update if needed.
+/// @param updateCompletionHandler The handler potentially passed by the developer to be called when the update finishes
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager currentCapabilities:(SDLWindowCapability *)currentCapabilities currentScreenData:(SDLTextAndGraphicState *)currentData newState:(SDLTextAndGraphicState *)newState currentScreenDataUpdatedHandler:(CurrentDataUpdatedHandler)currentDataUpdatedHandler updateCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)updateCompletionHandler;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.m b/SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.m
new file mode 100644
index 000000000..4ff7ebd82
--- /dev/null
+++ b/SmartDeviceLink/private/SDLTextAndGraphicUpdateOperation.m
@@ -0,0 +1,597 @@
+//
+// SDLTextAndGraphicUpdateOperation.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 8/13/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLTextAndGraphicUpdateOperation.h"
+
+#import "SDLArtwork.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLError.h"
+#import "SDLFileManager.h"
+#import "SDLGlobals.h"
+#import "SDLImage.h"
+#import "SDLLogMacros.h"
+#import "SDLMetadataTags.h"
+#import "SDLSetDisplayLayout.h"
+#import "SDLShow.h"
+#import "SDLTemplateConfiguration.h"
+#import "SDLTextAndGraphicState.h"
+#import "SDLVersion.h"
+#import "SDLWindowCapability.h"
+#import "SDLWindowCapability+ScreenManagerExtensions.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLTextAndGraphicUpdateOperation ()
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic) SDLFileManager *fileManager;
+@property (strong, nonatomic) SDLWindowCapability *currentCapabilities;
+@property (strong, nonatomic) SDLTextAndGraphicState *updatedState;
+
+@property (copy, nonatomic, nullable) CurrentDataUpdatedHandler currentDataUpdatedHandler;
+@property (copy, nonatomic, nullable) SDLTextAndGraphicUpdateCompletionHandler updateCompletionHandler;
+
+@property (copy, nonatomic, nullable) NSError *internalError;
+
+@end
+
+@implementation SDLTextAndGraphicUpdateOperation
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager currentCapabilities:(SDLWindowCapability *)currentCapabilities currentScreenData:(SDLTextAndGraphicState *)currentData newState:(SDLTextAndGraphicState *)newState currentScreenDataUpdatedHandler:(CurrentDataUpdatedHandler)currentDataUpdatedHandler updateCompletionHandler:(nullable SDLTextAndGraphicUpdateCompletionHandler)updateCompletionHandler {
+ self = [self init];
+ if (!self) { return nil; }
+
+ _connectionManager = connectionManager;
+ _fileManager = fileManager;
+ _currentCapabilities = currentCapabilities;
+ _currentScreenData = currentData;
+ _updatedState = newState;
+ _currentDataUpdatedHandler = currentDataUpdatedHandler;
+ _updateCompletionHandler = updateCompletionHandler;
+
+ return self;
+}
+
+- (void)start {
+ [super start];
+ if (self.cancelled) {
+ // Make sure the update handler is called
+ [self finishOperation];
+ return;
+ }
+
+ // Build a show with everything from `self.newState`, we'll pull things out later if we can.
+ SDLShow *fullShow = [[SDLShow alloc] init];
+ fullShow.alignment = self.updatedState.alignment;
+ fullShow = [self sdl_assembleShowText:fullShow];
+ fullShow = [self sdl_assembleShowImages:fullShow];
+ fullShow = [self sdl_assembleLayout:fullShow];
+
+ __weak typeof(self) weakSelf = self;
+ if ([self sdl_showSupportsTemplateConfiguration]) {
+ // Everything (template, text, and images) can be updated using a single Show request
+ [self sdl_updateGraphicsAndShow:fullShow];
+ } else if (self.sdl_shouldUpdateTemplateConfig) {
+ // The template must first be updated using SetDisplayLayout request. Then a Show request is sent.
+ [self sdl_sendSetDisplayLayoutWithTemplateConfiguration:self.updatedState.templateConfig completionHandler:^(NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (strongSelf.isCancelled) {
+ [strongSelf finishOperation];
+ return;
+ } else if (error != nil) {
+ strongSelf.internalError = error;
+ [strongSelf finishOperation];
+ return;
+ }
+
+ [strongSelf sdl_updateGraphicsAndShow:fullShow];
+ }];
+ } else {
+ // The template does not need to be updated. Just send the show.
+ [self sdl_updateGraphicsAndShow:fullShow];
+ }
+}
+
+#pragma mark - Send Show / Set Display Layout
+
+- (void)sdl_updateGraphicsAndShow:(SDLShow *)show {
+ __weak typeof(self) weakSelf = self;
+ if (!([self sdl_shouldUpdatePrimaryImage] || [self sdl_shouldUpdateSecondaryImage])) {
+ SDLLogV(@"No images to send, sending text");
+ // If there are no images to update, just send the text
+ [self sdl_sendShow:[self sdl_extractTextAndLayoutFromShow:show] withHandler:^(NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (error != nil) {
+ strongSelf.internalError = error;
+ }
+ [strongSelf finishOperation];
+ }];
+ } else if (![self sdl_artworkNeedsUpload:self.updatedState.primaryGraphic] && ![self sdl_artworkNeedsUpload:self.updatedState.secondaryGraphic]) {
+ SDLLogV(@"Images already uploaded, sending full update");
+ // The files to be updated are already uploaded, send the full show immediately
+ [self sdl_sendShow:show withHandler:^(NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (error != nil) {
+ strongSelf.internalError = error;
+ }
+ [strongSelf finishOperation];
+ }];
+ } else {
+ SDLLogV(@"Images need to be uploaded, sending text and uploading images");
+
+ // Send the text immediately
+ [self sdl_sendShow:[self sdl_extractTextAndLayoutFromShow:show] withHandler:^(NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (self.cancelled) {
+ [strongSelf finishOperation];
+ return;
+ } else if (error != nil) {
+ // The show to change the text / layout failed, so fail the operation
+ self.internalError = error;
+ [strongSelf finishOperation];
+ return;
+ }
+
+ [strongSelf sdl_uploadImagesAndSendWhenDone:^(NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (error != nil) {
+ strongSelf.internalError = error;
+ }
+ [strongSelf finishOperation];
+ }];
+ }];
+ }
+}
+
+- (void)sdl_sendShow:(SDLShow *)show withHandler:(void (^)(NSError *_Nullable error))handler {
+ __weak typeof(self)weakSelf = self;
+ [self.connectionManager sendConnectionRequest:show withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ SDLLogV(@"Text and Graphic Show completed. Request: %@, response: %@", request, response);
+
+ if (response.success.boolValue) {
+ SDLLogD(@"Text and Graphic Show completed successfully");
+ [strongSelf sdl_updateCurrentScreenDataFromShow:request];
+ } else {
+ SDLLogD(@"Text and Graphic Show failed");
+ self.currentDataUpdatedHandler(nil, error);
+ }
+
+ handler(error);
+ }];
+}
+
+- (void)sdl_sendSetDisplayLayoutWithTemplateConfiguration:(SDLTemplateConfiguration *)configuration completionHandler:(void (^)(NSError *_Nullable error))handler {
+ SDLSetDisplayLayout *setLayout = [[SDLSetDisplayLayout alloc] initWithLayout:configuration.template dayColorScheme:configuration.dayColorScheme nightColorScheme:configuration.nightColorScheme];
+
+ __weak typeof(self)weakSelf = self;
+ [self.connectionManager sendConnectionRequest:setLayout withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ SDLLogV(@"Text and Graphic SetDisplayLayout completed. Request: %@, response: %@", request, response);
+
+ if (response.success.boolValue) {
+ SDLLogD(@"Text and Graphic SetDisplayLayout succeeded. New layout: %@", setLayout.displayLayout);
+ [strongSelf sdl_updateCurrentScreenDataFromSetDisplayLayout:request];
+ } else {
+ SDLLogD(@"Text and Graphic SetDisplayLayout failed to change to new layout: %@", setLayout.displayLayout);
+ self.currentDataUpdatedHandler(nil, error);
+ }
+
+ handler(error);
+ }];
+}
+
+#pragma mark - Uploading Images
+
+- (void)sdl_uploadImagesAndSendWhenDone:(void (^)(NSError *_Nullable error))handler {
+ __weak typeof(self)weakSelf = self;
+ [self sdl_uploadImagesWithCompletionHandler:^(NSError *_Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+
+ SDLShow *showWithGraphics = [self sdl_createImageOnlyShowWithPrimaryArtwork:self.updatedState.primaryGraphic secondaryArtwork:self.updatedState.secondaryGraphic];
+ if (showWithGraphics != nil) {
+ SDLLogD(@"Sending update with the successfully uploaded images");
+ [strongSelf sdl_sendShow:showWithGraphics withHandler:^(NSError * _Nullable error) {
+ return handler(error);
+ }];
+ } else {
+ SDLLogW(@"All images failed to upload. No graphics to show, skipping update.");
+ return handler(error);
+ }
+ }];
+}
+
+- (void)sdl_uploadImagesWithCompletionHandler:(void (^)(NSError *_Nullable error))handler {
+ NSMutableArray<SDLArtwork *> *artworksToUpload = [NSMutableArray array];
+ if ([self sdl_shouldUpdatePrimaryImage] && !self.updatedState.primaryGraphic.isStaticIcon) {
+ [artworksToUpload addObject:self.updatedState.primaryGraphic];
+ }
+ if ([self sdl_shouldUpdateSecondaryImage] && !self.updatedState.secondaryGraphic.isStaticIcon) {
+ [artworksToUpload addObject:self.updatedState.secondaryGraphic];
+ }
+
+ if (artworksToUpload.count == 0) {
+ SDLLogD(@"No artworks need an upload, sending them without upload instead");
+ return handler(nil);
+ }
+
+ __weak typeof(self) weakSelf = self;
+ [self.fileManager uploadArtworks:artworksToUpload progressHandler:^BOOL(NSString * _Nonnull artworkName, float uploadPercentage, NSError * _Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (strongSelf.isCancelled) {
+ [strongSelf finishOperation];
+ return NO;
+ }
+
+ return YES;
+ } completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) {
+ if (error != nil) {
+ SDLLogW(@"Text and graphic manager artwork failed to upload with error: %@", error.localizedDescription);
+ }
+
+ handler(error);
+ }];
+}
+
+
+#pragma mark - Assembly of Shows
+
+#pragma mark Images
+
+- (SDLShow *)sdl_assembleShowImages:(SDLShow *)show {
+ if (![self sdl_shouldUpdatePrimaryImage] && ![self sdl_shouldUpdateSecondaryImage]) {
+ return show;
+ }
+
+ if ([self sdl_shouldUpdatePrimaryImage]) {
+ show.graphic = self.updatedState.primaryGraphic.imageRPC;
+ }
+ if ([self sdl_shouldUpdateSecondaryImage]) {
+ show.secondaryGraphic = self.updatedState.secondaryGraphic.imageRPC;
+ }
+
+ return show;
+}
+
+- (nullable SDLShow *)sdl_createImageOnlyShowWithPrimaryArtwork:(nullable SDLArtwork *)primaryArtwork secondaryArtwork:(nullable SDLArtwork *)secondaryArtwork {
+ SDLShow *newShow = [[SDLShow alloc] init];
+ newShow.graphic = ![self sdl_artworkNeedsUpload:primaryArtwork] ? primaryArtwork.imageRPC : nil;
+ newShow.secondaryGraphic = ![self sdl_artworkNeedsUpload:secondaryArtwork] ? secondaryArtwork.imageRPC : nil;
+
+ if (newShow.graphic == nil && newShow.secondaryGraphic == nil) {
+ SDLLogV(@"No graphics to upload");
+ return nil;
+ }
+
+ return newShow;
+}
+
+#pragma mark Text
+
+- (SDLShow *)sdl_assembleShowText:(SDLShow *)show {
+ [self sdl_setBlankTextFieldsWithShow:show];
+
+ if (self.updatedState.mediaTrackTextField != nil && [self sdl_shouldUpdateMediaTextField]) {
+ show.mediaTrack = self.updatedState.mediaTrackTextField;
+ }
+
+ if (self.updatedState.title != nil && [self sdl_shouldUpdateTitleField]) {
+ show.templateTitle = self.updatedState.title;
+ }
+
+ NSArray *nonNilFields = [self sdl_findNonNilTextFields];
+ if (nonNilFields.count == 0) { return show; }
+
+ // If the template is updating, we don't yet know it's capabilities. Just assume the template supports the max number of textfields.
+ NSUInteger numberOfLines = ![self sdl_shouldUpdateTemplateConfig] ? self.currentCapabilities.maxNumberOfMainFieldLines : 4;
+ if (numberOfLines == 1) {
+ show = [self sdl_assembleOneLineShowText:show withShowFields:nonNilFields];
+ } else if (numberOfLines == 2) {
+ show = [self sdl_assembleTwoLineShowText:show];
+ } else if (numberOfLines == 3) {
+ show = [self sdl_assembleThreeLineShowText:show];
+ } else if (numberOfLines == 4) {
+ show = [self sdl_assembleFourLineShowText:show];
+ }
+
+ return show;
+}
+
+- (SDLShow *)sdl_assembleOneLineShowText:(SDLShow *)show withShowFields:(NSArray<NSString *> *)fields {
+ NSMutableString *showString1 = [NSMutableString stringWithString:fields[0]];
+ for (NSUInteger i = 1; i < fields.count; i++) {
+ [showString1 appendFormat:@" - %@", fields[i]];
+ }
+ show.mainField1 = showString1.copy;
+
+ NSMutableArray<SDLMetadataType> *metadataArray = [NSMutableArray array];
+ self.updatedState.textField1Type ? [metadataArray addObject:self.updatedState.textField1Type] : nil;
+ self.updatedState.textField2Type ? [metadataArray addObject:self.updatedState.textField2Type] : nil;
+ self.updatedState.textField3Type ? [metadataArray addObject:self.updatedState.textField3Type] : nil;
+ self.updatedState.textField4Type ? [metadataArray addObject:self.updatedState.textField4Type] : nil;
+ show.metadataTags.mainField1 = [metadataArray copy];
+
+ return show;
+}
+
+- (SDLShow *)sdl_assembleTwoLineShowText:(SDLShow *)show {
+ NSMutableString *tempString = [NSMutableString string];
+ if (self.updatedState.textField1.length > 0) {
+ // If text 1 exists, put it in slot 1
+ [tempString appendString:self.updatedState.textField1];
+ show.metadataTags.mainField1 = self.updatedState.textField1Type.length > 0 ? @[self.updatedState.textField1Type] : @[];
+ }
+
+ if (self.updatedState.textField2.length > 0) {
+ if (!(self.updatedState.textField3.length > 0 || self.updatedState.textField4.length > 0)) {
+ // If text 3 & 4 do not exist, put it in slot 2
+ show.mainField2 = self.updatedState.textField2;
+ show.metadataTags.mainField2 = self.updatedState.textField2Type.length > 0 ? @[self.updatedState.textField2Type] : @[];
+ } else if (self.updatedState.textField1.length > 0) {
+ // If text 1 exists, put it in slot 1 formatted
+ [tempString appendFormat:@" - %@", self.updatedState.textField2];
+ show.metadataTags.mainField1 = self.updatedState.textField2Type.length > 0 ? [show.metadataTags.mainField1 arrayByAddingObjectsFromArray:@[self.updatedState.textField2Type]] : show.metadataTags.mainField1;
+ } else {
+ // If text 1 does not exist, put it in slot 1 unformatted
+ [tempString appendString:self.updatedState.textField2];
+ show.metadataTags.mainField1 = self.updatedState.textField2Type.length > 0 ? @[self.updatedState.textField2Type] : @[];
+ }
+ }
+
+ show.mainField1 = [tempString copy];
+
+ tempString = [NSMutableString string];
+ if (self.updatedState.textField3.length > 0) {
+ // If text 3 exists, put it in slot 2
+ [tempString appendString:self.updatedState.textField3];
+ show.metadataTags.mainField2 = self.updatedState.textField3Type.length > 0 ? @[self.updatedState.textField3Type] : @[];
+ }
+
+ if (self.updatedState.textField4.length > 0) {
+ if (self.updatedState.textField3.length > 0) {
+ // If text 3 exists, put it in slot 2 formatted
+ [tempString appendFormat:@" - %@", self.updatedState.textField4];
+ show.metadataTags.mainField2 = self.updatedState.textField4Type.length > 0 ? [show.metadataTags.mainField2 arrayByAddingObjectsFromArray:@[self.updatedState.textField4Type]] : show.metadataTags.mainField2;
+ } else {
+ // If text 3 does not exist, put it in slot 3 unformatted
+ [tempString appendString:self.updatedState.textField4];
+ show.metadataTags.mainField2 = self.updatedState.textField4Type.length > 0 ? @[self.updatedState.textField4Type] : @[];
+ }
+ }
+
+ if (tempString.length > 0) {
+ show.mainField2 = [tempString copy];
+ }
+
+ return show;
+}
+
+- (SDLShow *)sdl_assembleThreeLineShowText:(SDLShow *)show {
+ if (self.updatedState.textField1.length > 0) {
+ show.mainField1 = self.updatedState.textField1;
+ show.metadataTags.mainField1 = self.updatedState.textField1Type.length > 0 ? @[self.updatedState.textField1Type] : @[];
+ }
+
+ if (self.updatedState.textField2.length > 0) {
+ show.mainField2 = self.updatedState.textField2;
+ show.metadataTags.mainField2 = self.updatedState.textField2Type.length > 0 ? @[self.updatedState.textField2Type] : @[];
+ }
+
+ NSMutableString *tempString = [NSMutableString string];
+ if (self.updatedState.textField3.length > 0) {
+ [tempString appendString:self.updatedState.textField3];
+ show.metadataTags.mainField3 = self.updatedState.textField3Type.length > 0 ? @[self.updatedState.textField3Type] : @[];
+ }
+
+ if (self.updatedState.textField4.length > 0) {
+ if (self.updatedState.textField3.length > 0) {
+ // If text 3 exists, put it in slot 3 formatted
+ [tempString appendFormat:@" - %@", self.updatedState.textField4];
+ show.metadataTags.mainField3 = self.updatedState.textField4Type.length > 0 ? [show.metadataTags.mainField3 arrayByAddingObjectsFromArray:@[self.updatedState.textField4Type]] : show.metadataTags.mainField3;
+ } else {
+ // If text 3 does not exist, put it in slot 3 formatted
+ [tempString appendString:self.updatedState.textField4];
+ show.metadataTags.mainField3 = self.updatedState.textField4Type.length > 0 ? @[self.updatedState.textField4Type] : @[];
+ }
+ }
+
+ show.mainField3 = [tempString copy];
+
+ return show;
+}
+
+- (SDLShow *)sdl_assembleFourLineShowText:(SDLShow *)show {
+ if (self.updatedState.textField1.length > 0) {
+ show.mainField1 = self.updatedState.textField1;
+ show.metadataTags.mainField1 = self.updatedState.textField1Type.length > 0 ? @[self.updatedState.textField1Type] : @[];
+ }
+
+ if (self.updatedState.textField2.length > 0) {
+ show.mainField2 = self.updatedState.textField2;
+ show.metadataTags.mainField2 = self.updatedState.textField2Type.length > 0 ? @[self.updatedState.textField2Type] : @[];
+ }
+
+ if (self.updatedState.textField3.length > 0) {
+ show.mainField3 = self.updatedState.textField3;
+ show.metadataTags.mainField3 = self.updatedState.textField3Type.length > 0 ? @[self.updatedState.textField3Type] : @[];
+ }
+
+ if (self.updatedState.textField4.length > 0) {
+ show.mainField4 = self.updatedState.textField4;
+ show.metadataTags.mainField4 = self.updatedState.textField4Type.length > 0 ? @[self.updatedState.textField4Type] : @[];
+ }
+
+ return show;
+}
+
+- (SDLShow *)sdl_setBlankTextFieldsWithShow:(SDLShow *)show {
+ show.mainField1 = @"";
+ show.mainField2 = @"";
+ show.mainField3 = @"";
+ show.mainField4 = @"";
+ show.mediaTrack = @"";
+ show.templateTitle = @"";
+ show.metadataTags = [[SDLMetadataTags alloc] init];
+
+ return show;
+}
+
+#pragma mark Layout
+
+- (SDLShow *)sdl_assembleLayout:(SDLShow *)show {
+ if (![self sdl_showSupportsTemplateConfiguration] || !self.sdl_shouldUpdateTemplateConfig) { return show; }
+
+ show.templateConfiguration = self.updatedState.templateConfig;
+ return show;
+}
+
+#pragma mark - Extraction
+
+- (SDLShow *)sdl_extractTextAndLayoutFromShow:(SDLShow *)show {
+ SDLShow *newShow = [[SDLShow alloc] init];
+ newShow.mainField1 = show.mainField1;
+ newShow.mainField2 = show.mainField2;
+ newShow.mainField3 = show.mainField3;
+ newShow.mainField4 = show.mainField4;
+ newShow.mediaTrack = show.mediaTrack;
+ newShow.templateTitle = show.templateTitle;
+ newShow.metadataTags = show.metadataTags;
+ newShow.alignment = show.alignment;
+
+ if ([self sdl_showSupportsTemplateConfiguration]) {
+ newShow.templateConfiguration = show.templateConfiguration;
+ }
+
+ return newShow;
+}
+
+#pragma mark - Update Current Screen Data
+
+- (void)sdl_updateCurrentScreenDataFromShow:(SDLShow *)show {
+ // If the items are nil, they were not updated, so we can't just set it directly
+ self.currentScreenData.mediaTrackTextField = show.mediaTrack ? self.updatedState.mediaTrackTextField : self.currentScreenData.mediaTrackTextField;
+ self.currentScreenData.title = show.templateTitle ? self.updatedState.title : self.currentScreenData.title;
+ self.currentScreenData.alignment = show.alignment ? self.updatedState.alignment : self.currentScreenData.alignment;
+ self.currentScreenData.primaryGraphic = show.graphic ? self.updatedState.primaryGraphic : self.currentScreenData.primaryGraphic;
+ self.currentScreenData.secondaryGraphic = show.secondaryGraphic ? self.updatedState.secondaryGraphic : self.currentScreenData.secondaryGraphic;
+
+ // This is intentionally checking `mainField1` because the fields may be in different places based on the capabilities, then check it's own field in case that's the only field thats being used.
+ self.currentScreenData.textField1 = show.mainField1 ? self.updatedState.textField1 : self.currentScreenData.textField1;
+ self.currentScreenData.textField2 = (show.mainField1 || show.mainField2) ? self.updatedState.textField2 : self.currentScreenData.textField2;
+ self.currentScreenData.textField3 = (show.mainField1 || show.mainField3) ? self.updatedState.textField3 : self.currentScreenData.textField3;
+ self.currentScreenData.textField4 = (show.mainField1 || show.mainField4) ? self.updatedState.textField4 : self.currentScreenData.textField4;
+
+ // This is intentionally checking show.metadataTags.mainField1 because the tags may be in different places based on the capabilities, then check its own field in case that's the only field that's being used.
+ self.currentScreenData.textField1Type = show.metadataTags.mainField1 ? self.updatedState.textField1Type : self.currentScreenData.textField1Type;
+ self.currentScreenData.textField2Type = (show.metadataTags.mainField1 || show.metadataTags.mainField2) ? self.updatedState.textField2Type : self.currentScreenData.textField2Type;
+ self.currentScreenData.textField3Type = (show.metadataTags.mainField1 || show.metadataTags.mainField3) ? self.updatedState.textField3Type : self.currentScreenData.textField3Type;
+ self.currentScreenData.textField4Type = (show.metadataTags.mainField1 || show.metadataTags.mainField4) ? self.updatedState.textField4Type : self.currentScreenData.textField4Type;
+
+ self.currentScreenData.templateConfig = show.templateConfiguration ? self.updatedState.templateConfig : self.currentScreenData.templateConfig;
+
+ if (self.currentDataUpdatedHandler != nil) {
+ self.currentDataUpdatedHandler(self.currentScreenData, nil);
+ }
+}
+
+- (void)sdl_updateCurrentScreenDataFromSetDisplayLayout:(SDLSetDisplayLayout *)setDisplayLayout {
+ self.currentScreenData.templateConfig = [[SDLTemplateConfiguration alloc] initWithTemplate:setDisplayLayout.displayLayout dayColorScheme:setDisplayLayout.dayColorScheme nightColorScheme:setDisplayLayout.nightColorScheme];
+
+ if (self.currentDataUpdatedHandler != nil) {
+ self.currentDataUpdatedHandler(self.currentScreenData, nil);
+ }
+}
+
+#pragma mark - Should Update
+
+- (BOOL)sdl_artworkNeedsUpload:(SDLArtwork *)artwork {
+ return (artwork != nil && ![self.fileManager hasUploadedFile:artwork] && !artwork.isStaticIcon);
+}
+
+- (BOOL)sdl_shouldUpdatePrimaryImage {
+ // If the template is updating, we don't yet know it's capabilities. Just assume the template supports the primary image.
+ BOOL templateSupportsPrimaryArtwork = [self.currentCapabilities hasImageFieldOfName:SDLImageFieldNameGraphic] || [self sdl_shouldUpdateTemplateConfig];
+ BOOL graphicMatchesExisting = [self.currentScreenData.primaryGraphic.name isEqualToString:self.updatedState.primaryGraphic.name];
+ BOOL graphicExists = (self.updatedState.primaryGraphic != nil);
+
+ return (templateSupportsPrimaryArtwork && !graphicMatchesExisting && graphicExists);
+}
+
+- (BOOL)sdl_shouldUpdateSecondaryImage {
+ // If the template is updating, we don't yet know it's capabilities. Just assume the template supports the secondary image.
+ BOOL templateSupportsSecondaryArtwork = [self.currentCapabilities hasImageFieldOfName:SDLImageFieldNameSecondaryGraphic] || [self sdl_shouldUpdateTemplateConfig];
+ BOOL graphicMatchesExisting = [self.currentScreenData.secondaryGraphic.name isEqualToString:self.updatedState.secondaryGraphic.name];
+ BOOL graphicExists = (self.updatedState.secondaryGraphic != nil);
+
+ // Cannot detect if there is a secondary image below v5.0, so we'll just try to detect if the primary image is allowed and allow the secondary image if it is.
+ if ([[SDLGlobals sharedGlobals].rpcVersion isGreaterThanOrEqualToVersion:[SDLVersion versionWithMajor:5 minor:0 patch:0]]) {
+ return (templateSupportsSecondaryArtwork && !graphicMatchesExisting && graphicExists);
+ } else {
+ return ([self.currentCapabilities hasImageFieldOfName:SDLImageFieldNameGraphic] && !graphicMatchesExisting && graphicExists);
+ }
+}
+
+- (BOOL)sdl_shouldUpdateMediaTextField {
+ // If the template is updating, we don't yet know it's capabilities. Just assume the template supports the media text field.
+ return [self.currentCapabilities hasTextFieldOfName:SDLTextFieldNameMediaTrack] || [self sdl_shouldUpdateTemplateConfig];
+}
+
+- (BOOL)sdl_shouldUpdateTitleField {
+ // If the template is updating, we don't yet know it's capabilities. Just assume the template supports the template title.
+ return [self.currentCapabilities hasTextFieldOfName:SDLTextFieldNameTemplateTitle] || [self sdl_shouldUpdateTemplateConfig];
+}
+
+- (BOOL)sdl_shouldUpdateTemplateConfig {
+ return (_updatedState.templateConfig != nil) && ![_updatedState.templateConfig isEqual:_currentScreenData.templateConfig];
+}
+
+- (NSArray<NSString *> *)sdl_findNonNilTextFields {
+ NSMutableArray *array = [NSMutableArray array];
+ (self.updatedState.textField1.length > 0) ? [array addObject:self.updatedState.textField1] : nil;
+ (self.updatedState.textField2.length > 0) ? [array addObject:self.updatedState.textField2] : nil;
+ (self.updatedState.textField3.length > 0) ? [array addObject:self.updatedState.textField3] : nil;
+ (self.updatedState.textField4.length > 0) ? [array addObject:self.updatedState.textField4] : nil;
+
+ return [array copy];
+}
+
+#pragma mark - Version Check
+
+- (BOOL)sdl_showSupportsTemplateConfiguration {
+ return [[SDLGlobals sharedGlobals].rpcVersion isGreaterThanOrEqualToVersion:[SDLVersion versionWithMajor:6 minor:0 patch:0]];
+}
+
+#pragma mark - Operation Overrides
+
+- (void)finishOperation {
+ SDLLogV(@"Finishing text and graphic update operation");
+ if (self.isCancelled) {
+ self.internalError = [NSError sdl_textAndGraphicManager_pendingUpdateSuperseded];
+ }
+
+ if (self.updateCompletionHandler != nil) {
+ self.updateCompletionHandler(self.error);
+ }
+ [super finishOperation];
+}
+
+- (nullable NSString *)name {
+ return @"com.sdl.textandgraphic.update";
+}
+
+- (NSOperationQueuePriority)queuePriority {
+ return NSOperationQueuePriorityNormal;
+}
+
+- (nullable NSError *)error {
+ return self.internalError;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTextField+ScreenManagerExtensions.h b/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.h
index 310b024bf..310b024bf 100644
--- a/SmartDeviceLink/SDLTextField+ScreenManagerExtensions.h
+++ b/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.h
diff --git a/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m b/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m
new file mode 100644
index 000000000..28e6b349d
--- /dev/null
+++ b/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m
@@ -0,0 +1,26 @@
+//
+// SDLTextField+ScreenManagerExtensions.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 5/20/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLTextField+ScreenManagerExtensions.h"
+
+@implementation SDLTextField (ScreenManagerExtensions)
+
++ (NSArray<SDLTextFieldName> *)sdl_allTextFieldNames {
+ return @[SDLTextFieldNameETA, SDLTextFieldNameMenuName, SDLTextFieldNameMenuTitle, SDLTextFieldNameStatusBar, SDLTextFieldNameAlertText1, SDLTextFieldNameAlertText2, SDLTextFieldNameAlertText3, SDLTextFieldNameMainField1, SDLTextFieldNameMainField2, SDLTextFieldNameMainField3, SDLTextFieldNameMainField4, SDLTextFieldNameMediaClock, SDLTextFieldNameMediaTrack, SDLTextFieldNamePhoneNumber, SDLTextFieldNameAddressLines, SDLTextFieldNameLocationName, SDLTextFieldNameSliderFooter, SDLTextFieldNameSliderHeader, SDLTextFieldNameTertiaryText, SDLTextFieldNameSecondaryText, SDLTextFieldNameTemplateTitle, SDLTextFieldNameTotalDistance, SDLTextFieldNameNavigationText1, SDLTextFieldNameNavigationText2, SDLTextFieldNameLocationDescription, SDLTextFieldNameScrollableMessageBody, SDLTextFieldNameInitialInteractionText, SDLTextFieldNameAudioPassThruDisplayText1, SDLTextFieldNameAudioPassThruDisplayText2];
+}
+
++ (NSArray<SDLTextField *> *)allTextFields {
+ NSMutableArray<SDLTextField *> *tempTextFields = [NSMutableArray array];
+ for (SDLTextFieldName fieldName in [self sdl_allTextFieldNames]) {
+ [tempTextFields addObject:[[SDLTextField alloc] initWithName:fieldName characterSet:SDLCharacterSetUtf8 width:500 rows:8]];
+ }
+
+ return tempTextFields;
+}
+
+@end
diff --git a/SmartDeviceLink/SDLTimer.h b/SmartDeviceLink/private/SDLTimer.h
index dcd75c79c..dcd75c79c 100644
--- a/SmartDeviceLink/SDLTimer.h
+++ b/SmartDeviceLink/private/SDLTimer.h
diff --git a/SmartDeviceLink/SDLTimer.m b/SmartDeviceLink/private/SDLTimer.m
index 39479c9af..39479c9af 100644
--- a/SmartDeviceLink/SDLTimer.m
+++ b/SmartDeviceLink/private/SDLTimer.m
diff --git a/SmartDeviceLink/SDLTransportDelegate.h b/SmartDeviceLink/private/SDLTransportDelegate.h
index c8350918a..c8350918a 100644
--- a/SmartDeviceLink/SDLTransportDelegate.h
+++ b/SmartDeviceLink/private/SDLTransportDelegate.h
diff --git a/SmartDeviceLink/SDLTransportType.h b/SmartDeviceLink/private/SDLTransportType.h
index 8cfb4ec7e..8cfb4ec7e 100644
--- a/SmartDeviceLink/SDLTransportType.h
+++ b/SmartDeviceLink/private/SDLTransportType.h
diff --git a/SmartDeviceLink/SDLUploadFileOperation.h b/SmartDeviceLink/private/SDLUploadFileOperation.h
index cd3eaa4af..cd3eaa4af 100644
--- a/SmartDeviceLink/SDLUploadFileOperation.h
+++ b/SmartDeviceLink/private/SDLUploadFileOperation.h
diff --git a/SmartDeviceLink/SDLUploadFileOperation.m b/SmartDeviceLink/private/SDLUploadFileOperation.m
index b87629b28..b87629b28 100644
--- a/SmartDeviceLink/SDLUploadFileOperation.m
+++ b/SmartDeviceLink/private/SDLUploadFileOperation.m
diff --git a/SmartDeviceLink/SDLV1ProtocolHeader.h b/SmartDeviceLink/private/SDLV1ProtocolHeader.h
index ecd5e258e..ecd5e258e 100644
--- a/SmartDeviceLink/SDLV1ProtocolHeader.h
+++ b/SmartDeviceLink/private/SDLV1ProtocolHeader.h
diff --git a/SmartDeviceLink/SDLV1ProtocolHeader.m b/SmartDeviceLink/private/SDLV1ProtocolHeader.m
index ba6474481..ba6474481 100644
--- a/SmartDeviceLink/SDLV1ProtocolHeader.m
+++ b/SmartDeviceLink/private/SDLV1ProtocolHeader.m
diff --git a/SmartDeviceLink/SDLV1ProtocolMessage.h b/SmartDeviceLink/private/SDLV1ProtocolMessage.h
index 71903a5d0..71903a5d0 100644
--- a/SmartDeviceLink/SDLV1ProtocolMessage.h
+++ b/SmartDeviceLink/private/SDLV1ProtocolMessage.h
diff --git a/SmartDeviceLink/SDLV1ProtocolMessage.m b/SmartDeviceLink/private/SDLV1ProtocolMessage.m
index 3d1e90342..3d1e90342 100644
--- a/SmartDeviceLink/SDLV1ProtocolMessage.m
+++ b/SmartDeviceLink/private/SDLV1ProtocolMessage.m
diff --git a/SmartDeviceLink/SDLV2ProtocolHeader.h b/SmartDeviceLink/private/SDLV2ProtocolHeader.h
index bb93768bb..bb93768bb 100644
--- a/SmartDeviceLink/SDLV2ProtocolHeader.h
+++ b/SmartDeviceLink/private/SDLV2ProtocolHeader.h
diff --git a/SmartDeviceLink/SDLV2ProtocolHeader.m b/SmartDeviceLink/private/SDLV2ProtocolHeader.m
index d89fdeb1f..d89fdeb1f 100644
--- a/SmartDeviceLink/SDLV2ProtocolHeader.m
+++ b/SmartDeviceLink/private/SDLV2ProtocolHeader.m
diff --git a/SmartDeviceLink/SDLV2ProtocolMessage.h b/SmartDeviceLink/private/SDLV2ProtocolMessage.h
index 0c1cc065a..0c1cc065a 100644
--- a/SmartDeviceLink/SDLV2ProtocolMessage.h
+++ b/SmartDeviceLink/private/SDLV2ProtocolMessage.h
diff --git a/SmartDeviceLink/SDLV2ProtocolMessage.m b/SmartDeviceLink/private/SDLV2ProtocolMessage.m
index 4e50b6df1..4e50b6df1 100644
--- a/SmartDeviceLink/SDLV2ProtocolMessage.m
+++ b/SmartDeviceLink/private/SDLV2ProtocolMessage.m
diff --git a/SmartDeviceLink/SDLVideoEncoderDelegate.h b/SmartDeviceLink/private/SDLVideoEncoderDelegate.h
index a8bf27f22..a8bf27f22 100644
--- a/SmartDeviceLink/SDLVideoEncoderDelegate.h
+++ b/SmartDeviceLink/private/SDLVideoEncoderDelegate.h
diff --git a/SmartDeviceLink/SDLViewControllerPresentable.h b/SmartDeviceLink/private/SDLViewControllerPresentable.h
index 50006dd47..50006dd47 100644
--- a/SmartDeviceLink/SDLViewControllerPresentable.h
+++ b/SmartDeviceLink/private/SDLViewControllerPresentable.h
diff --git a/SmartDeviceLink/SDLVoiceCommandManager.h b/SmartDeviceLink/private/SDLVoiceCommandManager.h
index 8c3f3f78f..8c3f3f78f 100644
--- a/SmartDeviceLink/SDLVoiceCommandManager.h
+++ b/SmartDeviceLink/private/SDLVoiceCommandManager.h
diff --git a/SmartDeviceLink/SDLVoiceCommandManager.m b/SmartDeviceLink/private/SDLVoiceCommandManager.m
index e9bd3d5e6..e9bd3d5e6 100644
--- a/SmartDeviceLink/SDLVoiceCommandManager.m
+++ b/SmartDeviceLink/private/SDLVoiceCommandManager.m
diff --git a/SmartDeviceLink/SDLWindowCapability+ScreenManagerExtensions.h b/SmartDeviceLink/private/SDLWindowCapability+ScreenManagerExtensions.h
index 9321c98cd..9321c98cd 100644
--- a/SmartDeviceLink/SDLWindowCapability+ScreenManagerExtensions.h
+++ b/SmartDeviceLink/private/SDLWindowCapability+ScreenManagerExtensions.h
diff --git a/SmartDeviceLink/SDLWindowCapability+ScreenManagerExtensions.m b/SmartDeviceLink/private/SDLWindowCapability+ScreenManagerExtensions.m
index 441356a83..441356a83 100644
--- a/SmartDeviceLink/SDLWindowCapability+ScreenManagerExtensions.m
+++ b/SmartDeviceLink/private/SDLWindowCapability+ScreenManagerExtensions.m
diff --git a/SmartDeviceLink/NSNumber+NumberType.h b/SmartDeviceLink/public/NSNumber+NumberType.h
index f373d6d99..f373d6d99 100644
--- a/SmartDeviceLink/NSNumber+NumberType.h
+++ b/SmartDeviceLink/public/NSNumber+NumberType.h
diff --git a/SmartDeviceLink/public/SDLAddCommand.h b/SmartDeviceLink/public/SDLAddCommand.h
new file mode 100644
index 000000000..ea5968970
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAddCommand.h
@@ -0,0 +1,144 @@
+// SDLAddCommand.h
+
+
+#import "SDLRPCRequest.h"
+
+#import "SDLImageType.h"
+#import "SDLNotificationConstants.h"
+
+@class SDLImage;
+@class SDLMenuParams;
+
+/**
+ * This class will add a command to the application's Command Menu
+ *
+ * A command will be added to the end of the list of elements in the Command Menu under the following conditions:
+ * 1. When a SDLAddCommand is added with no SDLMenuParams value provided.
+ * 2. When a SDLMenuParams value is provided with a SDLMenuParam.position value greater than or equal to the number of menu items currently defined in the menu specified by the SDLMenuParam.parentID value.
+ *
+ * The set of choices which the application builds using SDLAddCommand can be a mixture of:
+ * 1. Choices having only VR synonym definitions, but no SDLMenuParams definitions
+ * 2. Choices having only SDLMenuParams definitions, but no VR synonym definitions
+ * 3. Choices having both SDLMenuParams and VR synonym definitions
+ *
+ * HMILevel needs to be FULL, LIMITED or BACKGROUD
+ * @since SDL 1.0
+ * @see SDLDeleteCommand, SDLAddSubMenu, SDLDeleteSubMenu
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLAddCommand : SDLRPCRequest
+
+/**
+ * Constructs a SDLAddCommand with a handler callback when an event occurs.
+ *
+ * @param handler A callback that is called when a button event occurs for the command.
+ *
+ * @return A SDLAddCommand object
+ */
+- (instancetype)initWithHandler:(nullable SDLRPCCommandNotificationHandler)handler;
+
+/**
+ * Convenience init for creating a voice command menu item.
+ *
+ * @discussion This menu item can only be triggered by the VR system and does not show up in the HMI application menu.
+ *
+ * @param commandId A unique id for the menu item.
+ * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
+ * @param handler Called when the VR system recognizes a phrase in `vrCommands`
+ * @return A SDLAddCommand object
+ */
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands handler:(nullable SDLRPCCommandNotificationHandler)handler;
+
+/**
+ * Convenience init for creating a menu item with text.
+ *
+ * @param commandId A unique id for the menu item.
+ * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
+ * @param menuName The text that will appear in the menu.
+ * @param handler Called when the menu item is selected and/or when the VR system recognizes a phrase in `vrCommands`
+ * @return A SDLAddCommand object
+ */
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName handler:(nullable SDLRPCCommandNotificationHandler)handler;
+
+/**
+ * Convenience init for creating a menu item with text and a custom icon.
+ *
+ * @warning The icon must be uploaded to Core before being displayed in the menu.
+ *
+ * @param commandId A unique id for the menu item.
+ * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
+ * @param menuName The text that will appear in the menu.
+ * @param parentId The command id of the parent menu if menu item is in a submenu. If not in a submenu, the parentId is 0.
+ * @param position The menu item's row number in the menu.
+ * @param iconValue The unique name used to upload the image to Core.
+ * @param iconType Whether the image is static or dynamic.
+ * @param iconIsTemplate Whether or not the image is a template that can be (re)colored by the SDL HMI
+ * @param handler Called when the menu item is selected and/or when the VR system recognizes a phrase in `vrCommands`
+ * @return A SDLAddCommand object
+ */
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position iconValue:(nullable NSString *)iconValue iconType:(nullable SDLImageType)iconType iconIsTemplate:(BOOL)iconIsTemplate handler:(nullable SDLRPCCommandNotificationHandler)handler;
+
+/**
+ * Convenience init for creating a menu item with text and a custom icon.
+ *
+ * @warning The icon must be uploaded to Core before being displayed in the menu.
+ *
+ * @param commandId A unique id for the menu item.
+ * @param vrCommands One or more voice recognition phrases. If recognized by the VR system, the handler will be called.
+ * @param menuName The text that will appear in the menu.
+ * @param parentId The command id of the parent menu if menu item is in a submenu. If not in a submenu, the parentId is 0.
+ * @param position The menu item's row number in the menu.
+ * @param icon A image that appears next to the `menuName` text.
+ * @param handler Called when the menu item is selected and/or when the VR system recognizes a phrase in `vrCommands`
+ * @return A SDLAddCommand object
+ */
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position icon:(nullable SDLImage *)icon handler:(nullable SDLRPCCommandNotificationHandler)handler;
+
+/**
+ * A handler that will let you know when the button you created is subscribed.
+ *
+ * @warning This will only work if you use `SDLManager`.
+ */
+@property (nullable, copy, nonatomic) SDLRPCCommandNotificationHandler handler;
+
+/**
+ * A unique id that identifies the command.
+ *
+ * @discussion Is returned in an `SDLOnCommand` notification to identify the command selected by the user
+ *
+ * Required, Integer, 0 - 2,000,000,000
+ */
+@property (strong, nonatomic) NSNumber<SDLInt> *cmdID;
+
+/**
+ * A `SDLMenuParams` pointer which defines the command and how it is added to the command menu.
+ *
+ * @discussion If provided, this will define the command and how it is added to the command menu. If null, commands will not be accessible through the HMI application menu.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLMenuParams *menuParams;
+
+/**
+ * An array of strings to be used as VR synonyms for this command.
+ *
+ * @discussion If provided, defines one or more VR phrases the recognition of any of which triggers the `SDLOnCommand` notification with this cmdID. If null, commands will not be accessible by voice commands (when the user hits push-to-talk).
+ *
+ * Optional, Array of Strings, Max String length 99 chars, Array size 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<NSString *> *vrCommands;
+
+/**
+ * Image struct containing a static or dynamic icon.
+ *
+ * @discussion If provided, defines the image to be be shown along with a command. If omitted on supported displays, no (or the default if applicable) icon will be displayed
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLImage *cmdIcon;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLAddCommand.m b/SmartDeviceLink/public/SDLAddCommand.m
new file mode 100644
index 000000000..83da5658f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAddCommand.m
@@ -0,0 +1,134 @@
+// SDLAddCommand.m
+//
+
+
+#import "SDLAddCommand.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLImage.h"
+#import "SDLMenuParams.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLAddCommand
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameAddCommand]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithHandler:(nullable SDLRPCCommandNotificationHandler)handler {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ _handler = handler;
+
+ return self;
+}
+
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands handler:(nullable SDLRPCCommandNotificationHandler)handler {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.cmdID = @(commandId);
+ self.vrCommands = [vrCommands mutableCopy];
+ self.handler = handler;
+
+ return self;
+}
+
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName handler:(nullable SDLRPCCommandNotificationHandler)handler {
+ self = [self initWithId:commandId vrCommands:vrCommands handler:handler];
+ if (!self) {
+ return nil;
+ }
+
+ self.menuParams = [[SDLMenuParams alloc] initWithMenuName:menuName];
+
+ return self;
+}
+
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position iconValue:(nullable NSString *)iconValue iconType:(nullable SDLImageType)iconType iconIsTemplate:(BOOL)iconIsTemplate handler:(nullable SDLRPCCommandNotificationHandler)handler {
+ self = [self initWithId:commandId vrCommands:vrCommands menuName:menuName handler:handler];
+ if (!self) {
+ return nil;
+ }
+
+ self.menuParams.parentID = @(parentId);
+ self.menuParams.position = @(position);
+
+ if (iconValue != nil && iconType != nil) {
+ self.cmdIcon = [[SDLImage alloc] initWithName:iconValue ofType:iconType isTemplate:iconIsTemplate];
+ }
+
+ return self;
+}
+
+- (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray<NSString *> *)vrCommands menuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position icon:(nullable SDLImage *)icon handler:(nullable SDLRPCCommandNotificationHandler)handler {
+ self = [self initWithId:commandId vrCommands:vrCommands menuName:menuName handler:handler];
+ if (!self) {
+ return nil;
+ }
+
+ self.menuParams.parentID = @(parentId);
+ self.menuParams.position = @(position);
+ self.cmdIcon = icon;
+
+ return self;
+}
+
+#pragma mark - Getters / Setters
+
+- (void)setCmdID:(NSNumber<SDLInt> *)cmdID {
+ [self.parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId];
+}
+
+- (NSNumber<SDLInt> *)cmdID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error];
+}
+
+- (void)setMenuParams:(nullable SDLMenuParams *)menuParams {
+ [self.parameters sdl_setObject:menuParams forName:SDLRPCParameterNameMenuParams];
+}
+
+- (nullable SDLMenuParams *)menuParams {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuParams ofClass:SDLMenuParams.class error:nil];
+}
+
+- (void)setVrCommands:(nullable NSArray<NSString *> *)vrCommands {
+ [self.parameters sdl_setObject:vrCommands forName:SDLRPCParameterNameVRCommands];
+}
+
+- (nullable NSArray<NSString *> *)vrCommands {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRCommands ofClass:NSString.class error:nil];
+}
+
+- (void)setCmdIcon:(nullable SDLImage *)cmdIcon {
+ [self.parameters sdl_setObject:cmdIcon forName:SDLRPCParameterNameCommandIcon];
+}
+
+- (nullable SDLImage *)cmdIcon {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandIcon ofClass:SDLImage.class error:nil];
+}
+
+-(id)copyWithZone:(nullable NSZone *)zone {
+ SDLAddCommand *newCommand = [super copyWithZone:zone];
+ newCommand->_handler = self.handler;
+
+ return newCommand;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAddCommandResponse.h b/SmartDeviceLink/public/SDLAddCommandResponse.h
index 29b305fc8..29b305fc8 100644
--- a/SmartDeviceLink/SDLAddCommandResponse.h
+++ b/SmartDeviceLink/public/SDLAddCommandResponse.h
diff --git a/SmartDeviceLink/SDLAddCommandResponse.m b/SmartDeviceLink/public/SDLAddCommandResponse.m
index 1906f7f64..1906f7f64 100644
--- a/SmartDeviceLink/SDLAddCommandResponse.m
+++ b/SmartDeviceLink/public/SDLAddCommandResponse.m
diff --git a/SmartDeviceLink/public/SDLAddSubMenu.h b/SmartDeviceLink/public/SDLAddSubMenu.h
new file mode 100644
index 000000000..2de2f466d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAddSubMenu.h
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#import "SDLRPCRequest.h"
+
+#import "SDLMenuLayout.h"
+
+@class SDLImage;
+
+/**
+ * Add a SDLSubMenu to the Command Menu
+ * <p>
+ * A SDLSubMenu can only be added to the Top Level Menu (i.e.a SDLSubMenu cannot be
+ * added to a SDLSubMenu), and may only contain commands as children
+ * <p>
+ * <p>
+ * <b>HMILevel needs to be FULL, LIMITED or BACKGROUD</b>
+ * </p>
+ *
+ * Since <b>SmartDeviceLink 1.0</b><br>
+ * see SDLDeleteSubMenu SDLAddCommand SDLDeleteCommand
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLAddSubMenu : SDLRPCRequest
+
+/**
+ * @param menuID - @(menuID)
+ * @param menuName - menuName
+ * @return A SDLAddSubMenu object
+ */
+- (instancetype)initWithMenuID:(UInt32)menuID menuName:(NSString *)menuName;
+
+/**
+ * @param menuID - @(menuID)
+ * @param menuName - menuName
+ * @param position - position
+ * @param menuIcon - menuIcon
+ * @param menuLayout - menuLayout
+ * @param parentID - parentID
+ * @return A SDLAddSubMenu object
+ */
+- (instancetype)initWithMenuID:(UInt32)menuID menuName:(NSString *)menuName position:(nullable NSNumber<SDLUInt> *)position menuIcon:(nullable SDLImage *)menuIcon menuLayout:(nullable SDLMenuLayout)menuLayout parentID:(nullable NSNumber<SDLUInt> *)parentID;
+
+/**
+ * a Menu ID that identifies a sub menu
+ * @discussion This value is used in
+ * <i>SDLAddCommand</i> to which SDLSubMenu is the parent of the command being added
+ * <p>
+ */
+@property (strong, nonatomic) NSNumber<SDLInt> *menuID;
+
+/**
+ * a position of menu
+ * @discussion An NSNumber pointer representing the position within the items
+ * of the top level Command Menu. 0 will insert at the front, 1
+ * will insert after the first existing element, etc. Position of
+ * any submenu will always be located before the return and exit
+ * options
+ * <p>
+ * <b>Notes: </b><br/>
+ * <ul>
+ * <li>
+ * Min Value: 0; Max Value: 1000</li>
+ * <li>If position is greater or equal than the number of items
+ * on top level, the sub menu will be appended by the end</li>
+ * <li>If this parameter is omitted, the entry will be added at
+ * the end of the list</li>
+ * </ul>
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLInt> *position;
+
+/**
+ * a menuName which is displayed representing this submenu item
+ * @discussion NSString which will be displayed representing this submenu item
+ */
+@property (strong, nonatomic) NSString *menuName;
+
+/**
+ An image that is displayed alongside this submenu item
+ */
+@property (strong, nonatomic, nullable) SDLImage *menuIcon;
+
+/**
+ The sub-menu layout. See available menu layouts on SDLWindowCapability.menuLayoutsAvailable. Defaults to LIST.
+ */
+@property (strong, nonatomic, nullable) SDLMenuLayout menuLayout;
+
+/**
+ * Unique ID of the sub menu the command will be added to. If not provided or 0, it will be provided to the top level of the in application menu.
+ * {"default_value": 0, "max_value": 2000000000, "min_value": 0}
+ *
+ * @since SDL 7.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *parentID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLAddSubMenu.m b/SmartDeviceLink/public/SDLAddSubMenu.m
new file mode 100644
index 000000000..06a615df1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAddSubMenu.m
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLAddSubMenu.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLImage.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLAddSubMenu
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameAddSubMenu]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithMenuID:(UInt32)menuID menuName:(NSString *)menuName {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.menuID = @(menuID);
+ self.menuName = menuName;
+ return self;
+}
+
+- (instancetype)initWithMenuID:(UInt32)menuID menuName:(NSString *)menuName position:(nullable NSNumber<SDLUInt> *)position menuIcon:(nullable SDLImage *)menuIcon menuLayout:(nullable SDLMenuLayout)menuLayout parentID:(nullable NSNumber<SDLUInt> *)parentID {
+ self = [self initWithMenuID:menuID menuName:menuName];
+ if (!self) {
+ return nil;
+ }
+ self.position = position;
+ self.menuIcon = menuIcon;
+ self.menuLayout = menuLayout;
+ self.parentID = parentID;
+ return self;
+}
+
+- (void)setMenuID:(NSNumber<SDLInt> *)menuID {
+ [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuID];
+}
+
+- (NSNumber<SDLInt> *)menuID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuID ofClass:NSNumber.class error:&error];
+}
+
+- (void)setPosition:(nullable NSNumber<SDLInt> *)position {
+ [self.parameters sdl_setObject:position forName:SDLRPCParameterNamePosition];
+}
+
+- (nullable NSNumber<SDLInt> *)position {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setMenuName:(NSString *)menuName {
+ [self.parameters sdl_setObject:menuName forName:SDLRPCParameterNameMenuName];
+}
+
+- (NSString *)menuName {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:&error];
+}
+
+- (void)setMenuIcon:(nullable SDLImage *)menuIcon {
+ [self.parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon];
+}
+
+- (nullable SDLImage *)menuIcon {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:[SDLImage class] error:nil];
+}
+
+- (void)setMenuLayout:(nullable SDLMenuLayout)menuLayout {
+ [self.parameters sdl_setObject:menuLayout forName:SDLRPCParameterNameMenuLayout];
+}
+
+- (nullable SDLMenuLayout)menuLayout {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameMenuLayout error:nil];
+}
+
+- (void)setParentID:(nullable NSNumber<SDLUInt> *)parentID {
+ [self.parameters sdl_setObject:parentID forName:SDLRPCParameterNameParentID];
+}
+
+- (nullable NSNumber<SDLUInt> *)parentID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameParentID ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAddSubMenuResponse.h b/SmartDeviceLink/public/SDLAddSubMenuResponse.h
index 4f7db98fc..4f7db98fc 100644
--- a/SmartDeviceLink/SDLAddSubMenuResponse.h
+++ b/SmartDeviceLink/public/SDLAddSubMenuResponse.h
diff --git a/SmartDeviceLink/SDLAddSubMenuResponse.m b/SmartDeviceLink/public/SDLAddSubMenuResponse.m
index e47fe724b..e47fe724b 100644
--- a/SmartDeviceLink/SDLAddSubMenuResponse.m
+++ b/SmartDeviceLink/public/SDLAddSubMenuResponse.m
diff --git a/SmartDeviceLink/SDLAirbagStatus.h b/SmartDeviceLink/public/SDLAirbagStatus.h
index 140b6af07..140b6af07 100644
--- a/SmartDeviceLink/SDLAirbagStatus.h
+++ b/SmartDeviceLink/public/SDLAirbagStatus.h
diff --git a/SmartDeviceLink/SDLAirbagStatus.m b/SmartDeviceLink/public/SDLAirbagStatus.m
index 650a2c5ba..650a2c5ba 100644
--- a/SmartDeviceLink/SDLAirbagStatus.m
+++ b/SmartDeviceLink/public/SDLAirbagStatus.m
diff --git a/SmartDeviceLink/public/SDLAlert.h b/SmartDeviceLink/public/SDLAlert.h
new file mode 100644
index 000000000..f18ea0c10
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAlert.h
@@ -0,0 +1,160 @@
+// SDLAlert.h
+//
+
+
+#import "SDLRPCRequest.h"
+
+@class SDLImage;
+@class SDLSoftButton;
+@class SDLTTSChunk;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Shows an alert which typically consists of text-to-speech message and text on the display. Either `alertText1`, `alertText2` or `TTSChunks` needs to be set or the request will be rejected.
+
+ If connecting to SDL Core v.6.0+, the alert can be canceled programmatically using the `cancelID`. Canceling will not dismiss the alert's speech - only the modal view will be dismissed. On older versions of SDL Core, the alert will persist until the user has interacted with the alert or the specified timeout has elapsed.
+
+ @since SDL 1.0
+ */
+@interface SDLAlert : SDLRPCRequest
+
+/**
+ Convenience init for creating a modal view with text, buttons, and optional sound cues.
+
+ @param alertText The string to be displayed in the first field of the display
+ @param softButtons Soft buttons to be displayed
+ @param playTone Whether the alert tone should be played before the TTS (if any) is spoken
+ @param ttsChunks Speech or a sound file to be played when the alert shows
+ @param cancelID An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC
+ @param icon Image to be displayed in the alert
+ @return An SDLAlert object
+ */
+- (instancetype)initWithAlertText:(nullable NSString *)alertText softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for creating a sound-only alert.
+
+ @param ttsChunks Speech or a sound file to be played when the alert shows
+ @param playTone Whether the alert tone should be played before the TTS is spoken
+ @return An SDLAlert object
+ */
+- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks playTone:(BOOL)playTone;
+
+/**
+ Convenience init for setting all alert parameters.
+
+ @param alertText1 The first line of the alert
+ @param alertText2 The second line of the alert
+ @param alertText3 The third line of the alert
+ @param softButtons Buttons for the alert
+ @param playTone Whether the alert tone should be played before the TTS (if any) is spoken
+ @param ttsChunks An array of text chunks to be spoken or a prerecorded sound file
+ @param duration The duration of the displayed portion of the alert, in milliseconds
+ @param progressIndicator Whether an animation indicating that loading of a feature is progressing should be shown
+ @param cancelID An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC
+ @param icon Image to be displayed in the alert
+ @return An SDLAlert object
+ */
+- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(UInt16)duration progressIndicator:(BOOL)progressIndicator alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID;
+
+/**
+ The first line of the alert text field.
+
+ @discussion At least either `alertText1`, `alertText2` or `ttsChunks` need to be provided.
+ @discussion If supported, the `displayCapabilities` will have a `TextField` with a `name` of `alertText1`.
+
+ String, Optional, Max length 500 chars
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSString *alertText1;
+
+/**
+ The second line of the alert text field.
+
+ @discussion At least either `alertText1`, `alertText2` or `ttsChunks` need to be provided.
+ @discussion If supported, the `displayCapabilities` will have a `TextField` with a `name` of `alertText2`
+
+ String, Optional, Max length 500 chars
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSString *alertText2;
+
+/**
+ The optional third line of the alert text field.
+
+ @discussion If supported, the `displayCapabilities` will have a `TextField` with a `name` of `alertText3`
+
+ String, Optional, Max length 500 chars
+ @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSString *alertText3;
+
+/**
+ An array of text chunks to be spoken or a prerecorded sound file.
+
+ @discussion At least either `alertText1`, `alertText2` or `ttsChunks` need to be provided.
+
+ Array of SDLTTSChunk, Optional, Array length 1 - 100
+
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *ttsChunks;
+
+/**
+ The duration of the displayed portion of the alert, in milliseconds. Typical timeouts are 3 - 5 seconds. If omitted, the timeout is set to a default of 5 seconds.
+
+ Integer, Optional, Min value: 3000, Max value: 10000
+
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *duration;
+
+/**
+ Whether the alert tone should be played before the TTS (if any) is spoken. If omitted or set to false, no tone is played.
+
+ Boolean, Optional
+
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *playTone;
+
+/**
+ If supported on the given platform, the alert GUI will include some sort of animation indicating that loading of a feature is progressing (e.g. a spinning wheel or hourglass, etc.).
+
+ Boolean, Optional
+
+ @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *progressIndicator;
+
+/**
+ Buttons for the displayed alert. If omitted on supported displays, the displayed alert shall not have any buttons.
+
+ Array of SDLSoftButton, Optional, Array size 0 - 4
+
+ @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSoftButton *> *softButtons;
+
+/**
+ An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.
+
+ Integer, Optional
+
+ @see SDLCancelInteraction
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
+
+/**
+ Image to be displayed in the alert. If omitted on supported displays, no (or the default if applicable) icon should be displayed.
+
+ SDLImage, Optional
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) SDLImage *alertIcon;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLAlert.m b/SmartDeviceLink/public/SDLAlert.m
new file mode 100644
index 000000000..3533ae5f6
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAlert.m
@@ -0,0 +1,141 @@
+// SDLAlert.m
+
+#import "SDLAlert.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLImage.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLSoftButton.h"
+#import "SDLTTSChunk.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLAlert
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameAlert]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithAlertText:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(nullable NSNumber *)duration progressIndicator:(BOOL)progressIndicator alertIcon:(nullable SDLImage *)icon cancelID:(nullable NSNumber *)cancelID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.alertText1 = alertText1;
+ self.alertText2 = alertText2;
+ self.alertText3 = alertText3;
+ self.ttsChunks = ttsChunks;
+ self.duration = duration;
+ self.playTone = @(playTone);
+ self.progressIndicator = @(progressIndicator);
+ self.softButtons = softButtons;
+ self.alertIcon = icon;
+ self.cancelID = cancelID;
+
+ return self;
+}
+
+- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(UInt16)duration progressIndicator:(BOOL)progressIndicator alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID {
+ return [self initWithAlertText:alertText1 alertText2:alertText2 alertText3:alertText3 softButtons:softButtons playTone:playTone ttsChunks:ttsChunks duration:@(duration) progressIndicator:progressIndicator alertIcon:icon cancelID:@(cancelID)];
+}
+
+- (instancetype)initWithAlertText:(nullable NSString *)alertText softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons playTone:(BOOL)playTone ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks alertIcon:(nullable SDLImage *)icon cancelID:(UInt32)cancelID {
+ return [self initWithAlertText:alertText alertText2:nil alertText3:nil softButtons:softButtons playTone:playTone ttsChunks:ttsChunks duration:nil progressIndicator:false alertIcon:icon cancelID:@(cancelID)];
+}
+
+- (instancetype)initWithTTSChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks playTone:(BOOL)playTone {
+ return [self initWithAlertText:nil alertText2:nil alertText3:nil softButtons:nil playTone:playTone ttsChunks:ttsChunks duration:nil progressIndicator:false alertIcon:nil cancelID:nil];
+}
+
+#pragma mark - Getters and Setters
+
+- (void)setAlertText1:(nullable NSString *)alertText1 {
+ [self.parameters sdl_setObject:alertText1 forName:SDLRPCParameterNameAlertText1];
+}
+
+- (nullable NSString *)alertText1 {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText1 ofClass:NSString.class error:nil];
+}
+
+- (void)setAlertText2:(nullable NSString *)alertText2 {
+ [self.parameters sdl_setObject:alertText2 forName:SDLRPCParameterNameAlertText2];
+}
+
+- (nullable NSString *)alertText2 {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText2 ofClass:NSString.class error:nil];
+}
+
+- (void)setAlertText3:(nullable NSString *)alertText3 {
+ [self.parameters sdl_setObject:alertText3 forName:SDLRPCParameterNameAlertText3];
+}
+
+- (nullable NSString *)alertText3 {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText3 ofClass:NSString.class error:nil];
+}
+
+- (void)setTtsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks {
+ [self.parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)ttsChunks {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setDuration:(nullable NSNumber<SDLInt> *)duration {
+ [self.parameters sdl_setObject:duration forName:SDLRPCParameterNameDuration];
+}
+
+- (nullable NSNumber<SDLInt> *)duration {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDuration ofClass:NSNumber.class error:nil];
+}
+
+- (void)setPlayTone:(nullable NSNumber<SDLBool> *)playTone {
+ [self.parameters sdl_setObject:playTone forName:SDLRPCParameterNamePlayTone];
+}
+
+- (nullable NSNumber<SDLBool> *)playTone {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePlayTone ofClass:NSNumber.class error:nil];
+}
+
+- (void)setProgressIndicator:(nullable NSNumber<SDLBool> *)progressIndicator {
+ [self.parameters sdl_setObject:progressIndicator forName:SDLRPCParameterNameProgressIndicator];
+}
+
+- (nullable NSNumber<SDLBool> *)progressIndicator {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameProgressIndicator ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSoftButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
+ [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons];
+}
+
+- (nullable NSArray<SDLSoftButton *> *)softButtons {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil];
+}
+
+- (void)setAlertIcon:(nullable SDLImage *)alertIcon {
+ [self.parameters sdl_setObject:alertIcon forName:SDLRPCParameterNameAlertIcon];
+}
+
+- (nullable SDLImage *)alertIcon {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertIcon ofClass:SDLImage.class error:nil];
+}
+
+- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
+ [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
+}
+
+- (nullable NSNumber<SDLInt> *)cancelID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAlertManeuver.h b/SmartDeviceLink/public/SDLAlertManeuver.h
index 3da7e63d4..3da7e63d4 100644
--- a/SmartDeviceLink/SDLAlertManeuver.h
+++ b/SmartDeviceLink/public/SDLAlertManeuver.h
diff --git a/SmartDeviceLink/SDLAlertManeuver.m b/SmartDeviceLink/public/SDLAlertManeuver.m
index c92ee6bd6..c92ee6bd6 100644
--- a/SmartDeviceLink/SDLAlertManeuver.m
+++ b/SmartDeviceLink/public/SDLAlertManeuver.m
diff --git a/SmartDeviceLink/SDLAlertManeuverResponse.h b/SmartDeviceLink/public/SDLAlertManeuverResponse.h
index 39a5d536b..39a5d536b 100644
--- a/SmartDeviceLink/SDLAlertManeuverResponse.h
+++ b/SmartDeviceLink/public/SDLAlertManeuverResponse.h
diff --git a/SmartDeviceLink/SDLAlertManeuverResponse.m b/SmartDeviceLink/public/SDLAlertManeuverResponse.m
index 89c0f3331..89c0f3331 100644
--- a/SmartDeviceLink/SDLAlertManeuverResponse.m
+++ b/SmartDeviceLink/public/SDLAlertManeuverResponse.m
diff --git a/SmartDeviceLink/SDLAlertResponse.h b/SmartDeviceLink/public/SDLAlertResponse.h
index db73310a6..db73310a6 100644
--- a/SmartDeviceLink/SDLAlertResponse.h
+++ b/SmartDeviceLink/public/SDLAlertResponse.h
diff --git a/SmartDeviceLink/SDLAlertResponse.m b/SmartDeviceLink/public/SDLAlertResponse.m
index 401b29e76..401b29e76 100644
--- a/SmartDeviceLink/SDLAlertResponse.m
+++ b/SmartDeviceLink/public/SDLAlertResponse.m
diff --git a/SmartDeviceLink/public/SDLAmbientLightStatus.h b/SmartDeviceLink/public/SDLAmbientLightStatus.h
new file mode 100644
index 000000000..cac4a1099
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAmbientLightStatus.h
@@ -0,0 +1,52 @@
+// SDLAmbientLightStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of the ambient light sensor for headlamps
+ *
+ * @since SDL 3.0
+ */
+typedef SDLEnum SDLAmbientLightStatus NS_TYPED_ENUM;
+
+/**
+ * Represents a "night" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusNight;
+
+/**
+ * Represents a "twilight 1" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight1;
+
+/**
+ * Represents a "twilight 2" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight2;
+
+/**
+ * Represents a "twilight 3" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight3;
+
+/**
+ * Represents a "twilight 4" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusTwilight4;
+
+/**
+ * Represents a "day" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusDay;
+
+/**
+ * Represents an "unknown" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusUnknown;
+
+/**
+ * Represents a "invalid" ambient light status
+ */
+extern SDLAmbientLightStatus const SDLAmbientLightStatusInvalid;
diff --git a/SmartDeviceLink/SDLAmbientLightStatus.m b/SmartDeviceLink/public/SDLAmbientLightStatus.m
index 673b159fd..673b159fd 100644
--- a/SmartDeviceLink/SDLAmbientLightStatus.m
+++ b/SmartDeviceLink/public/SDLAmbientLightStatus.m
diff --git a/SmartDeviceLink/public/SDLAppHMIType.h b/SmartDeviceLink/public/SDLAppHMIType.h
new file mode 100644
index 000000000..314f5bc67
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAppHMIType.h
@@ -0,0 +1,79 @@
+// SDLAppHMIType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration listing possible app hmi types.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLAppHMIType NS_TYPED_ENUM;
+
+/**
+ * The App will have default rights.
+ */
+extern SDLAppHMIType const SDLAppHMITypeDefault;
+
+/**
+ * Communication type of App
+ */
+extern SDLAppHMIType const SDLAppHMITypeCommunication;
+
+/**
+ * App dealing with Media
+ */
+extern SDLAppHMIType const SDLAppHMITypeMedia;
+
+/**
+ * Messaging App
+ */
+extern SDLAppHMIType const SDLAppHMITypeMessaging;
+
+/**
+ * Navigation App
+ */
+extern SDLAppHMIType const SDLAppHMITypeNavigation;
+
+/**
+ * Information App
+ */
+extern SDLAppHMIType const SDLAppHMITypeInformation;
+
+/**
+ * App dealing with social media
+ */
+extern SDLAppHMIType const SDLAppHMITypeSocial;
+
+/**
+ * App dealing with Mobile Projection applications
+ */
+extern SDLAppHMIType const SDLAppHMITypeProjection;
+
+/**
+ * App designed for use in the background
+ */
+extern SDLAppHMIType const SDLAppHMITypeBackgroundProcess;
+
+/**
+ * App only for Testing purposes
+ */
+extern SDLAppHMIType const SDLAppHMITypeTesting;
+
+/**
+ * System App
+ */
+extern SDLAppHMIType const SDLAppHMITypeSystem;
+
+/**
+ * Remote control */
+extern SDLAppHMIType const SDLAppHMITypeRemoteControl;
+
+
+/**
+ * WebEngine Projection mode
+ *
+ * @since 7.0
+ */
+extern SDLAppHMIType const SDLAppHMITypeWebView;
diff --git a/SmartDeviceLink/public/SDLAppHMIType.m b/SmartDeviceLink/public/SDLAppHMIType.m
new file mode 100644
index 000000000..7e24ef6d6
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAppHMIType.m
@@ -0,0 +1,19 @@
+// SDLAppHMIType.m
+//
+
+
+#import "SDLAppHMIType.h"
+
+SDLAppHMIType const SDLAppHMITypeDefault = @"DEFAULT";
+SDLAppHMIType const SDLAppHMITypeCommunication = @"COMMUNICATION";
+SDLAppHMIType const SDLAppHMITypeMedia = @"MEDIA";
+SDLAppHMIType const SDLAppHMITypeMessaging = @"MESSAGING";
+SDLAppHMIType const SDLAppHMITypeNavigation = @"NAVIGATION";
+SDLAppHMIType const SDLAppHMITypeInformation = @"INFORMATION";
+SDLAppHMIType const SDLAppHMITypeSocial = @"SOCIAL";
+SDLAppHMIType const SDLAppHMITypeProjection = @"PROJECTION";
+SDLAppHMIType const SDLAppHMITypeBackgroundProcess = @"BACKGROUND_PROCESS";
+SDLAppHMIType const SDLAppHMITypeTesting = @"TESTING";
+SDLAppHMIType const SDLAppHMITypeSystem = @"SYSTEM";
+SDLAppHMIType const SDLAppHMITypeRemoteControl = @"REMOTE_CONTROL";
+SDLAppHMIType const SDLAppHMITypeWebView = @"WEB_VIEW";
diff --git a/SmartDeviceLink/SDLAppInfo.h b/SmartDeviceLink/public/SDLAppInfo.h
index 2aaff168e..2aaff168e 100644
--- a/SmartDeviceLink/SDLAppInfo.h
+++ b/SmartDeviceLink/public/SDLAppInfo.h
diff --git a/SmartDeviceLink/SDLAppInfo.m b/SmartDeviceLink/public/SDLAppInfo.m
index 1b7ec0150..1b7ec0150 100644
--- a/SmartDeviceLink/SDLAppInfo.m
+++ b/SmartDeviceLink/public/SDLAppInfo.m
diff --git a/SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.h b/SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.h
new file mode 100644
index 000000000..63260e425
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.h
@@ -0,0 +1,81 @@
+// SDLAppInterfaceUnregisteredReason.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Indicates reason why app interface was unregistered. The application is being disconnected by SDL.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLAppInterfaceUnregisteredReason NS_TYPED_ENUM;
+
+
+/**
+ * Vehicle ignition turned off.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonIgnitionOff;
+
+/**
+ * Bluetooth was turned off, causing termination of a necessary Bluetooth connection.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonBluetoothOff;
+
+/**
+ * USB was disconnected, causing termination of a necessary iAP connection.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUSBDisconnected;
+
+/**
+ * Application attempted SmartDeviceLink RPC request while HMILevel = NONE. App must have HMILevel other than NONE to issue RPC requests or get notifications or RPC responses.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel;
+
+/**
+ * Either too many -- or too many per unit of time -- requests were made by the application.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonTooManyRequests;
+
+/**
+ * The application has issued requests which cause driver distraction rules to be violated.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonDriverDistractionViolation;
+
+/**
+ * The user performed a language change on the SDL platform, causing the application to need to be reregistered for the new language.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonLanguageChange;
+
+/**
+ * The user performed a MASTER RESET on the SDL platform, causing removal of a necessary Bluetooth pairing.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonMasterReset;
+
+/**
+ * The user restored settings to FACTORY DEFAULTS on the SDL platform.
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonFactoryDefaults;
+
+/**
+ * The app is not being authorized to be connected to SDL.
+ *
+ * @since SDL 2.0
+ */
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonAppUnauthorized;
+
+/// The app could not register due to a protocol violation
+///
+/// @since RPC 4.0
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonProtocolViolation;
+
+/// The HMI resource is unsupported
+///
+/// @since RPC 4.1
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource;
+
+
+/// The application is unregistered due to hardware resource constraints. The system will shortly close the application to free up hardware resources.
+///
+/// @since RPC 7.0
+extern SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonResourceConstraint;
diff --git a/SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.m b/SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.m
new file mode 100644
index 000000000..12b8ed1f5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAppInterfaceUnregisteredReason.m
@@ -0,0 +1,19 @@
+// SDLAppInterfaceUnregisteredReason.m
+//
+
+#import "SDLAppInterfaceUnregisteredReason.h"
+
+
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonIgnitionOff = @"IGNITION_OFF";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonBluetoothOff = @"BLUETOOTH_OFF";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUSBDisconnected = @"USB_DISCONNECTED";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel = @"REQUEST_WHILE_IN_NONE_HMI_LEVEL";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonTooManyRequests = @"TOO_MANY_REQUESTS";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonDriverDistractionViolation = @"DRIVER_DISTRACTION_VIOLATION";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonLanguageChange = @"LANGUAGE_CHANGE";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonMasterReset = @"MASTER_RESET";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonFactoryDefaults = @"FACTORY_DEFAULTS";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonAppUnauthorized = @"APP_UNAUTHORIZED";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonProtocolViolation = @"PROTOCOL_VIOLATION";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource = @"UNSUPPORTED_HMI_RESOURCE";
+SDLAppInterfaceUnregisteredReason const SDLAppInterfaceUnregisteredReasonResourceConstraint = @"RESOURCE_CONSTRAINT";
diff --git a/SmartDeviceLink/SDLAppServiceCapability.h b/SmartDeviceLink/public/SDLAppServiceCapability.h
index 803f82c7c..803f82c7c 100644
--- a/SmartDeviceLink/SDLAppServiceCapability.h
+++ b/SmartDeviceLink/public/SDLAppServiceCapability.h
diff --git a/SmartDeviceLink/SDLAppServiceCapability.m b/SmartDeviceLink/public/SDLAppServiceCapability.m
index 595540cf4..595540cf4 100644
--- a/SmartDeviceLink/SDLAppServiceCapability.m
+++ b/SmartDeviceLink/public/SDLAppServiceCapability.m
diff --git a/SmartDeviceLink/SDLAppServiceData.h b/SmartDeviceLink/public/SDLAppServiceData.h
index 28a6121b9..28a6121b9 100644
--- a/SmartDeviceLink/SDLAppServiceData.h
+++ b/SmartDeviceLink/public/SDLAppServiceData.h
diff --git a/SmartDeviceLink/SDLAppServiceData.m b/SmartDeviceLink/public/SDLAppServiceData.m
index 13565a7af..13565a7af 100644
--- a/SmartDeviceLink/SDLAppServiceData.m
+++ b/SmartDeviceLink/public/SDLAppServiceData.m
diff --git a/SmartDeviceLink/public/SDLAppServiceManifest.h b/SmartDeviceLink/public/SDLAppServiceManifest.h
new file mode 100644
index 000000000..3998e8a2c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAppServiceManifest.h
@@ -0,0 +1,156 @@
+//
+// SDLAppServiceManifest.h
+// SmartDeviceLink
+//
+// Created by Nicole on 1/25/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCRequest.h"
+
+#import "SDLAppServiceType.h"
+
+@class SDLFunctionID;
+@class SDLImage;
+@class SDLMediaServiceManifest;
+@class SDLNavigationServiceManifest;
+@class SDLMsgVersion;
+@class SDLWeatherServiceManifest;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * This manifest contains all the information necessary for the service to be published, activated, and allow consumers to interact with it
+ */
+@interface SDLAppServiceManifest : SDLRPCStruct
+
+/**
+ * Convenience init for serviceType.
+ *
+ * @param serviceType The type of service that is to be offered by this app
+ * @return A SDLAppServiceManifest object
+ */
+- (instancetype)initWithAppServiceType:(SDLAppServiceType)serviceType NS_DESIGNATED_INITIALIZER;
+
+/**
+ * Convenience init for a media service manifest.
+ *
+ * @param serviceName Unique name of this service
+ * @param serviceIcon The file name of the icon to be associated with this service
+ * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
+ * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
+ * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
+ * @param mediaServiceManifest A media service manifest
+ * @return A SDLAppServiceManifest object
+ */
+- (instancetype)initWithMediaServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest;
+
+/**
+ * Convenience init for a weather service manifest.
+ *
+ * @param serviceName Unique name of this service
+ * @param serviceIcon The file name of the icon to be associated with this service
+ * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
+ * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
+ * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
+ * @param weatherServiceManifest A weather service manifest
+ * @return A SDLAppServiceManifest object
+ */
+- (instancetype)initWithWeatherServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest;
+
+/**
+ * Convenience init for a navigation service manifest.
+ *
+ * @param serviceName Unique name of this service
+ * @param serviceIcon The file name of the icon to be associated with this service
+ * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
+ * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
+ * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
+ * @param navigationServiceManifest A navigation service manifest
+ * @return A SDLAppServiceManifest object
+ */
+- (instancetype)initWithNavigationServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest;
+
+/**
+ * Convenience init for all parameters.
+ *
+ * @param serviceName Unique name of this service
+ * @param serviceType The type of service that is to be offered by this app
+ * @param serviceIcon The file name of the icon to be associated with this service
+ * @param allowAppConsumers If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false
+ * @param maxRPCSpecVersion This is the max RPC Spec version the app service understands
+ * @param handledRPCs This field contains the Function IDs for the RPCs that this service intends to handle correctly
+ * @param mediaServiceManifest A media service manifest
+ * @param weatherServiceManifest A weather service manifest
+ * @param navigationServiceManifest A navigation service manifest
+ * @return A SDLAppServiceManifest object
+ */
+- (instancetype)initWithServiceName:(nullable NSString *)serviceName serviceType:(SDLAppServiceType)serviceType serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest;
+
+/**
+ * Unique name of this service.
+ *
+ * String, Optional
+ */
+@property (nullable, strong, nonatomic) NSString *serviceName;
+
+/**
+ * The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.
+ *
+ * String, See `SDLAppServiceType`, Required
+ */
+@property (strong, nonatomic) NSString *serviceType;
+
+/**
+ * The file name of the icon to be associated with this service. Most likely the same as the appIcon.
+ *
+ * String, Optional
+ */
+@property (nullable, strong, nonatomic) SDLImage *serviceIcon;
+
+/**
+ * If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false.
+ *
+ * Boolean, Optional, default = NO
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *allowAppConsumers;
+
+/**
+ * This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable.
+ *
+ * SDLMsgVersion, Optional
+ */
+@property (nullable, strong, nonatomic) SDLMsgVersion *maxRPCSpecVersion;
+
+/**
+ * This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. See FunctionID for enum equivalent values. This parameter is an integer to allow for new function IDs to be used by apps on older versions of SDL Core.
+ *
+ * Array of Integers, See `SDLFunctionID`, Optional
+ */
+@property (nullable, strong, nonatomic) NSArray<NSNumber *> *handledRPCs;
+
+/**
+ * A media service manifest.
+ *
+ * SDLMediaServiceManifest, Optional
+ */
+@property (nullable, strong, nonatomic) SDLMediaServiceManifest *mediaServiceManifest;
+
+/**
+ * A weather service manifest.
+ *
+ * SDLWeatherServiceManifest, Optional
+ */
+@property (nullable, strong, nonatomic) SDLWeatherServiceManifest *weatherServiceManifest;
+
+/**
+ * A navigation service manifest.
+ *
+ * SDLNavigationServiceManifest, Optional
+ */
+@property (nullable, strong, nonatomic) SDLNavigationServiceManifest *navigationServiceManifest;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLAppServiceManifest.m b/SmartDeviceLink/public/SDLAppServiceManifest.m
new file mode 100644
index 000000000..a49a99517
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAppServiceManifest.m
@@ -0,0 +1,140 @@
+//
+// SDLAppServiceManifest.m
+// SmartDeviceLink
+//
+// Created by Nicole on 1/25/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLAppServiceManifest.h"
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+#import "SDLFunctionID.h"
+#import "SDLImage.h"
+#import "SDLMediaServiceManifest.h"
+#import "SDLNavigationServiceManifest.h"
+#import "SDLMsgVersion.h"
+#import "SDLWeatherServiceManifest.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLAppServiceManifest
+
+- (instancetype)initWithAppServiceType:(SDLAppServiceType)serviceType {
+ self = [super init];
+ if (!self) {
+ return self;
+ }
+
+ self.serviceType = serviceType;
+
+ return self;
+}
+
+- (instancetype)initWithMediaServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest {
+ return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeMedia serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers maxRPCSpecVersion:maxRPCSpecVersion handledRPCs:handledRPCs mediaServiceManifest:mediaServiceManifest weatherServiceManifest:nil navigationServiceManifest:nil];
+}
+
+- (instancetype)initWithWeatherServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest {
+ return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeWeather serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers maxRPCSpecVersion:maxRPCSpecVersion handledRPCs:handledRPCs mediaServiceManifest:nil weatherServiceManifest:weatherServiceManifest navigationServiceManifest:nil];
+}
+
+- (instancetype)initWithNavigationServiceName:(nullable NSString *)serviceName serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
+ return [self initWithServiceName:serviceName serviceType:SDLAppServiceTypeNavigation serviceIcon:serviceIcon allowAppConsumers:allowAppConsumers maxRPCSpecVersion:maxRPCSpecVersion handledRPCs:handledRPCs mediaServiceManifest:nil weatherServiceManifest:nil navigationServiceManifest:navigationServiceManifest];
+}
+
+- (instancetype)initWithServiceName:(nullable NSString *)serviceName serviceType:(SDLAppServiceType)serviceType serviceIcon:(nullable SDLImage *)serviceIcon allowAppConsumers:(BOOL)allowAppConsumers maxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion handledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs mediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest weatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest navigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
+ self = [self initWithAppServiceType:serviceType];
+ if (!self) {
+ return self;
+ }
+
+ self.serviceName = serviceName;
+ self.serviceIcon = serviceIcon;
+ self.allowAppConsumers = @(allowAppConsumers);
+ self.maxRPCSpecVersion = maxRPCSpecVersion;
+ self.handledRPCs = handledRPCs;
+ self.mediaServiceManifest = mediaServiceManifest;
+ self.weatherServiceManifest = weatherServiceManifest;
+ self.navigationServiceManifest = navigationServiceManifest;
+
+ return self;
+}
+
+- (void)setServiceName:(nullable NSString *)serviceName {
+ [self.store sdl_setObject:serviceName forName:SDLRPCParameterNameServiceName];
+}
+
+- (nullable NSString *)serviceName {
+ return [self.store sdl_objectForName:SDLRPCParameterNameServiceName ofClass:NSString.class error:nil];
+}
+
+- (void)setServiceType:(NSString *)serviceType {
+ [self.store sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType];
+}
+
+- (NSString *)serviceType {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error];
+}
+
+- (void)setServiceIcon:(nullable SDLImage *)serviceIcon {
+ [self.store sdl_setObject:serviceIcon forName:SDLRPCParameterNameServiceIcon];
+}
+
+- (nullable SDLImage *)serviceIcon {
+ return [self.store sdl_objectForName:SDLRPCParameterNameServiceIcon ofClass:SDLImage.class error:nil];
+}
+
+- (void)setAllowAppConsumers:(nullable NSNumber<SDLBool> *)allowAppConsumers {
+ [self.store sdl_setObject:allowAppConsumers forName:SDLRPCParameterNameAllowAppConsumers];
+}
+
+- (nullable NSNumber<SDLBool> *)allowAppConsumers {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAllowAppConsumers ofClass:NSNumber.class error:nil];
+}
+
+- (void)setMaxRPCSpecVersion:(nullable SDLMsgVersion *)maxRPCSpecVersion {
+ [self.store sdl_setObject:maxRPCSpecVersion forName:SDLRPCParameterNameRPCSpecVersion];
+}
+
+- (nullable SDLMsgVersion *)maxRPCSpecVersion {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRPCSpecVersion ofClass:SDLMsgVersion.class error:nil];
+}
+
+- (void)setHandledRPCs:(nullable NSArray<NSNumber *> *)handledRPCs {
+ [self.store sdl_setObject:handledRPCs forName:SDLRPCParameterNameHandledRPCs];
+}
+
+- (nullable NSArray<NSNumber *> *)handledRPCs {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameHandledRPCs ofClass:NSNumber.class error:nil];
+}
+
+- (void)setWeatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest {
+ [self.store sdl_setObject:weatherServiceManifest forName:SDLRPCParameterNameWeatherServiceManifest];
+}
+
+- (nullable SDLWeatherServiceManifest *)weatherServiceManifest {
+ return [self.store sdl_objectForName:SDLRPCParameterNameWeatherServiceManifest ofClass:SDLWeatherServiceManifest.class error:nil];
+}
+
+- (void)setMediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest {
+ [self.store sdl_setObject:mediaServiceManifest forName:SDLRPCParameterNameMediaServiceManifest];
+}
+
+- (nullable SDLMediaServiceManifest *)mediaServiceManifest {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMediaServiceManifest ofClass:SDLMediaServiceManifest.class error:nil];
+}
+
+- (void)setNavigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest {
+ [self.store sdl_setObject:navigationServiceManifest forName:SDLRPCParameterNameNavigationServiceManifest];
+}
+
+- (nullable SDLNavigationServiceManifest *)navigationServiceManifest {
+ return [self.store sdl_objectForName:SDLRPCParameterNameNavigationServiceManifest ofClass:SDLNavigationServiceManifest.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAppServiceRecord.h b/SmartDeviceLink/public/SDLAppServiceRecord.h
index fd5a3bf37..fd5a3bf37 100644
--- a/SmartDeviceLink/SDLAppServiceRecord.h
+++ b/SmartDeviceLink/public/SDLAppServiceRecord.h
diff --git a/SmartDeviceLink/SDLAppServiceRecord.m b/SmartDeviceLink/public/SDLAppServiceRecord.m
index 72711d0a8..72711d0a8 100644
--- a/SmartDeviceLink/SDLAppServiceRecord.m
+++ b/SmartDeviceLink/public/SDLAppServiceRecord.m
diff --git a/SmartDeviceLink/public/SDLAppServiceType.h b/SmartDeviceLink/public/SDLAppServiceType.h
new file mode 100644
index 000000000..d1b98f067
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAppServiceType.h
@@ -0,0 +1,29 @@
+//
+// SDLAppServiceType.h
+// SmartDeviceLink
+//
+// Created by Nicole on 1/25/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration listing possible app service types.
+ */
+typedef SDLEnum SDLAppServiceType NS_TYPED_ENUM;
+
+/**
+ * The app will have a service type of media.
+ */
+extern SDLAppServiceType const SDLAppServiceTypeMedia;
+
+/**
+ * The app will have a service type of weather.
+ */
+extern SDLAppServiceType const SDLAppServiceTypeWeather;
+
+/**
+ * The app will have a service type of navigation.
+ */
+extern SDLAppServiceType const SDLAppServiceTypeNavigation;
diff --git a/SmartDeviceLink/SDLAppServiceType.m b/SmartDeviceLink/public/SDLAppServiceType.m
index 730990333..730990333 100644
--- a/SmartDeviceLink/SDLAppServiceType.m
+++ b/SmartDeviceLink/public/SDLAppServiceType.m
diff --git a/SmartDeviceLink/SDLAppServicesCapabilities.h b/SmartDeviceLink/public/SDLAppServicesCapabilities.h
index feb843c30..feb843c30 100644
--- a/SmartDeviceLink/SDLAppServicesCapabilities.h
+++ b/SmartDeviceLink/public/SDLAppServicesCapabilities.h
diff --git a/SmartDeviceLink/SDLAppServicesCapabilities.m b/SmartDeviceLink/public/SDLAppServicesCapabilities.m
index a31b5d400..a31b5d400 100644
--- a/SmartDeviceLink/SDLAppServicesCapabilities.m
+++ b/SmartDeviceLink/public/SDLAppServicesCapabilities.m
diff --git a/SmartDeviceLink/public/SDLArtwork.h b/SmartDeviceLink/public/SDLArtwork.h
new file mode 100644
index 000000000..309bf42c8
--- /dev/null
+++ b/SmartDeviceLink/public/SDLArtwork.h
@@ -0,0 +1,154 @@
+//
+// SDLArtwork.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/15/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "SDLFile.h"
+#import "SDLStaticIconName.h"
+
+@class SDLImage;
+
+/// Image format of an artwork file
+typedef NS_ENUM(NSUInteger, SDLArtworkImageFormat) {
+
+ /// Image format: PNG
+ SDLArtworkImageFormatPNG,
+
+ /// Image format: JPG
+ SDLArtworkImageFormatJPG
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An SDLFile subclass specifically designed for images
+ */
+@interface SDLArtwork : SDLFile <NSCopying>
+
+/**
+ * Describes whether or not the image is a template that can be (re)colored by the SDL HMI. To make the artwork a template, set the `UIImage`s rendering mode to `UIImageRenderingModeAlwaysTemplate`. In order for templates to work successfully, the icon must be one solid color with a clear background. The artwork should be created using the PNG image format.
+ *
+ * @discussion An image should be templated if it is intended to be used as an icon in a button or menu.
+ */
+@property (assign, nonatomic, readonly) BOOL isTemplate;
+
+/**
+ The Image RPC representing this artwork. Generally for use internally, you should instead pass an artwork to a Screen Manager method.
+ */
+@property (strong, nonatomic, readonly) SDLImage *imageRPC;
+
+/**
+ * Convenience helper to create an ephemeral artwork from an image.
+ *
+ * This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
+ *
+ * Persistent files should be created using `persistentArtworkWithImage:name:asImageFormat:`
+ *
+ * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
+ *
+ * @param image The UIImage to be sent to the remote head unit
+ * @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
+ * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
+ *
+ * @return An instance of this class to be passed to the file manager.
+ */
++ (instancetype)artworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to false");
+
+/**
+ * Convenience helper to create an ephemeral artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image's data which is created by hashing the data using the MD5 algorithm.
+ *
+ * This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
+ *
+ * Persistent files should be created using `persistentArtworkWithImage:name:asImageFormat:`
+ *
+ * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
+ *
+ * @param image The UIImage to be sent to the remote head unit
+ * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
+ *
+ * @return An instance of this class to be passed to the file manager.
+ */
++ (instancetype)artworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to false");
+
+/**
+ Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.
+
+ @param staticIcon The static icon to be shown on the remote system.
+
+ @return An instance of this class to be passed to a screen manager.
+ */
++ (instancetype)artworkWithStaticIcon:(SDLStaticIconName)staticIcon NS_SWIFT_UNAVAILABLE("Use the standard initializer");
+
+/**
+ * Convenience helper to create a persistent artwork from an image.
+ *
+ * This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
+ *
+ * Ephemeral files should be created using `ephemeralArtworkWithImage:name:asImageFormat:`
+ *
+ * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
+ *
+ * @param image The UIImage to be sent to the remote head unit
+ * @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
+ * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
+ *
+ * @return An instance of this class to be passed to the file manager.
+ */
++ (instancetype)persistentArtworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");
+
+/**
+ * Convenience helper to create a persistent artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image's data which is created by hashing the data using the MD5 algorithm.
+ *
+ * This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
+ *
+ * Ephemeral files should be created using `ephemeralArtworkWithImage:name:asImageFormat:`
+ *
+ * @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
+ *
+ * @param image The UIImage to be sent to the remote head unit
+ * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
+ *
+ * @return An instance of this class to be passed to the file manager.
+ */
++ (instancetype)persistentArtworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");
+
+/**
+ * Create a file for transmission to the remote system from a UIImage.
+ *
+ * @param image The UIImage to be sent to the remote head unit
+ * @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
+ * @param persistent Whether or not the artwork should be persistent.
+ * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
+ *
+ * @return An instance of this class to be passed to the file manager.
+ */
+- (instancetype)initWithImage:(UIImage *)image name:(NSString *)name persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat;
+
+/**
+ * Create a file for transmission to the remote system from a UIImage. A unique name will be assigned to the image. This name is a string representation of the image's data which is created by hashing the data using the MD5 algorithm.
+
+ * @param image The UIImage to be sent to the remote head unit
+ * @param persistent Whether or not the artwork should be persistent.
+ * @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
+ *
+ * @return An instance of this class to be passed to the file manager.
+ */
+- (instancetype)initWithImage:(UIImage *)image persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat;
+
+/**
+ Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.
+
+ @param staticIcon The static icon to be shown on the remote system.
+
+ @return An instance of this class to be passed to a screen manager.
+ */
+- (instancetype)initWithStaticIcon:(SDLStaticIconName)staticIcon;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLArtwork.m b/SmartDeviceLink/public/SDLArtwork.m
new file mode 100644
index 000000000..85dd4705a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLArtwork.m
@@ -0,0 +1,192 @@
+//
+// SDLArtwork.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/15/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <CommonCrypto/CommonDigest.h>
+
+#import "SDLArtwork.h"
+#import "SDLFileType.h"
+#import "SDLImage.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLFile ()
+
+@property (assign, nonatomic, readwrite) BOOL isStaticIcon;
+
+@end
+
+@interface SDLArtwork ()
+
+@property (strong, nonatomic) UIImage *image;
+@property (assign, nonatomic, readwrite) BOOL isTemplate;
+
+@end
+
+
+@implementation SDLArtwork
+
+#pragma mark - Lifecycle
+
++ (instancetype)artworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat {
+ return [[self alloc] initWithImage:image name:name persistent:NO asImageFormat:imageFormat];
+}
+
++ (instancetype)artworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat {
+ return [[self alloc] initWithImage:image persistent:NO asImageFormat:imageFormat];
+}
+
++ (instancetype)artworkWithStaticIcon:(SDLStaticIconName)staticIcon {
+ return [[self alloc] initWithStaticIcon:staticIcon];
+}
+
++ (instancetype)persistentArtworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat {
+ return [[self alloc] initWithImage:image name:name persistent:YES asImageFormat:imageFormat];
+}
+
++ (instancetype)persistentArtworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat {
+ return [[self alloc] initWithImage:image persistent:YES asImageFormat:imageFormat];
+}
+
+
+#pragma mark Private Lifecycle
+
+- (instancetype)initWithImage:(UIImage *)image name:(NSString *)name persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat {
+ self.image = image;
+ return [super initWithData:[self.class sdl_dataForUIImage:image imageFormat:imageFormat] name:name fileExtension:[self.class sdl_fileExtensionForImageFormat:imageFormat] persistent:persistent];
+}
+
+- (instancetype)initWithImage:(UIImage *)image persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat {
+ self.image = image;
+ NSData *imageData = [self.class sdl_dataForUIImage:image imageFormat:imageFormat];
+ NSString *imageName = [self.class sdl_md5HashFromNSData:imageData];
+ return [super initWithData:[self.class sdl_dataForUIImage:image imageFormat:imageFormat] name:(imageName != nil ? imageName : @"") fileExtension:[self.class sdl_fileExtensionForImageFormat:imageFormat] persistent:persistent];
+}
+
+- (instancetype)initWithStaticIcon:(SDLStaticIconName)staticIcon {
+ self = [super initWithData:[staticIcon dataUsingEncoding:NSASCIIStringEncoding] name:staticIcon fileExtension:@"" persistent:NO];
+ self.isStaticIcon = true;
+
+ return self;
+}
+
+#pragma mark - Setters and Getters
+
+- (void)setImage:(UIImage *)image {
+ _image = image;
+ _isTemplate = (image.renderingMode == UIImageRenderingModeAlwaysTemplate);
+}
+
+- (SDLImage *)imageRPC {
+ if (self.isStaticIcon) {
+ return [[SDLImage alloc] initWithStaticIconName:self.name];
+ } else {
+ return [[SDLImage alloc] initWithName:self.name isTemplate:self.isTemplate];
+ }
+}
+
+#pragma mark - Helper Methods
+
+/**
+ * Returns the JPG or PNG image data for a UIImage.
+ *
+ * @param image A UIImage
+ * @param imageFormat The image format to use when converting the UIImage to NSData
+ * @return The image data
+ */
++ (NSData *)sdl_dataForUIImage:(UIImage *)image imageFormat:(SDLArtworkImageFormat)imageFormat {
+ NSData *imageData = nil;
+ switch (imageFormat) {
+ case SDLArtworkImageFormatPNG: {
+ imageData = UIImagePNGRepresentation(image);
+ } break;
+ case SDLArtworkImageFormatJPG: {
+ imageData = UIImageJPEGRepresentation(image, 0.85);
+ } break;
+ }
+ return imageData;
+}
+
+/**
+ * Returns the file extension for the image format.
+ *
+ * @param imageFormat Whether the image is a PNG or JPG
+ * @return The file extension for the image format
+ */
++ (NSString *)sdl_fileExtensionForImageFormat:(SDLArtworkImageFormat)imageFormat {
+ NSString *fileExtension = nil;
+ switch (imageFormat) {
+ case SDLArtworkImageFormatPNG: {
+ fileExtension = @"png";
+ } break;
+ case SDLArtworkImageFormatJPG: {
+ fileExtension = @"jpg";
+ } break;
+ }
+ return fileExtension;
+}
+
+/**
+ * Creates a string representation of NSData by hashing the data using the MD5 hash function. This string is not guaranteed to be unique as collisions can occur, however collisions are extremely rare.
+ *
+ * HAX: A MD5 hash always creates a string with 32 characters (128-bits). Due to some implementations of Core not following the spec, file names that are too long are being rejected. To try to accommodate this setup, hashed file names are being truncated to 16 characters.
+ *
+ * Sourced from https://stackoverflow.com/questions/2018550/how-do-i-create-an-md5-hash-of-a-string-in-cocoa
+ *
+ * @param data The data to hash
+ * @return A MD5 hash of the data
+ */
++ (NSString *)sdl_md5HashFromNSData:(NSData *)data {
+ if (data == nil) { return nil; }
+
+ unsigned char hash[CC_MD5_DIGEST_LENGTH];
+ CC_MD5([data bytes], (CC_LONG)[data length], hash);
+ NSMutableString *formattedHash = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
+ // HAX: To shorten the string to 16 characters, the loop has been shortened to 8 fom 16.
+ for (int i = 0; i < CC_MD5_DIGEST_LENGTH / 2; i += 1) {
+ [formattedHash appendFormat:@"%02x", hash[i]];
+ }
+ return formattedHash;
+}
+
+#pragma mark - NSObject overrides
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLArtworkImageFormat imageFormat = self.fileType == SDLFileTypePNG ? SDLArtworkImageFormatPNG : SDLArtworkImageFormatJPG;
+
+ return [[SDLArtwork allocWithZone:zone] initWithImage:[self.image copy] name:[self.name copy] persistent:self.isPersistent asImageFormat:imageFormat];
+}
+
+- (NSUInteger)hash {
+ return self.name.hash ^ self.data.hash;
+}
+
+- (BOOL)isEqual:(id)object {
+ if (self == object) { return YES; }
+
+ if (![object isKindOfClass:[SDLArtwork class]]) { return NO; }
+
+ return [self isEqualToArtwork:(SDLArtwork *)object];
+}
+
+- (BOOL)isEqualToArtwork:(SDLArtwork *)artwork {
+ if (!artwork) { return NO; }
+
+ BOOL haveEqualNames = [self.name isEqualToString:artwork.name];
+ BOOL haveEqualData = [self.data isEqualToData:artwork.data];
+ BOOL haveEqualFormats = [self.fileType isEqualToEnum:artwork.fileType];
+
+ return haveEqualNames && haveEqualData && haveEqualFormats;
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"SDLArtwork name: %@, image: %@, isTemplate: %@, isStaticIcon: %@", self.name, self.image, (self.isTemplate ? @"YES" : @"NO"), (self.isStaticIcon ? @"YES" : @"NO")];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLAudioControlCapabilities.h b/SmartDeviceLink/public/SDLAudioControlCapabilities.h
new file mode 100644
index 000000000..f596b081b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAudioControlCapabilities.h
@@ -0,0 +1,91 @@
+// SDLAudioControlCapabilities.h
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLModuleInfo.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Describes a head unit's audio control capabilities.
+
+ @since RPC 5.0
+ */
+@interface SDLAudioControlCapabilities : SDLRPCStruct
+
+/**
+ Constructs a newly allocated SDLAudioControlCapabilities object with audio control module name (max 100 chars)
+
+ @param name The short friendly name of the audio control module.
+ @param moduleInfo Information about a RC module, including its id.
+ @return An instance of the SDLAudioControlCapabilities class.
+ */
+- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo;
+
+/**
+ Constructs a newly allocated SDLAudioControlCapabilities object with given parameters
+
+ @param name The short friendly name of the audio control module.
+ @param moduleInfo Information about a RC module, including its id.
+ @param sourceAvailable Availability of the control of audio source.
+ @param volumeAvailable Availability of the volume of audio source.
+ @param equalizerAvailable Availability of the equalizer of audio source.
+ @param equalizerMaxChannelID Equalizer channel ID (between 1-100).
+ @return An instance of the SDLAudioControlCapabilities class.
+ */
+- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo sourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable keepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable volumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable equalizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable equalizerMaxChannelID:(nullable NSNumber<SDLInt> *)equalizerMaxChannelID;
+
+/**
+ * @abstract The short friendly name of the audio control module.
+ * It should not be used to identify a module by mobile application.
+ *
+ * Required, Max String length 100 chars
+ */
+@property (strong, nonatomic) NSString *moduleName;
+
+/**
+ * @abstract Availability of the control of audio source.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *sourceAvailable;
+
+/**
+ Availability of the keepContext parameter.
+
+ Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *keepContextAvailable;
+
+/**
+ * @abstract Availability of the control of audio volume.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *volumeAvailable;
+
+/**
+ * @abstract Availability of the control of Equalizer Settings.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *equalizerAvailable;
+
+/**
+ * @abstract Must be included if equalizerAvailable=true,
+ * and assume all IDs starting from 1 to this value are valid
+ *
+ * Optional, Integer 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *equalizerMaxChannelId;
+
+/**
+ * Information about a RC module, including its id.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLAudioControlCapabilities.m b/SmartDeviceLink/public/SDLAudioControlCapabilities.m
new file mode 100644
index 000000000..68832efe2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAudioControlCapabilities.m
@@ -0,0 +1,99 @@
+// SDLAudioControlCapabilities.m
+//
+
+#import "SDLAudioControlCapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLAudioControlCapabilities
+
+- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.moduleName = name;
+ self.moduleInfo = moduleInfo;
+
+ return self;
+}
+
+- (instancetype)initWithModuleName:(NSString *)name moduleInfo:(nullable SDLModuleInfo *)moduleInfo sourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable keepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable volumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable equalizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable equalizerMaxChannelID:(nullable NSNumber<SDLInt> *)equalizerMaxChannelID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.moduleName = name;
+ self.moduleInfo = moduleInfo;
+ self.sourceAvailable = sourceAvailable;
+ self.keepContextAvailable = keepContextAvailable;
+ self.volumeAvailable = volumeAvailable;
+ self.equalizerAvailable = equalizerAvailable;
+ self.equalizerMaxChannelId = equalizerMaxChannelID;
+
+ return self;
+}
+
+- (void)setModuleName:(NSString *)moduleName {
+ [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
+}
+
+- (NSString *)moduleName {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
+}
+
+- (void)setSourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable {
+ [self.store sdl_setObject:sourceAvailable forName:SDLRPCParameterNameSourceAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)sourceAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSourceAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setKeepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable {
+ [self.store sdl_setObject:keepContextAvailable forName:SDLRPCParameterNameKeepContextAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)keepContextAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameKeepContextAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVolumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable {
+ [self.store sdl_setObject:volumeAvailable forName:SDLRPCParameterNameVolumeAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)volumeAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameVolumeAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEqualizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable {
+ [self.store sdl_setObject:equalizerAvailable forName:SDLRPCParameterNameEqualizerAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)equalizerAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameEqualizerAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEqualizerMaxChannelId:(nullable NSNumber<SDLInt> *)equalizerMaxChannelId {
+ [self.store sdl_setObject:equalizerMaxChannelId forName:SDLRPCParameterNameEqualizerMaxChannelId];
+}
+
+- (nullable NSNumber<SDLInt> *)equalizerMaxChannelId {
+ return [self.store sdl_objectForName:SDLRPCParameterNameEqualizerMaxChannelId ofClass:NSNumber.class error:nil];
+}
+
+- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
+}
+
+- (nullable SDLModuleInfo *)moduleInfo {
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAudioControlData.h b/SmartDeviceLink/public/SDLAudioControlData.h
index 2cd996338..2cd996338 100644
--- a/SmartDeviceLink/SDLAudioControlData.h
+++ b/SmartDeviceLink/public/SDLAudioControlData.h
diff --git a/SmartDeviceLink/SDLAudioControlData.m b/SmartDeviceLink/public/SDLAudioControlData.m
index 67296c9ae..67296c9ae 100644
--- a/SmartDeviceLink/SDLAudioControlData.m
+++ b/SmartDeviceLink/public/SDLAudioControlData.m
diff --git a/SmartDeviceLink/SDLAudioFile.h b/SmartDeviceLink/public/SDLAudioFile.h
index a9302949b..a9302949b 100755
--- a/SmartDeviceLink/SDLAudioFile.h
+++ b/SmartDeviceLink/public/SDLAudioFile.h
diff --git a/SmartDeviceLink/SDLAudioFile.m b/SmartDeviceLink/public/SDLAudioFile.m
index 46b50f540..46b50f540 100755
--- a/SmartDeviceLink/SDLAudioFile.m
+++ b/SmartDeviceLink/public/SDLAudioFile.m
diff --git a/SmartDeviceLink/SDLAudioPassThruCapabilities.h b/SmartDeviceLink/public/SDLAudioPassThruCapabilities.h
index 67f229281..67f229281 100644
--- a/SmartDeviceLink/SDLAudioPassThruCapabilities.h
+++ b/SmartDeviceLink/public/SDLAudioPassThruCapabilities.h
diff --git a/SmartDeviceLink/SDLAudioPassThruCapabilities.m b/SmartDeviceLink/public/SDLAudioPassThruCapabilities.m
index c84263a24..c84263a24 100644
--- a/SmartDeviceLink/SDLAudioPassThruCapabilities.m
+++ b/SmartDeviceLink/public/SDLAudioPassThruCapabilities.m
diff --git a/SmartDeviceLink/SDLAudioStreamManager.h b/SmartDeviceLink/public/SDLAudioStreamManager.h
index 7ec8a5918..7ec8a5918 100755
--- a/SmartDeviceLink/SDLAudioStreamManager.h
+++ b/SmartDeviceLink/public/SDLAudioStreamManager.h
diff --git a/SmartDeviceLink/public/SDLAudioStreamManager.m b/SmartDeviceLink/public/SDLAudioStreamManager.m
new file mode 100755
index 000000000..35b492cce
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAudioStreamManager.m
@@ -0,0 +1,175 @@
+//
+// SDLBinaryAudioManager.m
+// SmartDeviceLink-Example
+//
+// Created by Joel Fischer on 10/24/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLAudioStreamManager.h"
+
+#import "SDLAudioFile.h"
+#import "SDLAudioStreamManagerDelegate.h"
+#import "SDLError.h"
+#import "SDLFile.h"
+#import "SDLGlobals.h"
+#import "SDLLogMacros.h"
+#import "SDLManager.h"
+#import "SDLPCMAudioConverter.h"
+#import "SDLStreamingAudioManagerType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLAudioStreamManager ()
+
+@property (weak, nonatomic) id<SDLStreamingAudioManagerType> streamManager;
+@property (strong, nonatomic) NSMutableArray<SDLAudioFile *> *mutableQueue;
+@property (strong, nonatomic) dispatch_queue_t audioQueue;
+@property (assign, nonatomic, readwrite, getter=isPlaying) BOOL playing;
+
+@property (assign, nonatomic) BOOL shouldPlayWhenReady;
+
+@end
+
+@implementation SDLAudioStreamManager
+
+- (instancetype)initWithManager:(id<SDLStreamingAudioManagerType>)streamManager {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _mutableQueue = [NSMutableArray array];
+ _shouldPlayWhenReady = NO;
+ _audioQueue = dispatch_queue_create_with_target("com.sdl.audiomanager.transcode", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
+ _streamManager = streamManager;
+
+ return self;
+}
+
+- (void)stop {
+ dispatch_async(_audioQueue, ^{
+ self.shouldPlayWhenReady = NO;
+ [self.mutableQueue removeAllObjects];
+ });
+}
+
+#pragma mark - Getters
+
+- (NSArray<SDLFile *> *)queue {
+ return [_mutableQueue copy];
+}
+
+#pragma mark - Pushing to the Queue
+#pragma mark Files
+
+- (void)pushWithFileURL:(NSURL *)fileURL {
+ dispatch_async(_audioQueue, ^{
+ [self sdl_pushWithContentsOfURL:fileURL];
+ });
+}
+
+- (void)sdl_pushWithContentsOfURL:(NSURL *)fileURL {
+ // Convert and store in the queue
+ NSError *error = nil;
+ SDLPCMAudioConverter *converter = [[SDLPCMAudioConverter alloc] initWithFileURL:fileURL];
+ NSURL *_Nullable outputFileURL = [converter convertFileWithError:&error];
+ UInt32 estimatedDuration = converter.estimatedDuration;
+
+ if (outputFileURL == nil) {
+ SDLLogE(@"Error converting file to CAF / PCM: %@", error);
+ if (self.delegate != nil) {
+ [self.delegate audioStreamManager:self errorDidOccurForFile:fileURL error:error];
+ }
+ return;
+ }
+
+ SDLAudioFile *audioFile = [[SDLAudioFile alloc] initWithInputFileURL:fileURL outputFileURL:outputFileURL estimatedDuration:estimatedDuration];
+ [self.mutableQueue addObject:audioFile];
+
+ if (self.shouldPlayWhenReady) {
+ [self sdl_playNextWhenReady];
+ }
+}
+
+#pragma mark Raw Data
+
+- (void)pushWithData:(NSData *)data {
+ dispatch_async(_audioQueue, ^{
+ [self sdl_pushWithData:data];
+ });
+}
+
+- (void)sdl_pushWithData:(NSData *)data {
+ SDLAudioFile *audioFile = [[SDLAudioFile alloc] initWithData:data];
+ [self.mutableQueue addObject:audioFile];
+}
+
+#pragma mark Playing from the Queue
+
+- (void)playNextWhenReady {
+ dispatch_async(_audioQueue, ^{
+ [self sdl_playNextWhenReady];
+ });
+}
+
+- (void)sdl_playNextWhenReady {
+ if (self.mutableQueue.count == 0) {
+ self.shouldPlayWhenReady = YES;
+ return;
+ }
+
+ if (!self.streamManager.isAudioConnected) {
+ if (self.delegate != nil) {
+ NSError *error = [NSError sdl_audioStreamManager_notConnected];
+ [self.delegate audioStreamManager:self errorDidOccurForFile:self.mutableQueue.firstObject.inputFileURL error:error];
+ }
+ return;
+ }
+
+ self.shouldPlayWhenReady = NO;
+ __block SDLAudioFile *file = self.mutableQueue.firstObject;
+ [self.mutableQueue removeObjectAtIndex:0];
+
+ // Strip the first bunch of bytes (because of how Apple outputs the data) and send to the audio stream, if we don't do this, it will make a weird click sound
+ NSData *audioData = nil;
+ if (file.inputFileURL != nil) {
+ audioData = [file.data subdataWithRange:NSMakeRange(5760, (file.data.length - 5760))];
+ } else {
+ audioData = file.data;
+ }
+
+ // Send the audio file, which starts it playing immediately
+ SDLLogD(@"Playing audio file: %@", file);
+ __block BOOL success = [self.streamManager sendAudioData:audioData];
+ self.playing = YES;
+
+ // Determine the length of the audio PCM data and perform a few items once the audio has finished playing
+ float audioLengthSecs = (float)audioData.length / (float)32000.0;
+ __weak typeof(self) weakself = self;
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(audioLengthSecs * NSEC_PER_SEC)), [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
+ __strong typeof(weakself) strongSelf = weakself;
+
+ strongSelf.playing = NO;
+ NSError *error = nil;
+ if (strongSelf.delegate != nil) {
+ if (file.inputFileURL != nil) {
+ [strongSelf.delegate audioStreamManager:strongSelf fileDidFinishPlaying:file.inputFileURL successfully:success];
+ } else if ([strongSelf.delegate respondsToSelector:@selector(audioStreamManager:dataBufferDidFinishPlayingSuccessfully:)]) {
+ [strongSelf.delegate audioStreamManager:strongSelf dataBufferDidFinishPlayingSuccessfully:success];
+ }
+ }
+
+ SDLLogD(@"Ending Audio file: %@", file);
+ [[NSFileManager defaultManager] removeItemAtURL:file.outputFileURL error:&error];
+ if (strongSelf.delegate != nil && error != nil) {
+ if (file.inputFileURL != nil) {
+ [strongSelf.delegate audioStreamManager:strongSelf errorDidOccurForFile:file.inputFileURL error:error];
+ } else if ([strongSelf.delegate respondsToSelector:@selector(audioStreamManager:errorDidOccurForDataBuffer:)]) {
+ [strongSelf.delegate audioStreamManager:strongSelf errorDidOccurForDataBuffer:error];
+ }
+ }
+ });
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLAudioStreamManagerDelegate.h b/SmartDeviceLink/public/SDLAudioStreamManagerDelegate.h
index 79948d6cd..79948d6cd 100755
--- a/SmartDeviceLink/SDLAudioStreamManagerDelegate.h
+++ b/SmartDeviceLink/public/SDLAudioStreamManagerDelegate.h
diff --git a/SmartDeviceLink/public/SDLAudioStreamingIndicator.h b/SmartDeviceLink/public/SDLAudioStreamingIndicator.h
new file mode 100644
index 000000000..8ae6423e8
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAudioStreamingIndicator.h
@@ -0,0 +1,36 @@
+// SDLAudioStreamingIndicator.h
+//
+
+#import "SDLEnum.h"
+
+
+/**
+ * Enumeration listing possible indicators of audio streaming changes
+ *
+ * @since SDL 4.6
+ */
+typedef SDLEnum SDLAudioStreamingIndicator NS_TYPED_ENUM;
+
+/**
+ * Default playback indicator.
+ * By default the playback indicator should be PLAY_PAUSE when:
+ * - the media app is newly registered on the head unit (after RegisterAppInterface)
+ * - the media app was closed by the user (App enteres HMI_NONE)
+ * - the app sends SetMediaClockTimer with audioStreamingIndicator not set to any value
+ */
+extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorPlayPause;
+
+/**
+ * Indicates that a button press of the Play/Pause button starts the audio playback.
+ */
+extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorPlay;
+
+/**
+ * Indicates that a button press of the Play/Pause button pauses the current audio playback.
+ */
+extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorPause;
+
+/**
+ * Indicates that a button press of the Play/Pause button stops the current audio playback.
+ */
+extern SDLAudioStreamingIndicator const SDLAudioStreamingIndicatorStop;
diff --git a/SmartDeviceLink/SDLAudioStreamingIndicator.m b/SmartDeviceLink/public/SDLAudioStreamingIndicator.m
index 5e4a328a2..5e4a328a2 100644
--- a/SmartDeviceLink/SDLAudioStreamingIndicator.m
+++ b/SmartDeviceLink/public/SDLAudioStreamingIndicator.m
diff --git a/SmartDeviceLink/public/SDLAudioStreamingState.h b/SmartDeviceLink/public/SDLAudioStreamingState.h
new file mode 100644
index 000000000..da557f8f3
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAudioStreamingState.h
@@ -0,0 +1,29 @@
+// SDLAudioStreamingState.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Describes whether or not streaming audio is currently audible to the user. Though provided in every OnHMIStatus notification, this information is only relevant for applications that declare themselves as media apps in RegisterAppInterface
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLAudioStreamingState NS_TYPED_ENUM;
+
+/**
+ * Currently streaming audio, if any, is audible to user.
+ */
+extern SDLAudioStreamingState const SDLAudioStreamingStateAudible;
+
+/**
+ * Some kind of audio mixing is taking place. Currently streaming audio, if any, is audible to the user at a lowered volume.
+ *
+ * @since SDL 2.0
+ */
+extern SDLAudioStreamingState const SDLAudioStreamingStateAttenuated;
+
+/**
+ * Currently streaming audio, if any, is not audible to user. made via VR session.
+ */
+extern SDLAudioStreamingState const SDLAudioStreamingStateNotAudible;
diff --git a/SmartDeviceLink/SDLAudioStreamingState.m b/SmartDeviceLink/public/SDLAudioStreamingState.m
index 043c2fc58..043c2fc58 100644
--- a/SmartDeviceLink/SDLAudioStreamingState.m
+++ b/SmartDeviceLink/public/SDLAudioStreamingState.m
diff --git a/SmartDeviceLink/public/SDLAudioType.h b/SmartDeviceLink/public/SDLAudioType.h
new file mode 100644
index 000000000..d7d869e91
--- /dev/null
+++ b/SmartDeviceLink/public/SDLAudioType.h
@@ -0,0 +1,18 @@
+// SDLAudioType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Describes different audio type options for PerformAudioPassThru
+ */
+typedef SDLEnum SDLAudioType NS_TYPED_ENUM;
+
+/**
+ * PCM raw audio
+ *
+ * @since SDL 2.0
+ */
+extern SDLAudioType const SDLAudioTypePCM;
+
diff --git a/SmartDeviceLink/SDLAudioType.m b/SmartDeviceLink/public/SDLAudioType.m
index 495090e99..495090e99 100644
--- a/SmartDeviceLink/SDLAudioType.m
+++ b/SmartDeviceLink/public/SDLAudioType.m
diff --git a/SmartDeviceLink/SDLBeltStatus.h b/SmartDeviceLink/public/SDLBeltStatus.h
index 4b71c3764..4b71c3764 100644
--- a/SmartDeviceLink/SDLBeltStatus.h
+++ b/SmartDeviceLink/public/SDLBeltStatus.h
diff --git a/SmartDeviceLink/SDLBeltStatus.m b/SmartDeviceLink/public/SDLBeltStatus.m
index 89a5271e3..89a5271e3 100644
--- a/SmartDeviceLink/SDLBeltStatus.m
+++ b/SmartDeviceLink/public/SDLBeltStatus.m
diff --git a/SmartDeviceLink/public/SDLBitsPerSample.h b/SmartDeviceLink/public/SDLBitsPerSample.h
new file mode 100644
index 000000000..899ab6906
--- /dev/null
+++ b/SmartDeviceLink/public/SDLBitsPerSample.h
@@ -0,0 +1,22 @@
+// SDLBitsPerSample.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Describes different bit depth options for PerformAudioPassThru
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLBitsPerSample NS_TYPED_ENUM;
+
+/**
+ * 8 bits per sample
+ */
+extern SDLBitsPerSample const SDLBitsPerSample8Bit;
+
+/**
+ * 16 bits per sample
+ */
+extern SDLBitsPerSample const SDLBitsPerSample16Bit;
diff --git a/SmartDeviceLink/SDLBitsPerSample.m b/SmartDeviceLink/public/SDLBitsPerSample.m
index 25321788a..25321788a 100644
--- a/SmartDeviceLink/SDLBitsPerSample.m
+++ b/SmartDeviceLink/public/SDLBitsPerSample.m
diff --git a/SmartDeviceLink/SDLBodyInformation.h b/SmartDeviceLink/public/SDLBodyInformation.h
index bed364503..bed364503 100644
--- a/SmartDeviceLink/SDLBodyInformation.h
+++ b/SmartDeviceLink/public/SDLBodyInformation.h
diff --git a/SmartDeviceLink/SDLBodyInformation.m b/SmartDeviceLink/public/SDLBodyInformation.m
index fe8aa8b29..fe8aa8b29 100644
--- a/SmartDeviceLink/SDLBodyInformation.m
+++ b/SmartDeviceLink/public/SDLBodyInformation.m
diff --git a/SmartDeviceLink/SDLButtonCapabilities.h b/SmartDeviceLink/public/SDLButtonCapabilities.h
index 1333da2cf..1333da2cf 100644
--- a/SmartDeviceLink/SDLButtonCapabilities.h
+++ b/SmartDeviceLink/public/SDLButtonCapabilities.h
diff --git a/SmartDeviceLink/SDLButtonCapabilities.m b/SmartDeviceLink/public/SDLButtonCapabilities.m
index 1685d0907..1685d0907 100644
--- a/SmartDeviceLink/SDLButtonCapabilities.m
+++ b/SmartDeviceLink/public/SDLButtonCapabilities.m
diff --git a/SmartDeviceLink/public/SDLButtonEventMode.h b/SmartDeviceLink/public/SDLButtonEventMode.h
new file mode 100644
index 000000000..081ee5ceb
--- /dev/null
+++ b/SmartDeviceLink/public/SDLButtonEventMode.h
@@ -0,0 +1,22 @@
+// SDLButtonEventMode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Indicates whether the button was depressed or released. A BUTTONUP event will always be preceded by a BUTTONDOWN event.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLButtonEventMode NS_TYPED_ENUM;
+
+/**
+ * The button was released
+ */
+extern SDLButtonEventMode const SDLButtonEventModeButtonUp;
+
+/**
+ * The button was depressed
+ */
+extern SDLButtonEventMode const SDLButtonEventModeButtonDown;
diff --git a/SmartDeviceLink/SDLButtonEventMode.m b/SmartDeviceLink/public/SDLButtonEventMode.m
index 71cb61cd9..71cb61cd9 100644
--- a/SmartDeviceLink/SDLButtonEventMode.m
+++ b/SmartDeviceLink/public/SDLButtonEventMode.m
diff --git a/SmartDeviceLink/public/SDLButtonName.h b/SmartDeviceLink/public/SDLButtonName.h
new file mode 100644
index 000000000..e9495322f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLButtonName.h
@@ -0,0 +1,286 @@
+// SDLButtonName.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Defines logical buttons which, on a given SDL unit, would correspond to either physical or soft (touchscreen) buttons. These logical buttons present a standard functional abstraction which the developer can rely upon, independent of the SDL unit. For example, the developer can rely upon the OK button having the same meaning to the user across SDL platforms.
+
+ * The preset buttons (0-9) can typically be interpreted by the application as corresponding to some user-configured choices, though the application is free to interpret these button presses as it sees fit.
+ *
+ * The application can discover which buttons a given SDL unit implements by interrogating the ButtonCapabilities parameter of the RegisterAppInterface response.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLButtonName NS_TYPED_ENUM;
+
+/**
+ * Represents the button usually labeled "OK". A typical use of this button is for the user to press it to make a selection. Prior to SDL Core 5.0 (iOS Proxy v.6.1), Ok was used for both "OK" buttons *AND* PlayPause. In 5.0, PlayPause was introduced to reduce confusion, and you should use the one you intend for your use case (usually PlayPause). Until the next proxy breaking change, however, subscribing to this button name will continue to subscribe you to PlayPause so that your code does not break. That means that if you subscribe to both Ok and PlayPause, you will receive duplicate notifications.
+ */
+extern SDLButtonName const SDLButtonNameOk;
+
+/**
+ * Represents the play/pause button for media apps. Replaces "OK" on sub-5.0 head units, compliments it on 5.0 head units and later.
+ */
+extern SDLButtonName const SDLButtonNamePlayPause;
+
+/**
+ * Represents the seek-left button. A typical use of this button is for the user to scroll to the left through menu choices one menu item per press.
+ */
+extern SDLButtonName const SDLButtonNameSeekLeft;
+
+/**
+ * Represents the seek-right button. A typical use of this button is for the user to scroll to the right through menu choices one menu item per press.
+ */
+extern SDLButtonName const SDLButtonNameSeekRight;
+
+/**
+ * Represents a turn of the tuner knob in the clockwise direction one tick.
+ */
+extern SDLButtonName const SDLButtonNameTuneUp;
+
+/**
+ * Represents a turn of the tuner knob in the counter-clockwise direction one tick.
+ */
+extern SDLButtonName const SDLButtonNameTuneDown;
+
+/**
+ * Represents the preset 0 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset0;
+
+/**
+ * Represents the preset 1 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset1;
+
+/**
+ * Represents the preset 2 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset2;
+
+/**
+ * Represents the preset 3 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset3;
+
+/**
+ * Represents the preset 4 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset4;
+
+/**
+ * Represents the preset 5 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset5;
+
+/**
+ * Represents the preset 6 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset6;
+
+/**
+ * Represents the preset 7 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset7;
+
+/**
+ * Represents the preset 8 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset8;
+
+/**
+ * Represents the preset 9 button.
+ */
+extern SDLButtonName const SDLButtonNamePreset9;
+
+/**
+ * Represents the Custom button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameCustomButton;
+
+/**
+ * Represents the SEARCH button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameSearch;
+
+#pragma mark - Climate Buttons
+
+/**
+ * Represents AC max button *
+ */
+extern SDLButtonName const SDLButtonNameACMax;
+
+/**
+ * Represents AC button *
+ */
+extern SDLButtonName const SDLButtonNameAC;
+
+/**
+ * Represents a Recirculate button
+ */
+extern SDLButtonName const SDLButtonNameRecirculate;
+
+/**
+ * Represents a Fan up button
+ */
+extern SDLButtonName const SDLButtonNameFanUp;
+
+/**
+ * Represents a fan down button
+ */
+extern SDLButtonName const SDLButtonNameFanDown;
+
+/**
+ * Represents a temperature up button
+ */
+extern SDLButtonName const SDLButtonNameTempUp;
+
+/**
+ * Represents a temperature down button
+ */
+extern SDLButtonName const SDLButtonNameTempDown;
+
+/**
+ * Represents a Defrost max button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameDefrostMax;
+
+/**
+ * Represents a Defrost button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameDefrost;
+
+/**
+ * Represents a Defrost rear button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameDefrostRear;
+
+/**
+ * Represents a Upper Vent button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameUpperVent;
+
+/**
+ * Represents a Lower vent button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameLowerVent;
+
+#pragma mark - Radio Buttons
+/**
+ * Represents a volume up button.
+ */
+extern SDLButtonName const SDLButtonNameVolumeUp;
+
+/**
+ * Represents a volume down button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameVolumeDown;
+
+/**
+ * Represents a Eject Button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameEject;
+
+/**
+ * Represents a Source button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameSource;
+
+/**
+ * Represents a SHUFFLE button.
+ *
+ */
+extern SDLButtonName const SDLButtonNameShuffle;
+
+/**
+ * Represents a Repeat button.
+ */
+extern SDLButtonName const SDLButtonNameRepeat;
+
+#pragma mark - Navigation Buttons
+/**
+ * Represents a Navigate to center button.
+ */
+extern SDLButtonName const SDLButtonNameNavCenterLocation;
+
+/**
+ * Represents a Zoom in button.
+ */
+extern SDLButtonName const SDLButtonNameNavZoomIn;
+
+/**
+ * Represents a Zoom out button.
+ */
+extern SDLButtonName const SDLButtonNameNavZoomOut;
+
+/**
+ * Represents a Pan up button
+ */
+extern SDLButtonName const SDLButtonNameNavPanUp;
+
+/**
+ * Represents a Pan up/right button
+ */
+extern SDLButtonName const SDLButtonNameNavPanUpRight;
+
+/**
+ * Represents a Pan right button
+ */
+extern SDLButtonName const SDLButtonNameNavPanRight;
+
+/**
+ * Represents a Pan down/right button
+ */
+extern SDLButtonName const SDLButtonNameNavPanDownRight;
+
+/**
+ * Represents a Pan down button
+ */
+extern SDLButtonName const SDLButtonNameNavPanDown;
+
+/**
+ * Represents a Pan down left button
+ */
+extern SDLButtonName const SDLButtonNameNavPanDownLeft;
+
+/**
+ * Represents a Pan left button
+ */
+extern SDLButtonName const SDLButtonNameNavPanLeft;
+
+/**
+ * Represents a Pan up left button
+ */
+extern SDLButtonName const SDLButtonNameNavPanUpLeft;
+
+/**
+ * Represents a Tilt button. If supported, this toggles between a top-down view and an angled/3D view. If your app supports different, but substantially similar options, then you may implement those. If you don't implement these or similar options, do not subscribe to this button.
+ */
+extern SDLButtonName const SDLButtonNameNavTiltToggle;
+
+/**
+ * Represents a Rotate clockwise button
+ */
+extern SDLButtonName const SDLButtonNameNavRotateClockwise;
+
+/**
+ * Represents a Rotate counterclockwise button
+ */
+extern SDLButtonName const SDLButtonNameNavRotateCounterClockwise;
+
+/**
+ * Represents a Heading toggle button. If supported, this toggles between locking the orientation to north or to the vehicle's heading. If your app supports different, but substantially similar options, then you may implement those. If you don't implement these or similar options, do not subscribe to this button.
+ */
+extern SDLButtonName const SDLButtonNameNavHeadingToggle;
diff --git a/SmartDeviceLink/SDLButtonName.m b/SmartDeviceLink/public/SDLButtonName.m
index c0979df8b..c0979df8b 100644
--- a/SmartDeviceLink/SDLButtonName.m
+++ b/SmartDeviceLink/public/SDLButtonName.m
diff --git a/SmartDeviceLink/public/SDLButtonPress.h b/SmartDeviceLink/public/SDLButtonPress.h
new file mode 100644
index 000000000..ee7717072
--- /dev/null
+++ b/SmartDeviceLink/public/SDLButtonPress.h
@@ -0,0 +1,58 @@
+//
+// SDLButtonPress.h
+//
+
+#import "SDLRPCRequest.h"
+#import "SDLModuleType.h"
+#import "SDLButtonName.h"
+#import "SDLButtonPressMode.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This RPC allows a remote control type mobile application to simulate a hardware button press event.
+
+ @since RPC 4.5
+*/
+@interface SDLButtonPress : SDLRPCRequest
+
+/**
+Constructs a newly allocated SDLButtonPress object with the given parameters
+
+@param buttonName the name of the button
+@param moduleType the module where the button should be pressed
+@param moduleId the id of the module
+@param buttonPressMode indicates LONG or SHORT button press event
+
+@return An instance of the SDLButtonPress class.
+*/
+- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType)moduleType moduleId:(nullable NSString *)moduleId buttonPressMode:(SDLButtonPressMode)buttonPressMode;
+
+/**
+ * The module where the button should be pressed.
+ *
+ */
+@property (strong, nonatomic) SDLModuleType moduleType;
+
+/**
+ * Id of a module, published by System Capability.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSString *moduleId;
+
+/**
+ * The name of supported RC climate or radio button.
+ *
+ */
+@property (strong, nonatomic) SDLButtonName buttonName;
+
+/**
+ * Indicates whether this is a LONG or SHORT button press event.
+ *
+ */
+@property (strong, nonatomic) SDLButtonPressMode buttonPressMode;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLButtonPress.m b/SmartDeviceLink/public/SDLButtonPress.m
new file mode 100644
index 000000000..c2047ca6c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLButtonPress.m
@@ -0,0 +1,74 @@
+//
+// SDLButtonPress.m
+//
+
+#import "SDLButtonPress.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLButtonPress
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameButtonPress]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType)moduleType moduleId:(nullable NSString *)moduleId buttonPressMode:(SDLButtonPressMode)buttonPressMode {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.buttonName = buttonName;
+ self.moduleType = moduleType;
+ self.moduleId = moduleId;
+ self.buttonPressMode = buttonPressMode;
+
+ return self;
+}
+
+- (void)setModuleType:(SDLModuleType)moduleType {
+ [self.parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType];
+}
+
+- (SDLModuleType)moduleType {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error];
+}
+
+- (void)setButtonName:(SDLButtonName)buttonName {
+ [self.parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName];
+}
+
+- (SDLButtonName)buttonName {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error];
+}
+
+- (void)setButtonPressMode:(SDLButtonPressMode)buttonPressMode {
+ [self.parameters sdl_setObject:buttonPressMode forName:SDLRPCParameterNameButtonPressMode];
+}
+
+- (SDLButtonPressMode)buttonPressMode {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonPressMode error:&error];
+}
+
+- (void)setModuleId:(nullable NSString *)moduleId {
+ [self.parameters sdl_setObject:moduleId forName:SDLRPCParameterNameModuleId];
+}
+
+- (nullable NSString *)moduleId {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleId ofClass:NSString.class error:&error];
+}
+
+@end
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLButtonPressMode.h b/SmartDeviceLink/public/SDLButtonPressMode.h
new file mode 100644
index 000000000..934a37022
--- /dev/null
+++ b/SmartDeviceLink/public/SDLButtonPressMode.h
@@ -0,0 +1,22 @@
+// SDLButtonPressMode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Indicates whether this is a LONG or SHORT button press
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLButtonPressMode NS_TYPED_ENUM;
+
+/**
+ * A button was released, after it was pressed for a long time. Actual timing is defined by the head unit and may vary.
+ */
+extern SDLButtonPressMode const SDLButtonPressModeLong;
+
+/**
+ * A button was released, after it was pressed for a short time. Actual timing is defined by the head unit and may vary.
+ */
+extern SDLButtonPressMode const SDLButtonPressModeShort;
diff --git a/SmartDeviceLink/SDLButtonPressMode.m b/SmartDeviceLink/public/SDLButtonPressMode.m
index 48d3652c6..48d3652c6 100644
--- a/SmartDeviceLink/SDLButtonPressMode.m
+++ b/SmartDeviceLink/public/SDLButtonPressMode.m
diff --git a/SmartDeviceLink/SDLButtonPressResponse.h b/SmartDeviceLink/public/SDLButtonPressResponse.h
index fe23ec0fe..fe23ec0fe 100644
--- a/SmartDeviceLink/SDLButtonPressResponse.h
+++ b/SmartDeviceLink/public/SDLButtonPressResponse.h
diff --git a/SmartDeviceLink/SDLButtonPressResponse.m b/SmartDeviceLink/public/SDLButtonPressResponse.m
index 0dde4c52e..0dde4c52e 100644
--- a/SmartDeviceLink/SDLButtonPressResponse.m
+++ b/SmartDeviceLink/public/SDLButtonPressResponse.m
diff --git a/SmartDeviceLink/public/SDLCancelInteraction.h b/SmartDeviceLink/public/SDLCancelInteraction.h
new file mode 100644
index 000000000..289e85443
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCancelInteraction.h
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCRequest.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Used to dismiss a modal view programmatically without needing to wait for the timeout to complete. Can be used to dismiss alerts, scrollable messages, sliders, and perform interactions (i.e. pop-up menus).
+
+ @see SDLAlert, SDLScrollableMessage, SDLSlider, SDLPerformInteraction
+ */
+@interface SDLCancelInteraction : SDLRPCRequest
+
+/**
+ Convenience init for dismissing the currently presented modal view (either an alert, slider, scrollable message, or perform interation).
+
+ @param functionID The ID of the type of modal view to dismiss
+ @return A SDLCancelInteraction object
+ */
+- (instancetype)initWithFunctionID:(UInt32)functionID;
+
+/**
+ Convenience init for dismissing a specific view.
+
+ @param functionID The ID of the type of interaction to dismiss
+ @param cancelID The ID of the specific interaction to dismiss
+ @return A SDLCancelInteraction object
+ */
+- (instancetype)initWithFunctionID:(UInt32)functionID cancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for dismissing an alert.
+
+ @param cancelID The ID of the specific interaction to dismiss
+ @return A SDLCancelInteraction object
+ */
+- (instancetype)initWithAlertCancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for dismissing a slider.
+
+ @param cancelID The ID of the specific interaction to dismiss
+ @return A SDLCancelInteraction object
+ */
+- (instancetype)initWithSliderCancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for dismissing a scrollable message.
+
+ @param cancelID The ID of the specific interaction to dismiss
+ @return A SDLCancelInteraction object
+ */
+- (instancetype)initWithScrollableMessageCancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for dismissing a perform interaction.
+
+ @param cancelID The ID of the specific interaction to dismiss
+ @return A SDLCancelInteraction object
+ */
+- (instancetype)initWithPerformInteractionCancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for dismissing a subtle alert.
+
+ @param cancelID The ID of the specific subtle alert to dismiss
+ @return A SDLCancelInteraction object
+ */
+- (instancetype)initWithSubtleAlertCancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for dismissing the currently presented alert.
+
+ @return A SDLCancelInteraction object
+ */
++ (instancetype)alert;
+
+/**
+ Convenience init for dismissing the currently presented slider.
+
+ @return A SDLCancelInteraction object
+ */
++ (instancetype)slider;
+
+/**
+ Convenience init for dismissing the currently presented scrollable message.
+
+ @return A SDLCancelInteraction object
+ */
++ (instancetype)scrollableMessage;
+
+/**
+ Convenience init for dismissing the currently presented perform interaction.
+
+ @return A SDLCancelInteraction object
+ */
++ (instancetype)performInteraction NS_SWIFT_NAME(performInteraction());
+
+/**
+ Convenience init for dismissing the currently presented subtle alert.
+
+ @return A SDLCancelInteraction object
+ */
++ (instancetype)subtleAlert;
+
+/**
+ The ID of the specific interaction to dismiss. If not set, the most recent of the RPC type set in functionID will be dismissed.
+
+ Integer, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
+
+/**
+ The ID of the type of interaction to dismiss.
+
+ The ID of the type of interaction the developer wants to dismiss. Only values 10, (PerformInteractionID), 12 (AlertID), 25 (ScrollableMessageID), 26 (SliderID), and 64 (SubtleAlertID) are permitted.
+
+ Integer, Required
+ */
+@property (strong, nonatomic) NSNumber<SDLInt> *functionID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLCancelInteraction.m b/SmartDeviceLink/public/SDLCancelInteraction.m
new file mode 100644
index 000000000..bd591dc28
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCancelInteraction.m
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLCancelInteraction.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLFunctionID.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLCancelInteraction
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameCancelInteraction]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+
+- (instancetype)initWithFunctionID:(UInt32)functionID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.functionID = @(functionID);
+
+ return self;
+}
+
+- (instancetype)initWithFunctionID:(UInt32)functionID cancelID:(UInt32)cancelID {
+ self = [self initWithFunctionID:functionID];
+ if (!self) {
+ return nil;
+ }
+
+ self.cancelID = @(cancelID);
+
+ return self;
+}
+
+- (instancetype)initWithAlertCancelID:(UInt32)cancelID {
+ return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameAlert].unsignedIntValue cancelID:cancelID];
+}
+
+- (instancetype)initWithSliderCancelID:(UInt32)cancelID {
+ return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSlider].unsignedIntValue cancelID:cancelID];
+}
+
+- (instancetype)initWithScrollableMessageCancelID:(UInt32)cancelID {
+ return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameScrollableMessage].unsignedIntValue cancelID:cancelID];
+}
+
+- (instancetype)initWithPerformInteractionCancelID:(UInt32)cancelID {
+ return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNamePerformInteraction].unsignedIntValue cancelID:cancelID];
+}
+
+- (instancetype)initWithSubtleAlertCancelID:(UInt32)cancelID {
+ return [self initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSubtleAlert].unsignedIntValue cancelID:cancelID];
+}
+
++ (instancetype)alert {
+ return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameAlert].unsignedIntValue];
+}
+
++ (instancetype)slider {
+ return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSlider].unsignedIntValue];
+}
+
++ (instancetype)scrollableMessage {
+ return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameScrollableMessage].unsignedIntValue];
+}
+
++ (instancetype)performInteraction {
+ return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNamePerformInteraction].unsignedIntValue];
+}
+
++ (instancetype)subtleAlert {
+ return [[self alloc] initWithFunctionID:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSubtleAlert].unsignedIntValue];
+}
+
+- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
+ [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
+}
+
+- (nullable NSNumber<SDLInt> *)cancelID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFunctionID:(NSNumber<SDLInt> *)functionID {
+ [self.parameters sdl_setObject:functionID forName:SDLRPCParameterNameFunctionID];
+}
+
+- (NSNumber<SDLInt> *)functionID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFunctionID ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCancelInteractionResponse.h b/SmartDeviceLink/public/SDLCancelInteractionResponse.h
index 9a2ba5cbe..9a2ba5cbe 100644
--- a/SmartDeviceLink/SDLCancelInteractionResponse.h
+++ b/SmartDeviceLink/public/SDLCancelInteractionResponse.h
diff --git a/SmartDeviceLink/SDLCancelInteractionResponse.m b/SmartDeviceLink/public/SDLCancelInteractionResponse.m
index 325fa96f1..325fa96f1 100644
--- a/SmartDeviceLink/SDLCancelInteractionResponse.m
+++ b/SmartDeviceLink/public/SDLCancelInteractionResponse.m
diff --git a/SmartDeviceLink/public/SDLCapacityUnit.h b/SmartDeviceLink/public/SDLCapacityUnit.h
new file mode 100644
index 000000000..0661ff3fc
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCapacityUnit.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLEnum.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @since SDL 7.0.0
+ */
+typedef SDLEnum SDLCapacityUnit NS_TYPED_ENUM;
+
+extern SDLCapacityUnit const SDLCapacityUnitKilograms;
+
+extern SDLCapacityUnit const SDLCapacityUnitKilowatthours;
+
+extern SDLCapacityUnit const SDLCapacityUnitLiters;
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLCapacityUnit.m b/SmartDeviceLink/public/SDLCapacityUnit.m
new file mode 100644
index 000000000..7e21103fa
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCapacityUnit.m
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLCapacityUnit.h"
+
+SDLCapacityUnit const SDLCapacityUnitLiters = @"LITERS";
+SDLCapacityUnit const SDLCapacityUnitKilowatthours = @"KILOWATTHOURS";
+SDLCapacityUnit const SDLCapacityUnitKilograms = @"KILOGRAMS";
diff --git a/SmartDeviceLink/public/SDLCarModeStatus.h b/SmartDeviceLink/public/SDLCarModeStatus.h
new file mode 100644
index 000000000..4cf148919
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCarModeStatus.h
@@ -0,0 +1,32 @@
+// SDLCarModeStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Describes the carmode the vehicle is in. Used in ClusterModeStatus
+
+ * Since SmartDeviceLink 2.0
+ */
+typedef SDLEnum SDLCarModeStatus NS_TYPED_ENUM;
+
+/**
+ Provides carmode NORMAL to each module.
+ */
+extern SDLCarModeStatus const SDLCarModeStatusNormal;
+
+/**
+ Provides carmode FACTORY to each module.
+ */
+extern SDLCarModeStatus const SDLCarModeStatusFactory;
+
+/**
+ Provides carmode TRANSPORT to each module.
+ */
+extern SDLCarModeStatus const SDLCarModeStatusTransport;
+
+/**
+ Provides carmode CRASH to each module.
+ */
+extern SDLCarModeStatus const SDLCarModeStatusCrash;
diff --git a/SmartDeviceLink/SDLCarModeStatus.m b/SmartDeviceLink/public/SDLCarModeStatus.m
index b93293da9..b93293da9 100644
--- a/SmartDeviceLink/SDLCarModeStatus.m
+++ b/SmartDeviceLink/public/SDLCarModeStatus.m
diff --git a/SmartDeviceLink/SDLCarWindowViewController.h b/SmartDeviceLink/public/SDLCarWindowViewController.h
index ef46095b3..ef46095b3 100644
--- a/SmartDeviceLink/SDLCarWindowViewController.h
+++ b/SmartDeviceLink/public/SDLCarWindowViewController.h
diff --git a/SmartDeviceLink/SDLCarWindowViewController.m b/SmartDeviceLink/public/SDLCarWindowViewController.m
index 5f6cbdbde..5f6cbdbde 100644
--- a/SmartDeviceLink/SDLCarWindowViewController.m
+++ b/SmartDeviceLink/public/SDLCarWindowViewController.m
diff --git a/SmartDeviceLink/SDLChangeRegistration.h b/SmartDeviceLink/public/SDLChangeRegistration.h
index 5e16d16ef..5e16d16ef 100644
--- a/SmartDeviceLink/SDLChangeRegistration.h
+++ b/SmartDeviceLink/public/SDLChangeRegistration.h
diff --git a/SmartDeviceLink/SDLChangeRegistration.m b/SmartDeviceLink/public/SDLChangeRegistration.m
index 87a14cb9d..87a14cb9d 100644
--- a/SmartDeviceLink/SDLChangeRegistration.m
+++ b/SmartDeviceLink/public/SDLChangeRegistration.m
diff --git a/SmartDeviceLink/SDLChangeRegistrationResponse.h b/SmartDeviceLink/public/SDLChangeRegistrationResponse.h
index 55f733f81..55f733f81 100644
--- a/SmartDeviceLink/SDLChangeRegistrationResponse.h
+++ b/SmartDeviceLink/public/SDLChangeRegistrationResponse.h
diff --git a/SmartDeviceLink/SDLChangeRegistrationResponse.m b/SmartDeviceLink/public/SDLChangeRegistrationResponse.m
index a40493503..a40493503 100644
--- a/SmartDeviceLink/SDLChangeRegistrationResponse.m
+++ b/SmartDeviceLink/public/SDLChangeRegistrationResponse.m
diff --git a/SmartDeviceLink/public/SDLCharacterSet.h b/SmartDeviceLink/public/SDLCharacterSet.h
new file mode 100644
index 000000000..6a3be17e7
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCharacterSet.h
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#import "SDLEnum.h"
+
+/**
+ * The list of potential character sets
+ *
+ * @since SDL 1.0.0
+ */
+typedef SDLEnum SDLCharacterSet NS_TYPED_ENUM;
+
+/**
+ * @deprecated
+ * @since SDL 7.0.0
+ */
+extern SDLCharacterSet const SDLCharacterSetType2 __deprecated_msg("Use Ascii, Iso88591, or Utf8 instead");
+
+/**
+ * @deprecated
+ * @since SDL 7.0.0
+ */
+extern SDLCharacterSet const SDLCharacterSetType5 __deprecated_msg("Use Ascii, Iso88591, or Utf8 instead");
+
+/**
+ * @deprecated
+ * @since SDL 7.0.0
+ */
+extern SDLCharacterSet const SDLCharacterSetCID1 __deprecated_msg("Use Ascii, Iso88591, or Utf8 instead");
+
+/**
+ * @deprecated
+ * @since SDL 7.0.0
+ */
+extern SDLCharacterSet const SDLCharacterSetCID2 __deprecated_msg("Use Ascii, Iso88591, or Utf8 instead");
+
+/**
+ * ASCII as defined in https://en.wikipedia.org/wiki/ASCII as defined in codes 0-127. Non-printable characters such as tabs and back spaces are ignored.
+ *
+ * @since SDL 7.0.0
+ */
+extern SDLCharacterSet const SDLCharacterSetAscii;
+
+/**
+ * Latin-1, as defined in https://en.wikipedia.org/wiki/ISO/IEC_8859-1
+ *
+ * @since SDL 7.0.0
+ */
+extern SDLCharacterSet const SDLCharacterSetIso88591;
+
+/**
+ * The UTF-8 character set that uses variable bytes per code point. See https://en.wikipedia.org/wiki/UTF-8 for more details. This is the preferred character set.
+ *
+ * @since SDL 7.0.0
+ */
+extern SDLCharacterSet const SDLCharacterSetUtf8;
diff --git a/SmartDeviceLink/public/SDLCharacterSet.m b/SmartDeviceLink/public/SDLCharacterSet.m
new file mode 100644
index 000000000..503ee31da
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCharacterSet.m
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLCharacterSet.h"
+
+SDLCharacterSet const SDLCharacterSetType2 = @"TYPE2SET";
+SDLCharacterSet const SDLCharacterSetType5 = @"TYPE5SET";
+SDLCharacterSet const SDLCharacterSetCID1 = @"CID1SET";
+SDLCharacterSet const SDLCharacterSetCID2 = @"CID2SET";
+SDLCharacterSet const SDLCharacterSetAscii = @"ASCII";
+SDLCharacterSet const SDLCharacterSetIso88591 = @"ISO_8859_1";
+SDLCharacterSet const SDLCharacterSetUtf8 = @"UTF_8";
diff --git a/SmartDeviceLink/SDLChoice.h b/SmartDeviceLink/public/SDLChoice.h
index 965115951..965115951 100644
--- a/SmartDeviceLink/SDLChoice.h
+++ b/SmartDeviceLink/public/SDLChoice.h
diff --git a/SmartDeviceLink/SDLChoice.m b/SmartDeviceLink/public/SDLChoice.m
index e384ddf86..e384ddf86 100644
--- a/SmartDeviceLink/SDLChoice.m
+++ b/SmartDeviceLink/public/SDLChoice.m
diff --git a/SmartDeviceLink/SDLChoiceCell.h b/SmartDeviceLink/public/SDLChoiceCell.h
index 197f0190d..197f0190d 100644
--- a/SmartDeviceLink/SDLChoiceCell.h
+++ b/SmartDeviceLink/public/SDLChoiceCell.h
diff --git a/SmartDeviceLink/SDLChoiceCell.m b/SmartDeviceLink/public/SDLChoiceCell.m
index 05ceb4daa..05ceb4daa 100644
--- a/SmartDeviceLink/SDLChoiceCell.m
+++ b/SmartDeviceLink/public/SDLChoiceCell.m
diff --git a/SmartDeviceLink/SDLChoiceSet.h b/SmartDeviceLink/public/SDLChoiceSet.h
index 674033553..674033553 100644
--- a/SmartDeviceLink/SDLChoiceSet.h
+++ b/SmartDeviceLink/public/SDLChoiceSet.h
diff --git a/SmartDeviceLink/SDLChoiceSet.m b/SmartDeviceLink/public/SDLChoiceSet.m
index 45a830bcd..45a830bcd 100644
--- a/SmartDeviceLink/SDLChoiceSet.m
+++ b/SmartDeviceLink/public/SDLChoiceSet.m
diff --git a/SmartDeviceLink/SDLChoiceSetDelegate.h b/SmartDeviceLink/public/SDLChoiceSetDelegate.h
index de7573e95..de7573e95 100644
--- a/SmartDeviceLink/SDLChoiceSetDelegate.h
+++ b/SmartDeviceLink/public/SDLChoiceSetDelegate.h
diff --git a/SmartDeviceLink/public/SDLClimateControlCapabilities.h b/SmartDeviceLink/public/SDLClimateControlCapabilities.h
new file mode 100644
index 000000000..a0eb2a690
--- /dev/null
+++ b/SmartDeviceLink/public/SDLClimateControlCapabilities.h
@@ -0,0 +1,184 @@
+//
+// SDLClimateControlCapabilities.h
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLDefrostZone.h"
+#import "SDLVentilationMode.h"
+#import "SDLModuleInfo.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Contains information about a climate control module's capabilities.
+ */
+@interface SDLClimateControlCapabilities : SDLRPCStruct
+
+/// Convenience init to describe the climate control capabilities with all properities.
+///
+/// @param moduleName The short friendly name of the climate control module.
+/// @param moduleInfo Information about a RC module, including its id
+/// @param fanSpeedAvailable Availability of the control of fan speed
+/// @param desiredTemperatureAvailable Availability of the control of desired temperature
+/// @param acEnableAvailable Availability of the control of turn on/off AC
+/// @param acMaxEnableAvailable Availability of the control of enable/disable air conditioning is ON on the maximum level
+/// @param circulateAirEnableAvailable Availability of the control of enable/disable circulate Air mode.
+/// @param autoModeEnableAvailable Availability of the control of enable/disable auto mode
+/// @param dualModeEnableAvailable Availability of the control of enable/disable dual mode
+/// @param defrostZoneAvailable Availability of the control of defrost zones
+/// @param ventilationModeAvailable Availability of the control of air ventilation mode
+/// @param heatedSteeringWheelAvailable Availability of the control (enable/disable) of heated Steering Wheel
+/// @param heatedWindshieldAvailable Availability of the control (enable/disable) of heated Windshield
+/// @param heatedRearWindowAvailable Availability of the control (enable/disable) of heated Rear Window
+/// @param heatedMirrorsAvailable Availability of the control (enable/disable) of heated Mirrors
+/// @param climateEnableAvailable Availability of the control of enable/disable climate control
+/// @return An SDLClimateControlCapabilities object
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)heatedSteeringWheelAvailable heatedWindshieldAvailable:(BOOL)heatedWindshieldAvailable heatedRearWindowAvailable:(BOOL)heatedRearWindowAvailable heatedMirrorsAvailable:(BOOL)heatedMirrorsAvailable climateEnableAvailable:(BOOL)climateEnableAvailable;
+
+/**
+ * The short friendly name of the climate control module.
+ * It should not be used to identify a module by mobile application.
+ *
+ * Max string length 100 chars
+
+ Required
+ */
+@property (strong, nonatomic) NSString *moduleName;
+
+/**
+ * Availability of the control of fan speed.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *fanSpeedAvailable;
+
+/**
+ * Availability of the control of desired temperature.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *desiredTemperatureAvailable;
+
+/**
+ * Availability of the control of turn on/off AC.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acEnableAvailable;
+
+/**
+ * Availability of the control of enable/disable air conditioning is ON on the maximum level.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acMaxEnableAvailable;
+
+/**
+ * Availability of the control of enable/disable circulate Air mode.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *circulateAirEnableAvailable;
+
+/**
+ * Availability of the control of enable/disable auto mode.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *autoModeEnableAvailable;
+
+/**
+ * Availability of the control of enable/disable dual mode.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *dualModeEnableAvailable;
+
+/**
+ * Availability of the control of defrost zones.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *defrostZoneAvailable;
+
+/**
+ * A set of all defrost zones that are controllable.
+ *
+ * Optional, NSArray of type SDLDefrostZone minsize="1" maxsize="100"
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLDefrostZone > *defrostZone;
+
+/**
+ * Availability of the control of air ventilation mode.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *ventilationModeAvailable;
+
+/**
+ * A set of all ventilation modes that are controllable.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, NSArray of type SDLVentilationMode minsize="1" maxsize="100"
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLVentilationMode> *ventilationMode;
+
+/**
+ * @abstract Availability of the control (enable/disable) of heated Steering Wheel.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedSteeringWheelAvailable;
+
+/**
+ * @abstract Availability of the control (enable/disable) of heated Windshield.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedWindshieldAvailable;
+
+/**
+ * @abstract Availability of the control (enable/disable) of heated Rear Window.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedRearWindowAvailable;
+
+/**
+ * @abstract Availability of the control (enable/disable) of heated Mirrors.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedMirrorsAvailable;
+
+/**
+ * @abstract Availability of the control of enable/disable climate control.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *climateEnableAvailable;
+
+/**
+ * Information about a RC module, including its id.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLClimateControlCapabilities.m b/SmartDeviceLink/public/SDLClimateControlCapabilities.m
new file mode 100644
index 000000000..fb173cfed
--- /dev/null
+++ b/SmartDeviceLink/public/SDLClimateControlCapabilities.m
@@ -0,0 +1,185 @@
+//
+// SDLClimateControlCapabilities.m
+//
+
+#import "SDLClimateControlCapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLClimateControlCapabilities
+
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo fanSpeedAvailable:(BOOL)fanSpeedAvailable desiredTemperatureAvailable:(BOOL)desiredTemperatureAvailable acEnableAvailable:(BOOL)acEnableAvailable acMaxEnableAvailable:(BOOL)acMaxEnableAvailable circulateAirAvailable:(BOOL)circulateAirEnableAvailable autoModeEnableAvailable:(BOOL)autoModeEnableAvailable dualModeEnableAvailable:(BOOL)dualModeEnableAvailable defrostZoneAvailable:(BOOL)defrostZoneAvailable ventilationModeAvailable:(BOOL)ventilationModeAvailable heatedSteeringWheelAvailable:(BOOL)steeringWheelAvailable heatedWindshieldAvailable:(BOOL)windshieldAvailable heatedRearWindowAvailable:(BOOL)rearWindowAvailable heatedMirrorsAvailable:(BOOL)mirrorsAvailable climateEnableAvailable:(BOOL)climateEnableAvailable{
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.moduleName = moduleName;
+ self.moduleInfo = moduleInfo;
+ self.fanSpeedAvailable = @(fanSpeedAvailable);
+ self.desiredTemperatureAvailable = @(desiredTemperatureAvailable);
+ self.acEnableAvailable = @(acEnableAvailable);
+ self.acMaxEnableAvailable = @(acMaxEnableAvailable);
+ self.circulateAirEnableAvailable = @(circulateAirEnableAvailable);
+ self.autoModeEnableAvailable = @(autoModeEnableAvailable);
+ self.dualModeEnableAvailable = @(dualModeEnableAvailable);
+ self.defrostZoneAvailable = @(defrostZoneAvailable);
+ self.ventilationModeAvailable = @(ventilationModeAvailable);
+ self.heatedSteeringWheelAvailable = @(steeringWheelAvailable);
+ self.heatedWindshieldAvailable = @(windshieldAvailable);
+ self.heatedRearWindowAvailable = @(rearWindowAvailable);
+ self.heatedMirrorsAvailable = @(mirrorsAvailable);
+ self.climateEnableAvailable = @(climateEnableAvailable);
+ return self;
+}
+
+- (void)setModuleName:(NSString *)moduleName {
+ [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
+}
+
+- (NSString *)moduleName {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
+}
+
+- (void)setFanSpeedAvailable:(nullable NSNumber<SDLBool> *)fanSpeedAvailable {
+ [self.store sdl_setObject:fanSpeedAvailable forName:SDLRPCParameterNameFanSpeedAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)fanSpeedAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameFanSpeedAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDesiredTemperatureAvailable:(nullable NSNumber<SDLBool> *)desiredTemperatureAvailable {
+ [self.store sdl_setObject:desiredTemperatureAvailable forName:SDLRPCParameterNameDesiredTemperatureAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)desiredTemperatureAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDesiredTemperatureAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAcEnableAvailable:(nullable NSNumber<SDLBool> *)acEnableAvailable {
+ [self.store sdl_setObject:acEnableAvailable forName:SDLRPCParameterNameACEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)acEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameACEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAcMaxEnableAvailable:(nullable NSNumber<SDLBool> *)acMaxEnableAvailable {
+ [self.store sdl_setObject:acMaxEnableAvailable forName:SDLRPCParameterNameACMaxEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)acMaxEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameACMaxEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCirculateAirEnableAvailable:(nullable NSNumber<SDLBool> *)circulateAirEnableAvailable {
+ [self.store sdl_setObject:circulateAirEnableAvailable forName:SDLRPCParameterNameCirculateAirEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)circulateAirEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCirculateAirEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAutoModeEnableAvailable:(nullable NSNumber<SDLBool> *)autoModeEnableAvailable {
+ [self.store sdl_setObject:autoModeEnableAvailable forName:SDLRPCParameterNameAutoModeEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)autoModeEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAutoModeEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDualModeEnableAvailable:(nullable NSNumber<SDLBool> *)dualModeEnableAvailable {
+ [self.store sdl_setObject:dualModeEnableAvailable forName:SDLRPCParameterNameDualModeEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)dualModeEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDualModeEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDefrostZoneAvailable:(nullable NSNumber<SDLBool> *)defrostZoneAvailable {
+ [self.store sdl_setObject:defrostZoneAvailable forName:SDLRPCParameterNameDefrostZoneAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)defrostZoneAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDefrostZoneAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDefrostZone:(nullable NSArray <SDLDefrostZone>*)defrostZone {
+ [self.store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone];
+}
+
+- (nullable NSArray<SDLDefrostZone> *)defrostZone {
+ return [self.store sdl_enumsForName:SDLRPCParameterNameDefrostZone error:nil];
+}
+
+- (void)setVentilationModeAvailable:(nullable NSNumber<SDLBool> *)ventilationModeAvailable {
+ [self.store sdl_setObject:ventilationModeAvailable forName:SDLRPCParameterNameVentilationModeAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)ventilationModeAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameVentilationModeAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVentilationMode:(nullable NSArray<SDLVentilationMode> *)ventilationMode {
+ [self.store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode];
+}
+
+- (nullable NSArray<SDLVentilationMode> *)ventilationMode {
+ return [self.store sdl_enumsForName:SDLRPCParameterNameVentilationMode error:nil];
+}
+
+- (void)setHeatedSteeringWheelAvailable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelAvailable {
+ [self.store sdl_setObject:heatedSteeringWheelAvailable forName:SDLRPCParameterNameHeatedSteeringWheelAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedSteeringWheelAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeatedWindshieldAvailable:(nullable NSNumber<SDLBool> *)heatedWindshieldAvailable {
+ [self.store sdl_setObject:heatedWindshieldAvailable forName:SDLRPCParameterNameHeatedWindshieldAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedWindshieldAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeatedRearWindowAvailable:(nullable NSNumber<SDLBool> *)heatedRearWindowAvailable {
+ [self.store sdl_setObject:heatedRearWindowAvailable forName:SDLRPCParameterNameHeatedRearWindowAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedRearWindowAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeatedMirrorsAvailable:(nullable NSNumber<SDLBool> *)heatedMirrorsAvailable {
+ [self.store sdl_setObject:heatedMirrorsAvailable forName:SDLRPCParameterNameHeatedMirrorsAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedMirrorsAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setClimateEnableAvailable:(nullable NSNumber<SDLBool> *)climateEnableAvailable {
+ [self.store sdl_setObject:climateEnableAvailable forName:SDLRPCParameterNameClimateEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)climateEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameClimateEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
+}
+
+- (nullable SDLModuleInfo *)moduleInfo {
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLClimateControlData.h b/SmartDeviceLink/public/SDLClimateControlData.h
new file mode 100644
index 000000000..7282c70ce
--- /dev/null
+++ b/SmartDeviceLink/public/SDLClimateControlData.h
@@ -0,0 +1,146 @@
+//
+// SDLClimateControlData.h
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLDefrostZone.h"
+#import "SDLVentilationMode.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SDLTemperature;
+
+
+/**
+ The current information for the Climate Remote Control Module
+ */
+@interface SDLClimateControlData : SDLRPCStruct
+
+/// Convenience init for climate control data with all properties.
+/// @param fanSpeed Speed of Fan in integer
+/// @param desiredTemperature Desired Temperature in SDLTemperature
+/// @param acEnable Represents if AC is enabled
+/// @param circulateAirEnable Represents if circulation of air is enabled
+/// @param autoModeEnable Represents if auto mode is enabled
+/// @param defrostZone Represents the kind of defrost zone
+/// @param dualModeEnable Represents if dual mode is enabled
+/// @param acMaxEnable Represents if ac max is enabled
+/// @param ventilationMode Represents the kind of ventilation zone
+/// @param heatedSteeringWheelEnable Represents if heated steering wheel is enabled
+/// @param heatedWindshieldEnable Represents if heated windshield is enabled
+/// @param heatedRearWindowEnable Represents if heated rear window is enabled
+/// @param heatedMirrorsEnable Represents if heated mirrors are enabled
+/// @param climateEnable Represents if climate is enabled
+/// @return An SDLClimateControlData object
+- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode heatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable heatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable heatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable heatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable climateEnable:(nullable NSNumber<SDLBool> *)climateEnable;
+
+/**
+ * Speed of Fan in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *fanSpeed;
+
+/**
+ * The Current Temperature in SDLTemperature
+ *
+ * @warning This property is readonly and cannot be set on the module.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLTemperature *currentTemperature;
+
+/**
+ * Desired Temperature in SDLTemperature
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLTemperature *desiredTemperature;
+
+/**
+ * Represents if AC is enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acEnable;
+
+/**
+ * Represents if circulation of air is enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *circulateAirEnable;
+
+/**
+ * Represents if auto mode is enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *autoModeEnable;
+
+/**
+ * Represents the kind of defrost zone.
+ *
+ * Optional, SDLDefrostZone
+ */
+@property (nullable, strong, nonatomic) SDLDefrostZone defrostZone;
+
+/**
+ * Represents if dual mode is enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *dualModeEnable;
+
+/**
+ * Represents if ac max is enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acMaxEnable;
+
+/**
+ * Represents the kind of Ventilation zone.
+ *
+ * Optional, SDLVentilationMode
+ */
+@property (nullable, strong, nonatomic) SDLVentilationMode ventilationMode;
+
+/**
+ * @abstract value false means disabled/turn off, value true means enabled/turn on.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedSteeringWheelEnable;
+
+/**
+ * @abstract value false means disabled, value true means enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedWindshieldEnable;
+
+/**
+ * @abstract value false means disabled, value true means enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedRearWindowEnable;
+
+/**
+ * @abstract Value false means disabled, value true means enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatedMirrorsEnable;
+
+/**
+ * @abstract Value false means disabled, value true means enabled.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *climateEnable;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLClimateControlData.m b/SmartDeviceLink/public/SDLClimateControlData.m
new file mode 100644
index 000000000..8d5482845
--- /dev/null
+++ b/SmartDeviceLink/public/SDLClimateControlData.m
@@ -0,0 +1,160 @@
+//
+// SDLClimateControlData.m
+//
+
+#import "SDLClimateControlData.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLTemperature.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLClimateControlData
+
+- (instancetype)initWithFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed desiredTemperature:(nullable SDLTemperature *)desiredTemperature acEnable:(nullable NSNumber<SDLBool> *)acEnable circulateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable autoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable defrostZone:(nullable SDLDefrostZone)defrostZone dualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable acMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable ventilationMode:(nullable SDLVentilationMode)ventilationMode heatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable heatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable heatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable heatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable climateEnable:(nullable NSNumber<SDLBool> *)climateEnable {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.fanSpeed = fanSpeed;
+ self.desiredTemperature = desiredTemperature;
+ self.acEnable = acEnable;
+ self.circulateAirEnable = circulateAirEnable;
+ self.autoModeEnable = autoModeEnable;
+ self.defrostZone = defrostZone;
+ self.dualModeEnable = dualModeEnable;
+ self.acMaxEnable = acMaxEnable;
+ self.ventilationMode = ventilationMode;
+ self.heatedSteeringWheelEnable = heatedSteeringWheelEnable;
+ self.heatedWindshieldEnable = heatedWindshieldEnable;
+ self.heatedRearWindowEnable = heatedRearWindowEnable;
+ self.heatedMirrorsEnable = heatedMirrorsEnable;
+ self.climateEnable = climateEnable;
+
+ return self;
+}
+
+- (void)setFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed {
+ [self.store sdl_setObject:fanSpeed forName:SDLRPCParameterNameFanSpeed];
+}
+
+- (nullable NSNumber<SDLInt> *)fanSpeed {
+ return [self.store sdl_objectForName:SDLRPCParameterNameFanSpeed ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCurrentTemperature:(nullable SDLTemperature *)currentTemperature {
+ [self.store sdl_setObject:currentTemperature forName:SDLRPCParameterNameCurrentTemperature];
+}
+
+- (nullable SDLTemperature *)currentTemperature {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCurrentTemperature ofClass:SDLTemperature.class error:nil];
+}
+
+- (void)setDesiredTemperature:(nullable SDLTemperature *)desiredTemperature {
+ [self.store sdl_setObject:desiredTemperature forName:SDLRPCParameterNameDesiredTemperature];
+}
+
+- (nullable SDLTemperature *)desiredTemperature {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDesiredTemperature ofClass:SDLTemperature.class error:nil];
+}
+
+- (void)setAcEnable:(nullable NSNumber<SDLBool> *)acEnable {
+ [self.store sdl_setObject:acEnable forName:SDLRPCParameterNameACEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)acEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameACEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCirculateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable {
+ [self.store sdl_setObject:circulateAirEnable forName:SDLRPCParameterNameCirculateAirEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)circulateAirEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCirculateAirEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAutoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable {
+ [self.store sdl_setObject:autoModeEnable forName:SDLRPCParameterNameAutoModeEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)autoModeEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAutoModeEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDefrostZone:(nullable SDLDefrostZone)defrostZone {
+ [self.store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone];
+}
+
+- (nullable SDLDefrostZone)defrostZone {
+ return [self.store sdl_enumForName:SDLRPCParameterNameDefrostZone error:nil];
+}
+
+- (void)setDualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable {
+ [self.store sdl_setObject:dualModeEnable forName:SDLRPCParameterNameDualModeEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)dualModeEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDualModeEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAcMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable {
+ [self.store sdl_setObject:acMaxEnable forName:SDLRPCParameterNameACMaxEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)acMaxEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameACMaxEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVentilationMode:(nullable SDLVentilationMode)ventilationMode {
+ [self.store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode];
+}
+
+- (nullable SDLVentilationMode)ventilationMode {
+ return [self.store sdl_enumForName:SDLRPCParameterNameVentilationMode error:nil];
+}
+
+- (void)setHeatedSteeringWheelEnable:(nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable {
+ [self.store sdl_setObject:heatedSteeringWheelEnable forName:SDLRPCParameterNameHeatedSteeringWheelEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedSteeringWheelEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeatedWindshieldEnable:(nullable NSNumber<SDLBool> *)heatedWindshieldEnable {
+ [self.store sdl_setObject:heatedWindshieldEnable forName:SDLRPCParameterNameHeatedWindshieldEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedWindshieldEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeatedRearWindowEnable:(nullable NSNumber<SDLBool> *)heatedRearWindowEnable {
+ [self.store sdl_setObject:heatedRearWindowEnable forName:SDLRPCParameterNameHeatedRearWindowEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedRearWindowEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeatedMirrorsEnable:(nullable NSNumber<SDLBool> *)heatedMirrorsEnable {
+ [self.store sdl_setObject:heatedMirrorsEnable forName:SDLRPCParameterNameHeatedMirrorsEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatedMirrorsEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setClimateEnable:(nullable NSNumber<SDLBool> *)climateEnable {
+ [self.store sdl_setObject:climateEnable forName:SDLRPCParameterNameClimateEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)climateEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameClimateEnable ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCloseApplication.h b/SmartDeviceLink/public/SDLCloseApplication.h
index 38418e9b0..38418e9b0 100644
--- a/SmartDeviceLink/SDLCloseApplication.h
+++ b/SmartDeviceLink/public/SDLCloseApplication.h
diff --git a/SmartDeviceLink/SDLCloseApplication.m b/SmartDeviceLink/public/SDLCloseApplication.m
index 743a70781..743a70781 100644
--- a/SmartDeviceLink/SDLCloseApplication.m
+++ b/SmartDeviceLink/public/SDLCloseApplication.m
diff --git a/SmartDeviceLink/SDLCloseApplicationResponse.h b/SmartDeviceLink/public/SDLCloseApplicationResponse.h
index a7892930a..a7892930a 100644
--- a/SmartDeviceLink/SDLCloseApplicationResponse.h
+++ b/SmartDeviceLink/public/SDLCloseApplicationResponse.h
diff --git a/SmartDeviceLink/SDLCloseApplicationResponse.m b/SmartDeviceLink/public/SDLCloseApplicationResponse.m
index 3c7743177..3c7743177 100644
--- a/SmartDeviceLink/SDLCloseApplicationResponse.m
+++ b/SmartDeviceLink/public/SDLCloseApplicationResponse.m
diff --git a/SmartDeviceLink/SDLCloudAppProperties.h b/SmartDeviceLink/public/SDLCloudAppProperties.h
index 6f64956a8..6f64956a8 100644
--- a/SmartDeviceLink/SDLCloudAppProperties.h
+++ b/SmartDeviceLink/public/SDLCloudAppProperties.h
diff --git a/SmartDeviceLink/SDLCloudAppProperties.m b/SmartDeviceLink/public/SDLCloudAppProperties.m
index 3a2ad32a2..3a2ad32a2 100644
--- a/SmartDeviceLink/SDLCloudAppProperties.m
+++ b/SmartDeviceLink/public/SDLCloudAppProperties.m
diff --git a/SmartDeviceLink/SDLClusterModeStatus.h b/SmartDeviceLink/public/SDLClusterModeStatus.h
index 2a3fa5956..2a3fa5956 100644
--- a/SmartDeviceLink/SDLClusterModeStatus.h
+++ b/SmartDeviceLink/public/SDLClusterModeStatus.h
diff --git a/SmartDeviceLink/SDLClusterModeStatus.m b/SmartDeviceLink/public/SDLClusterModeStatus.m
index 1558c0522..1558c0522 100644
--- a/SmartDeviceLink/SDLClusterModeStatus.m
+++ b/SmartDeviceLink/public/SDLClusterModeStatus.m
diff --git a/SmartDeviceLink/public/SDLCompassDirection.h b/SmartDeviceLink/public/SDLCompassDirection.h
new file mode 100644
index 000000000..583753f7a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLCompassDirection.h
@@ -0,0 +1,52 @@
+// SDLCompassDirection.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * The list of potential compass directions. Used in GPS data
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLCompassDirection NS_TYPED_ENUM;
+
+/**
+ * Direction North
+ */
+extern SDLCompassDirection const SDLCompassDirectionNorth;
+
+/**
+ * Direction Northwest
+ */
+extern SDLCompassDirection const SDLCompassDirectionNorthwest;
+
+/**
+ * Direction West
+ */
+extern SDLCompassDirection const SDLCompassDirectionWest;
+
+/**
+ * Direction Southwest
+ */
+extern SDLCompassDirection const SDLCompassDirectionSouthwest;
+
+/**
+ * Direction South
+ */
+extern SDLCompassDirection const SDLCompassDirectionSouth;
+
+/**
+ * Direction Southeast
+ */
+extern SDLCompassDirection const SDLCompassDirectionSoutheast;
+
+/**
+ * Direction East
+ */
+extern SDLCompassDirection const SDLCompassDirectionEast;
+
+/**
+ * Direction Northeast
+ */
+extern SDLCompassDirection const SDLCompassDirectionNortheast;
diff --git a/SmartDeviceLink/SDLCompassDirection.m b/SmartDeviceLink/public/SDLCompassDirection.m
index 14d41a118..14d41a118 100644
--- a/SmartDeviceLink/SDLCompassDirection.m
+++ b/SmartDeviceLink/public/SDLCompassDirection.m
diff --git a/SmartDeviceLink/public/SDLComponentVolumeStatus.h b/SmartDeviceLink/public/SDLComponentVolumeStatus.h
new file mode 100644
index 000000000..368b20e2b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLComponentVolumeStatus.h
@@ -0,0 +1,42 @@
+// SDLComponentVolumeStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * The volume status of a vehicle component. Used in SingleTireStatus and VehicleData Fuel Level
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLComponentVolumeStatus NS_TYPED_ENUM;
+
+/**
+ * Unknown SDLComponentVolumeStatus
+ */
+extern SDLComponentVolumeStatus const SDLComponentVolumeStatusUnknown;
+
+/**
+ * Normal SDLComponentVolumeStatus
+ */
+extern SDLComponentVolumeStatus const SDLComponentVolumeStatusNormal;
+
+/**
+ * Low SDLComponentVolumeStatus
+ */
+extern SDLComponentVolumeStatus const SDLComponentVolumeStatusLow;
+
+/**
+ * Fault SDLComponentVolumeStatus
+ */
+extern SDLComponentVolumeStatus const SDLComponentVolumeStatusFault;
+
+/**
+ * Alert SDLComponentVolumeStatus
+ */
+extern SDLComponentVolumeStatus const SDLComponentVolumeStatusAlert;
+
+/**
+ * Not supported SDLComponentVolumeStatus
+ */
+extern SDLComponentVolumeStatus const SDLComponentVolumeStatusNotSupported;
diff --git a/SmartDeviceLink/SDLComponentVolumeStatus.m b/SmartDeviceLink/public/SDLComponentVolumeStatus.m
index e688b9fc2..e688b9fc2 100644
--- a/SmartDeviceLink/SDLComponentVolumeStatus.m
+++ b/SmartDeviceLink/public/SDLComponentVolumeStatus.m
diff --git a/SmartDeviceLink/public/SDLConfiguration.h b/SmartDeviceLink/public/SDLConfiguration.h
new file mode 100644
index 000000000..063c8c87a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLConfiguration.h
@@ -0,0 +1,80 @@
+//
+// SDLConfiguration.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/13/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class SDLFileManagerConfiguration;
+@class SDLLifecycleConfiguration;
+@class SDLLockScreenConfiguration;
+@class SDLLogConfiguration;
+@class SDLStreamingMediaConfiguration;
+@class SDLEncryptionConfiguration;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Contains information about the app's configurtion, such as lifecycle, lockscreen, encryption, etc.
+@interface SDLConfiguration : NSObject <NSCopying>
+
+/**
+ * The lifecycle configuration.
+ */
+@property (copy, nonatomic, readonly) SDLLifecycleConfiguration *lifecycleConfig;
+
+/**
+ * The lock screen configuration.
+ */
+@property (copy, nonatomic, readonly) SDLLockScreenConfiguration *lockScreenConfig;
+
+/**
+ * The log configuration.
+ */
+@property (copy, nonatomic, readonly) SDLLogConfiguration *loggingConfig;
+
+/**
+ * The streaming media configuration.
+ */
+@property (copy, nonatomic, readonly, nullable) SDLStreamingMediaConfiguration *streamingMediaConfig;
+
+/**
+ * The file manager configuration.
+ */
+@property (copy, nonatomic, readonly) SDLFileManagerConfiguration *fileManagerConfig;
+
+/**
+ * The encryption configuration.
+ */
+@property (copy, nonatomic, readonly) SDLEncryptionConfiguration *encryptionConfig;
+
+/**
+ * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, file manager and encryption configurations.
+ *
+ * @param lifecycleConfig The lifecycle configuration to be used.
+ * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
+ * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
+ * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
+ * @param encryptionConfig The encryption configuration to be used. If nil, the `defaultConfiguration` will be used.
+ * @return The configuration
+ */
+- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig;
+
+/**
+ * Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media, file manager and encryption configurations.
+ *
+ * @param lifecycleConfig The lifecycle configuration to be used.
+ * @param lockScreenConfig The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
+ * @param logConfig The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
+ * @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
+ * @param fileManagerConfig The file manager configuration to be used or `defaultConfiguration` if nil.
+ * @param encryptionConfig The encryption configuration to be used. If nil, the `defaultConfiguration` will be used.
+ * @return The configuration
+ */
+- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLConfiguration.m b/SmartDeviceLink/public/SDLConfiguration.m
new file mode 100644
index 000000000..360beff91
--- /dev/null
+++ b/SmartDeviceLink/public/SDLConfiguration.m
@@ -0,0 +1,77 @@
+//
+// SDLConfiguration.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/13/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLConfiguration.h"
+
+#import "SDLFileManagerConfiguration.h"
+#import "SDLLifecycleConfiguration.h"
+#import "SDLLockScreenConfiguration.h"
+#import "SDLLogConfiguration.h"
+#import "SDLStreamingMediaConfiguration.h"
+#import "SDLEncryptionConfiguration.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLConfiguration
+
+- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfiguration {
+ return [self initWithLifecycle:lifecycleConfiguration lockScreen:nil];
+}
+
+- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig {
+ return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:nil fileManager:nil encryption:nil];
+}
+
+- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig {
+ return [self initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:logConfig streamingMedia:nil fileManager:fileManagerConfig encryption:encryptionConfig];
+}
+
++ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfiguration {
+ return [self configurationWithLifecycle:lifecycleConfiguration lockScreen:nil];
+}
+
++ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig {
+ return [[self alloc] initWithLifecycle:lifecycleConfig lockScreen:lockScreenConfig logging:nil fileManager:nil encryption:nil];
+}
+
+- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig encryption:(nullable SDLEncryptionConfiguration *)encryptionConfig {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _lifecycleConfig = lifecycleConfig;
+ _lockScreenConfig = lockScreenConfig ?: [SDLLockScreenConfiguration enabledConfiguration];
+ _loggingConfig = logConfig ?: [SDLLogConfiguration defaultConfiguration];
+
+ _streamingMediaConfig = streamingMediaConfig;
+ if (_streamingMediaConfig != nil) {
+ // If we have a streaming config, the apptype MUST be navigation or projection
+ NSAssert(([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeNavigation] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeProjection]), @"You should only set a streaming media configuration if your app is a NAVIGATION or PROJECTION HMI type");
+ _streamingMediaConfig = streamingMediaConfig;
+ } else {
+ // If we don't have a streaming config, we MUST NOT be navigation or projection
+ NSAssert(!([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeNavigation] || [_lifecycleConfig.additionalAppTypes containsObject:SDLAppHMITypeProjection]), @"If your app is a NAVIGATION or PROJECTION HMI type, you must set a streaming media configuration on SDLConfiguration");
+ }
+
+ _fileManagerConfig = fileManagerConfig ?: [SDLFileManagerConfiguration defaultConfiguration];
+ _encryptionConfig = encryptionConfig ?: [SDLEncryptionConfiguration defaultConfiguration];
+
+ return self;
+}
+
+#pragma mark - NSCopying
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLConfiguration *new = [[SDLConfiguration allocWithZone:zone] initWithLifecycle:_lifecycleConfig lockScreen:_lockScreenConfig logging:_loggingConfig streamingMedia:_streamingMediaConfig fileManager:_fileManagerConfig encryption:_encryptionConfig];
+ return new;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLCreateInteractionChoiceSet.h b/SmartDeviceLink/public/SDLCreateInteractionChoiceSet.h
index da54d58e3..da54d58e3 100644
--- a/SmartDeviceLink/SDLCreateInteractionChoiceSet.h
+++ b/SmartDeviceLink/public/SDLCreateInteractionChoiceSet.h
diff --git a/SmartDeviceLink/SDLCreateInteractionChoiceSet.m b/SmartDeviceLink/public/SDLCreateInteractionChoiceSet.m
index 00ee17093..00ee17093 100644
--- a/SmartDeviceLink/SDLCreateInteractionChoiceSet.m
+++ b/SmartDeviceLink/public/SDLCreateInteractionChoiceSet.m
diff --git a/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h b/SmartDeviceLink/public/SDLCreateInteractionChoiceSetResponse.h
index c208cd8b8..c208cd8b8 100644
--- a/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h
+++ b/SmartDeviceLink/public/SDLCreateInteractionChoiceSetResponse.h
diff --git a/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.m b/SmartDeviceLink/public/SDLCreateInteractionChoiceSetResponse.m
index 37b8bad2e..37b8bad2e 100644
--- a/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.m
+++ b/SmartDeviceLink/public/SDLCreateInteractionChoiceSetResponse.m
diff --git a/SmartDeviceLink/SDLCreateWindow.h b/SmartDeviceLink/public/SDLCreateWindow.h
index ad4475ef2..ad4475ef2 100644
--- a/SmartDeviceLink/SDLCreateWindow.h
+++ b/SmartDeviceLink/public/SDLCreateWindow.h
diff --git a/SmartDeviceLink/SDLCreateWindow.m b/SmartDeviceLink/public/SDLCreateWindow.m
index b6b55ec17..b6b55ec17 100644
--- a/SmartDeviceLink/SDLCreateWindow.m
+++ b/SmartDeviceLink/public/SDLCreateWindow.m
diff --git a/SmartDeviceLink/SDLCreateWindowResponse.h b/SmartDeviceLink/public/SDLCreateWindowResponse.h
index 62684e165..62684e165 100644
--- a/SmartDeviceLink/SDLCreateWindowResponse.h
+++ b/SmartDeviceLink/public/SDLCreateWindowResponse.h
diff --git a/SmartDeviceLink/SDLCreateWindowResponse.m b/SmartDeviceLink/public/SDLCreateWindowResponse.m
index a9f6a3029..a9f6a3029 100644
--- a/SmartDeviceLink/SDLCreateWindowResponse.m
+++ b/SmartDeviceLink/public/SDLCreateWindowResponse.m
diff --git a/SmartDeviceLink/SDLDIDResult.h b/SmartDeviceLink/public/SDLDIDResult.h
index 673ccaacc..673ccaacc 100644
--- a/SmartDeviceLink/SDLDIDResult.h
+++ b/SmartDeviceLink/public/SDLDIDResult.h
diff --git a/SmartDeviceLink/SDLDIDResult.m b/SmartDeviceLink/public/SDLDIDResult.m
index 4f661d895..4f661d895 100644
--- a/SmartDeviceLink/SDLDIDResult.m
+++ b/SmartDeviceLink/public/SDLDIDResult.m
diff --git a/SmartDeviceLink/SDLDateTime.h b/SmartDeviceLink/public/SDLDateTime.h
index 905012f44..905012f44 100644
--- a/SmartDeviceLink/SDLDateTime.h
+++ b/SmartDeviceLink/public/SDLDateTime.h
diff --git a/SmartDeviceLink/SDLDateTime.m b/SmartDeviceLink/public/SDLDateTime.m
index c5a45214a..c5a45214a 100644
--- a/SmartDeviceLink/SDLDateTime.m
+++ b/SmartDeviceLink/public/SDLDateTime.m
diff --git a/SmartDeviceLink/public/SDLDefrostZone.h b/SmartDeviceLink/public/SDLDefrostZone.h
new file mode 100644
index 000000000..a8879745b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDefrostZone.h
@@ -0,0 +1,32 @@
+//
+// SDLDefrostZone.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration listing possible defrost zones. Used in ClimateControlCapabilities and Data.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLDefrostZone NS_TYPED_ENUM;
+
+/**
+ * A SDLDefrostZone with the value of *FRONT*
+ */
+extern SDLDefrostZone const SDLDefrostZoneFront;
+
+/**
+ * A SDLDefrostZone with the value of *REAR*
+ */
+extern SDLDefrostZone const SDLDefrostZoneRear;
+
+/**
+ * A SDLDefrostZone with the value of *All*
+ */
+extern SDLDefrostZone const SDLDefrostZoneAll;
+
+/**
+ * A SDLDefrostZone with the value of *None*
+ */
+extern SDLDefrostZone const SDLDefrostZoneNone;
diff --git a/SmartDeviceLink/SDLDefrostZone.m b/SmartDeviceLink/public/SDLDefrostZone.m
index f4f2862f2..f4f2862f2 100644
--- a/SmartDeviceLink/SDLDefrostZone.m
+++ b/SmartDeviceLink/public/SDLDefrostZone.m
diff --git a/SmartDeviceLink/SDLDeleteCommand.h b/SmartDeviceLink/public/SDLDeleteCommand.h
index f6b059c20..f6b059c20 100644
--- a/SmartDeviceLink/SDLDeleteCommand.h
+++ b/SmartDeviceLink/public/SDLDeleteCommand.h
diff --git a/SmartDeviceLink/SDLDeleteCommand.m b/SmartDeviceLink/public/SDLDeleteCommand.m
index 563cde435..563cde435 100644
--- a/SmartDeviceLink/SDLDeleteCommand.m
+++ b/SmartDeviceLink/public/SDLDeleteCommand.m
diff --git a/SmartDeviceLink/SDLDeleteCommandResponse.h b/SmartDeviceLink/public/SDLDeleteCommandResponse.h
index 6237313ee..6237313ee 100644
--- a/SmartDeviceLink/SDLDeleteCommandResponse.h
+++ b/SmartDeviceLink/public/SDLDeleteCommandResponse.h
diff --git a/SmartDeviceLink/SDLDeleteCommandResponse.m b/SmartDeviceLink/public/SDLDeleteCommandResponse.m
index 57460a834..57460a834 100644
--- a/SmartDeviceLink/SDLDeleteCommandResponse.m
+++ b/SmartDeviceLink/public/SDLDeleteCommandResponse.m
diff --git a/SmartDeviceLink/SDLDeleteFile.h b/SmartDeviceLink/public/SDLDeleteFile.h
index 04e1814a1..04e1814a1 100644
--- a/SmartDeviceLink/SDLDeleteFile.h
+++ b/SmartDeviceLink/public/SDLDeleteFile.h
diff --git a/SmartDeviceLink/SDLDeleteFile.m b/SmartDeviceLink/public/SDLDeleteFile.m
index 8c1a0573a..8c1a0573a 100644
--- a/SmartDeviceLink/SDLDeleteFile.m
+++ b/SmartDeviceLink/public/SDLDeleteFile.m
diff --git a/SmartDeviceLink/SDLDeleteFileResponse.h b/SmartDeviceLink/public/SDLDeleteFileResponse.h
index c639dcdd7..c639dcdd7 100644
--- a/SmartDeviceLink/SDLDeleteFileResponse.h
+++ b/SmartDeviceLink/public/SDLDeleteFileResponse.h
diff --git a/SmartDeviceLink/SDLDeleteFileResponse.m b/SmartDeviceLink/public/SDLDeleteFileResponse.m
index 17db0cb17..17db0cb17 100644
--- a/SmartDeviceLink/SDLDeleteFileResponse.m
+++ b/SmartDeviceLink/public/SDLDeleteFileResponse.m
diff --git a/SmartDeviceLink/SDLDeleteInteractionChoiceSet.h b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSet.h
index 19bbc069f..19bbc069f 100644
--- a/SmartDeviceLink/SDLDeleteInteractionChoiceSet.h
+++ b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSet.h
diff --git a/SmartDeviceLink/SDLDeleteInteractionChoiceSet.m b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSet.m
index 20174145f..20174145f 100644
--- a/SmartDeviceLink/SDLDeleteInteractionChoiceSet.m
+++ b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSet.m
diff --git a/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.h b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSetResponse.h
index 55267a604..55267a604 100644
--- a/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.h
+++ b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSetResponse.h
diff --git a/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.m b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSetResponse.m
index abc14d757..abc14d757 100644
--- a/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.m
+++ b/SmartDeviceLink/public/SDLDeleteInteractionChoiceSetResponse.m
diff --git a/SmartDeviceLink/SDLDeleteSubMenu.h b/SmartDeviceLink/public/SDLDeleteSubMenu.h
index 5f9bf73ff..5f9bf73ff 100644
--- a/SmartDeviceLink/SDLDeleteSubMenu.h
+++ b/SmartDeviceLink/public/SDLDeleteSubMenu.h
diff --git a/SmartDeviceLink/public/SDLDeleteSubMenu.m b/SmartDeviceLink/public/SDLDeleteSubMenu.m
new file mode 100644
index 000000000..dedcff616
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDeleteSubMenu.m
@@ -0,0 +1,46 @@
+// SDLDeleteSubMenu.m
+//
+
+
+#import "SDLDeleteSubMenu.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLDeleteSubMenu
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameDeleteSubMenu]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithId:(UInt32)menuId {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.menuID = @(menuId);
+
+ return self;
+}
+
+- (void)setMenuID:(NSNumber<SDLInt> *)menuID {
+ [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuID];
+}
+
+- (NSNumber<SDLInt> *)menuID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuID ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLDeleteSubMenuResponse.h b/SmartDeviceLink/public/SDLDeleteSubMenuResponse.h
index 7b3282e45..7b3282e45 100644
--- a/SmartDeviceLink/SDLDeleteSubMenuResponse.h
+++ b/SmartDeviceLink/public/SDLDeleteSubMenuResponse.h
diff --git a/SmartDeviceLink/SDLDeleteSubMenuResponse.m b/SmartDeviceLink/public/SDLDeleteSubMenuResponse.m
index d9c3355ea..d9c3355ea 100644
--- a/SmartDeviceLink/SDLDeleteSubMenuResponse.m
+++ b/SmartDeviceLink/public/SDLDeleteSubMenuResponse.m
diff --git a/SmartDeviceLink/SDLDeleteWindow.h b/SmartDeviceLink/public/SDLDeleteWindow.h
index 2561b45c1..2561b45c1 100644
--- a/SmartDeviceLink/SDLDeleteWindow.h
+++ b/SmartDeviceLink/public/SDLDeleteWindow.h
diff --git a/SmartDeviceLink/SDLDeleteWindow.m b/SmartDeviceLink/public/SDLDeleteWindow.m
index d4f6189c8..d4f6189c8 100644
--- a/SmartDeviceLink/SDLDeleteWindow.m
+++ b/SmartDeviceLink/public/SDLDeleteWindow.m
diff --git a/SmartDeviceLink/SDLDeleteWindowResponse.h b/SmartDeviceLink/public/SDLDeleteWindowResponse.h
index e2308bd08..e2308bd08 100644
--- a/SmartDeviceLink/SDLDeleteWindowResponse.h
+++ b/SmartDeviceLink/public/SDLDeleteWindowResponse.h
diff --git a/SmartDeviceLink/SDLDeleteWindowResponse.m b/SmartDeviceLink/public/SDLDeleteWindowResponse.m
index c7cf30058..c7cf30058 100644
--- a/SmartDeviceLink/SDLDeleteWindowResponse.m
+++ b/SmartDeviceLink/public/SDLDeleteWindowResponse.m
diff --git a/SmartDeviceLink/public/SDLDeliveryMode.h b/SmartDeviceLink/public/SDLDeliveryMode.h
new file mode 100644
index 000000000..3f584f5f4
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDeliveryMode.h
@@ -0,0 +1,24 @@
+// SDLDeliveryMode.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Specifies the mode in which the sendLocation request is sent. Used in SendLocation.
+ */
+typedef SDLEnum SDLDeliveryMode NS_TYPED_ENUM;
+
+/**
+ * User is prompted on HMI
+ */
+extern SDLDeliveryMode const SDLDeliveryModePrompt;
+
+/**
+ * Set the location as destination without prompting the user
+ */
+extern SDLDeliveryMode const SDLDeliveryModeDestination;
+
+/**
+ * Adds the current location to navigation queue
+ */
+extern SDLDeliveryMode const SDLDeliveryModeQueue;
diff --git a/SmartDeviceLink/SDLDeliveryMode.m b/SmartDeviceLink/public/SDLDeliveryMode.m
index b97b7ae23..b97b7ae23 100644
--- a/SmartDeviceLink/SDLDeliveryMode.m
+++ b/SmartDeviceLink/public/SDLDeliveryMode.m
diff --git a/SmartDeviceLink/SDLDeviceInfo.h b/SmartDeviceLink/public/SDLDeviceInfo.h
index f30e2d598..f30e2d598 100644
--- a/SmartDeviceLink/SDLDeviceInfo.h
+++ b/SmartDeviceLink/public/SDLDeviceInfo.h
diff --git a/SmartDeviceLink/SDLDeviceInfo.m b/SmartDeviceLink/public/SDLDeviceInfo.m
index a28f2759a..a28f2759a 100644
--- a/SmartDeviceLink/SDLDeviceInfo.m
+++ b/SmartDeviceLink/public/SDLDeviceInfo.m
diff --git a/SmartDeviceLink/public/SDLDeviceLevelStatus.h b/SmartDeviceLink/public/SDLDeviceLevelStatus.h
new file mode 100644
index 000000000..d68d8b819
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDeviceLevelStatus.h
@@ -0,0 +1,42 @@
+// SDLDeviceLevelStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the reported battery status of the connected device, if reported. Used in DeviceStatus.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLDeviceLevelStatus NS_TYPED_ENUM;
+
+/**
+ * Device battery level is zero bars
+ */
+extern SDLDeviceLevelStatus const SDLDeviceLevelStatusZeroBars;
+
+/**
+ * Device battery level is one bar
+ */
+extern SDLDeviceLevelStatus const SDLDeviceLevelStatusOneBar;
+
+/**
+ * Device battery level is two bars
+ */
+extern SDLDeviceLevelStatus const SDLDeviceLevelStatusTwoBars;
+
+/**
+ * Device battery level is three bars
+ */
+extern SDLDeviceLevelStatus const SDLDeviceLevelStatusThreeBars;
+
+/**
+ * Device battery level is four bars
+ */
+extern SDLDeviceLevelStatus const SDLDeviceLevelStatusFourBars;
+
+/**
+ * Device battery level is unknown
+ */
+extern SDLDeviceLevelStatus const SDLDeviceLevelStatusNotProvided;
diff --git a/SmartDeviceLink/SDLDeviceLevelStatus.m b/SmartDeviceLink/public/SDLDeviceLevelStatus.m
index 2c15db3a2..2c15db3a2 100644
--- a/SmartDeviceLink/SDLDeviceLevelStatus.m
+++ b/SmartDeviceLink/public/SDLDeviceLevelStatus.m
diff --git a/SmartDeviceLink/SDLDeviceStatus.h b/SmartDeviceLink/public/SDLDeviceStatus.h
index 4764ca223..4764ca223 100644
--- a/SmartDeviceLink/SDLDeviceStatus.h
+++ b/SmartDeviceLink/public/SDLDeviceStatus.h
diff --git a/SmartDeviceLink/SDLDeviceStatus.m b/SmartDeviceLink/public/SDLDeviceStatus.m
index 2b9101233..2b9101233 100644
--- a/SmartDeviceLink/SDLDeviceStatus.m
+++ b/SmartDeviceLink/public/SDLDeviceStatus.m
diff --git a/SmartDeviceLink/SDLDiagnosticMessage.h b/SmartDeviceLink/public/SDLDiagnosticMessage.h
index 385c72b4f..385c72b4f 100644
--- a/SmartDeviceLink/SDLDiagnosticMessage.h
+++ b/SmartDeviceLink/public/SDLDiagnosticMessage.h
diff --git a/SmartDeviceLink/SDLDiagnosticMessage.m b/SmartDeviceLink/public/SDLDiagnosticMessage.m
index adef6c980..adef6c980 100644
--- a/SmartDeviceLink/SDLDiagnosticMessage.m
+++ b/SmartDeviceLink/public/SDLDiagnosticMessage.m
diff --git a/SmartDeviceLink/SDLDiagnosticMessageResponse.h b/SmartDeviceLink/public/SDLDiagnosticMessageResponse.h
index 2912beafa..2912beafa 100644
--- a/SmartDeviceLink/SDLDiagnosticMessageResponse.h
+++ b/SmartDeviceLink/public/SDLDiagnosticMessageResponse.h
diff --git a/SmartDeviceLink/SDLDiagnosticMessageResponse.m b/SmartDeviceLink/public/SDLDiagnosticMessageResponse.m
index dbfaa03a2..dbfaa03a2 100644
--- a/SmartDeviceLink/SDLDiagnosticMessageResponse.m
+++ b/SmartDeviceLink/public/SDLDiagnosticMessageResponse.m
diff --git a/SmartDeviceLink/SDLDialNumber.h b/SmartDeviceLink/public/SDLDialNumber.h
index 44c6b7751..44c6b7751 100644
--- a/SmartDeviceLink/SDLDialNumber.h
+++ b/SmartDeviceLink/public/SDLDialNumber.h
diff --git a/SmartDeviceLink/SDLDialNumber.m b/SmartDeviceLink/public/SDLDialNumber.m
index eaed1eb41..eaed1eb41 100644
--- a/SmartDeviceLink/SDLDialNumber.m
+++ b/SmartDeviceLink/public/SDLDialNumber.m
diff --git a/SmartDeviceLink/SDLDialNumberResponse.h b/SmartDeviceLink/public/SDLDialNumberResponse.h
index f1a9265ab..f1a9265ab 100644
--- a/SmartDeviceLink/SDLDialNumberResponse.h
+++ b/SmartDeviceLink/public/SDLDialNumberResponse.h
diff --git a/SmartDeviceLink/SDLDialNumberResponse.m b/SmartDeviceLink/public/SDLDialNumberResponse.m
index b8073cf9d..b8073cf9d 100644
--- a/SmartDeviceLink/SDLDialNumberResponse.m
+++ b/SmartDeviceLink/public/SDLDialNumberResponse.m
diff --git a/SmartDeviceLink/public/SDLDimension.h b/SmartDeviceLink/public/SDLDimension.h
new file mode 100644
index 000000000..480e1812d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDimension.h
@@ -0,0 +1,27 @@
+// SDLDimension.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * The supported dimensions of the GPS. Used in GPSData
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLDimension NS_TYPED_ENUM;
+
+/**
+ * No GPS at all
+ */
+extern SDLDimension const SDLDimensionNoFix;
+
+/**
+ * Longitude and latitude of the GPS
+ */
+extern SDLDimension const SDLDimension2D;
+
+/**
+ * Longitude and latitude and altitude of the GPS
+ */
+extern SDLDimension const SDLDimension3D;
diff --git a/SmartDeviceLink/SDLDimension.m b/SmartDeviceLink/public/SDLDimension.m
index 0730fcf75..0730fcf75 100644
--- a/SmartDeviceLink/SDLDimension.m
+++ b/SmartDeviceLink/public/SDLDimension.m
diff --git a/SmartDeviceLink/public/SDLDirection.h b/SmartDeviceLink/public/SDLDirection.h
new file mode 100644
index 000000000..0eb164559
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDirection.h
@@ -0,0 +1,26 @@
+//
+// SDLDirection.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/22/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * A navigation direction.
+ */
+typedef SDLEnum SDLDirection NS_TYPED_ENUM;
+
+/**
+ * Direction left
+ */
+extern SDLDirection const SDLDirectionLeft;
+
+/**
+ * Direction right
+ */
+extern SDLDirection const SDLDirectionRight;
+
+
diff --git a/SmartDeviceLink/SDLDirection.m b/SmartDeviceLink/public/SDLDirection.m
index 1a11c772a..1a11c772a 100644
--- a/SmartDeviceLink/SDLDirection.m
+++ b/SmartDeviceLink/public/SDLDirection.m
diff --git a/SmartDeviceLink/SDLDisplayCapabilities.h b/SmartDeviceLink/public/SDLDisplayCapabilities.h
index b5644379f..b5644379f 100644
--- a/SmartDeviceLink/SDLDisplayCapabilities.h
+++ b/SmartDeviceLink/public/SDLDisplayCapabilities.h
diff --git a/SmartDeviceLink/SDLDisplayCapabilities.m b/SmartDeviceLink/public/SDLDisplayCapabilities.m
index b85208a83..b85208a83 100644
--- a/SmartDeviceLink/SDLDisplayCapabilities.m
+++ b/SmartDeviceLink/public/SDLDisplayCapabilities.m
diff --git a/SmartDeviceLink/public/SDLDisplayCapability.h b/SmartDeviceLink/public/SDLDisplayCapability.h
new file mode 100644
index 000000000..b021a6a10
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDisplayCapability.h
@@ -0,0 +1,63 @@
+//
+// SDLDisplayCapability.h
+// SmartDeviceLink
+
+#import "SDLRPCStruct.h"
+
+@class SDLWindowCapability;
+@class SDLWindowTypeCapabilities;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contain the display related information and all windows related to that display.
+
+ @since SDL 6.0
+ */
+@interface SDLDisplayCapability : SDLRPCStruct
+
+/**
+ Init with required properties
+
+ @param displayName Name of the display.
+ */
+- (instancetype)initWithDisplayName:(NSString *)displayName;
+
+/**
+ Init with all the properities
+
+ @param displayName Name of the display.
+ @param windowCapabilities Contains a list of capabilities of all windows related to the app. @see windowCapabilities
+ @param windowTypeSupported Informs the application how many windows the app is allowed to create per type.
+ */
+- (instancetype)initWithDisplayName:(NSString *)displayName windowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities windowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported;
+
+
+/**
+ Name of the display.
+ */
+@property (strong, nonatomic, nullable) NSString *displayName;
+
+/**
+ Informs the application how many windows the app is allowed to create per type.
+
+ Min size 1
+ Max size 100
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLWindowTypeCapabilities *> *windowTypeSupported;
+
+/**
+ Contains a list of capabilities of all windows related to the app. Once the app has registered the capabilities of all windows will be provided, but GetSystemCapability still allows requesting window capabilities of all windows.
+
+ After registration, only windows with capabilities changed will be included. Following cases will cause only affected windows to be included:
+
+ 1. App creates a new window. After the window is created, a system capability notification will be sent related only to the created window.
+ 2. App sets a new template to the window. The new template changes window capabilties. The notification will reflect those changes to the single window.
+
+ Min size 1, Max size 1000
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLWindowCapability *> *windowCapabilities;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLDisplayCapability.m b/SmartDeviceLink/public/SDLDisplayCapability.m
new file mode 100644
index 000000000..f70f9c024
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDisplayCapability.m
@@ -0,0 +1,66 @@
+//
+// SDLDisplayCapability.m
+// SmartDeviceLink
+
+#import "SDLDisplayCapability.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowTypeCapabilities.h"
+#import "SDLWindowCapability.h"
+
+@implementation SDLDisplayCapability
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+
+- (instancetype)initWithDisplayName:(NSString *)displayName {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.displayName = displayName;
+ return self;
+}
+
+- (instancetype)initWithDisplayName:(NSString *)displayName windowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities windowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
+ self = [self initWithDisplayName:displayName];
+ if (!self) {
+ return nil;
+ }
+ self.windowTypeSupported = windowTypeSupported;
+ self.windowCapabilities = windowCapabilities;
+ return self;
+}
+
+- (void)setDisplayName:(NSString *)displayName {
+ [self.store sdl_setObject:displayName forName:SDLRPCParameterNameDisplayName];
+}
+
+- (NSString *)displayName {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDisplayName ofClass:NSString.class error:nil];
+}
+
+- (void)setWindowTypeSupported:(nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
+ [self.store sdl_setObject:windowTypeSupported forName:SDLRPCParameterNameWindowTypeSupported];
+}
+
+- (nullable NSArray<SDLWindowTypeCapabilities *> *)windowTypeSupported {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameWindowTypeSupported ofClass:SDLWindowTypeCapabilities.class error:nil];
+}
+
+- (void)setWindowCapabilities:(nullable NSArray<SDLWindowCapability *> *)windowCapabilities {
+ [self.store sdl_setObject:windowCapabilities forName:SDLRPCParameterNameWindowCapabilities];
+}
+
+- (nullable NSArray<SDLWindowCapability *> *)windowCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameWindowCapabilities ofClass:SDLWindowCapability.class error:nil];
+}
+
+
+@end
diff --git a/SmartDeviceLink/public/SDLDisplayMode.h b/SmartDeviceLink/public/SDLDisplayMode.h
new file mode 100644
index 000000000..c32de0874
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDisplayMode.h
@@ -0,0 +1,26 @@
+// SDLDisplayMode.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Identifies the various display types used by SDL.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLDisplayMode NS_TYPED_ENUM;
+
+/**
+ * @abstract Display Mode : DAY
+ */
+extern SDLDisplayMode const SDLDisplayModeDay;
+
+/**
+ * @abstract Display Mode : NIGHT.
+ */
+extern SDLDisplayMode const SDLDisplayModeNight;
+
+/**
+ * @abstract Display Mode : AUTO.
+ */
+extern SDLDisplayMode const SDLDisplayModeAuto;
diff --git a/SmartDeviceLink/SDLDisplayMode.m b/SmartDeviceLink/public/SDLDisplayMode.m
index fc5a5bb26..fc5a5bb26 100644
--- a/SmartDeviceLink/SDLDisplayMode.m
+++ b/SmartDeviceLink/public/SDLDisplayMode.m
diff --git a/SmartDeviceLink/public/SDLDisplayType.h b/SmartDeviceLink/public/SDLDisplayType.h
new file mode 100644
index 000000000..89f19db7d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDisplayType.h
@@ -0,0 +1,71 @@
+// SDLDisplayType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Identifies the various display types used by SDL. Used in DisplayCapabilities.
+
+ @warning This should not be used to identify features of a display, this is a deprecated parameter.
+
+ @deprecated
+ @history SDL 1.0.0
+ @since SDL 5.0.0
+ */
+typedef SDLEnum SDLDisplayType NS_TYPED_ENUM __deprecated;
+
+/**
+ * This display type provides a 2-line x 20 character "dot matrix" display.
+ */
+extern SDLDisplayType const SDLDisplayTypeCID __deprecated;
+
+/**
+ * Display type 2
+ */
+extern SDLDisplayType const SDLDisplayTypeType2 __deprecated;
+
+/**
+ * Display type 5
+ */
+extern SDLDisplayType const SDLDisplayTypeType5 __deprecated;
+
+/**
+ * This display type provides an 8 inch touchscreen display.
+ */
+extern SDLDisplayType const SDLDisplayTypeNGN __deprecated;
+
+/**
+ * Display type Gen 28 DMA
+ */
+extern SDLDisplayType const SDLDisplayTypeGen28DMA __deprecated;
+
+/**
+ * Display type Gen 26 DMA
+ */
+extern SDLDisplayType const SDLDisplayTypeGen26DMA __deprecated;
+
+/**
+ * Display type MFD3
+ */
+extern SDLDisplayType const SDLDisplayTypeMFD3 __deprecated;
+
+/**
+ * Display type MFD4
+ */
+extern SDLDisplayType const SDLDisplayTypeMFD4 __deprecated;
+
+/**
+ * Display type MFD5
+ */
+extern SDLDisplayType const SDLDisplayTypeMFD5 __deprecated;
+
+/**
+ * Display type Gen 3 8-inch
+ */
+extern SDLDisplayType const SDLDisplayTypeGen38Inch __deprecated;
+
+/**
+ * Display type Generic
+ */
+extern SDLDisplayType const SDLDisplayTypeGeneric __deprecated;
diff --git a/SmartDeviceLink/SDLDisplayType.m b/SmartDeviceLink/public/SDLDisplayType.m
index be057354f..be057354f 100644
--- a/SmartDeviceLink/SDLDisplayType.m
+++ b/SmartDeviceLink/public/SDLDisplayType.m
diff --git a/SmartDeviceLink/public/SDLDistanceUnit.h b/SmartDeviceLink/public/SDLDistanceUnit.h
new file mode 100644
index 000000000..6d84ce1fc
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDistanceUnit.h
@@ -0,0 +1,19 @@
+// SDLDistanceUnit.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Wiper Status
+ */
+typedef SDLEnum SDLDistanceUnit NS_TYPED_ENUM;
+
+/**
+ * @abstract SDLDistanceUnit: *MILES*
+ */
+extern SDLDistanceUnit const SDLDistanceUnitMiles;
+
+/**
+ * @abstract SDLDistanceUnit: *KILOMETERS*
+ */
+extern SDLDistanceUnit const SDLDistanceUnitKilometers;
diff --git a/SmartDeviceLink/SDLDistanceUnit.m b/SmartDeviceLink/public/SDLDistanceUnit.m
index 9b5881026..9b5881026 100644
--- a/SmartDeviceLink/SDLDistanceUnit.m
+++ b/SmartDeviceLink/public/SDLDistanceUnit.m
diff --git a/SmartDeviceLink/public/SDLDriverDistractionCapability.h b/SmartDeviceLink/public/SDLDriverDistractionCapability.h
new file mode 100644
index 000000000..3f2943bef
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDriverDistractionCapability.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @since SDL 7.0.0
+ */
+@interface SDLDriverDistractionCapability : SDLRPCStruct
+
+/**
+ * @param menuLength - menuLength
+ * @param subMenuDepth - subMenuDepth
+ * @return A SDLDriverDistractionCapability object
+ */
+- (instancetype)initWithMenuLength:(nullable NSNumber<SDLInt> *)menuLength subMenuDepth:(nullable NSNumber<SDLUInt> *)subMenuDepth;
+
+/**
+ * The number of items allowed in a Choice Set or Command menu while the driver is distracted
+ * {"default_value": null, "max_value": null, "min_value": null}
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *menuLength;
+
+/**
+ * The depth of submenus allowed when the driver is distracted. e.g. 3 == top level menu -> submenu -> submenu; 1 == top level menu only
+ * {"default_value": null, "max_value": null, "min_value": 1}
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *subMenuDepth;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLDriverDistractionCapability.m b/SmartDeviceLink/public/SDLDriverDistractionCapability.m
new file mode 100644
index 000000000..3bfca9855
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDriverDistractionCapability.m
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLDriverDistractionCapability.h"
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLDriverDistractionCapability
+
+- (instancetype)initWithMenuLength:(nullable NSNumber<SDLInt> *)menuLength subMenuDepth:(nullable NSNumber<SDLUInt> *)subMenuDepth {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.menuLength = menuLength;
+ self.subMenuDepth = subMenuDepth;
+ return self;
+}
+
+- (void)setMenuLength:(nullable NSNumber<SDLInt> *)menuLength {
+ [self.store sdl_setObject:menuLength forName:SDLRPCParameterNameMenuLength];
+}
+
+- (nullable NSNumber<SDLInt> *)menuLength {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMenuLength ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSubMenuDepth:(nullable NSNumber<SDLUInt> *)subMenuDepth {
+ [self.store sdl_setObject:subMenuDepth forName:SDLRPCParameterNameSubMenuDepth];
+}
+
+- (nullable NSNumber<SDLUInt> *)subMenuDepth {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSubMenuDepth ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/SmartDeviceLink/public/SDLDriverDistractionState.h b/SmartDeviceLink/public/SDLDriverDistractionState.h
new file mode 100644
index 000000000..147da214f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDriverDistractionState.h
@@ -0,0 +1,23 @@
+// SDLDriverDistractionState.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration that describes possible states of driver distraction. Used in OnDriverDistraction.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLDriverDistractionState NS_TYPED_ENUM;
+
+/**
+ * Driver distraction rules are in effect.
+ */
+extern SDLDriverDistractionState const SDLDriverDistractionStateOn;
+
+/**
+ * Driver distraction rules are NOT in effect.
+ */
+extern SDLDriverDistractionState const SDLDriverDistractionStateOff;
+
diff --git a/SmartDeviceLink/SDLDriverDistractionState.m b/SmartDeviceLink/public/SDLDriverDistractionState.m
index 17290359a..17290359a 100644
--- a/SmartDeviceLink/SDLDriverDistractionState.m
+++ b/SmartDeviceLink/public/SDLDriverDistractionState.m
diff --git a/SmartDeviceLink/public/SDLDynamicUpdateCapabilities.h b/SmartDeviceLink/public/SDLDynamicUpdateCapabilities.h
new file mode 100644
index 000000000..35a7f4d0d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDynamicUpdateCapabilities.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+#import "SDLImageFieldName.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @since SDL 7.0
+ */
+@interface SDLDynamicUpdateCapabilities : SDLRPCStruct
+
+/**
+ * @param supportedDynamicImageFieldNames - supportedDynamicImageFieldNames
+ * @param supportsDynamicSubMenus - supportsDynamicSubMenus
+ * @return A SDLDynamicUpdateCapabilities object
+ */
+- (instancetype)initWithSupportedDynamicImageFieldNames:(nullable NSArray<SDLImageFieldName> *)supportedDynamicImageFieldNames supportsDynamicSubMenus:(nullable NSNumber<SDLBool> *)supportsDynamicSubMenus;
+
+/**
+ * An array of ImageFieldName values for which the system supports sending OnFileUpdate notifications. If you send an Image struct for that image field with a name without having uploaded the image data using PutFile that matches that name, the system will request that you upload the data with PutFile at a later point when the HMI needs it. The HMI will then display the image in the appropriate field. If not sent, assume false.
+ * {"array_min_size": 1, "array_max_size": null}
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLImageFieldName> *supportedDynamicImageFieldNames;
+
+/**
+ * If true, the head unit supports dynamic sub-menus by sending OnUpdateSubMenu notifications. If true, you should not send AddCommands that attach to a parentID for an AddSubMenu until OnUpdateSubMenu is received with the menuID. At that point, you should send all AddCommands with a parentID that match the menuID. If not set, assume false.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *supportsDynamicSubMenus;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLDynamicUpdateCapabilities.m b/SmartDeviceLink/public/SDLDynamicUpdateCapabilities.m
new file mode 100644
index 000000000..c24267fc5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDynamicUpdateCapabilities.m
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLDynamicUpdateCapabilities.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLImageFieldName.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLDynamicUpdateCapabilities
+
+- (instancetype)initWithSupportedDynamicImageFieldNames:(nullable NSArray<SDLImageFieldName> *)supportedDynamicImageFieldNames supportsDynamicSubMenus:(nullable NSNumber<SDLBool> *)supportsDynamicSubMenus {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.supportedDynamicImageFieldNames = supportedDynamicImageFieldNames;
+ self.supportsDynamicSubMenus = supportsDynamicSubMenus;
+ return self;
+}
+
+- (void)setSupportedDynamicImageFieldNames:(nullable NSArray<SDLImageFieldName> *)supportedDynamicImageFieldNames {
+ [self.store sdl_setObject:supportedDynamicImageFieldNames forName:SDLRPCParameterNameSupportedDynamicImageFieldNames];
+}
+
+- (nullable NSArray<SDLImageFieldName> *)supportedDynamicImageFieldNames {
+ return [self.store sdl_enumsForName:SDLRPCParameterNameSupportedDynamicImageFieldNames error:nil];
+}
+
+- (void)setSupportsDynamicSubMenus:(nullable NSNumber<SDLBool> *)supportsDynamicSubMenus {
+ [self.store sdl_setObject:supportsDynamicSubMenus forName:SDLRPCParameterNameSupportsDynamicSubMenus];
+}
+
+- (nullable NSNumber<SDLBool> *)supportsDynamicSubMenus {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSupportsDynamicSubMenus ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLECallConfirmationStatus.h b/SmartDeviceLink/public/SDLECallConfirmationStatus.h
new file mode 100644
index 000000000..eb22847cd
--- /dev/null
+++ b/SmartDeviceLink/public/SDLECallConfirmationStatus.h
@@ -0,0 +1,47 @@
+// SDLECallConfirmationStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Reflects the status of the eCall Notification. Used in ECallInfo
+
+ Since SmartDeviceLink 2.0
+ */
+typedef SDLEnum SDLECallConfirmationStatus NS_TYPED_ENUM;
+
+/**
+ No E-Call signal triggered.
+ */
+extern SDLECallConfirmationStatus const SDLECallConfirmationStatusNormal;
+
+/**
+ An E-Call is being in progress.
+ */
+extern SDLECallConfirmationStatus const SDLECallConfirmationStatusInProgress;
+
+/**
+ An E-Call was cancelled by the user.
+ */
+extern SDLECallConfirmationStatus const SDLECallConfirmationStatusCancelled;
+
+/**
+ The E-Call sequence is completed.
+ */
+extern SDLECallConfirmationStatus const SDLECallConfirmationStatusCompleted;
+
+/**
+ An E-Call could not be connected.
+ */
+extern SDLECallConfirmationStatus const SDLECallConfirmationStatusUnsuccessful;
+
+/**
+ E-Call is not configured on this vehicle.
+ */
+extern SDLECallConfirmationStatus const SDLECallConfirmationStatusConfiguredOff;
+
+/**
+ E-Call is considered to be complete without Emergency Operator contact.
+ */
+extern SDLECallConfirmationStatus const SDLECallConfirmationStatusCompleteDTMFTimeout;
diff --git a/SmartDeviceLink/SDLECallConfirmationStatus.m b/SmartDeviceLink/public/SDLECallConfirmationStatus.m
index a7ce2c856..a7ce2c856 100644
--- a/SmartDeviceLink/SDLECallConfirmationStatus.m
+++ b/SmartDeviceLink/public/SDLECallConfirmationStatus.m
diff --git a/SmartDeviceLink/SDLECallInfo.h b/SmartDeviceLink/public/SDLECallInfo.h
index 4d7ccc4ab..4d7ccc4ab 100644
--- a/SmartDeviceLink/SDLECallInfo.h
+++ b/SmartDeviceLink/public/SDLECallInfo.h
diff --git a/SmartDeviceLink/SDLECallInfo.m b/SmartDeviceLink/public/SDLECallInfo.m
index 61820ed2e..61820ed2e 100644
--- a/SmartDeviceLink/SDLECallInfo.m
+++ b/SmartDeviceLink/public/SDLECallInfo.m
diff --git a/SmartDeviceLink/public/SDLElectronicParkBrakeStatus.h b/SmartDeviceLink/public/SDLElectronicParkBrakeStatus.h
new file mode 100644
index 000000000..4a60943b4
--- /dev/null
+++ b/SmartDeviceLink/public/SDLElectronicParkBrakeStatus.h
@@ -0,0 +1,35 @@
+// SDLElectronicParkBrakeStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Reflects the status of the Electronic Parking Brake. A Vehicle Data Type.
+ */
+typedef SDLEnum SDLElectronicParkBrakeStatus NS_TYPED_ENUM;
+
+/**
+ Parking brake actuators have been fully applied.
+ */
+extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusClosed;
+
+/**
+ Parking brake actuators are transitioning to either Apply/Closed or Release/Open state.
+ */
+extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusTransition;
+
+/**
+ Parking brake actuators are released.
+ */
+extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusOpen;
+
+/**
+ When driver pulls the Electronic Parking Brake switch while driving "at speed".
+ */
+extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusDriveActive;
+
+/**
+ When system has a fault or is under maintenance.
+ */
+extern SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusFault;
diff --git a/SmartDeviceLink/public/SDLElectronicParkBrakeStatus.m b/SmartDeviceLink/public/SDLElectronicParkBrakeStatus.m
new file mode 100644
index 000000000..7f3ed9d0b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLElectronicParkBrakeStatus.m
@@ -0,0 +1,18 @@
+//
+// SDLElectronicParkBrakeStatus.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 7/16/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLElectronicParkBrakeStatus.h"
+
+typedef SDLEnum SDLElectronicParkBrakeStatus NS_TYPED_ENUM;
+
+
+SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusClosed = @"CLOSED";
+SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusTransition = @"TRANSITION";
+SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusOpen = @"OPEN";
+SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusDriveActive = @"DRIVE_ACTIVE";
+SDLElectronicParkBrakeStatus const SDLElectronicParkBrakeStatusFault = @"FAULT";
diff --git a/SmartDeviceLink/SDLEmergencyEvent.h b/SmartDeviceLink/public/SDLEmergencyEvent.h
index b4d8f4d31..b4d8f4d31 100644
--- a/SmartDeviceLink/SDLEmergencyEvent.h
+++ b/SmartDeviceLink/public/SDLEmergencyEvent.h
diff --git a/SmartDeviceLink/SDLEmergencyEvent.m b/SmartDeviceLink/public/SDLEmergencyEvent.m
index 0052ac078..0052ac078 100644
--- a/SmartDeviceLink/SDLEmergencyEvent.m
+++ b/SmartDeviceLink/public/SDLEmergencyEvent.m
diff --git a/SmartDeviceLink/public/SDLEmergencyEventType.h b/SmartDeviceLink/public/SDLEmergencyEventType.h
new file mode 100644
index 000000000..c549f9bf5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLEmergencyEventType.h
@@ -0,0 +1,47 @@
+// SDLEmergencyEventType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Reflects the emergency event status of the vehicle. Used in EmergencyEvent
+
+ Since SmartDeviceLink 2.0
+ */
+typedef SDLEnum SDLEmergencyEventType NS_TYPED_ENUM;
+
+/**
+ No emergency event has happened.
+ */
+extern SDLEmergencyEventType const SDLEmergencyEventTypeNoEvent;
+
+/**
+ Frontal collision has happened.
+ */
+extern SDLEmergencyEventType const SDLEmergencyEventTypeFrontal;
+
+/**
+ Side collision has happened.
+ */
+extern SDLEmergencyEventType const SDLEmergencyEventTypeSide;
+
+/**
+ Rear collision has happened.
+ */
+extern SDLEmergencyEventType const SDLEmergencyEventTypeRear;
+
+/**
+ A rollover event has happened.
+ */
+extern SDLEmergencyEventType const SDLEmergencyEventTypeRollover;
+
+/**
+ The signal is not supported
+ */
+extern SDLEmergencyEventType const SDLEmergencyEventTypeNotSupported;
+
+/**
+ Emergency status cannot be determined
+ */
+extern SDLEmergencyEventType const SDLEmergencyEventTypeFault;
diff --git a/SmartDeviceLink/SDLEmergencyEventType.m b/SmartDeviceLink/public/SDLEmergencyEventType.m
index 47d0fed4d..47d0fed4d 100644
--- a/SmartDeviceLink/SDLEmergencyEventType.m
+++ b/SmartDeviceLink/public/SDLEmergencyEventType.m
diff --git a/SmartDeviceLink/SDLEncodedSyncPData.h b/SmartDeviceLink/public/SDLEncodedSyncPData.h
index 8f81d002b..8f81d002b 100644
--- a/SmartDeviceLink/SDLEncodedSyncPData.h
+++ b/SmartDeviceLink/public/SDLEncodedSyncPData.h
diff --git a/SmartDeviceLink/SDLEncodedSyncPData.m b/SmartDeviceLink/public/SDLEncodedSyncPData.m
index 6db36b6fe..6db36b6fe 100644
--- a/SmartDeviceLink/SDLEncodedSyncPData.m
+++ b/SmartDeviceLink/public/SDLEncodedSyncPData.m
diff --git a/SmartDeviceLink/SDLEncodedSyncPDataResponse.h b/SmartDeviceLink/public/SDLEncodedSyncPDataResponse.h
index 5313bbb87..5313bbb87 100644
--- a/SmartDeviceLink/SDLEncodedSyncPDataResponse.h
+++ b/SmartDeviceLink/public/SDLEncodedSyncPDataResponse.h
diff --git a/SmartDeviceLink/SDLEncodedSyncPDataResponse.m b/SmartDeviceLink/public/SDLEncodedSyncPDataResponse.m
index 95c8cc628..95c8cc628 100644
--- a/SmartDeviceLink/SDLEncodedSyncPDataResponse.m
+++ b/SmartDeviceLink/public/SDLEncodedSyncPDataResponse.m
diff --git a/SmartDeviceLink/SDLEncryptionConfiguration.h b/SmartDeviceLink/public/SDLEncryptionConfiguration.h
index 591884460..591884460 100644
--- a/SmartDeviceLink/SDLEncryptionConfiguration.h
+++ b/SmartDeviceLink/public/SDLEncryptionConfiguration.h
diff --git a/SmartDeviceLink/SDLEncryptionConfiguration.m b/SmartDeviceLink/public/SDLEncryptionConfiguration.m
index dbb26b6d7..dbb26b6d7 100644
--- a/SmartDeviceLink/SDLEncryptionConfiguration.m
+++ b/SmartDeviceLink/public/SDLEncryptionConfiguration.m
diff --git a/SmartDeviceLink/SDLEndAudioPassThru.h b/SmartDeviceLink/public/SDLEndAudioPassThru.h
index f3c87e0f1..f3c87e0f1 100644
--- a/SmartDeviceLink/SDLEndAudioPassThru.h
+++ b/SmartDeviceLink/public/SDLEndAudioPassThru.h
diff --git a/SmartDeviceLink/SDLEndAudioPassThru.m b/SmartDeviceLink/public/SDLEndAudioPassThru.m
index 3bc00b4fb..3bc00b4fb 100644
--- a/SmartDeviceLink/SDLEndAudioPassThru.m
+++ b/SmartDeviceLink/public/SDLEndAudioPassThru.m
diff --git a/SmartDeviceLink/SDLEndAudioPassThruResponse.h b/SmartDeviceLink/public/SDLEndAudioPassThruResponse.h
index 996275051..996275051 100644
--- a/SmartDeviceLink/SDLEndAudioPassThruResponse.h
+++ b/SmartDeviceLink/public/SDLEndAudioPassThruResponse.h
diff --git a/SmartDeviceLink/SDLEndAudioPassThruResponse.m b/SmartDeviceLink/public/SDLEndAudioPassThruResponse.m
index e6a99a143..e6a99a143 100644
--- a/SmartDeviceLink/SDLEndAudioPassThruResponse.m
+++ b/SmartDeviceLink/public/SDLEndAudioPassThruResponse.m
diff --git a/SmartDeviceLink/public/SDLEnum.h b/SmartDeviceLink/public/SDLEnum.h
new file mode 100644
index 000000000..3984eb894
--- /dev/null
+++ b/SmartDeviceLink/public/SDLEnum.h
@@ -0,0 +1,25 @@
+// SDLEnum.h
+//
+
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// NSString SDLEnum typedef
+typedef NSString* SDLEnum NS_TYPED_ENUM;
+
+/// Extensions to NSString specifically for SDL string enums
+@interface NSString (SDLEnum)
+
+/**
+ * Returns whether or not two enums are equal.
+ *
+ * @param enumObj A SDLEnum object
+ * @return YES if the two enums are equal. NO if not.
+ */
+- (BOOL)isEqualToEnum:(SDLEnum)enumObj;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLEnum.m b/SmartDeviceLink/public/SDLEnum.m
index dae9c8f06..dae9c8f06 100644
--- a/SmartDeviceLink/SDLEnum.m
+++ b/SmartDeviceLink/public/SDLEnum.m
diff --git a/SmartDeviceLink/SDLEqualizerSettings.h b/SmartDeviceLink/public/SDLEqualizerSettings.h
index c42db47d2..c42db47d2 100644
--- a/SmartDeviceLink/SDLEqualizerSettings.h
+++ b/SmartDeviceLink/public/SDLEqualizerSettings.h
diff --git a/SmartDeviceLink/SDLEqualizerSettings.m b/SmartDeviceLink/public/SDLEqualizerSettings.m
index 7db9a3597..7db9a3597 100644
--- a/SmartDeviceLink/SDLEqualizerSettings.m
+++ b/SmartDeviceLink/public/SDLEqualizerSettings.m
diff --git a/SmartDeviceLink/public/SDLErrorConstants.h b/SmartDeviceLink/public/SDLErrorConstants.h
new file mode 100644
index 000000000..4a7cd747f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLErrorConstants.h
@@ -0,0 +1,243 @@
+//
+// SDLErrorConstants.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 8/8/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#pragma mark Error Domains
+
+typedef NSString SDLErrorDomain;
+extern SDLErrorDomain *const SDLErrorDomainAudioStreamManager;
+extern SDLErrorDomain *const SDLErrorDomainCacheFileManager;
+extern SDLErrorDomain *const SDLErrorDomainChoiceSetManager;
+extern SDLErrorDomain *const SDLErrorDomainEncryptionLifecycleManager;
+extern SDLErrorDomain *const SDLErrorDomainFileManager;
+extern SDLErrorDomain *const SDLErrorDomainLifecycleManager;
+extern SDLErrorDomain *const SDLErrorDomainMenuManager;
+extern SDLErrorDomain *const SDLErrorDomainRPCStore;
+extern SDLErrorDomain *const SDLErrorDomainSoftButtonManager;
+extern SDLErrorDomain *const SDLErrorDomainSubscribeButtonManager;
+extern SDLErrorDomain *const SDLErrorDomainSystemCapabilityManager;
+extern SDLErrorDomain *const SDLErrorDomainTextAndGraphicManager;
+extern SDLErrorDomain *const SDLErrorDomainTransport;
+
+
+#pragma mark Error Codes
+
+/**
+ * Errors associated with the SDLManager class.
+ */
+typedef NS_ENUM(NSInteger, SDLEncryptionLifecycleManagerError) {
+ /**
+ * Some action was attempted that requires a connection to the remote head unit.
+ */
+ SDLEncryptionLifecycleManagerErrorNotConnected = -1,
+ /**
+ * Received ACK with encryption bit set to false from the remote head unit
+ */
+ SDLEncryptionLifecycleManagerErrorEncryptionOff = -2,
+ /**
+ * Received NAK from the remote head unit.
+ */
+ SDLEncryptionLifecycleManagerErrorNAK = -3
+};
+
+/**
+ * Errors associated with the SDLManager class.
+ */
+typedef NS_ENUM(NSInteger, SDLManagerError) {
+ /**
+ * An RPC request failed to send.
+ */
+ SDLManagerErrorRPCRequestFailed = -1,
+ /**
+ * Some action was attempted that requires a connection to the remote head unit.
+ */
+ SDLManagerErrorNotConnected = -2,
+ /**
+ * Some action was attempted before the ready state was reached.
+ */
+ SDLManagerErrorNotReady = -3,
+ /**
+ * The remote system encountered an unknown error.
+ */
+ SDLManagerErrorUnknownRemoteError = -4,
+ /**
+ * One or more of the sub-managers failed to start.
+ */
+ SDLManagerErrorManagersFailedToStart = -5,
+ /**
+ * Registering with the remote system failed.
+ */
+ SDLManagerErrorRegistrationFailed = -6,
+ /**
+ * Registering with the remote system was successful, but had a warning.
+ */
+ SDLManagerErrorRegistrationSuccessWithWarning = -7,
+ /**
+ * Request operations were cancelled before they could be sent
+ */
+ SDLManagerErrorCancelled = -8
+};
+
+/**
+ * Errors associated with the SDLFileManager class.
+ */
+typedef NS_ENUM(NSInteger, SDLFileManagerError) {
+ /**
+ * A file attempted to send, but a file with that name already exists on the remote head unit, and the file was not configured to overwrite.
+ */
+ SDLFileManagerErrorCannotOverwrite = -1,
+ /**
+ * A file was attempted to be accessed but it does not exist.
+ */
+ SDLFileManagerErrorNoKnownFile = -2,
+ /**
+ * The file manager attempted to start but encountered an error.
+ */
+ SDLFileManagerErrorUnableToStart = -3,
+ /**
+ * The file manager was unable to send this file.
+ */
+ SDLFileManagerErrorUnableToUpload = -4,
+ /**
+ * The file manager could not find the local file.
+ */
+ SDLFileManagerErrorFileDoesNotExist = -5,
+ /**
+ * The file upload was canceled.
+ */
+ SDLFileManagerUploadCanceled = -6,
+ /**
+ * One or more of multiple files being uploaded or deleted failed.
+ */
+ SDLFileManagerMultipleFileUploadTasksFailed = -7,
+ /**
+ * One or more of multiple files being uploaded or deleted failed.
+ */
+ SDLFileManagerMultipleFileDeleteTasksFailed = -8,
+ /**
+ * The file data is nil or empty.
+ */
+ SDLFileManagerErrorFileDataMissing = -9,
+ /**
+ * The file is a static icon, which cannot be uploaded
+ */
+ SDLFileManagerErrorStaticIcon = -10,
+};
+
+/**
+ Errors associated with the ScreenManager class
+ */
+typedef NS_ENUM(NSInteger, SDLTextAndGraphicManagerError) {
+ /// A pending update was superseded by a newer requested update. The old update will not be sent
+ SDLTextAndGraphicManagerErrorPendingUpdateSuperseded = -1
+};
+
+/**
+ Errors associated with the Soft Button Manager class
+ */
+typedef NS_ENUM(NSInteger, SDLSoftButtonManagerError) {
+ /// A pending update was superseded by a newer requested update. The old update will not be sent
+ SDLSoftButtonManagerErrorPendingUpdateSuperseded = -1
+};
+
+/**
+ Errors associated with the Subscribe Button Manager class
+ */
+typedef NS_ENUM(NSInteger, SDLSubscribeButtonManagerError) {
+ /// Attempting to unsubscribe to a subscribe button that has not yet been subscribed to yet.
+ SDLSubscribeButtonManagerErrorNotSubscribed = -1
+};
+
+/**
+ Errors associated with the ScreenManager class
+ */
+typedef NS_ENUM(NSInteger, SDLMenuManagerError) {
+ /// Sending menu-related RPCs returned an error from the remote system
+ SDLMenuManagerErrorRPCsFailed = -1
+};
+
+/// Errors associated with Choice Set class
+typedef NS_ENUM(NSInteger, SDLChoiceSetManagerError) {
+ /// The choice set has been deleted before it was presented
+ SDLChoiceSetManagerErrorPendingPresentationDeleted = -1,
+
+ /// The choice set failed to delete
+ SDLChoiceSetManagerErrorDeletionFailed = -2,
+
+ /// The upload failed
+ SDLChoiceSetManagerErrorUploadFailed = -3,
+
+ /// The menu items failed to be created
+ SDLChoiceSetManagerErrorFailedToCreateMenuItems = -4,
+
+ /// Invalid state
+ SDLChoiceSetManagerErrorInvalidState = -5
+};
+
+/// Errors associated with the system capability manager
+typedef NS_ENUM(NSInteger, SDLSystemCapabilityManagerError) {
+ /// The connected head unit does not support any system capabilities
+ SDLSystemCapabilityManagerErrorModuleDoesNotSupportSystemCapabilities = -1,
+
+ /// You must be in an HMI Level other than NONE to request or subscribe to capabilites other than DISPLAYS
+ SDLSystemCapabilityManagerErrorHMINone = -2,
+
+ /// You may not update the system capability type DISPLAYS because it is always subscribed
+ SDLSystemCapabilityManagerErrorCannotUpdateTypeDisplays = -3
+};
+
+/**
+ * Errors associated with transport.
+ */
+typedef NS_ENUM(NSInteger, SDLTransportError) {
+ /**
+ * Connection cannot be established due to a reason not listed here.
+ */
+ SDLTransportErrorUnknown = -1,
+ /**
+ * TCP connection is refused.
+ * Probably specified port number is invalid, or SDL Core is not running on the head unit.
+ */
+ SDLTransportErrorConnectionRefused = -2,
+ /**
+ * TCP connection cannot be established within given time.
+ * Probably because of wrong IP address, or the connection may be blocked by a firewall.
+ */
+ SDLTransportErrorConnectionTimedOut = -3,
+ /**
+ * TCP connection cannot be established since network is down.
+ * Probably the phone is not connected to the correct network.
+ */
+ SDLTransportErrorNetworkDown = -4,
+};
+
+/**
+ * Errors associated with store.
+ */
+typedef NS_ENUM(NSInteger, SDLRPCStoreError) {
+ /**
+ * In dictionary stored value with unexpected type
+ */
+ SDLRPCStoreErrorGetInvalidObject = -1,
+};
+
+/// Errors related to the cache file manager
+typedef NS_ENUM(NSInteger, SDLCacheFileManagerError) {
+ /// Failed to update archive file
+ SDLCacheManagerErrorUpdateIconArchiveFileFailure = -1,
+};
+
+/// Errors related to the audio stream manager
+typedef NS_ENUM(NSInteger, SDLAudioStreamManagerError) {
+ /// The audio stream is not currently connected
+ SDLAudioStreamManagerErrorNotConnected = -1,
+
+ /// Attempted to play but there's no audio in the queue
+ SDLAudioStreamManagerErrorNoQueuedAudio = -2
+};
diff --git a/SmartDeviceLink/public/SDLErrorConstants.m b/SmartDeviceLink/public/SDLErrorConstants.m
new file mode 100644
index 000000000..75ae0a7a3
--- /dev/null
+++ b/SmartDeviceLink/public/SDLErrorConstants.m
@@ -0,0 +1,25 @@
+//
+// SDLErrorConstants.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 9/15/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLErrorConstants.h"
+
+#pragma mark Error Domains
+
+SDLErrorDomain *const SDLErrorDomainAudioStreamManager = @"com.sdl.extension.pcmAudioStreamManager";
+SDLErrorDomain *const SDLErrorDomainCacheFileManager = @"com.sdl.cachefilemanager.error";
+SDLErrorDomain *const SDLErrorDomainChoiceSetManager = @"com.sdl.choicesetmanager.error";
+SDLErrorDomain *const SDLErrorDomainEncryptionLifecycleManager = @"com.sdl.encryptionlifecyclemanager.error";
+SDLErrorDomain *const SDLErrorDomainFileManager = @"com.sdl.filemanager.error";
+SDLErrorDomain *const SDLErrorDomainLifecycleManager = @"com.sdl.lifecyclemanager.error";
+SDLErrorDomain *const SDLErrorDomainMenuManager = @"com.sdl.menumanager.error";
+SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error";
+SDLErrorDomain *const SDLErrorDomainSoftButtonManager = @"com.sdl.softbuttonmanager.error";
+SDLErrorDomain *const SDLErrorDomainSubscribeButtonManager = @"com.sdl.subscribebuttonmanager.error";
+SDLErrorDomain *const SDLErrorDomainSystemCapabilityManager = @"com.sdl.systemcapabilitymanager.error";
+SDLErrorDomain *const SDLErrorDomainTextAndGraphicManager = @"com.sdl.textandgraphicmanager.error";
+SDLErrorDomain *const SDLErrorDomainTransport = @"com.sdl.transport.error";
diff --git a/SmartDeviceLink/SDLFile.h b/SmartDeviceLink/public/SDLFile.h
index 4b2273dc9..4b2273dc9 100644
--- a/SmartDeviceLink/SDLFile.h
+++ b/SmartDeviceLink/public/SDLFile.h
diff --git a/SmartDeviceLink/SDLFile.m b/SmartDeviceLink/public/SDLFile.m
index 1efe7454b..1efe7454b 100644
--- a/SmartDeviceLink/SDLFile.m
+++ b/SmartDeviceLink/public/SDLFile.m
diff --git a/SmartDeviceLink/public/SDLFileManager.h b/SmartDeviceLink/public/SDLFileManager.h
new file mode 100644
index 000000000..24b589a2a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFileManager.h
@@ -0,0 +1,177 @@
+//
+// SDLFileManager.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/14/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLArtwork.h"
+#import "SDLFileManagerConstants.h"
+
+@class SDLFile;
+@class SDLFileManagerConfiguration;
+@protocol SDLConnectionManagerType;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// The handler that is called when the manager is set up or failed to set up with an error.
+/// This is for internal use only.
+///
+/// @param success True if every request succeeded, false if any failed.
+/// @param error The error that occurred during the request if any occurred.
+typedef void (^SDLFileManagerStartupCompletionHandler)(BOOL success, NSError *__nullable error);
+
+
+/**
+ * The SDLFileManager is an RPC manager for the remote file system. After it starts, it will attempt to communicate with the remote file system to get the names of all files. Deleting and Uploading will them queue these changes as transactions. If a delete succeeds, the local list of remote files will remove that file name, and likewise, if an upload succeeds, the local list of remote files will now include that file name.
+ */
+@interface SDLFileManager : NSObject
+
+/**
+ * A set of all names of files known on the remote head unit. Known files can be used or deleted on the remote system.
+ */
+@property (copy, nonatomic, readonly) NSSet<SDLFileName *> *remoteFileNames;
+
+/**
+ * The number of bytes still available for files for this app.
+ */
+@property (assign, nonatomic, readonly) NSUInteger bytesAvailable;
+
+/**
+ * The state of the file manager.
+ */
+@property (copy, nonatomic, readonly) NSString *currentState;
+
+/**
+ * The currently pending transactions (Upload, Delete, and List Files) in the file manager
+ */
+@property (copy, nonatomic, readonly) NSArray<__kindof NSOperation *> *pendingTransactions;
+
+/**
+ * Whether or not the file manager is suspended. If suspended, the file manager can continue to queue uploads and deletes, but will not actually perform any of those until it is no longer suspended. This can be used for throttling down the file manager if other, important operations are taking place over the accessory connection.
+ */
+@property (assign, nonatomic) BOOL suspended;
+
+/**
+ * Initialize the class...or not, since this method is unavailable. Dependencies must be injected using initWithConnectionManager:
+ *
+ * @return nil
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * Creates a new file manager with a specified connection manager and configuration
+ *
+ * @param manager A connection manager to use to forward on RPCs
+ * @param configuration A configuration for this file manager session
+ *
+ * @return An instance of SDLFileManager
+ */
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager configuration:(SDLFileManagerConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
+
+/**
+ * The manager stars up and attempts to fetch its initial list and transfer initial files.
+ *
+ * @param completionHandler The handler called when the manager is set up or failed to set up with an error. Use weak self when accessing self from the completion handler.
+ */
+- (void)startWithCompletionHandler:(nullable SDLFileManagerStartupCompletionHandler)completionHandler;
+
+/**
+ * Cancels all file manager operations and deletes all associated data.
+ */
+- (void)stop;
+
+/**
+ Check if the remote system contains a file
+
+ @param file The file to check
+ @return Whether or not the remote system has the file
+ */
+- (BOOL)hasUploadedFile:(SDLFile *)file;
+
+/**
+ * Delete a file stored on the remote system
+ *
+ * @param name The name of the remote file. It should be a name currently stored in remoteFileNames
+ * @param completion An optional completion handler that sends an error should one occur.
+ */
+- (void)deleteRemoteFileWithName:(SDLFileName *)name completionHandler:(nullable SDLFileManagerDeleteCompletionHandler)completion NS_SWIFT_NAME(delete(fileName:completionHandler:));
+
+/**
+ * Deletes an array of files on the remote file system. The files are deleted in the order in which they are added to the array, with the first file to be deleted at index 0. The delete queue is sequential, meaning that once a delete request is sent to Core, the queue waits until a response is received from Core before the next the next delete request is sent.
+ *
+ * @param names The names of the files to be deleted
+ * @param completionHandler an optional SDLFileManagerMultiDeleteCompletionHandler
+ */
+- (void)deleteRemoteFilesWithNames:(NSArray<SDLFileName *> *)names completionHandler:(nullable SDLFileManagerMultiDeleteCompletionHandler)completionHandler NS_SWIFT_NAME(delete(fileNames:completionHandler:));
+
+/**
+ * Upload a file to the remote file system. If a file with the [SDLFile name] already exists, this will overwrite that file. If you do not want that to happen, check remoteFileNames before uploading, or change allowOverwrite to NO.
+ *
+ * @param file An SDLFile that contains metadata about the file to be sent
+ * @param completion An optional completion handler that sends an error should one occur.
+ */
+- (void)uploadFile:(SDLFile *)file completionHandler:(nullable SDLFileManagerUploadCompletionHandler)completion NS_SWIFT_NAME(upload(file:completionHandler:));
+
+/**
+ * Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
+ *
+ * The optional progress handler can be used to keep track of the upload progress. After each file upload, the progress handler returns the upload percentage and an error, if one occured during the upload process. The progress handler also includes an option to cancel the upload of all remaining files in queue.
+ *
+ * @param files An array of SDLFiles to be sent
+ * @param progressHandler an optional SDLFileManagerMultiUploadProgressHandler
+ * @param completionHandler an optional SDLFileManagerMultiUploadCompletionHandler
+ */
+- (void)uploadFiles:(NSArray<SDLFile *> *)files progressHandler:(nullable SDLFileManagerMultiUploadProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler NS_SWIFT_NAME(upload(files:progressHandler:completionHandler:));
+
+/**
+ * Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
+ *
+ * @param files An array of SDLFiles to be sent
+ * @param completionHandler An optional SDLFileManagerMultiUploadCompletionHandler
+ */
+- (void)uploadFiles:(NSArray<SDLFile *> *)files completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler NS_SWIFT_NAME(upload(files:completionHandler:));
+
+/**
+ * Uploads an artwork file to the remote file system and returns the name of the uploaded artwork once completed. If an artwork with the same name is already on the remote system, the artwork is not uploaded and the artwork name is simply returned.
+ *
+ * @param artwork A SDLArwork containing an image to be sent
+ * @param completion An optional completion handler that returns the name of the uploaded artwork. It also returns an error if the upload fails.
+ */
+- (void)uploadArtwork:(SDLArtwork *)artwork completionHandler:(nullable SDLFileManagerUploadArtworkCompletionHandler)completion NS_SWIFT_NAME(upload(artwork:completionHandler:));
+
+/**
+ * Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
+ *
+ * @param artworks An array of SDLArtworks to be sent
+ * @param completion An optional SDLFileManagerMultiUploadArtworkCompletionHandler
+ */
+- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion NS_SWIFT_NAME(upload(artworks:completionHandler:));
+
+/**
+ * Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.
+ *
+ * The optional progress handler can be used to keep track of the upload progress. After each artwork upload, the progress handler returns the artwork name, the upload percentage and an error, if one occured during the upload process. The progress handler also includes an option to cancel the upload of all remaining files in queue.
+ *
+ * @param artworks An array of SDLArtworks to be sent
+ * @param progressHandler An optional SDLFileManagerMultiUploadArtworkProgressHandler
+ * @param completion An optional SDLFileManagerMultiUploadArtworkCompletionHandler
+ */
+- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks progressHandler:(nullable SDLFileManagerMultiUploadArtworkProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion NS_SWIFT_NAME(upload(artworks:progressHandler:completionHandler:));
+
+/**
+ * A URL to the directory where temporary files are stored. When an SDLFile is created with NSData, it writes to a temporary file until the file manager finishes uploading it.
+ *
+ * The SDL library manages the creation and deletion of these files and you should not have to touch this directory at all.
+ *
+ * @return An NSURL pointing to the location on disk where SDL's temporary files are stored.
+ */
++ (NSURL *)temporaryFileDirectory;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLFileManager.m b/SmartDeviceLink/public/SDLFileManager.m
new file mode 100644
index 000000000..2acafe62b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFileManager.m
@@ -0,0 +1,602 @@
+//
+// SDLFileManager.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/14/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLFileManager.h"
+
+#import "SDLConnectionManagerType.h"
+#import "SDLLogMacros.h"
+#import "SDLDeleteFileOperation.h"
+#import "SDLError.h"
+#import "SDLFile.h"
+#import "SDLFileManagerConfiguration.h"
+#import "SDLFileWrapper.h"
+#import "SDLGlobals.h"
+#import "SDLListFilesOperation.h"
+#import "SDLManager.h"
+#import "SDLNotificationConstants.h"
+#import "SDLPutFile.h"
+#import "SDLStateMachine.h"
+#import "SDLUploadFileOperation.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NSString SDLFileManagerState;
+SDLFileManagerState *const SDLFileManagerStateShutdown = @"Shutdown";
+SDLFileManagerState *const SDLFileManagerStateFetchingInitialList = @"FetchingInitialList";
+SDLFileManagerState *const SDLFileManagerStateReady = @"Ready";
+SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError";
+
+
+#pragma mark - SDLFileManager class
+
+@interface SDLFileManager ()
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+
+// Remote state
+@property (strong, nonatomic) NSMutableSet<SDLFileName *> *mutableRemoteFileNames;
+@property (assign, nonatomic, readwrite) NSUInteger bytesAvailable;
+
+// Local state
+@property (strong, nonatomic) NSOperationQueue *transactionQueue;
+@property (strong, nonatomic) NSMutableSet<SDLFileName *> *uploadedEphemeralFileNames;
+@property (strong, nonatomic) SDLStateMachine *stateMachine;
+@property (copy, nonatomic, nullable) SDLFileManagerStartupCompletionHandler startupCompletionHandler;
+
+@property (strong, nonatomic) NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *failedFileUploadsCount;
+@property (assign, nonatomic) NSUInteger maxFileUploadAttempts;
+@property (assign, nonatomic) NSUInteger maxArtworkUploadAttempts;
+
+@end
+
+#pragma mark Constants
+
+@implementation SDLFileManager
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager configuration:(SDLFileManagerConfiguration *)configuration {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _connectionManager = manager;
+ _bytesAvailable = 0;
+
+ _mutableRemoteFileNames = [NSMutableSet set];
+ _transactionQueue = [[NSOperationQueue alloc] init];
+ _transactionQueue.name = @"com.sdl.fileManager.transactionQueue";
+ _transactionQueue.underlyingQueue = [SDLGlobals sharedGlobals].sdlProcessingQueue;
+ _transactionQueue.maxConcurrentOperationCount = 1;
+ _uploadedEphemeralFileNames = [[NSMutableSet<SDLFileName *> alloc] init];
+
+ _stateMachine = [[SDLStateMachine alloc] initWithTarget:self initialState:SDLFileManagerStateShutdown states:[self.class sdl_stateTransitionDictionary]];
+
+ _failedFileUploadsCount = [NSMutableDictionary dictionary];
+ _maxFileUploadAttempts = configuration.fileRetryCount + 1;
+ _maxArtworkUploadAttempts = configuration.artworkRetryCount + 1;
+
+ return self;
+}
+
+#pragma mark - Setup / Shutdown
+
+- (void)startWithCompletionHandler:(nullable SDLFileManagerStartupCompletionHandler)handler {
+ if ([self.currentState isEqualToString:SDLFileManagerStateShutdown]) {
+ self.startupCompletionHandler = handler;
+ [self.stateMachine transitionToState:SDLFileManagerStateFetchingInitialList];
+ } else {
+ // If we already started, just tell the handler we're started.
+ handler(YES, nil);
+ }
+}
+
+- (void)stop {
+ [self.stateMachine transitionToState:SDLFileManagerStateShutdown];
+}
+
+- (void)dealloc {
+ if (self.currentState != SDLFileManagerStateShutdown) {
+ [self.stateMachine transitionToState:SDLFileManagerStateShutdown];
+ }
+}
+
+#pragma mark - Getters
+
+- (NSSet<SDLFileName *> *)remoteFileNames {
+ return [NSSet setWithSet:self.mutableRemoteFileNames];
+}
+
+- (NSString *)currentState {
+ return self.stateMachine.currentState;
+}
+
+- (NSArray<__kindof NSOperation *> *)pendingTransactions {
+ return self.transactionQueue.operations;
+}
+
+- (BOOL)suspended {
+ return self.transactionQueue.suspended;
+}
+
+
+#pragma mark Setters
+
+- (void)setSuspended:(BOOL)suspended {
+ self.transactionQueue.suspended = suspended;
+}
+
+
+#pragma mark - State
+
++ (NSDictionary<SDLState *, SDLAllowableStateTransitions *> *)sdl_stateTransitionDictionary {
+ return @{
+ SDLFileManagerStateShutdown: @[SDLFileManagerStateFetchingInitialList],
+ SDLFileManagerStateFetchingInitialList: @[SDLFileManagerStateShutdown, SDLFileManagerStateReady, SDLFileManagerStateStartupError],
+ SDLFileManagerStateReady: @[SDLFileManagerStateShutdown],
+ SDLFileManagerStateStartupError: @[SDLFileManagerStateShutdown]
+ };
+}
+
+- (void)didEnterStateStartupError {
+ if (self.startupCompletionHandler != nil) {
+ self.startupCompletionHandler(NO, [NSError sdl_fileManager_unableToStartError]);
+ self.startupCompletionHandler = nil;
+ }
+}
+
+- (void)didEnterStateShutdown {
+ [self.transactionQueue cancelAllOperations];
+ [self.mutableRemoteFileNames removeAllObjects];
+ [self.class sdl_clearTemporaryFileDirectory];
+ self.bytesAvailable = 0;
+
+ // Clear the failed uploads tracking so failed files can be uploaded again when a new connection has been established with Core
+ _failedFileUploadsCount = [NSMutableDictionary dictionary];
+
+ if (self.startupCompletionHandler != nil) {
+ self.startupCompletionHandler(NO, [NSError sdl_fileManager_unableToStartError]);
+ self.startupCompletionHandler = nil;
+ }
+}
+
+- (void)didEnterStateFetchingInitialList {
+ __weak typeof(self) weakSelf = self;
+ [self sdl_listRemoteFilesWithCompletionHandler:^(BOOL success, NSUInteger bytesAvailable, NSArray<NSString *> *_Nonnull fileNames, NSError *_Nullable error) {
+ // If we've already shut down by this point, just stay in the shutdown state
+ if ([weakSelf.stateMachine.currentState isEqualToString:SDLFileManagerStateShutdown]) {
+ BLOCK_RETURN;
+ }
+
+ // If there was an error, we'll pass the error to the startup handler and cancel out
+ if (error != nil) {
+ // HAX: In the case we are DISALLOWED we still want to transition to a ready state. Some head units return DISALLOWED for this RPC but otherwise work.
+ if([error.userInfo[@"resultCode"] isEqualToEnum:SDLResultDisallowed]) {
+ SDLLogW(@"ListFiles is disallowed. Certain file manager APIs may not work properly.");
+ [weakSelf.stateMachine transitionToState:SDLFileManagerStateReady];
+ BLOCK_RETURN;
+ }
+ [weakSelf.stateMachine transitionToState:SDLFileManagerStateStartupError];
+ BLOCK_RETURN;
+ }
+
+ // If no error, make sure we're in the ready state
+ [weakSelf.stateMachine transitionToState:SDLFileManagerStateReady];
+ }];
+}
+
+- (void)didEnterStateReady {
+ if (self.startupCompletionHandler != nil) {
+ self.startupCompletionHandler(YES, nil);
+ self.startupCompletionHandler = nil;
+ }
+}
+
+
+#pragma mark - Private Listing Remote Files
+
+- (void)sdl_listRemoteFilesWithCompletionHandler:(SDLFileManagerListFilesCompletionHandler)handler {
+ __weak typeof(self) weakSelf = self;
+ SDLListFilesOperation *listOperation = [[SDLListFilesOperation alloc] initWithConnectionManager:self.connectionManager completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSArray<NSString *> *_Nonnull fileNames, NSError *_Nullable error) {
+ if (error != nil || !success) {
+ handler(success, bytesAvailable, fileNames, error);
+ BLOCK_RETURN;
+ }
+
+ // If there was no error, set our properties and call back to the startup completion handler
+ [weakSelf.mutableRemoteFileNames addObjectsFromArray:fileNames];
+ weakSelf.bytesAvailable = bytesAvailable;
+
+ handler(success, bytesAvailable, fileNames, error);
+ }];
+
+ [self.transactionQueue addOperation:listOperation];
+}
+
+
+#pragma mark - Deleting
+
+- (void)deleteRemoteFileWithName:(SDLFileName *)name completionHandler:(nullable SDLFileManagerDeleteCompletionHandler)handler {
+ if ((![self.remoteFileNames containsObject:name]) && (handler != nil)) {
+ handler(NO, self.bytesAvailable, [NSError sdl_fileManager_noKnownFileError]);
+ return;
+ }
+
+ __weak typeof(self) weakSelf = self;
+ SDLDeleteFileOperation *deleteOperation = [[SDLDeleteFileOperation alloc] initWithFileName:name connectionManager:self.connectionManager completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError *_Nullable error) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+
+ // Mutate self based on the changes
+ if (success) {
+ strongSelf.bytesAvailable = bytesAvailable;
+ [strongSelf.mutableRemoteFileNames removeObject:name];
+ }
+
+ if (handler != nil) {
+ handler(success, bytesAvailable, error);
+ }
+ }];
+
+ [self.transactionQueue addOperation:deleteOperation];
+}
+
+- (void)deleteRemoteFilesWithNames:(NSArray<SDLFileName *> *)names completionHandler:(nullable SDLFileManagerMultiDeleteCompletionHandler)completionHandler {
+ if (names.count == 0) {
+ @throw [NSException sdl_missingFilesException];
+ }
+
+ NSMutableDictionary *failedDeletes = [[NSMutableDictionary alloc] init];
+
+ dispatch_group_t deleteFilesTask = dispatch_group_create();
+ dispatch_group_enter(deleteFilesTask);
+ for(NSString *name in names) {
+ dispatch_group_enter(deleteFilesTask);
+ [self deleteRemoteFileWithName:name completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) {
+ if(!success) {
+ failedDeletes[name] = error;
+ }
+ dispatch_group_leave(deleteFilesTask);
+ }];
+ }
+ dispatch_group_leave(deleteFilesTask);
+
+ // Wait for all files to be deleted
+ dispatch_group_notify(deleteFilesTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
+ if (completionHandler == nil) { return; }
+ if (failedDeletes.count > 0) {
+ return completionHandler([NSError sdl_fileManager_unableToDelete_ErrorWithUserInfo:failedDeletes]);
+ }
+ return completionHandler(nil);
+ });
+}
+
+#pragma mark - Uploading
+#pragma mark Files
+
+- (BOOL)hasUploadedFile:(SDLFile *)file {
+ // HAX: [#827](https://github.com/smartdevicelink/sdl_ios/issues/827) Older versions of Core had a bug where list files would cache incorrectly.
+ if (file.persistent && [self.remoteFileNames containsObject:file.name]) {
+ // If it's a persistant file, the bug won't present itself; just check if it's on the remote system
+ return true;
+ } else if (!file.persistent && [self.remoteFileNames containsObject:file.name] && [self.uploadedEphemeralFileNames containsObject:file.name]) {
+ // If it's an ephemeral file, the bug will present itself; check that it's a remote file AND that we've uploaded it this session
+ return true;
+ }
+
+ return false;
+}
+
+- (void)uploadFiles:(NSArray<SDLFile *> *)files completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler {
+ [self uploadFiles:files progressHandler:nil completionHandler:completionHandler];
+}
+
+- (void)uploadFiles:(NSArray<SDLFile *> *)files progressHandler:(nullable SDLFileManagerMultiUploadProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadCompletionHandler)completionHandler {
+ if (files.count == 0) {
+ @throw [NSException sdl_missingFilesException];
+ }
+
+ NSMutableDictionary *failedUploads = [[NSMutableDictionary alloc] init];
+ float totalBytesToUpload = (progressHandler == nil ? 0.0 : [self sdl_totalBytesToUpload:files]);
+ __block float totalBytesUploaded = 0.0;
+
+ dispatch_group_t uploadFilesTask = dispatch_group_create();
+ dispatch_group_enter(uploadFilesTask);
+
+ // Wait for all files to be uploaded
+ dispatch_group_notify(uploadFilesTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
+ if (completionHandler == nil) { return; }
+ if (failedUploads.count > 0) {
+ return completionHandler([NSError sdl_fileManager_unableToUpload_ErrorWithUserInfo:failedUploads]);
+ }
+ return completionHandler(nil);
+ });
+
+ for(NSUInteger i = 0; i < files.count; i++) {
+ SDLFile *file = files[i];
+ dispatch_group_enter(uploadFilesTask);
+ __weak typeof(self) weakself = self;
+ [self uploadFile:file completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) {
+ if(!success) {
+ failedUploads[file.name] = error;
+ }
+
+ // Send an update for each file sent to the remote
+ if (progressHandler != nil) {
+ totalBytesUploaded += file.fileSize;
+ float uploadPercentage = [weakself sdl_uploadPercentage:totalBytesToUpload uploadedBytes:totalBytesUploaded];
+ BOOL continueWithRemainingUploads = progressHandler(file.name, uploadPercentage, error);
+ if (!continueWithRemainingUploads) {
+ // Cancel any remaining files waiting to be uploaded
+ for(NSUInteger j = i + 1; j < files.count; j++) {
+ SDLFile *cancelFile = files[j];
+ for (SDLUploadFileOperation *op in weakself.transactionQueue.operations) {
+ if ([op.fileWrapper.file isEqual:cancelFile]) {
+ [op cancel];
+ break;
+ }
+ }
+ }
+
+ dispatch_group_leave(uploadFilesTask);
+ BLOCK_RETURN;
+ }
+ }
+ dispatch_group_leave(uploadFilesTask);
+ }];
+ }
+ dispatch_group_leave(uploadFilesTask);
+}
+
+- (void)uploadFile:(SDLFile *)file completionHandler:(nullable SDLFileManagerUploadCompletionHandler)handler {
+ if (file == nil || file.data.length == 0) {
+ if (handler != nil) {
+ handler(NO, self.bytesAvailable, [NSError sdl_fileManager_dataMissingError]);
+ }
+ return;
+ }
+
+ if (file.isStaticIcon) {
+ if (handler != nil) {
+ handler(NO, self.bytesAvailable, [NSError sdl_fileManager_staticIconError]);
+ }
+ return;
+ }
+
+ // Make sure we are able to send files
+ if (![self.currentState isEqualToString:SDLFileManagerStateReady]) {
+ if (handler != nil) {
+ handler(NO, self.bytesAvailable, [NSError sdl_fileManager_unableToUploadError]);
+ }
+ return;
+ }
+
+ // HAX: [#827](https://github.com/smartdevicelink/sdl_ios/issues/827) Older versions of Core had a bug where list files would cache incorrectly. This led to attempted uploads failing due to the system thinking they were already there when they were not.
+ if (!file.persistent && ![self hasUploadedFile:file]) {
+ file.overwrite = true;
+ }
+
+ // Check our overwrite settings and error out if it would overwrite
+ if (!file.overwrite && [self.remoteFileNames containsObject:file.name]) {
+ if (handler != nil) {
+ handler(NO, self.bytesAvailable, [NSError sdl_fileManager_cannotOverwriteError]);
+ }
+ return;
+ }
+
+ // If we didn't error out over the overwrite, then continue on
+ [self sdl_uploadFile:file completionHandler:handler];
+}
+
+- (void)sdl_uploadFile:(SDLFile *)file completionHandler:(nullable SDLFileManagerUploadCompletionHandler)handler {
+ __block NSString *fileName = file.name;
+ __block SDLFileManagerUploadCompletionHandler uploadCompletion = [handler copy];
+
+ __weak typeof(self) weakSelf = self;
+ SDLFileWrapper *fileWrapper = [SDLFileWrapper wrapperWithFile:file completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError *_Nullable error) {
+ if (success) {
+ weakSelf.bytesAvailable = bytesAvailable;
+ [weakSelf.mutableRemoteFileNames addObject:fileName];
+ [weakSelf.uploadedEphemeralFileNames addObject:fileName];
+ } else {
+ weakSelf.failedFileUploadsCount = [weakSelf.class sdl_incrementFailedUploadCountForFileName:file.name failedFileUploadsCount:weakSelf.failedFileUploadsCount];
+
+ NSUInteger maxUploadCount = [file isMemberOfClass:[SDLArtwork class]] ? weakSelf.maxArtworkUploadAttempts : self.maxFileUploadAttempts;
+ if ([weakSelf sdl_canFileBeUploadedAgain:file maxUploadCount:maxUploadCount failedFileUploadsCount:weakSelf.failedFileUploadsCount]) {
+ SDLLogD(@"Attempting to resend file with name %@ after a failed upload attempt", file.name);
+ return [weakSelf sdl_uploadFile:file completionHandler:handler];
+ }
+ }
+
+ if (uploadCompletion != nil) {
+ uploadCompletion(success, bytesAvailable, error);
+ }
+ }];
+
+ SDLUploadFileOperation *uploadOperation = [[SDLUploadFileOperation alloc] initWithFile:fileWrapper connectionManager:self.connectionManager];
+
+ [self.transactionQueue addOperation:uploadOperation];
+}
+
+#pragma mark Artworks
+
+- (void)uploadArtwork:(SDLArtwork *)artwork completionHandler:(nullable SDLFileManagerUploadArtworkCompletionHandler)completion {
+ __weak typeof(self) weakself = self;
+ [self uploadFile:artwork completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) {
+ if (completion == nil) { return; }
+ if ([weakself sdl_isErrorCannotOverwriteError:error]) {
+ // Artwork with same name already uploaded to remote
+ return completion(YES, artwork.name, bytesAvailable, nil);
+ }
+ completion(success, artwork.name, bytesAvailable, error);
+ }];
+}
+
+- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion {
+ [self uploadArtworks:artworks progressHandler:nil completionHandler:completion];
+}
+
+- (void)uploadArtworks:(NSArray<SDLArtwork *> *)artworks progressHandler:(nullable SDLFileManagerMultiUploadArtworkProgressHandler)progressHandler completionHandler:(nullable SDLFileManagerMultiUploadArtworkCompletionHandler)completion {
+ if (artworks.count == 0) {
+ @throw [NSException sdl_missingFilesException];
+ }
+
+ __weak typeof(self) weakself = self;
+ [self uploadFiles:artworks progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) {
+ if (progressHandler == nil) { return YES; }
+ if ([weakself sdl_isErrorCannotOverwriteError:error]) {
+ return progressHandler(fileName, uploadPercentage, nil);
+ }
+ return progressHandler(fileName, uploadPercentage, error);
+ } completionHandler:^(NSError * _Nullable error) {
+ if (completion == nil) { return; }
+
+ NSMutableSet<NSString *> *successfulArtworkUploadNames = [NSMutableSet set];
+ for (SDLArtwork *artwork in artworks) {
+ [successfulArtworkUploadNames addObject:artwork.name];
+ }
+ NSMutableDictionary *unsuccessfulArtworkUploadErrorUserInfo = [[NSMutableDictionary alloc] initWithDictionary:error.userInfo];
+
+ if (error != nil) {
+ for (NSString *erroredArtworkName in error.userInfo) {
+ if (![weakself sdl_isErrorCannotOverwriteError:error.userInfo[erroredArtworkName]]) {
+ [successfulArtworkUploadNames removeObject:erroredArtworkName];
+ } else {
+ // An overwrite error means that an artwork with the same name is already uploaded to the remote
+ [unsuccessfulArtworkUploadErrorUserInfo removeObjectForKey:erroredArtworkName];
+ }
+ }
+ }
+
+ return completion([NSArray arrayWithArray:[successfulArtworkUploadNames allObjects]], unsuccessfulArtworkUploadErrorUserInfo.count == 0 ? nil : [[NSError alloc] initWithDomain:error.domain code:error.code userInfo:unsuccessfulArtworkUploadErrorUserInfo]);
+ }];
+}
+
+#pragma mark Helpers
+
+/**
+ * Checks an error returned by Core to see if it is a "can not overwrite" error.
+ *
+ * @param error The error returned by SDL Core
+ * @return True if the error is an overwrite error; false if not
+ */
+- (BOOL)sdl_isErrorCannotOverwriteError:(NSError * _Nullable)error {
+ if (error != nil && error.domain == SDLErrorDomainFileManager && error.code == SDLFileManagerErrorCannotOverwrite) {
+ return YES;
+ }
+ return NO;
+}
+
+/**
+ * Computes the total amount of bytes to be uploaded to the remote. This total is computed by summing up the file size of all files to be uploaded to the remote
+ *
+ * @param files All the files being uploaded to the remote
+ * @return The total byte count
+ */
+- (float)sdl_totalBytesToUpload:(NSArray<SDLFile *> *)files {
+ float totalBytes = 0.0;
+ for(SDLFile *file in files) {
+ totalBytes += file.fileSize;
+ }
+
+ return totalBytes;
+}
+
+/**
+ * Computes the percentage of files uploaded to the remote. This percentage is a decimal number between 0.0 - 1.0. It is calculated by dividing the total number of bytes in files successfully or unsuccessfully uploaded by the total number of bytes in all files to be uploaded.
+ *
+ * @param totalBytes The total number of bytes in all files to be uploaded
+ * @param uploadedBytes The total number of bytes in files successfully or unsuccessfully uploaded
+ * @return The upload percentage
+ */
+- (float)sdl_uploadPercentage:(float)totalBytes uploadedBytes:(float)uploadedBytes {
+ if (totalBytes == 0 || uploadedBytes == 0) {
+ return 0.0;
+ }
+ return uploadedBytes / totalBytes;
+}
+
+#pragma mark Reuploads
+
+/**
+ * Checks if an artwork needs to be uploaded to Core. The arwork should not be sent to Core if the artwork is already on Core or if the artwork is not on Core after the maximum number of repeated upload attempts has been reached.
+ *
+ * @param file The file to be uploaded to Core
+ * @param maxUploadCount The max number of times the file is allowed to be uploaded to Core
+ * @return True if the file still needs to be (re)sent to Core; false if not.
+ */
+- (BOOL)sdl_canFileBeUploadedAgain:(nullable SDLFile *)file maxUploadCount:(NSUInteger)maxUploadCount failedFileUploadsCount:(NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *)failedFileUploadsCount {
+ if (![self.currentState isEqualToString:SDLFileManagerStateReady]) {
+ SDLLogW(@"File named %@ failed to upload. The file manager has shutdown so the file upload will not retry.", file.name);
+ return NO;
+ }
+
+ if (!file) {
+ SDLLogE(@"File can not be uploaded because it is not a valid file.");
+ return NO;
+ }
+
+ if ([self hasUploadedFile:file]) {
+ SDLLogD(@"File named %@ has already been uploaded.", file.name);
+ return NO;
+ }
+
+ NSNumber *failedUploadCount = failedFileUploadsCount[file.name];
+ BOOL canFileBeUploadedAgain = (failedUploadCount == nil) ? YES : (failedUploadCount.unsignedIntegerValue < maxUploadCount);
+ if (!canFileBeUploadedAgain) {
+ SDLLogE(@"File named %@ failed to upload. Max number of upload attempts reached.", file.name);
+ }
+
+ return canFileBeUploadedAgain;
+}
+
+/**
+ * Increments the number of upload attempts for a file name by 1.
+ *
+ * @param fileName The name used to upload the file to Core
+ */
++ (NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *)sdl_incrementFailedUploadCountForFileName:(SDLFileName *)fileName failedFileUploadsCount:(NSMutableDictionary<SDLFileName *, NSNumber<SDLUInt> *> *)failedFileUploadsCount {
+ NSNumber *currentFailedUploadCount = failedFileUploadsCount[fileName];
+ NSNumber *newFailedUploadCount = (currentFailedUploadCount != nil) ? @(currentFailedUploadCount.integerValue + 1) : @1;
+ failedFileUploadsCount[fileName] = newFailedUploadCount;
+ SDLLogW(@"File with name %@ failed to upload %@ times", fileName, newFailedUploadCount);
+ return failedFileUploadsCount;
+}
+
+#pragma mark - Temporary Files
+
++ (NSURL *)temporaryFileDirectory {
+ NSURL *directoryURL = [self.class sdl_temporaryFileDirectoryName];
+ if (![[NSFileManager defaultManager] fileExistsAtPath:[directoryURL path]]) {
+ [[NSFileManager defaultManager] createDirectoryAtURL:directoryURL withIntermediateDirectories:NO attributes:nil error:nil];
+ }
+
+ return directoryURL;
+}
+
++ (NSURL *)sdl_temporaryFileDirectoryName {
+ return [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"SDL"]];
+}
+
++ (void)sdl_clearTemporaryFileDirectory {
+ NSError *error = nil;
+ if (![[NSFileManager defaultManager] fileExistsAtPath:[self.class sdl_temporaryFileDirectoryName].absoluteString]) {
+ [[NSFileManager defaultManager] removeItemAtURL:[self.class sdl_temporaryFileDirectoryName] error:&error];
+ }
+
+ if (error != nil) {
+ SDLLogW(@"[Error clearing temporary file directory] %@", error);
+ }
+}
+
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLFileManagerConfiguration.h b/SmartDeviceLink/public/SDLFileManagerConfiguration.h
index 7bf61df9f..7bf61df9f 100644
--- a/SmartDeviceLink/SDLFileManagerConfiguration.h
+++ b/SmartDeviceLink/public/SDLFileManagerConfiguration.h
diff --git a/SmartDeviceLink/SDLFileManagerConfiguration.m b/SmartDeviceLink/public/SDLFileManagerConfiguration.m
index 781fdac1b..781fdac1b 100644
--- a/SmartDeviceLink/SDLFileManagerConfiguration.m
+++ b/SmartDeviceLink/public/SDLFileManagerConfiguration.m
diff --git a/SmartDeviceLink/SDLFileManagerConstants.h b/SmartDeviceLink/public/SDLFileManagerConstants.h
index d6733f89d..d6733f89d 100644
--- a/SmartDeviceLink/SDLFileManagerConstants.h
+++ b/SmartDeviceLink/public/SDLFileManagerConstants.h
diff --git a/SmartDeviceLink/public/SDLFileType.h b/SmartDeviceLink/public/SDLFileType.h
new file mode 100644
index 000000000..8dca7e87c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFileType.h
@@ -0,0 +1,52 @@
+// SDLFileType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration listing possible file types. Used in SDLFile, PutFile, ImageField, OnSystemRequest
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLFileType NS_TYPED_ENUM;
+
+/**
+ * file type: Bitmap (BMP)
+ */
+extern SDLFileType const SDLFileTypeBMP;
+
+/**
+ * file type: JPEG
+ */
+extern SDLFileType const SDLFileTypeJPEG;
+
+/**
+ * file type: PNG
+ */
+extern SDLFileType const SDLFileTypePNG;
+
+/**
+ * file type: WAVE (WAV)
+ */
+extern SDLFileType const SDLFileTypeWAV;
+
+/**
+ * file type: MP3
+ */
+extern SDLFileType const SDLFileTypeMP3;
+
+/**
+ * file type: AAC
+ */
+extern SDLFileType const SDLFileTypeAAC;
+
+/**
+ * file type: BINARY
+ */
+extern SDLFileType const SDLFileTypeBinary;
+
+/**
+ * file type: JSON
+ */
+extern SDLFileType const SDLFileTypeJSON;
diff --git a/SmartDeviceLink/SDLFileType.m b/SmartDeviceLink/public/SDLFileType.m
index b86dc3539..b86dc3539 100644
--- a/SmartDeviceLink/SDLFileType.m
+++ b/SmartDeviceLink/public/SDLFileType.m
diff --git a/SmartDeviceLink/public/SDLFuelCutoffStatus.h b/SmartDeviceLink/public/SDLFuelCutoffStatus.h
new file mode 100644
index 000000000..c700b5734
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFuelCutoffStatus.h
@@ -0,0 +1,27 @@
+// SDLFuelCutoffStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of the Restraints Control Module fuel pump cutoff. The fuel pump is cut off typically after the vehicle has had a collision. Used in EmergencyEvent.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLFuelCutoffStatus NS_TYPED_ENUM;
+
+/**
+ * Fuel is cut off
+ */
+extern SDLFuelCutoffStatus const SDLFuelCutoffStatusTerminateFuel;
+
+/**
+ * Fuel is not cut off
+ */
+extern SDLFuelCutoffStatus const SDLFuelCutoffStatusNormalOperation;
+
+/**
+ * Status of the fuel pump cannot be determined
+ */
+extern SDLFuelCutoffStatus const SDLFuelCutoffStatusFault;
diff --git a/SmartDeviceLink/SDLFuelCutoffStatus.m b/SmartDeviceLink/public/SDLFuelCutoffStatus.m
index 2ed2feb40..2ed2feb40 100644
--- a/SmartDeviceLink/SDLFuelCutoffStatus.m
+++ b/SmartDeviceLink/public/SDLFuelCutoffStatus.m
diff --git a/SmartDeviceLink/public/SDLFuelRange.h b/SmartDeviceLink/public/SDLFuelRange.h
new file mode 100644
index 000000000..981ecd94b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFuelRange.h
@@ -0,0 +1,72 @@
+//
+// SDLFuelRange.h
+// SmartDeviceLink
+//
+// Created by Nicole on 6/20/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLCapacityUnit.h"
+#import "SDLComponentVolumeStatus.h"
+#import "SDLRPCMessage.h"
+#import "SDLFuelType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Describes the distance a vehicle can travel with the current level of fuel.
+ */
+@interface SDLFuelRange : SDLRPCStruct
+
+/**
+ * @param type - type
+ * @param range - @(range)
+ * @param level - @(level)
+ * @param levelState - levelState
+ * @param capacity - @(capacity)
+ * @param capacityUnit - capacityUnit
+ * @return A SDLFuelRange object
+ */
+- (instancetype)initWithType:(nullable SDLFuelType)type range:(float)range level:(float)level levelState:(nullable SDLComponentVolumeStatus)levelState capacity:(float)capacity capacityUnit:(nullable SDLCapacityUnit)capacityUnit;
+
+/**
+ * The absolute capacity of this fuel type.
+ *
+ * Optional, Float, 0.0 - 1000000.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLFloat> *capacity;
+
+/**
+ * The unit of the capacity of this fuel type such as liters for gasoline or kWh for batteries.
+ */
+@property (strong, nonatomic, nullable) SDLCapacityUnit capacityUnit;
+
+/**
+ * The relative remaining capacity of this fuel type (percentage).
+ *
+ * Optional, Float, -6.0 - 1000000.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLFloat> *level;
+
+/**
+ * The fuel level state.
+ */
+@property (strong, nonatomic, nullable) SDLComponentVolumeStatus levelState;
+
+/**
+ * The vehicle's fuel type
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLFuelType type;
+
+/**
+ * The estimate range in KM the vehicle can travel based on fuel level and consumption.
+ *
+ * Optional, Float, 0 - 10,000
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *range;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLFuelRange.m b/SmartDeviceLink/public/SDLFuelRange.m
new file mode 100644
index 000000000..f8e54736d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFuelRange.m
@@ -0,0 +1,86 @@
+//
+// SDLFuelRange.m
+// SmartDeviceLink
+//
+// Created by Nicole on 6/20/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLFuelRange.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLFuelRange
+
+- (instancetype)initWithType:(nullable SDLFuelType)type range:(float)range level:(float)level levelState:(nullable SDLComponentVolumeStatus)levelState capacity:(float)capacity capacityUnit:(nullable SDLCapacityUnit)capacityUnit {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.type = type;
+ self.range = @(range);
+ self.level = @(level);
+ self.levelState = levelState;
+ self.capacity = @(capacity);
+ self.capacityUnit = capacityUnit;
+ return self;
+}
+
+- (void)setType:(nullable SDLFuelType)type {
+ [self.store sdl_setObject:type forName:SDLRPCParameterNameType];
+}
+
+- (nullable SDLFuelType)type {
+ return [self.store sdl_enumForName:SDLRPCParameterNameType error:nil];
+}
+
+- (void)setRange:(nullable NSNumber<SDLFloat> *)range {
+ [self.store sdl_setObject:range forName:SDLRPCParameterNameRange];
+}
+
+- (nullable NSNumber<SDLFloat> *)range {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRange ofClass:NSNumber.class error:nil];
+}
+
+- (void)setLevel:(nullable NSNumber<SDLFloat> *)level {
+ [self.store sdl_setObject:level forName:SDLRPCParameterNameLevel];
+}
+
+- (nullable NSNumber<SDLFloat> *)level {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameLevel ofClass:NSNumber.class error:&error];
+}
+
+- (void)setLevelState:(nullable SDLComponentVolumeStatus)levelState {
+ [self.store sdl_setObject:levelState forName:SDLRPCParameterNameLevelState];
+}
+
+- (nullable SDLComponentVolumeStatus)levelState {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameLevelState error:&error];
+}
+
+- (void)setCapacity:(nullable NSNumber<SDLFloat> *)capacity {
+ [self.store sdl_setObject:capacity forName:SDLRPCParameterNameCapacity];
+}
+
+- (nullable NSNumber<SDLFloat> *)capacity {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameCapacity ofClass:NSNumber.class error:&error];
+}
+
+- (void)setCapacityUnit:(nullable SDLCapacityUnit)capacityUnit {
+ [self.store sdl_setObject:capacityUnit forName:SDLRPCParameterNameCapacityUnit];
+}
+
+- (nullable SDLCapacityUnit)capacityUnit {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameCapacityUnit error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLFuelType.h b/SmartDeviceLink/public/SDLFuelType.h
new file mode 100644
index 000000000..646d17f04
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFuelType.h
@@ -0,0 +1,52 @@
+//
+// SDLFuelType.h
+// SmartDeviceLink
+//
+// Created by Nicole on 6/20/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration listing possible fuel types.
+ */
+typedef SDLEnum SDLFuelType NS_TYPED_ENUM;
+
+/**
+ * Fuel type: Gasoline
+ */
+extern SDLFuelType const SDLFuelTypeGasoline;
+
+/**
+ * Fuel type: Diesel
+ */
+extern SDLFuelType const SDLFuelTypeDiesel;
+
+/**
+ * Fuel type: CNG
+ *
+ * @discussion For vehicles using compressed natural gas
+ */
+extern SDLFuelType const SDLFuelTypeCNG;
+
+/**
+ * Fuel type: LPG
+ *
+ * @discussion For vehicles using liquefied petroleum gas
+ */
+extern SDLFuelType const SDLFuelTypeLPG;
+
+/**
+ * Fuel type: Hydrogen
+ *
+ * @discussion For FCEV (fuel cell electric vehicle)
+ */
+extern SDLFuelType const SDLFuelTypeHydrogen;
+
+/**
+ * Fuel type: Battery
+ *
+ * @discussion For BEV (Battery Electric Vehicle), PHEV (Plug-in Hybrid Electric Vehicle), solar vehicles and other vehicles which run on a battery.
+ */
+extern SDLFuelType const SDLFuelTypeBattery;
diff --git a/SmartDeviceLink/SDLFuelType.m b/SmartDeviceLink/public/SDLFuelType.m
index 32e2b9679..32e2b9679 100644
--- a/SmartDeviceLink/SDLFuelType.m
+++ b/SmartDeviceLink/public/SDLFuelType.m
diff --git a/SmartDeviceLink/SDLFunctionID.h b/SmartDeviceLink/public/SDLFunctionID.h
index 575d17643..575d17643 100644
--- a/SmartDeviceLink/SDLFunctionID.h
+++ b/SmartDeviceLink/public/SDLFunctionID.h
diff --git a/SmartDeviceLink/public/SDLFunctionID.m b/SmartDeviceLink/public/SDLFunctionID.m
new file mode 100644
index 000000000..aa649a40a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLFunctionID.m
@@ -0,0 +1,144 @@
+// SDLFunctionID.m
+//
+
+
+#import "SDLFunctionID.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLFunctionID ()
+
+@property (nonatomic, strong, nonnull) NSDictionary* functionIds;
+
+@end
+
+@implementation SDLFunctionID
+
++ (instancetype)sharedInstance {
+ static SDLFunctionID* functionId = nil;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ functionId = [[SDLFunctionID alloc] init];
+ });
+ return functionId;
+}
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ self.functionIds = @{
+ @0: SDLRPCFunctionNameReserved,
+ @1: SDLRPCFunctionNameRegisterAppInterface,
+ @2: SDLRPCFunctionNameUnregisterAppInterface,
+ @3: SDLRPCFunctionNameSetGlobalProperties,
+ @4: SDLRPCFunctionNameResetGlobalProperties,
+ @5: SDLRPCFunctionNameAddCommand,
+ @6: SDLRPCFunctionNameDeleteCommand,
+ @7: SDLRPCFunctionNameAddSubMenu,
+ @8: SDLRPCFunctionNameDeleteSubMenu,
+ @9: SDLRPCFunctionNameCreateInteractionChoiceSet,
+ @10: SDLRPCFunctionNamePerformInteraction,
+ @11: SDLRPCFunctionNameDeleteInteractionChoiceSet,
+ @12: SDLRPCFunctionNameAlert,
+ @13: SDLRPCFunctionNameShow,
+ @14: SDLRPCFunctionNameSpeak,
+ @15: SDLRPCFunctionNameSetMediaClockTimer,
+ @16: SDLRPCFunctionNamePerformAudioPassThru,
+ @17: SDLRPCFunctionNameEndAudioPassThru,
+ @18: SDLRPCFunctionNameSubscribeButton,
+ @19: SDLRPCFunctionNameUnsubscribeButton,
+ @20: SDLRPCFunctionNameSubscribeVehicleData,
+ @21: SDLRPCFunctionNameUnsubscribeVehicleData,
+ @22: SDLRPCFunctionNameGetVehicleData,
+ @23: SDLRPCFunctionNameReadDID,
+ @24: SDLRPCFunctionNameGetDTCs,
+ @25: SDLRPCFunctionNameScrollableMessage,
+ @26: SDLRPCFunctionNameSlider,
+ @27: SDLRPCFunctionNameShowConstantTBT,
+ @28: SDLRPCFunctionNameAlertManeuver,
+ @29: SDLRPCFunctionNameUpdateTurnList,
+ @30: SDLRPCFunctionNameChangeRegistration,
+ @31: SDLRPCFunctionNameGenericResponse,
+ @32: SDLRPCFunctionNamePutFile,
+ @33: SDLRPCFunctionNameDeleteFile,
+ @34: SDLRPCFunctionNameListFiles,
+ @35: SDLRPCFunctionNameSetAppIcon,
+ @36: SDLRPCFunctionNameSetDisplayLayout,
+ @37: SDLRPCFunctionNameDiagnosticMessage,
+ @38: SDLRPCFunctionNameSystemRequest,
+ @39: SDLRPCFunctionNameSendLocation,
+ @40: SDLRPCFunctionNameDialNumber,
+ @41: SDLRPCFunctionNameButtonPress,
+ @43: SDLRPCFunctionNameGetInteriorVehicleData,
+ @44: SDLRPCFunctionNameSetInteriorVehicleData,
+ @45: SDLRPCFunctionNameGetWayPoints,
+ @46: SDLRPCFunctionNameSubscribeWayPoints,
+ @47: SDLRPCFunctionNameUnsubscribeWayPoints,
+ @48: SDLRPCFunctionNameGetSystemCapability,
+ @49: SDLRPCFunctionNameSendHapticData,
+ @50: SDLRPCFunctionNameSetCloudAppProperties,
+ @51: SDLRPCFunctionNameGetCloudAppProperties,
+ @52: SDLRPCFunctionNamePublishAppService,
+ @53: SDLRPCFunctionNameGetAppServiceData,
+ @54: SDLRPCFunctionNameGetFile,
+ @55: SDLRPCFunctionNamePerformAppServiceInteraction,
+ @56: SDLRPCFunctionNameUnpublishAppService,
+ @57: SDLRPCFunctionNameCancelInteraction,
+ @58: SDLRPCFunctionNameCloseApplication,
+ @59: SDLRPCFunctionNameShowAppMenu,
+ @60: SDLRPCFunctionNameCreateWindow,
+ @61: SDLRPCFunctionNameDeleteWindow,
+ @62: SDLRPCFunctionNameGetInteriorVehicleDataConsent,
+ @63: SDLRPCFunctionNameReleaseInteriorVehicleDataModule,
+ @64: SDLRPCFunctionNameSubtleAlert,
+ @32768: SDLRPCFunctionNameOnHMIStatus,
+ @32769: SDLRPCFunctionNameOnAppInterfaceUnregistered,
+ @32770: SDLRPCFunctionNameOnButtonEvent,
+ @32771: SDLRPCFunctionNameOnButtonPress,
+ @32772: SDLRPCFunctionNameOnVehicleData,
+ @32773: SDLRPCFunctionNameOnCommand,
+ @32774: SDLRPCFunctionNameOnTBTClientState,
+ @32775: SDLRPCFunctionNameOnDriverDistraction,
+ @32776: SDLRPCFunctionNameOnPermissionsChange,
+ @32777: SDLRPCFunctionNameOnAudioPassThru,
+ @32778: SDLRPCFunctionNameOnLanguageChange,
+ @32779: SDLRPCFunctionNameOnKeyboardInput,
+ @32780: SDLRPCFunctionNameOnTouchEvent,
+ @32781: SDLRPCFunctionNameOnSystemRequest,
+ @32782: SDLRPCFunctionNameOnHashChange,
+ @32783: SDLRPCFunctionNameOnInteriorVehicleData,
+ @32784: SDLRPCFunctionNameOnWayPointChange,
+ @32785: SDLRPCFunctionNameOnRCStatus,
+ @32786: SDLRPCFunctionNameOnAppServiceData,
+ @32787: SDLRPCFunctionNameOnSystemCapabilityUpdated,
+ @32788: SDLRPCFunctionNameOnSubtleAlertPressed,
+ @32789: SDLRPCFunctionNameOnUpdateFile,
+ @32790: SDLRPCFunctionNameOnUpdateSubMenu,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ @65536: SDLRPCFunctionNameEncodedSyncPData,
+ @65537: SDLRPCFunctionNameSyncPData,
+ @98304: SDLRPCFunctionNameOnEncodedSyncPData,
+ @98305: SDLRPCFunctionNameOnSyncPData
+#pragma clang diagnostic pop
+ };
+ return self;
+}
+
+- (nullable SDLRPCFunctionName)functionNameForId:(UInt32)functionID {
+ return self.functionIds[@(functionID)];
+}
+
+- (nullable NSNumber<SDLInt> *)functionIdForName:(SDLRPCFunctionName)functionName {
+ return [[self.functionIds allKeysForObject:functionName] firstObject];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGPSData.h b/SmartDeviceLink/public/SDLGPSData.h
index 417a99ac3..417a99ac3 100644
--- a/SmartDeviceLink/SDLGPSData.h
+++ b/SmartDeviceLink/public/SDLGPSData.h
diff --git a/SmartDeviceLink/SDLGPSData.m b/SmartDeviceLink/public/SDLGPSData.m
index e70c6ff32..e70c6ff32 100644
--- a/SmartDeviceLink/SDLGPSData.m
+++ b/SmartDeviceLink/public/SDLGPSData.m
diff --git a/SmartDeviceLink/public/SDLGearStatus.h b/SmartDeviceLink/public/SDLGearStatus.h
new file mode 100644
index 000000000..d4f1500b7
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGearStatus.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLPRNDL.h"
+#import "SDLRPCStruct.h"
+#import "SDLTransmissionType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @since SDL 7.0.0
+ */
+@interface SDLGearStatus : SDLRPCStruct
+
+/**
+ * Convenience initializer to assign all object properties
+ *
+ * @param userSelectedGear - userSelectedGear
+ * @param actualGear - actualGear
+ * @param transmissionType - transmissionType
+ * @return A SDLGearStatus object
+ */
+- (instancetype)initWithUserSelectedGear:(nullable SDLPRNDL)userSelectedGear actualGear:(nullable SDLPRNDL)actualGear transmissionType:(nullable SDLTransmissionType)transmissionType;
+
+/**
+ * Gear position selected by the user i.e. Park, Drive, Reverse
+ */
+@property (strong, nonatomic, nullable) SDLPRNDL userSelectedGear;
+
+/**
+ * Actual Gear in use by the transmission
+ */
+@property (strong, nonatomic, nullable) SDLPRNDL actualGear;
+
+/**
+ * Tells the transmission type
+ */
+@property (strong, nonatomic, nullable) SDLTransmissionType transmissionType;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGearStatus.m b/SmartDeviceLink/public/SDLGearStatus.m
new file mode 100644
index 000000000..66128c752
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGearStatus.m
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLGearStatus.h"
+#import "NSMutableDictionary+Store.h"
+#import "SDLPRNDL.h"
+#import "SDLTransmissionType.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLGearStatus
+
+- (instancetype)initWithUserSelectedGear:(nullable SDLPRNDL)userSelectedGear actualGear:(nullable SDLPRNDL)actualGear transmissionType:(nullable SDLTransmissionType)transmissionType {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.userSelectedGear = userSelectedGear;
+ self.actualGear = actualGear;
+ self.transmissionType = transmissionType;
+ return self;
+}
+
+- (void)setUserSelectedGear:(nullable SDLPRNDL)userSelectedGear {
+ [self.store sdl_setObject:userSelectedGear forName:SDLRPCParameterNameUserSelectedGear];
+}
+
+- (nullable SDLPRNDL)userSelectedGear {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameUserSelectedGear error:&error];
+}
+
+- (void)setActualGear:(nullable SDLPRNDL)actualGear {
+ [self.store sdl_setObject:actualGear forName:SDLRPCParameterNameActualGear];
+}
+
+- (nullable SDLPRNDL)actualGear {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameActualGear error:&error];
+}
+
+- (void)setTransmissionType:(nullable SDLTransmissionType)transmissionType {
+ [self.store sdl_setObject:transmissionType forName:SDLRPCParameterNameTransmissionType];
+}
+
+- (nullable SDLTransmissionType)transmissionType {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameTransmissionType error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGenericResponse.h b/SmartDeviceLink/public/SDLGenericResponse.h
index 953d24943..953d24943 100644
--- a/SmartDeviceLink/SDLGenericResponse.h
+++ b/SmartDeviceLink/public/SDLGenericResponse.h
diff --git a/SmartDeviceLink/SDLGenericResponse.m b/SmartDeviceLink/public/SDLGenericResponse.m
index 59cca10f2..59cca10f2 100644
--- a/SmartDeviceLink/SDLGenericResponse.m
+++ b/SmartDeviceLink/public/SDLGenericResponse.m
diff --git a/SmartDeviceLink/SDLGetAppServiceData.h b/SmartDeviceLink/public/SDLGetAppServiceData.h
index e1882a350..e1882a350 100644
--- a/SmartDeviceLink/SDLGetAppServiceData.h
+++ b/SmartDeviceLink/public/SDLGetAppServiceData.h
diff --git a/SmartDeviceLink/SDLGetAppServiceData.m b/SmartDeviceLink/public/SDLGetAppServiceData.m
index 55efbbdd9..55efbbdd9 100644
--- a/SmartDeviceLink/SDLGetAppServiceData.m
+++ b/SmartDeviceLink/public/SDLGetAppServiceData.m
diff --git a/SmartDeviceLink/SDLGetAppServiceDataResponse.h b/SmartDeviceLink/public/SDLGetAppServiceDataResponse.h
index 30b2c6cc8..30b2c6cc8 100644
--- a/SmartDeviceLink/SDLGetAppServiceDataResponse.h
+++ b/SmartDeviceLink/public/SDLGetAppServiceDataResponse.h
diff --git a/SmartDeviceLink/SDLGetAppServiceDataResponse.m b/SmartDeviceLink/public/SDLGetAppServiceDataResponse.m
index 110d6732a..110d6732a 100644
--- a/SmartDeviceLink/SDLGetAppServiceDataResponse.m
+++ b/SmartDeviceLink/public/SDLGetAppServiceDataResponse.m
diff --git a/SmartDeviceLink/SDLGetCloudAppProperties.h b/SmartDeviceLink/public/SDLGetCloudAppProperties.h
index 9103b3a91..9103b3a91 100644
--- a/SmartDeviceLink/SDLGetCloudAppProperties.h
+++ b/SmartDeviceLink/public/SDLGetCloudAppProperties.h
diff --git a/SmartDeviceLink/SDLGetCloudAppProperties.m b/SmartDeviceLink/public/SDLGetCloudAppProperties.m
index 030c2bdd8..030c2bdd8 100644
--- a/SmartDeviceLink/SDLGetCloudAppProperties.m
+++ b/SmartDeviceLink/public/SDLGetCloudAppProperties.m
diff --git a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h b/SmartDeviceLink/public/SDLGetCloudAppPropertiesResponse.h
index 356bd32e0..356bd32e0 100644
--- a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.h
+++ b/SmartDeviceLink/public/SDLGetCloudAppPropertiesResponse.h
diff --git a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m b/SmartDeviceLink/public/SDLGetCloudAppPropertiesResponse.m
index 6114c4636..6114c4636 100644
--- a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m
+++ b/SmartDeviceLink/public/SDLGetCloudAppPropertiesResponse.m
diff --git a/SmartDeviceLink/SDLGetDTCs.h b/SmartDeviceLink/public/SDLGetDTCs.h
index 2ba8339d5..2ba8339d5 100644
--- a/SmartDeviceLink/SDLGetDTCs.h
+++ b/SmartDeviceLink/public/SDLGetDTCs.h
diff --git a/SmartDeviceLink/SDLGetDTCs.m b/SmartDeviceLink/public/SDLGetDTCs.m
index 95fcff1b8..95fcff1b8 100644
--- a/SmartDeviceLink/SDLGetDTCs.m
+++ b/SmartDeviceLink/public/SDLGetDTCs.m
diff --git a/SmartDeviceLink/SDLGetDTCsResponse.h b/SmartDeviceLink/public/SDLGetDTCsResponse.h
index fd05f4196..fd05f4196 100644
--- a/SmartDeviceLink/SDLGetDTCsResponse.h
+++ b/SmartDeviceLink/public/SDLGetDTCsResponse.h
diff --git a/SmartDeviceLink/SDLGetDTCsResponse.m b/SmartDeviceLink/public/SDLGetDTCsResponse.m
index 3d141c96a..3d141c96a 100644
--- a/SmartDeviceLink/SDLGetDTCsResponse.m
+++ b/SmartDeviceLink/public/SDLGetDTCsResponse.m
diff --git a/SmartDeviceLink/SDLGetFile.h b/SmartDeviceLink/public/SDLGetFile.h
index bdc7936d9..bdc7936d9 100644
--- a/SmartDeviceLink/SDLGetFile.h
+++ b/SmartDeviceLink/public/SDLGetFile.h
diff --git a/SmartDeviceLink/public/SDLGetFile.m b/SmartDeviceLink/public/SDLGetFile.m
new file mode 100644
index 000000000..b39dce9ac
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGetFile.m
@@ -0,0 +1,107 @@
+//
+// SDLGetFile.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/7/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLGetFile.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLGetFile
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameGetFile]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithFileName:(NSString *)fileName {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.fileName = fileName;
+
+ return self;
+}
+
+- (instancetype)initWithFileName:(NSString *)fileName appServiceId:(nullable NSString *)appServiceId fileType:(nullable SDLFileType)fileType {
+ self = [self initWithFileName:fileName];
+ if (!self) {
+ return nil;
+ }
+
+ self.appServiceId = appServiceId;
+ self.fileType = fileType;
+
+ return self;
+}
+
+- (instancetype)initWithFileName:(NSString *)fileName appServiceId:(nullable NSString *)appServiceId fileType:(nullable SDLFileType)fileType offset:(UInt32)offset length:(UInt32)length {
+ self = [self initWithFileName:fileName appServiceId:appServiceId fileType:fileType];
+ if (!self) {
+ return nil;
+ }
+
+ self.offset = @(offset);
+ self.length = @(length);
+
+ return self;
+}
+
+- (void)setFileName:(NSString *)fileName {
+ [self.parameters sdl_setObject:fileName forName:SDLRPCParameterNameFileName];
+}
+
+- (NSString *)fileName {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFileName ofClass:NSString.class error:&error];
+}
+
+- (void)setAppServiceId:(nullable NSString *)appServiceId {
+ [self.parameters sdl_setObject:appServiceId forName:SDLRPCParameterNameAppServiceId];
+}
+
+- (nullable NSString *)appServiceId {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAppServiceId ofClass:NSString.class error:nil];
+}
+
+- (void)setFileType:(nullable SDLFileType)fileType {
+ [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType];
+}
+
+- (nullable SDLFileType)fileType {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil];
+}
+
+- (void)setOffset:(nullable NSNumber<SDLUInt> *)offset {
+ [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset];
+}
+
+- (nullable NSNumber<SDLUInt> *)offset {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil];
+}
+
+- (void)setLength:(nullable NSNumber<SDLUInt> *)length {
+ [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength];
+}
+
+- (nullable NSNumber<SDLUInt> *)length {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetFileResponse.h b/SmartDeviceLink/public/SDLGetFileResponse.h
index 52a2fb5f4..52a2fb5f4 100644
--- a/SmartDeviceLink/SDLGetFileResponse.h
+++ b/SmartDeviceLink/public/SDLGetFileResponse.h
diff --git a/SmartDeviceLink/SDLGetFileResponse.m b/SmartDeviceLink/public/SDLGetFileResponse.m
index 57a2b3f7f..57a2b3f7f 100644
--- a/SmartDeviceLink/SDLGetFileResponse.m
+++ b/SmartDeviceLink/public/SDLGetFileResponse.m
diff --git a/SmartDeviceLink/public/SDLGetInteriorVehicleData.h b/SmartDeviceLink/public/SDLGetInteriorVehicleData.h
new file mode 100644
index 000000000..2f0e08783
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleData.h
@@ -0,0 +1,66 @@
+//
+// SDLGetInteriorVehicleData.h
+//
+
+#import "SDLRPCRequest.h"
+#import "SDLModuleType.h"
+#import "SDLModuleInfo.h"
+
+/**
+ * Reads the current status value of specified remote control module (type).
+ * When subscribe is true, subscribes for specific remote control module data items.
+ * When subscribe is false, unsubscribes for specific remote control module data items.
+ * Once subscribed, the application will be notified by the onInteriorVehicleData RPC notification
+ * whenever new data is available for the module.
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLGetInteriorVehicleData : SDLRPCRequest
+
+/// Convenience init to get information of a particular module type with a module ID.
+///
+/// @param moduleType The type of a RC module to retrieve module data from the vehicle
+/// @param moduleId Id of a module, published by System Capability
+/// @return An SDLGetInteriorVehicleData object
+- (instancetype)initWithModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId;
+
+/// Convenience init to get information and subscribe to a particular module type with a module ID.
+///
+/// @param moduleType The type of a RC module to retrieve module data from the vehicle
+/// @param moduleId Id of a module, published by System Capability
+/// @return An SDLGetInteriorVehicleData object
+- (instancetype)initAndSubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId;
+
+/// Convenience init to unsubscribe from particular module with a module ID.
+///
+/// @param moduleType The type of a RC module to retrieve module data from the vehicle
+/// @param moduleId Id of a module, published by System Capability
+/// @return An SDLGetInteriorVehicleData object
+- (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId;
+
+/**
+ * The type of a RC module to retrieve module data from the vehicle.
+ *
+ */
+@property (strong, nonatomic) SDLModuleType moduleType;
+
+/**
+ * Id of a module, published by System Capability.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSString *moduleId;
+
+/**
+ * If subscribe is true, the head unit will register OnInteriorVehicleData notifications for the requested module (moduleId and moduleType).
+ * If subscribe is false, the head unit will unregister OnInteriorVehicleData notifications for the requested module (moduleId and moduleType).
+ * If subscribe is not included, the subscription status of the app for the requested module (moduleId and moduleType) will remain unchanged.
+ *
+ * optional, Boolean, default Value = false
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *subscribe;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGetInteriorVehicleData.m b/SmartDeviceLink/public/SDLGetInteriorVehicleData.m
new file mode 100755
index 000000000..520622164
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleData.m
@@ -0,0 +1,89 @@
+//
+// SDLGetInteriorVehicleData.m
+//
+
+#import "SDLGetInteriorVehicleData.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLGetInteriorVehicleData
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameGetInteriorVehicleData]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.moduleType = moduleType;
+ self.moduleId = moduleId;
+
+ return self;
+}
+
+- (instancetype)initAndSubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.moduleType = moduleType;
+ self.moduleId = moduleId;
+ self.subscribe = @(YES);
+
+ return self;
+}
+
+- (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType moduleId:(NSString *)moduleId {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.moduleType = moduleType;
+ self.moduleId = moduleId;
+ self.subscribe = @(NO);
+
+ return self;
+}
+
+- (void)setModuleType:(SDLModuleType)moduleType {
+ [self.parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType];
+}
+
+- (SDLModuleType)moduleType {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error];
+}
+
+- (void)setSubscribe:(nullable NSNumber<SDLBool> *)subscribe {
+ [self.parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe];
+}
+
+- (nullable NSNumber<SDLBool> *)subscribe {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil];
+}
+
+- (void)setModuleId:(nullable NSString *)moduleId {
+ [self.parameters sdl_setObject:moduleId forName:SDLRPCParameterNameModuleId];
+}
+
+- (nullable NSString *)moduleId {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleId ofClass:NSString.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataConsent.h b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsent.h
index b3ab2342a..b3ab2342a 100644
--- a/SmartDeviceLink/SDLGetInteriorVehicleDataConsent.h
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsent.h
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataConsent.m b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsent.m
index 88ed0d8e9..88ed0d8e9 100644
--- a/SmartDeviceLink/SDLGetInteriorVehicleDataConsent.m
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsent.m
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsentResponse.h
index cbe315df2..cbe315df2 100644
--- a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsentResponse.h
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsentResponse.m
index 369b63645..369b63645 100644
--- a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleDataConsentResponse.m
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h b/SmartDeviceLink/public/SDLGetInteriorVehicleDataResponse.h
index 5ab234ed0..5ab234ed0 100644
--- a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleDataResponse.h
diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m b/SmartDeviceLink/public/SDLGetInteriorVehicleDataResponse.m
index c729e66ee..c729e66ee 100644
--- a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m
+++ b/SmartDeviceLink/public/SDLGetInteriorVehicleDataResponse.m
diff --git a/SmartDeviceLink/SDLGetSystemCapability.h b/SmartDeviceLink/public/SDLGetSystemCapability.h
index 004074ea5..004074ea5 100644
--- a/SmartDeviceLink/SDLGetSystemCapability.h
+++ b/SmartDeviceLink/public/SDLGetSystemCapability.h
diff --git a/SmartDeviceLink/SDLGetSystemCapability.m b/SmartDeviceLink/public/SDLGetSystemCapability.m
index 0e966de18..0e966de18 100644
--- a/SmartDeviceLink/SDLGetSystemCapability.m
+++ b/SmartDeviceLink/public/SDLGetSystemCapability.m
diff --git a/SmartDeviceLink/SDLGetSystemCapabilityResponse.h b/SmartDeviceLink/public/SDLGetSystemCapabilityResponse.h
index 215a4c409..215a4c409 100644
--- a/SmartDeviceLink/SDLGetSystemCapabilityResponse.h
+++ b/SmartDeviceLink/public/SDLGetSystemCapabilityResponse.h
diff --git a/SmartDeviceLink/SDLGetSystemCapabilityResponse.m b/SmartDeviceLink/public/SDLGetSystemCapabilityResponse.m
index 730f74c71..730f74c71 100644
--- a/SmartDeviceLink/SDLGetSystemCapabilityResponse.m
+++ b/SmartDeviceLink/public/SDLGetSystemCapabilityResponse.m
diff --git a/SmartDeviceLink/public/SDLGetVehicleData.h b/SmartDeviceLink/public/SDLGetVehicleData.h
new file mode 100644
index 000000000..e8c30889c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGetVehicleData.h
@@ -0,0 +1,294 @@
+// SDLGetVehicleData.h
+//
+
+
+#import "SDLRPCRequest.h"
+
+/**
+ * Requests current values of specific published vehicle data items.
+ *
+ * Function Group: Location, VehicleInfo and DrivingChara
+ * HMILevel needs to be FULL, LIMITED or BACKGROUND
+ * Since SmartDeviceLink 2.0
+ * See SDLSubscribeVehicleData, SDLUnsubscribeVehicleData
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLGetVehicleData : SDLRPCRequest
+
+/**
+ * Convenience init for getting data for all possible vehicle data items.
+ *
+ * @param accelerationPedalPosition Get accelerationPedalPosition data
+ * @param airbagStatus Get airbagStatus data
+ * @param beltStatus Get beltStatus data
+ * @param bodyInformation Get bodyInformation data
+ * @param cloudAppVehicleID Get cloudAppVehicleID data
+ * @param clusterModeStatus Get clusterModeStatus data
+ * @param deviceStatus Get deviceStatus data
+ * @param driverBraking Get driverBraking data
+ * @param eCallInfo Get eCallInfo data
+ * @param electronicParkBrakeStatus Get electronicParkBrakeStatus data
+ * @param emergencyEvent Get emergencyEvent data
+ * @param engineOilLife Get engineOilLife data
+ * @param engineTorque Get engineTorque data
+ * @param externalTemperature Get externalTemperature data
+ * @param fuelLevel Get fuelLevel data
+ * @param fuelLevelState Get fuelLevelState data
+ * @param fuelRange Get fuelRange data
+ * @param gps Get gps data
+ * @param headLampStatus Get headLampStatus data
+ * @param instantFuelConsumption Get instantFuelConsumption data
+ * @param myKey Get myKey data
+ * @param odometer Get odometer data
+ * @param prndl Get prndl data
+ * @param rpm Get rpm data
+ * @param speed Get speed data
+ * @param steeringWheelAngle Get steeringWheelAngle data
+ * @param tirePressure Get tirePressure data
+ * @param turnSignal Get turnSignal data
+ * @param vin Get vin data
+ * @param wiperStatus Get wiperStatus data
+ * @return A SDLGetVehicleData object
+ */
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus: instead");
+
+/**
+ * Convenience init for getting data for all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param externalTemperature - externalTemperature
+ * @param turnSignal - turnSignal
+ * @param vin - vin
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @return A SDLGetVehicleData object
+ */
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal vin:(nullable NSNumber<SDLBool> *)vin gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus;
+
+/**
+ * See GearStatus
+ *
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *gearStatus;
+
+/**
+ * A boolean value. If true, requests GPS data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *gps;
+
+/**
+ * A boolean value. If true, requests Speed data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *speed;
+
+/**
+ * A boolean value. If true, requests RPM data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rpm;
+
+/**
+ * A boolean value. If true, requests Fuel Level data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ * A boolean value. If true, requests Fuel Level State data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel_State __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ * A boolean value. If true, requests Fuel Range data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *fuelRange;
+
+/**
+ * A boolean value. If true, requests Instant Fuel Consumption data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *instantFuelConsumption;
+
+/**
+ * A boolean value. If true, requests External Temperature data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *externalTemperature;
+
+/**
+ * A boolean value. If true, requests the Vehicle Identification Number.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *vin;
+
+/**
+ * See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
+ *
+ * @deprecated
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *prndl __deprecated_msg("use gearStatus instead on 7.0+ RPC version connections");
+
+/**
+ * A boolean value. If true, requests Tire Pressure data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *tirePressure;
+
+/**
+ * A boolean value. If true, requests Odometer data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *odometer;
+
+/**
+ * A boolean value. If true, requests Belt Status data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *beltStatus;
+
+/**
+ * A boolean value. If true, requests Body Information data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *bodyInformation;
+
+/**
+ * A boolean value. If true, requests Device Status data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *deviceStatus;
+
+/**
+ * A boolean value. If true, requests Driver Braking data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *driverBraking;
+
+/**
+ * See WindowStatus
+ *
+ * @since SDL 7.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *windowStatus;
+
+/**
+ * A boolean value. If true, requests Wiper Status data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *wiperStatus;
+
+/**
+ * To indicate whether driver hands are off the steering wheel
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *handsOffSteering;
+
+/**
+ * A boolean value. If true, requests Head Lamp Status data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *headLampStatus;
+
+/**
+ * A boolean value. If true, requests Engine Oil Life data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineOilLife;
+
+/**
+ * A boolean value. If true, requests Engine Torque data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *engineTorque;
+
+/**
+ * A boolean value. If true, requests Acc Pedal Position data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *accPedalPosition;
+
+/**
+ * A boolean value. If true, requests Steering Wheel Angle data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *steeringWheelAngle;
+
+/**
+ * A boolean value. If true, requests Emergency Call Info data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *eCallInfo;
+
+/**
+ * A boolean value. If true, requests Air Bag Status data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *airbagStatus;
+
+/**
+ * A boolean value. If true, requests Emergency Event (if it occurred) data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *emergencyEvent;
+
+/**
+ * A boolean value. If true, requests Cluster Mode Status data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *clusterModeStatus;
+
+/**
+ * A boolean value. If true, requests MyKey data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *myKey;
+
+/**
+ A boolean value. If true, requests Electronic Parking Brake status data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *electronicParkBrakeStatus;
+
+/**
+ A boolean value. If true, requests Turn Signal data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *turnSignal;
+
+/**
+ A boolean value. If true, requests the Cloud App Vehicle ID.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *cloudAppVehicleID;
+
+/**
+ A boolean value. If true, requests StabilityControlsStatus data.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *stabilityControlsStatus;
+
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState A boolean value. If true, requests the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
+
+/**
+ Gets the OEM custom vehicle data value for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return The state of an OEM custom vehicle data item for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGetVehicleData.m b/SmartDeviceLink/public/SDLGetVehicleData.m
new file mode 100644
index 000000000..abae28008
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGetVehicleData.m
@@ -0,0 +1,361 @@
+// SDLGetVehicleData.m
+//
+
+
+#import "SDLGetVehicleData.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLGetVehicleData
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameGetVehicleData];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus {
+ self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) externalTemperature:@(externalTemperature) turnSignal:@(turnSignal) vin:@(vin) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accelerationPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) handsOffSteering:nil windowStatus:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.fuelLevel = @(fuelLevel);
+ self.fuelLevel_State = @(fuelLevelState);
+ self.prndl = @(prndl);
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal vin:(nullable NSNumber<SDLBool> *)vin gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.gps = gps;
+ self.speed = speed;
+ self.rpm = rpm;
+ self.instantFuelConsumption = instantFuelConsumption;
+ self.fuelRange = fuelRange;
+ self.externalTemperature = externalTemperature;
+ self.turnSignal = turnSignal;
+ self.vin = vin;
+ self.gearStatus = gearStatus;
+ self.tirePressure = tirePressure;
+ self.odometer = odometer;
+ self.beltStatus = beltStatus;
+ self.bodyInformation = bodyInformation;
+ self.deviceStatus = deviceStatus;
+ self.driverBraking = driverBraking;
+ self.wiperStatus = wiperStatus;
+ self.headLampStatus = headLampStatus;
+ self.engineTorque = engineTorque;
+ self.accPedalPosition = accPedalPosition;
+ self.steeringWheelAngle = steeringWheelAngle;
+ self.engineOilLife = engineOilLife;
+ self.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ self.cloudAppVehicleID = cloudAppVehicleID;
+ self.stabilityControlsStatus = stabilityControlsStatus;
+ self.eCallInfo = eCallInfo;
+ self.airbagStatus = airbagStatus;
+ self.emergencyEvent = emergencyEvent;
+ self.clusterModeStatus = clusterModeStatus;
+ self.myKey = myKey;
+ self.handsOffSteering = handsOffSteering;
+ self.windowStatus = windowStatus;
+ return self;
+}
+
+- (void)setGps:(nullable NSNumber<SDLBool> *)gps {
+ [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
+}
+
+- (nullable NSNumber<SDLBool> *)gps {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSpeed:(nullable NSNumber<SDLBool> *)speed {
+ [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
+}
+
+- (nullable NSNumber<SDLBool> *)speed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRpm:(nullable NSNumber<SDLBool> *)rpm {
+ [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
+}
+
+- (nullable NSNumber<SDLBool> *)rpm {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel:(nullable NSNumber<SDLBool> *)fuelLevel {
+ [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelLevel {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel_State:(nullable NSNumber<SDLBool> *)fuelLevel_State {
+ [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelLevel_State {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelRange:(nullable NSNumber<SDLBool> *)fuelRange {
+ [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelRange {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil];
+}
+
+- (void)setInstantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption {
+ [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
+}
+
+- (nullable NSNumber<SDLBool> *)instantFuelConsumption {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
+}
+
+- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
+ [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable NSNumber<SDLBool> *)externalTemperature {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVin:(nullable NSNumber<SDLBool> *)vin {
+ [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN];
+}
+
+- (nullable NSNumber<SDLBool> *)vin {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSNumber.class error:nil];
+}
+
+- (void)setPrndl:(nullable NSNumber<SDLBool> *)prndl {
+ [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
+}
+
+- (nullable NSNumber<SDLBool> *)prndl {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTirePressure:(nullable NSNumber<SDLBool> *)tirePressure {
+ [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
+}
+
+- (nullable NSNumber<SDLBool> *)tirePressure {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil];
+}
+
+- (void)setOdometer:(nullable NSNumber<SDLBool> *)odometer {
+ [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
+}
+
+- (nullable NSNumber<SDLBool> *)odometer {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBeltStatus:(nullable NSNumber<SDLBool> *)beltStatus {
+ [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)beltStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation {
+ [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
+}
+
+- (nullable NSNumber<SDLBool> *)bodyInformation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDeviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus {
+ [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)deviceStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDriverBraking:(nullable NSNumber<SDLBool> *)driverBraking {
+ [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
+}
+
+- (nullable NSNumber<SDLBool> *)driverBraking {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil];
+}
+
+- (void)setWiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus {
+ [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)wiperStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeadLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus {
+ [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)headLampStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife {
+ [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
+}
+
+- (nullable NSNumber<SDLBool> *)engineOilLife {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineTorque:(nullable NSNumber<SDLBool> *)engineTorque {
+ [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
+}
+
+- (nullable NSNumber<SDLBool> *)engineTorque {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAccPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition {
+ [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
+}
+
+- (nullable NSNumber<SDLBool> *)accPedalPosition {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSteeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle {
+ [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
+}
+
+- (nullable NSNumber<SDLBool> *)steeringWheelAngle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
+}
+
+- (void)setECallInfo:(nullable NSNumber<SDLBool> *)eCallInfo {
+ [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
+}
+
+- (nullable NSNumber<SDLBool> *)eCallInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAirbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus {
+ [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)airbagStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEmergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent {
+ [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
+}
+
+- (nullable NSNumber<SDLBool> *)emergencyEvent {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil];
+}
+
+- (void)setClusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus {
+ [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)clusterModeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setMyKey:(nullable NSNumber<SDLBool> *)myKey {
+ [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
+}
+
+- (nullable NSNumber<SDLBool> *)myKey {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil];
+}
+
+- (void)setElectronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
+ [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTurnSignal:(nullable NSNumber<SDLBool> *)turnSignal {
+ [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
+}
+
+- (nullable NSNumber<SDLBool> *)turnSignal {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
+}
+
+- (void)setStabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus {
+ [self.parameters sdl_setObject:stabilityControlsStatus forName:SDLRPCParameterNameStabilityControlsStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)stabilityControlsStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStabilityControlsStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setWindowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ [self.parameters sdl_setObject:windowStatus forName:SDLRPCParameterNameWindowStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)windowStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowStatus ofClass:NSNumber.class error:&error];
+}
+
+- (void)setGearStatus:(nullable NSNumber<SDLBool> *)gearStatus {
+ [self.parameters sdl_setObject:gearStatus forName:SDLRPCParameterNameGearStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)gearStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGearStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
+ [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
+}
+
+- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHandsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering {
+ [self.parameters sdl_setObject:handsOffSteering forName:SDLRPCParameterNameHandsOffSteering];
+}
+
+- (nullable NSNumber<SDLBool> *)handsOffSteering {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGetVehicleDataResponse.h b/SmartDeviceLink/public/SDLGetVehicleDataResponse.h
new file mode 100644
index 000000000..6f24221b4
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGetVehicleDataResponse.h
@@ -0,0 +1,280 @@
+// SDLGetVehicleDataResponse.h
+//
+
+#import "SDLRPCResponse.h"
+
+#import "SDLComponentVolumeStatus.h"
+#import "SDLElectronicParkBrakeStatus.h"
+#import "SDLPRNDL.h"
+#import "SDLTurnSignal.h"
+#import "SDLVehicleDataEventStatus.h"
+#import "SDLWiperStatus.h"
+
+@class SDLAirbagStatus;
+@class SDLBeltStatus;
+@class SDLBodyInformation;
+@class SDLClusterModeStatus;
+@class SDLDeviceStatus;
+@class SDLECallInfo;
+@class SDLEmergencyEvent;
+@class SDLFuelRange;
+@class SDLGearStatus;
+@class SDLGPSData;
+@class SDLHeadLampStatus;
+@class SDLMyKey;
+@class SDLStabilityControlsStatus;
+@class SDLTireStatus;
+@class SDLWindowStatus;
+
+
+/**
+ * Response to SDLGetVehicleData
+ *
+ * Since SmartDeviceLink 2.0
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLGetVehicleDataResponse : SDLRPCResponse
+
+/**
+ * Convenience init for initializing data for all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param externalTemperature - externalTemperature
+ * @param turnSignal - turnSignal
+ * @param vin - vin
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @return A SDLGetVehicleDataResponse object
+ */
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus;
+
+/**
+ * See GearStatus
+ *
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) SDLGearStatus *gearStatus;
+
+/**
+ The car current GPS coordinates
+ */
+@property (nullable, strong, nonatomic) SDLGPSData *gps;
+
+/**
+ The vehicle speed in kilometers per hour
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *speed;
+
+/**
+ The number of revolutions per minute of the engine.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *rpm;
+
+/**
+ The fuel level in the tank (percentage)
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLFloat> *fuelLevel __deprecated_msg("use fuelRange.level instead on 7.0+ RPC version connections");
+
+/**
+ The fuel level state
+ */
+@property (strong, nonatomic, nullable) SDLComponentVolumeStatus fuelLevel_State __deprecated_msg("use fuelRange.levelState instead on 7.0+ RPC version connections");
+
+/**
+ The estimate range in KM the vehicle can travel based on fuel level and consumption
+
+ Optional, Array of length 0 - 100, of SDLFuelRange
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLFuelRange *> *fuelRange;
+
+/**
+ The instantaneous fuel consumption in microlitres
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *instantFuelConsumption;
+
+/**
+ The external temperature in degrees celsius.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature;
+
+/**
+ The Vehicle Identification Number
+ */
+@property (nullable, strong, nonatomic) NSString *vin;
+
+/**
+ * See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
+ *
+ * @deprecated
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) SDLPRNDL prndl __deprecated_msg("use gearStatus instead on 7.0+ RPC version connections");
+
+/**
+ The current pressure warnings for the user's vehicle
+ */
+@property (nullable, strong, nonatomic) SDLTireStatus *tirePressure;
+
+/**
+ Odometer reading in km
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *odometer;
+
+/**
+ The status of the seat belts
+ */
+@property (nullable, strong, nonatomic) SDLBeltStatus *beltStatus;
+
+/**
+ The body information including power modes
+ */
+@property (nullable, strong, nonatomic) SDLBodyInformation *bodyInformation;
+
+/**
+ The IVI system status including signal and battery strength
+ */
+@property (nullable, strong, nonatomic) SDLDeviceStatus *deviceStatus;
+
+/**
+ The status of the brake pedal
+ */
+@property (nullable, strong, nonatomic) SDLVehicleDataEventStatus driverBraking;
+
+/**
+ * See WindowStatus
+ * {"array_min_size": 0, "array_max_size": 100}
+ *
+ * @since SDL 7.0
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLWindowStatus *> *windowStatus;
+
+/**
+ The status of the wipers
+ */
+@property (nullable, strong, nonatomic) SDLWiperStatus wiperStatus;
+
+/**
+ To indicate whether driver hands are off the steering wheel
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *handsOffSteering;
+
+/**
+ Status of the head lamps
+ */
+@property (nullable, strong, nonatomic) SDLHeadLampStatus *headLampStatus;
+
+/**
+ The estimated percentage (0% - 100%) of remaining oil life of the engine
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLFloat> *engineOilLife;
+
+/**
+ Torque value for engine (in Nm) on non-diesel variants
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *engineTorque;
+
+/**
+ Accelerator pedal position (percentage depressed)
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *accPedalPosition;
+
+/**
+ Current angle of the steering wheel (in deg)
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *steeringWheelAngle;
+
+/**
+ Emergency Call notification and confirmation data
+ */
+@property (nullable, strong, nonatomic) SDLECallInfo *eCallInfo;
+
+/**
+ The status of the air bags
+ */
+@property (nullable, strong, nonatomic) SDLAirbagStatus *airbagStatus;
+
+/**
+ Information related to an emergency event (and if it occurred)
+ */
+@property (nullable, strong, nonatomic) SDLEmergencyEvent *emergencyEvent;
+
+/**
+ The status modes of the cluster
+ */
+@property (nullable, strong, nonatomic) SDLClusterModeStatus *clusterModeStatus;
+
+/**
+ Information related to the MyKey feature
+ */
+@property (nullable, strong, nonatomic) SDLMyKey *myKey;
+
+/**
+ The status of the electronic parking brake
+ */
+@property (nullable, strong, nonatomic) SDLElectronicParkBrakeStatus electronicParkBrakeStatus;
+
+/**
+ The status of the turn signal
+ */
+@property (nullable, strong, nonatomic) SDLTurnSignal turnSignal;
+
+/**
+ The cloud app vehicle ID
+ */
+@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
+
+/**
+ The stability controls status
+ */
+@property (nullable, strong, nonatomic) SDLStabilityControlsStatus *stabilityControlsStatus;
+
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState An object containing the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
+
+/**
+ Gets the OEM custom vehicle data item for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return An OEM custom vehicle data object for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGetVehicleDataResponse.m b/SmartDeviceLink/public/SDLGetVehicleDataResponse.m
new file mode 100644
index 000000000..47f5a66eb
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGetVehicleDataResponse.m
@@ -0,0 +1,365 @@
+// SDLGetVehicleDataResponse.m
+//
+
+
+#import "SDLGetVehicleDataResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLAirbagStatus.h"
+#import "SDLBeltStatus.h"
+#import "SDLBodyInformation.h"
+#import "SDLClusterModeStatus.h"
+#import "SDLDeviceStatus.h"
+#import "SDLECallInfo.h"
+#import "SDLEmergencyEvent.h"
+#import "SDLFuelRange.h"
+#import "SDLGearStatus.h"
+#import "SDLGPSData.h"
+#import "SDLHeadLampStatus.h"
+#import "SDLMyKey.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLStabilityControlsStatus.h"
+#import "SDLTireStatus.h"
+#import "SDLWindowStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLGetVehicleDataResponse
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameGetVehicleData];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.gps = gps;
+ self.speed = speed;
+ self.rpm = rpm;
+ self.instantFuelConsumption = instantFuelConsumption;
+ self.fuelRange = fuelRange;
+ self.externalTemperature = externalTemperature;
+ self.turnSignal = turnSignal;
+ self.vin = vin;
+ self.gearStatus = gearStatus;
+ self.tirePressure = tirePressure;
+ self.odometer = odometer;
+ self.beltStatus = beltStatus;
+ self.bodyInformation = bodyInformation;
+ self.deviceStatus = deviceStatus;
+ self.driverBraking = driverBraking;
+ self.wiperStatus = wiperStatus;
+ self.headLampStatus = headLampStatus;
+ self.engineTorque = engineTorque;
+ self.accPedalPosition = accPedalPosition;
+ self.steeringWheelAngle = steeringWheelAngle;
+ self.engineOilLife = engineOilLife;
+ self.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ self.cloudAppVehicleID = cloudAppVehicleID;
+ self.stabilityControlsStatus = stabilityControlsStatus;
+ self.eCallInfo = eCallInfo;
+ self.airbagStatus = airbagStatus;
+ self.emergencyEvent = emergencyEvent;
+ self.clusterModeStatus = clusterModeStatus;
+ self.myKey = myKey;
+ self.handsOffSteering = handsOffSteering;
+ self.windowStatus = windowStatus;
+ return self;
+}
+
+- (void)setGearStatus:(nullable SDLGearStatus *)gearStatus {
+ [self.parameters sdl_setObject:gearStatus forName:SDLRPCParameterNameGearStatus];
+}
+
+- (nullable SDLGearStatus *)gearStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGearStatus ofClass:SDLGearStatus.class error:&error];
+}
+
+- (void)setGps:(nullable SDLGPSData *)gps {
+ [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
+}
+
+- (nullable SDLGPSData *)gps {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil];
+}
+
+- (void)setSpeed:(nullable NSNumber<SDLFloat> *)speed {
+ [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
+}
+
+- (nullable NSNumber<SDLFloat> *)speed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRpm:(nullable NSNumber<SDLInt> *)rpm {
+ [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
+}
+
+- (nullable NSNumber<SDLInt> *)rpm {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel:(nullable NSNumber<SDLFloat> *)fuelLevel {
+ [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
+}
+
+- (nullable NSNumber<SDLFloat> *)fuelLevel {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel_State:(nullable SDLComponentVolumeStatus)fuelLevel_State {
+ [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
+}
+
+- (nullable SDLComponentVolumeStatus)fuelLevel_State {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil];
+}
+
+- (void)setInstantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption {
+ [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
+}
+
+- (void)setFuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange {
+ [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
+}
+
+- (nullable NSArray<SDLFuelRange *> *)fuelRange {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil];
+}
+
+- (nullable NSNumber<SDLFloat> *)instantFuelConsumption {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
+}
+
+- (void)setExternalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature {
+ [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable NSNumber<SDLFloat> *)externalTemperature {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVin:(nullable NSString *)vin {
+ [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN];
+}
+
+- (nullable NSString *)vin {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil];
+}
+
+- (void)setPrndl:(nullable SDLPRNDL)prndl {
+ [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
+}
+
+- (nullable SDLPRNDL)prndl {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil];
+}
+
+- (void)setTirePressure:(nullable SDLTireStatus *)tirePressure {
+ [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
+}
+
+- (nullable SDLTireStatus *)tirePressure {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil];
+}
+
+- (void)setOdometer:(nullable NSNumber<SDLInt> *)odometer {
+ [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
+}
+
+- (nullable NSNumber<SDLInt> *)odometer {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBeltStatus:(nullable SDLBeltStatus *)beltStatus {
+ [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
+}
+
+- (nullable SDLBeltStatus *)beltStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil];
+}
+
+- (void)setBodyInformation:(nullable SDLBodyInformation *)bodyInformation {
+ [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
+}
+
+- (nullable SDLBodyInformation *)bodyInformation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil];
+}
+
+- (void)setDeviceStatus:(nullable SDLDeviceStatus *)deviceStatus {
+ [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
+}
+
+- (nullable SDLDeviceStatus *)deviceStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil];
+}
+
+- (void)setDriverBraking:(nullable SDLVehicleDataEventStatus)driverBraking {
+ [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
+}
+
+- (nullable SDLVehicleDataEventStatus)driverBraking {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil];
+}
+
+- (void)setWindowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus {
+ [self.parameters sdl_setObject:windowStatus forName:SDLRPCParameterNameWindowStatus];
+}
+
+- (nullable NSArray<SDLWindowStatus *> *)windowStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameWindowStatus ofClass:SDLWindowStatus.class error:&error];
+}
+
+- (void)setWiperStatus:(nullable SDLWiperStatus)wiperStatus {
+ [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
+}
+
+- (nullable SDLWiperStatus)wiperStatus {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil];
+}
+
+- (void)setHandsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering {
+ [self.parameters sdl_setObject:handsOffSteering forName:SDLRPCParameterNameHandsOffSteering];
+}
+
+- (nullable NSNumber<SDLBool> *)handsOffSteering {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:NSNumber.class error:&error];
+}
+
+- (void)setHeadLampStatus:(nullable SDLHeadLampStatus *)headLampStatus {
+ [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
+}
+
+- (nullable SDLHeadLampStatus *)headLampStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil];
+}
+
+- (void)setEngineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife {
+ [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
+}
+
+- (nullable NSNumber<SDLFloat> *)engineOilLife {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineTorque:(nullable NSNumber<SDLFloat> *)engineTorque {
+ [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
+}
+
+- (nullable NSNumber<SDLFloat> *)engineTorque {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAccPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition {
+ [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
+}
+
+- (nullable NSNumber<SDLFloat> *)accPedalPosition {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSteeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle {
+ [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
+}
+
+- (nullable NSNumber<SDLFloat> *)steeringWheelAngle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
+}
+
+- (void)setECallInfo:(nullable SDLECallInfo *)eCallInfo {
+ [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
+}
+
+- (nullable SDLECallInfo *)eCallInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil];
+}
+
+- (void)setAirbagStatus:(nullable SDLAirbagStatus *)airbagStatus {
+ [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
+}
+
+- (nullable SDLAirbagStatus *)airbagStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil];
+}
+
+- (void)setEmergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent {
+ [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
+}
+
+- (nullable SDLEmergencyEvent *)emergencyEvent {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil];
+}
+
+- (void)setClusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus {
+ [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
+}
+
+- (nullable SDLClusterModeStatus *)clusterModeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil];
+}
+
+- (void)setMyKey:(nullable SDLMyKey *)myKey {
+ [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
+}
+
+- (nullable SDLMyKey *)myKey {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil];
+}
+
+- (void)setElectronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
+ [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
+}
+
+- (nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil];
+}
+
+- (void)setTurnSignal:(nullable SDLTurnSignal)turnSignal {
+ [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
+}
+
+- (nullable SDLTurnSignal)turnSignal {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil];
+}
+
+- (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID {
+ [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSString *)cloudAppVehicleID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil];
+}
+
+- (void)setStabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus {
+ [self.parameters sdl_setObject:stabilityControlsStatus forName:SDLRPCParameterNameStabilityControlsStatus];
+}
+
+- (nullable SDLStabilityControlsStatus *)stabilityControlsStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStabilityControlsStatus ofClass:SDLStabilityControlsStatus.class error:nil];
+}
+
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLGetWayPoints.h b/SmartDeviceLink/public/SDLGetWayPoints.h
index 331acc3a0..331acc3a0 100644
--- a/SmartDeviceLink/SDLGetWayPoints.h
+++ b/SmartDeviceLink/public/SDLGetWayPoints.h
diff --git a/SmartDeviceLink/SDLGetWayPoints.m b/SmartDeviceLink/public/SDLGetWayPoints.m
index 6e7f7a489..6e7f7a489 100644
--- a/SmartDeviceLink/SDLGetWayPoints.m
+++ b/SmartDeviceLink/public/SDLGetWayPoints.m
diff --git a/SmartDeviceLink/SDLGetWayPointsResponse.h b/SmartDeviceLink/public/SDLGetWayPointsResponse.h
index 3a22fce5a..3a22fce5a 100644
--- a/SmartDeviceLink/SDLGetWayPointsResponse.h
+++ b/SmartDeviceLink/public/SDLGetWayPointsResponse.h
diff --git a/SmartDeviceLink/SDLGetWayPointsResponse.m b/SmartDeviceLink/public/SDLGetWayPointsResponse.m
index fec11281a..fec11281a 100644
--- a/SmartDeviceLink/SDLGetWayPointsResponse.m
+++ b/SmartDeviceLink/public/SDLGetWayPointsResponse.m
diff --git a/SmartDeviceLink/public/SDLGlobalProperty.h b/SmartDeviceLink/public/SDLGlobalProperty.h
new file mode 100644
index 000000000..60dfef02f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGlobalProperty.h
@@ -0,0 +1,52 @@
+// SDLGlobalProperty.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Properties of a user-initiated VR interaction (i.e. interactions started by the user pressing the PTT button). Used in RPCs related to ResetGlobalProperties
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLGlobalProperty NS_TYPED_ENUM;
+
+/**
+ * The help prompt to be spoken if the user needs assistance during a user-initiated interaction.
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyHelpPrompt;
+
+/**
+ * The prompt to be spoken if the user-initiated interaction times out waiting for the user's verbal input.
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyTimeoutPrompt;
+
+/**
+ * The title of the menu displayed when the user requests help via voice recognition.
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyVoiceRecognitionHelpTitle;
+
+/**
+ * Items of the menu displayed when the user requests help via voice recognition.
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyVoiceRecognitionHelpItems;
+
+/**
+ * The name of the menu button displayed in templates
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyMenuName;
+
+/**
+ * An icon on the menu button displayed in templates
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyMenuIcon;
+
+/**
+ * Property related to the keyboard
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyKeyboard;
+
+/**
+ * Location of the user's seat of setGlobalProperties
+ */
+extern SDLGlobalProperty const SDLGlobalPropertyUserLocation;
diff --git a/SmartDeviceLink/SDLGlobalProperty.m b/SmartDeviceLink/public/SDLGlobalProperty.m
index 410af9179..410af9179 100644
--- a/SmartDeviceLink/SDLGlobalProperty.m
+++ b/SmartDeviceLink/public/SDLGlobalProperty.m
diff --git a/SmartDeviceLink/SDLGrid.h b/SmartDeviceLink/public/SDLGrid.h
index 64ad01e2f..64ad01e2f 100644
--- a/SmartDeviceLink/SDLGrid.h
+++ b/SmartDeviceLink/public/SDLGrid.h
diff --git a/SmartDeviceLink/SDLGrid.m b/SmartDeviceLink/public/SDLGrid.m
index f0e5d333d..f0e5d333d 100644
--- a/SmartDeviceLink/SDLGrid.m
+++ b/SmartDeviceLink/public/SDLGrid.m
diff --git a/SmartDeviceLink/public/SDLHMICapabilities.h b/SmartDeviceLink/public/SDLHMICapabilities.h
new file mode 100644
index 000000000..3d2187631
--- /dev/null
+++ b/SmartDeviceLink/public/SDLHMICapabilities.h
@@ -0,0 +1,131 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLRPCStruct.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contains information about the HMI capabilities.
+
+ Since SDL 3.0
+**/
+@interface SDLHMICapabilities : SDLRPCStruct
+
+/**
+ * @param navigation - navigation
+ * @param phoneCall - phoneCall
+ * @param videoStreaming - videoStreaming
+ * @param remoteControl - remoteControl
+ * @param appServices - appServices
+ * @param displays - displays
+ * @param seatLocation - seatLocation
+ * @param driverDistraction - driverDistraction
+ * @return A SDLHMICapabilities object
+ */
+- (instancetype)initWithNavigation:(nullable NSNumber<SDLBool> *)navigation phoneCall:(nullable NSNumber<SDLBool> *)phoneCall videoStreaming:(nullable NSNumber<SDLBool> *)videoStreaming remoteControl:(nullable NSNumber<SDLBool> *)remoteControl appServices:(nullable NSNumber<SDLBool> *)appServices displays:(nullable NSNumber<SDLBool> *)displays seatLocation:(nullable NSNumber<SDLBool> *)seatLocation driverDistraction:(nullable NSNumber<SDLBool> *)driverDistraction;
+
+/**
+ Availability of built in Nav. True: Available, False: Not Available
+
+ Boolean value. Optional.
+
+ Since SDL 3.0
+ */
+@property (nullable, copy, nonatomic) NSNumber<SDLBool> *navigation;
+
+/**
+ Availability of built in phone. True: Available, False: Not Available
+
+ Boolean value. Optional.
+
+ Since SDL 3.0
+ */
+@property (nullable, copy, nonatomic) NSNumber<SDLBool> *phoneCall;
+
+/**
+ Availability of built in video streaming. True: Available, False: Not Available
+
+ Boolean value. Optional.
+
+ Since SDL 4.5
+ */
+@property (nullable, copy, nonatomic) NSNumber<SDLBool> *videoStreaming;
+
+/**
+ Availability of built in remote control. True: Available, False: Not Available
+
+ Boolean value. Optional.
+
+ Since SDL 4.5
+**/
+@property (nullable, copy, nonatomic) NSNumber<SDLBool> *remoteControl;
+
+/**
+ Availability of app services. True: Available, False: Not Available
+
+ App services is supported since SDL 5.1. If your connection is 5.1+, you can assume that app services is available even though between v5.1 and v6.0 this parameter is `nil`.
+
+ Boolean value. Optional.
+
+ Since SDL 6.0
+**/
+@property (nullable, copy, nonatomic) NSNumber<SDLBool> *appServices;
+
+/**
+ Availability of displays. True: Available, False: Not Available
+
+ Boolean value. Optional.
+
+ Since SDL 6.0
+**/
+@property (nullable, copy, nonatomic) NSNumber<SDLBool> *displays;
+
+/**
+ Availability of seatLocation. True: Available, False: Not Available
+
+ Boolean value. Optional.
+
+ Since SDL 6.0
+ **/
+@property (nullable, copy, nonatomic) NSNumber<SDLBool> *seatLocation;
+
+/**
+ * Availability of driver distraction capability. True: Available, False: Not Available
+ *
+ * @since SDL 7.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *driverDistraction;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLHMICapabilities.m b/SmartDeviceLink/public/SDLHMICapabilities.m
new file mode 100644
index 000000000..ece1d811c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLHMICapabilities.m
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLHMICapabilities.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLHMICapabilities
+
+- (instancetype)initWithNavigation:(nullable NSNumber<SDLBool> *)navigation phoneCall:(nullable NSNumber<SDLBool> *)phoneCall videoStreaming:(nullable NSNumber<SDLBool> *)videoStreaming remoteControl:(nullable NSNumber<SDLBool> *)remoteControl appServices:(nullable NSNumber<SDLBool> *)appServices displays:(nullable NSNumber<SDLBool> *)displays seatLocation:(nullable NSNumber<SDLBool> *)seatLocation driverDistraction:(nullable NSNumber<SDLBool> *)driverDistraction {
+ self = [super init];
+ if (!self) { return nil; }
+
+ self.navigation = navigation;
+ self.phoneCall = phoneCall;
+ self.videoStreaming = videoStreaming;
+ self.remoteControl = remoteControl;
+ self.appServices = appServices;
+ self.displays = displays;
+ self.seatLocation = seatLocation;
+ self.driverDistraction = driverDistraction;
+
+ return self;
+}
+
+- (void)setNavigation:(nullable NSNumber<SDLBool> *)navigation {
+ [self.store sdl_setObject:navigation forName:SDLRPCParameterNameNavigation];
+}
+
+- (nullable NSNumber<SDLBool> *)navigation {
+ return [self.store sdl_objectForName:SDLRPCParameterNameNavigation ofClass:NSNumber.class error:nil];
+}
+
+- (void)setPhoneCall:(nullable NSNumber<SDLBool> *)phoneCall {
+ [self.store sdl_setObject:phoneCall forName:SDLRPCParameterNamePhoneCall];
+}
+
+- (nullable NSNumber<SDLBool> *)phoneCall {
+ return [self.store sdl_objectForName:SDLRPCParameterNamePhoneCall ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVideoStreaming:(nullable NSNumber<SDLBool> *)videoStreaming {
+ [self.store sdl_setObject:videoStreaming forName:SDLRPCParameterNameVideoStreaming];
+}
+
+- (nullable NSNumber<SDLBool> *)videoStreaming {
+ return [self.store sdl_objectForName:SDLRPCParameterNameVideoStreaming ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRemoteControl:(nullable NSNumber<SDLBool> *)remoteControl {
+ [self.store sdl_setObject:remoteControl forName:SDLRPCParameterNameRemoteControl];
+}
+
+- (nullable NSNumber<SDLBool> *)remoteControl {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRemoteControl ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAppServices:(nullable NSNumber<SDLBool> *)appServices {
+ [self.store sdl_setObject:appServices forName:SDLRPCParameterNameAppServices];
+}
+
+- (nullable NSNumber<SDLBool> *)appServices {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAppServices ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDisplays:(nullable NSNumber<SDLBool> *)displays {
+ [self.store sdl_setObject:displays forName:SDLRPCParameterNameDisplays];
+}
+
+- (nullable NSNumber<SDLBool> *)displays {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDisplays ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSeatLocation:(nullable NSNumber<SDLBool> *)seatLocation {
+ [self.store sdl_setObject:seatLocation forName:SDLRPCParameterNameSeatLocation];
+}
+
+- (nullable NSNumber<SDLBool> *)seatLocation {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSeatLocation ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDriverDistraction:(nullable NSNumber<SDLBool> *)driverDistraction {
+ [self.store sdl_setObject:driverDistraction forName:SDLRPCParameterNameDriverDistraction];
+}
+
+- (nullable NSNumber<SDLBool> *)driverDistraction {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDriverDistraction ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLHMILevel.h b/SmartDeviceLink/public/SDLHMILevel.h
new file mode 100644
index 000000000..700afd4c4
--- /dev/null
+++ b/SmartDeviceLink/public/SDLHMILevel.h
@@ -0,0 +1,36 @@
+// SDLHMILevel.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Specifies current level of the HMI. An HMI level indicates the degree of user interaction possible through the HMI (e.g. TTS only, display only, VR, etc.). The HMI level varies for an application based on the type of display (i.e. Nav or non-Nav) and the user directing "focus" to other applications (e.g. phone, other mobile applications, etc.). Used in OnHMIStatus
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLHMILevel NS_TYPED_ENUM;
+
+/**
+ * The application has full use of the SDL HMI. The app may output via TTS, display, or streaming audio and may gather input via VR, Menu, and button presses
+ */
+extern SDLHMILevel const SDLHMILevelFull;
+
+/**
+ * This HMI Level is only defined for a media application using an HMI with an 8 inch touchscreen (Nav) system. The application's Show text is displayed and it receives button presses from media-oriented buttons (SEEKRIGHT, SEEKLEFT, TUNEUP, TUNEDOWN, PRESET_0-9)
+ */
+extern SDLHMILevel const SDLHMILevelLimited;
+
+/**
+ * App cannot interact with user via TTS, VR, Display or Button Presses. App can perform the following operations:
+ *
+ * AddCommand, DeleteCommand, AddSubMenu, DeleteSubMenu, CreateInteractionChoiceSet, DeleteInteractionChoiceSet, SubscribeButton, UnsubscribeButton, Show, UnregisterAppInterface, ResetGlobalProperties, SetGlobalProperties
+ */
+extern SDLHMILevel const SDLHMILevelBackground;
+
+/**
+ * Application has been discovered by SDL, but it cannot send any requests or receive any notifications
+ *
+ * An HMILevel of NONE can also mean that the user has exited the application by saying "exit appname" or selecting "exit" from the application's menu. When this happens, the application still has an active interface registration with SDL and all SDL resources the application has created (e.g. Choice Sets, subscriptions, etc.) still exist. But while the HMILevel is NONE, the application cannot send any messages to SYNC, except UnregisterAppInterface
+ */
+extern SDLHMILevel const SDLHMILevelNone;
diff --git a/SmartDeviceLink/SDLHMILevel.m b/SmartDeviceLink/public/SDLHMILevel.m
index dab5a8691..dab5a8691 100644
--- a/SmartDeviceLink/SDLHMILevel.m
+++ b/SmartDeviceLink/public/SDLHMILevel.m
diff --git a/SmartDeviceLink/SDLHMIPermissions.h b/SmartDeviceLink/public/SDLHMIPermissions.h
index fa91517cd..fa91517cd 100644
--- a/SmartDeviceLink/SDLHMIPermissions.h
+++ b/SmartDeviceLink/public/SDLHMIPermissions.h
diff --git a/SmartDeviceLink/SDLHMIPermissions.m b/SmartDeviceLink/public/SDLHMIPermissions.m
index 5cd8bb8a7..5cd8bb8a7 100644
--- a/SmartDeviceLink/SDLHMIPermissions.m
+++ b/SmartDeviceLink/public/SDLHMIPermissions.m
diff --git a/SmartDeviceLink/public/SDLHMISettingsControlCapabilities.h b/SmartDeviceLink/public/SDLHMISettingsControlCapabilities.h
new file mode 100644
index 000000000..d86e284f5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLHMISettingsControlCapabilities.h
@@ -0,0 +1,75 @@
+// SDLHMISettingsControlCapabilities.h
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLModuleInfo.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// HMI data struct for HMI control settings
+///
+/// @since 5.0
+@interface SDLHMISettingsControlCapabilities : SDLRPCStruct
+
+/**
+ Constructs a newly allocated SDLHMISettingsControlCapabilities object with moduleName
+
+ @param moduleName The short friendly name of the hmi setting module
+ @param moduleInfo Information about a RC module, including its id.
+
+ @return An instance of the SDLHMISettingsControlCapabilities class
+ */
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo;
+
+/**
+ Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters
+
+ @param moduleName The short friendly name of the hmi setting module.
+ @param moduleInfo Information about a RC module, including its id.
+ @param distanceUnitAvailable Availability of the control of distance unit.
+ @param temperatureUnitAvailable Availability of the control of temperature unit.
+ @param displayModeUnitAvailable Availability of the control of displayMode unit.
+
+ @return An instance of the SDLHMISettingsControlCapabilities class
+ */
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo distanceUnitAvailable:(BOOL)distanceUnitAvailable temperatureUnitAvailable:(BOOL)temperatureUnitAvailable displayModeUnitAvailable:(BOOL)displayModeUnitAvailable;
+
+/**
+ * @abstract The short friendly name of the hmi setting module.
+ * It should not be used to identify a module by mobile application.
+ *
+ * Required, Max String length 100 chars
+ */
+@property (strong, nonatomic) NSString *moduleName;
+
+/**
+ * @abstract Availability of the control of distance unit.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *distanceUnitAvailable;
+
+/**
+ * @abstract Availability of the control of temperature unit.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *temperatureUnitAvailable;
+
+/**
+ * @abstract Availability of the control of HMI display mode.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *displayModeUnitAvailable;
+
+/**
+ * Information about a RC module, including its id.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLHMISettingsControlCapabilities.m b/SmartDeviceLink/public/SDLHMISettingsControlCapabilities.m
new file mode 100644
index 000000000..c0117b793
--- /dev/null
+++ b/SmartDeviceLink/public/SDLHMISettingsControlCapabilities.m
@@ -0,0 +1,81 @@
+// SDLHMISettingsControlCapabilities.m
+//
+
+#import "SDLHMISettingsControlCapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLHMISettingsControlCapabilities
+
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+ self.moduleName = moduleName;
+ self.moduleInfo = moduleInfo;
+
+ return self;
+}
+
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo distanceUnitAvailable:(BOOL)distanceUnitAvailable temperatureUnitAvailable:(BOOL)temperatureUnitAvailable displayModeUnitAvailable:(BOOL)displayModeUnitAvailable {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+ self.moduleName = moduleName;
+ self.moduleInfo = moduleInfo;
+ self.distanceUnitAvailable = @(distanceUnitAvailable);
+ self.temperatureUnitAvailable = @(temperatureUnitAvailable);
+ self.displayModeUnitAvailable = @(displayModeUnitAvailable);
+
+ return self;
+}
+
+- (void)setModuleName:(NSString *)moduleName {
+ [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
+}
+
+- (NSString *)moduleName {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
+}
+
+
+- (void)setDistanceUnitAvailable:(nullable NSNumber<SDLBool> *)distanceUnitAvailable {
+ [self.store sdl_setObject:distanceUnitAvailable forName:SDLRPCParameterNameDistanceUnitAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)distanceUnitAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDistanceUnitAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTemperatureUnitAvailable:(nullable NSNumber<SDLBool> *)temperatureUnitAvailable {
+ [self.store sdl_setObject:temperatureUnitAvailable forName:SDLRPCParameterNameTemperatureUnitAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)temperatureUnitAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameTemperatureUnitAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDisplayModeUnitAvailable:(nullable NSNumber<SDLBool> *)displayModeUnitAvailable {
+ [self.store sdl_setObject:displayModeUnitAvailable forName:SDLRPCParameterNameDisplayModeUnitAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)displayModeUnitAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDisplayModeUnitAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
+}
+
+- (nullable SDLModuleInfo *)moduleInfo {
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLHMISettingsControlData.h b/SmartDeviceLink/public/SDLHMISettingsControlData.h
index c16afb7d7..c16afb7d7 100644
--- a/SmartDeviceLink/SDLHMISettingsControlData.h
+++ b/SmartDeviceLink/public/SDLHMISettingsControlData.h
diff --git a/SmartDeviceLink/SDLHMISettingsControlData.m b/SmartDeviceLink/public/SDLHMISettingsControlData.m
index df7982e85..df7982e85 100644
--- a/SmartDeviceLink/SDLHMISettingsControlData.m
+++ b/SmartDeviceLink/public/SDLHMISettingsControlData.m
diff --git a/SmartDeviceLink/public/SDLHMIZoneCapabilities.h b/SmartDeviceLink/public/SDLHMIZoneCapabilities.h
new file mode 100644
index 000000000..b5ba44656
--- /dev/null
+++ b/SmartDeviceLink/public/SDLHMIZoneCapabilities.h
@@ -0,0 +1,22 @@
+// SDLHmiZoneCapabilities.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Specifies HMI Zones in the vehicle. Used in RegisterAppInterfaceResponse
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLHMIZoneCapabilities NS_TYPED_ENUM;
+
+/**
+ * Indicates HMI available for front seat passengers.
+ */
+extern SDLHMIZoneCapabilities const SDLHMIZoneCapabilitiesFront;
+
+/**
+ * Indicates HMI available for rear seat passengers.
+ */
+extern SDLHMIZoneCapabilities const SDLHMIZoneCapabilitiesBack;
diff --git a/SmartDeviceLink/SDLHMIZoneCapabilities.m b/SmartDeviceLink/public/SDLHMIZoneCapabilities.m
index 9b9bed2ea..9b9bed2ea 100644
--- a/SmartDeviceLink/SDLHMIZoneCapabilities.m
+++ b/SmartDeviceLink/public/SDLHMIZoneCapabilities.m
diff --git a/SmartDeviceLink/SDLHapticRect.h b/SmartDeviceLink/public/SDLHapticRect.h
index ca7182ade..ca7182ade 100644
--- a/SmartDeviceLink/SDLHapticRect.h
+++ b/SmartDeviceLink/public/SDLHapticRect.h
diff --git a/SmartDeviceLink/SDLHapticRect.m b/SmartDeviceLink/public/SDLHapticRect.m
index 6641f528c..6641f528c 100644
--- a/SmartDeviceLink/SDLHapticRect.m
+++ b/SmartDeviceLink/public/SDLHapticRect.m
diff --git a/SmartDeviceLink/SDLHeadLampStatus.h b/SmartDeviceLink/public/SDLHeadLampStatus.h
index 8fff2ed21..8fff2ed21 100644
--- a/SmartDeviceLink/SDLHeadLampStatus.h
+++ b/SmartDeviceLink/public/SDLHeadLampStatus.h
diff --git a/SmartDeviceLink/SDLHeadLampStatus.m b/SmartDeviceLink/public/SDLHeadLampStatus.m
index e9f018f02..e9f018f02 100644
--- a/SmartDeviceLink/SDLHeadLampStatus.m
+++ b/SmartDeviceLink/public/SDLHeadLampStatus.m
diff --git a/SmartDeviceLink/public/SDLHybridAppPreference.h b/SmartDeviceLink/public/SDLHybridAppPreference.h
new file mode 100644
index 000000000..6b1a56dba
--- /dev/null
+++ b/SmartDeviceLink/public/SDLHybridAppPreference.h
@@ -0,0 +1,29 @@
+//
+// SDLHybridAppPreference.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/26/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration for the user's preference of which app type to use when both are available.
+ */
+typedef SDLEnum SDLHybridAppPreference NS_TYPED_ENUM;
+
+/**
+ * App preference of mobile.
+ */
+extern SDLHybridAppPreference const SDLHybridAppPreferenceMobile;
+
+/**
+ * App preference of cloud.
+ */
+extern SDLHybridAppPreference const SDLHybridAppPreferenceCloud;
+
+/**
+ * App preference of both. Allows both the mobile and the cloud versions of the app to attempt to connect at the same time, however the first app that is registered is the one that is allowed to stay registered.
+ */
+extern SDLHybridAppPreference const SDLHybridAppPreferenceBoth;
diff --git a/SmartDeviceLink/SDLHybridAppPreference.m b/SmartDeviceLink/public/SDLHybridAppPreference.m
index 963bc4172..963bc4172 100644
--- a/SmartDeviceLink/SDLHybridAppPreference.m
+++ b/SmartDeviceLink/public/SDLHybridAppPreference.m
diff --git a/SmartDeviceLink/public/SDLIgnitionStableStatus.h b/SmartDeviceLink/public/SDLIgnitionStableStatus.h
new file mode 100644
index 000000000..9216e7d22
--- /dev/null
+++ b/SmartDeviceLink/public/SDLIgnitionStableStatus.h
@@ -0,0 +1,27 @@
+// SDLIgnitionStableStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the ignition switch stability. Used in BodyInformation
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLIgnitionStableStatus NS_TYPED_ENUM;
+
+/**
+ * The current ignition switch status is considered not to be stable.
+ */
+extern SDLIgnitionStableStatus const SDLIgnitionStableStatusNotStable;
+
+/**
+ * The current ignition switch status is considered to be stable.
+ */
+extern SDLIgnitionStableStatus const SDLIgnitionStableStatusStable;
+
+/**
+ * The current ignition switch status is considered to be missing from the transmitter
+ */
+extern SDLIgnitionStableStatus const SDLIgnitionStableStatusMissingFromTransmitter;
diff --git a/SmartDeviceLink/SDLIgnitionStableStatus.m b/SmartDeviceLink/public/SDLIgnitionStableStatus.m
index 8572adcb1..8572adcb1 100644
--- a/SmartDeviceLink/SDLIgnitionStableStatus.m
+++ b/SmartDeviceLink/public/SDLIgnitionStableStatus.m
diff --git a/SmartDeviceLink/public/SDLIgnitionStatus.h b/SmartDeviceLink/public/SDLIgnitionStatus.h
new file mode 100644
index 000000000..94d7c47e2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLIgnitionStatus.h
@@ -0,0 +1,42 @@
+// SDLIgnitionStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of ignition. Used in BodyInformation.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLIgnitionStatus NS_TYPED_ENUM;
+
+/**
+ * Ignition status currently unknown
+ */
+extern SDLIgnitionStatus const SDLIgnitionStatusUnknown;
+
+/**
+ * Ignition is off
+ */
+extern SDLIgnitionStatus const SDLIgnitionStatusOff;
+
+/**
+ * Ignition is in mode accessory
+ */
+extern SDLIgnitionStatus const SDLIgnitionStatusAccessory;
+
+/**
+ * Ignition is in mode run
+ */
+extern SDLIgnitionStatus const SDLIgnitionStatusRun;
+
+/**
+ * Ignition is in mode start
+ */
+extern SDLIgnitionStatus const SDLIgnitionStatusStart;
+
+/**
+ * Signal is invalid
+ */
+extern SDLIgnitionStatus const SDLIgnitionStatusInvalid;
diff --git a/SmartDeviceLink/SDLIgnitionStatus.m b/SmartDeviceLink/public/SDLIgnitionStatus.m
index b2ccf9881..b2ccf9881 100644
--- a/SmartDeviceLink/SDLIgnitionStatus.m
+++ b/SmartDeviceLink/public/SDLIgnitionStatus.m
diff --git a/SmartDeviceLink/public/SDLImage.h b/SmartDeviceLink/public/SDLImage.h
new file mode 100644
index 000000000..6fba849da
--- /dev/null
+++ b/SmartDeviceLink/public/SDLImage.h
@@ -0,0 +1,75 @@
+// SDLImage.h
+//
+
+#import "SDLRPCMessage.h"
+
+#import "SDLImageType.h"
+#import "SDLStaticIconName.h"
+
+/**
+ * Specifies which image shall be used e.g. in SDLAlerts or on SDLSoftbuttons provided the display supports it.
+ *
+ * @since SDL 2.0
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLImage : SDLRPCStruct
+
+/**
+ * Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.
+ *
+ * @param name The unique name used to upload the image to SDL Core
+ * @param imageType Describes whether the image is static or dynamic
+ * @param isTemplate Whether or not the image is a template that can be (re)colored by the SDL HMI. Static images are templates by default.
+ * @return A SDLImage object
+ */
+- (instancetype)initWithName:(NSString *)name ofType:(SDLImageType)imageType isTemplate:(BOOL)isTemplate;
+
+/**
+ * Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.
+ *
+ * @param name The unique name used to upload the image to SDL Core
+ * @param isTemplate Whether or not the image is a template that can be (re)colored by the SDL HMI
+ * @return A SDLImage object
+ */
+- (instancetype)initWithName:(NSString *)name isTemplate:(BOOL)isTemplate;
+
+/**
+ * Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image's value.
+ *
+ * @param staticImageValue The image value assigned to the static image
+ * @return A SDLImage object
+ */
+- (instancetype)initWithStaticImageValue:(UInt16)staticImageValue;
+
+/**
+ * Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image's value.
+ *
+ * @param staticIconName A SDLStaticIconName value
+ * @return A SDLImage object
+ */
+- (instancetype)initWithStaticIconName:(SDLStaticIconName)staticIconName;
+
+/**
+ * The static hex icon value or the binary image file name identifier (sent by SDLPutFile)
+ *
+ * Required, max length = 65535
+ */
+@property (strong, nonatomic) NSString *value;
+
+/**
+ * Describes whether the image is static or dynamic
+ *
+ * Required
+ */
+@property (strong, nonatomic) SDLImageType imageType;
+
+/**
+ * Indicates that this image can be (re)colored by the HMI to best fit the current color scheme.
+ */
+@property (assign, nonatomic) NSNumber<SDLBool> *isTemplate;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLImage.m b/SmartDeviceLink/public/SDLImage.m
new file mode 100644
index 000000000..19c46cffe
--- /dev/null
+++ b/SmartDeviceLink/public/SDLImage.m
@@ -0,0 +1,70 @@
+// SDLImage.m
+//
+
+#import "SDLImage.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLImage
+
+- (instancetype)initWithName:(NSString *)name ofType:(SDLImageType)imageType isTemplate:(BOOL)isTemplate {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.value = name;
+ self.imageType = imageType;
+ self.isTemplate = @(isTemplate);
+
+ return self;
+}
+
+- (instancetype)initWithName:(NSString *)name isTemplate:(BOOL)isTemplate {
+ return [self initWithName:name ofType:SDLImageTypeDynamic isTemplate:isTemplate];
+}
+
+- (instancetype)initWithStaticImageValue:(UInt16)staticImageValue {
+ NSString *value = [NSString stringWithFormat:@"%hu", staticImageValue];
+ // All static images are templated by default
+ return [self initWithName:value ofType:SDLImageTypeStatic isTemplate:YES];
+}
+
+- (instancetype)initWithStaticIconName:(SDLStaticIconName)staticIconName {
+ return [self initWithName:staticIconName ofType:SDLImageTypeStatic isTemplate:YES];
+}
+
+#pragma mark - Getters / Setters
+
+- (void)setValue:(NSString *)value {
+ [self.store sdl_setObject:value forName:SDLRPCParameterNameValue];
+}
+
+- (NSString *)value {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameValue ofClass:NSString.class error:&error];
+}
+
+- (void)setImageType:(SDLImageType)imageType {
+ [self.store sdl_setObject:imageType forName:SDLRPCParameterNameImageType];
+}
+
+- (SDLImageType)imageType {
+ return [self.store sdl_enumForName:SDLRPCParameterNameImageType error:nil];
+}
+
+- (void)setIsTemplate:(NSNumber<SDLBool> *)isTemplate {
+ [self.store sdl_setObject:isTemplate forName:SDLRPCParameterNameImageTemplate];
+}
+
+- (NSNumber<SDLBool> *)isTemplate {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameImageTemplate ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLImageField.h b/SmartDeviceLink/public/SDLImageField.h
index 610b1a55c..610b1a55c 100644
--- a/SmartDeviceLink/SDLImageField.h
+++ b/SmartDeviceLink/public/SDLImageField.h
diff --git a/SmartDeviceLink/SDLImageField.m b/SmartDeviceLink/public/SDLImageField.m
index 85532ff80..85532ff80 100644
--- a/SmartDeviceLink/SDLImageField.m
+++ b/SmartDeviceLink/public/SDLImageField.m
diff --git a/SmartDeviceLink/public/SDLImageFieldName.h b/SmartDeviceLink/public/SDLImageFieldName.h
new file mode 100644
index 000000000..0bac7e2a8
--- /dev/null
+++ b/SmartDeviceLink/public/SDLImageFieldName.h
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#import "SDLEnum.h"
+
+/**
+ The name that identifies the field. Used in DisplayCapabilities.
+
+ @since SmartDeviceLink 3.0
+ */
+typedef SDLEnum SDLImageFieldName NS_TYPED_ENUM;
+
+/**
+ The image field for Alert
+ */
+extern SDLImageFieldName const SDLImageFieldNameAlertIcon;
+
+/**
+ The image field for SoftButton
+ */
+extern SDLImageFieldName const SDLImageFieldNameSoftButtonImage;
+
+/**
+ The first image field for Choice.
+ */
+extern SDLImageFieldName const SDLImageFieldNameChoiceImage;
+
+/**
+ The scondary image field for Choice.
+ */
+extern SDLImageFieldName const SDLImageFieldNameChoiceSecondaryImage;
+
+/**
+ The image field for vrHelpItem.
+ */
+extern SDLImageFieldName const SDLImageFieldNameVoiceRecognitionHelpItem;
+
+/**
+ The image field for Turn.
+ */
+extern SDLImageFieldName const SDLImageFieldNameTurnIcon;
+
+/**
+ The image field for the menu icon in SetGlobalProperties.
+ */
+extern SDLImageFieldName const SDLImageFieldNameMenuIcon;
+
+/** The image field for AddCommand.
+ *
+ */
+extern SDLImageFieldName const SDLImageFieldNameCommandIcon;
+
+/**
+ The image field for the app icon (set by setAppIcon).
+ */
+extern SDLImageFieldName const SDLImageFieldNameAppIcon;
+
+/** The primary image field for Show.
+ *
+ */
+extern SDLImageFieldName const SDLImageFieldNameGraphic;
+
+/** The secondary image field for Show.
+ *
+ */
+extern SDLImageFieldName const SDLImageFieldNameSecondaryGraphic;
+
+/** The primary image field for ShowConstant TBT.
+ *
+ */
+extern SDLImageFieldName const SDLImageFieldNameShowConstantTBTIcon;
+
+/**
+ The secondary image field for ShowConstant TBT.
+ */
+extern SDLImageFieldName const SDLImageFieldNameShowConstantTBTNextTurnIcon;
+
+/**
+ The optional image of a destination / location
+
+ @since SDL 4.0
+ */
+extern SDLImageFieldName const SDLImageFieldNameLocationImage;
+
+/**
+ * The image field for AddSubMenu.menuIcon
+ *
+ * @since SDL 7.0
+ */
+extern SDLImageFieldName const SDLImageFieldNameSubMenuIcon;
+
+/**
+ * The image of the subtle alert; applies to `SubtleAlert` `alertImage`
+ *
+ * @since SDL 7.0
+ */
+extern SDLImageFieldName const SDLImageFieldNameSubtleAlertIcon;
diff --git a/SmartDeviceLink/public/SDLImageFieldName.m b/SmartDeviceLink/public/SDLImageFieldName.m
new file mode 100644
index 000000000..dd195ce82
--- /dev/null
+++ b/SmartDeviceLink/public/SDLImageFieldName.m
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#import "SDLImageFieldName.h"
+
+SDLImageFieldName const SDLImageFieldNameAlertIcon = @"alertIcon";
+SDLImageFieldName const SDLImageFieldNameSoftButtonImage = @"softButtonImage";
+SDLImageFieldName const SDLImageFieldNameChoiceImage = @"choiceImage";
+SDLImageFieldName const SDLImageFieldNameChoiceSecondaryImage = @"choiceSecondaryImage";
+SDLImageFieldName const SDLImageFieldNameVoiceRecognitionHelpItem = @"vrHelpItem";
+SDLImageFieldName const SDLImageFieldNameTurnIcon = @"turnIcon";
+SDLImageFieldName const SDLImageFieldNameMenuIcon = @"menuIcon";
+SDLImageFieldName const SDLImageFieldNameCommandIcon = @"cmdIcon";
+SDLImageFieldName const SDLImageFieldNameAppIcon = @"appIcon";
+SDLImageFieldName const SDLImageFieldNameGraphic = @"graphic";
+SDLImageFieldName const SDLImageFieldNameSecondaryGraphic = @"secondaryGraphic";
+SDLImageFieldName const SDLImageFieldNameShowConstantTBTIcon = @"showConstantTBTIcon";
+SDLImageFieldName const SDLImageFieldNameShowConstantTBTNextTurnIcon = @"showConstantTBTNextTurnIcon";
+SDLImageFieldName const SDLImageFieldNameLocationImage = @"locationImage";
+SDLImageFieldName const SDLImageFieldNameSubMenuIcon = @"subMenuIcon";
+SDLImageFieldName const SDLImageFieldNameSubtleAlertIcon = @"subtleAlertIcon";
diff --git a/SmartDeviceLink/SDLImageResolution.h b/SmartDeviceLink/public/SDLImageResolution.h
index bd9a82ae4..bd9a82ae4 100644
--- a/SmartDeviceLink/SDLImageResolution.h
+++ b/SmartDeviceLink/public/SDLImageResolution.h
diff --git a/SmartDeviceLink/SDLImageResolution.m b/SmartDeviceLink/public/SDLImageResolution.m
index b94e81996..b94e81996 100644
--- a/SmartDeviceLink/SDLImageResolution.m
+++ b/SmartDeviceLink/public/SDLImageResolution.m
diff --git a/SmartDeviceLink/public/SDLImageType.h b/SmartDeviceLink/public/SDLImageType.h
new file mode 100644
index 000000000..06c27b78a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLImageType.h
@@ -0,0 +1,24 @@
+// SDLImageType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Contains information about the type of image. Used in Image.
+
+ @since SDL 2.0
+ */
+typedef SDLEnum SDLImageType NS_TYPED_ENUM;
+
+/**
+ Activate an icon that shipped with the IVI system by passing a hex value.
+ */
+extern SDLImageType const SDLImageTypeStatic;
+
+/**
+ An icon referencing an image uploaded by the app (identifier to be sent by SDLPutFile)
+
+ @see SDLPutFile
+ */
+extern SDLImageType const SDLImageTypeDynamic;
diff --git a/SmartDeviceLink/SDLImageType.m b/SmartDeviceLink/public/SDLImageType.m
index ef0d39038..ef0d39038 100644
--- a/SmartDeviceLink/SDLImageType.m
+++ b/SmartDeviceLink/public/SDLImageType.m
diff --git a/SmartDeviceLink/public/SDLInteractionMode.h b/SmartDeviceLink/public/SDLInteractionMode.h
new file mode 100644
index 000000000..326195f43
--- /dev/null
+++ b/SmartDeviceLink/public/SDLInteractionMode.h
@@ -0,0 +1,37 @@
+// SDLInteractionMode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ For application-initiated interactions (SDLPerformInteraction), this specifies the mode by which the user is prompted and by which the user's selection is indicated. Used in PerformInteraction.
+
+ @since SDL 1.0
+ */
+typedef SDLEnum SDLInteractionMode NS_TYPED_ENUM;
+
+/**
+ Interaction Mode : Manual Only
+
+ This mode causes the interaction to occur only on the display, meaning the choices are presented and selected only via the display. Selections are viewed with the SEEKRIGHT, SEEKLEFT, TUNEUP, TUNEDOWN buttons. User's selection is indicated with the OK button
+ */
+extern SDLInteractionMode const SDLInteractionModeManualOnly;
+
+/**
+ Interaction Mode : VR Only
+
+ This mode causes the interaction to occur only through TTS and VR. The user is prompted via TTS to select a choice by saying one of the choice's synonyms
+ */
+extern SDLInteractionMode const SDLInteractionModeVoiceRecognitionOnly;
+
+/**
+ Interaction Mode : Manual & VR
+
+ @discussion This mode is a combination of MANUAL_ONLY and VR_ONLY, meaning the user is prompted both visually and audibly. The user can make a selection either using the mode described in MANUAL_ONLY or using the mode described in VR_ONLY.
+
+ If the user views selections as described in MANUAL_ONLY mode, the interaction becomes strictly, and irreversibly, a MANUAL_ONLY interaction (i.e. the VR session is cancelled, although the interaction itself is still in progress). If the user interacts with the VR session in any way (e.g. speaks a phrase, even if it is not a recognized choice), the interaction becomes strictly, and irreversibly, a VR_ONLY interaction (i.e. the MANUAL_ONLY mode forms of interaction will no longer be honored)
+
+ The TriggerSource parameter of the *PerformInteraction* response will indicate which interaction mode the user finally chose to attempt the selection (even if the interaction did not end with a selection being made)
+ */
+extern SDLInteractionMode const SDLInteractionModeBoth;
diff --git a/SmartDeviceLink/SDLInteractionMode.m b/SmartDeviceLink/public/SDLInteractionMode.m
index 7bf24a388..7bf24a388 100644
--- a/SmartDeviceLink/SDLInteractionMode.m
+++ b/SmartDeviceLink/public/SDLInteractionMode.m
diff --git a/SmartDeviceLink/public/SDLKeyboardDelegate.h b/SmartDeviceLink/public/SDLKeyboardDelegate.h
new file mode 100644
index 000000000..652066d64
--- /dev/null
+++ b/SmartDeviceLink/public/SDLKeyboardDelegate.h
@@ -0,0 +1,98 @@
+//
+// SDLKeyboardDelegate.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 5/21/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLKeyboardEvent.h"
+
+@class SDLKeyboardProperties;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This handler is called when you wish to update your autocomplete text in response to the user's input
+
+ @param updatedAutocompleteText The autocomplete results to use
+ */
+typedef void(^SDLKeyboardAutocompleteCompletionHandler)(NSString *_Nullable updatedAutocompleteText);
+
+/**
+ This handler is called when you wish to update your autocomplete text in response to the user's input.
+
+ @param updatedAutoCompleteList The list of autocomplete results to use, a max of 100 items are allowed
+ */
+typedef void(^SDLKeyboardAutoCompleteResultsHandler)(NSArray<NSString *> *_Nullable updatedAutoCompleteList);
+
+/**
+ This handler is called when you wish to update your keyboard's limitedCharacterSet in response to the user's input
+
+ @param updatedCharacterSet The new set of characters to use
+ */
+typedef void(^SDLKeyboardCharacterSetCompletionHandler)(NSArray<NSString *> *_Nullable updatedCharacterSet);
+
+/// They delegate of a keyboard popup allowing customization at runtime of the keyboard.
+@protocol SDLKeyboardDelegate <NSObject>
+
+/**
+ The keyboard session completed with some input.
+
+ This will be sent upon ENTRY_SUBMITTED or ENTRY_VOICE. If the event is ENTRY_VOICE, the user requested to start a voice session in order to submit input to this keyboard. This MUST be handled by you. Start an Audio Pass Thru session if supported.
+
+ @param inputText The submitted input text on the keyboard
+ @param source ENTRY_SUBMITTED if the user pressed the submit button on the keyboard, ENTRY_VOICE if the user requested that a voice session begin
+ */
+- (void)userDidSubmitInput:(NSString *)inputText withEvent:(SDLKeyboardEvent)source;
+
+/**
+ The keyboard session aborted.
+
+ This will be sent if the keyboard event ENTRY_CANCELLED or ENTRY_ABORTED is sent
+
+ @param event ENTRY_CANCELLED if the user cancelled the keyboard input, or ENTRY_ABORTED if the system aborted the input due to a higher priority event
+ */
+- (void)keyboardDidAbortWithReason:(SDLKeyboardEvent)event;
+
+@optional
+/**
+ Implement this in order to provide a custom keyboard configuration to just this keyboard. To apply default settings to all keyboards, see SDLScreenManager.keyboardConfiguration
+
+ @return The custom keyboard configuration to use.
+ */
+- (SDLKeyboardProperties *)customKeyboardConfiguration;
+
+/**
+ Implement this if you wish to updated the KeyboardProperties.autoCompleteList as the user updates their input. This is called upon a KEYPRESS event.
+
+ This allows you to present a list of options that the user can use to fill in the search / text box with suggestions you provide.
+
+ @param currentInputText The user's full current input text
+ @param resultsHandler A completion handler to update the autoCompleteList
+ */
+- (void)updateAutocompleteWithInput:(NSString *)currentInputText autoCompleteResultsHandler:(SDLKeyboardAutoCompleteResultsHandler)resultsHandler;
+
+/**
+ Implement this if you wish to update the limitedCharacterSet as the user updates their input. This is called upon a KEYPRESS event.
+
+ @param currentInputText The user's full current input text
+ @param completionHandler A completion handler to update the limitedCharacterSet
+ */
+-(void)updateCharacterSetWithInput:(NSString *)currentInputText completionHandler:(SDLKeyboardCharacterSetCompletionHandler)completionHandler;
+
+// This will be sent for any event that occurs with the event and the current input text
+
+/**
+ Implement this to be notified of all events occurring on the keyboard
+
+ @param event The event that occurred
+ @param currentInputText The user's full current input text
+ */
+- (void)keyboardDidSendEvent:(SDLKeyboardEvent)event text:(NSString *)currentInputText;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLKeyboardEvent.h b/SmartDeviceLink/public/SDLKeyboardEvent.h
new file mode 100644
index 000000000..1ac7b67e4
--- /dev/null
+++ b/SmartDeviceLink/public/SDLKeyboardEvent.h
@@ -0,0 +1,39 @@
+// SDLKeyboardEvent.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Enumeration listing possible keyboard events. Used in OnKeyboardInput.
+
+ @since SmartDeviceLink 3.0
+ */
+typedef SDLEnum SDLKeyboardEvent NS_TYPED_ENUM;
+
+/**
+ The use has pressed the keyboard key (applies to both SINGLE_KEYPRESS and RESEND_CURRENT_ENTRY modes).
+ */
+extern SDLKeyboardEvent const SDLKeyboardEventKeypress;
+
+/**
+ The User has finished entering text from the keyboard and submitted the entry.
+ */
+extern SDLKeyboardEvent const SDLKeyboardEventSubmitted;
+
+/**
+ The User has pressed the HMI-defined "Cancel" button.
+ */
+extern SDLKeyboardEvent const SDLKeyboardEventCancelled;
+
+/**
+ The User has not finished entering text and the keyboard is aborted with the event of higher priority.
+ */
+extern SDLKeyboardEvent const SDLKeyboardEventAborted;
+
+/**
+ The user used voice as input for the keyboard
+
+ @since SDL 4.0
+ */
+extern SDLKeyboardEvent const SDLKeyboardEventVoice;
diff --git a/SmartDeviceLink/SDLKeyboardEvent.m b/SmartDeviceLink/public/SDLKeyboardEvent.m
index 67f4e60f2..67f4e60f2 100644
--- a/SmartDeviceLink/SDLKeyboardEvent.m
+++ b/SmartDeviceLink/public/SDLKeyboardEvent.m
diff --git a/SmartDeviceLink/public/SDLKeyboardLayout.h b/SmartDeviceLink/public/SDLKeyboardLayout.h
new file mode 100644
index 000000000..4b4e97550
--- /dev/null
+++ b/SmartDeviceLink/public/SDLKeyboardLayout.h
@@ -0,0 +1,27 @@
+// SDLKeyboardLayout.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Enumeration listing possible keyboard layouts. Used in KeyboardProperties.
+
+ Since SmartDeviceLink 3.0
+ */
+typedef SDLEnum SDLKeyboardLayout NS_TYPED_ENUM;
+
+/**
+ QWERTY layout (the name comes from the first six keys<br> appearing on the top left letter row of the keyboard and read from left to right)
+ */
+extern SDLKeyboardLayout const SDLKeyboardLayoutQWERTY;
+
+/**
+ QWERTZ layout (the name comes from the first six keys<br> appearing on the top left letter row of the keyboard and read from left to right)
+ */
+extern SDLKeyboardLayout const SDLKeyboardLayoutQWERTZ;
+
+/**
+ AZERTY layout (the name comes from the first six keys<br> appearing on the top left letter row of the keyboard and read from left to right)
+ */
+extern SDLKeyboardLayout const SDLKeyboardLayoutAZERTY;
diff --git a/SmartDeviceLink/SDLKeyboardLayout.m b/SmartDeviceLink/public/SDLKeyboardLayout.m
index 7fa8e1958..7fa8e1958 100644
--- a/SmartDeviceLink/SDLKeyboardLayout.m
+++ b/SmartDeviceLink/public/SDLKeyboardLayout.m
diff --git a/SmartDeviceLink/public/SDLKeyboardProperties.h b/SmartDeviceLink/public/SDLKeyboardProperties.h
new file mode 100644
index 000000000..5939d398f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLKeyboardProperties.h
@@ -0,0 +1,76 @@
+// SDLKeyboardProperties.h
+//
+
+#import "SDLRPCMessage.h"
+
+#import "SDLKeyboardLayout.h"
+#import "SDLKeypressMode.h"
+#import "SDLLanguage.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Configuration of on-screen keyboard (if available)
+ */
+@interface SDLKeyboardProperties : SDLRPCStruct
+
+/**
+ Create a Keyboard Properties RPC object
+
+ @param language The language to set the keyboard to
+ @param layout The layout of the keyboard
+ @param keypressMode The mode of keypresses to use
+ @param limitedCharacterList A list of characters restricting what the user is allowed to press
+ @param autoCompleteText A string to show to user to complete what they are typing
+ @param autoCompleteList A list of strings to show the user to complete what they are typing.
+ @return The RPC object
+ */
+- (instancetype)initWithLanguage:(nullable SDLLanguage)language layout:(nullable SDLKeyboardLayout)layout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteText:(nullable NSString *)autoCompleteText autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList;
+
+/**
+ The keyboard language
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) SDLLanguage language;
+
+/**
+ Desired keyboard layout
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) SDLKeyboardLayout keyboardLayout;
+
+/**
+ Desired keypress mode.
+
+ If omitted, this value will be set to RESEND_CURRENT_ENTRY.
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) SDLKeypressMode keypressMode;
+
+/**
+ Array of keyboard characters to enable. All omitted characters will be greyed out (disabled) on the keyboard. If omitted, the entire keyboard will be enabled.
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) NSArray<NSString *> *limitedCharacterList;
+
+/**
+ Allows an app to prepopulate the text field with a suggested or completed entry as the user types
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) NSString *autoCompleteText;
+
+/**
+ Allows an app to show a list of possible autocomplete suggestions as the user types
+
+ Optional, 1-100 items, max string length 1000 characters (note that these may not all be displayed on the screen)
+ */
+@property (nullable, strong, nonatomic) NSArray<NSString *> *autoCompleteList;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLKeyboardProperties.m b/SmartDeviceLink/public/SDLKeyboardProperties.m
new file mode 100644
index 000000000..5f6fa82dd
--- /dev/null
+++ b/SmartDeviceLink/public/SDLKeyboardProperties.m
@@ -0,0 +1,79 @@
+// SDLKeyboardProperties.m
+//
+
+#import "SDLKeyboardProperties.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLKeyboardProperties
+
+- (instancetype)initWithLanguage:(nullable SDLLanguage)language layout:(nullable SDLKeyboardLayout)layout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteText:(nullable NSString *)autoCompleteText autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.language = language;
+ self.keyboardLayout = layout;
+ self.keypressMode = keypressMode;
+ self.limitedCharacterList = [limitedCharacterList mutableCopy];
+ self.autoCompleteText = autoCompleteText;
+ self.autoCompleteList = autoCompleteList;
+
+ return self;
+}
+
+- (void)setLanguage:(nullable SDLLanguage)language {
+ [self.store sdl_setObject:language forName:SDLRPCParameterNameLanguage];
+}
+
+- (nullable SDLLanguage)language {
+ return [self.store sdl_enumForName:SDLRPCParameterNameLanguage error:nil];
+}
+
+- (void)setKeyboardLayout:(nullable SDLKeyboardLayout)keyboardLayout {
+ [self.store sdl_setObject:keyboardLayout forName:SDLRPCParameterNameKeyboardLayout];
+}
+
+- (nullable SDLKeyboardLayout)keyboardLayout {
+ return [self.store sdl_enumForName:SDLRPCParameterNameKeyboardLayout error:nil];
+}
+
+- (void)setKeypressMode:(nullable SDLKeypressMode)keypressMode {
+ [self.store sdl_setObject:keypressMode forName:SDLRPCParameterNameKeypressMode];
+}
+
+- (nullable SDLKeypressMode)keypressMode {
+ return [self.store sdl_enumForName:SDLRPCParameterNameKeypressMode error:nil];
+}
+
+- (void)setLimitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList {
+ [self.store sdl_setObject:limitedCharacterList forName:SDLRPCParameterNameLimitedCharacterList];
+}
+
+- (nullable NSArray<NSString *> *)limitedCharacterList {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameLimitedCharacterList ofClass:NSString.class error:nil];
+}
+
+- (void)setAutoCompleteText:(nullable NSString *)autoCompleteText {
+ [self.store sdl_setObject:autoCompleteText forName:SDLRPCParameterNameAutoCompleteText];
+}
+
+- (nullable NSString *)autoCompleteText {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAutoCompleteText ofClass:NSString.class error:nil];
+}
+
+- (void)setAutoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList {
+ [self.store sdl_setObject:autoCompleteList forName:SDLRPCParameterNameAutoCompleteList];
+}
+
+- (nullable NSArray<NSString *> *)autoCompleteList {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameAutoCompleteList ofClass:NSString.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLKeypressMode.h b/SmartDeviceLink/public/SDLKeypressMode.h
new file mode 100644
index 000000000..7607c4d3e
--- /dev/null
+++ b/SmartDeviceLink/public/SDLKeypressMode.h
@@ -0,0 +1,31 @@
+// SDLKeypressMode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Enumeration listing possible keyboard events.
+
+ Note: Depending on keypressMode value (from keyboardProperties structure of UI.SetGlobalProperties), HMI must send the onKeyboardInput notification with the following data:
+
+ SINGLE_KEYPRESS,QUEUE_KEYPRESSES,RESEND_CURRENT_ENTRY.
+
+ @since SmartDeviceLink 3.0
+ */
+typedef SDLEnum SDLKeypressMode NS_TYPED_ENUM;
+
+/**
+ SINGLE_KEYPRESS:<br>Each and every User`s keypress must be reported (new notification for every newly entered single symbol).
+ */
+extern SDLKeypressMode const SDLKeypressModeSingleKeypress;
+
+/**
+ QUEUE_KEYPRESSES:<br>The whole entry is reported only after the User submits it (by ‘Search’ button click displayed on touchscreen keyboard)
+ */
+extern SDLKeypressMode const SDLKeypressModeQueueKeypresses;
+
+/**
+ RESEND_CURRENT_ENTRY:<br>The whole entry must be reported each and every time the User makes a new keypress<br> (new notification with all previously entered symbols and a newly entered one appended).
+ */
+extern SDLKeypressMode const SDLKeypressModeResendCurrentEntry;
diff --git a/SmartDeviceLink/SDLKeypressMode.m b/SmartDeviceLink/public/SDLKeypressMode.m
index f4ba33df7..f4ba33df7 100644
--- a/SmartDeviceLink/SDLKeypressMode.m
+++ b/SmartDeviceLink/public/SDLKeypressMode.m
diff --git a/SmartDeviceLink/public/SDLLanguage.h b/SmartDeviceLink/public/SDLLanguage.h
new file mode 100644
index 000000000..98a962625
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLanguage.h
@@ -0,0 +1,207 @@
+// SDLLanguage.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Specifies the language to be used for TTS, VR, displayed messages/menus. Used in ChangeRegistration and RegisterAppInterface.
+
+ @since SDL 1.0
+ */
+typedef SDLEnum SDLLanguage NS_TYPED_ENUM;
+
+/**
+ English_SA
+ */
+extern SDLLanguage const SDLLanguageEnSa;
+
+/**
+ Hebrew_IL
+ */
+extern SDLLanguage const SDLLanguageHeIl;
+
+/**
+ Romainian_RO
+ */
+extern SDLLanguage const SDLLanguageRoRo;
+
+/**
+ Ukrainian_UA
+ */
+extern SDLLanguage const SDLLanguageUkUa;
+
+/**
+ Indonesian_ID
+ */
+extern SDLLanguage const SDLLanguageIdId;
+
+/**
+ Vietnamese_VN
+ */
+extern SDLLanguage const SDLLanguageViVn;
+
+/**
+ Malay_MY
+ */
+extern SDLLanguage const SDLLanguageMsMy;
+
+/**
+ Hindi_IN
+ */
+extern SDLLanguage const SDLLanguageHiIn;
+
+/**
+ Dutch(Flemish)_BE
+ */
+extern SDLLanguage const SDLLanguageNlBe;
+
+/**
+ Greek_GR
+ */
+extern SDLLanguage const SDLLanguageElGr;
+
+/**
+ Hungarian_HU
+ */
+extern SDLLanguage const SDLLanguageHuHu;
+
+/**
+ Finnish_FI
+ */
+extern SDLLanguage const SDLLanguageFiFi;
+
+/**
+ Slovak_SK
+ */
+extern SDLLanguage const SDLLanguageSkSk;
+
+/**
+ English_US
+ */
+extern SDLLanguage const SDLLanguageEnUs;
+
+/**
+ English - India
+ */
+extern SDLLanguage const SDLLanguageEnIn;
+
+/**
+ Thai - Thailand
+ */
+extern SDLLanguage const SDLLanguageThTh;
+
+/**
+ Spanish - Mexico
+ */
+extern SDLLanguage const SDLLanguageEsMx;
+
+/**
+ French - Canada
+ */
+extern SDLLanguage const SDLLanguageFrCa;
+
+/**
+ German - Germany
+ */
+extern SDLLanguage const SDLLanguageDeDe;
+
+/**
+ * Spanish - Spain
+ */
+extern SDLLanguage const SDLLanguageEsEs;
+
+/**
+ English - Great Britain
+ */
+extern SDLLanguage const SDLLanguageEnGb;
+
+/**
+Russian - Russia
+ */
+extern SDLLanguage const SDLLanguageRuRu;
+
+/**
+ Turkish - Turkey
+ */
+extern SDLLanguage const SDLLanguageTrTr;
+
+/**
+ Polish - Poland
+ */
+extern SDLLanguage const SDLLanguagePlPl;
+
+/**
+ French - France
+ */
+extern SDLLanguage const SDLLanguageFrFr;
+
+/**
+ Italian - Italy
+ */
+extern SDLLanguage const SDLLanguageItIt;
+
+/**
+ Swedish - Sweden
+ */
+extern SDLLanguage const SDLLanguageSvSe;
+
+/**
+ Portuguese - Portugal
+ */
+extern SDLLanguage const SDLLanguagePtPt;
+
+/**
+ Dutch (Standard) - Netherlands
+ */
+extern SDLLanguage const SDLLanguageNlNl;
+
+/**
+ English - Australia
+ */
+extern SDLLanguage const SDLLanguageEnAu;
+
+/**
+ Mandarin - China
+ */
+extern SDLLanguage const SDLLanguageZhCn;
+
+/**
+ Mandarin - Taiwan
+ */
+extern SDLLanguage const SDLLanguageZhTw;
+
+/**
+ Japanese - Japan
+ */
+extern SDLLanguage const SDLLanguageJaJp;
+
+/**
+ Arabic - Saudi Arabia
+ */
+extern SDLLanguage const SDLLanguageArSa;
+
+/**
+ Korean - South Korea
+ */
+extern SDLLanguage const SDLLanguageKoKr;
+
+/**
+ Portuguese - Brazil
+ */
+extern SDLLanguage const SDLLanguagePtBr;
+
+/**
+ Czech - Czech Republic
+ */
+extern SDLLanguage const SDLLanguageCsCz;
+
+/**
+ Danish - Denmark
+ */
+extern SDLLanguage const SDLLanguageDaDk;
+
+/**
+ Norwegian - Norway
+ */
+extern SDLLanguage const SDLLanguageNoNo;
diff --git a/SmartDeviceLink/SDLLanguage.m b/SmartDeviceLink/public/SDLLanguage.m
index 5995ed4a9..5995ed4a9 100644
--- a/SmartDeviceLink/SDLLanguage.m
+++ b/SmartDeviceLink/public/SDLLanguage.m
diff --git a/SmartDeviceLink/public/SDLLayoutMode.h b/SmartDeviceLink/public/SDLLayoutMode.h
new file mode 100644
index 000000000..583a32578
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLayoutMode.h
@@ -0,0 +1,37 @@
+// SDLLayoutMode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * For touchscreen interactions, the mode of how the choices are presented. Used in PerformInteraction.
+ *
+ * @since SDL 3.0
+ */
+typedef SDLEnum SDLLayoutMode NS_TYPED_ENUM;
+
+/**
+ * This mode causes the interaction to display the previous set of choices as icons.
+ */
+extern SDLLayoutMode const SDLLayoutModeIconOnly;
+
+/**
+ * This mode causes the interaction to display the previous set of choices as icons along with a search field in the HMI.
+ */
+extern SDLLayoutMode const SDLLayoutModeIconWithSearch;
+
+/**
+ * This mode causes the interaction to display the previous set of choices as a list.
+ */
+extern SDLLayoutMode const SDLLayoutModeListOnly;
+
+/**
+ * This mode causes the interaction to display the previous set of choices as a list along with a search field in the HMI.
+ */
+extern SDLLayoutMode const SDLLayoutModeListWithSearch;
+
+/**
+ * This mode causes the interaction to immediately display a keyboard entry through the HMI.
+ */
+extern SDLLayoutMode const SDLLayoutModeKeyboard;
diff --git a/SmartDeviceLink/SDLLayoutMode.m b/SmartDeviceLink/public/SDLLayoutMode.m
index 766b5ccfb..766b5ccfb 100644
--- a/SmartDeviceLink/SDLLayoutMode.m
+++ b/SmartDeviceLink/public/SDLLayoutMode.m
diff --git a/SmartDeviceLink/public/SDLLifecycleConfiguration.h b/SmartDeviceLink/public/SDLLifecycleConfiguration.h
new file mode 100644
index 000000000..af14f4402
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLifecycleConfiguration.h
@@ -0,0 +1,180 @@
+//
+// SDLManagerConfiguration.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/7/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLAppHMIType.h"
+#import "SDLLanguage.h"
+
+@class SDLFile;
+@class SDLTemplateColorScheme;
+@class SDLTTSChunk;
+@class SDLVersion;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// List of secondary transports
+typedef NS_OPTIONS(NSUInteger, SDLSecondaryTransports) {
+ /// No secondary transport
+ SDLSecondaryTransportsNone = 0,
+
+ /// TCP as secondary transport
+ SDLSecondaryTransportsTCP = 1 << 0
+};
+
+/**
+ * Configuration options for SDLManager
+ */
+@interface SDLLifecycleConfiguration : NSObject <NSCopying>
+
+/// Initializer unavailable
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * A production configuration that runs using IAP. Additional functionality should be customized on the properties.
+ *
+ * @param appName The name of the app.
+ * @param fullAppId The full app id to be used. This should be registered with the head unit's manufacturer. When set, the `appId` parameter will be set automatically to the first 10 non-dash characters of the `fullAppId`.
+ *
+ * @return The lifecycle configuration
+ */
++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId NS_SWIFT_NAME(init(appName:fullAppId:));
+
+/**
+ * A debug configuration that runs using TCP. Additional functionality should be customized on the properties.
+ *
+ * @param appName The name of the app.
+ * @param fullAppId The full app id to be used. This should be registered with the head unit's manufacturer. When set, the `appId` parameter will be set automatically to the first 10 non-dash characters of the `fullAppId` if the `fullAppId` is a valid UUID string. Otherwise, the `appId` parameter will be set to the same string as the `fullAppId` parameter. If you want to set the `appId` parameter separately, set the `fullAppId` here, then set the `appId` parameter separately.
+ * @param ipAddress The ip address of the server to connect to
+ * @param port The port of the server to connect to
+ *
+ * @return The lifecycle configuration
+ */
++ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId ipAddress:(NSString *)ipAddress port:(UInt16)port NS_SWIFT_NAME(init(appName:fullAppId:ipAddress:port:));
+
+/**
+ * Whether or not debug mode is enabled
+ */
+@property (assign, nonatomic, readonly) BOOL tcpDebugMode;
+
+/**
+ * The ip address at which the library will look for a server
+ */
+@property (copy, nonatomic, readonly, null_resettable) NSString *tcpDebugIPAddress;
+
+/**
+ * The port at which the library will look for a server
+ */
+@property (assign, nonatomic, readonly) UInt16 tcpDebugPort;
+
+/**
+ * The full name of the app
+ */
+@property (copy, nonatomic) NSString *appName;
+
+/**
+ * The app id. This must be the same as the app id received from the SDL developer portal.
+ *
+ * @see `fullAppId`
+ *
+ * Required
+ */
+@property (copy, nonatomic) NSString *appId;
+
+/**
+ * The full app id. This must be the same as the full app id received from the SDL developer portal.
+ *
+ * Optional
+ *
+ * @discussion The `fullAppId` is used to authenticate apps that connect with modules that support RPC spec v.5.0 and newer. If connecting with older modules, the `fullAppId` may be truncated to create the required `appId` needed to register the app on older modules. The `appId` is the first 10 non-dash ("-") characters of the `fullAppId` (e.g. if you have a `fullAppId` of 123e4567-e89b-12d3-a456-426655440000, the `appId` will be 123e4567e8).
+ */
+@property (copy, nonatomic, nullable, readonly) NSString *fullAppId;
+
+/**
+ * A hash id which should be passed to the remote system in the RegisterAppInterface
+ */
+@property (copy, nonatomic, nullable) NSString *resumeHash;
+
+/**
+ * This is an automatically set based on the app type
+ */
+@property (assign, nonatomic, readonly) BOOL isMedia;
+
+/**
+ * The application type
+ */
+@property (strong, nonatomic, null_resettable) SDLAppHMIType appType;
+
+/**
+ * Additional application types beyond `appType`
+ */
+@property (copy, nonatomic, nullable) NSArray<SDLAppHMIType> *additionalAppTypes;
+
+/**
+ * The default language to use
+ */
+@property (strong, nonatomic) SDLLanguage language;
+
+/**
+ * An array of all the supported languages
+ */
+@property (strong, nonatomic) NSArray<SDLLanguage> *languagesSupported;
+
+/**
+ * The application icon to be used on an app launching screen
+ */
+@property (strong, nonatomic, nullable) SDLFile *appIcon;
+
+/**
+ * An abbrevited application name that will be used on the app launching screen if the full one would be truncated
+ */
+@property (copy, nonatomic, nullable) NSString *shortAppName;
+
+/**
+ * A Text to Speech String for voice recognition of the mobile application name.
+ */
+@property (copy, nonatomic, nullable) NSArray<SDLTTSChunk *> *ttsName;
+
+/**
+ * Additional voice recognition commands. May not interfere with any other app name or global commands.
+ */
+@property (copy, nonatomic, nullable) NSArray<NSString *> *voiceRecognitionCommandNames;
+
+/**
+ * The color scheme to use when the head unit is in a light / day situation.
+ */
+@property (copy, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
+
+/**
+ * The color scheme to use when the head unit is in a dark / night situation.
+ */
+@property (copy, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
+
+/**
+ The minimum protocol version that will be permitted to connect. This defaults to 1.0.0. If the protocol version of the head unit connected is below this version, the app will disconnect with an EndService protocol message and will not register.
+ */
+@property (strong, nonatomic) SDLVersion *minimumProtocolVersion;
+
+/**
+ The minimum RPC version that will be permitted to connect. This defaults to 1.0.0. If the RPC version of the head unit connected is below this version, an UnregisterAppInterface will be sent.
+ */
+@property (strong, nonatomic) SDLVersion *minimumRPCVersion;
+
+/**
+ Which transports are permitted to be used as secondary transports. A secondary transport is a transport that is connected as an alternate, higher bandwidth transport for situations when a low-bandwidth primary transport (such as Bluetooth) will restrict certain features (such as video streaming navigation).
+
+ The only currently available secondary transport is TCP over WiFi. This is set to permit TCP by default, but it can be disabled by using SDLSecondaryTransportsNone instead.
+
+ This will only affect apps that have high-bandwidth requirements; currently that is only video streaming navigation apps.
+ */
+@property (assign, nonatomic) SDLSecondaryTransports allowedSecondaryTransports;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLLifecycleConfiguration.m b/SmartDeviceLink/public/SDLLifecycleConfiguration.m
new file mode 100644
index 000000000..47af7e63b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLifecycleConfiguration.m
@@ -0,0 +1,163 @@
+//
+// SDLManagerConfiguration.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/7/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLifecycleConfiguration.h"
+
+#import "SDLFile.h"
+#import "SDLVersion.h"
+
+static NSString *const DefaultTCPIPAddress = @"192.168.0.1";
+static UInt16 const DefaultTCPIPPort = 12345;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLifecycleConfiguration ()
+
+@property (assign, nonatomic, readwrite) BOOL tcpDebugMode;
+@property (copy, nonatomic, readwrite, null_resettable) NSString *tcpDebugIPAddress;
+@property (assign, nonatomic, readwrite) UInt16 tcpDebugPort;
+
+@end
+
+static NSUInteger const AppIdCharacterCount = 10;
+
+@implementation SDLLifecycleConfiguration
+
+#pragma mark Lifecycle
+
++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId {
+ return [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:fullAppId];
+}
+
++ (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId ipAddress:(NSString *)ipAddress port:(UInt16)port {
+ SDLLifecycleConfiguration *config = [[self alloc] initDefaultConfigurationWithAppName:appName fullAppId:fullAppId];
+
+ config.tcpDebugMode = YES;
+ config.tcpDebugIPAddress = ipAddress;
+ config.tcpDebugPort = port;
+
+ return config;
+}
+
+#pragma mark Initalization Helpers
+
+- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName fullAppId:(NSString *)fullAppId {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _tcpDebugMode = NO;
+ _tcpDebugIPAddress = DefaultTCPIPAddress;
+ _tcpDebugPort = DefaultTCPIPPort;
+
+ _appName = appName;
+ _appType = SDLAppHMITypeDefault;
+ _language = SDLLanguageEnUs;
+ _languagesSupported = @[_language];
+ _appIcon = nil;
+ _shortAppName = nil;
+ _ttsName = nil;
+ _voiceRecognitionCommandNames = nil;
+ _minimumProtocolVersion = [SDLVersion versionWithString:@"1.0.0"];
+ _minimumRPCVersion = [SDLVersion versionWithString:@"1.0.0"];
+ _allowedSecondaryTransports = SDLSecondaryTransportsTCP;
+
+ _fullAppId = fullAppId;
+ _appId = [self.class sdl_isValidUUID:fullAppId] ? [self.class sdl_shortAppIdFromFullAppId:fullAppId] : fullAppId;
+
+ return self;
+}
+
+#pragma mark - Computed Properties
+
+- (BOOL)isMedia {
+ if ([self.appType isEqualToEnum:SDLAppHMITypeMedia] || [self.additionalAppTypes containsObject:SDLAppHMITypeMedia]) {
+ return YES;
+ }
+
+ return NO;
+}
+
+- (void)setTcpDebugIPAddress:(nullable NSString *)tcpDebugIPAddress {
+ if (tcpDebugIPAddress == nil) {
+ _tcpDebugIPAddress = DefaultTCPIPAddress;
+ } else {
+ _tcpDebugIPAddress = tcpDebugIPAddress;
+ }
+}
+
+- (void)setAppType:(nullable SDLAppHMIType)appType {
+ if (appType == nil) {
+ _appType = SDLAppHMITypeDefault;
+ return;
+ }
+
+ _appType = appType;
+}
+
+#pragma mark - Full App ID Helpers
+
+/**
+ * Generates the `appId` from the `fullAppId`
+ *
+ * @discussion When an app is registered with an OEM, it is assigned an `appID` and a `fullAppID`. The `fullAppID` is the full UUID appID. The `appID` is the first 10 non-dash (i.e. "-") characters of the `fullAppID`.
+ *
+ * @param fullAppId A `fullAppId`
+ * @return An `appID` made of the first 10 non-dash characters of the "fullAppID"
+ */
++ (NSString *)sdl_shortAppIdFromFullAppId:(NSString *)fullAppId {
+ NSString *filteredString = [self sdl_filterDashesFromText:fullAppId];
+ return [filteredString substringToIndex:MIN(AppIdCharacterCount, filteredString.length)];
+}
+
+/**
+ * Filters the dash characters from a string
+ *
+ * @param text The string
+ * @return The string with all dash characters removed
+ */
++ (NSString *)sdl_filterDashesFromText:(NSString *)text {
+ NSCharacterSet *supportedCharacters = [NSCharacterSet characterSetWithCharactersInString:@"-"];
+ return [[text componentsSeparatedByCharactersInSet:supportedCharacters] componentsJoinedByString:@""];
+}
+
+/// Checks if a string is a valid UUID
+/// @param uuidString A string
+/// @return True if the string is a valid UUID, false if not
++ (BOOL)sdl_isValidUUID:(NSString *)uuidString {
+ NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:uuidString];
+ return uuid == nil ? NO : YES;
+}
+
+#pragma mark - NSCopying
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLLifecycleConfiguration *newConfig = [[self.class allocWithZone:zone] initDefaultConfigurationWithAppName:_appName fullAppId:_fullAppId];
+ newConfig->_tcpDebugMode = _tcpDebugMode;
+ newConfig->_tcpDebugIPAddress = _tcpDebugIPAddress;
+ newConfig->_tcpDebugPort = _tcpDebugPort;
+ newConfig->_appType = _appType;
+ newConfig->_additionalAppTypes = _additionalAppTypes;
+ newConfig->_language = _language;
+ newConfig->_languagesSupported = _languagesSupported;
+ newConfig->_appIcon = _appIcon;
+ newConfig->_shortAppName = _shortAppName;
+ newConfig->_ttsName = _ttsName;
+ newConfig->_voiceRecognitionCommandNames = _voiceRecognitionCommandNames;
+ newConfig->_dayColorScheme = _dayColorScheme;
+ newConfig->_nightColorScheme = _nightColorScheme;
+ newConfig->_allowedSecondaryTransports = _allowedSecondaryTransports;
+
+ return newConfig;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLifecycleConfigurationUpdate.h b/SmartDeviceLink/public/SDLLifecycleConfigurationUpdate.h
index d30ad3ece..d30ad3ece 100644
--- a/SmartDeviceLink/SDLLifecycleConfigurationUpdate.h
+++ b/SmartDeviceLink/public/SDLLifecycleConfigurationUpdate.h
diff --git a/SmartDeviceLink/SDLLifecycleConfigurationUpdate.m b/SmartDeviceLink/public/SDLLifecycleConfigurationUpdate.m
index b86688445..b86688445 100644
--- a/SmartDeviceLink/SDLLifecycleConfigurationUpdate.m
+++ b/SmartDeviceLink/public/SDLLifecycleConfigurationUpdate.m
diff --git a/SmartDeviceLink/SDLLightCapabilities.h b/SmartDeviceLink/public/SDLLightCapabilities.h
index 19f3024eb..19f3024eb 100644
--- a/SmartDeviceLink/SDLLightCapabilities.h
+++ b/SmartDeviceLink/public/SDLLightCapabilities.h
diff --git a/SmartDeviceLink/SDLLightCapabilities.m b/SmartDeviceLink/public/SDLLightCapabilities.m
index e2ea77793..e2ea77793 100644
--- a/SmartDeviceLink/SDLLightCapabilities.m
+++ b/SmartDeviceLink/public/SDLLightCapabilities.m
diff --git a/SmartDeviceLink/public/SDLLightControlCapabilities.h b/SmartDeviceLink/public/SDLLightControlCapabilities.h
new file mode 100644
index 000000000..b062f3afa
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLightControlCapabilities.h
@@ -0,0 +1,51 @@
+// SDLLightControlCapabilities.h
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLModuleInfo.h"
+
+@class SDLLightCapabilities;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Current light control capabilities.
+///
+/// @since RPC 5.0
+@interface SDLLightControlCapabilities : SDLRPCStruct
+
+/**
+ Constructs a newly allocated SDLLightControlCapabilities object with given parameters
+
+
+ @param moduleName friendly name of the light control module
+ @param moduleInfo information about a RC module, including its id
+ @param supportedLights array of available LightCapabilities
+ @return An instance of the SDLLightControlCapabilities class
+ */
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo supportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights;
+
+/**
+ * @abstract The short friendly name of the light control module.
+ * It should not be used to identify a module by mobile application.
+ *
+ * Required, Max String length 100 chars
+ */
+@property (strong, nonatomic) NSString *moduleName;
+
+/**
+ * @abstract An array of available LightCapabilities that are controllable.
+ *
+ * Required, NSArray of type SDLLightCapabilities minsize="1" maxsize="100"
+ */
+@property (strong, nonatomic) NSArray<SDLLightCapabilities *> *supportedLights;
+
+/**
+ * Information about a RC module, including its id.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLLightControlCapabilities.m b/SmartDeviceLink/public/SDLLightControlCapabilities.m
new file mode 100644
index 000000000..759283647
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLightControlCapabilities.m
@@ -0,0 +1,54 @@
+// SDLLightControlCapabilities.m
+//
+
+#import "SDLLightControlCapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "NSMutableDictionary+Store.h"
+#import "SDLLightCapabilities.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLLightControlCapabilities
+
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo supportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+ self.moduleName = moduleName;
+ self.moduleInfo = moduleInfo;
+ self.supportedLights = supportedLights;
+
+ return self;
+}
+
+- (void)setModuleName:(NSString *)moduleName {
+ [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
+}
+
+- (NSString *)moduleName {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
+}
+
+- (void)setSupportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights {
+ [self.store sdl_setObject:supportedLights forName:SDLRPCParameterNameSupportedLights];
+
+}
+
+- (NSArray<SDLLightCapabilities *> *)supportedLights {
+ NSError *error = nil;
+ return [self.store sdl_objectsForName:SDLRPCParameterNameSupportedLights ofClass:SDLLightCapabilities.class error:&error];
+}
+
+- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
+}
+
+- (nullable SDLModuleInfo *)moduleInfo {
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLightControlData.h b/SmartDeviceLink/public/SDLLightControlData.h
index a76d4c727..a76d4c727 100644
--- a/SmartDeviceLink/SDLLightControlData.h
+++ b/SmartDeviceLink/public/SDLLightControlData.h
diff --git a/SmartDeviceLink/SDLLightControlData.m b/SmartDeviceLink/public/SDLLightControlData.m
index f9699d805..f9699d805 100644
--- a/SmartDeviceLink/SDLLightControlData.m
+++ b/SmartDeviceLink/public/SDLLightControlData.m
diff --git a/SmartDeviceLink/public/SDLLightName.h b/SmartDeviceLink/public/SDLLightName.h
new file mode 100644
index 000000000..15cda053b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLightName.h
@@ -0,0 +1,259 @@
+// SDLLightName.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * The name that identifies the Light
+ *
+ */
+typedef SDLEnum SDLLightName NS_TYPED_ENUM;
+
+/**
+ * @abstract Represents the Light with name FRONT_LEFT_HIGH_BEAM.
+ */
+extern SDLLightName const SDLLightNameFrontLeftHighBeam;
+
+/**
+ * @abstract Represents the Light with name FRONT_RIGHT_HIGH_BEAM.
+ */
+extern SDLLightName const SDLLightNameFrontRightHighBeam;
+
+/**
+ * @abstract Represents the Light with name FRONT_LEFT_LOW_BEAM.
+ */
+extern SDLLightName const SDLLightNameFrontLeftLowBeam;
+
+/**
+ * @abstract Represents the Light with name FRONT_RIGHT_LOW_BEAM.
+ */
+extern SDLLightName const SDLLightNameFrontRightLowBeam;
+
+/**
+ * @abstract Represents the Light with name FRONT_LEFT_PARKING_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontLeftParkingLight;
+
+/**
+ * @abstract Represents the Light with name FRONT_RIGHT_PARKING_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontRightParkingLight;
+
+/**
+ * @abstract Represents the Light with name FRONT_LEFT_FOG_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontLeftFogLight;
+
+/**
+ * @abstract Represents the Light with name FRONT_RIGHT_FOG_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontRightFogLight;
+
+/**
+ * @abstract Represents the Light with name FRONT_LEFT_DAYTIME_RUNNING_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontLeftDaytimeRunningLight;
+
+/**
+ * @abstract Represents the Light with name FRONT_RIGHT_DAYTIME_RUNNING_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontRightDaytimeRunningLight;
+
+/**
+ * @abstract Represents the Light with name FRONT_LEFT_TURN_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontLeftTurnLight;
+
+/**
+ * @abstract Represents the Light with name FRONT_Right_TURN_LIGHT
+ */
+extern SDLLightName const SDLLightNameFrontRightTurnLight;
+
+/**
+ * @abstract Represents the Light with name REAR_LEFT_FOG_LIGHT.
+ */
+extern SDLLightName const SDLLightNameRearLeftFogLight;
+
+/**
+ * @abstract Represents the Light with name REAR_RIGHT_FOG_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearRightFogLight;
+
+/**
+ * @abstract Represents the Light with name REAR_LEFT_TAIL_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearLeftTailLight;
+
+/**
+ * @abstract Represents the Light with name REAR_RIGHT_TAIL_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearRightTailLight;
+
+/**
+ * @abstract Represents the Light with name REAR_LEFT_BRAKE_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearLeftBrakeLight;
+
+/**
+ * @abstract Represents the Light with name REAR_RIGHT_BRAKE_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearRightBrakeLight;
+
+/**
+ * @abstract Represents the Light with name REAR_LEFT_TURN_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearLeftTurnLight;
+
+/**
+ * @abstract Represents the Light with name REAR_RIGHT_TURN_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearRightTurnLight;
+
+/**
+ * @abstract Represents the Light with name REAR_REGISTRATION_PLATE_LIGHT
+ */
+extern SDLLightName const SDLLightNameRearRegistrationPlateLight;
+
+#pragma mark - Exterior Lights by common function groups
+/**
+ * @abstract Include all high beam lights: front_left and front_right.
+ */
+extern SDLLightName const SDLLightNameHighBeams;
+
+/**
+ * @abstract Include all low beam lights: front_left and front_right.
+ */
+extern SDLLightName const SDLLightNameLowBeams;
+
+/**
+ * @abstract Include all fog lights: front_left, front_right, rear_left and rear_right.
+ */
+extern SDLLightName const SDLLightNameFogLights;
+
+/**
+ * @abstract Include all daytime running lights: front_left and front_right.
+ */
+extern SDLLightName const SDLLightNameRunningLights;
+
+/**
+ * @abstract Include all parking lights: front_left and front_right.
+ */
+extern SDLLightName const SDLLightNameParkingLights;
+
+/**
+ * @abstract Include all brake lights: rear_left and rear_right.
+ */
+extern SDLLightName const SDLLightNameBrakeLights;
+
+/**
+ * @abstract Represents the Light with name REAR_REVERSING_LIGHTS
+ */
+extern SDLLightName const SDLLightNameRearReversingLights;
+
+/**
+ * @abstract Represents the Light with name SIDE_MARKER_LIGHTS
+ */
+extern SDLLightName const SDLLightNameSideMarkerLights;
+
+/**
+ * @abstract Include all left turn signal lights: front_left, rear_left, left_side and mirror_mounted.
+ */
+extern SDLLightName const SDLLightNameLeftTurnLights;
+
+/**
+ * @abstract Include all right turn signal lights: front_right, rear_right, right_side and mirror_mounted.
+ */
+extern SDLLightName const SDLLightNameRightTurnLights;
+
+/**
+ * @abstract Include all hazard lights: front_left, front_right, rear_left and rear_right.
+ */
+extern SDLLightName const SDLLightNameHazardLights;
+
+#pragma mark - Interior Lights by common function groups
+
+/**
+ * @abstract Represents the Light with name AMBIENT_LIGHTS
+ */
+extern SDLLightName const SDLLightNameAmbientLights;
+
+/**
+ * @abstract Represents the Light with name OVERHEAD_LIGHTS
+ */
+extern SDLLightName const SDLLightNameOverHeadLights;
+
+/**
+ * @abstract Represents the Light with name READING_LIGHTS
+ */
+extern SDLLightName const SDLLightNameReadingLights;
+
+/**
+ * @abstract Represents the Light with name TRUNK_LIGHTS
+ */
+extern SDLLightName const SDLLightNameTrunkLights;
+
+#pragma mark - Lights by location
+
+/**
+ * @abstract Include exterior lights located in front of the vehicle. For example, fog lights and low beams.
+ */
+extern SDLLightName const SDLLightNameExteriorFrontLights;
+
+/**
+ * @abstract Include exterior lights located at the back of the vehicle.
+ * For example, license plate lights, reverse lights, cargo lights, bed lights an trailer assist lights.
+ */
+extern SDLLightName const SDLLightNameExteriorRearLights;
+
+/**
+ * @abstract Include exterior lights located at the left side of the vehicle.
+ * For example, left puddle lights and spot lights.
+ */
+extern SDLLightName const SDLLightNameExteriorLeftLights;
+
+/**
+ * @abstract Include exterior lights located at the right side of the vehicle.
+ * For example, right puddle lights and spot lights.
+ */
+extern SDLLightName const SDLLightNameExteriorRightLights;
+
+/**
+ * @abstract Cargo lamps illuminate the cargo area.
+ */
+extern SDLLightName const SDLLightNameExteriorRearCargoLights;
+
+/**
+ * @abstract Truck bed lamps light up the bed of the truck.
+ */
+extern SDLLightName const SDLLightNameExteriorRearTruckBedLights;
+
+/**
+ * @abstract Trailer lights are lamps mounted on a trailer hitch.
+ */
+extern SDLLightName const SDLLightNameExteriorRearTrailerLights;
+
+/**
+ * @abstract It is the spotlights mounted on the left side of a vehicle.
+ *
+ */
+extern SDLLightName const SDLLightNameExteriorLeftSpotLights;
+
+/**
+ * @abstract It is the spotlights mounted on the right side of a vehicle.
+ */
+extern SDLLightName const SDLLightNameExteriorRightSpotLights;
+
+/**
+ * @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.
+ */
+extern SDLLightName const SDLLightNameExteriorLeftPuddleLights;
+
+/**
+ * @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.
+ */
+extern SDLLightName const SDLLightNameExteriorRightPuddleLights;
+
+/**
+ * @abstract Include all exterior lights around the vehicle.
+ */
+extern SDLLightName const SDLLightNameExteriorAllLights;
diff --git a/SmartDeviceLink/SDLLightName.m b/SmartDeviceLink/public/SDLLightName.m
index f236bea07..f236bea07 100644
--- a/SmartDeviceLink/SDLLightName.m
+++ b/SmartDeviceLink/public/SDLLightName.m
diff --git a/SmartDeviceLink/SDLLightState.h b/SmartDeviceLink/public/SDLLightState.h
index 296fbceee..296fbceee 100644
--- a/SmartDeviceLink/SDLLightState.h
+++ b/SmartDeviceLink/public/SDLLightState.h
diff --git a/SmartDeviceLink/SDLLightState.m b/SmartDeviceLink/public/SDLLightState.m
index cfd13c2f9..cfd13c2f9 100644
--- a/SmartDeviceLink/SDLLightState.m
+++ b/SmartDeviceLink/public/SDLLightState.m
diff --git a/SmartDeviceLink/public/SDLLightStatus.h b/SmartDeviceLink/public/SDLLightStatus.h
new file mode 100644
index 000000000..108cd420d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLightStatus.h
@@ -0,0 +1,40 @@
+// SDLLightStatus.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of Light.
+ *
+ */
+typedef SDLEnum SDLLightStatus NS_TYPED_ENUM;
+
+/**
+ * @abstract Light status currently on.
+ */
+extern SDLLightStatus const SDLLightStatusOn;
+
+/**
+ * @abstract Light status currently Off.
+ */
+extern SDLLightStatus const SDLLightStatusOFF;
+
+/**
+ * @abstract Light status currently RAMP_UP.
+ */
+extern SDLLightStatus const SDLLightStatusRampUp;
+
+/**
+ * @abstract Light status currently RAMP_DOWN.
+ */
+extern SDLLightStatus const SDLLightStatusRampDown;
+
+/**
+ * @abstract Light status currently UNKNOWN.
+ */
+extern SDLLightStatus const SDLLightStatusUnknown;
+
+/**
+ * @abstract Light status currently INVALID.
+ */
+extern SDLLightStatus const SDLLightStatusInvalid;
diff --git a/SmartDeviceLink/SDLLightStatus.m b/SmartDeviceLink/public/SDLLightStatus.m
index d3ede6321..d3ede6321 100644
--- a/SmartDeviceLink/SDLLightStatus.m
+++ b/SmartDeviceLink/public/SDLLightStatus.m
diff --git a/SmartDeviceLink/SDLListFiles.h b/SmartDeviceLink/public/SDLListFiles.h
index 28bf706b8..28bf706b8 100644
--- a/SmartDeviceLink/SDLListFiles.h
+++ b/SmartDeviceLink/public/SDLListFiles.h
diff --git a/SmartDeviceLink/SDLListFiles.m b/SmartDeviceLink/public/SDLListFiles.m
index 2dd53639e..2dd53639e 100644
--- a/SmartDeviceLink/SDLListFiles.m
+++ b/SmartDeviceLink/public/SDLListFiles.m
diff --git a/SmartDeviceLink/SDLListFilesResponse.h b/SmartDeviceLink/public/SDLListFilesResponse.h
index b5ddef16e..b5ddef16e 100644
--- a/SmartDeviceLink/SDLListFilesResponse.h
+++ b/SmartDeviceLink/public/SDLListFilesResponse.h
diff --git a/SmartDeviceLink/SDLListFilesResponse.m b/SmartDeviceLink/public/SDLListFilesResponse.m
index a70c842b1..a70c842b1 100644
--- a/SmartDeviceLink/SDLListFilesResponse.m
+++ b/SmartDeviceLink/public/SDLListFilesResponse.m
diff --git a/SmartDeviceLink/SDLLocationCoordinate.h b/SmartDeviceLink/public/SDLLocationCoordinate.h
index abc0beefe..abc0beefe 100644
--- a/SmartDeviceLink/SDLLocationCoordinate.h
+++ b/SmartDeviceLink/public/SDLLocationCoordinate.h
diff --git a/SmartDeviceLink/SDLLocationCoordinate.m b/SmartDeviceLink/public/SDLLocationCoordinate.m
index 5130f75c7..5130f75c7 100644
--- a/SmartDeviceLink/SDLLocationCoordinate.m
+++ b/SmartDeviceLink/public/SDLLocationCoordinate.m
diff --git a/SmartDeviceLink/SDLLocationDetails.h b/SmartDeviceLink/public/SDLLocationDetails.h
index 4b41d3f4d..4b41d3f4d 100644
--- a/SmartDeviceLink/SDLLocationDetails.h
+++ b/SmartDeviceLink/public/SDLLocationDetails.h
diff --git a/SmartDeviceLink/SDLLocationDetails.m b/SmartDeviceLink/public/SDLLocationDetails.m
index 6d34852e8..6d34852e8 100644
--- a/SmartDeviceLink/SDLLocationDetails.m
+++ b/SmartDeviceLink/public/SDLLocationDetails.m
diff --git a/SmartDeviceLink/public/SDLLockScreenConfiguration.h b/SmartDeviceLink/public/SDLLockScreenConfiguration.h
new file mode 100644
index 000000000..50989c974
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLockScreenConfiguration.h
@@ -0,0 +1,104 @@
+//
+// SDLLockScreenConfiguration.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/13/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Describes when the lock screen should be shown.
+ */
+typedef NS_ENUM(NSUInteger, SDLLockScreenConfigurationDisplayMode) {
+ /// The lock screen should never be shown. This should almost always mean that you will build your own lock screen.
+ SDLLockScreenConfigurationDisplayModeNever,
+
+ /// The lock screen should only be shown when it is required by the head unit.
+ SDLLockScreenConfigurationDisplayModeRequiredOnly,
+
+ /// The lock screen should be shown when required by the head unit or when the head unit says that its optional, but *not* in other cases, such as before the user has interacted with your app on the head unit.
+ SDLLockScreenConfigurationDisplayModeOptionalOrRequired,
+
+ /// The lock screen should always be shown after connection.
+ SDLLockScreenConfigurationDisplayModeAlways
+};
+
+/**
+ A configuration describing how the lock screen should be used by the internal SDL system for your application. This configuration is provided before SDL starts and will govern the entire SDL lifecycle of your application.
+ */
+@interface SDLLockScreenConfiguration : NSObject <NSCopying>
+
+/**
+ Describes when the lock screen will be displayed. Defaults to `SDLLockScreenConfigurationDisplayModeRequiredOnly`.
+ */
+@property (assign, nonatomic) SDLLockScreenConfigurationDisplayMode displayMode;
+
+/**
+ If YES, then the lock screen can be dismissed with a downward swipe on compatible head units. Requires a connection of SDL 6.0+ and the head unit to enable the feature. Defaults to YES.
+ */
+@property (assign, nonatomic) BOOL enableDismissGesture;
+
+/**
+ If YES, then the lockscreen will show the vehicle's logo if the vehicle has made it available. If NO, then the lockscreen will not show the vehicle logo. Defaults to YES.
+*/
+@property (assign, nonatomic) BOOL showDeviceLogo;
+
+/**
+ * The background color of the lock screen. This could be a branding color, or leave at the default for a dark blue-gray.
+ */
+@property (copy, nonatomic, readonly) UIColor *backgroundColor;
+
+/**
+ * Your app icon as it will appear on the lock screen.
+ */
+@property (copy, nonatomic, readonly, nullable) UIImage *appIcon;
+
+/**
+ * A custom view controller that the lock screen will manage the presentation of.
+ */
+@property (strong, nonatomic, readonly, nullable) UIViewController *customViewController;
+
+/// Initializer unavailable
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ * Use this configuration if you wish to manage a lock screen yourself. This may be useful if the automatic presentation feature of SDLLockScreenManager is failing for some reason.
+ *
+ * @return The configuration
+ */
++ (instancetype)disabledConfiguration;
+
+/**
+ * Use this configuration for the basic default lock screen. A custom app icon will not be used.
+ *
+ * @return The configuration
+ */
++ (instancetype)enabledConfiguration;
+
+/**
+ * Use this configuration to provide a custom lock screen icon and a custom background color, or nil if you wish to use the default background color. This will use the default lock screen layout.
+ *
+ * @param lockScreenAppIcon The app icon to be shown on the lock screen
+ * @param lockScreenBackgroundColor The color of the lock screen background
+ *
+ * @return The configuration
+ */
++ (instancetype)enabledConfigurationWithAppIcon:(UIImage *)lockScreenAppIcon backgroundColor:(nullable UIColor *)lockScreenBackgroundColor;
+
+/**
+ * Use this configuration if you wish to provide your own view controller for the lock screen. This view controller's presentation and dismissal will still be managed by the lock screen manager. Note that you may subclass SDLLockScreenViewController and pass it here to continue to have the vehicle icon set to your view controller by the manager.
+ *
+ * @param viewController The view controller to be managed
+ *
+ * @return The configuration
+ */
++ (instancetype)enabledConfigurationWithViewController:(UIViewController *)viewController;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLLockScreenConfiguration.m b/SmartDeviceLink/public/SDLLockScreenConfiguration.m
new file mode 100644
index 000000000..183e3bc1f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLockScreenConfiguration.m
@@ -0,0 +1,72 @@
+//
+// SDLLockScreenConfiguration.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/13/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLockScreenConfiguration.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLLockScreenConfiguration
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithDisplayMode:(SDLLockScreenConfigurationDisplayMode)mode enableDismissGesture:(BOOL)enableDismissGesture showDeviceLogo:(BOOL)showDeviceLogo backgroundColor:(UIColor *)backgroundColor appIcon:(nullable UIImage *)appIcon viewController:(nullable UIViewController *)customViewController {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _displayMode = mode;
+ _enableDismissGesture = enableDismissGesture;
+ _backgroundColor = backgroundColor;
+ _appIcon = appIcon;
+ _customViewController = customViewController;
+ _showDeviceLogo = showDeviceLogo;
+
+ return self;
+}
+
++ (instancetype)disabledConfiguration {
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeNever enableDismissGesture:NO showDeviceLogo:NO backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
+}
+
++ (instancetype)enabledConfiguration {
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:[self sdl_defaultBackgroundColor] appIcon:nil viewController:nil];
+}
+
++ (instancetype)enabledConfigurationWithAppIcon:(UIImage *)lockScreenAppIcon backgroundColor:(nullable UIColor *)lockScreenBackgroundColor {
+ if (lockScreenBackgroundColor == nil) {
+ lockScreenBackgroundColor = [self.class sdl_defaultBackgroundColor];
+ }
+
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:lockScreenBackgroundColor appIcon:lockScreenAppIcon viewController:nil];
+}
+
++ (instancetype)enabledConfigurationWithViewController:(UIViewController *)viewController {
+ return [[self alloc] initWithDisplayMode:SDLLockScreenConfigurationDisplayModeRequiredOnly enableDismissGesture:YES showDeviceLogo:YES backgroundColor:[self.class sdl_defaultBackgroundColor] appIcon:nil viewController:viewController];
+}
+
+
+#pragma mark - Defaults
+
++ (UIColor *)sdl_defaultBackgroundColor {
+ return [UIColor colorWithRed:(57.0 / 255.0) green:(78.0 / 255.0) blue:(96.0 / 255.0) alpha:1.0];
+}
+
+
+#pragma mark - NSCopying
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLLockScreenConfiguration *new = [[SDLLockScreenConfiguration allocWithZone:zone] initWithDisplayMode:_displayMode enableDismissGesture:_enableDismissGesture showDeviceLogo:_showDeviceLogo backgroundColor:_backgroundColor appIcon:_appIcon viewController:_customViewController];
+
+ return new;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLockScreenViewController.h b/SmartDeviceLink/public/SDLLockScreenViewController.h
index acce47b1f..acce47b1f 100644
--- a/SmartDeviceLink/SDLLockScreenViewController.h
+++ b/SmartDeviceLink/public/SDLLockScreenViewController.h
diff --git a/SmartDeviceLink/SDLLockScreenViewController.m b/SmartDeviceLink/public/SDLLockScreenViewController.m
index 6fc91e9ea..6fc91e9ea 100644
--- a/SmartDeviceLink/SDLLockScreenViewController.m
+++ b/SmartDeviceLink/public/SDLLockScreenViewController.m
diff --git a/SmartDeviceLink/public/SDLLogConfiguration.h b/SmartDeviceLink/public/SDLLogConfiguration.h
new file mode 100644
index 000000000..79347660c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLogConfiguration.h
@@ -0,0 +1,81 @@
+//
+// SDLLogConfiguration.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 2/27/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLLogConstants.h"
+#import "SDLLogFilter.h"
+#import "SDLLogTarget.h"
+
+@class SDLLogFileModule;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Information about the current logging configuration
+@interface SDLLogConfiguration : NSObject <NSCopying>
+
+/**
+ Any custom logging modules used by the developer's code. Defaults to none.
+ */
+@property (copy, nonatomic) NSSet<SDLLogFileModule *> *modules;
+
+/**
+ Where the logs will attempt to output. Defaults to Console.
+ */
+@property (copy, nonatomic) NSSet<id<SDLLogTarget>> *targets;
+
+/**
+ What log filters will run over this session. Defaults to none.
+ */
+@property (copy, nonatomic) NSSet<SDLLogFilter *> *filters;
+
+/**
+ How detailed of logs will be output. Defaults to Default.
+ */
+@property (assign, nonatomic) SDLLogFormatType formatType;
+
+/**
+ Whether or not logs will be run on a separate queue, asynchronously, allowing the following code to run before the log completes. Or if it will occur synchronously, which will prevent logs from being missed, but will slow down surrounding code. Defaults to YES.
+ */
+@property (assign, nonatomic, getter=isAsynchronous) BOOL asynchronous;
+
+/**
+ Whether or not error logs will be dispatched to loggers asynchronously. Defaults to NO.
+ */
+@property (assign, nonatomic, getter=areErrorsAsynchronous) BOOL errorsAsynchronous;
+
+/**
+ Whether or not assert logs will fire assertions in DEBUG mode. Assertions are always disabled in RELEASE builds. If assertions are disabled, only an error log will fire instead. Defaults to NO.
+ */
+@property (assign, nonatomic, getter=areAssertionsDisabled) BOOL disableAssertions;
+
+/**
+ Any modules that do not have an explicitly specified level will by default use the global log level. Defaults to Error.
+ Do not specify Default for this parameter.
+ */
+@property (assign, nonatomic) SDLLogLevel globalLogLevel;
+
+
+/**
+ A default logger for production. This sets the format type to Default, the log level to Error, and the target to SDLLogTargetOSLog.
+
+ @return A default configuration that may be customized.
+ */
++ (instancetype)defaultConfiguration;
+
+/**
+ A debug logger for use in development. This sets the format type to Detailed, the log level to Debug, and enables the Console and ASL loggers.
+
+ @return A debug configuration that may be customized.
+ */
++ (instancetype)debugConfiguration;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLLogConfiguration.m b/SmartDeviceLink/public/SDLLogConfiguration.m
new file mode 100644
index 000000000..12f75173e
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLogConfiguration.m
@@ -0,0 +1,85 @@
+//
+// SDLLogConfiguration.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 2/27/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLogConfiguration.h"
+
+#import "SDLLogFileModule.h"
+#import "SDLLogFileModuleMap.h"
+#import "SDLLogTargetAppleSystemLog.h"
+#import "SDLLogTargetOSLog.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLLogConfiguration
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _modules = [NSSet set];
+ _targets = [NSSet set];
+ _filters = [NSSet set];
+ _formatType = SDLLogFormatTypeDefault;
+ _asynchronous = YES;
+ _errorsAsynchronous = NO;
+ _disableAssertions = NO;
+ _globalLogLevel = SDLLogLevelError;
+
+ return self;
+}
+
+- (instancetype)initWithDefaultConfiguration {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ _targets = [NSSet setWithArray:@[[SDLLogTargetOSLog logger]]];
+ _modules = [SDLLogFileModuleMap sdlModuleMap];
+
+ return self;
+}
+
++ (instancetype)defaultConfiguration {
+ return [[self.class alloc] initWithDefaultConfiguration];
+}
+
+- (instancetype)initWithDebugConfiguration {
+ self = [self initWithDefaultConfiguration];
+ if (!self) { return nil; }
+
+ _formatType = SDLLogFormatTypeDetailed;
+ _globalLogLevel = SDLLogLevelDebug;
+
+ return self;
+}
+
++ (instancetype)debugConfiguration {
+ return [[self.class alloc] initWithDebugConfiguration];
+}
+
+#pragma mark - NSCopying
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLLogConfiguration *newConfig = [[self.class allocWithZone:zone] init];
+ newConfig.modules = self.modules;
+ newConfig.targets = self.targets;
+ newConfig.filters = self.filters;
+ newConfig.formatType = self.formatType;
+ newConfig.asynchronous = self.asynchronous;
+ newConfig.errorsAsynchronous = self.errorsAsynchronous;
+ newConfig.disableAssertions = self.areAssertionsDisabled;
+ newConfig.globalLogLevel = self.globalLogLevel;
+
+ return newConfig;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogConstants.h b/SmartDeviceLink/public/SDLLogConstants.h
index e514edffb..e514edffb 100644
--- a/SmartDeviceLink/SDLLogConstants.h
+++ b/SmartDeviceLink/public/SDLLogConstants.h
diff --git a/SmartDeviceLink/SDLLogFileModule.h b/SmartDeviceLink/public/SDLLogFileModule.h
index 16fb3b596..16fb3b596 100644
--- a/SmartDeviceLink/SDLLogFileModule.h
+++ b/SmartDeviceLink/public/SDLLogFileModule.h
diff --git a/SmartDeviceLink/SDLLogFileModule.m b/SmartDeviceLink/public/SDLLogFileModule.m
index 34718bd17..34718bd17 100644
--- a/SmartDeviceLink/SDLLogFileModule.m
+++ b/SmartDeviceLink/public/SDLLogFileModule.m
diff --git a/SmartDeviceLink/SDLLogFilter.h b/SmartDeviceLink/public/SDLLogFilter.h
index 9a651478b..9a651478b 100644
--- a/SmartDeviceLink/SDLLogFilter.h
+++ b/SmartDeviceLink/public/SDLLogFilter.h
diff --git a/SmartDeviceLink/SDLLogFilter.m b/SmartDeviceLink/public/SDLLogFilter.m
index c97656c37..c97656c37 100644
--- a/SmartDeviceLink/SDLLogFilter.m
+++ b/SmartDeviceLink/public/SDLLogFilter.m
diff --git a/SmartDeviceLink/SDLLogMacros.h b/SmartDeviceLink/public/SDLLogMacros.h
index da75a07bc..da75a07bc 100644
--- a/SmartDeviceLink/SDLLogMacros.h
+++ b/SmartDeviceLink/public/SDLLogMacros.h
diff --git a/SmartDeviceLink/SDLLogManager.h b/SmartDeviceLink/public/SDLLogManager.h
index f09faeca0..f09faeca0 100644
--- a/SmartDeviceLink/SDLLogManager.h
+++ b/SmartDeviceLink/public/SDLLogManager.h
diff --git a/SmartDeviceLink/public/SDLLogManager.m b/SmartDeviceLink/public/SDLLogManager.m
new file mode 100644
index 000000000..8540d21b9
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLogManager.m
@@ -0,0 +1,351 @@
+//
+// SDLLogManager.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 2/27/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLogManager.h"
+
+#import "SDLGlobals.h"
+#import "SDLHexUtility.h"
+#import "SDLLogConfiguration.h"
+#import "SDLLogFileModule.h"
+#import "SDLLogModel.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLogManager ()
+
+@property (copy, nonatomic, readwrite) NSSet<SDLLogFileModule *> *modules;
+@property (copy, nonatomic, readwrite) NSSet<id<SDLLogTarget>> *targets;
+@property (copy, nonatomic, readwrite) NSSet<SDLLogFilter *> *filters;
+
+@property (assign, nonatomic, readwrite) SDLLogLevel globalLogLevel;
+@property (assign, nonatomic, readwrite) SDLLogFormatType formatType;
+
+@property (assign, nonatomic, readwrite, getter=isAsynchronous) BOOL asynchronous;
+@property (assign, nonatomic, readwrite, getter=areErrorsAsynchronous) BOOL errorsAsynchronous;
+@property (assign, nonatomic, readwrite, getter=areAssertionsDisabled) BOOL disableAssertions;
+
+@end
+
+@implementation SDLLogManager
+
+static NSDateFormatter *_dateFormatter = nil;
+static dispatch_queue_t _logQueue = NULL;
+
++ (SDLLogManager *)sharedManager {
+ static SDLLogManager *sharedManager = nil;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ sharedManager = [[SDLLogManager alloc] init];
+ });
+
+ return sharedManager;
+}
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _modules = [NSSet set];
+ _targets = [NSSet set];
+ _filters = [NSSet set];
+
+ _asynchronous = YES;
+ _errorsAsynchronous = NO;
+ _disableAssertions = NO;
+ _globalLogLevel = SDLLogLevelError;
+ _formatType = SDLLogFormatTypeDefault;
+
+ return self;
+}
+
+
+#pragma mark - Configuration
+
++ (void)setConfiguration:(SDLLogConfiguration *)configuration {
+ [[self sharedManager] setConfiguration:configuration];
+}
+
+- (void)setConfiguration:(SDLLogConfiguration *)configuration {
+ self.modules = configuration.modules;
+ self.filters = configuration.filters;
+ self.formatType = configuration.formatType;
+ self.asynchronous = configuration.isAsynchronous;
+ self.errorsAsynchronous = configuration.areErrorsAsynchronous;
+ self.disableAssertions = configuration.areAssertionsDisabled;
+ self.globalLogLevel = configuration.globalLogLevel;
+
+ // Start the loggers
+ NSMutableSet<id<SDLLogTarget>> *startedLoggers = [NSMutableSet set];
+ for (id<SDLLogTarget> target in configuration.targets) {
+ // If the logger fails setup, discard it, otherwise, keep it
+ if ([target setupLogger]) {
+ [startedLoggers addObject:target];
+ } else {
+ // Because we haven't set up loggers yet, this is necessary
+ NSLog(@"(SDL) Warning: Log target failed setup: %@", NSStringFromClass(target.class));
+ }
+ }
+ self.targets = [startedLoggers copy];
+}
+
+
+#pragma mark - Performing Logging
+
++ (void)logBytes:(NSData *)data direction:(SDLLogBytesDirection)direction timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel {
+ [[self sharedManager] logBytes:data direction:direction timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel];
+}
+
++ (void)logAssertWithTimestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
+ va_list args;
+ va_start(args, message);
+ NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
+ va_end(args);
+
+ [[self sharedManager] logAssertWithTimestamp:timestamp file:file functionName:functionName line:line queue:queueLabel formatMessage:@"%@", format];
+}
+
++ (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel message:(NSString *)message {
+ [[self sharedManager] logWithLevel:level timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:message];
+}
+
++ (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
+ va_list args;
+ va_start(args, message);
+ NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
+ va_end(args);
+
+ [[self sharedManager] logWithLevel:level timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:format];
+}
+
+- (void)logBytes:(NSData *)data direction:(SDLLogBytesDirection)direction timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel {
+ // This only works on Verbose logging
+ if ([self sdl_logLevelForFile:file] < SDLLogLevelVerbose) { return; }
+
+ NSString *message = [NSString stringWithFormat:@"%@(%lu bytes): %@", [self sdl_logStringForDirection:direction], (unsigned long)data.length, [SDLHexUtility getHexString:data]];
+ [self logWithLevel:SDLLogLevelVerbose timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:message];
+}
+
+- (void)logAssertWithTimestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
+ va_list args;
+ va_start(args, message);
+ NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
+ va_end(args);
+
+ [self logWithLevel:SDLLogLevelError timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:format];
+
+ NSAssert(self.areAssertionsDisabled, @"SDL ASSERTION: %@. To disable these assertions, alter your `SDLLogConfiguration` and set `disableAssertions` to `YES`", format);
+}
+
+- (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel formatMessage:(NSString *)message, ... {
+ va_list args;
+ va_start(args, message);
+ NSString *format = [[NSString alloc] initWithFormat:message arguments:args];
+ va_end(args);
+
+ [self logWithLevel:level timestamp:timestamp file:file functionName:functionName line:line queue:queueLabel message:format];
+}
+
+- (void)logWithLevel:(SDLLogLevel)level timestamp:(NSDate *)timestamp file:(NSString *)file functionName:(NSString *)functionName line:(NSInteger)line queue:(NSString *)queueLabel message:(NSString *)message {
+ NSString *moduleName = [self sdl_moduleForFile:file] ? [self sdl_moduleForFile:file].name : @"";
+
+ SDLLogModel *log = [[SDLLogModel alloc] initWithMessage:message
+ timestamp:timestamp
+ level:level
+ fileName:file
+ moduleName:moduleName
+ functionName:functionName
+ line:line
+ queueLabel:queueLabel];
+ [self sdl_queueLog:log];
+}
+
+- (void)sdl_queueLog:(SDLLogModel *)log {
+ if (log.level == SDLLogLevelError) {
+ if (self.areErrorsAsynchronous) {
+ [self sdl_asyncLog:log];
+ } else {
+ [self sdl_syncLog:log];
+ }
+ } else {
+ if (self.isAsynchronous) {
+ [self sdl_asyncLog:log];
+ } else {
+ [self sdl_syncLog:log];
+ }
+ }
+}
+
+- (void)sdl_asyncLog:(SDLLogModel *)log {
+ dispatch_async(self.class.logQueue, ^{
+ [self sdl_log:log];
+ });
+}
+
+- (void)sdl_syncLog:(SDLLogModel *)log {
+ [self sdl_log:log];
+}
+
+- (void)sdl_log:(SDLLogModel *)log {
+ if ([self sdl_logLevelForFile:log.fileName] < log.level) { return; }
+
+ for (SDLLogFilter *filter in self.filters) {
+ if (!filter.filter(log)) { return; }
+ }
+
+ NSString *formattedLog = nil;
+ switch (self.formatType) {
+ case SDLLogFormatTypeSimple:
+ formattedLog = [self sdl_simpleFormatLog:log];
+ break;
+ case SDLLogFormatTypeDefault:
+ formattedLog = [self sdl_defaultFormatLog:log];
+ break;
+ case SDLLogFormatTypeDetailed:
+ formattedLog = [self sdl_detailedFormatLog:log];
+ break;
+ }
+
+ for (id<SDLLogTarget> target in self.targets) {
+ [target logWithLog:log formattedLog:formattedLog];
+ }
+}
+
+
+#pragma mark - Log formatting
+
+- (NSString *)sdl_simpleFormatLog:(SDLLogModel *)log {
+ return [self sdl_formatLog:log showDate:YES showLogLevelCharacter:YES showLogLevelName:NO showQueueName:NO showModuleName:YES showFileName:NO showFunctionName:NO showLine:NO];
+}
+
+- (NSString *)sdl_defaultFormatLog:(SDLLogModel *)log {
+ return [self sdl_formatLog:log showDate:YES showLogLevelCharacter:YES showLogLevelName:NO showQueueName:NO showModuleName:YES showFileName:YES showFunctionName:NO showLine:YES];
+}
+
+- (NSString *)sdl_detailedFormatLog:(SDLLogModel *)log {
+ return [self sdl_formatLog:log showDate:YES showLogLevelCharacter:YES showLogLevelName:YES showQueueName:YES showModuleName:YES showFileName:YES showFunctionName:YES showLine:YES];
+}
+
+- (NSString *)sdl_formatLog:(SDLLogModel *)log showDate:(BOOL)date showLogLevelCharacter:(BOOL)logChar showLogLevelName:(BOOL)logName showQueueName:(BOOL)queueName showModuleName:(BOOL)moduleName showFileName:(BOOL)fileName showFunctionName:(BOOL)functionName showLine:(BOOL)line {
+ NSMutableString *logString = [NSMutableString string];
+
+ if (date) {
+ [logString appendFormat:@"%@ ", [self.class.dateFormatter stringFromDate:log.timestamp]];
+ }
+ if (logChar) {
+ [logString appendFormat:@"%@ ", [self sdl_logCharacterForLevel:log.level]];
+ }
+ if (logName) {
+ [logString appendFormat:@"%@ ", [self sdl_logNameForLevel:log.level]];
+ }
+ if (queueName) {
+ [logString appendFormat:@"%@ ", log.queueLabel];
+ }
+ if (moduleName) {
+ [logString appendFormat:@"(SDL)%@", log.moduleName];
+ }
+ if (fileName) {
+ [logString appendFormat:@":%@", log.fileName];
+ }
+ if (functionName) {
+ [logString appendFormat:@":%@", log.functionName];
+ }
+ if (line) {
+ [logString appendFormat:@":%ld ", (long)log.line];
+ }
+ [logString appendFormat:@"- %@\n", log.message];
+
+ return [logString copy];
+}
+
+- (NSString *)sdl_logCharacterForLevel:(SDLLogLevel)logLevel {
+ switch (logLevel) {
+ case SDLLogLevelVerbose: return @"⚪";
+ case SDLLogLevelDebug: return @"🔵";
+ case SDLLogLevelWarning: return @"🔶";
+ case SDLLogLevelError: return @"❌";
+ default:
+ NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
+ return @"";
+ }
+}
+
+- (NSString *)sdl_logNameForLevel:(SDLLogLevel)logLevel {
+ switch (logLevel) {
+ case SDLLogLevelVerbose: return @"VERBOSE";
+ case SDLLogLevelDebug: return @"DEBUG";
+ case SDLLogLevelWarning: return @"WARNING";
+ case SDLLogLevelError: return @"ERROR";
+ default:
+ NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
+ return @"UNKNOWN";
+ }
+}
+
+- (NSString *)sdl_logStringForDirection:(SDLLogBytesDirection)direction {
+ switch (direction) {
+ case SDLLogBytesDirectionReceive:
+ return @"RX";
+ case SDLLogBytesDirectionTransmit:
+ return @"TX";
+ }
+}
+
+
+#pragma mark - Modules
+
+- (SDLLogLevel)sdl_logLevelForFile:(NSString *)fileName {
+ SDLLogFileModule *module = [self sdl_moduleForFile:fileName];
+ if (!module) {
+ return self.globalLogLevel;
+ }
+
+ if ([module containsFile:fileName]) {
+ if (module.logLevel == SDLLogLevelDefault) {
+ return self.globalLogLevel;
+ }
+ }
+
+ return module.logLevel;
+}
+
+- (nullable SDLLogFileModule *)sdl_moduleForFile:(NSString *)fileName {
+ for (SDLLogFileModule *module in self.modules) {
+ if ([module containsFile:fileName]) { return module; }
+ }
+
+ return nil;
+}
+
+
+#pragma mark - Class property getters
+
++ (NSDateFormatter *)dateFormatter {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ _dateFormatter = [[NSDateFormatter alloc] init];
+ _dateFormatter.dateFormat = @"HH:mm:ss:SSS";
+ });
+
+ return _dateFormatter;
+}
+
++ (dispatch_queue_t)logQueue {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ _logQueue = dispatch_queue_create_with_target("com.sdl.log", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
+ });
+
+ return _logQueue;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogTarget.h b/SmartDeviceLink/public/SDLLogTarget.h
index 4cb9387da..4cb9387da 100644
--- a/SmartDeviceLink/SDLLogTarget.h
+++ b/SmartDeviceLink/public/SDLLogTarget.h
diff --git a/SmartDeviceLink/public/SDLLogTargetAppleSystemLog.h b/SmartDeviceLink/public/SDLLogTargetAppleSystemLog.h
new file mode 100644
index 000000000..762059cc2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLogTargetAppleSystemLog.h
@@ -0,0 +1,26 @@
+//
+// SDLLogTargetASL.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 2/28/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLLogTarget.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The Apple System Log target is an iOS 2.0+ compatible log target that logs to both the Console and to the System Log.
+
+ Deprecated. Please use SDLLogTargetOSLog instead.
+ */
+__deprecated
+@interface SDLLogTargetAppleSystemLog : NSObject <SDLLogTarget>
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLLogTargetAppleSystemLog.m b/SmartDeviceLink/public/SDLLogTargetAppleSystemLog.m
new file mode 100644
index 000000000..d587fa231
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLogTargetAppleSystemLog.m
@@ -0,0 +1,80 @@
+//
+// SDLLogTargetASL.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 2/28/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLogTargetAppleSystemLog.h"
+
+#import <asl.h>
+
+#import "SDLLogModel.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLogTargetAppleSystemLog ()
+
+@end
+
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-implementations"
+@implementation SDLLogTargetAppleSystemLog
+#pragma clang diagnostic pop
+
++ (id<SDLLogTarget>)logger {
+ return [[self alloc] init];
+}
+
+- (BOOL)setupLogger {
+ return YES;
+}
+
+- (void)logWithLog:(SDLLogModel *)log formattedLog:(NSString *)stringLog {
+ const char *charLog = [stringLog UTF8String];
+
+ int aslLevel = [self sdl_aslLevelForSDLLogLevel:log.level];
+ int result = asl_log_message(aslLevel, "%s", charLog);
+
+ if (result != 0) {
+ // Something failed
+ }
+}
+
+- (void)teardownLogger {
+
+}
+
+
+#pragma mark - Utilities
+
+- (int)sdl_aslLevelForSDLLogLevel:(SDLLogLevel)level {
+ switch (level) {
+ case SDLLogLevelVerbose: return ASL_LEVEL_NOTICE;
+ case SDLLogLevelDebug: return ASL_LEVEL_NOTICE;
+ case SDLLogLevelWarning: return ASL_LEVEL_ERR;
+ case SDLLogLevelError: return ASL_LEVEL_CRIT;
+ default:
+ NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
+ return ASL_LEVEL_DEBUG;
+ }
+}
+
+
+#pragma mark - NSObject
+
+- (NSUInteger)hash {
+ return NSStringFromClass(self.class).hash;
+}
+
+// For the target classes, we're going to assume that if they're the same class, they're the same. The reason for this is so that NSSet, for instance, will only allow one of each target type in a set.
+- (BOOL)isEqual:(id)object {
+ return [object isMemberOfClass:self.class];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLLogTargetFile.h b/SmartDeviceLink/public/SDLLogTargetFile.h
index dbf34c121..dbf34c121 100644
--- a/SmartDeviceLink/SDLLogTargetFile.h
+++ b/SmartDeviceLink/public/SDLLogTargetFile.h
diff --git a/SmartDeviceLink/SDLLogTargetFile.m b/SmartDeviceLink/public/SDLLogTargetFile.m
index a7624cb88..a7624cb88 100644
--- a/SmartDeviceLink/SDLLogTargetFile.m
+++ b/SmartDeviceLink/public/SDLLogTargetFile.m
diff --git a/SmartDeviceLink/SDLLogTargetOSLog.h b/SmartDeviceLink/public/SDLLogTargetOSLog.h
index 20861e39a..20861e39a 100644
--- a/SmartDeviceLink/SDLLogTargetOSLog.h
+++ b/SmartDeviceLink/public/SDLLogTargetOSLog.h
diff --git a/SmartDeviceLink/public/SDLLogTargetOSLog.m b/SmartDeviceLink/public/SDLLogTargetOSLog.m
new file mode 100644
index 000000000..c10ed2ba5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLLogTargetOSLog.m
@@ -0,0 +1,83 @@
+//
+// SDLLogTargetOSLog.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 2/28/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLLogTargetOSLog.h"
+
+#import <os/log.h>
+
+#import "SDLLogModel.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLLogTargetOSLog ()
+
+@property (strong, nonatomic) NSMutableDictionary<NSString *, os_log_t> *clients;
+
+@end
+
+
+@implementation SDLLogTargetOSLog
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _clients = [NSMutableDictionary dictionary];
+
+ return self;
+}
+
++ (id<SDLLogTarget>)logger {
+ return [[self alloc] init];
+}
+
+- (BOOL)setupLogger {
+ return YES;
+}
+
+- (void)logWithLog:(SDLLogModel *)log formattedLog:(NSString *)stringLog {
+ NSString *moduleName = log.moduleName ? log.moduleName : @"";
+ if (self.clients[moduleName] == nil) {
+ self.clients[moduleName] = os_log_create("com.sdl.log", moduleName.UTF8String);
+ }
+
+ os_log_with_type(self.clients[moduleName], [self oslogLevelForSDLLogLevel:log.level], "%{public}@", log.message);
+}
+
+- (void)teardownLogger {
+ self.clients = [NSMutableDictionary dictionary];
+}
+
+- (os_log_type_t)oslogLevelForSDLLogLevel:(SDLLogLevel)level {
+ switch (level) {
+ case SDLLogLevelVerbose: return OS_LOG_TYPE_DEBUG;
+ case SDLLogLevelDebug: return OS_LOG_TYPE_INFO;
+ case SDLLogLevelWarning: return OS_LOG_TYPE_ERROR;
+ case SDLLogLevelError: return OS_LOG_TYPE_FAULT;
+ default:
+ NSAssert(NO, @"The OFF and DEFAULT log levels are not valid to log with.");
+ return OS_LOG_TYPE_DEFAULT;
+ }
+}
+
+
+#pragma mark - NSObject
+
+- (NSUInteger)hash {
+ return NSStringFromClass(self.class).hash;
+}
+
+// For the target classes, we're going to assume that if they're the same class, they're the same. The reason for this is so that NSSet, for instance, will only allow one of each target type in a set.
+- (BOOL)isEqual:(id)object {
+ return [object isMemberOfClass:self.class];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLMaintenanceModeStatus.h b/SmartDeviceLink/public/SDLMaintenanceModeStatus.h
new file mode 100644
index 000000000..ffc7b39ea
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMaintenanceModeStatus.h
@@ -0,0 +1,30 @@
+// SDLMaintenanceModeStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Describes the maintenence mode. Used in nothing.
+ */
+typedef SDLEnum SDLMaintenanceModeStatus NS_TYPED_ENUM;
+
+/**
+ * Maintenance Mode Status : Normal
+ */
+extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusNormal;
+
+/**
+ * Maintenance Mode Status : Near
+ */
+extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusNear;
+
+/**
+ * Maintenance Mode Status : Active
+ */
+extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusActive;
+
+/**
+ * Maintenance Mode Status : Feature not present
+ */
+extern SDLMaintenanceModeStatus const SDLMaintenanceModeStatusFeatureNotPresent;
diff --git a/SmartDeviceLink/SDLMaintenanceModeStatus.m b/SmartDeviceLink/public/SDLMaintenanceModeStatus.m
index 7477954e0..7477954e0 100644
--- a/SmartDeviceLink/SDLMaintenanceModeStatus.m
+++ b/SmartDeviceLink/public/SDLMaintenanceModeStatus.m
diff --git a/SmartDeviceLink/SDLManager.h b/SmartDeviceLink/public/SDLManager.h
index ec0a45877..ec0a45877 100644
--- a/SmartDeviceLink/SDLManager.h
+++ b/SmartDeviceLink/public/SDLManager.h
diff --git a/SmartDeviceLink/SDLManager.m b/SmartDeviceLink/public/SDLManager.m
index 41fc1c927..41fc1c927 100644
--- a/SmartDeviceLink/SDLManager.m
+++ b/SmartDeviceLink/public/SDLManager.m
diff --git a/SmartDeviceLink/public/SDLManagerDelegate.h b/SmartDeviceLink/public/SDLManagerDelegate.h
new file mode 100644
index 000000000..2b01af879
--- /dev/null
+++ b/SmartDeviceLink/public/SDLManagerDelegate.h
@@ -0,0 +1,72 @@
+//
+// SDLManagerDelegate.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 6/7/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLAudioStreamingState.h"
+#import "SDLHMILevel.h"
+#import "SDLSystemContext.h"
+#import "SDLLifecycleConfigurationUpdate.h"
+#import "SDLLanguage.h"
+#import "SDLVideoStreamingState.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// The manager's delegate
+@protocol SDLManagerDelegate <NSObject>
+
+/**
+ * Called upon a disconnection from the remote system.
+ */
+- (void)managerDidDisconnect;
+
+/**
+ * Called when the HMI level state of this application changes on the remote system. This is equivalent to the application's state changes in iOS such as foreground, background, or closed.
+ *
+ * @param oldLevel The previous level which has now been left.
+ * @param newLevel The current level.
+ */
+- (void)hmiLevel:(SDLHMILevel)oldLevel didChangeToLevel:(SDLHMILevel)newLevel;
+
+@optional
+/**
+ * Called when the audio streaming state of this application changes on the remote system. This refers to when streaming audio is audible to the user.
+ *
+ * @param oldState The previous state which has now been left.
+ * @param newState The current state.
+ */
+- (void)audioStreamingState:(nullable SDLAudioStreamingState)oldState didChangeToState:(SDLAudioStreamingState)newState;
+
+/// Called when the video streaming state of this application changes. This refers to streaming video for navigation purposes. If you are "autostreaming" via CarWindow, you should not do anything with this method. Everything should be handled for you automatically.
+///
+/// Only supported on RPC v5.0+ connections.
+///
+/// @param oldState The previous state
+/// @param newState The current state
+- (void)videoStreamingState:(nullable SDLVideoStreamingState)oldState didChangetoState:(SDLVideoStreamingState)newState;
+
+/**
+ * Called when the system context of this application changes on the remote system. This refers to whether or not a user-initiated interaction is in progress, and if so, what it is.
+ *
+ * @param oldContext The previous context which has now been left.
+ * @param newContext The current context.
+ */
+- (void)systemContext:(nullable SDLSystemContext)oldContext didChangeToContext:(SDLSystemContext)newContext;
+
+/**
+ * Called when the lifecycle manager detected a language mismatch. In case of a language mismatch the manager should change the apps registration by updating the lifecycle configuration to the specified language. If the app can support the specified language it should return an Object of SDLLifecycleConfigurationUpdate, otherwise it should return nil to indicate that the language is not supported.
+ *
+ * @param language The VR+TTS language of the connected head unit the manager is trying to update the configuration.
+ * @param hmiLanguage The HMI display language of the connected head unit the manager is trying to update the configuration.
+ * @return An object of SDLLifecycleConfigurationUpdate if the head unit language is supported, otherwise nil to indicate that the language is not supported.
+ */
+- (nullable SDLLifecycleConfigurationUpdate *)managerShouldUpdateLifecycleToLanguage:(SDLLanguage)language hmiLanguage:(SDLLanguage)hmiLanguage;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLMassageCushion.h b/SmartDeviceLink/public/SDLMassageCushion.h
new file mode 100644
index 000000000..a6242ae9a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMassageCushion.h
@@ -0,0 +1,35 @@
+// SDLMassageCushion.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * The List possible cushions of a multi-contour massage seat.
+ */
+typedef SDLEnum SDLMassageCushion NS_TYPED_ENUM;
+
+/**
+ * @abstract TOP LUMBAR cushions of a multi-contour massage seat
+ */
+extern SDLMassageCushion const SDLMassageCushionTopLumbar;
+
+/**
+ * @abstract MIDDLE LUMBAR cushion of a multi-contour massage seat
+ */
+extern SDLMassageCushion const SDLMassageCushionMiddleLumbar;
+
+/**
+ * @abstract BOTTOM LUMBAR cushion of a multi-contour massage seat
+ */
+extern SDLMassageCushion const SDLMassageCushionBottomLumbar;
+
+/**
+ * @abstract BACK BOLSTERS cushion of a multi-contour massage seat
+ */
+extern SDLMassageCushion const SDLMassageCushionBackBolsters;
+
+/**
+ * @abstract SEAT BOLSTERS cushion of a multi-contour massage seat
+ */
+extern SDLMassageCushion const SDLMassageCushionSeatBolsters;
+
diff --git a/SmartDeviceLink/SDLMassageCushion.m b/SmartDeviceLink/public/SDLMassageCushion.m
index 0b8162619..0b8162619 100644
--- a/SmartDeviceLink/SDLMassageCushion.m
+++ b/SmartDeviceLink/public/SDLMassageCushion.m
diff --git a/SmartDeviceLink/SDLMassageCushionFirmness.h b/SmartDeviceLink/public/SDLMassageCushionFirmness.h
index d8bb5d48c..d8bb5d48c 100644
--- a/SmartDeviceLink/SDLMassageCushionFirmness.h
+++ b/SmartDeviceLink/public/SDLMassageCushionFirmness.h
diff --git a/SmartDeviceLink/SDLMassageCushionFirmness.m b/SmartDeviceLink/public/SDLMassageCushionFirmness.m
index 96dacd0fc..96dacd0fc 100644
--- a/SmartDeviceLink/SDLMassageCushionFirmness.m
+++ b/SmartDeviceLink/public/SDLMassageCushionFirmness.m
diff --git a/SmartDeviceLink/public/SDLMassageMode.h b/SmartDeviceLink/public/SDLMassageMode.h
new file mode 100644
index 000000000..d2f85c805
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMassageMode.h
@@ -0,0 +1,25 @@
+// SDLMassageMode.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * The List possible modes of a massage zone.
+ */
+typedef SDLEnum SDLMassageMode NS_TYPED_ENUM;
+
+/**
+ * @abstract Massage Mode Status : OFF
+ */
+extern SDLMassageMode const SDLMassageModeOff;
+
+/**
+ * @abstract Massage Mode Status : LOW
+ */
+extern SDLMassageMode const SDLMassageModeLow;
+
+/**
+ * @abstract Massage Mode Status : HIGH
+ */
+extern SDLMassageMode const SDLMassageModeHigh;
+
diff --git a/SmartDeviceLink/SDLMassageMode.m b/SmartDeviceLink/public/SDLMassageMode.m
index 782aa6681..782aa6681 100644
--- a/SmartDeviceLink/SDLMassageMode.m
+++ b/SmartDeviceLink/public/SDLMassageMode.m
diff --git a/SmartDeviceLink/SDLMassageModeData.h b/SmartDeviceLink/public/SDLMassageModeData.h
index 25d3d0dfa..25d3d0dfa 100644
--- a/SmartDeviceLink/SDLMassageModeData.h
+++ b/SmartDeviceLink/public/SDLMassageModeData.h
diff --git a/SmartDeviceLink/SDLMassageModeData.m b/SmartDeviceLink/public/SDLMassageModeData.m
index fbcd4dde7..fbcd4dde7 100644
--- a/SmartDeviceLink/SDLMassageModeData.m
+++ b/SmartDeviceLink/public/SDLMassageModeData.m
diff --git a/SmartDeviceLink/public/SDLMassageZone.h b/SmartDeviceLink/public/SDLMassageZone.h
new file mode 100644
index 000000000..434dd3941
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMassageZone.h
@@ -0,0 +1,20 @@
+// SDLMassageZone.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * List possible zones of a multi-contour massage seat.
+ */
+typedef SDLEnum SDLMassageZone NS_TYPED_ENUM;
+
+/**
+ * @abstract The back of a multi-contour massage seat. or SEAT_BACK
+ */
+extern SDLMassageZone const SDLMassageZoneLumbar;
+
+/**
+ * @abstract The bottom a multi-contour massage seat. or SEAT_BOTTOM
+ */
+extern SDLMassageZone const SDLMassageZoneSeatCushion;
+
diff --git a/SmartDeviceLink/SDLMassageZone.m b/SmartDeviceLink/public/SDLMassageZone.m
index 26f9e0a85..26f9e0a85 100644
--- a/SmartDeviceLink/SDLMassageZone.m
+++ b/SmartDeviceLink/public/SDLMassageZone.m
diff --git a/SmartDeviceLink/public/SDLMediaClockFormat.h b/SmartDeviceLink/public/SDLMediaClockFormat.h
new file mode 100644
index 000000000..ea45f78f2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMediaClockFormat.h
@@ -0,0 +1,115 @@
+// SDLMediaClockFormat.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Indicates the format of the time displayed on the connected SDL unit.
+
+ Format description follows the following nomenclature: <br>
+ Sp = Space <br>
+ | = or <br>
+ c = character <br>
+
+ Used in DisplayCapabilities
+
+ @since SDL 1.0
+ */
+typedef SDLEnum SDLMediaClockFormat NS_TYPED_ENUM;
+
+/**
+ * Media clock format: Clock1
+ *
+ * maxHours = 19
+ * maxMinutes = 59
+ * maxSeconds = 59
+ */
+extern SDLMediaClockFormat const SDLMediaClockFormatClock1;
+
+/**
+ * Media clock format: Clock2
+ *
+ * maxHours = 59
+ * maxMinutes = 59
+ * maxSeconds = 59
+ */
+extern SDLMediaClockFormat const SDLMediaClockFormatClock2;
+
+/**
+ * Media clock format: Clock3
+ *
+ * @discussion
+ * <ul>
+ * maxHours = 9
+ * maxMinutes = 59
+ * maxSeconds = 59
+ * </ul>
+ *
+ * @since SDL 2.0
+ */
+extern SDLMediaClockFormat const SDLMediaClockFormatClock3;
+
+/**
+ * Media clock format: ClockText1
+ *
+ * @discussion
+ * <ul>
+ * 5 characters possible
+ * Format: 1|sp c :|sp c c
+ * 1|sp : digit "1" or space
+ * c : character out of following character set: sp|0-9|[letters, see
+ * TypeII column in XLS.
+ * :|sp : colon or space
+ * used for Type II headunit
+ * </ul>
+ */
+extern SDLMediaClockFormat const SDLMediaClockFormatClockText1;
+
+/**
+ * Media clock format: ClockText2
+ *
+ * @discussion
+ * <ul>
+ * 5 characters possible
+ * Format: 1|sp c :|sp c c
+ * 1|sp : digit "1" or space
+ * c : character out of following character set: sp|0-9|[letters, see
+ * CID column in XLS.
+ * :|sp : colon or space
+ * used for CID headunit
+ * </ul>
+ * difference between CLOCKTEXT1 and CLOCKTEXT2 is the supported character
+ * set
+ */
+extern SDLMediaClockFormat const SDLMediaClockFormatClockText2;
+
+/**
+ * Media clock format: ClockText3
+ *
+ * @discussion
+ * <ul>
+ * 6 chars possible
+ * Format: 1|sp c c :|sp c c
+ * 1|sp : digit "1" or space
+ * c : character out of following character set: sp|0-9|[letters, see
+ * Type 5 column in XLS].
+ * :|sp : colon or space
+ * used for Type V headunit
+ * </ul>
+ * difference between CLOCKTEXT1 and CLOCKTEXT2 is the supported character
+ * set
+ */
+extern SDLMediaClockFormat const SDLMediaClockFormatClockText3;
+
+/**
+ * Media clock format: ClockText4
+ *
+ * 6 chars possible
+ * Format: c :|sp c c : c c
+ * :|sp : colon or space
+ * c : character out of following character set: sp|0-9|[letters] used for MFD3/4/5 headunits
+ *
+ * @since SDL 2.0
+ */
+extern SDLMediaClockFormat const SDLMediaClockFormatClockText4;
diff --git a/SmartDeviceLink/SDLMediaClockFormat.m b/SmartDeviceLink/public/SDLMediaClockFormat.m
index f71894814..f71894814 100644
--- a/SmartDeviceLink/SDLMediaClockFormat.m
+++ b/SmartDeviceLink/public/SDLMediaClockFormat.m
diff --git a/SmartDeviceLink/public/SDLMediaServiceData.h b/SmartDeviceLink/public/SDLMediaServiceData.h
new file mode 100644
index 000000000..84ce78d1b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMediaServiceData.h
@@ -0,0 +1,158 @@
+//
+// SDLMediaServiceData.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/8/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCRequest.h"
+#import "SDLMediaType.h"
+
+@class SDLImage;
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+/**
+ * This data is related to what a media service should provide.
+ */
+@interface SDLMediaServiceData : SDLRPCStruct
+
+/**
+ * Convenience init
+ *
+ * @param mediaType The type of the currently playing or paused track
+ * @param mediaImage The current artwork for the playing media.
+ * @param mediaTitle The name of the current playing media
+ * @param mediaArtist The name of the current media artist
+ * @param mediaAlbum The name of the current media album
+ * @param playlistName The name of the playlist
+ * @param isExplicit Whether or not the content currently playing contains explicit content
+ * @param trackPlaybackProgress The current progress of the track
+ * @param trackPlaybackDuration The total duration of the track
+ * @param queuePlaybackProgress The current progress of the playback queue in seconds
+ * @param queuePlaybackDuration The total duration of the playback queue in seconds
+ * @param queueCurrentTrackNumber The current number (1 based) of the track in the playback queue
+ * @param queueTotalTrackCount The total number of tracks in the playback queue
+ * @return A SDLMediaServiceData object
+ */
+- (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaImage:(nullable SDLImage *)mediaImage mediaTitle:(nullable NSString *)mediaTitle mediaArtist:(nullable NSString *)mediaArtist mediaAlbum:(nullable NSString *)mediaAlbum playlistName:(nullable NSString *)playlistName isExplicit:(BOOL)isExplicit trackPlaybackProgress:(UInt32)trackPlaybackProgress trackPlaybackDuration:(UInt32)trackPlaybackDuration queuePlaybackProgress:(UInt32)queuePlaybackProgress queuePlaybackDuration:(UInt32)queuePlaybackDuration queueCurrentTrackNumber:(UInt32)queueCurrentTrackNumber queueTotalTrackCount:(UInt32)queueTotalTrackCount;
+
+/**
+ * Sets the media image associated with the currently playing media
+ * Music: The album art of the current track
+ * Podcast: The podcast or chapter artwork of the current podcast episode
+ * Audiobook: The book or chapter artwork of the current audiobook
+ *
+ * SDLImage, Optional
+ */
+@property (nullable, strong, nonatomic) SDLImage *mediaImage;
+
+/**
+ * The type of the currently playing or paused track.
+ *
+ * SDLMediaType, Optional
+ */
+@property (nullable, strong, nonatomic) SDLMediaType mediaType;
+
+/**
+ * Music: The name of the current track
+ * Podcast: The name of the current episode
+ * Audiobook: The name of the current chapter
+ *
+ * String, Optional
+ */
+@property (nullable, strong, nonatomic) NSString *mediaTitle;
+
+/**
+ * Music: The name of the current album artist
+ * Podcast: The provider of the podcast (hosts, network, company)
+ * Audiobook: The book author's name
+ *
+ * String, Optional
+ */
+@property (nullable, strong, nonatomic) NSString *mediaArtist;
+
+/**
+ * Music: The name of the current album
+ * Podcast: The name of the current podcast show
+ * Audiobook: The name of the current book
+ *
+ * String, Optional
+ */
+@property (nullable, strong, nonatomic) NSString *mediaAlbum;
+
+/**
+ * Music: The name of the playlist or radio station, if the user is playing from a playlist, otherwise, Null
+ * Podcast: The name of the playlist, if the user is playing from a playlist, otherwise, Null
+ * Audiobook: Likely not applicable, possibly a collection or "playlist" of books
+ *
+ * String, Optional
+ */
+@property (nullable, strong, nonatomic) NSString *playlistName;
+
+/**
+ * Whether or not the content currently playing (e.g. the track, episode, or book) contains explicit content.
+ *
+ * Boolean, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *isExplicit;
+
+/**
+ * Music: The current progress of the track in seconds
+ * Podcast: The current progress of the episode in seconds
+ * Audiobook: The current progress of the current segment (e.g. the chapter) in seconds
+ *
+ * Integer, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *trackPlaybackProgress;
+
+/**
+ * Music: The total duration of the track in seconds
+ * Podcast: The total duration of the episode in seconds
+ * Audiobook: The total duration of the current segment (e.g. the chapter) in seconds
+ *
+ * Integer, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *trackPlaybackDuration;
+
+/**
+ * Music: The current progress of the playback queue in seconds
+ * Podcast: The current progress of the playback queue in seconds
+ * Audiobook: The current progress of the playback queue (e.g. the book) in seconds
+ *
+ * Integer, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queuePlaybackProgress;
+
+/**
+ * Music: The total duration of the playback queue in seconds
+ * Podcast: The total duration of the playback queue in seconds
+ * Audiobook: The total duration of the playback queue (e.g. the book) in seconds
+ *
+ * Integer, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queuePlaybackDuration;
+
+/**
+ * Music: The current number (1 based) of the track in the playback queue
+ * Podcast: The current number (1 based) of the episode in the playback queue
+ * Audiobook: The current number (1 based) of the episode in the playback queue (e.g. the chapter number in the book)
+ *
+ * Integer, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queueCurrentTrackNumber;
+
+/**
+ * Music: The total number of tracks in the playback queue
+ * Podcast: The total number of episodes in the playback queue
+ * Audiobook: The total number of sections in the playback queue (e.g. the number of chapters in the book)
+ *
+ * Integer, Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queueTotalTrackCount;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLMediaServiceData.m b/SmartDeviceLink/public/SDLMediaServiceData.m
new file mode 100644
index 000000000..7b8e44f3d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMediaServiceData.m
@@ -0,0 +1,148 @@
+//
+// SDLMediaServiceData.m
+// SmartDeviceLink
+//
+// Created by Nicole on 2/8/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLMediaServiceData.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLImage.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLMediaServiceData
+
+- (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaImage:(nullable SDLImage *)mediaImage mediaTitle:(nullable NSString *)mediaTitle mediaArtist:(nullable NSString *)mediaArtist mediaAlbum:(nullable NSString *)mediaAlbum playlistName:(nullable NSString *)playlistName isExplicit:(BOOL)isExplicit trackPlaybackProgress:(UInt32)trackPlaybackProgress trackPlaybackDuration:(UInt32)trackPlaybackDuration queuePlaybackProgress:(UInt32)queuePlaybackProgress queuePlaybackDuration:(UInt32)queuePlaybackDuration queueCurrentTrackNumber:(UInt32)queueCurrentTrackNumber queueTotalTrackCount:(UInt32)queueTotalTrackCount {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.mediaType = mediaType;
+ self.mediaImage = mediaImage;
+ self.mediaTitle = mediaTitle;
+ self.mediaArtist = mediaArtist;
+ self.mediaAlbum = mediaAlbum;
+ self.playlistName = playlistName;
+ self.isExplicit = @(isExplicit);
+ self.trackPlaybackProgress = @(trackPlaybackProgress);
+ self.trackPlaybackDuration = @(trackPlaybackDuration);
+ self.queuePlaybackProgress = @(queuePlaybackProgress);
+ self.queuePlaybackDuration = @(queuePlaybackDuration);
+ self.queueCurrentTrackNumber = @(queueCurrentTrackNumber);
+ self.queueTotalTrackCount = @(queueTotalTrackCount);
+
+ return self;
+}
+
+- (void)setMediaImage:(nullable SDLImage *)mediaImage {
+ [self.store sdl_setObject:mediaImage forName:SDLRPCParameterNameMediaImage];
+}
+
+- (nullable SDLImage *)mediaImage {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMediaImage ofClass:SDLImage.class error:nil];
+}
+
+- (void)setMediaType:(nullable SDLMediaType)mediaType {
+ [self.store sdl_setObject:mediaType forName:SDLRPCParameterNameMediaType];
+}
+
+- (nullable SDLMediaType)mediaType {
+ return [self.store sdl_enumForName:SDLRPCParameterNameMediaType error:nil];
+}
+
+- (void)setMediaTitle:(nullable NSString *)mediaTitle {
+ [self.store sdl_setObject:mediaTitle forName:SDLRPCParameterNameMediaTitle];
+}
+
+- (nullable NSString *)mediaTitle {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMediaTitle ofClass:NSString.class error:nil];
+}
+
+- (void)setMediaArtist:(nullable NSString *)mediaArtist {
+ [self.store sdl_setObject:mediaArtist forName:SDLRPCParameterNameMediaArtist];
+}
+
+- (nullable NSString *)mediaArtist {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMediaArtist ofClass:NSString.class error:nil];
+}
+
+- (void)setMediaAlbum:(nullable NSString *)mediaAlbum {
+ [self.store sdl_setObject:mediaAlbum forName:SDLRPCParameterNameMediaAlbum];
+}
+
+- (nullable NSString *)mediaAlbum {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMediaAlbum ofClass:NSString.class error:nil];
+}
+
+- (void)setPlaylistName:(nullable NSString *)playlistName {
+ [self.store sdl_setObject:playlistName forName:SDLRPCParameterNamePlaylistName];
+}
+
+- (nullable NSString *)playlistName {
+ return [self.store sdl_objectForName:SDLRPCParameterNamePlaylistName ofClass:NSString.class error:nil];
+}
+
+- (void)setIsExplicit:(nullable NSNumber<SDLBool> *)isExplicit {
+ [self.store sdl_setObject:isExplicit forName:SDLRPCParameterNameIsExplicit];
+}
+
+- (nullable NSNumber<SDLBool> *)isExplicit {
+ return [self.store sdl_objectForName:SDLRPCParameterNameIsExplicit ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTrackPlaybackProgress:(nullable NSNumber<SDLInt> *)trackPlaybackProgress {
+ [self.store sdl_setObject:trackPlaybackProgress forName:SDLRPCParameterNameTrackPlaybackProgress];
+}
+
+- (nullable NSNumber<SDLInt> *)trackPlaybackProgress {
+ return [self.store sdl_objectForName:SDLRPCParameterNameTrackPlaybackProgress ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTrackPlaybackDuration:(nullable NSNumber<SDLInt> *)trackPlaybackDuration {
+ [self.store sdl_setObject:trackPlaybackDuration forName:SDLRPCParameterNameTrackPlaybackDuration];
+}
+
+- (nullable NSNumber<SDLInt> *)trackPlaybackDuration {
+ return [self.store sdl_objectForName:SDLRPCParameterNameTrackPlaybackDuration ofClass:NSNumber.class error:nil];
+}
+
+- (void)setQueuePlaybackProgress:(nullable NSNumber<SDLInt> *)queuePlaybackProgress {
+ [self.store sdl_setObject:queuePlaybackProgress forName:SDLRPCParameterNameQueuePlaybackProgress];
+}
+
+- (nullable NSNumber<SDLInt> *)queuePlaybackProgress {
+ return [self.store sdl_objectForName:SDLRPCParameterNameQueuePlaybackProgress ofClass:NSNumber.class error:nil];
+}
+
+- (void)setQueuePlaybackDuration:(nullable NSNumber<SDLInt> *)queuePlaybackDuration {
+ [self.store sdl_setObject:queuePlaybackDuration forName:SDLRPCParameterNameQueuePlaybackDuration];
+}
+
+- (nullable NSNumber<SDLInt> *)queuePlaybackDuration {
+ return [self.store sdl_objectForName:SDLRPCParameterNameQueuePlaybackDuration ofClass:NSNumber.class error:nil];
+}
+
+- (void)setQueueCurrentTrackNumber:(nullable NSNumber<SDLInt> *)queueCurrentTrackNumber {
+ [self.store sdl_setObject:queueCurrentTrackNumber forName:SDLRPCParameterNameQueueCurrentTrackNumber];
+}
+
+- (nullable NSNumber<SDLInt> *)queueCurrentTrackNumber {
+ return [self.store sdl_objectForName:SDLRPCParameterNameQueueCurrentTrackNumber ofClass:NSNumber.class error:nil];
+}
+
+- (void)setQueueTotalTrackCount:(nullable NSNumber<SDLInt> *)queueTotalTrackCount {
+ [self.store sdl_setObject:queueTotalTrackCount forName:SDLRPCParameterNameQueueTotalTrackCount];
+}
+
+- (nullable NSNumber<SDLInt> *)queueTotalTrackCount {
+ return [self.store sdl_objectForName:SDLRPCParameterNameQueueTotalTrackCount ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMediaServiceManifest.h b/SmartDeviceLink/public/SDLMediaServiceManifest.h
index a3b931c98..a3b931c98 100644
--- a/SmartDeviceLink/SDLMediaServiceManifest.h
+++ b/SmartDeviceLink/public/SDLMediaServiceManifest.h
diff --git a/SmartDeviceLink/SDLMediaServiceManifest.m b/SmartDeviceLink/public/SDLMediaServiceManifest.m
index 734256320..734256320 100644
--- a/SmartDeviceLink/SDLMediaServiceManifest.m
+++ b/SmartDeviceLink/public/SDLMediaServiceManifest.m
diff --git a/SmartDeviceLink/public/SDLMediaType.h b/SmartDeviceLink/public/SDLMediaType.h
new file mode 100644
index 000000000..e90d94197
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMediaType.h
@@ -0,0 +1,35 @@
+//
+// SDLMediaType.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/8/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration listing possible media types.
+ */
+typedef SDLEnum SDLMediaType NS_TYPED_ENUM;
+
+/**
+ * The app will have a media type of music.
+ */
+extern SDLMediaType const SDLMediaTypeMusic;
+
+/**
+ * The app will have a media type of podcast.
+ */
+extern SDLMediaType const SDLMediaTypePodcast;
+
+/**
+ * The app will have a media type of audiobook.
+ */
+extern SDLMediaType const SDLMediaTypeAudiobook;
+
+/**
+ * The app will have a media type of other.
+ */
+extern SDLMediaType const SDLMediaTypeOther;
+
diff --git a/SmartDeviceLink/SDLMediaType.m b/SmartDeviceLink/public/SDLMediaType.m
index 3a18a3dd2..3a18a3dd2 100644
--- a/SmartDeviceLink/SDLMediaType.m
+++ b/SmartDeviceLink/public/SDLMediaType.m
diff --git a/SmartDeviceLink/public/SDLMenuCell.h b/SmartDeviceLink/public/SDLMenuCell.h
new file mode 100644
index 000000000..403294612
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMenuCell.h
@@ -0,0 +1,83 @@
+//
+// SDLMenuCell.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 4/9/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLMenuLayout.h"
+#import "SDLTriggerSource.h"
+
+@class SDLArtwork;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+The handler to run when a menu item is selected.
+
+@param triggerSource The trigger source of the selection
+*/
+typedef void(^SDLMenuCellSelectionHandler)(SDLTriggerSource triggerSource);
+
+/// A menu cell item for the main menu or sub-menu.
+@interface SDLMenuCell : NSObject
+
+/**
+ The cell's text to be displayed
+ */
+@property (copy, nonatomic, readonly) NSString *title;
+
+/**
+ The cell's icon to be displayed
+ */
+@property (strong, nonatomic, readonly, nullable) SDLArtwork *icon;
+
+/**
+ The strings the user can say to activate this voice command
+ */
+@property (copy, nonatomic, readonly, nullable) NSArray<NSString *> *voiceCommands;
+
+/**
+ The handler that will be called when the command is activated
+ */
+@property (copy, nonatomic, readonly, nullable) SDLMenuCellSelectionHandler handler;
+
+/**
+ If this is non-nil, this cell will be a sub-menu button, displaying the subcells in a menu when pressed.
+ */
+@property (copy, nonatomic, readonly, nullable) NSArray<SDLMenuCell *> *subCells;
+
+/**
+ The layout in which the `subCells` will be displayed.
+ */
+@property (strong, nonatomic, readonly, nullable) SDLMenuLayout submenuLayout;
+
+/**
+ Create a menu cell that has no subcells.
+
+ @param title The cell's primary text
+ @param icon The cell's image
+ @param voiceCommands Voice commands that will activate the menu cell
+ @param handler The code that will be run when the menu cell is selected
+ @return The menu cell
+ */
+- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon voiceCommands:(nullable NSArray<NSString *> *)voiceCommands handler:(SDLMenuCellSelectionHandler)handler;
+
+/**
+ Create a menu cell that has subcells and when selected will go into a deeper part of the menu
+
+ @param title The cell's primary text
+ @param icon The cell's image
+ @param layout The layout that the subCells will be layed out in if that submenu is entered
+ @param subCells The subcells that will appear when the cell is selected
+ @return The menu cell
+ */
+- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon submenuLayout:(nullable SDLMenuLayout)layout subCells:(NSArray<SDLMenuCell *> *)subCells;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLMenuCell.m b/SmartDeviceLink/public/SDLMenuCell.m
new file mode 100644
index 000000000..9a06411bc
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMenuCell.m
@@ -0,0 +1,88 @@
+//
+// SDLMenuCell.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 4/9/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLMenuCell.h"
+
+#import "SDLArtwork.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLMenuCell()
+
+@property (assign, nonatomic) UInt32 parentCellId;
+@property (assign, nonatomic) UInt32 cellId;
+
+@end
+
+@implementation SDLMenuCell
+
+- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon voiceCommands:(nullable NSArray<NSString *> *)voiceCommands handler:(SDLMenuCellSelectionHandler)handler {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _title = title;
+ _icon = icon;
+ _voiceCommands = voiceCommands;
+ _handler = handler;
+
+ _cellId = UINT32_MAX;
+ _parentCellId = UINT32_MAX;
+
+ return self;
+}
+
+- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon submenuLayout:(nullable SDLMenuLayout)layout subCells:(NSArray<SDLMenuCell *> *)subCells {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _title = title;
+ _submenuLayout = layout;
+ _icon = icon;
+ _subCells = subCells;
+
+ _cellId = UINT32_MAX;
+ _parentCellId = UINT32_MAX;
+
+ return self;
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:@"SDLMenuCell: %u-\"%@\", artworkName: %@, voice commands: %lu, isSubcell: %@, hasSubcells: %@, submenuLayout: %@", (unsigned int)_cellId, _title, _icon.name, (unsigned long)_voiceCommands.count, (_parentCellId != UINT32_MAX ? @"YES" : @"NO"), (_subCells.count > 0 ? @"YES" : @"NO"), _submenuLayout];
+}
+
+#pragma mark - Object Equality
+
+NSUInteger const NSUIntBitCell = (CHAR_BIT * sizeof(NSUInteger));
+NSUInteger NSUIntRotateCell(NSUInteger val, NSUInteger howMuch) {
+ return ((((NSUInteger)val) << howMuch) | (((NSUInteger)val) >> (NSUIntBitCell - howMuch)));
+}
+
+- (NSUInteger)hash {
+ return NSUIntRotateCell(self.title.hash, NSUIntBitCell / 2)
+ ^ NSUIntRotateCell(self.icon.name.hash, NSUIntBitCell / 3)
+ ^ NSUIntRotateCell(self.voiceCommands.hash, NSUIntBitCell / 4)
+ ^ NSUIntRotateCell(self.subCells.count !=0, NSUIntBitCell / 5)
+ ^ NSUIntRotateCell(self.submenuLayout.hash, NSUIntBitCell / 6);
+}
+
+- (BOOL)isEqual:(id)object {
+ if (self == object) { return YES; }
+ if (![object isMemberOfClass:[self class]]) { return NO; }
+
+ return [self isEqualToChoice:(SDLMenuCell *)object];
+}
+
+- (BOOL)isEqualToChoice:(SDLMenuCell *)choice {
+ if (choice == nil) { return NO; }
+
+ return (self.hash == choice.hash);
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMenuConfiguration.h b/SmartDeviceLink/public/SDLMenuConfiguration.h
index d3614001a..d3614001a 100644
--- a/SmartDeviceLink/SDLMenuConfiguration.h
+++ b/SmartDeviceLink/public/SDLMenuConfiguration.h
diff --git a/SmartDeviceLink/SDLMenuConfiguration.m b/SmartDeviceLink/public/SDLMenuConfiguration.m
index 2049c83bf..2049c83bf 100644
--- a/SmartDeviceLink/SDLMenuConfiguration.m
+++ b/SmartDeviceLink/public/SDLMenuConfiguration.m
diff --git a/SmartDeviceLink/public/SDLMenuLayout.h b/SmartDeviceLink/public/SDLMenuLayout.h
new file mode 100644
index 000000000..c4904f5d7
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMenuLayout.h
@@ -0,0 +1,25 @@
+//
+// SDLMenuLayout.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 7/12/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enum for each type of video streaming protocol, used in VideoStreamingFormat
+ */
+typedef SDLEnum SDLMenuLayout NS_TYPED_ENUM;
+
+/**
+ * The menu should be laid out in a scrollable list format with one menu cell below the previous, each is stretched across the view
+ */
+extern SDLMenuLayout const SDLMenuLayoutList;
+
+/**
+ * The menu should be laid out in a scrollable tiles format with each menu cell laid out in a square-ish format next to each other horizontally
+ */
+extern SDLMenuLayout const SDLMenuLayoutTiles;
+
diff --git a/SmartDeviceLink/SDLMenuLayout.m b/SmartDeviceLink/public/SDLMenuLayout.m
index 8b1b95b38..8b1b95b38 100644
--- a/SmartDeviceLink/SDLMenuLayout.m
+++ b/SmartDeviceLink/public/SDLMenuLayout.m
diff --git a/SmartDeviceLink/SDLMenuManagerConstants.h b/SmartDeviceLink/public/SDLMenuManagerConstants.h
index 5e23971e9..5e23971e9 100644
--- a/SmartDeviceLink/SDLMenuManagerConstants.h
+++ b/SmartDeviceLink/public/SDLMenuManagerConstants.h
diff --git a/SmartDeviceLink/SDLMenuParams.h b/SmartDeviceLink/public/SDLMenuParams.h
index 89d807f9e..89d807f9e 100644
--- a/SmartDeviceLink/SDLMenuParams.h
+++ b/SmartDeviceLink/public/SDLMenuParams.h
diff --git a/SmartDeviceLink/public/SDLMenuParams.m b/SmartDeviceLink/public/SDLMenuParams.m
new file mode 100644
index 000000000..85cf5880a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMenuParams.m
@@ -0,0 +1,63 @@
+// SDLMenuParams.m
+//
+
+
+#import "SDLMenuParams.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLMenuParams
+
+- (instancetype)initWithMenuName:(NSString *)menuName parentId:(UInt32)parentId position:(UInt16)position {
+ self = [self initWithMenuName:menuName];
+ if (!self) {
+ return nil;
+ }
+
+ self.parentID = @(parentId);
+ self.position = @(position);
+
+ return self;
+}
+
+- (instancetype)initWithMenuName:(NSString *)menuName {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.menuName = menuName;
+
+ return self;
+}
+
+- (void)setParentID:(nullable NSNumber<SDLInt> *)parentID {
+ [self.store sdl_setObject:parentID forName:SDLRPCParameterNameParentID];
+}
+
+- (nullable NSNumber<SDLInt> *)parentID {
+ return [self.store sdl_objectForName:SDLRPCParameterNameParentID ofClass:NSNumber.class error:nil];
+}
+
+- (void)setPosition:(nullable NSNumber<SDLInt> *)position {
+ [self.store sdl_setObject:position forName:SDLRPCParameterNamePosition];
+}
+
+- (nullable NSNumber<SDLInt> *)position {
+ return [self.store sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setMenuName:(NSString *)menuName {
+ [self.store sdl_setObject:menuName forName:SDLRPCParameterNameMenuName];
+}
+
+- (NSString *)menuName {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLMetadataTags.h b/SmartDeviceLink/public/SDLMetadataTags.h
index 4b875b848..4b875b848 100644
--- a/SmartDeviceLink/SDLMetadataTags.h
+++ b/SmartDeviceLink/public/SDLMetadataTags.h
diff --git a/SmartDeviceLink/SDLMetadataTags.m b/SmartDeviceLink/public/SDLMetadataTags.m
index d61d7237a..d61d7237a 100644
--- a/SmartDeviceLink/SDLMetadataTags.m
+++ b/SmartDeviceLink/public/SDLMetadataTags.m
diff --git a/SmartDeviceLink/public/SDLMetadataType.h b/SmartDeviceLink/public/SDLMetadataType.h
new file mode 100644
index 000000000..0a57a6e08
--- /dev/null
+++ b/SmartDeviceLink/public/SDLMetadataType.h
@@ -0,0 +1,76 @@
+
+//
+// SDLMetadataType.h
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 8/2/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Text Field metadata types. Used in Show.
+ */
+typedef SDLEnum SDLMetadataType NS_TYPED_ENUM;
+
+/**
+ * The song / media title name
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaTitle;
+
+/**
+ * The "artist" of the media
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaArtist;
+
+/**
+ * The "album" of the media"
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaAlbum;
+
+/**
+ * The "year" that the media was created
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaYear;
+
+/**
+ * The "genre" of the media
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaGenre;
+
+/**
+ * The "station" that the media is playing on
+ */
+extern SDLMetadataType const SDLMetadataTypeMediaStation;
+
+/**
+ * The "rating" given to the media
+ */
+extern SDLMetadataType const SDLMetadataTypeRating;
+
+/**
+ * The current temperature of the weather information
+ */
+extern SDLMetadataType const SDLMetadataTypeCurrentTemperature;
+
+/**
+ * The high / maximum temperature of the weather information for the current period
+ */
+extern SDLMetadataType const SDLMetadataTypeMaximumTemperature;
+
+/**
+ * The low / minimum temperature of the weather information for the current period
+ */
+extern SDLMetadataType const SDLMetadataTypeMinimumTemperature;
+
+/**
+ * A description of the weather for the current period
+ */
+extern SDLMetadataType const SDLMetadataTypeWeatherTerm;
+
+/**
+ * The humidity of the weather information for the current period
+ */
+extern SDLMetadataType const SDLMetadataTypeHumidity;
+
diff --git a/SmartDeviceLink/SDLMetadataType.m b/SmartDeviceLink/public/SDLMetadataType.m
index 22e846ccc..22e846ccc 100644
--- a/SmartDeviceLink/SDLMetadataType.m
+++ b/SmartDeviceLink/public/SDLMetadataType.m
diff --git a/SmartDeviceLink/SDLModuleData.h b/SmartDeviceLink/public/SDLModuleData.h
index 3ed7bfd15..3ed7bfd15 100644
--- a/SmartDeviceLink/SDLModuleData.h
+++ b/SmartDeviceLink/public/SDLModuleData.h
diff --git a/SmartDeviceLink/SDLModuleData.m b/SmartDeviceLink/public/SDLModuleData.m
index 9595deb4c..9595deb4c 100644
--- a/SmartDeviceLink/SDLModuleData.m
+++ b/SmartDeviceLink/public/SDLModuleData.m
diff --git a/SmartDeviceLink/SDLModuleInfo.h b/SmartDeviceLink/public/SDLModuleInfo.h
index f8dabce60..f8dabce60 100644
--- a/SmartDeviceLink/SDLModuleInfo.h
+++ b/SmartDeviceLink/public/SDLModuleInfo.h
diff --git a/SmartDeviceLink/SDLModuleInfo.m b/SmartDeviceLink/public/SDLModuleInfo.m
index 46a95e697..46a95e697 100644
--- a/SmartDeviceLink/SDLModuleInfo.m
+++ b/SmartDeviceLink/public/SDLModuleInfo.m
diff --git a/SmartDeviceLink/public/SDLModuleType.h b/SmartDeviceLink/public/SDLModuleType.h
new file mode 100644
index 000000000..a4091f41d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLModuleType.h
@@ -0,0 +1,41 @@
+//
+// SDLModuleType.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * The type of remote control data. Used in ButtonPress, GetInteriorVehicleData, and ModuleData
+ */
+typedef SDLEnum SDLModuleType NS_TYPED_ENUM;
+
+/**
+ * A SDLModuleType with the value of *CLIMATE*
+ */
+extern SDLModuleType const SDLModuleTypeClimate;
+
+/**
+ * A SDLModuleType with the value of *RADIO*
+ */
+extern SDLModuleType const SDLModuleTypeRadio;
+
+/**
+ * A SDLModuleType with the value of *SEAT*
+ */
+extern SDLModuleType const SDLModuleTypeSeat;
+
+/**
+ * A SDLModuleType with the value of *AUDIO*
+ */
+extern SDLModuleType const SDLModuleTypeAudio;
+
+/**
+ * A SDLModuleType with the value of *LIGHT*
+ */
+extern SDLModuleType const SDLModuleTypeLight;
+
+/**
+ * A SDLModuleType with the value of *HMI_SETTINGS*
+ */
+extern SDLModuleType const SDLModuleTypeHMISettings;
+
diff --git a/SmartDeviceLink/SDLModuleType.m b/SmartDeviceLink/public/SDLModuleType.m
index d23b19534..d23b19534 100644
--- a/SmartDeviceLink/SDLModuleType.m
+++ b/SmartDeviceLink/public/SDLModuleType.m
diff --git a/SmartDeviceLink/SDLMsgVersion.h b/SmartDeviceLink/public/SDLMsgVersion.h
index 03b033a08..03b033a08 100644
--- a/SmartDeviceLink/SDLMsgVersion.h
+++ b/SmartDeviceLink/public/SDLMsgVersion.h
diff --git a/SmartDeviceLink/SDLMsgVersion.m b/SmartDeviceLink/public/SDLMsgVersion.m
index dce291b1b..dce291b1b 100644
--- a/SmartDeviceLink/SDLMsgVersion.m
+++ b/SmartDeviceLink/public/SDLMsgVersion.m
diff --git a/SmartDeviceLink/SDLMyKey.h b/SmartDeviceLink/public/SDLMyKey.h
index e9f53aab4..e9f53aab4 100644
--- a/SmartDeviceLink/SDLMyKey.h
+++ b/SmartDeviceLink/public/SDLMyKey.h
diff --git a/SmartDeviceLink/SDLMyKey.m b/SmartDeviceLink/public/SDLMyKey.m
index 6ed384039..6ed384039 100644
--- a/SmartDeviceLink/SDLMyKey.m
+++ b/SmartDeviceLink/public/SDLMyKey.m
diff --git a/SmartDeviceLink/public/SDLNavigationAction.h b/SmartDeviceLink/public/SDLNavigationAction.h
new file mode 100644
index 000000000..7d6ff194a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLNavigationAction.h
@@ -0,0 +1,49 @@
+//
+// SDLNavigationAction.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/22/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * A navigation action.
+ */
+typedef SDLEnum SDLNavigationAction NS_TYPED_ENUM;
+
+/**
+ * Using this action plus a supplied direction can give the type of turn.
+ */
+extern SDLNavigationAction const SDLNavigationActionTurn;
+
+/**
+ * A navigation action of exit.
+ */
+extern SDLNavigationAction const SDLNavigationActionExit;
+
+/**
+ * A navigation action of stay.
+ */
+extern SDLNavigationAction const SDLNavigationActionStay;
+
+/**
+ * A navigation action of merge.
+ */
+extern SDLNavigationAction const SDLNavigationActionMerge;
+
+/**
+ * A navigation action of ferry.
+ */
+extern SDLNavigationAction const SDLNavigationActionFerry;
+
+/**
+ * A navigation action of car shuttle train.
+ */
+extern SDLNavigationAction const SDLNavigationActionCarShuttleTrain;
+
+/**
+ * A navigation action of waypoint.
+ */
+extern SDLNavigationAction const SDLNavigationActionWaypoint;
diff --git a/SmartDeviceLink/SDLNavigationAction.m b/SmartDeviceLink/public/SDLNavigationAction.m
index 938acea68..938acea68 100644
--- a/SmartDeviceLink/SDLNavigationAction.m
+++ b/SmartDeviceLink/public/SDLNavigationAction.m
diff --git a/SmartDeviceLink/SDLNavigationCapability.h b/SmartDeviceLink/public/SDLNavigationCapability.h
index 91fad7146..91fad7146 100644
--- a/SmartDeviceLink/SDLNavigationCapability.h
+++ b/SmartDeviceLink/public/SDLNavigationCapability.h
diff --git a/SmartDeviceLink/SDLNavigationCapability.m b/SmartDeviceLink/public/SDLNavigationCapability.m
index 7f536bc5a..7f536bc5a 100644
--- a/SmartDeviceLink/SDLNavigationCapability.m
+++ b/SmartDeviceLink/public/SDLNavigationCapability.m
diff --git a/SmartDeviceLink/SDLNavigationInstruction.h b/SmartDeviceLink/public/SDLNavigationInstruction.h
index a04cf6ef9..a04cf6ef9 100644
--- a/SmartDeviceLink/SDLNavigationInstruction.h
+++ b/SmartDeviceLink/public/SDLNavigationInstruction.h
diff --git a/SmartDeviceLink/SDLNavigationInstruction.m b/SmartDeviceLink/public/SDLNavigationInstruction.m
index d6e8e66d0..d6e8e66d0 100644
--- a/SmartDeviceLink/SDLNavigationInstruction.m
+++ b/SmartDeviceLink/public/SDLNavigationInstruction.m
diff --git a/SmartDeviceLink/public/SDLNavigationJunction.h b/SmartDeviceLink/public/SDLNavigationJunction.h
new file mode 100644
index 000000000..5ae7ec298
--- /dev/null
+++ b/SmartDeviceLink/public/SDLNavigationJunction.h
@@ -0,0 +1,54 @@
+//
+// SDLNavigationJunction.h
+// SmartDeviceLink
+//
+// Created by Nicole on 2/22/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * A navigation junction type.
+ */
+typedef SDLEnum SDLNavigationJunction NS_TYPED_ENUM;
+
+/**
+ * A junction that represents a standard intersection with a single road crossing another.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionRegular;
+
+/**
+ * A junction where the road splits off into two paths; a fork in the road.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionBifurcation;
+
+/**
+ * A junction that has multiple intersections and paths.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionMultiCarriageway;
+
+/**
+ * A junction where traffic moves in a single direction around a central, non-traversable point to reach one of the connecting roads.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionRoundabout;
+
+/**
+ * Similar to a roundabout, however the center of the roundabout is fully traversable. Also known as a mini-roundabout.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionTraversableRoundabout;
+
+/**
+ * A junction where lefts diverge to the right, then curve to the left, converting a left turn to a crossing maneuver.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionJughandle;
+
+/**
+ * Multiple way intersection that allows traffic to flow based on priority; most commonly right of way and first in, first out.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionAllWayYield;
+
+/**
+ * A junction designated for traffic turn arounds.
+ */
+extern SDLNavigationJunction const SDLNavigationJunctionTurnAround;
diff --git a/SmartDeviceLink/SDLNavigationJunction.m b/SmartDeviceLink/public/SDLNavigationJunction.m
index 3c5b81c15..3c5b81c15 100644
--- a/SmartDeviceLink/SDLNavigationJunction.m
+++ b/SmartDeviceLink/public/SDLNavigationJunction.m
diff --git a/SmartDeviceLink/SDLNavigationServiceData.h b/SmartDeviceLink/public/SDLNavigationServiceData.h
index 0f090fc96..0f090fc96 100644
--- a/SmartDeviceLink/SDLNavigationServiceData.h
+++ b/SmartDeviceLink/public/SDLNavigationServiceData.h
diff --git a/SmartDeviceLink/SDLNavigationServiceData.m b/SmartDeviceLink/public/SDLNavigationServiceData.m
index 6143c47ee..6143c47ee 100644
--- a/SmartDeviceLink/SDLNavigationServiceData.m
+++ b/SmartDeviceLink/public/SDLNavigationServiceData.m
diff --git a/SmartDeviceLink/SDLNavigationServiceManifest.h b/SmartDeviceLink/public/SDLNavigationServiceManifest.h
index 1c8f35405..1c8f35405 100644
--- a/SmartDeviceLink/SDLNavigationServiceManifest.h
+++ b/SmartDeviceLink/public/SDLNavigationServiceManifest.h
diff --git a/SmartDeviceLink/SDLNavigationServiceManifest.m b/SmartDeviceLink/public/SDLNavigationServiceManifest.m
index 576946722..576946722 100644
--- a/SmartDeviceLink/SDLNavigationServiceManifest.m
+++ b/SmartDeviceLink/public/SDLNavigationServiceManifest.m
diff --git a/SmartDeviceLink/public/SDLNotificationConstants.h b/SmartDeviceLink/public/SDLNotificationConstants.h
new file mode 100644
index 000000000..321102cfe
--- /dev/null
+++ b/SmartDeviceLink/public/SDLNotificationConstants.h
@@ -0,0 +1,635 @@
+//
+// SDLNotificationConstants.h
+// SmartDeviceLink-iOS
+//
+// Created by Justin Dickow on 9/30/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class SDLOnButtonEvent;
+@class SDLOnButtonPress;
+@class SDLOnCommand;
+@class SDLRPCNotification;
+@class SDLRPCResponse;
+@class SDLRPCRequest;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// NSNotification names specific to incoming SDL RPC
+typedef NSNotificationName SDLNotificationName;
+
+/// The key used in all SDL NSNotifications to extract the response or notification from the userInfo dictionary.
+typedef NSString *SDLNotificationUserInfoKey;
+
+#pragma mark - Blocks
+
+/**
+ * A handler used on SDLPerformAudioPassThru.
+ *
+ * @param audioData The audio data contained in the notification.
+ */
+typedef void (^SDLAudioPassThruHandler)(NSData *__nullable audioData);
+
+/**
+ * A handler used on all RPC requests which fires when the response is received.
+ *
+ * @param request The request which was sent.
+ * @param response The response which was received.
+ * @param error If sending the request encountered an error, this parameter will not be nil.
+ */
+typedef void (^SDLResponseHandler)(__kindof SDLRPCRequest *__nullable request, __kindof SDLRPCResponse *__nullable response, NSError *__nullable error);
+
+/**
+ A completion handler called after a sequential or simultaneous set of requests have completed sending.
+
+ @param success True if every request succeeded, false if any failed. See the progress handler for more details on failures.
+ */
+typedef void (^SDLMultipleRequestCompletionHandler)(BOOL success);
+
+/**
+ A handler called after each response to a request comes in in a multiple request send.
+
+ @param request The request that received a response
+ @param response The response received
+ @param error The error that occurred during the request if any occurred.
+ @param percentComplete The percentage of requests that have received a response
+ @return continueSendingRequests NO to cancel any requests that have not yet been sent. This is really only useful for a sequential send (sendSequentialRequests:progressHandler:completionHandler:). Return YES to continue sending requests.
+ */
+typedef BOOL (^SDLMultipleSequentialRequestProgressHandler)(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *__nullable response, NSError *__nullable error, float percentComplete);
+
+/**
+ A handler called after each response to a request comes in in a multiple request send.
+
+ @param request The request that received a response
+ @param response The response received
+ @param error The error that occurred during the request if any occurred.
+ @param percentComplete The percentage of requests that have received a response
+ */
+typedef void (^SDLMultipleAsyncRequestProgressHandler)(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *__nullable response, NSError *__nullable error, float percentComplete);
+
+/**
+ A handler that may optionally be run when an SDLSubscribeButton or SDLSoftButton has a corresponding notification occur.
+
+ @warning This only works if you send the RPC using SDLManager.
+ @warning Only one of the two parameters will be set for each block call.
+
+ @param buttonPress An SDLOnButtonPress object that corresponds to this particular button.
+ @param buttonEvent An SDLOnButtonEvent object that corresponds to this particular button.
+ */
+typedef void (^SDLRPCButtonNotificationHandler)(SDLOnButtonPress *_Nullable buttonPress, SDLOnButtonEvent *_Nullable buttonEvent);
+/**
+ A handler that may optionally be run when an SDLAddCommand has a corresponding notification occur.
+
+ @warning This only works if you send the RPC using SDLManager.
+
+ @param command An SDLOnCommand object that corresponds to this particular SDLAddCommand.
+ */
+typedef void (^SDLRPCCommandNotificationHandler)(SDLOnCommand *command);
+
+
+#pragma mark - Notification info dictionary keys
+
+/**
+* The key used in all SDL NSNotifications to extract the response or notification from the userinfo dictionary.
+*/
+extern SDLNotificationUserInfoKey const SDLNotificationUserInfoObject;
+
+/**
+ * Some general NSNotification names not associated with any specific RPC response or request.
+ */
+#pragma mark - General notifications
+
+/// Name for a disconnection notification
+extern SDLNotificationName const SDLTransportDidDisconnect;
+
+/// Name for a connection notification
+extern SDLNotificationName const SDLTransportDidConnect;
+
+/// Name for a error during connection notification
+extern SDLNotificationName const SDLTransportConnectError;
+
+/// Name for a disconnection notification
+extern SDLNotificationName const SDLRPCServiceDidDisconnect;
+
+/// Name for a connection notification
+extern SDLNotificationName const SDLRPCServiceDidConnect;
+
+/// Name for a error during connection notification
+extern SDLNotificationName const SDLRPCServiceConnectionDidError;
+
+/// Name for a general error notification
+extern SDLNotificationName const SDLDidReceiveError;
+
+/// Name for an incoming lock screen icon notification
+extern SDLNotificationName const SDLDidReceiveLockScreenIcon;
+
+/// Name for an SDL became ready notification
+extern SDLNotificationName const SDLDidBecomeReady;
+
+/// Name for a notification sent by the user when their CarWindow view has been updated
+extern SDLNotificationName const SDLDidUpdateProjectionView;
+
+/**
+ * NSNotification names associated with specific RPC responses.
+ */
+#pragma mark - RPC responses
+
+/// Name for an AddCommand response RPC
+extern SDLNotificationName const SDLDidReceiveAddCommandResponse;
+
+/// Name for an AddSubMenu response RPC
+extern SDLNotificationName const SDLDidReceiveAddSubMenuResponse;
+
+/// Name for an Alert response RPC
+extern SDLNotificationName const SDLDidReceiveAlertResponse;
+
+/// Name for an AlertManeuver response RPC
+extern SDLNotificationName const SDLDidReceiveAlertManeuverResponse;
+
+/// Name for an ButtonPress response RPC
+extern SDLNotificationName const SDLDidReceiveButtonPressResponse;
+
+/// Name for aa CancelInteraction response RPC
+extern SDLNotificationName const SDLDidReceiveCancelInteractionResponse;
+
+/// Name for a ChangeRegistration response RPC
+extern SDLNotificationName const SDLDidReceiveChangeRegistrationResponse;
+
+/// Name for a CloseApplication response RPC
+extern SDLNotificationName const SDLDidReceiveCloseApplicationResponse;
+
+/// Name for a CreateInteractionChoiceSet response RPC
+extern SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse;
+
+/// Name for a CreateWindow response RPC
+extern SDLNotificationName const SDLDidReceiveCreateWindowResponse;
+
+/// Name for a DeleteCommand response RPC
+extern SDLNotificationName const SDLDidReceiveDeleteCommandResponse;
+
+/// Name for a DeleteFile response RPC
+extern SDLNotificationName const SDLDidReceiveDeleteFileResponse;
+
+/// Name for a DeleteInteractionChoiceSet response RPC
+extern SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetResponse;
+
+/// Name for a DeleteSubmenu response RPC
+extern SDLNotificationName const SDLDidReceiveDeleteSubmenuResponse;
+
+/// Name for a DeleteWindow response RPC
+extern SDLNotificationName const SDLDidReceiveDeleteWindowResponse;
+
+/// Name for a DiagnosticMessage response RPC
+extern SDLNotificationName const SDLDidReceiveDiagnosticMessageResponse;
+
+/// Name for a DialNumber response RPC
+extern SDLNotificationName const SDLDidReceiveDialNumberResponse;
+
+/// Name for an EncodedSyncPData response RPC
+extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse __deprecated;
+
+/// Name for an EndAudioPassThru response RPC
+extern SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse;
+
+/// Name for a Generic response RPC
+extern SDLNotificationName const SDLDidReceiveGenericResponse;
+
+/// Name for a GetCloudAppProperties response RPC
+extern SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesResponse;
+
+/// Name for a GetAppServiceData response RPC
+extern SDLNotificationName const SDLDidReceiveGetAppServiceDataResponse;
+
+/// Name for a GetDTCs response RPC
+extern SDLNotificationName const SDLDidReceiveGetDTCsResponse;
+
+/// Name for a GetFile response RPC
+extern SDLNotificationName const SDLDidReceiveGetFileResponse;
+
+/// Name for a GetInteriorVehicleData response RPC
+extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataResponse;
+
+/// Name for a GetInteriorVehicleDataConsent response RPC
+extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentResponse;
+
+/// Name for a GetSystemCapabilities response RPC
+extern SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse;
+
+/// Name for a GetVehicleData response RPC
+extern SDLNotificationName const SDLDidReceiveGetVehicleDataResponse;
+
+/// Name for a GetWaypoints response RPC
+extern SDLNotificationName const SDLDidReceiveGetWaypointsResponse;
+
+/// Name for a ListFiles response RPC
+extern SDLNotificationName const SDLDidReceiveListFilesResponse;
+
+/// Name for a PerformAppServiceInteraction response RPC
+extern SDLNotificationName const SDLDidReceivePerformAppServiceInteractionResponse;
+
+/// Name for a PerformAudioPassThru response RPC
+extern SDLNotificationName const SDLDidReceivePerformAudioPassThruResponse;
+
+/// Name for a PerformInteraction response RPC
+extern SDLNotificationName const SDLDidReceivePerformInteractionResponse;
+
+/// Name for a PublishAppService response RPC
+extern SDLNotificationName const SDLDidReceivePublishAppServiceResponse;
+
+/// Name for a ReceivePutFile response RPC
+extern SDLNotificationName const SDLDidReceivePutFileResponse;
+
+/// Name for a ReceiveReadDID response RPC
+extern SDLNotificationName const SDLDidReceiveReadDIDResponse;
+
+/// Name for a RegisterAppInterface response RPC
+extern SDLNotificationName const SDLDidReceiveRegisterAppInterfaceResponse;
+
+/// Name for a ReleaseInteriorVehicleDataModule response RPC
+extern SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleResponse;
+
+/// Name for a ResetGlobalProperties response RPC
+extern SDLNotificationName const SDLDidReceiveResetGlobalPropertiesResponse;
+
+/// Name for a ScrollableMessage response RPC
+extern SDLNotificationName const SDLDidReceiveScrollableMessageResponse;
+
+/// Name for a SendHapticData response RPC
+extern SDLNotificationName const SDLDidReceiveSendHapticDataResponse;
+
+/// Name for a SendLocation response RPC
+extern SDLNotificationName const SDLDidReceiveSendLocationResponse;
+
+/// Name for a SetAppIcon response RPC
+extern SDLNotificationName const SDLDidReceiveSetAppIconResponse;
+
+/// Name for a SetCloudAppProperties response RPC
+extern SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesResponse;
+
+/// Name for a SetDisplayLayout response RPC
+extern SDLNotificationName const SDLDidReceiveSetDisplayLayoutResponse;
+
+/// Name for a SetGlobalProperties response RPC
+extern SDLNotificationName const SDLDidReceiveSetGlobalPropertiesResponse;
+
+/// Name for a SetInteriorVehicleData response RPC
+extern SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataResponse;
+
+/// Name for a SetMediaClockTimer response RPC
+extern SDLNotificationName const SDLDidReceiveSetMediaClockTimerResponse;
+
+/// Name for a ShowConstantTBT response RPC
+extern SDLNotificationName const SDLDidReceiveShowConstantTBTResponse;
+
+/// Name for a Show response RPC
+extern SDLNotificationName const SDLDidReceiveShowResponse;
+
+/// Name for a ShowAppMenu response RPC
+extern SDLNotificationName const SDLDidReceiveShowAppMenuResponse;
+
+/// Name for a Slider response RPC
+extern SDLNotificationName const SDLDidReceiveSliderResponse;
+
+/// Name for a Speak response RPC
+extern SDLNotificationName const SDLDidReceiveSpeakResponse;
+
+/// Name for a SubscribeButton response RPC
+extern SDLNotificationName const SDLDidReceiveSubscribeButtonResponse;
+
+/// Name for a SubscribeVehicleData response RPC
+extern SDLNotificationName const SDLDidReceiveSubscribeVehicleDataResponse;
+
+/// Name for a SubscribeWaypoints response RPC
+extern SDLNotificationName const SDLDidReceiveSubscribeWaypointsResponse;
+
+/// Name for a SubtleAlert response RPC
+extern SDLNotificationName const SDLDidReceiveSubtleAlertResponse;
+
+/// Name for a SyncPData response RPC
+extern SDLNotificationName const SDLDidReceiveSyncPDataResponse __deprecated;
+
+/// Name for a SystemRequest response RPC
+extern SDLNotificationName const SDLDidReceiveSystemRequestResponse;
+
+/// Name for an UpdateTurnList response RPC
+extern SDLNotificationName const SDLDidReceiveUpdateTurnListResponse;
+
+/// Name for an UnpublishAppService response RPC
+extern SDLNotificationName const SDLDidReceiveUnpublishAppServiceResponse;
+
+/// Name for an UnregisterAppInterface response RPC
+extern SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceResponse;
+
+/// Name for an UnsubscribeButton response RPC
+extern SDLNotificationName const SDLDidReceiveUnsubscribeButtonResponse;
+
+/// Name for an UnsubscribeVehicleData response RPC
+extern SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataResponse;
+
+/// Name for an UnsubscribeWaypoints response RPC
+extern SDLNotificationName const SDLDidReceiveUnsubscribeWaypointsResponse;
+
+/**
+ * NSNotification names associated with specific RPC requests.
+ */
+#pragma mark - RPC requests
+
+/// Name for an AddCommand request RPC
+extern SDLNotificationName const SDLDidReceiveAddCommandRequest;
+
+/// Name for an AddSubMenu request RPC
+extern SDLNotificationName const SDLDidReceiveAddSubMenuRequest;
+
+/// Name for an Alert request RPC
+extern SDLNotificationName const SDLDidReceiveAlertRequest;
+
+/// Name for an AlertManeuver request RPC
+extern SDLNotificationName const SDLDidReceiveAlertManeuverRequest;
+
+/// Name for a ButtonPress request RPC
+extern SDLNotificationName const SDLDidReceiveButtonPressRequest;
+
+/// Name for a CancelInteraction request RPC
+extern SDLNotificationName const SDLDidReceiveCancelInteractionRequest;
+
+/// Name for a ChangeRegistration request RPC
+extern SDLNotificationName const SDLDidReceiveChangeRegistrationRequest;
+
+/// Name for a CloseApplication request RPC
+extern SDLNotificationName const SDLDidReceiveCloseApplicationRequest;
+
+/// Name for a CreateInteractionChoiceSet request RPC
+extern SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetRequest;
+
+/// Name for a CreateWindow request RPC
+extern SDLNotificationName const SDLDidReceiveCreateWindowRequest;
+
+/// Name for a DeleteCommand request RPC
+extern SDLNotificationName const SDLDidReceiveDeleteCommandRequest;
+
+/// Name for a DeleteFile request RPC
+extern SDLNotificationName const SDLDidReceiveDeleteFileRequest;
+
+/// Name for a DeleteInteractionChoiceSet request RPC
+extern SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetRequest;
+
+/// Name for a DeleteSubMenu request RPC
+extern SDLNotificationName const SDLDidReceiveDeleteSubMenuRequest;
+
+/// Name for a DeleteSubMenu request RPC
+extern SDLNotificationName const SDLDidReceiveDeleteWindowRequest;
+
+/// Name for a DiagnosticMessage request RPC
+extern SDLNotificationName const SDLDidReceiveDiagnosticMessageRequest;
+
+/// Name for a DialNumberR request RPC
+extern SDLNotificationName const SDLDidReceiveDialNumberRequest;
+
+/// Name for an EncodedSyncPData request RPC
+extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest __deprecated;
+
+/// Name for a EndAudioPass request RPC
+extern SDLNotificationName const SDLDidReceiveEndAudioPassThruRequest;
+
+/// Name for a GetAppServiceData request RPC
+extern SDLNotificationName const SDLDidReceiveGetAppServiceDataRequest;
+
+/// Name for a GetCloudAppProperties request RPC
+extern SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesRequest;
+
+/// Name for a ReceiveGetDTCs request RPC
+extern SDLNotificationName const SDLDidReceiveGetDTCsRequest;
+
+/// Name for a GetFile request RPC
+extern SDLNotificationName const SDLDidReceiveGetFileRequest;
+
+/// Name for a GetInteriorVehicleData request RPC
+extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataRequest;
+
+/// Name for a GetInteriorVehicleDataConsent request RPC
+extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentRequest;
+
+/// Name for a GetSystemCapability request RPC
+extern SDLNotificationName const SDLDidReceiveGetSystemCapabilityRequest;
+
+/// Name for a GetVehicleData request RPC
+extern SDLNotificationName const SDLDidReceiveGetVehicleDataRequest;
+
+/// Name for a GetWayPoints request RPC
+extern SDLNotificationName const SDLDidReceiveGetWayPointsRequest;
+
+/// Name for a ListFiles request RPC
+extern SDLNotificationName const SDLDidReceiveListFilesRequest;
+
+/// Name for a PerformAppServiceInteraction request RPC
+extern SDLNotificationName const SDLDidReceivePerformAppServiceInteractionRequest;
+
+/// Name for a PerformAudioPassThru request RPC
+extern SDLNotificationName const SDLDidReceivePerformAudioPassThruRequest;
+
+/// Name for a PerformInteraction request RPC
+extern SDLNotificationName const SDLDidReceivePerformInteractionRequest;
+
+/// Name for a PublishAppService request RPC
+extern SDLNotificationName const SDLDidReceivePublishAppServiceRequest;
+
+/// Name for a PutFile request RPC
+extern SDLNotificationName const SDLDidReceivePutFileRequest;
+
+/// Name for a ReadDID request RPC
+extern SDLNotificationName const SDLDidReceiveReadDIDRequest;
+
+/// Name for a RegisterAppInterfacr request RPC
+extern SDLNotificationName const SDLDidReceiveRegisterAppInterfaceRequest;
+
+/// Name for a ReleaseInteriorVehicleData request RPC
+extern SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleRequest;
+
+/// Name for a ResetGlobalProperties request RPC
+extern SDLNotificationName const SDLDidReceiveResetGlobalPropertiesRequest;
+
+/// Name for a ScrollableMessage request RPC
+extern SDLNotificationName const SDLDidReceiveScrollableMessageRequest;
+
+/// Name for a SendHapticData request RPC
+extern SDLNotificationName const SDLDidReceiveSendHapticDataRequest;
+
+/// Name for a SendLocation request RPC
+extern SDLNotificationName const SDLDidReceiveSendLocationRequest;
+
+/// Name for a SetAppIcon request RPC
+extern SDLNotificationName const SDLDidReceiveSetAppIconRequest;
+
+/// Name for a SetCloudProperties request RPC
+extern SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesRequest;
+
+/// Name for a SetDisplayLayout request RPC
+extern SDLNotificationName const SDLDidReceiveSetDisplayLayoutRequest;
+
+/// Name for a SetGlobalProperties request RPC
+extern SDLNotificationName const SDLDidReceiveSetGlobalPropertiesRequest;
+
+/// Name for a SetInteriorVehicleData request RPC
+extern SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataRequest;
+
+/// Name for a SetMediaClockTimer request RPC
+extern SDLNotificationName const SDLDidReceiveSetMediaClockTimerRequest;
+
+/// Name for a Show request RPC
+extern SDLNotificationName const SDLDidReceiveShowRequest;
+
+/// Name for a ShowAppMenu request RPC
+extern SDLNotificationName const SDLDidReceiveShowAppMenuRequest;
+
+/// Name for a ShowConstantTBT request RPC
+extern SDLNotificationName const SDLDidReceiveShowConstantTBTRequest;
+
+/// Name for a Slider request RPC
+extern SDLNotificationName const SDLDidReceiveSliderRequest;
+
+/// Name for a Speak request RPC
+extern SDLNotificationName const SDLDidReceiveSpeakRequest;
+
+/// Name for a SubscribeButton request RPC
+extern SDLNotificationName const SDLDidReceiveSubscribeButtonRequest;
+
+/// Name for a SubscribeVehicleData request RPC
+extern SDLNotificationName const SDLDidReceiveSubscribeVehicleDataRequest;
+
+/// Name for a SubscribeWayPoints request RPC
+extern SDLNotificationName const SDLDidReceiveSubscribeWayPointsRequest;
+
+/// Name for a SubtleAlert request RPC
+extern SDLNotificationName const SDLDidReceiveSubtleAlertRequest;
+
+/// Name for a SyncPData request RPC
+extern SDLNotificationName const SDLDidReceiveSyncPDataRequest __deprecated;
+
+/// Name for a SystemRequest request RPC
+extern SDLNotificationName const SDLDidReceiveSystemRequestRequest;
+
+/// Name for an UnpublishAppService request RPC
+extern SDLNotificationName const SDLDidReceiveUnpublishAppServiceRequest;
+
+/// Name for an UnregisterAppInterface request RPC
+extern SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceRequest;
+
+/// Name for an UnsubscribeButton request RPC
+extern SDLNotificationName const SDLDidReceiveUnsubscribeButtonRequest;
+
+/// Name for an UnsubscribeVehicleData request RPC
+extern SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataRequest;
+
+/// Name for an UnsubscribeWayPoints request RPC
+extern SDLNotificationName const SDLDidReceiveUnsubscribeWayPointsRequest;
+
+/// Name for an UpdateTurnList request RPC
+extern SDLNotificationName const SDLDidReceiveUpdateTurnListRequest;
+
+/**
+ * NSNotification names associated with specific RPC notifications.
+ */
+#pragma mark - RPC Notifications
+
+/// Name for a DriverDistractionState notification RPC
+extern SDLNotificationName const SDLDidChangeDriverDistractionStateNotification;
+
+/// Name for a HMIStatus notification RPC
+extern SDLNotificationName const SDLDidChangeHMIStatusNotification;
+
+/// Name for an AppServiceData notification RPC
+extern SDLNotificationName const SDLDidReceiveAppServiceDataNotification;
+
+/// Name for an AppUnregistered notification RPC
+extern SDLNotificationName const SDLDidReceiveAppUnregisteredNotification;
+
+/// Name for an AudioPassThru notification RPC
+extern SDLNotificationName const SDLDidReceiveAudioPassThruNotification;
+
+/// Name for a ButtonEvent notification RPC
+extern SDLNotificationName const SDLDidReceiveButtonEventNotification;
+
+/// Name for a ButtonPress notification RPC
+extern SDLNotificationName const SDLDidReceiveButtonPressNotification;
+
+/// Name for a Command notification RPC
+extern SDLNotificationName const SDLDidReceiveCommandNotification;
+
+/// Name for a EncodedSyncPData notification RPC
+extern SDLNotificationName const SDLDidReceiveEncodedDataNotification __deprecated;
+
+/// Name for a InteriorVehicleData notification RPC
+extern SDLNotificationName const SDLDidReceiveInteriorVehicleDataNotification;
+
+/// Name for a KeyboardInput notification RPC
+extern SDLNotificationName const SDLDidReceiveKeyboardInputNotification;
+
+/// Name for a Language notification RPC
+extern SDLNotificationName const SDLDidChangeLanguageNotification;
+
+/// Name for a NewHash notification RPC
+extern SDLNotificationName const SDLDidReceiveNewHashNotification;
+
+/// Name for a VehicleIcon notification RPC
+extern SDLNotificationName const SDLDidReceiveVehicleIconNotification;
+
+/// Name for a ChangePermissions notification RPC
+extern SDLNotificationName const SDLDidChangePermissionsNotification;
+
+/// Name for a SubtleAlertPressed notification RPC
+extern SDLNotificationName const SDLDidReceiveSubtleAlertPressedNotification;
+
+/// Name for a RemoteControlStatus notification RPC
+extern SDLNotificationName const SDLDidReceiveRemoteControlStatusNotification;
+
+/// Name for an OnSyncPData notification RPC
+extern SDLNotificationName const SDLDidReceiveSyncPDataNotification __deprecated;
+
+/// Name for a SystemCapability notification RPC
+extern SDLNotificationName const SDLDidReceiveSystemCapabilityUpdatedNotification;
+
+/// Name for a SystemRequest notification RPC
+extern SDLNotificationName const SDLDidReceiveSystemRequestNotification;
+
+/// Name for a TurnByTurnStat notification RPC
+extern SDLNotificationName const SDLDidChangeTurnByTurnStateNotification;
+
+/// Name for a TouchEvent notification RPC
+extern SDLNotificationName const SDLDidReceiveTouchEventNotification;
+
+/// Name for an OnUpdateFile notification RPC
+extern SDLNotificationName const SDLDidReceiveUpdateFileNotification;
+
+/// Name for an OnUpdateSubMenu notification RPC
+extern SDLNotificationName const SDLDidReceiveUpdateSubMenuNotification;
+
+/// Name for a VehicleData notification RPC
+extern SDLNotificationName const SDLDidReceiveVehicleDataNotification;
+
+/// Name for a Waypoint notification RPC
+extern SDLNotificationName const SDLDidReceiveWaypointNotification;
+
+
+/// This class defines methods for getting groups of notifications
+@interface SDLNotificationConstants : NSObject
+
+/**
+ All of the possible SDL RPC Response notification names
+
+ @return All response notification names
+ */
++ (NSArray<SDLNotificationName> *)allResponseNames;
+
+/**
+ All of the possible SDL Button event notification names
+
+ @return The names
+ */
++ (NSArray<SDLNotificationName> *)allButtonEventNotifications;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLNotificationConstants.m b/SmartDeviceLink/public/SDLNotificationConstants.m
new file mode 100644
index 000000000..dc0c7315f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLNotificationConstants.m
@@ -0,0 +1,271 @@
+//
+// SDLNotificationConstants.m
+// SmartDeviceLink-iOS
+//
+// Created by Justin Dickow on 9/30/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLNotificationConstants.h"
+
+/// These notifications will be returned on a background serial queue
+
+SDLNotificationUserInfoKey const SDLNotificationUserInfoObject = @"SDLNotificationUserInfoObject";
+
+
+#pragma mark - General notifications
+SDLNotificationName const SDLTransportDidDisconnect = @"com.sdl.transport.disconnect";
+SDLNotificationName const SDLTransportDidConnect = @"com.sdl.transport.connect";
+SDLNotificationName const SDLTransportConnectError = @"com.sdl.transport.connectError";
+SDLNotificationName const SDLRPCServiceDidDisconnect = @"com.sdl.rpcService.disconnect";
+SDLNotificationName const SDLRPCServiceDidConnect = @"com.sdl.rpcService.connect";
+SDLNotificationName const SDLRPCServiceConnectionDidError = @"com.sdl.rpcService.connectError";
+SDLNotificationName const SDLDidReceiveError = @"com.sdl.general.error";
+SDLNotificationName const SDLDidReceiveLockScreenIcon = @"com.sdl.general.lockscreenIconReceived";
+SDLNotificationName const SDLDidBecomeReady = @"com.sdl.notification.managerReady";
+SDLNotificationName const SDLDidReceiveVehicleIconNotification = @"com.sdl.notification.vehicleIcon";
+SDLNotificationName const SDLDidUpdateProjectionView = @"com.sdl.notification.projectionViewUpdate";
+
+#pragma mark - RPC Responses
+SDLNotificationName const SDLDidReceiveAddCommandResponse = @"com.sdl.response.AddCommand";
+SDLNotificationName const SDLDidReceiveAddSubMenuResponse = @"com.sdl.response.AddSubMenu";
+SDLNotificationName const SDLDidReceiveAlertResponse = @"com.sdl.response.Alert";
+SDLNotificationName const SDLDidReceiveAlertManeuverResponse = @"com.sdl.response.AlertManeuver";
+SDLNotificationName const SDLDidReceiveButtonPressResponse = @"com.sdl.response.ButtonPress";
+SDLNotificationName const SDLDidReceiveCancelInteractionResponse = @"com.sdl.response.CancelInteraction";
+SDLNotificationName const SDLDidReceiveChangeRegistrationResponse = @"com.sdl.response.ChangeRegistration";
+SDLNotificationName const SDLDidReceiveCloseApplicationResponse = @"com.sdl.response.CloseApplication";
+SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse = @"com.sdl.response.CreateInteractionChoiceSet";
+SDLNotificationName const SDLDidReceiveCreateWindowResponse = @"com.sdl.response.CreateWindow";
+SDLNotificationName const SDLDidReceiveDeleteCommandResponse = @"com.sdl.response.DeleteCommand";
+SDLNotificationName const SDLDidReceiveDeleteFileResponse = @"com.sdl.response.DeleteFile";
+SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetResponse = @"com.sdl.response.DeleteInteractionChoiceSet";
+SDLNotificationName const SDLDidReceiveDeleteSubmenuResponse = @"com.sdl.response.DeleteSubMenu";
+SDLNotificationName const SDLDidReceiveDeleteWindowResponse = @"com.sdl.response.DeleteWindow";
+SDLNotificationName const SDLDidReceiveDiagnosticMessageResponse = @"com.sdl.response.DiagnosticMessage";
+SDLNotificationName const SDLDidReceiveDialNumberResponse = @"com.sdl.response.DialNumber";
+SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse = @"com.sdl.response.EncodedSyncPData";
+SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse = @"com.sdl.response.EndAudioPassThru";
+SDLNotificationName const SDLDidReceiveGenericResponse = @"com.sdl.response.GenericResponse";
+SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesResponse = @"com.sdl.response.GetCloudAppProperties";
+SDLNotificationName const SDLDidReceiveGetAppServiceDataResponse = @"com.sdl.response.GetAppServiceData";
+SDLNotificationName const SDLDidReceiveGetDTCsResponse = @"com.sdl.response.GetDTCs";
+SDLNotificationName const SDLDidReceiveGetFileResponse = @"com.sdl.response.GetFile";
+SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataResponse = @"com.sdl.response.GetInteriorVehicleData";
+SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentResponse = @"com.sdl.response.GetInteriorVehicleDataConsent";
+SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse = @"com.sdl.response.GetSystemCapability";
+SDLNotificationName const SDLDidReceiveGetVehicleDataResponse = @"com.sdl.response.GetVehicleData";
+SDLNotificationName const SDLDidReceiveGetWaypointsResponse = @"com.sdl.response.GetWayPoints";
+SDLNotificationName const SDLDidReceiveListFilesResponse = @"com.sdl.response.ListFiles";
+SDLNotificationName const SDLDidReceivePerformAppServiceInteractionResponse = @"com.sdl.response.PerformAppServiceInteraction";
+SDLNotificationName const SDLDidReceivePerformAudioPassThruResponse = @"com.sdl.response.PerformAudioPassThru";
+SDLNotificationName const SDLDidReceivePerformInteractionResponse = @"com.sdl.response.PerformInteraction";
+SDLNotificationName const SDLDidReceivePublishAppServiceResponse = @"com.sdl.response.PublishAppService";
+SDLNotificationName const SDLDidReceivePutFileResponse = @"com.sdl.response.PutFile";
+SDLNotificationName const SDLDidReceiveReadDIDResponse = @"com.sdl.response.ReadDID";
+SDLNotificationName const SDLDidReceiveRegisterAppInterfaceResponse = @"com.sdl.response.RegisterAppInterface";
+SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleResponse = @"com.sdl.response.ReleaseInteriorVehicleDataModule";
+SDLNotificationName const SDLDidReceiveResetGlobalPropertiesResponse = @"com.sdl.response.ResetGlobalProperties";
+SDLNotificationName const SDLDidReceiveScrollableMessageResponse = @"com.sdl.response.ScrollableMessage";
+SDLNotificationName const SDLDidReceiveSendHapticDataResponse = @"com.sdl.response.SendHapticData";
+SDLNotificationName const SDLDidReceiveSendLocationResponse = @"com.sdl.response.SendLocation";
+SDLNotificationName const SDLDidReceiveSetAppIconResponse = @"com.sdl.response.SetAppIcon";
+SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesResponse = @"com.sdl.response.SetCloudAppProperties";
+SDLNotificationName const SDLDidReceiveSetDisplayLayoutResponse = @"com.sdl.response.SetDisplayLayout";
+SDLNotificationName const SDLDidReceiveSetGlobalPropertiesResponse = @"com.sdl.response.SetGlobalProperties";
+SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataResponse = @"com.sdl.response.SetInteriorVehicleData";
+SDLNotificationName const SDLDidReceiveSetMediaClockTimerResponse = @"com.sdl.response.SetMediaClockTimer";
+SDLNotificationName const SDLDidReceiveShowConstantTBTResponse = @"com.sdl.response.ShowConstantTBT";
+SDLNotificationName const SDLDidReceiveShowResponse = @"com.sdl.response.Show";
+SDLNotificationName const SDLDidReceiveShowAppMenuResponse = @"com.sdl.response.ShowAppMenu";
+SDLNotificationName const SDLDidReceiveSliderResponse = @"com.sdl.response.Slider";
+SDLNotificationName const SDLDidReceiveSpeakResponse = @"com.sdl.response.Speak";
+SDLNotificationName const SDLDidReceiveSubscribeButtonResponse = @"com.sdl.response.SubscribeButton";
+SDLNotificationName const SDLDidReceiveSubscribeVehicleDataResponse = @"com.sdl.response.SubscribeVehicleData";
+SDLNotificationName const SDLDidReceiveSubscribeWaypointsResponse = @"com.sdl.response.SubscribeWayPoints";
+SDLNotificationName const SDLDidReceiveSubtleAlertResponse = @"com.sdl.response.SubtleAlert";
+SDLNotificationName const SDLDidReceiveSyncPDataResponse = @"com.sdl.response.SyncPData";
+SDLNotificationName const SDLDidReceiveSystemRequestResponse = @"com.sdl.response.SystemRequest";
+SDLNotificationName const SDLDidReceiveUpdateTurnListResponse = @"com.sdl.response.UpdateTurnList";
+SDLNotificationName const SDLDidReceiveUnpublishAppServiceResponse = @"com.sdl.response.UnpublishAppService";
+SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceResponse = @"com.sdl.response.UnregisterAppInterface";
+SDLNotificationName const SDLDidReceiveUnsubscribeButtonResponse = @"com.sdl.response.UnsubscribeButton";
+SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataResponse = @"com.sdl.response.UnsubscribeVehicleData";
+SDLNotificationName const SDLDidReceiveUnsubscribeWaypointsResponse = @"com.sdl.response.UnsubscribeWayPoints";
+
+#pragma mark - RPC Requests
+SDLNotificationName const SDLDidReceiveAddCommandRequest = @"com.sdl.request.AddCommand";
+SDLNotificationName const SDLDidReceiveAddSubMenuRequest = @"com.sdl.request.AddSubMenu";
+SDLNotificationName const SDLDidReceiveAlertRequest = @"com.sdl.request.Alert";
+SDLNotificationName const SDLDidReceiveAlertManeuverRequest = @"com.sdl.request.AlertManeuver";
+SDLNotificationName const SDLDidReceiveButtonPressRequest = @"com.sdl.request.ButtonPress";
+SDLNotificationName const SDLDidReceiveCancelInteractionRequest = @"com.sdl.request.CancelInteraction";
+SDLNotificationName const SDLDidReceiveChangeRegistrationRequest = @"com.sdl.request.ChangeRegistration";
+SDLNotificationName const SDLDidReceiveCloseApplicationRequest = @"com.sdl.request.CloseApplication";
+SDLNotificationName const SDLDidReceiveCreateWindowRequest = @"com.sdl.request.CreateWindow";
+SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetRequest = @"com.sdl.request.CreateInteractionChoiceSet";
+SDLNotificationName const SDLDidReceiveDeleteCommandRequest = @"com.sdl.request.DeleteCommand";
+SDLNotificationName const SDLDidReceiveDeleteFileRequest = @"com.sdl.request.DeleteFile";
+SDLNotificationName const SDLDidReceiveDeleteInteractionChoiceSetRequest = @"com.sdl.request.DeleteInteractionChoiceSet";
+SDLNotificationName const SDLDidReceiveDeleteSubMenuRequest = @"com.sdl.request.DeleteSubMenu";
+SDLNotificationName const SDLDidReceiveDeleteWindowRequest = @"com.sdl.request.DeleteWindow";
+SDLNotificationName const SDLDidReceiveDiagnosticMessageRequest = @"com.sdl.request.DiagnosticMessage";
+SDLNotificationName const SDLDidReceiveDialNumberRequest = @"com.sdl.request.DialNumber";
+SDLNotificationName const SDLDidReceiveEncodedSyncPDataRequest = @"com.sdl.request.EncodedSyncPData";
+SDLNotificationName const SDLDidReceiveEndAudioPassThruRequest = @"com.sdl.request.EndAudioPassThru";
+SDLNotificationName const SDLDidReceiveGetAppServiceDataRequest = @"com.sdl.request.GetAppServiceData";
+SDLNotificationName const SDLDidReceiveGetCloudAppPropertiesRequest = @"com.sdl.request.GetCloudAppProperties";
+SDLNotificationName const SDLDidReceiveGetDTCsRequest = @"com.sdl.request.GetDTCs";
+SDLNotificationName const SDLDidReceiveGetFileRequest = @"com.sdl.request.GetFile";
+SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataRequest = @"com.sdl.request.GetInteriorVehicleData";
+SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataConsentRequest = @"com.sdl.request.GetInteriorVehicleDataConsent";
+SDLNotificationName const SDLDidReceiveGetSystemCapabilityRequest = @"com.sdl.request.GetSystemCapability";
+SDLNotificationName const SDLDidReceiveGetVehicleDataRequest = @"com.sdl.request.GetVehicleData";
+SDLNotificationName const SDLDidReceiveGetWayPointsRequest = @"com.sdl.request.GetWayPoints";
+SDLNotificationName const SDLDidReceiveListFilesRequest = @"com.sdl.request.ListFiles";
+SDLNotificationName const SDLDidReceivePerformAppServiceInteractionRequest = @"com.sdl.request.PerformAppServiceInteraction";
+SDLNotificationName const SDLDidReceivePerformAudioPassThruRequest = @"com.sdl.request.PerformAudioPassThru";
+SDLNotificationName const SDLDidReceivePerformInteractionRequest = @"com.sdl.request.PerformInteraction";
+SDLNotificationName const SDLDidReceivePublishAppServiceRequest = @"com.sdl.request.PublishAppService";
+SDLNotificationName const SDLDidReceivePutFileRequest = @"com.sdl.request.PutFile";
+SDLNotificationName const SDLDidReceiveReadDIDRequest = @"com.sdl.request.ReadDID";
+SDLNotificationName const SDLDidReceiveRegisterAppInterfaceRequest = @"com.sdl.request.RegisterAppInterface";
+SDLNotificationName const SDLDidReceiveReleaseInteriorVehicleDataModuleRequest = @"com.sdl.request.ReleaseInteriorVehicleDataModule";
+SDLNotificationName const SDLDidReceiveResetGlobalPropertiesRequest = @"com.sdl.request.ResetGlobalProperties";
+SDLNotificationName const SDLDidReceiveScrollableMessageRequest = @"com.sdl.request.ScrollableMessage";
+SDLNotificationName const SDLDidReceiveSendHapticDataRequest = @"com.sdl.request.SendHapticData";
+SDLNotificationName const SDLDidReceiveSendLocationRequest = @"com.sdl.request.SendLocation";
+SDLNotificationName const SDLDidReceiveSetAppIconRequest = @"com.sdl.request.SetAppIcon";
+SDLNotificationName const SDLDidReceiveSetCloudAppPropertiesRequest = @"com.sdl.request.SetCloudAppProperties";
+SDLNotificationName const SDLDidReceiveSetDisplayLayoutRequest = @"com.sdl.request.SetDisplayLayout";
+SDLNotificationName const SDLDidReceiveSetGlobalPropertiesRequest = @"com.sdl.request.SetGlobalProperties";
+SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataRequest = @"com.sdl.request.SetInteriorVehicleData";
+SDLNotificationName const SDLDidReceiveSetMediaClockTimerRequest = @"com.sdl.request.SetMediaClockTimer";
+SDLNotificationName const SDLDidReceiveShowRequest = @"com.sdl.request.Show";
+SDLNotificationName const SDLDidReceiveShowAppMenuRequest = @"com.sdl.request.ShowAppMenu";
+SDLNotificationName const SDLDidReceiveShowConstantTBTRequest = @"com.sdl.request.ShowConstantTBT";
+SDLNotificationName const SDLDidReceiveSliderRequest = @"com.sdl.request.Slider";
+SDLNotificationName const SDLDidReceiveSpeakRequest = @"com.sdl.request.Speak";
+SDLNotificationName const SDLDidReceiveSubscribeButtonRequest = @"com.sdl.request.SubscribeButton";
+SDLNotificationName const SDLDidReceiveSubscribeVehicleDataRequest = @"com.sdl.request.SubscribeVehicleData";
+SDLNotificationName const SDLDidReceiveSubscribeWayPointsRequest = @"com.sdl.request.SubscribeWayPoints";
+SDLNotificationName const SDLDidReceiveSubtleAlertRequest = @"com.sdl.request.SubtleAlert";
+SDLNotificationName const SDLDidReceiveSyncPDataRequest = @"com.sdl.request.SyncPData";
+SDLNotificationName const SDLDidReceiveSystemRequestRequest = @"com.sdl.request.SystemRequest";
+SDLNotificationName const SDLDidReceiveUnpublishAppServiceRequest = @"com.sdl.request.UnpublishAppService";
+SDLNotificationName const SDLDidReceiveUnregisterAppInterfaceRequest = @"com.sdl.request.UnregisterAppInterface";
+SDLNotificationName const SDLDidReceiveUnsubscribeButtonRequest = @"com.sdl.request.UnsubscribeButton";
+SDLNotificationName const SDLDidReceiveUnsubscribeVehicleDataRequest = @"com.sdl.request.UnsubscribeVehicleData";
+SDLNotificationName const SDLDidReceiveUnsubscribeWayPointsRequest = @"com.sdl.request.UnsubscribeWayPoints";
+SDLNotificationName const SDLDidReceiveUpdateTurnListRequest = @"com.sdl.request.UpdateTurnList";
+
+#pragma mark - RPC Notifications
+SDLNotificationName const SDLDidChangeDriverDistractionStateNotification = @"com.sdl.notification.OnDriverDistraction";
+SDLNotificationName const SDLDidChangeHMIStatusNotification = @"com.sdl.notification.OnHMIStatus";
+SDLNotificationName const SDLDidReceiveAppServiceDataNotification = @"com.sdl.notification.OnAppServiceData";
+SDLNotificationName const SDLDidReceiveAppUnregisteredNotification = @"com.sdl.notification.OnAppInterfaceUnregistered";
+SDLNotificationName const SDLDidReceiveAudioPassThruNotification = @"com.sdl.notification.OnAudioPassThru";
+SDLNotificationName const SDLDidReceiveButtonEventNotification = @"com.sdl.notification.OnButtonEvent";
+SDLNotificationName const SDLDidReceiveButtonPressNotification = @"com.sdl.notification.OnButtonPress";
+SDLNotificationName const SDLDidReceiveCommandNotification = @"com.sdl.notification.OnCommand";
+SDLNotificationName const SDLDidReceiveEncodedDataNotification = @"com.sdl.notification.OnEncodedSyncPData";
+SDLNotificationName const SDLDidReceiveInteriorVehicleDataNotification = @"com.sdl.notification.OnInteriorVehicleData";
+SDLNotificationName const SDLDidReceiveKeyboardInputNotification = @"com.sdl.notification.OnKeyboardInput";
+SDLNotificationName const SDLDidChangeLanguageNotification = @"com.sdl.notification.OnLanguageChange";
+SDLNotificationName const SDLDidReceiveNewHashNotification = @"com.sdl.notification.OnHashChange";
+SDLNotificationName const SDLDidChangePermissionsNotification = @"com.sdl.notification.OnPermissionsChange";
+SDLNotificationName const SDLDidReceiveRemoteControlStatusNotification = @"com.sdl.notification.OnRCStatus";
+SDLNotificationName const SDLDidReceiveSubtleAlertPressedNotification = @"com.sdl.notification.OnSubtleAlertPressed";
+SDLNotificationName const SDLDidReceiveSyncPDataNotification = @"com.sdl.notification.OnSyncPData";
+SDLNotificationName const SDLDidReceiveSystemCapabilityUpdatedNotification = @"com.sdl.notification.OnSystemCapabilityUpdated";
+SDLNotificationName const SDLDidReceiveSystemRequestNotification = @"com.sdl.notification.OnSystemRequest";
+SDLNotificationName const SDLDidChangeTurnByTurnStateNotification = @"com.sdl.notification.OnTBTClientState";
+SDLNotificationName const SDLDidReceiveTouchEventNotification = @"com.sdl.notification.OnTouchEvent";
+SDLNotificationName const SDLDidReceiveUpdateFileNotification = @"com.sdl.notification.OnUpdateFile";
+SDLNotificationName const SDLDidReceiveUpdateSubMenuNotification = @"com.sdl.notification.OnUpdateSubMenu";
+SDLNotificationName const SDLDidReceiveVehicleDataNotification = @"com.sdl.notification.OnVehicleData";
+SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notification.OnWayPointChange";
+
+
+@implementation SDLNotificationConstants
+
++ (NSArray<SDLNotificationName> *)allResponseNames {
+ return @[SDLDidReceiveAddCommandResponse,
+ SDLDidReceiveAddSubMenuResponse,
+ SDLDidReceiveAlertResponse,
+ SDLDidReceiveAlertManeuverResponse,
+ SDLDidReceiveButtonPressResponse,
+ SDLDidReceiveCancelInteractionResponse,
+ SDLDidReceiveChangeRegistrationResponse,
+ SDLDidReceiveCloseApplicationResponse,
+ SDLDidReceiveCreateInteractionChoiceSetResponse,
+ SDLDidReceiveCreateWindowResponse,
+ SDLDidReceiveDeleteCommandResponse,
+ SDLDidReceiveDeleteFileResponse,
+ SDLDidReceiveDeleteInteractionChoiceSetResponse,
+ SDLDidReceiveDeleteSubmenuResponse,
+ SDLDidReceiveDeleteWindowResponse,
+ SDLDidReceiveDiagnosticMessageResponse,
+ SDLDidReceiveDialNumberResponse,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLDidReceiveEncodedSyncPDataResponse,
+#pragma clang diagnostic pop
+ SDLDidReceiveEndAudioPassThruResponse,
+ SDLDidReceiveGenericResponse,
+ SDLDidReceiveGetCloudAppPropertiesResponse,
+ SDLDidReceiveGetAppServiceDataResponse,
+ SDLDidReceiveGetDTCsResponse,
+ SDLDidReceiveGetFileResponse,
+ SDLDidReceiveGetInteriorVehicleDataResponse,
+ SDLDidReceiveGetInteriorVehicleDataConsentResponse,
+ SDLDidReceiveGetSystemCapabilitiesResponse,
+ SDLDidReceiveGetVehicleDataResponse,
+ SDLDidReceiveGetWaypointsResponse,
+ SDLDidReceiveListFilesResponse,
+ SDLDidReceivePerformAppServiceInteractionResponse,
+ SDLDidReceivePerformAudioPassThruResponse,
+ SDLDidReceivePerformInteractionResponse,
+ SDLDidReceivePublishAppServiceResponse,
+ SDLDidReceivePutFileResponse,
+ SDLDidReceiveReadDIDResponse,
+ SDLDidReceiveRegisterAppInterfaceResponse,
+ SDLDidReceiveReleaseInteriorVehicleDataModuleResponse,
+ SDLDidReceiveResetGlobalPropertiesResponse,
+ SDLDidReceiveScrollableMessageResponse,
+ SDLDidReceiveSendHapticDataResponse,
+ SDLDidReceiveSendLocationResponse,
+ SDLDidReceiveSetAppIconResponse,
+ SDLDidReceiveSetCloudAppPropertiesResponse,
+ SDLDidReceiveSetDisplayLayoutResponse,
+ SDLDidReceiveSetGlobalPropertiesResponse,
+ SDLDidReceiveSetInteriorVehicleDataResponse,
+ SDLDidReceiveSetMediaClockTimerResponse,
+ SDLDidReceiveShowConstantTBTResponse,
+ SDLDidReceiveShowResponse,
+ SDLDidReceiveShowAppMenuResponse,
+ SDLDidReceiveSliderResponse,
+ SDLDidReceiveSpeakResponse,
+ SDLDidReceiveSubscribeButtonResponse,
+ SDLDidReceiveSubscribeVehicleDataResponse,
+ SDLDidReceiveSubscribeWaypointsResponse,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLDidReceiveSyncPDataResponse,
+#pragma clang diagnostic pop
+ SDLDidReceiveSubtleAlertResponse,
+ SDLDidReceiveSystemRequestResponse,
+ SDLDidReceiveUpdateTurnListResponse,
+ SDLDidReceiveUnpublishAppServiceResponse,
+ SDLDidReceiveUnregisterAppInterfaceResponse,
+ SDLDidReceiveUnsubscribeButtonResponse,
+ SDLDidReceiveUnsubscribeVehicleDataResponse,
+ SDLDidReceiveUnsubscribeWaypointsResponse];
+}
+
++ (NSArray<SDLNotificationName> *)allButtonEventNotifications {
+ return @[SDLDidReceiveButtonEventNotification,
+ SDLDidReceiveButtonPressNotification];
+}
+
+@end
diff --git a/SmartDeviceLink/SDLOasisAddress.h b/SmartDeviceLink/public/SDLOasisAddress.h
index ab65d1f0e..ab65d1f0e 100644
--- a/SmartDeviceLink/SDLOasisAddress.h
+++ b/SmartDeviceLink/public/SDLOasisAddress.h
diff --git a/SmartDeviceLink/SDLOasisAddress.m b/SmartDeviceLink/public/SDLOasisAddress.m
index 798804bd6..798804bd6 100644
--- a/SmartDeviceLink/SDLOasisAddress.m
+++ b/SmartDeviceLink/public/SDLOasisAddress.m
diff --git a/SmartDeviceLink/SDLOnAppInterfaceUnregistered.h b/SmartDeviceLink/public/SDLOnAppInterfaceUnregistered.h
index c24381c7c..c24381c7c 100644
--- a/SmartDeviceLink/SDLOnAppInterfaceUnregistered.h
+++ b/SmartDeviceLink/public/SDLOnAppInterfaceUnregistered.h
diff --git a/SmartDeviceLink/SDLOnAppInterfaceUnregistered.m b/SmartDeviceLink/public/SDLOnAppInterfaceUnregistered.m
index c99ab7571..c99ab7571 100644
--- a/SmartDeviceLink/SDLOnAppInterfaceUnregistered.m
+++ b/SmartDeviceLink/public/SDLOnAppInterfaceUnregistered.m
diff --git a/SmartDeviceLink/SDLOnAppServiceData.h b/SmartDeviceLink/public/SDLOnAppServiceData.h
index f3a4ff16c..f3a4ff16c 100644
--- a/SmartDeviceLink/SDLOnAppServiceData.h
+++ b/SmartDeviceLink/public/SDLOnAppServiceData.h
diff --git a/SmartDeviceLink/SDLOnAppServiceData.m b/SmartDeviceLink/public/SDLOnAppServiceData.m
index 792721bb2..792721bb2 100644
--- a/SmartDeviceLink/SDLOnAppServiceData.m
+++ b/SmartDeviceLink/public/SDLOnAppServiceData.m
diff --git a/SmartDeviceLink/SDLOnAudioPassThru.h b/SmartDeviceLink/public/SDLOnAudioPassThru.h
index 13b244833..13b244833 100644
--- a/SmartDeviceLink/SDLOnAudioPassThru.h
+++ b/SmartDeviceLink/public/SDLOnAudioPassThru.h
diff --git a/SmartDeviceLink/SDLOnAudioPassThru.m b/SmartDeviceLink/public/SDLOnAudioPassThru.m
index c404fbaa8..c404fbaa8 100644
--- a/SmartDeviceLink/SDLOnAudioPassThru.m
+++ b/SmartDeviceLink/public/SDLOnAudioPassThru.m
diff --git a/SmartDeviceLink/SDLOnButtonEvent.h b/SmartDeviceLink/public/SDLOnButtonEvent.h
index 25f18d7a9..25f18d7a9 100644
--- a/SmartDeviceLink/SDLOnButtonEvent.h
+++ b/SmartDeviceLink/public/SDLOnButtonEvent.h
diff --git a/SmartDeviceLink/SDLOnButtonEvent.m b/SmartDeviceLink/public/SDLOnButtonEvent.m
index 3e9c57cd6..3e9c57cd6 100644
--- a/SmartDeviceLink/SDLOnButtonEvent.m
+++ b/SmartDeviceLink/public/SDLOnButtonEvent.m
diff --git a/SmartDeviceLink/SDLOnButtonPress.h b/SmartDeviceLink/public/SDLOnButtonPress.h
index 1a2668e65..1a2668e65 100644
--- a/SmartDeviceLink/SDLOnButtonPress.h
+++ b/SmartDeviceLink/public/SDLOnButtonPress.h
diff --git a/SmartDeviceLink/SDLOnButtonPress.m b/SmartDeviceLink/public/SDLOnButtonPress.m
index 2acced3d0..2acced3d0 100644
--- a/SmartDeviceLink/SDLOnButtonPress.m
+++ b/SmartDeviceLink/public/SDLOnButtonPress.m
diff --git a/SmartDeviceLink/SDLOnCommand.h b/SmartDeviceLink/public/SDLOnCommand.h
index 7fff8045b..7fff8045b 100644
--- a/SmartDeviceLink/SDLOnCommand.h
+++ b/SmartDeviceLink/public/SDLOnCommand.h
diff --git a/SmartDeviceLink/SDLOnCommand.m b/SmartDeviceLink/public/SDLOnCommand.m
index 40a975057..40a975057 100644
--- a/SmartDeviceLink/SDLOnCommand.m
+++ b/SmartDeviceLink/public/SDLOnCommand.m
diff --git a/SmartDeviceLink/SDLOnDriverDistraction.h b/SmartDeviceLink/public/SDLOnDriverDistraction.h
index f7df06bd8..f7df06bd8 100644
--- a/SmartDeviceLink/SDLOnDriverDistraction.h
+++ b/SmartDeviceLink/public/SDLOnDriverDistraction.h
diff --git a/SmartDeviceLink/SDLOnDriverDistraction.m b/SmartDeviceLink/public/SDLOnDriverDistraction.m
index 40fb3afa2..40fb3afa2 100644
--- a/SmartDeviceLink/SDLOnDriverDistraction.m
+++ b/SmartDeviceLink/public/SDLOnDriverDistraction.m
diff --git a/SmartDeviceLink/SDLOnEncodedSyncPData.h b/SmartDeviceLink/public/SDLOnEncodedSyncPData.h
index b42880ec8..b42880ec8 100644
--- a/SmartDeviceLink/SDLOnEncodedSyncPData.h
+++ b/SmartDeviceLink/public/SDLOnEncodedSyncPData.h
diff --git a/SmartDeviceLink/SDLOnEncodedSyncPData.m b/SmartDeviceLink/public/SDLOnEncodedSyncPData.m
index 830bb5d3f..830bb5d3f 100644
--- a/SmartDeviceLink/SDLOnEncodedSyncPData.m
+++ b/SmartDeviceLink/public/SDLOnEncodedSyncPData.m
diff --git a/SmartDeviceLink/SDLOnHMIStatus.h b/SmartDeviceLink/public/SDLOnHMIStatus.h
index 22a43500a..22a43500a 100644
--- a/SmartDeviceLink/SDLOnHMIStatus.h
+++ b/SmartDeviceLink/public/SDLOnHMIStatus.h
diff --git a/SmartDeviceLink/SDLOnHMIStatus.m b/SmartDeviceLink/public/SDLOnHMIStatus.m
index 09534e9fa..09534e9fa 100644
--- a/SmartDeviceLink/SDLOnHMIStatus.m
+++ b/SmartDeviceLink/public/SDLOnHMIStatus.m
diff --git a/SmartDeviceLink/SDLOnHashChange.h b/SmartDeviceLink/public/SDLOnHashChange.h
index f2b9cbb45..f2b9cbb45 100644
--- a/SmartDeviceLink/SDLOnHashChange.h
+++ b/SmartDeviceLink/public/SDLOnHashChange.h
diff --git a/SmartDeviceLink/SDLOnHashChange.m b/SmartDeviceLink/public/SDLOnHashChange.m
index f7114a411..f7114a411 100644
--- a/SmartDeviceLink/SDLOnHashChange.m
+++ b/SmartDeviceLink/public/SDLOnHashChange.m
diff --git a/SmartDeviceLink/SDLOnInteriorVehicleData.h b/SmartDeviceLink/public/SDLOnInteriorVehicleData.h
index e54ad91bf..e54ad91bf 100644
--- a/SmartDeviceLink/SDLOnInteriorVehicleData.h
+++ b/SmartDeviceLink/public/SDLOnInteriorVehicleData.h
diff --git a/SmartDeviceLink/SDLOnInteriorVehicleData.m b/SmartDeviceLink/public/SDLOnInteriorVehicleData.m
index 58eff5575..58eff5575 100644
--- a/SmartDeviceLink/SDLOnInteriorVehicleData.m
+++ b/SmartDeviceLink/public/SDLOnInteriorVehicleData.m
diff --git a/SmartDeviceLink/SDLOnKeyboardInput.h b/SmartDeviceLink/public/SDLOnKeyboardInput.h
index 2090fb8a6..2090fb8a6 100644
--- a/SmartDeviceLink/SDLOnKeyboardInput.h
+++ b/SmartDeviceLink/public/SDLOnKeyboardInput.h
diff --git a/SmartDeviceLink/SDLOnKeyboardInput.m b/SmartDeviceLink/public/SDLOnKeyboardInput.m
index 57850321a..57850321a 100644
--- a/SmartDeviceLink/SDLOnKeyboardInput.m
+++ b/SmartDeviceLink/public/SDLOnKeyboardInput.m
diff --git a/SmartDeviceLink/SDLOnLanguageChange.h b/SmartDeviceLink/public/SDLOnLanguageChange.h
index 103532add..103532add 100644
--- a/SmartDeviceLink/SDLOnLanguageChange.h
+++ b/SmartDeviceLink/public/SDLOnLanguageChange.h
diff --git a/SmartDeviceLink/SDLOnLanguageChange.m b/SmartDeviceLink/public/SDLOnLanguageChange.m
index cee3f7965..cee3f7965 100644
--- a/SmartDeviceLink/SDLOnLanguageChange.m
+++ b/SmartDeviceLink/public/SDLOnLanguageChange.m
diff --git a/SmartDeviceLink/SDLOnPermissionsChange.h b/SmartDeviceLink/public/SDLOnPermissionsChange.h
index 244bbc08f..244bbc08f 100644
--- a/SmartDeviceLink/SDLOnPermissionsChange.h
+++ b/SmartDeviceLink/public/SDLOnPermissionsChange.h
diff --git a/SmartDeviceLink/SDLOnPermissionsChange.m b/SmartDeviceLink/public/SDLOnPermissionsChange.m
index a067e084c..a067e084c 100644
--- a/SmartDeviceLink/SDLOnPermissionsChange.m
+++ b/SmartDeviceLink/public/SDLOnPermissionsChange.m
diff --git a/SmartDeviceLink/SDLOnRCStatus.h b/SmartDeviceLink/public/SDLOnRCStatus.h
index 9c3d73c7e..9c3d73c7e 100644
--- a/SmartDeviceLink/SDLOnRCStatus.h
+++ b/SmartDeviceLink/public/SDLOnRCStatus.h
diff --git a/SmartDeviceLink/SDLOnRCStatus.m b/SmartDeviceLink/public/SDLOnRCStatus.m
index aa1295f3f..aa1295f3f 100644
--- a/SmartDeviceLink/SDLOnRCStatus.m
+++ b/SmartDeviceLink/public/SDLOnRCStatus.m
diff --git a/SmartDeviceLink/public/SDLOnSubtleAlertPressed.h b/SmartDeviceLink/public/SDLOnSubtleAlertPressed.h
new file mode 100644
index 000000000..8a924d19b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnSubtleAlertPressed.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCNotification.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Sent when the alert itself is touched (outside of a soft button). Touching (or otherwise selecting) the alert should open the app before sending this notification.
+ *
+ * @since SDL 7.0.0
+ */
+@interface SDLOnSubtleAlertPressed : SDLRPCNotification
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnSubtleAlertPressed.m b/SmartDeviceLink/public/SDLOnSubtleAlertPressed.m
new file mode 100644
index 000000000..b89d7a38c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnSubtleAlertPressed.m
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLOnSubtleAlertPressed.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLOnSubtleAlertPressed
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameOnSubtleAlertPressed];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnSyncPData.h b/SmartDeviceLink/public/SDLOnSyncPData.h
index 4352228f6..4352228f6 100644
--- a/SmartDeviceLink/SDLOnSyncPData.h
+++ b/SmartDeviceLink/public/SDLOnSyncPData.h
diff --git a/SmartDeviceLink/SDLOnSyncPData.m b/SmartDeviceLink/public/SDLOnSyncPData.m
index af4f39b0a..af4f39b0a 100644
--- a/SmartDeviceLink/SDLOnSyncPData.m
+++ b/SmartDeviceLink/public/SDLOnSyncPData.m
diff --git a/SmartDeviceLink/SDLOnSystemCapabilityUpdated.h b/SmartDeviceLink/public/SDLOnSystemCapabilityUpdated.h
index 35a720901..35a720901 100644
--- a/SmartDeviceLink/SDLOnSystemCapabilityUpdated.h
+++ b/SmartDeviceLink/public/SDLOnSystemCapabilityUpdated.h
diff --git a/SmartDeviceLink/SDLOnSystemCapabilityUpdated.m b/SmartDeviceLink/public/SDLOnSystemCapabilityUpdated.m
index 4c3de1e3a..4c3de1e3a 100644
--- a/SmartDeviceLink/SDLOnSystemCapabilityUpdated.m
+++ b/SmartDeviceLink/public/SDLOnSystemCapabilityUpdated.m
diff --git a/SmartDeviceLink/SDLOnSystemRequest.h b/SmartDeviceLink/public/SDLOnSystemRequest.h
index c4a540f95..c4a540f95 100644
--- a/SmartDeviceLink/SDLOnSystemRequest.h
+++ b/SmartDeviceLink/public/SDLOnSystemRequest.h
diff --git a/SmartDeviceLink/SDLOnSystemRequest.m b/SmartDeviceLink/public/SDLOnSystemRequest.m
index 174726c0d..174726c0d 100644
--- a/SmartDeviceLink/SDLOnSystemRequest.m
+++ b/SmartDeviceLink/public/SDLOnSystemRequest.m
diff --git a/SmartDeviceLink/SDLOnTBTClientState.h b/SmartDeviceLink/public/SDLOnTBTClientState.h
index 9d5d2d1a8..9d5d2d1a8 100644
--- a/SmartDeviceLink/SDLOnTBTClientState.h
+++ b/SmartDeviceLink/public/SDLOnTBTClientState.h
diff --git a/SmartDeviceLink/SDLOnTBTClientState.m b/SmartDeviceLink/public/SDLOnTBTClientState.m
index 4a6695e06..4a6695e06 100644
--- a/SmartDeviceLink/SDLOnTBTClientState.m
+++ b/SmartDeviceLink/public/SDLOnTBTClientState.m
diff --git a/SmartDeviceLink/SDLOnTouchEvent.h b/SmartDeviceLink/public/SDLOnTouchEvent.h
index 2e0f29953..2e0f29953 100644
--- a/SmartDeviceLink/SDLOnTouchEvent.h
+++ b/SmartDeviceLink/public/SDLOnTouchEvent.h
diff --git a/SmartDeviceLink/SDLOnTouchEvent.m b/SmartDeviceLink/public/SDLOnTouchEvent.m
index 1995f7d86..1995f7d86 100644
--- a/SmartDeviceLink/SDLOnTouchEvent.m
+++ b/SmartDeviceLink/public/SDLOnTouchEvent.m
diff --git a/SmartDeviceLink/public/SDLOnUpdateFile.h b/SmartDeviceLink/public/SDLOnUpdateFile.h
new file mode 100644
index 000000000..95929bd7b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnUpdateFile.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCNotification.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * This notification tells an app to upload and update a file with a given name.
+ *
+ * @since SDL 7.0.0
+ */
+@interface SDLOnUpdateFile : SDLRPCNotification
+
+/**
+ * @param fileName - fileName
+ * @return A SDLOnUpdateFile object
+ */
+- (instancetype)initWithFileName:(NSString *)fileName;
+
+/**
+ * File reference name.
+ * {"default_value": null, "max_length": 255, "min_length": 1}
+ */
+@property (strong, nonatomic) NSString *fileName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnUpdateFile.m b/SmartDeviceLink/public/SDLOnUpdateFile.m
new file mode 100644
index 000000000..4ed8843a6
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnUpdateFile.m
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLOnUpdateFile.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLOnUpdateFile
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameOnUpdateFile];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithFileName:(NSString *)fileName {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.fileName = fileName;
+ return self;
+}
+
+- (void)setFileName:(NSString *)fileName {
+ [self.parameters sdl_setObject:fileName forName:SDLRPCParameterNameFileName];
+}
+
+- (NSString *)fileName {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFileName ofClass:NSString.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnUpdateSubMenu.h b/SmartDeviceLink/public/SDLOnUpdateSubMenu.h
new file mode 100644
index 000000000..285110cf0
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnUpdateSubMenu.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCNotification.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * This notification tells an app to update the AddSubMenu or its 'sub' AddCommand and AddSubMenus with the requested data
+ *
+ * @since SDL 7.0
+ */
+@interface SDLOnUpdateSubMenu : SDLRPCNotification
+
+/**
+ * @param menuID - @(menuID)
+ * @return A SDLOnUpdateSubMenu object
+ */
+- (instancetype)initWithMenuID:(UInt32)menuID;
+
+/**
+ * @param menuID - @(menuID)
+ * @param updateSubCells - updateSubCells
+ * @return A SDLOnUpdateSubMenu object
+ */
+- (instancetype)initWithMenuID:(UInt32)menuID updateSubCells:(nullable NSNumber<SDLBool> *)updateSubCells;
+
+/**
+ * This menuID must match a menuID in the current menu structure
+ * {"num_min_value": 0, "num_max_value": 2000000000}
+ */
+@property (strong, nonatomic) NSNumber<SDLUInt> *menuID;
+
+/**
+ * If not set, assume false. If true, the app should send AddCommands with parentIDs matching the menuID. These AddCommands will then be attached to the submenu and displayed if the submenu is selected.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *updateSubCells;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnUpdateSubMenu.m b/SmartDeviceLink/public/SDLOnUpdateSubMenu.m
new file mode 100644
index 000000000..55e53773f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnUpdateSubMenu.m
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLOnUpdateSubMenu.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLOnUpdateSubMenu
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameOnUpdateSubMenu];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithMenuID:(UInt32)menuID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.menuID = @(menuID);
+ return self;
+}
+
+- (instancetype)initWithMenuID:(UInt32)menuID updateSubCells:(nullable NSNumber<SDLBool> *)updateSubCells {
+ self = [self initWithMenuID:menuID];
+ if (!self) {
+ return nil;
+ }
+ self.updateSubCells = updateSubCells;
+ return self;
+}
+
+- (void)setMenuID:(NSNumber<SDLUInt> *)menuID {
+ [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuID];
+}
+
+- (NSNumber<SDLUInt> *)menuID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuID ofClass:NSNumber.class error:&error];
+}
+
+- (void)setUpdateSubCells:(nullable NSNumber<SDLBool> *)updateSubCells {
+ [self.parameters sdl_setObject:updateSubCells forName:SDLRPCParameterNameUpdateSubCells];
+}
+
+- (nullable NSNumber<SDLBool> *)updateSubCells {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameUpdateSubCells ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnVehicleData.h b/SmartDeviceLink/public/SDLOnVehicleData.h
new file mode 100644
index 000000000..66108cf47
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnVehicleData.h
@@ -0,0 +1,280 @@
+// SDLOnVehicleData.h
+//
+
+#import "SDLRPCNotification.h"
+
+#import "SDLComponentVolumeStatus.h"
+#import "SDLElectronicParkBrakeStatus.h"
+#import "SDLPRNDL.h"
+#import "SDLTurnSignal.h"
+#import "SDLVehicleDataEventStatus.h"
+#import "SDLWiperStatus.h"
+
+@class SDLAirbagStatus;
+@class SDLBeltStatus;
+@class SDLBodyInformation;
+@class SDLClusterModeStatus;
+@class SDLDeviceStatus;
+@class SDLECallInfo;
+@class SDLEmergencyEvent;
+@class SDLFuelRange;
+@class SDLGearStatus;
+@class SDLGPSData;
+@class SDLHeadLampStatus;
+@class SDLMyKey;
+@class SDLStabilityControlsStatus;
+@class SDLTireStatus;
+@class SDLWindowStatus;
+
+
+/**
+ Callback for the periodic and non periodic vehicle data read function.
+
+ Since SmartDeviceLink 2.0
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLOnVehicleData : SDLRPCNotification
+
+/**
+ * Convenience init for setting all possible values on vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - @(speed)
+ * @param rpm - rpm
+ * @param instantFuelConsumption - @(instantFuelConsumption)
+ * @param fuelRange - fuelRange
+ * @param externalTemperature - @(externalTemperature)
+ * @param turnSignal - turnSignal
+ * @param vin - vin
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - @(engineTorque)
+ * @param accPedalPosition - @(accPedalPosition)
+ * @param steeringWheelAngle - @(steeringWheelAngle)
+ * @param engineOilLife - @(engineOilLife)
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @return A SDLOnVehicleData object
+ */
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus;
+
+/**
+ * See GearStatus
+ *
+ * @since SDL 7.0
+*/
+@property (nullable, strong, nonatomic) SDLGearStatus *gearStatus;
+
+/**
+ The car current GPS coordinates
+ */
+@property (nullable, strong, nonatomic) SDLGPSData *gps;
+
+/**
+ The vehicle speed in kilometers per hour
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *speed;
+
+/**
+ The number of revolutions per minute of the engine.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *rpm;
+
+/**
+ The fuel level in the tank (percentage)
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLFloat> *fuelLevel __deprecated_msg("use fuelRange.level instead on 7.0+ RPC version connections");
+
+/**
+ The fuel level state
+ */
+@property (strong, nonatomic, nullable) SDLComponentVolumeStatus fuelLevel_State __deprecated_msg("use fuelRange.levelState instead on 7.0+ RPC version connections");
+
+/**
+ The estimate range in KM the vehicle can travel based on fuel level and consumption
+
+ Optional, Array of length 0 - 100, of SDLFuelRange
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLFuelRange *> *fuelRange;
+
+/**
+ The instantaneous fuel consumption in microlitres
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *instantFuelConsumption;
+
+/**
+ The external temperature in degrees celsius.
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature;
+
+/**
+ The Vehicle Identification Number
+ */
+@property (nullable, strong, nonatomic) NSString *vin;
+
+/**
+ * See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
+ *
+ * @deprecated
+ * @since SDL 7.0.0
+ */
+@property (strong, nonatomic, nullable) SDLPRNDL prndl __deprecated_msg("use gearStatus.actualGear instead on 7.0+ RPC version connections");
+
+/**
+ The current pressure warnings for the user's vehicle
+ */
+@property (nullable, strong, nonatomic) SDLTireStatus *tirePressure;
+
+/**
+ Odometer reading in km
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *odometer;
+
+/**
+ The status of the seat belts
+ */
+@property (nullable, strong, nonatomic) SDLBeltStatus *beltStatus;
+
+/**
+ The body information including power modes
+ */
+@property (nullable, strong, nonatomic) SDLBodyInformation *bodyInformation;
+
+/**
+ The IVI system status including signal and battery strength
+ */
+@property (nullable, strong, nonatomic) SDLDeviceStatus *deviceStatus;
+
+/**
+ The status of the brake pedal
+ */
+@property (nullable, strong, nonatomic) SDLVehicleDataEventStatus driverBraking;
+
+/**
+ * See WindowStatus
+ * {"array_min_size": 0, "array_max_size": 100}
+ *
+ * @since SDL 7.0
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLWindowStatus *> *windowStatus;
+
+/**
+ The status of the wipers
+ */
+@property (nullable, strong, nonatomic) SDLWiperStatus wiperStatus;
+
+/**
+ To indicate whether driver hands are off the steering wheel
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *handsOffSteering;
+
+/**
+ Status of the head lamps
+ */
+@property (nullable, strong, nonatomic) SDLHeadLampStatus *headLampStatus;
+
+/**
+ The estimated percentage (0% - 100%) of remaining oil life of the engine
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *engineOilLife;
+
+/**
+ Torque value for engine (in Nm) on non-diesel variants
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *engineTorque;
+
+/**
+ Accelerator pedal position (percentage depressed)
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *accPedalPosition;
+
+/**
+ Current angle of the steering wheel (in deg)
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *steeringWheelAngle;
+
+/**
+ Emergency Call notification and confirmation data
+ */
+@property (nullable, strong, nonatomic) SDLECallInfo *eCallInfo;
+
+/**
+ The status of the air bags
+ */
+@property (nullable, strong, nonatomic) SDLAirbagStatus *airbagStatus;
+
+/**
+ Information related to an emergency event (and if it occurred)
+ */
+@property (nullable, strong, nonatomic) SDLEmergencyEvent *emergencyEvent;
+
+/**
+ The status modes of the cluster
+ */
+@property (nullable, strong, nonatomic) SDLClusterModeStatus *clusterModeStatus;
+
+/**
+ Information related to the MyKey feature
+ */
+@property (nullable, strong, nonatomic) SDLMyKey *myKey;
+
+/**
+ The status of the electronic parking brake
+ */
+@property (nullable, strong, nonatomic) SDLElectronicParkBrakeStatus electronicParkBrakeStatus;
+
+/**
+ See StabilityControlsStatus
+ */
+@property (nullable, strong, nonatomic) SDLStabilityControlsStatus *stabilityControlsStatus;
+
+/**
+ The status of the turn signal
+ */
+@property (nullable, strong, nonatomic) SDLTurnSignal turnSignal;
+
+/**
+ The cloud app vehicle ID
+ */
+@property (nullable, strong, nonatomic) NSString *cloudAppVehicleID;
+
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState An object containing the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
+
+/**
+ Gets the OEM custom vehicle data item for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return An OEM custom vehicle data object for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnVehicleData.m b/SmartDeviceLink/public/SDLOnVehicleData.m
new file mode 100644
index 000000000..9e8ebc13b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLOnVehicleData.m
@@ -0,0 +1,363 @@
+// SDLOnVehicleData.m
+//
+
+#import "SDLOnVehicleData.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLAirbagStatus.h"
+#import "SDLBeltStatus.h"
+#import "SDLBodyInformation.h"
+#import "SDLClusterModeStatus.h"
+#import "SDLDeviceStatus.h"
+#import "SDLECallInfo.h"
+#import "SDLEmergencyEvent.h"
+#import "SDLFuelRange.h"
+#import "SDLGearStatus.h"
+#import "SDLGPSData.h"
+#import "SDLHeadLampStatus.h"
+#import "SDLMyKey.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLStabilityControlsStatus.h"
+#import "SDLTireStatus.h"
+#import "SDLWindowStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLOnVehicleData
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameOnVehicleData];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.gps = gps;
+ self.speed = speed;
+ self.rpm = rpm;
+ self.instantFuelConsumption = instantFuelConsumption;
+ self.fuelRange = fuelRange;
+ self.externalTemperature = externalTemperature;
+ self.turnSignal = turnSignal;
+ self.vin = vin;
+ self.gearStatus = gearStatus;
+ self.tirePressure = tirePressure;
+ self.odometer = odometer;
+ self.beltStatus = beltStatus;
+ self.bodyInformation = bodyInformation;
+ self.deviceStatus = deviceStatus;
+ self.driverBraking = driverBraking;
+ self.wiperStatus = wiperStatus;
+ self.headLampStatus = headLampStatus;
+ self.engineTorque = engineTorque;
+ self.accPedalPosition = accPedalPosition;
+ self.steeringWheelAngle = steeringWheelAngle;
+ self.engineOilLife = engineOilLife;
+ self.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ self.cloudAppVehicleID = cloudAppVehicleID;
+ self.stabilityControlsStatus = stabilityControlsStatus;
+ self.eCallInfo = eCallInfo;
+ self.airbagStatus = airbagStatus;
+ self.emergencyEvent = emergencyEvent;
+ self.clusterModeStatus = clusterModeStatus;
+ self.myKey = myKey;
+ self.handsOffSteering = handsOffSteering;
+ self.windowStatus = windowStatus;
+ return self;
+}
+
+- (void)setGearStatus:(nullable SDLGearStatus *)gearStatus {
+ [self.parameters sdl_setObject:gearStatus forName:SDLRPCParameterNameGearStatus];
+}
+
+- (nullable SDLGearStatus *)gearStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGearStatus ofClass:SDLGearStatus.class error:&error];
+}
+
+- (void)setGps:(nullable SDLGPSData *)gps {
+ [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
+}
+
+- (nullable SDLGPSData *)gps {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil];
+}
+
+- (void)setSpeed:(nullable NSNumber<SDLFloat> *)speed {
+ [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
+}
+
+- (nullable NSNumber<SDLFloat> *)speed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRpm:(nullable NSNumber<SDLInt> *)rpm {
+ [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
+}
+
+- (nullable NSNumber<SDLInt> *)rpm {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel:(nullable NSNumber<SDLFloat> *)fuelLevel {
+ [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
+}
+
+- (nullable NSNumber<SDLFloat> *)fuelLevel {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel_State:(nullable SDLComponentVolumeStatus)fuelLevel_State {
+ [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
+}
+
+- (nullable SDLComponentVolumeStatus)fuelLevel_State {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil];
+}
+
+- (void)setFuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange {
+ [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
+}
+
+- (nullable NSArray<SDLFuelRange *> *)fuelRange {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil];
+}
+
+- (void)setInstantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption {
+ [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
+}
+
+- (nullable NSNumber<SDLFloat> *)instantFuelConsumption {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
+}
+
+- (void)setExternalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature {
+ [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable NSNumber<SDLFloat> *)externalTemperature {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVin:(nullable NSString *)vin {
+ [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN];
+}
+
+- (nullable NSString *)vin {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil];
+}
+
+- (void)setPrndl:(nullable SDLPRNDL)prndl {
+ [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
+}
+
+- (nullable SDLPRNDL)prndl {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil];
+}
+
+- (void)setTirePressure:(nullable SDLTireStatus *)tirePressure {
+ [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
+}
+
+- (nullable SDLTireStatus *)tirePressure {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil];
+}
+
+- (void)setOdometer:(nullable NSNumber<SDLInt> *)odometer {
+ [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
+}
+
+- (nullable NSNumber<SDLInt> *)odometer {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBeltStatus:(nullable SDLBeltStatus *)beltStatus {
+ [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
+}
+
+- (nullable SDLBeltStatus *)beltStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil];
+}
+
+- (void)setBodyInformation:(nullable SDLBodyInformation *)bodyInformation {
+ [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
+}
+
+- (nullable SDLBodyInformation *)bodyInformation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil];
+}
+
+- (void)setDeviceStatus:(nullable SDLDeviceStatus *)deviceStatus {
+ [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
+}
+
+- (nullable SDLDeviceStatus *)deviceStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil];
+}
+
+- (void)setDriverBraking:(nullable SDLVehicleDataEventStatus)driverBraking {
+ [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
+}
+
+- (nullable SDLVehicleDataEventStatus)driverBraking {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil];
+}
+
+- (void)setWiperStatus:(nullable SDLWiperStatus)wiperStatus {
+ [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
+}
+
+- (nullable SDLWiperStatus)wiperStatus {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil];
+}
+
+- (void)setHandsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering {
+ [self.parameters sdl_setObject:handsOffSteering forName:SDLRPCParameterNameHandsOffSteering];
+}
+
+- (nullable NSNumber<SDLBool> *)handsOffSteering {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:NSNumber.class error:&error];
+}
+
+- (void)setHeadLampStatus:(nullable SDLHeadLampStatus *)headLampStatus {
+ [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
+}
+
+- (nullable SDLHeadLampStatus *)headLampStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil];
+}
+
+- (void)setEngineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife {
+ [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
+}
+
+- (nullable NSNumber<SDLFloat> *)engineOilLife {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineTorque:(nullable NSNumber<SDLFloat> *)engineTorque {
+ [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
+}
+
+- (nullable NSNumber<SDLFloat> *)engineTorque {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAccPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition {
+ [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
+}
+
+- (nullable NSNumber<SDLFloat> *)accPedalPosition {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSteeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle {
+ [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
+}
+
+- (nullable NSNumber<SDLFloat> *)steeringWheelAngle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
+}
+
+- (void)setECallInfo:(nullable SDLECallInfo *)eCallInfo {
+ [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
+}
+
+- (nullable SDLECallInfo *)eCallInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil];
+}
+
+- (void)setAirbagStatus:(nullable SDLAirbagStatus *)airbagStatus {
+ [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
+}
+
+- (nullable SDLAirbagStatus *)airbagStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil];
+}
+
+- (void)setEmergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent {
+ [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
+}
+
+- (nullable SDLEmergencyEvent *)emergencyEvent {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil];
+}
+
+- (void)setClusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus {
+ [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
+}
+
+- (nullable SDLClusterModeStatus *)clusterModeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil];
+}
+
+- (void)setMyKey:(nullable SDLMyKey *)myKey {
+ [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
+}
+
+- (nullable SDLMyKey *)myKey {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil];
+}
+
+- (void)setElectronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
+ [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
+}
+
+- (nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil];
+}
+
+- (void)setTurnSignal:(nullable SDLTurnSignal)turnSignal {
+ [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
+}
+
+- (nullable SDLTurnSignal)turnSignal {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil];
+}
+
+- (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID {
+ [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSString *)cloudAppVehicleID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil];
+}
+
+- (void)setStabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus {
+ [self.parameters sdl_setObject:stabilityControlsStatus forName:SDLRPCParameterNameStabilityControlsStatus];
+}
+
+- (nullable SDLStabilityControlsStatus *)stabilityControlsStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStabilityControlsStatus ofClass:SDLStabilityControlsStatus.class error:nil];
+}
+
+- (void)setWindowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus {
+ [self.parameters sdl_setObject:windowStatus forName:SDLRPCParameterNameWindowStatus];
+}
+
+- (nullable NSArray<SDLWindowStatus *> *)windowStatus {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameWindowStatus ofClass:SDLWindowStatus.class error:nil];
+}
+
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(NSObject *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLOnWayPointChange.h b/SmartDeviceLink/public/SDLOnWayPointChange.h
index 2fe3488ad..2fe3488ad 100644
--- a/SmartDeviceLink/SDLOnWayPointChange.h
+++ b/SmartDeviceLink/public/SDLOnWayPointChange.h
diff --git a/SmartDeviceLink/SDLOnWayPointChange.m b/SmartDeviceLink/public/SDLOnWayPointChange.m
index b90033dcf..b90033dcf 100644
--- a/SmartDeviceLink/SDLOnWayPointChange.m
+++ b/SmartDeviceLink/public/SDLOnWayPointChange.m
diff --git a/SmartDeviceLink/public/SDLPRNDL.h b/SmartDeviceLink/public/SDLPRNDL.h
new file mode 100644
index 000000000..904a0f218
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPRNDL.h
@@ -0,0 +1,104 @@
+// SDLPRNDL.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * The selected gear the car is in. Used in retrieving vehicle data.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLPRNDL NS_TYPED_ENUM;
+
+/**
+ * Park
+ */
+extern SDLPRNDL const SDLPRNDLPark;
+
+/**
+ * Reverse gear
+ */
+extern SDLPRNDL const SDLPRNDLReverse;
+
+/**
+ * No gear
+ */
+extern SDLPRNDL const SDLPRNDLNeutral;
+
+/**
+ * @abstract: Drive gear
+ */
+extern SDLPRNDL const SDLPRNDLDrive;
+
+/**
+ * Drive Sport mode
+ */
+extern SDLPRNDL const SDLPRNDLSport;
+
+/**
+ * 1st gear hold
+ */
+extern SDLPRNDL const SDLPRNDLLowGear;
+
+/**
+ * First gear
+ */
+extern SDLPRNDL const SDLPRNDLFirst;
+
+/**
+ * Ninth gear
+ * @since SDL 7.0
+*/
+extern SDLPRNDL const SDLPRNDLNinth;
+
+/**
+ * Second gear
+ */
+extern SDLPRNDL const SDLPRNDLSecond;
+
+/**
+ * Tenth gear
+ * @since SDL 7.0
+*/
+extern SDLPRNDL const SDLPRNDLTenth;
+
+/**
+ * Third gear
+ */
+extern SDLPRNDL const SDLPRNDLThird;
+
+/**
+ * Fourth gear
+ */
+extern SDLPRNDL const SDLPRNDLFourth;
+
+/**
+ * Fifth gear
+ */
+extern SDLPRNDL const SDLPRNDLFifth;
+
+/**
+ * Sixth gear
+ */
+extern SDLPRNDL const SDLPRNDLSixth;
+
+/**
+ * Seventh gear
+ */
+extern SDLPRNDL const SDLPRNDLSeventh;
+
+/**
+ * Eighth gear
+ */
+extern SDLPRNDL const SDLPRNDLEighth;
+
+/**
+ * Unknown
+ */
+extern SDLPRNDL const SDLPRNDLUnknown;
+
+/**
+ * Fault
+ */
+extern SDLPRNDL const SDLPRNDLFault;
diff --git a/SmartDeviceLink/public/SDLPRNDL.m b/SmartDeviceLink/public/SDLPRNDL.m
new file mode 100644
index 000000000..b94437065
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPRNDL.m
@@ -0,0 +1,24 @@
+// SDLPRNDL.m
+//
+
+
+#import "SDLPRNDL.h"
+
+SDLPRNDL const SDLPRNDLPark = @"PARK";
+SDLPRNDL const SDLPRNDLReverse = @"REVERSE";
+SDLPRNDL const SDLPRNDLNeutral = @"NEUTRAL";
+SDLPRNDL const SDLPRNDLDrive = @"DRIVE";
+SDLPRNDL const SDLPRNDLSport = @"SPORT";
+SDLPRNDL const SDLPRNDLLowGear = @"LOWGEAR";
+SDLPRNDL const SDLPRNDLFirst = @"FIRST";
+SDLPRNDL const SDLPRNDLNinth = @"NINTH";
+SDLPRNDL const SDLPRNDLSecond = @"SECOND";
+SDLPRNDL const SDLPRNDLTenth = @"TENTH";
+SDLPRNDL const SDLPRNDLThird = @"THIRD";
+SDLPRNDL const SDLPRNDLFourth = @"FOURTH";
+SDLPRNDL const SDLPRNDLFifth = @"FIFTH";
+SDLPRNDL const SDLPRNDLSixth = @"SIXTH";
+SDLPRNDL const SDLPRNDLSeventh = @"SEVENTH";
+SDLPRNDL const SDLPRNDLEighth = @"EIGHTH";
+SDLPRNDL const SDLPRNDLUnknown = @"UNKNOWN";
+SDLPRNDL const SDLPRNDLFault = @"FAULT";
diff --git a/SmartDeviceLink/SDLParameterPermissions.h b/SmartDeviceLink/public/SDLParameterPermissions.h
index 48d8b433d..48d8b433d 100644
--- a/SmartDeviceLink/SDLParameterPermissions.h
+++ b/SmartDeviceLink/public/SDLParameterPermissions.h
diff --git a/SmartDeviceLink/SDLParameterPermissions.m b/SmartDeviceLink/public/SDLParameterPermissions.m
index 5b83f66bf..5b83f66bf 100644
--- a/SmartDeviceLink/SDLParameterPermissions.m
+++ b/SmartDeviceLink/public/SDLParameterPermissions.m
diff --git a/SmartDeviceLink/SDLPerformAppServiceInteraction.h b/SmartDeviceLink/public/SDLPerformAppServiceInteraction.h
index f85c66387..f85c66387 100644
--- a/SmartDeviceLink/SDLPerformAppServiceInteraction.h
+++ b/SmartDeviceLink/public/SDLPerformAppServiceInteraction.h
diff --git a/SmartDeviceLink/SDLPerformAppServiceInteraction.m b/SmartDeviceLink/public/SDLPerformAppServiceInteraction.m
index f401f7f28..f401f7f28 100644
--- a/SmartDeviceLink/SDLPerformAppServiceInteraction.m
+++ b/SmartDeviceLink/public/SDLPerformAppServiceInteraction.m
diff --git a/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.h b/SmartDeviceLink/public/SDLPerformAppServiceInteractionResponse.h
index 3b9c6efdd..3b9c6efdd 100644
--- a/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.h
+++ b/SmartDeviceLink/public/SDLPerformAppServiceInteractionResponse.h
diff --git a/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.m b/SmartDeviceLink/public/SDLPerformAppServiceInteractionResponse.m
index 35bd58bf7..35bd58bf7 100644
--- a/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.m
+++ b/SmartDeviceLink/public/SDLPerformAppServiceInteractionResponse.m
diff --git a/SmartDeviceLink/SDLPerformAudioPassThru.h b/SmartDeviceLink/public/SDLPerformAudioPassThru.h
index 26ca9a21a..26ca9a21a 100644
--- a/SmartDeviceLink/SDLPerformAudioPassThru.h
+++ b/SmartDeviceLink/public/SDLPerformAudioPassThru.h
diff --git a/SmartDeviceLink/SDLPerformAudioPassThru.m b/SmartDeviceLink/public/SDLPerformAudioPassThru.m
index 6bcea8fc7..6bcea8fc7 100644
--- a/SmartDeviceLink/SDLPerformAudioPassThru.m
+++ b/SmartDeviceLink/public/SDLPerformAudioPassThru.m
diff --git a/SmartDeviceLink/SDLPerformAudioPassThruResponse.h b/SmartDeviceLink/public/SDLPerformAudioPassThruResponse.h
index 7f7b21176..7f7b21176 100644
--- a/SmartDeviceLink/SDLPerformAudioPassThruResponse.h
+++ b/SmartDeviceLink/public/SDLPerformAudioPassThruResponse.h
diff --git a/SmartDeviceLink/SDLPerformAudioPassThruResponse.m b/SmartDeviceLink/public/SDLPerformAudioPassThruResponse.m
index a33310be7..a33310be7 100644
--- a/SmartDeviceLink/SDLPerformAudioPassThruResponse.m
+++ b/SmartDeviceLink/public/SDLPerformAudioPassThruResponse.m
diff --git a/SmartDeviceLink/public/SDLPerformInteraction.h b/SmartDeviceLink/public/SDLPerformInteraction.h
new file mode 100644
index 000000000..c1d674b5b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPerformInteraction.h
@@ -0,0 +1,154 @@
+// SDLPerformInteraction.h
+//
+
+#import "SDLRPCRequest.h"
+
+#import "SDLInteractionMode.h"
+#import "SDLLayoutMode.h"
+
+@class SDLTTSChunk;
+@class SDLVRHelpItem;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Performs an application-initiated interaction in which the user can select a choice from the passed choice set.
+
+ There are several ways to present a choice set: as visual pop-up menu (with an optional keyboard that allows for searches), as voice-recognition (VR) only menu, or as both a VR and visual menu. It is also possible to present only the keyboard for doing searches.
+
+ A choice set can have up to 100 items, however if you are presenting a visual only menu please be aware that the OEM may choose to limit the number of presented choices when the driver is distracted (i.e. the car is moving).
+
+ A VR-only menu could be used to ask a user to say the name of a song to play. The user's response would only be valid if it appears in the specified choice set.
+ A visual popup-menu could be used to present a list of albums to the user. The user would select the album they want to play from the list of presented choices.
+ A keyboard can be used for searches. For example, the user could be asked to enter the name of a restaurant. The name can be used to search for local restaurants with the same name. When the search is completed another menu can be presented with a list of potential addresses for the destination.
+
+ If connecting to SDL Core v.6.0+, the perform interaction can be canceled programmatically using the `cancelID`. On older versions of SDL Core, the perform interaction will persist until the user has interacted with the perform interaction or the specified timeout has elapsed.
+
+ @see SDLCreateInteractionChoiceSet, SDLDeleteInteractionChoiceSet
+
+ @since SDL 1.0
+ */
+@interface SDLPerformInteraction : SDLRPCRequest
+
+/**
+ Convenience init for creating a basic display or voice-recognition menu.
+
+ @param initialText Text to be displayed first
+ @param interactionMode Indicates the method in which the user is notified and uses the interaction
+ @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
+ @param cancelID An ID for this specific perform interaction to allow cancellation through the `CancelInteraction` RPC
+ @return An SDLPerformInteraction object
+ */
+- (instancetype)initWithInitialText:(NSString *)initialText interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList cancelID:(UInt32)cancelID;
+
+/**
+ Convenience init for setting all parameters of a display or voice-recognition menu.
+
+ @param initialText Text to be displayed first
+ @param initialPrompt The initial prompt spoken to the user at the start of an interaction
+ @param interactionMode The method in which the user is notified and uses the interaction (voice, visual or both)
+ @param interactionChoiceSetIDList List of interaction choice set IDs to use with an interaction
+ @param helpPrompt The spoken text when a user speaks "help" when the interaction is occurring
+ @param timeoutPrompt The text spoken when a VR interaction times out
+ @param timeout Timeout in milliseconds
+ @param vrHelp Suggested voice recognition help items to display on-screen during a perform interaction
+ @param interactionLayout For touchscreen interactions, the mode of how the choices are presented
+ @param cancelID An ID for this specific perform interaction to allow cancellation through the `CancelInteraction` RPC.
+ @return An SDLPerformInteraction object
+ */
+- (instancetype)initWithInitialText:(NSString *)initialText initialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt timeout:(UInt16)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)interactionLayout cancelID:(UInt32)cancelID;
+
+/**
+ Text to be displayed first.
+
+ String, Required
+
+ @since SDL 1.0
+ */
+@property (strong, nonatomic) NSString *initialText;
+
+/**
+ This is the TTS prompt spoken to the user at the start of an interaction.
+
+ Array of SDLTTSChunk, Optional, Array size: 1-100
+
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *initialPrompt;
+
+/**
+ For application-requested interactions, this mode indicates the method in which the user is notified and uses the interaction. Users can choose either only by voice (VR_ONLY), by tactile selection from the menu (MANUAL_ONLY), or by either mode (BOTH).
+
+ SDLInteractionMode, Required
+
+ @since SDL 1.0
+ */
+@property (strong, nonatomic) SDLInteractionMode interactionMode;
+
+/**
+ List of interaction choice set IDs to use with an interaction.
+
+ Array of Integers, Required, Array size: 0-100, Min value: 0, Max value: 2000000000
+
+ @since SDL 1.0
+ */
+@property (strong, nonatomic) NSArray<NSNumber *> *interactionChoiceSetIDList;
+
+/**
+ Help text. This is the spoken text when a user speaks "help" while the interaction is occurring.
+
+ SDLTTSChunk, Optional
+
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *helpPrompt;
+
+/**
+ Timeout text. This text is spoken when a VR interaction times out.
+
+ Array of SDLTTSChunk, Optional, Array size: 1-100
+
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *timeoutPrompt;
+
+/**
+ Timeout in milliseconds. Applies only to the menu portion of the interaction. The VR timeout will be handled by the platform. If omitted a standard value of 10 seconds is used.
+
+ Integer, Optional, Min value: 5000, Max value: 100,000
+
+ @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *timeout;
+
+/**
+ Suggested voice recognition help items to display on-screen during a perform interaction. If omitted on supported displays, the default generated list of suggested choices shall be displayed.
+
+ SDLVRHelpItem, Optional
+
+ @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLVRHelpItem *> *vrHelp;
+
+/**
+ For tactile interaction modes (MANUAL_ONLY, or BOTH), the layout mode of how the choices are presented.
+
+ SDLLayoutMode, Optional
+
+ @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) SDLLayoutMode interactionLayout;
+
+/**
+ An ID for this specific perform interaction to allow cancellation through the `CancelInteraction` RPC.
+
+ Integer, Optional
+
+ @see SDLCancelInteraction
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLPerformInteraction.m b/SmartDeviceLink/public/SDLPerformInteraction.m
new file mode 100644
index 000000000..e76621197
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPerformInteraction.m
@@ -0,0 +1,139 @@
+// SDLPerformInteraction.m
+//
+
+
+#import "SDLPerformInteraction.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLTTSChunk.h"
+#import "SDLVrHelpItem.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLPerformInteraction
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNamePerformInteraction]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithInitialDisplayText:(NSString *)initialText initialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt timeout:(nullable NSNumber *)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)interactionLayout cancelID:(nullable NSNumber *)cancelID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.initialText = initialText;
+ self.initialPrompt = initialPrompt;
+ self.interactionMode = interactionMode;
+ self.interactionChoiceSetIDList = interactionChoiceSetIDList;
+ self.helpPrompt = helpPrompt;
+ self.timeoutPrompt = timeoutPrompt;
+ self.timeout = timeout;
+ self.vrHelp = vrHelp;
+ self.interactionLayout = interactionLayout;
+ self.cancelID = cancelID;
+
+ return self;
+}
+
+- (instancetype)initWithInitialText:(NSString *)initialText interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList cancelID:(UInt32)cancelID {
+ return [self initWithInitialDisplayText:initialText initialPrompt:nil interactionMode:interactionMode interactionChoiceSetIDList:interactionChoiceSetIDList helpPrompt:nil timeoutPrompt:nil timeout:nil vrHelp:nil interactionLayout:nil cancelID:@(cancelID)];
+}
+
+- (instancetype)initWithInitialText:(NSString *)initialText initialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt interactionMode:(SDLInteractionMode)interactionMode interactionChoiceSetIDList:(NSArray<NSNumber<SDLUInt> *> *)interactionChoiceSetIDList helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt timeout:(UInt16)timeout vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp interactionLayout:(nullable SDLLayoutMode)interactionLayout cancelID:(UInt32)cancelID {
+ return [self initWithInitialDisplayText:initialText initialPrompt:initialPrompt interactionMode:interactionMode interactionChoiceSetIDList:interactionChoiceSetIDList helpPrompt:helpPrompt timeoutPrompt:timeoutPrompt timeout:@(timeout) vrHelp:vrHelp interactionLayout:interactionLayout cancelID:@(cancelID)];
+}
+
+- (void)setInitialText:(NSString *)initialText {
+ [self.parameters sdl_setObject:initialText forName:SDLRPCParameterNameInitialText];
+}
+
+- (NSString *)initialText {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInitialText ofClass:NSString.class error:&error];
+}
+
+- (void)setInitialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt {
+ [self.parameters sdl_setObject:initialPrompt forName:SDLRPCParameterNameInitialPrompt];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)initialPrompt {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameInitialPrompt ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setInteractionMode:(SDLInteractionMode)interactionMode {
+ [self.parameters sdl_setObject:interactionMode forName:SDLRPCParameterNameInteractionMode];
+}
+
+- (SDLInteractionMode)interactionMode {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameInteractionMode error:&error];
+}
+
+- (void)setInteractionChoiceSetIDList:(NSArray<NSNumber *> *)interactionChoiceSetIDList {
+ [self.parameters sdl_setObject:interactionChoiceSetIDList forName:SDLRPCParameterNameInteractionChoiceSetIdList];
+}
+
+- (NSArray<NSNumber *> *)interactionChoiceSetIDList {
+ NSError *error = nil;
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameInteractionChoiceSetIdList ofClass:NSNumber.class error:&error];
+}
+
+- (void)setHelpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt {
+ [self.parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)helpPrompt {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setTimeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
+ [self.parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setTimeout:(nullable NSNumber<SDLInt> *)timeout {
+ [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout];
+}
+
+- (nullable NSNumber<SDLInt> *)timeout {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
+ [self.parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp];
+}
+
+- (nullable NSArray<SDLVRHelpItem *> *)vrHelp {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil];
+}
+
+- (void)setInteractionLayout:(nullable SDLLayoutMode)interactionLayout {
+ [self.parameters sdl_setObject:interactionLayout forName:SDLRPCParameterNameInteractionLayout];
+}
+
+- (nullable SDLLayoutMode)interactionLayout {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameInteractionLayout error:nil];
+}
+
+- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
+ [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
+}
+
+- (nullable NSNumber<SDLInt> *)cancelID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPerformInteractionResponse.h b/SmartDeviceLink/public/SDLPerformInteractionResponse.h
index 74b89d5c4..74b89d5c4 100644
--- a/SmartDeviceLink/SDLPerformInteractionResponse.h
+++ b/SmartDeviceLink/public/SDLPerformInteractionResponse.h
diff --git a/SmartDeviceLink/SDLPerformInteractionResponse.m b/SmartDeviceLink/public/SDLPerformInteractionResponse.m
index fc9723073..fc9723073 100644
--- a/SmartDeviceLink/SDLPerformInteractionResponse.m
+++ b/SmartDeviceLink/public/SDLPerformInteractionResponse.m
diff --git a/SmartDeviceLink/public/SDLPermissionConstants.h b/SmartDeviceLink/public/SDLPermissionConstants.h
new file mode 100644
index 000000000..13b897ed5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPermissionConstants.h
@@ -0,0 +1,83 @@
+//
+// SDLPermissionsConstants.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 11/18/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "NSNumber+NumberType.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLPermissionElement.h"
+#import "SDLRPCPermissionStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// NSString typedef
+///
+/// SDLPermissionRPCName: The name of the permission
+typedef NSString *SDLPermissionRPCName __deprecated_msg("Use SDLRPCFunctionName instead");
+
+/// NSUUID typedef
+///
+/// SDLPermissionObserverIdentifier: A unique identifier
+typedef NSUUID *SDLPermissionObserverIdentifier;
+
+/**
+ * A permission group type which will be used to tell the system what type of changes you want to be notified about for the group.
+ */
+typedef NS_ENUM(NSUInteger, SDLPermissionGroupType) {
+ /**
+ * Be notified when all of the RPC in the group are allowed, or, when they all stop being allowed in some sense, that is, when they were all allowed, and now they are not.
+ */
+ SDLPermissionGroupTypeAllAllowed,
+ /**
+ * Be notified when any change in availability occurs among the group.
+ */
+ SDLPermissionGroupTypeAny
+};
+
+/**
+ * The status of the group of RPCs permissions.
+ */
+typedef NS_ENUM(NSUInteger, SDLPermissionGroupStatus) {
+ /**
+ * Every RPC in the group is currently allowed.
+ */
+ SDLPermissionGroupStatusAllowed,
+ /**
+ * Every RPC in the group is currently disallowed.
+ */
+ SDLPermissionGroupStatusDisallowed,
+ /**
+ * Some RPCs in the group are allowed and some disallowed.
+ */
+ SDLPermissionGroupStatusMixed,
+ /**
+ * The current status of the group is unknown.
+ */
+ SDLPermissionGroupStatusUnknown
+};
+
+/**
+ * This is a block that is passed in to some methods that will be stored and called when specified permissions change.
+ *
+ * @param updatedPermissionStatuses A dictionary of the new current status of all subscription items; containing <key(String): RPC Name, object(BOOL): YES if the RPC is allowed, NO if it is not allowed>
+ * @param status The unified group status of the RPCs in the updatedPermissionStatuses dictionary. Allowed, if all RPCs are now allowed, Disallowed if all RPCs are now disallowed, or Mixed if some are allowed, and some are disallowed
+ */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+typedef void (^SDLPermissionsChangedHandler)(NSDictionary<SDLPermissionRPCName, NSNumber *> *_Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) __deprecated_msg("Use SDLRPCPermissionStatusChangedHandler instead");
+#pragma clang diagnostic pop
+
+/**
+ * A block that will be called when specified permissions change. It will return whether each RPC and its parameters are allowed as well as the permission group status of all the RPCs.
+ *
+ * @param updatedPermissionStatuses A dictionary of the new current status of all subscription items; containing <key(String): SDLRPCFunctionName, object(SDLRPCPermissionStatus)>
+ * @param status The unified group status of the RPCs in the updatedPermissionStatuses dictionary. Allowed, if all RPCs are now allowed, Disallowed if all RPCs are now disallowed, or Mixed if some are allowed, and some are disallowed
+ */
+typedef void (^SDLRPCPermissionStatusChangedHandler)(NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *_Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status);
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPermissionElement.h b/SmartDeviceLink/public/SDLPermissionElement.h
index 3edffe0c6..3edffe0c6 100644
--- a/SmartDeviceLink/SDLPermissionElement.h
+++ b/SmartDeviceLink/public/SDLPermissionElement.h
diff --git a/SmartDeviceLink/SDLPermissionElement.m b/SmartDeviceLink/public/SDLPermissionElement.m
index ea2aa6e4e..ea2aa6e4e 100644
--- a/SmartDeviceLink/SDLPermissionElement.m
+++ b/SmartDeviceLink/public/SDLPermissionElement.m
diff --git a/SmartDeviceLink/SDLPermissionItem.h b/SmartDeviceLink/public/SDLPermissionItem.h
index 208ba6086..208ba6086 100644
--- a/SmartDeviceLink/SDLPermissionItem.h
+++ b/SmartDeviceLink/public/SDLPermissionItem.h
diff --git a/SmartDeviceLink/SDLPermissionItem.m b/SmartDeviceLink/public/SDLPermissionItem.m
index b4c749b59..b4c749b59 100644
--- a/SmartDeviceLink/SDLPermissionItem.m
+++ b/SmartDeviceLink/public/SDLPermissionItem.m
diff --git a/SmartDeviceLink/public/SDLPermissionManager.h b/SmartDeviceLink/public/SDLPermissionManager.h
new file mode 100644
index 000000000..93107c9ee
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPermissionManager.h
@@ -0,0 +1,110 @@
+//
+// SDLPermissionManager.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/14/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLHMILevel.h"
+#import "SDLPermissionConstants.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCPermissionStatus.h"
+
+@class SDLPermissionItem;
+@class SDLRPCMessage;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// The permission manager monitoring RPC permissions.
+@interface SDLPermissionManager : NSObject
+
+/**
+ * Flag indicating if the app requires an encryption service to be active.
+ */
+@property (assign, nonatomic, readonly) BOOL requiresEncryption;
+
+/**
+ * Start the manager with a completion block that will be called when startup completes. This is used internally. To use an SDLPermissionManager, you should use the manager found on `SDLManager`.
+ *
+ * @param completionHandler The block to be called when the manager's setup is complete.
+ */
+- (void)startWithCompletionHandler:(void (^)(BOOL success, NSError *__nullable error))completionHandler;
+
+/**
+ * Stop the manager. This method is used internally.
+ */
+- (void)stop;
+
+/**
+ * Determine if an individual RPC is allowed for the current HMI level
+ *
+ * @param rpcName The name of the RPC to be tested, for example, SDLRPCFunctionNameShow
+ *
+ * @return YES if the RPC is allowed at the current HMI level, NO if not
+ */
+- (BOOL)isRPCNameAllowed:(SDLRPCFunctionName)rpcName;
+
+/**
+ * Determine if all RPCs are allowed for the current HMI level
+ *
+ * @param rpcNames The RPCs to check
+ *
+ * @return AllAllowed if all of the permissions are allowed, AllDisallowed if all the permissions are disallowed, Any if some are allowed, and some are disallowed
+*/
+- (SDLPermissionGroupStatus)groupStatusOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames;
+
+/**
+ * Retrieve a dictionary with keys that are the passed in RPC names, and objects of an NSNumber<BOOL> specifying if that RPC is currently allowed
+ *
+ * @param rpcNames An array of permission elements to check
+ *
+ * @return A dictionary with specific RPC info contained in a SDLRPCPermissionStatus
+*/
+- (NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *)statusesOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames;
+
+/**
+ * Subscribe to specified RPC names, with a callback that will be called whenever the value changes. Tthe callback will only return immediately if the groupType is set to SDLPermissionGroupTypeAny or if the groupType is set to SDLPermissionGroupTypeAllAllowed and all RPCs in the rpcNames parameter are allowed.
+ *
+ * @warning The observer may be called before this method returns. Do not attempt to remove the observer from within the observer.
+ *
+ * @param permissionElements The permission elements to be observed
+ * @param groupType Affects the times that the observer block will be called. If Any, any change to any RPC in rpcNames will cause the observer block to be called. If AllAllowed, the block will be called when: 1. Every RPC in rpcNames becomes allowed 2. The group of rpcNames goes from all being allowed to some or all being disallowed.
+ * @param handler The block that will be called whenever permissions change.
+ *
+ * @return An identifier that can be passed to removeObserverForIdentifer: to remove the observer
+ */
+- (SDLPermissionObserverIdentifier)subscribeToRPCPermissions:(NSArray<SDLPermissionElement *> *)permissionElements groupType:(SDLPermissionGroupType)groupType withHandler:(SDLRPCPermissionStatusChangedHandler)handler;
+
+/**
+ * Remove every current observer
+ */
+- (void)removeAllObservers;
+
+/**
+ * Remove block observers for the specified RPC
+ *
+ * @param identifier The identifier specifying which observer to remove
+ */
+- (void)removeObserverForIdentifier:(SDLPermissionObserverIdentifier)identifier;
+
+/**
+ * Check whether or not an RPC needs encryption.
+ */
+- (BOOL)rpcNameRequiresEncryption:(SDLRPCFunctionName)rpcName;
+
+/**
+ * Check whether a parameter of an RPC is allowed
+ *
+ * @param rpcName The name of the RPC to be tested, for example, SDLRPCFunctionNameGetVehicleData
+ * @param parameter The name of the parameter to be tested, for example, rpm
+ *
+ * @return True if the parameter is allowed, false if it is not
+ */
+- (BOOL)isPermissionParameterAllowed:(SDLRPCFunctionName)rpcName parameter:(NSString *)parameter;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLPermissionManager.m b/SmartDeviceLink/public/SDLPermissionManager.m
new file mode 100644
index 000000000..0e5301547
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPermissionManager.m
@@ -0,0 +1,426 @@
+//
+// SDLPermissionManager.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 10/14/15.
+// Copyright © 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLPermissionManager.h"
+
+#import "SDLHMIPermissions.h"
+#import "SDLNotificationConstants.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLOnPermissionsChange.h"
+#import "SDLParameterPermissions.h"
+#import "SDLPermissionFilter.h"
+#import "SDLPermissionItem.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLStateMachine.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLPermissionManager ()
+
+@property (strong, nonatomic) NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> *permissions;
+@property (strong, nonatomic) NSMutableArray<SDLPermissionFilter *> *filters;
+@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
+@property (assign, nonatomic) BOOL requiresEncryption;
+
+@end
+
+
+@implementation SDLPermissionManager
+
+#pragma mark - Lifecycle
+
+- (instancetype)init {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _currentHMILevel = nil;
+ _permissions = [NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> dictionary];
+ _filters = [NSMutableArray<SDLPermissionFilter *> array];
+
+ // Set up SDL status notifications
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_permissionsDidChange:) name:SDLDidChangePermissionsNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiLevelDidChange:) name:SDLDidChangeHMIStatusNotification object:nil];
+
+ return self;
+}
+
+- (void)startWithCompletionHandler:(void (^)(BOOL, NSError *_Nullable))completionHandler {
+ completionHandler(YES, nil);
+}
+
+- (void)stop {
+ _permissions = [NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> dictionary];
+ _filters = [NSMutableArray<SDLPermissionFilter *> array];
+ _currentHMILevel = nil;
+}
+
+
+#pragma mark - Permissions available
+
+- (BOOL)isRPCNameAllowed:(SDLRPCFunctionName)rpcName {
+ return [self.class isRPCNameAllowed:rpcName permissions:self.permissions hmiLevel:self.currentHMILevel];
+}
+
++ (BOOL)isRPCNameAllowed:(SDLRPCFunctionName)rpcName permissions:(NSDictionary<SDLRPCFunctionName, SDLPermissionItem *> *)permissions hmiLevel:(SDLHMILevel)hmiLevel {
+ if (permissions[rpcName] == nil || hmiLevel == nil) {
+ return NO;
+ }
+
+ SDLPermissionItem *item = permissions[rpcName];
+ return [item.hmiPermissions.allowed containsObject:hmiLevel];
+}
+
+- (SDLPermissionGroupStatus)groupStatusOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames {
+ if (self.currentHMILevel == nil) {
+ return SDLPermissionGroupStatusUnknown;
+ }
+
+ return [self.class sdl_groupStatusOfRPCPermissions:rpcNames withPermissions:[self.permissions copy] hmiLevel:self.currentHMILevel];
+}
+
++ (SDLPermissionGroupStatus)sdl_groupStatusOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames withPermissions:(NSDictionary<SDLRPCFunctionName, SDLPermissionItem *> *)permissions hmiLevel:(SDLHMILevel)hmiLevel {
+ // If we don't have an HMI level, then just say everything is disallowed
+ if (hmiLevel == nil) {
+ return SDLPermissionGroupStatusUnknown;
+ }
+
+ BOOL hasAllowed = NO;
+ BOOL hasDisallowed = NO;
+
+ // Loop through all the RPCs we need to check
+ for (SDLPermissionElement *permissionElement in rpcNames) {
+ NSString *rpcName = permissionElement.rpcName;
+
+ // If at this point in the loop, we have both allowed and disallowed RPCs, return the mixed result
+ if (hasAllowed && hasDisallowed) {
+ return SDLPermissionGroupStatusMixed;
+ }
+
+ // If we don't have a status for this permission, set it as disallowed
+ if (permissions[rpcName] == nil) {
+ hasDisallowed = YES;
+ continue;
+ }
+
+ // Check the permission's "allowed" array for the current HMI level
+ if ([permissions[rpcName].hmiPermissions.allowed containsObject:hmiLevel]) {
+ hasAllowed = YES;
+ } else {
+ hasDisallowed = YES;
+ }
+
+ if (permissionElement.parameterPermissions != nil) {
+ for (NSString *parameter in permissionElement.parameterPermissions) {
+ if ([self.class sdl_isPermissionParameterAllowed:permissionElement.rpcName parameter:parameter permissionItems:permissions hmiLevel:hmiLevel]) {
+ hasAllowed = YES;
+ } else {
+ hasDisallowed = YES;
+ }
+ }
+ }
+ }
+
+ if (hasAllowed && hasDisallowed) {
+ return SDLPermissionGroupStatusMixed;
+ } else if (hasAllowed) {
+ return SDLPermissionGroupStatusAllowed;
+ } else {
+ return SDLPermissionGroupStatusDisallowed;
+ }
+}
+
+- (NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *)statusesOfRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames {
+ NSMutableDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *permissionAllowedDict = [NSMutableDictionary dictionary];
+
+ for (SDLPermissionElement *permissionElement in rpcNames) {
+ if (permissionElement == nil) { continue; }
+
+ NSMutableDictionary<NSString *, NSNumber *> *rpcParameters = [NSMutableDictionary dictionary];
+ if (permissionElement.parameterPermissions != nil) {
+ for (NSString *permissionParameter in permissionElement.parameterPermissions) {
+ BOOL isParameterAllowed = [self.class sdl_isPermissionParameterAllowed:permissionElement.rpcName parameter:permissionParameter permissionItems:self.permissions hmiLevel:self.currentHMILevel];
+ rpcParameters[permissionParameter] = @(isParameterAllowed);
+ }
+ }
+
+ SDLRPCPermissionStatus *permissionStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:permissionElement.rpcName isRPCAllowed:[self isRPCNameAllowed:permissionElement.rpcName] rpcParameters:rpcParameters];
+ permissionAllowedDict[permissionElement.rpcName] = permissionStatus;
+ }
+
+ return [permissionAllowedDict copy];
+}
+
+
+#pragma mark - Permissions observers
+
+#pragma mark Add Observers
+
+- (SDLPermissionObserverIdentifier)subscribeToRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType withHandler:(SDLRPCPermissionStatusChangedHandler)handler {
+ SDLPermissionFilter *filter = [[SDLPermissionFilter alloc] initWithPermissions:rpcNames groupType:groupType permissionStatusHandler:handler];
+
+ // Store the filter for later use
+ [self.filters addObject:filter];
+
+ // Check permission status and group type to see if we need to call handler immediately after setting the observer
+ SDLPermissionGroupStatus permissionStatus = [self groupStatusOfRPCPermissions:filter.permissionElements];
+ if ((groupType == SDLPermissionGroupTypeAny) || (groupType == SDLPermissionGroupTypeAllAllowed && permissionStatus == SDLPermissionGroupStatusAllowed)) {
+ [self sdl_callFilterObserver:filter];
+ }
+
+ return filter.identifier;
+}
+
+- (void)sdl_callFilterObserver:(SDLPermissionFilter *)filter {
+ SDLPermissionGroupStatus permissionStatus = [self groupStatusOfRPCPermissions:filter.permissionElements];
+
+ if (filter.rpcPermissionStatusHandler == nil) { return; }
+
+ NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *allowedDict = [self statusesOfRPCPermissions:filter.permissionElements];
+ filter.rpcPermissionStatusHandler(allowedDict, permissionStatus);
+}
+
+#pragma mark Remove Observers
+
+- (void)removeAllObservers {
+ [self.filters removeAllObjects];
+}
+
+- (void)removeObserverForIdentifier:(SDLPermissionObserverIdentifier)identifier {
+ NSArray<SDLPermissionFilter *> *filters = [self.filters copy];
+ for (NSUInteger i = 0; i < filters.count; i++) {
+ SDLPermissionFilter *filter = filters[i];
+
+ if ([filter.identifier isEqual:identifier]) {
+ [self.filters removeObjectAtIndex:i];
+ break;
+ }
+ }
+}
+
+
+#pragma mark - SDL Notification Observers
+
+- (void)sdl_permissionsDidChange:(SDLRPCNotificationNotification *)notification {
+ if (![notification isNotificationMemberOfClass:[SDLOnPermissionsChange class]]) {
+ return;
+ }
+
+ SDLOnPermissionsChange *onPermissionChange = notification.notification;
+
+ NSArray<SDLPermissionItem *> *newPermissionItems = [onPermissionChange.permissionItem copy];
+ NSArray<SDLPermissionFilter *> *currentFilters = [self.filters copy];
+
+ // We can eliminate calling those filters who had no permission changes, so we'll filter down and see which had permissions that changed
+ NSArray<SDLPermissionFilter *> *modifiedFilters = [self.class sdl_filterPermissionChangesForFilters:currentFilters currentPermissions:self.permissions updatedPermissions:newPermissionItems];
+
+ // We need the old group status and new group status for all allowed filters so we know if they should be called
+ NSDictionary<SDLPermissionObserverIdentifier, NSNumber<SDLInt> *> *allAllowedFiltersWithOldStatus = [self sdl_currentStatusForFilters:modifiedFilters];
+
+ // Set the updated permissions on our stored permissions object
+ for (SDLPermissionItem *item in newPermissionItems) {
+ self.permissions[item.rpcName] = item;
+ }
+
+ // Check if the observer should be called based on the group type
+ NSMutableArray<SDLPermissionFilter *> *filtersToCall = [NSMutableArray array];
+ for (SDLPermissionFilter *filter in modifiedFilters) {
+ if (filter.groupType == SDLPermissionGroupTypeAllAllowed) {
+ SDLPermissionGroupStatus oldStatus = [allAllowedFiltersWithOldStatus[filter.identifier] unsignedIntegerValue];
+ SDLPermissionGroupStatus newStatus = [self groupStatusOfRPCPermissions:filter.permissionElements];
+
+ // We've already eliminated the case where the permissions could stay the same, so if the permissions changed *to* allowed or *away* from allowed, we need to call the observer.
+ if (newStatus == SDLPermissionGroupStatusAllowed || oldStatus == SDLPermissionGroupStatusAllowed) {
+ [filtersToCall addObject:filter];
+ }
+ } else {
+ // The filter is an `any` type and we know it changed, so we'll call it
+ [filtersToCall addObject:filter];
+ }
+ }
+
+ // For all the modified filters we care about, call them
+ for (SDLPermissionFilter *filter in filtersToCall) {
+ [self sdl_callFilterObserver:filter];
+ }
+
+ self.requiresEncryption = (onPermissionChange.requireEncryption != nil) ? onPermissionChange.requireEncryption.boolValue : [self sdl_containsAtLeastOneRPCThatRequiresEncryption];
+}
+
+- (void)sdl_hmiLevelDidChange:(SDLRPCNotificationNotification *)notification {
+ if (![notification isNotificationMemberOfClass:[SDLOnHMIStatus class]]) {
+ return;
+ }
+
+ SDLOnHMIStatus *hmiStatus = notification.notification;
+
+ if (hmiStatus.windowID != nil && hmiStatus.windowID.integerValue != SDLPredefinedWindowsDefaultWindow) {
+ return;
+ }
+
+ SDLHMILevel oldHMILevel = [self.currentHMILevel copy];
+ self.currentHMILevel = hmiStatus.hmiLevel;
+ NSArray<SDLPermissionFilter *> *filters = [self.filters copy];
+
+
+ NSMutableArray<SDLPermissionFilter *> *mutableFiltersToCall = [NSMutableArray arrayWithCapacity:filters.count];
+ for (SDLPermissionFilter *filter in filters) {
+ // Check if the filter changed, according to its group type settings.
+ BOOL filterChanged = [self sdl_didFilterChange:filter fromHMILevel:oldHMILevel toHMILevel:self.currentHMILevel];
+
+ if (filterChanged) {
+ [mutableFiltersToCall addObject:filter];
+ }
+ }
+
+ NSArray<SDLPermissionFilter *> *filtersToCall = [mutableFiltersToCall copy];
+
+ // For all the modified filters, call if necessary
+ for (SDLPermissionFilter *filter in filtersToCall) {
+ [self sdl_callFilterObserver:filter];
+ }
+}
+
+
+#pragma mark Helper Methods
+
+/**
+ * Determine if a filter changes based on an HMI level change and the filter's group type settings. This will run through the filter's RPCs, check the permission for each and see if any permission within the filter changes based on some permission now being allowed when it wasn't, or not allowed when it was. This also takes into account the group type setting, so an All Allowed filter will return YES if and only if some permission changed *and* that causes a status change *to* or *from* Allowed.
+ *
+ * @param filter The filter to check
+ * @param oldHMILevel The old HMI level
+ * @param newHMILevel The new HMI level
+ *
+ * @return Whether or not the filter changed based on the difference in HMI levels.
+ */
+- (BOOL)sdl_didFilterChange:(SDLPermissionFilter *)filter fromHMILevel:(SDLHMILevel)oldHMILevel toHMILevel:(SDLHMILevel)newHMILevel {
+ BOOL changed = NO;
+ for (NSString *rpcName in [filter rpcNamesFromPermissionElements:filter.permissionElements]) {
+ SDLPermissionItem *item = self.permissions[rpcName];
+ BOOL newAllowed = [item.hmiPermissions.allowed containsObject:self.currentHMILevel];
+ BOOL oldAllowed = [item.hmiPermissions.allowed containsObject:oldHMILevel];
+
+ if ((newAllowed && !oldAllowed) || (!newAllowed && oldAllowed)) {
+ // Now permitted when it was not before, or not permitted when it was before
+ if (filter.groupType == SDLPermissionGroupTypeAny) {
+ return YES;
+ } else {
+ changed = YES;
+ break;
+ }
+ }
+ }
+
+ // This is only for the All Allowed group type. Unlike with the Any group type, we need to know if the group status has changed
+ if (changed) {
+ SDLPermissionGroupStatus oldStatus = [self.class sdl_groupStatusOfRPCPermissions:filter.permissionElements withPermissions:self.permissions hmiLevel:oldHMILevel];
+ SDLPermissionGroupStatus newStatus = [self.class sdl_groupStatusOfRPCPermissions:filter.permissionElements withPermissions:self.permissions hmiLevel:newHMILevel];
+
+ // We've already eliminated the case where the permissions could stay the same, so if the permissions changed *to* allowed or *away* from allowed, we need to call the observer.
+ if (newStatus == SDLPermissionGroupStatusAllowed || oldStatus == SDLPermissionGroupStatusAllowed) {
+ return YES;
+ }
+ }
+
+ return NO;
+}
+
+/**
+ * Get a dictionary of the current group status for filters passed in.
+ *
+ * @param filters The filters to check
+ *
+ * @return A dictionary of filters as the keys and an NSNumber wrapper for the SDLPermissionGroupStatus
+ */
+- (NSDictionary<NSUUID *, NSNumber<SDLInt> *> *)sdl_currentStatusForFilters:(NSArray<SDLPermissionFilter *> *)filters {
+ // Create a dictionary that has the all allowed filters and stores their group status for future reference
+ NSMutableDictionary<SDLPermissionFilter *, NSNumber<SDLInt> *> *filtersWithStatus = [NSMutableDictionary dictionary];
+ for (SDLPermissionFilter *filter in filters) {
+ if (filter.groupType == SDLPermissionGroupTypeAllAllowed) {
+ filtersWithStatus[filter.identifier] = @([self groupStatusOfRPCPermissions:filter.permissionElements]);
+ }
+ }
+
+ return [filtersWithStatus copy];
+}
+
+/**
+ Takes a set of filters and a set of updated permission items. Loops through each permission for each filter and determines if the filter contains a permission that was updated. Returns the set of filters that contain an updated permission.
+
+ @param filters The set of filters to check
+ @param currentPermissions The current set of permissions to check the updated permissions and make sure they were modified
+ @param updatedPermissions The set of updated permissions to test each filter against
+ @return An array of filters that contained one of the passed permissions
+ */
++ (NSArray<SDLPermissionFilter *> *)sdl_filterPermissionChangesForFilters:(NSArray<SDLPermissionFilter *> *)filters currentPermissions:(NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> *)currentPermissions updatedPermissions:(NSArray<SDLPermissionItem *> *)updatedPermissions {
+ NSMutableArray<SDLPermissionFilter *> *modifiedFilters = [NSMutableArray arrayWithCapacity:filters.count];
+
+ // Loop through each updated permission item for each filter, if the filter had something modified, store it and go to the next filter
+ for (SDLPermissionFilter *filter in filters) {
+ NSArray<SDLPermissionItem *> *modifiedPermissionItems = [self sdl_modifiedUpdatedPermissions:updatedPermissions comparedToCurrentPermissions:currentPermissions];
+ for (SDLPermissionItem *item in modifiedPermissionItems) {
+ if ([[filter rpcNamesFromPermissionElements:filter.permissionElements] containsObject:item.rpcName]) {
+ [modifiedFilters addObject:filter];
+ break;
+ }
+ }
+ }
+
+ return [modifiedFilters copy];
+}
+
++ (NSArray<SDLPermissionItem *> *)sdl_modifiedUpdatedPermissions:(NSArray<SDLPermissionItem *> *)permissionItems comparedToCurrentPermissions:(NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> *)currentPermissions {
+ NSMutableArray<SDLPermissionItem *> *modifiedPermissions = [NSMutableArray arrayWithCapacity:permissionItems.count];
+
+ for (SDLPermissionItem *item in permissionItems) {
+ SDLPermissionItem *currentItem = currentPermissions[item.rpcName];
+ if (![item isEqual:currentItem]) {
+ [modifiedPermissions addObject:item];
+ }
+ }
+
+ return [modifiedPermissions copy];
+}
+
+- (BOOL)sdl_containsAtLeastOneRPCThatRequiresEncryption {
+ for (SDLPermissionItem *item in self.permissions.allValues) {
+ if (item.requireEncryption) {
+ return YES;
+ }
+ }
+ return NO;
+}
+
+- (BOOL)rpcNameRequiresEncryption:(SDLRPCFunctionName)rpcName {
+ if (self.permissions[rpcName].requireEncryption != nil) {
+ return self.permissions[rpcName].requireEncryption.boolValue;
+ }
+ return NO;
+}
+
+- (BOOL)isPermissionParameterAllowed:(SDLRPCFunctionName)rpcName parameter:(NSString *)parameter {
+ return [self.class sdl_isPermissionParameterAllowed:rpcName parameter:parameter permissionItems:self.permissions hmiLevel:self.currentHMILevel];
+}
+
++ (BOOL)sdl_isPermissionParameterAllowed:(SDLRPCFunctionName)rpcName parameter:(NSString *)parameter permissionItems:(NSDictionary<SDLRPCFunctionName, SDLPermissionItem *> *)permissionItems hmiLevel:(SDLHMILevel)hmiLevel {
+ SDLPermissionItem *permissionItem = permissionItems[rpcName];
+ if (permissionItem == nil || ![self isRPCNameAllowed:rpcName permissions:permissionItems hmiLevel:hmiLevel] || permissionItem.parameterPermissions == nil || permissionItem.parameterPermissions.allowed == nil) {
+ return NO;
+ } else if (permissionItem.parameterPermissions.userDisallowed != nil) {
+ return [permissionItem.parameterPermissions.allowed containsObject:parameter] && ![permissionItem.parameterPermissions.userDisallowed containsObject:parameter];
+ } else {
+ return [permissionItem.parameterPermissions.allowed containsObject:parameter];
+ }
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLPermissionStatus.h b/SmartDeviceLink/public/SDLPermissionStatus.h
new file mode 100644
index 000000000..33f1534d6
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPermissionStatus.h
@@ -0,0 +1,32 @@
+// SDLPermissionStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration that describes possible permission states of a policy table entry. Used in nothing.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLPermissionStatus NS_TYPED_ENUM;
+
+/**
+ * permission: allowed
+ */
+extern SDLPermissionStatus const SDLPermissionStatusAllowed;
+
+/**
+ * permission: disallowed
+ */
+extern SDLPermissionStatus const SDLPermissionStatusDisallowed;
+
+/**
+ * permission: user disallowed
+ */
+extern SDLPermissionStatus const SDLPermissionStatusUserDisallowed;
+
+/**
+ * permission: user consent pending
+ */
+extern SDLPermissionStatus const SDLPermissionStatusUserConsentPending;
diff --git a/SmartDeviceLink/SDLPermissionStatus.m b/SmartDeviceLink/public/SDLPermissionStatus.m
index ff9654c46..ff9654c46 100644
--- a/SmartDeviceLink/SDLPermissionStatus.m
+++ b/SmartDeviceLink/public/SDLPermissionStatus.m
diff --git a/SmartDeviceLink/SDLPhoneCapability.h b/SmartDeviceLink/public/SDLPhoneCapability.h
index 5b9707e35..5b9707e35 100644
--- a/SmartDeviceLink/SDLPhoneCapability.h
+++ b/SmartDeviceLink/public/SDLPhoneCapability.h
diff --git a/SmartDeviceLink/SDLPhoneCapability.m b/SmartDeviceLink/public/SDLPhoneCapability.m
index 514b8e216..514b8e216 100644
--- a/SmartDeviceLink/SDLPhoneCapability.m
+++ b/SmartDeviceLink/public/SDLPhoneCapability.m
diff --git a/SmartDeviceLink/SDLPinchGesture.h b/SmartDeviceLink/public/SDLPinchGesture.h
index 81ca837ec..81ca837ec 100644
--- a/SmartDeviceLink/SDLPinchGesture.h
+++ b/SmartDeviceLink/public/SDLPinchGesture.h
diff --git a/SmartDeviceLink/SDLPinchGesture.m b/SmartDeviceLink/public/SDLPinchGesture.m
index d1ea6e63c..d1ea6e63c 100644
--- a/SmartDeviceLink/SDLPinchGesture.m
+++ b/SmartDeviceLink/public/SDLPinchGesture.m
diff --git a/SmartDeviceLink/public/SDLPowerModeQualificationStatus.h b/SmartDeviceLink/public/SDLPowerModeQualificationStatus.h
new file mode 100644
index 000000000..7f5002416
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPowerModeQualificationStatus.h
@@ -0,0 +1,30 @@
+// SDLPowerModeQualificationStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Describes the power mode qualification status. Used in ClusterModeStatus.
+ */
+typedef SDLEnum SDLPowerModeQualificationStatus NS_TYPED_ENUM;
+
+/**
+ An undefined status
+ */
+extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusUndefined;
+
+/**
+ An "evaluation in progress" status
+ */
+extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusEvaluationInProgress;
+
+/**
+ A "not defined" status
+ */
+extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusNotDefined;
+
+/**
+ An "ok" status
+ */
+extern SDLPowerModeQualificationStatus const SDLPowerModeQualificationStatusOk;
diff --git a/SmartDeviceLink/SDLPowerModeQualificationStatus.m b/SmartDeviceLink/public/SDLPowerModeQualificationStatus.m
index b1819776c..b1819776c 100644
--- a/SmartDeviceLink/SDLPowerModeQualificationStatus.m
+++ b/SmartDeviceLink/public/SDLPowerModeQualificationStatus.m
diff --git a/SmartDeviceLink/public/SDLPowerModeStatus.h b/SmartDeviceLink/public/SDLPowerModeStatus.h
new file mode 100644
index 000000000..cbb23dff5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPowerModeStatus.h
@@ -0,0 +1,55 @@
+// SDLPowerModeStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ The status of the car's power. Used in ClusterModeStatus.
+ */
+typedef SDLEnum SDLPowerModeStatus NS_TYPED_ENUM;
+
+/**
+ The key is not in the ignition, and the power is off
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusKeyOut;
+
+/**
+ The key is not in the ignition and it was just recently removed
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusKeyRecentlyOut;
+
+/**
+ The key is not in the ignition, but an approved key is available
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusKeyApproved;
+
+/**
+ We are in a post-accessory power situation
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusPostAccessory;
+
+/**
+ The car is in accessory power mode
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusAccessory;
+
+/**
+ We are in a post-ignition power situation
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusPostIgnition;
+
+/**
+ The ignition is on but the car is not yet running
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusIgnitionOn;
+
+/**
+ The ignition is on and the car is running
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusRunning;
+
+/**
+ We are in a crank power situation
+ */
+extern SDLPowerModeStatus const SDLPowerModeStatusCrank;
diff --git a/SmartDeviceLink/SDLPowerModeStatus.m b/SmartDeviceLink/public/SDLPowerModeStatus.m
index b1210d7a6..b1210d7a6 100644
--- a/SmartDeviceLink/SDLPowerModeStatus.m
+++ b/SmartDeviceLink/public/SDLPowerModeStatus.m
diff --git a/SmartDeviceLink/public/SDLPredefinedLayout.h b/SmartDeviceLink/public/SDLPredefinedLayout.h
new file mode 100644
index 000000000..034bdcbcc
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPredefinedLayout.h
@@ -0,0 +1,119 @@
+// SDLPredefinedLayout.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ A template layout an app uses to display information. The broad details of the layout are defined, but the details depend on the IVI system. Used in SetDisplayLayout.
+ */
+typedef SDLEnum SDLPredefinedLayout NS_TYPED_ENUM;
+
+/**
+ A default layout
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutDefault;
+
+/**
+ The default media layout
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutMedia;
+
+/**
+ The default non-media layout
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutNonMedia;
+
+/**
+ A media layout containing preset buttons
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutOnscreenPresets;
+
+/**
+ The default navigation layout with a fullscreen map
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutNavigationFullscreenMap;
+
+/**
+ A list layout used for navigation apps
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutNavigationList;
+
+/**
+ A keyboard layout used for navigation apps
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutNavigationKeyboard;
+
+/**
+ A layout with a single graphic on the left and text on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithText;
+
+/**
+ A layout with text on the left and a single graphic on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutTextWithGraphic;
+
+/**
+ A layout with only softbuttons placed in a tile layout
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutTilesOnly;
+
+/**
+ A layout with only soft buttons that only accept text
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsOnly;
+
+/**
+ A layout with a single graphic on the left and soft buttons in a tile layout on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTiles;
+
+/**
+ A layout with soft buttons in a tile layout on the left and a single graphic on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutTilesWithGraphic;
+
+/**
+ A layout with a single graphic on the left and both text and soft buttons on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextAndSoftButtons;
+
+/**
+ A layout with both text and soft buttons on the left and a single graphic on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutTextAndSoftButtonsWithGraphic;
+
+/**
+ A layout with a single graphic on the left and text-only soft buttons on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextButtons;
+
+/**
+ A layout with text-only soft buttons on the left and a single graphic on the right
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsWithGraphic;
+
+/**
+ A layout with a single large graphic and soft buttons
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicWithSoftButtons;
+
+/**
+ A layout with two graphics and soft buttons
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutDoubleGraphicWithSoftButtons;
+
+/**
+ A layout with only a single large graphic
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicOnly;
+
+
+/**
+ Custom root template allowing in-vehicle WebEngine applications with
+ appropriate permissions to show the application's own web view.
+
+ @since 7.0
+ */
+extern SDLPredefinedLayout const SDLPredefinedLayoutWebView;
diff --git a/SmartDeviceLink/public/SDLPredefinedLayout.m b/SmartDeviceLink/public/SDLPredefinedLayout.m
new file mode 100644
index 000000000..691be5e3d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPredefinedLayout.m
@@ -0,0 +1,27 @@
+// SDLPredefinedLayout.m
+//
+
+
+#import "SDLPredefinedLayout.h"
+
+SDLPredefinedLayout const SDLPredefinedLayoutDefault = @"DEFAULT";
+SDLPredefinedLayout const SDLPredefinedLayoutMedia = @"MEDIA";
+SDLPredefinedLayout const SDLPredefinedLayoutNonMedia = @"NON-MEDIA";
+SDLPredefinedLayout const SDLPredefinedLayoutOnscreenPresets = @"ONSCREEN_PRESETS";
+SDLPredefinedLayout const SDLPredefinedLayoutNavigationFullscreenMap = @"NAV_FULLSCREEN_MAP";
+SDLPredefinedLayout const SDLPredefinedLayoutNavigationList = @"NAV_LIST";
+SDLPredefinedLayout const SDLPredefinedLayoutNavigationKeyboard = @"NAV_KEYBOARD";
+SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithText = @"GRAPHIC_WITH_TEXT";
+SDLPredefinedLayout const SDLPredefinedLayoutTextWithGraphic = @"TEXT_WITH_GRAPHIC";
+SDLPredefinedLayout const SDLPredefinedLayoutTilesOnly = @"TILES_ONLY";
+SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsOnly = @"TEXTBUTTONS_ONLY";
+SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTiles = @"GRAPHIC_WITH_TILES";
+SDLPredefinedLayout const SDLPredefinedLayoutTilesWithGraphic = @"TILES_WITH_GRAPHIC";
+SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextAndSoftButtons = @"GRAPHIC_WITH_TEXT_AND_SOFTBUTTONS";
+SDLPredefinedLayout const SDLPredefinedLayoutTextAndSoftButtonsWithGraphic = @"TEXT_AND_SOFTBUTTONS_WITH_GRAPHIC";
+SDLPredefinedLayout const SDLPredefinedLayoutGraphicWithTextButtons = @"GRAPHIC_WITH_TEXTBUTTONS";
+SDLPredefinedLayout const SDLPredefinedLayoutTextButtonsWithGraphic = @"TEXTBUTTONS_WITH_GRAPHIC";
+SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicWithSoftButtons = @"LARGE_GRAPHIC_WITH_SOFTBUTTONS";
+SDLPredefinedLayout const SDLPredefinedLayoutDoubleGraphicWithSoftButtons = @"DOUBLE_GRAPHIC_WITH_SOFTBUTTONS";
+SDLPredefinedLayout const SDLPredefinedLayoutLargeGraphicOnly = @"LARGE_GRAPHIC_ONLY";
+SDLPredefinedLayout const SDLPredefinedLayoutWebView = @"WEB_VIEW";
diff --git a/SmartDeviceLink/SDLPredefinedWindows.h b/SmartDeviceLink/public/SDLPredefinedWindows.h
index d488673f8..d488673f8 100644
--- a/SmartDeviceLink/SDLPredefinedWindows.h
+++ b/SmartDeviceLink/public/SDLPredefinedWindows.h
diff --git a/SmartDeviceLink/public/SDLPrerecordedSpeech.h b/SmartDeviceLink/public/SDLPrerecordedSpeech.h
new file mode 100644
index 000000000..32612cccc
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPrerecordedSpeech.h
@@ -0,0 +1,35 @@
+// SDLPrerecordedSpeech.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Contains information about the speech capabilities on the SDL platform. Used in RegisterAppInterfaceResponse to indicate capability.
+ */
+typedef SDLEnum SDLPrerecordedSpeech NS_TYPED_ENUM;
+
+/**
+ A prerecorded help prompt
+ */
+extern SDLPrerecordedSpeech const SDLPrerecordedSpeechHelp;
+
+/**
+ A prerecorded initial prompt
+ */
+extern SDLPrerecordedSpeech const SDLPrerecordedSpeechInitial;
+
+/**
+ A prerecorded listen prompt is available
+ */
+extern SDLPrerecordedSpeech const SDLPrerecordedSpeechListen;
+
+/**
+ A prerecorded positive indicator noise is available
+ */
+extern SDLPrerecordedSpeech const SDLPrerecordedSpeechPositive;
+
+/**
+ A prerecorded negative indicator noise is available
+ */
+extern SDLPrerecordedSpeech const SDLPrerecordedSpeechNegative;
diff --git a/SmartDeviceLink/SDLPrerecordedSpeech.m b/SmartDeviceLink/public/SDLPrerecordedSpeech.m
index 0c3b63fe7..0c3b63fe7 100644
--- a/SmartDeviceLink/SDLPrerecordedSpeech.m
+++ b/SmartDeviceLink/public/SDLPrerecordedSpeech.m
diff --git a/SmartDeviceLink/SDLPresetBankCapabilities.h b/SmartDeviceLink/public/SDLPresetBankCapabilities.h
index a737616be..a737616be 100644
--- a/SmartDeviceLink/SDLPresetBankCapabilities.h
+++ b/SmartDeviceLink/public/SDLPresetBankCapabilities.h
diff --git a/SmartDeviceLink/SDLPresetBankCapabilities.m b/SmartDeviceLink/public/SDLPresetBankCapabilities.m
index 218a46285..218a46285 100644
--- a/SmartDeviceLink/SDLPresetBankCapabilities.m
+++ b/SmartDeviceLink/public/SDLPresetBankCapabilities.m
diff --git a/SmartDeviceLink/public/SDLPrimaryAudioSource.h b/SmartDeviceLink/public/SDLPrimaryAudioSource.h
new file mode 100644
index 000000000..c61b0dab9
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPrimaryAudioSource.h
@@ -0,0 +1,72 @@
+// SDLPrimaryAudioSource.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the current primary audio source of SDL (if selected). Used in DeviceStatus.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLPrimaryAudioSource NS_TYPED_ENUM;
+
+/**
+ * Currently no source selected
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceNoSourceSelected;
+
+/**
+ * USB is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceUSB;
+
+/**
+ * USB2 is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceUSB2;
+
+/**
+ * Bluetooth Stereo is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceBluetoothStereo;
+
+/**
+ * Line in is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceLineIn;
+
+/**
+ * iPod is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceIpod;
+
+/**
+ * Mobile app is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceMobileApp;
+
+/**
+ * @abstract CD is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceCD;
+
+/**
+ * @abstract Radio frequency AM is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceAM;
+
+/**
+ * @abstract Radio frequency FM is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceFM;
+
+/**
+ * @abstract Radio frequency XM is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceXM;
+
+/**
+ * @abstract Radio frequency DAB is current source
+ */
+extern SDLPrimaryAudioSource const SDLPrimaryAudioSourceDAB;
diff --git a/SmartDeviceLink/SDLPrimaryAudioSource.m b/SmartDeviceLink/public/SDLPrimaryAudioSource.m
index c9764cbfb..c9764cbfb 100644
--- a/SmartDeviceLink/SDLPrimaryAudioSource.m
+++ b/SmartDeviceLink/public/SDLPrimaryAudioSource.m
diff --git a/SmartDeviceLink/SDLProtocolConstants.h b/SmartDeviceLink/public/SDLProtocolConstants.h
index 6da05c02e..6da05c02e 100644
--- a/SmartDeviceLink/SDLProtocolConstants.h
+++ b/SmartDeviceLink/public/SDLProtocolConstants.h
diff --git a/SmartDeviceLink/SDLProtocolConstants.m b/SmartDeviceLink/public/SDLProtocolConstants.m
index c60de84dc..c60de84dc 100644
--- a/SmartDeviceLink/SDLProtocolConstants.m
+++ b/SmartDeviceLink/public/SDLProtocolConstants.m
diff --git a/SmartDeviceLink/SDLPublishAppService.h b/SmartDeviceLink/public/SDLPublishAppService.h
index d8a07c77d..d8a07c77d 100644
--- a/SmartDeviceLink/SDLPublishAppService.h
+++ b/SmartDeviceLink/public/SDLPublishAppService.h
diff --git a/SmartDeviceLink/SDLPublishAppService.m b/SmartDeviceLink/public/SDLPublishAppService.m
index dad78f11d..dad78f11d 100644
--- a/SmartDeviceLink/SDLPublishAppService.m
+++ b/SmartDeviceLink/public/SDLPublishAppService.m
diff --git a/SmartDeviceLink/SDLPublishAppServiceResponse.h b/SmartDeviceLink/public/SDLPublishAppServiceResponse.h
index 70f398e39..70f398e39 100644
--- a/SmartDeviceLink/SDLPublishAppServiceResponse.h
+++ b/SmartDeviceLink/public/SDLPublishAppServiceResponse.h
diff --git a/SmartDeviceLink/SDLPublishAppServiceResponse.m b/SmartDeviceLink/public/SDLPublishAppServiceResponse.m
index fb7449949..fb7449949 100644
--- a/SmartDeviceLink/SDLPublishAppServiceResponse.m
+++ b/SmartDeviceLink/public/SDLPublishAppServiceResponse.m
diff --git a/SmartDeviceLink/public/SDLPutFile.h b/SmartDeviceLink/public/SDLPutFile.h
new file mode 100644
index 000000000..40a4cc554
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPutFile.h
@@ -0,0 +1,124 @@
+// SDLPutFile.h
+//
+
+#import "SDLRPCRequest.h"
+
+#import "SDLFileType.h"
+
+/**
+ * Used to push a binary data onto the SDL module from a mobile device, such as icons and album art.
+ *
+ * Since SmartDeviceLink 2.0
+ * @see SDLDeleteFile, SDLListFiles
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLPutFile : SDLRPCRequest
+
+/**
+ * Init
+ *
+ * @return A SDLPutFile object
+ */
+- (instancetype)init;
+
+/**
+ * Convenience init for creating a putfile with a name and file format.
+ *
+ * @param fileName The file's name
+ * @param fileType The file's format
+ * @return A SDLPutFile object
+ */
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType;
+
+/**
+ * Convenience init for creating a putfile with a name, file format, and persistance.
+ *
+ * @param fileName The file's name
+ * @param fileType The file's format
+ * @param persistentFile Whether or not the image should persist between ignition cycles
+ * @return A SDLPutFile object
+ */
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile;
+
+/**
+ * Convenience init for creating a putfile that is part of a multiple frame payload.
+ *
+ * @param fileName The file's name
+ * @param fileType The file's format
+ * @param persistentFile Whether or not the image should persist between ignition cycles
+ * @param systemFile Whether or not the file is meant to be passed through Core to elsewhere on the system
+ * @param offset Offset in bytes for resuming partial data chunks
+ * @param length Length in bytes for resuming partial data chunks
+ * @param crc Checksum of the bulk data. Used by Core to check data integrity
+ * @return A SDLPutFile object
+ */
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length crc:(UInt64)crc;
+
+/**
+ * Convenience init for creating a putfile that is part of a multiple frame payload. A CRC checksum is calculated for the bulk data.
+ *
+ * @param fileName The file's name
+ * @param fileType The file's format
+ * @param persistentFile Whether or not the image should persist between ignition cycles
+ * @param systemFile Whether or not the file is meant to be passed through Core to elsewhere on the system
+ * @param offset Offset in bytes for resuming partial data chunks
+ * @param length Length in bytes for resuming partial data chunks
+ * @param bulkData Data being sent in the putfile
+ * @return A SDLPutFile object
+ */
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length bulkData:(NSData *)bulkData;
+
+/**
+* File reference name
+*
+* Required, max length 255 characters
+*/
+@property (strong, nonatomic) NSString *sdlFileName;
+
+/**
+ * A FileType value representing a selected file type
+ *
+ * Required
+ */
+@property (strong, nonatomic) SDLFileType fileType;
+
+/**
+ * A value to indicates if the file is meant to persist between sessions / ignition cycles. If set to TRUE, then the system will aim to persist this file through session / cycles. While files with this designation will have priority over others, they are subject to deletion by the system at any time. In the event of automatic deletion by the system, the app will receive a rejection and have to resend the file. If omitted, the value will be set to false.
+ *
+ * Boolean, Optional, default = NO
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *persistentFile;
+
+/**
+ * Indicates if the file is meant to be passed through core to elsewhere on the system. If set to TRUE, then the system will instead pass the data thru as it arrives to a predetermined area outside of core.
+ *
+ * Boolean, Optional, default = NO
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *systemFile;
+
+/**
+ * Offset in bytes for resuming partial data chunks.
+ *
+ * Integer, Optional, 0 - 100,000,000,000
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *offset;
+
+/**
+ * Length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded
+ *
+ * Integer, Optional, 0 - 100,000,000,000
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *length;
+
+/**
+ * Additional CRC32 checksum to protect data integrity up to 512 Mbits.
+ *
+ * Integer, Optional, 0 - 4,294,967,295
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *crc;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLPutFile.m b/SmartDeviceLink/public/SDLPutFile.m
new file mode 100644
index 000000000..eb1b6af6d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLPutFile.m
@@ -0,0 +1,146 @@
+// SDLPutFile.m
+//
+
+#import "SDLPutFile.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+#import <zlib.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLPutFile
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNamePutFile]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.sdlFileName = fileName;
+ self.fileType = fileType;
+
+ return self;
+}
+
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile {
+ self = [self initWithFileName:fileName fileType:fileType];
+ if (!self) {
+ return nil;
+ }
+
+ self.persistentFile = @(persistentFile);
+
+ return self;
+}
+
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length crc:(UInt64)crc {
+ self = [self initWithFileName:fileName fileType:fileType persistentFile:persistentFile];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemFile = @(systemFile);
+ self.offset = @(offset);
+ self.length = @(length);
+ self.crc = crc == 0 ? nil : @(crc);
+
+ return self;
+}
+
+- (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType persistentFile:(BOOL)persistentFile systemFile:(BOOL)systemFile offset:(UInt32)offset length:(UInt32)length bulkData:(NSData *)bulkData {
+
+ self = [self initWithFileName:fileName fileType:fileType persistentFile:persistentFile systemFile:systemFile offset:offset length:length crc:[self.class sdl_getCRC32ChecksumForBulkData:bulkData]];
+ if (!self) {
+ return nil;
+ }
+
+ self.bulkData = bulkData;
+
+ return self;
+}
+
+#pragma mark - Getters and Setters
+
+- (void)setSdlFileName:(NSString *)sdlFileName {
+ [self.parameters sdl_setObject:sdlFileName forName:SDLRPCParameterNameSyncFileName];
+}
+
+- (NSString *)sdlFileName {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error];
+}
+
+- (void)setFileType:(SDLFileType)fileType {
+ [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType];
+}
+
+- (SDLFileType)fileType {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:&error];
+}
+
+- (void)setPersistentFile:(nullable NSNumber<SDLBool> *)persistentFile {
+ [self.parameters sdl_setObject:persistentFile forName:SDLRPCParameterNamePersistentFile];
+}
+
+- (nullable NSNumber<SDLBool> *)persistentFile {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePersistentFile ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSystemFile:(nullable NSNumber<SDLBool> *)systemFile {
+ [self.parameters sdl_setObject:systemFile forName:SDLRPCParameterNameSystemFile];
+}
+
+- (nullable NSNumber<SDLBool> *)systemFile {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemFile ofClass:NSNumber.class error:nil];
+}
+
+- (void)setOffset:(nullable NSNumber<SDLUInt> *)offset {
+ [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset];
+}
+
+- (nullable NSNumber<SDLUInt> *)offset {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil];
+}
+
+- (void)setLength:(nullable NSNumber<SDLUInt> *)length {
+ [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength];
+}
+
+- (nullable NSNumber<SDLUInt> *)length {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCrc:(nullable NSNumber<SDLUInt> *)crc {
+ [self.parameters sdl_setObject:crc forName:SDLRPCParameterNameCRC];
+}
+
+- (nullable NSNumber<SDLUInt> *)crc {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCRC ofClass:NSNumber.class error:nil];
+}
+
+#pragma mark - Helpers
+
++ (unsigned long)sdl_getCRC32ChecksumForBulkData:(NSData *)data {
+ if (data.length == 0) {
+ return 0;
+ }
+
+ return crc32(0, data.bytes, (uInt)data.length);
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLPutFileResponse.h b/SmartDeviceLink/public/SDLPutFileResponse.h
index 0c8772125..0c8772125 100644
--- a/SmartDeviceLink/SDLPutFileResponse.h
+++ b/SmartDeviceLink/public/SDLPutFileResponse.h
diff --git a/SmartDeviceLink/SDLPutFileResponse.m b/SmartDeviceLink/public/SDLPutFileResponse.m
index aecbf9bb1..aecbf9bb1 100644
--- a/SmartDeviceLink/SDLPutFileResponse.m
+++ b/SmartDeviceLink/public/SDLPutFileResponse.m
diff --git a/SmartDeviceLink/SDLRDSData.h b/SmartDeviceLink/public/SDLRDSData.h
index fc5b92bf7..fc5b92bf7 100755
--- a/SmartDeviceLink/SDLRDSData.h
+++ b/SmartDeviceLink/public/SDLRDSData.h
diff --git a/SmartDeviceLink/SDLRDSData.m b/SmartDeviceLink/public/SDLRDSData.m
index 2d177e6aa..2d177e6aa 100755
--- a/SmartDeviceLink/SDLRDSData.m
+++ b/SmartDeviceLink/public/SDLRDSData.m
diff --git a/SmartDeviceLink/SDLRGBColor.h b/SmartDeviceLink/public/SDLRGBColor.h
index 3702b1b05..3702b1b05 100644
--- a/SmartDeviceLink/SDLRGBColor.h
+++ b/SmartDeviceLink/public/SDLRGBColor.h
diff --git a/SmartDeviceLink/SDLRGBColor.m b/SmartDeviceLink/public/SDLRGBColor.m
index 1c611e076..1c611e076 100644
--- a/SmartDeviceLink/SDLRGBColor.m
+++ b/SmartDeviceLink/public/SDLRGBColor.m
diff --git a/SmartDeviceLink/public/SDLRPCFunctionNames.h b/SmartDeviceLink/public/SDLRPCFunctionNames.h
new file mode 100644
index 000000000..22384942b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRPCFunctionNames.h
@@ -0,0 +1,292 @@
+//
+// SDLRPCFunctionNames.h
+// SmartDeviceLink
+//
+// Created by Nicole on 3/5/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * All RPC request / response / notification names
+ */
+typedef SDLEnum SDLRPCFunctionName NS_TYPED_ENUM;
+
+/// Function name for an AddCommand RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameAddCommand;
+
+/// Function name for an AddSubMenu RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameAddSubMenu;
+
+/// Function name for an Alert RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameAlert;
+
+/// Function name for an AlertManeuver RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameAlertManeuver;
+
+/// Function name for a ButtonPress RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameButtonPress;
+
+/// Function name for a CancelInteraction RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameCancelInteraction;
+
+/// Function name for a ChangeRegistration RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameChangeRegistration;
+
+/// Function name for a CloseApplication RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameCloseApplication;
+
+/// Function name for a CreateInteractionChoiceSet RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameCreateInteractionChoiceSet;
+
+/// Function name for a DeleteCommand RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteCommand;
+
+/// Function name for a DeleteFile RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteFile;
+
+/// Function name for a DeleteInteractionChoiceSet RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteInteractionChoiceSet;
+
+/// Function name for a DeleteSubMenu RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteSubMenu;
+
+/// Function name for a DiagnosticMessage RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameDiagnosticMessage;
+
+/// Function name for a DialNumber RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameDialNumber;
+
+/// Function name for an CreateInteractionChoiceSet RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameEncodedSyncPData __deprecated;
+
+/// Function name for an EndAudioPassThru RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameEndAudioPassThru;
+
+/// Function name for an GenricResponse Response RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGenericResponse;
+
+/// Function name for an CreateInteractionChoiceSet RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetAppServiceData;
+
+/// Function name for a GetDTCs RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetDTCs;
+
+/// Function name for a GetFile RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetFile;
+
+/// Function name for a GetCloudAppProperties RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetCloudAppProperties;
+
+/// Function name for a GetInteriorVehicleData RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleData;
+
+/// Function name for a GetInteriorVehicleDataConsent RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleDataConsent;
+
+/// Function name for a GetSystemCapability RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetSystemCapability;
+
+/// Function name for a GetVehicleData RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetVehicleData;
+
+/// Function name for a GetWayPoints RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameGetWayPoints;
+
+/// Function name for a ListFiles RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameListFiles;
+
+/// Function name for an OnAppInterfaceUnregistered notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnAppInterfaceUnregistered;
+
+/// Function name for an OnAppServiceData notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnAppServiceData;
+
+/// Function name for an OnAudioPassThru notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnAudioPassThru;
+
+/// Function name for an OnButtonEvent notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnButtonEvent;
+
+/// Function name for an OnButtonPress notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnButtonPress;
+
+/// Function name for an OnCommand notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnCommand;
+
+/// Function name for an OnDriverDistraction notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnDriverDistraction;
+
+/// Function name for an OnEncodedSyncPData notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnEncodedSyncPData __deprecated;
+
+/// Function name for an OnHashChange notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnHashChange;
+
+/// Function name for an OnHMIStatus notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnHMIStatus;
+
+/// Function name for an OnInteriorVehicleData notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnInteriorVehicleData;
+
+/// Function name for an OnKeyboardInput notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnKeyboardInput;
+
+/// Function name for an OnLanguageChange notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnLanguageChange;
+
+/// Function name for an OnLockScreenStatus notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnLockScreenStatus;
+
+/// Function name for an OnPermissionsChange notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnPermissionsChange;
+
+/// Function name for an OnRCStatus notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnRCStatus;
+
+/// Function name for an SubtleAlertPressed notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnSubtleAlertPressed;
+
+/// Function name for an OnSyncPData notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnSyncPData __deprecated;
+
+/// Function name for an OnSystemCapabilityUpdated notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnSystemCapabilityUpdated;
+
+/// Function name for an OnSystemRequest notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnSystemRequest;
+
+/// Function name for an OnTBTClientState notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnTBTClientState;
+
+/// Function name for an OnTouchEvent notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnTouchEvent;
+
+/// Function name for an OnUpdateFile notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnUpdateFile;
+
+/// Function name for an OnUpdateSubMenu notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnUpdateSubMenu;
+
+/// Function name for an OnVehicleData notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnVehicleData;
+
+/// Function name for an OnWayPointChange notification RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameOnWayPointChange;
+
+/// Function name for a PerformAppServiceInteraction RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNamePerformAppServiceInteraction;
+
+/// Function name for a PerformAppServiceInteraction RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNamePerformAudioPassThru;
+
+/// Function name for a PerformInteraction RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNamePerformInteraction;
+
+/// Function name for a PublishAppService RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNamePublishAppService;
+
+/// Function name for a PutFile RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNamePutFile;
+
+/// Function name for a ReadDID RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameReadDID;
+
+/// Function name for a ReleaseInteriorVehicleDataModule RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameReleaseInteriorVehicleDataModule;
+
+/// Function name for a RegisterAppInterface RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameRegisterAppInterface;
+
+/// Function name for a Reserved RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameReserved;
+
+/// Function name for a ResetGlobalProperties RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameResetGlobalProperties;
+
+/// Function name for a ScrollableMessage RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameScrollableMessage;
+
+/// Function name for a SendHapticData RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSendHapticData;
+
+/// Function name for a SendLocation RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSendLocation;
+
+/// Function name for a SetAppIcon RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSetAppIcon;
+
+/// Function name for a SetCloudProperties RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSetCloudAppProperties;
+
+/// Function name for a SetDisplayLayout RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSetDisplayLayout;
+
+/// Function name for a SetGlobalProperties RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSetGlobalProperties;
+
+/// Function name for a SetInteriorVehicleData RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSetInteriorVehicleData;
+
+/// Function name for a SetMediaClockTimer RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSetMediaClockTimer;
+
+/// Function name for a Show RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameShow;
+
+/// Function name for a ShowAppMenu RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameShowAppMenu;
+
+/// Function name for a ShowConstantTBT RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameShowConstantTBT;
+
+/// Function name for a Slider RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSlider;
+
+/// Function name for a Speak RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSpeak;
+
+/// Function name for a SubscribeButton RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSubscribeButton;
+
+/// Function name for a SubscribeVehicleData RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSubscribeVehicleData;
+
+/// Function name for a SubscribeWayPoints RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSubscribeWayPoints;
+
+/// Function name for a SubtleAlert RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSubtleAlert;
+
+/// Function name for a SyncPData RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSyncPData __deprecated;
+
+/// Function name for a SystemRequest RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameSystemRequest;
+
+/// Function name for an UnpublishAppService RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameUnpublishAppService;
+
+/// Function name for an UnregisterAppInterface RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameUnregisterAppInterface;
+
+/// Function name for an UnsubscribeButton RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeButton;
+
+/// Function name for an UnsubscribeVehicleData RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeVehicleData;
+
+/// Function name for an UnsubscribeWayPoints RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeWayPoints;
+
+/// Function name for an UpdateTurnList RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameUpdateTurnList;
+
+/// Function name for a CreateWindow RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameCreateWindow;
+
+/// Function name for a DeleteWindow RPC
+extern SDLRPCFunctionName const SDLRPCFunctionNameDeleteWindow;
+
+
diff --git a/SmartDeviceLink/public/SDLRPCFunctionNames.m b/SmartDeviceLink/public/SDLRPCFunctionNames.m
new file mode 100644
index 000000000..a0a0c4754
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRPCFunctionNames.m
@@ -0,0 +1,102 @@
+//
+// SDLRPCFunctionNames.m
+// SmartDeviceLink
+//
+// Created by Nicole on 3/5/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCFunctionNames.h"
+
+SDLRPCFunctionName const SDLRPCFunctionNameAddCommand = @"AddCommand";
+SDLRPCFunctionName const SDLRPCFunctionNameAddSubMenu = @"AddSubMenu";
+SDLRPCFunctionName const SDLRPCFunctionNameAlert = @"Alert";
+SDLRPCFunctionName const SDLRPCFunctionNameAlertManeuver = @"AlertManeuver";
+SDLRPCFunctionName const SDLRPCFunctionNameButtonPress = @"ButtonPress";
+SDLRPCFunctionName const SDLRPCFunctionNameCancelInteraction = @"CancelInteraction";
+SDLRPCFunctionName const SDLRPCFunctionNameChangeRegistration = @"ChangeRegistration";
+SDLRPCFunctionName const SDLRPCFunctionNameCloseApplication = @"CloseApplication";
+SDLRPCFunctionName const SDLRPCFunctionNameCreateInteractionChoiceSet = @"CreateInteractionChoiceSet";
+SDLRPCFunctionName const SDLRPCFunctionNameDeleteCommand = @"DeleteCommand";
+SDLRPCFunctionName const SDLRPCFunctionNameDeleteFile = @"DeleteFile";
+SDLRPCFunctionName const SDLRPCFunctionNameDeleteInteractionChoiceSet = @"DeleteInteractionChoiceSet";
+SDLRPCFunctionName const SDLRPCFunctionNameDeleteSubMenu = @"DeleteSubMenu";
+SDLRPCFunctionName const SDLRPCFunctionNameDiagnosticMessage = @"DiagnosticMessage";
+SDLRPCFunctionName const SDLRPCFunctionNameDialNumber = @"DialNumber";
+SDLRPCFunctionName const SDLRPCFunctionNameEncodedSyncPData = @"EncodedSyncPData";
+SDLRPCFunctionName const SDLRPCFunctionNameEndAudioPassThru = @"EndAudioPassThru";
+SDLRPCFunctionName const SDLRPCFunctionNameGenericResponse = @"GenericResponse";
+SDLRPCFunctionName const SDLRPCFunctionNameGetAppServiceData = @"GetAppServiceData";
+SDLRPCFunctionName const SDLRPCFunctionNameGetDTCs = @"GetDTCs";
+SDLRPCFunctionName const SDLRPCFunctionNameGetFile = @"GetFile";
+SDLRPCFunctionName const SDLRPCFunctionNameGetCloudAppProperties = @"GetCloudAppProperties";
+SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleData = @"GetInteriorVehicleData";
+SDLRPCFunctionName const SDLRPCFunctionNameGetInteriorVehicleDataConsent = @"GetInteriorVehicleDataConsent";
+SDLRPCFunctionName const SDLRPCFunctionNameGetSystemCapability = @"GetSystemCapability";
+SDLRPCFunctionName const SDLRPCFunctionNameGetVehicleData = @"GetVehicleData";
+SDLRPCFunctionName const SDLRPCFunctionNameGetWayPoints = @"GetWayPoints";
+SDLRPCFunctionName const SDLRPCFunctionNameListFiles = @"ListFiles";
+SDLRPCFunctionName const SDLRPCFunctionNameOnAppInterfaceUnregistered = @"OnAppInterfaceUnregistered";
+SDLRPCFunctionName const SDLRPCFunctionNameOnAppServiceData = @"OnAppServiceData";
+SDLRPCFunctionName const SDLRPCFunctionNameOnAudioPassThru = @"OnAudioPassThru";
+SDLRPCFunctionName const SDLRPCFunctionNameOnButtonEvent = @"OnButtonEvent";
+SDLRPCFunctionName const SDLRPCFunctionNameOnButtonPress = @"OnButtonPress";
+SDLRPCFunctionName const SDLRPCFunctionNameOnCommand = @"OnCommand";
+SDLRPCFunctionName const SDLRPCFunctionNameOnDriverDistraction = @"OnDriverDistraction";
+SDLRPCFunctionName const SDLRPCFunctionNameOnEncodedSyncPData = @"OnEncodedSyncPData";
+SDLRPCFunctionName const SDLRPCFunctionNameOnHashChange = @"OnHashChange";
+SDLRPCFunctionName const SDLRPCFunctionNameOnHMIStatus = @"OnHMIStatus";
+SDLRPCFunctionName const SDLRPCFunctionNameOnInteriorVehicleData = @"OnInteriorVehicleData";
+SDLRPCFunctionName const SDLRPCFunctionNameOnKeyboardInput = @"OnKeyboardInput";
+SDLRPCFunctionName const SDLRPCFunctionNameOnLanguageChange = @"OnLanguageChange";
+SDLRPCFunctionName const SDLRPCFunctionNameOnLockScreenStatus = @"OnLockScreenStatus";
+SDLRPCFunctionName const SDLRPCFunctionNameOnPermissionsChange = @"OnPermissionsChange";
+SDLRPCFunctionName const SDLRPCFunctionNameOnRCStatus = @"OnRCStatus";
+SDLRPCFunctionName const SDLRPCFunctionNameOnSubtleAlertPressed = @"OnSubtleAlertPressed";
+SDLRPCFunctionName const SDLRPCFunctionNameOnSyncPData = @"OnSyncPData";
+SDLRPCFunctionName const SDLRPCFunctionNameOnSystemCapabilityUpdated = @"OnSystemCapabilityUpdated";
+SDLRPCFunctionName const SDLRPCFunctionNameOnSystemRequest = @"OnSystemRequest";
+SDLRPCFunctionName const SDLRPCFunctionNameOnTBTClientState = @"OnTBTClientState";
+SDLRPCFunctionName const SDLRPCFunctionNameOnTouchEvent = @"OnTouchEvent";
+SDLRPCFunctionName const SDLRPCFunctionNameOnUpdateFile = @"OnUpdateFile";
+SDLRPCFunctionName const SDLRPCFunctionNameOnUpdateSubMenu = @"OnUpdateSubMenu";
+SDLRPCFunctionName const SDLRPCFunctionNameOnVehicleData = @"OnVehicleData";
+SDLRPCFunctionName const SDLRPCFunctionNameOnWayPointChange = @"OnWayPointChange";
+SDLRPCFunctionName const SDLRPCFunctionNamePerformAppServiceInteraction = @"PerformAppServiceInteraction";
+SDLRPCFunctionName const SDLRPCFunctionNamePerformAudioPassThru = @"PerformAudioPassThru";
+SDLRPCFunctionName const SDLRPCFunctionNamePerformInteraction = @"PerformInteraction";
+SDLRPCFunctionName const SDLRPCFunctionNamePublishAppService = @"PublishAppService";
+SDLRPCFunctionName const SDLRPCFunctionNamePutFile = @"PutFile";
+SDLRPCFunctionName const SDLRPCFunctionNameReadDID = @"ReadDID";
+SDLRPCFunctionName const SDLRPCFunctionNameReleaseInteriorVehicleDataModule = @"ReleaseInteriorVehicleDataModule";
+SDLRPCFunctionName const SDLRPCFunctionNameRegisterAppInterface = @"RegisterAppInterface";
+SDLRPCFunctionName const SDLRPCFunctionNameReserved = @"reserved";
+SDLRPCFunctionName const SDLRPCFunctionNameResetGlobalProperties = @"ResetGlobalProperties";
+SDLRPCFunctionName const SDLRPCFunctionNameScrollableMessage = @"ScrollableMessage";
+SDLRPCFunctionName const SDLRPCFunctionNameSendHapticData = @"SendHapticData";
+SDLRPCFunctionName const SDLRPCFunctionNameSendLocation = @"SendLocation";
+SDLRPCFunctionName const SDLRPCFunctionNameSetAppIcon = @"SetAppIcon";
+SDLRPCFunctionName const SDLRPCFunctionNameSetCloudAppProperties = @"SetCloudAppProperties";
+SDLRPCFunctionName const SDLRPCFunctionNameSetDisplayLayout = @"SetDisplayLayout";
+SDLRPCFunctionName const SDLRPCFunctionNameSetGlobalProperties = @"SetGlobalProperties";
+SDLRPCFunctionName const SDLRPCFunctionNameSetInteriorVehicleData = @"SetInteriorVehicleData";
+SDLRPCFunctionName const SDLRPCFunctionNameSetMediaClockTimer = @"SetMediaClockTimer";
+SDLRPCFunctionName const SDLRPCFunctionNameShow = @"Show";
+SDLRPCFunctionName const SDLRPCFunctionNameShowAppMenu = @"ShowAppMenu";
+SDLRPCFunctionName const SDLRPCFunctionNameShowConstantTBT = @"ShowConstantTBT";
+SDLRPCFunctionName const SDLRPCFunctionNameSlider = @"Slider";
+SDLRPCFunctionName const SDLRPCFunctionNameSpeak = @"Speak";
+SDLRPCFunctionName const SDLRPCFunctionNameSubscribeButton = @"SubscribeButton";
+SDLRPCFunctionName const SDLRPCFunctionNameSubscribeVehicleData = @"SubscribeVehicleData";
+SDLRPCFunctionName const SDLRPCFunctionNameSubscribeWayPoints = @"SubscribeWayPoints";
+SDLRPCFunctionName const SDLRPCFunctionNameSubtleAlert = @"SubtleAlert";
+SDLRPCFunctionName const SDLRPCFunctionNameSyncPData = @"SyncPData";
+SDLRPCFunctionName const SDLRPCFunctionNameSystemRequest = @"SystemRequest";
+SDLRPCFunctionName const SDLRPCFunctionNameUnpublishAppService = @"UnpublishAppService";
+SDLRPCFunctionName const SDLRPCFunctionNameUnregisterAppInterface = @"UnregisterAppInterface";
+SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeButton = @"UnsubscribeButton";
+SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeVehicleData = @"UnsubscribeVehicleData";
+SDLRPCFunctionName const SDLRPCFunctionNameUnsubscribeWayPoints = @"UnsubscribeWayPoints";
+SDLRPCFunctionName const SDLRPCFunctionNameUpdateTurnList = @"UpdateTurnList";
+SDLRPCFunctionName const SDLRPCFunctionNameCreateWindow = @"CreateWindow";
+SDLRPCFunctionName const SDLRPCFunctionNameDeleteWindow = @"DeleteWindow";
diff --git a/SmartDeviceLink/public/SDLRPCMessage.h b/SmartDeviceLink/public/SDLRPCMessage.h
new file mode 100644
index 000000000..9378f67eb
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRPCMessage.h
@@ -0,0 +1,60 @@
+// SDLRPCMessage.h
+//
+
+#import "SDLEnum.h"
+
+#import "SDLRPCStruct.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Parent class of all RPC messages.
+///
+/// Contains basic information about an RPC message.
+@interface SDLRPCMessage : SDLRPCStruct <NSCopying>
+
+/**
+ * Convenience init
+ *
+ * @param name The name of the message
+ * @return A SDLRPCMessage object
+ */
+- (instancetype)initWithName:(NSString *)name __deprecated_msg("This is not intended to be a public facing API");
+
+/**
+ * Sets the function name.
+ *
+ * @param functionName The function name
+ */
+- (void)setFunctionName:(nullable NSString *)functionName __deprecated_msg("This is not intended to be a public facing API");
+
+/**
+ * Sets a key-value pair using the function name as the key.
+ *
+ * @param functionName The name for the key
+ * @param value The value associated with the function name
+ */
+- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value __deprecated_msg("This is not intended to be a public facing API");
+
+/**
+ * The data in the message
+ */
+@property (nullable, strong, nonatomic) NSData *bulkData;
+
+/**
+ * The name of the message
+ */
+@property (strong, nonatomic, readonly) NSString *name;
+
+/**
+ The JSON-RPC parameters
+ */
+@property (strong, nonatomic, readonly) NSMutableDictionary<NSString *, id> *parameters;
+
+/**
+ * The type of data in the message
+ */
+@property (strong, nonatomic, readonly) NSString *messageType;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRPCMessage.m b/SmartDeviceLink/public/SDLRPCMessage.m
new file mode 100644
index 000000000..b71e1dec1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRPCMessage.m
@@ -0,0 +1,94 @@
+// SDLRPCMessage.m
+//
+
+
+#import "SDLRPCMessage.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLRPCMessage ()
+
+@property (strong, nonatomic, readwrite) NSString *messageType;
+@property (strong, nonatomic) NSMutableDictionary<NSString *, id> *function;
+
+@end
+
+
+@implementation SDLRPCMessage
+
+- (instancetype)initWithName:(NSString *)name {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _function = [NSMutableDictionary dictionaryWithCapacity:3];
+ _parameters = [NSMutableDictionary dictionary];
+ _messageType = SDLRPCParameterNameRequest;
+ self.store[_messageType] = _function;
+
+ _function[SDLRPCParameterNameParameters] = _parameters;
+ _function[SDLRPCParameterNameOperationName] = name;
+
+ return self;
+}
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-implementations"
+- (instancetype)initWithDictionary:(NSDictionary *)dict {
+ self = [super initWithDictionary:dict];
+ if (!self) {
+ return nil;
+ }
+
+ NSEnumerator *enumerator = [self.store keyEnumerator];
+ while (_messageType = [enumerator nextObject]) {
+ if (![_messageType isEqualToString:SDLRPCParameterNameBulkData]) {
+ break;
+ }
+ }
+
+ if (_messageType != nil) {
+ self.store[_messageType] = [self.store[_messageType] mutableCopy];
+ _function = self.store[_messageType];
+
+ _function[SDLRPCParameterNameParameters] = [_function[SDLRPCParameterNameParameters] mutableCopy];
+ _parameters = _function[SDLRPCParameterNameParameters];
+ }
+
+ _bulkData = dict[SDLRPCParameterNameBulkData];
+
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (void)setFunctionName:(nullable NSString *)functionName {
+ [_function sdl_setObject:functionName forName:SDLRPCParameterNameOperationName];
+}
+
+- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value {
+ [_parameters sdl_setObject:value forName:functionName];
+}
+
+- (NSString *)name {
+ return [_function sdl_objectForName:SDLRPCParameterNameOperationName ofClass:NSString.class error:nil];
+}
+
+- (NSString *)description {
+ NSMutableString *description = [NSMutableString stringWithFormat:@"%@ (%@)\n%@", self.name, self.messageType, self.parameters];
+
+ return description;
+}
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLRPCMessage *newMessage = [[self.class allocWithZone:zone] initWithDictionary:self.store];
+
+ return newMessage;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRPCMessageType.h b/SmartDeviceLink/public/SDLRPCMessageType.h
new file mode 100644
index 000000000..e0ca142ac
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRPCMessageType.h
@@ -0,0 +1,32 @@
+// SDLRPCMessageType.h
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLEnum.h"
+
+/**
+ The type of RPC message
+ */
+typedef NS_ENUM(Byte, SDLRPCMessageType) {
+ /// A request that will require a response
+ SDLRPCMessageTypeRequest = 0,
+
+ /// A response to a request
+ SDLRPCMessageTypeResponse,
+
+ /// A message that does not have a response
+ SDLRPCMessageTypeNotification
+};
+
+/// A type of RPC message
+typedef SDLEnum SDLRPCMessageTypeName NS_TYPED_ENUM;
+
+/// A request that will require a response
+extern SDLRPCMessageTypeName const SDLRPCMessageTypeNameRequest;
+
+/// A response to a request
+extern SDLRPCMessageTypeName const SDLRPCMessageTypeNameResponse;
+
+/// A message that does not have a response
+extern SDLRPCMessageTypeName const SDLRPCMessageTypeNameNotification;
diff --git a/SmartDeviceLink/SDLRPCMessageType.m b/SmartDeviceLink/public/SDLRPCMessageType.m
index 365cd26ef..365cd26ef 100644
--- a/SmartDeviceLink/SDLRPCMessageType.m
+++ b/SmartDeviceLink/public/SDLRPCMessageType.m
diff --git a/SmartDeviceLink/SDLRPCNotification.h b/SmartDeviceLink/public/SDLRPCNotification.h
index 269fdc7a6..269fdc7a6 100644
--- a/SmartDeviceLink/SDLRPCNotification.h
+++ b/SmartDeviceLink/public/SDLRPCNotification.h
diff --git a/SmartDeviceLink/SDLRPCNotification.m b/SmartDeviceLink/public/SDLRPCNotification.m
index fa6ca7eec..fa6ca7eec 100644
--- a/SmartDeviceLink/SDLRPCNotification.m
+++ b/SmartDeviceLink/public/SDLRPCNotification.m
diff --git a/SmartDeviceLink/SDLRPCNotificationNotification.h b/SmartDeviceLink/public/SDLRPCNotificationNotification.h
index 8e0d9a616..8e0d9a616 100644
--- a/SmartDeviceLink/SDLRPCNotificationNotification.h
+++ b/SmartDeviceLink/public/SDLRPCNotificationNotification.h
diff --git a/SmartDeviceLink/SDLRPCNotificationNotification.m b/SmartDeviceLink/public/SDLRPCNotificationNotification.m
index 430269d8d..430269d8d 100644
--- a/SmartDeviceLink/SDLRPCNotificationNotification.m
+++ b/SmartDeviceLink/public/SDLRPCNotificationNotification.m
diff --git a/SmartDeviceLink/SDLRPCPermissionStatus.h b/SmartDeviceLink/public/SDLRPCPermissionStatus.h
index 72a471443..72a471443 100644
--- a/SmartDeviceLink/SDLRPCPermissionStatus.h
+++ b/SmartDeviceLink/public/SDLRPCPermissionStatus.h
diff --git a/SmartDeviceLink/SDLRPCPermissionStatus.m b/SmartDeviceLink/public/SDLRPCPermissionStatus.m
index 7c6a8d00a..7c6a8d00a 100644
--- a/SmartDeviceLink/SDLRPCPermissionStatus.m
+++ b/SmartDeviceLink/public/SDLRPCPermissionStatus.m
diff --git a/SmartDeviceLink/SDLRPCRequest.h b/SmartDeviceLink/public/SDLRPCRequest.h
index e171c0907..e171c0907 100644
--- a/SmartDeviceLink/SDLRPCRequest.h
+++ b/SmartDeviceLink/public/SDLRPCRequest.h
diff --git a/SmartDeviceLink/SDLRPCRequest.m b/SmartDeviceLink/public/SDLRPCRequest.m
index 445bace56..445bace56 100644
--- a/SmartDeviceLink/SDLRPCRequest.m
+++ b/SmartDeviceLink/public/SDLRPCRequest.m
diff --git a/SmartDeviceLink/SDLRPCRequestNotification.h b/SmartDeviceLink/public/SDLRPCRequestNotification.h
index 248358e0a..248358e0a 100644
--- a/SmartDeviceLink/SDLRPCRequestNotification.h
+++ b/SmartDeviceLink/public/SDLRPCRequestNotification.h
diff --git a/SmartDeviceLink/SDLRPCRequestNotification.m b/SmartDeviceLink/public/SDLRPCRequestNotification.m
index 4ac6250c6..4ac6250c6 100644
--- a/SmartDeviceLink/SDLRPCRequestNotification.m
+++ b/SmartDeviceLink/public/SDLRPCRequestNotification.m
diff --git a/SmartDeviceLink/SDLRPCResponse.h b/SmartDeviceLink/public/SDLRPCResponse.h
index 4e944a05e..4e944a05e 100644
--- a/SmartDeviceLink/SDLRPCResponse.h
+++ b/SmartDeviceLink/public/SDLRPCResponse.h
diff --git a/SmartDeviceLink/SDLRPCResponse.m b/SmartDeviceLink/public/SDLRPCResponse.m
index c0ad88b74..c0ad88b74 100644
--- a/SmartDeviceLink/SDLRPCResponse.m
+++ b/SmartDeviceLink/public/SDLRPCResponse.m
diff --git a/SmartDeviceLink/SDLRPCResponseNotification.h b/SmartDeviceLink/public/SDLRPCResponseNotification.h
index 4434f2a04..4434f2a04 100644
--- a/SmartDeviceLink/SDLRPCResponseNotification.h
+++ b/SmartDeviceLink/public/SDLRPCResponseNotification.h
diff --git a/SmartDeviceLink/SDLRPCResponseNotification.m b/SmartDeviceLink/public/SDLRPCResponseNotification.m
index 150c8b671..150c8b671 100644
--- a/SmartDeviceLink/SDLRPCResponseNotification.m
+++ b/SmartDeviceLink/public/SDLRPCResponseNotification.m
diff --git a/SmartDeviceLink/SDLRPCStruct.h b/SmartDeviceLink/public/SDLRPCStruct.h
index e8a36d903..e8a36d903 100644
--- a/SmartDeviceLink/SDLRPCStruct.h
+++ b/SmartDeviceLink/public/SDLRPCStruct.h
diff --git a/SmartDeviceLink/SDLRPCStruct.m b/SmartDeviceLink/public/SDLRPCStruct.m
index 9956df03d..9956df03d 100644
--- a/SmartDeviceLink/SDLRPCStruct.m
+++ b/SmartDeviceLink/public/SDLRPCStruct.m
diff --git a/SmartDeviceLink/public/SDLRadioBand.h b/SmartDeviceLink/public/SDLRadioBand.h
new file mode 100644
index 000000000..7486f0d71
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRadioBand.h
@@ -0,0 +1,25 @@
+//
+// SDLRadioBand.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ Radio bands, such as AM and FM, used in RadioControlData
+ */
+typedef SDLEnum SDLRadioBand NS_TYPED_ENUM;
+
+/**
+ * Represents AM radio band
+ */
+extern SDLRadioBand const SDLRadioBandAM NS_SWIFT_NAME(am);
+
+/**
+ * Represents FM radio band
+ */
+extern SDLRadioBand const SDLRadioBandFM NS_SWIFT_NAME(fm);
+
+/**
+ * Represents XM radio band
+ */
+extern SDLRadioBand const SDLRadioBandXM NS_SWIFT_NAME(xm);
diff --git a/SmartDeviceLink/SDLRadioBand.m b/SmartDeviceLink/public/SDLRadioBand.m
index 1aa03e70f..1aa03e70f 100644
--- a/SmartDeviceLink/SDLRadioBand.m
+++ b/SmartDeviceLink/public/SDLRadioBand.m
diff --git a/SmartDeviceLink/public/SDLRadioControlCapabilities.h b/SmartDeviceLink/public/SDLRadioControlCapabilities.h
new file mode 100644
index 000000000..7f4aba92f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRadioControlCapabilities.h
@@ -0,0 +1,168 @@
+//
+// SDLRadioControlCapabilities.h
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLModuleInfo.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Contains information about a radio control module's capabilities.
+ */
+@interface SDLRadioControlCapabilities : SDLRPCStruct
+
+/**
+ Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
+
+ @param moduleName The short friendly name of the radio control module.
+ @param moduleInfo Information about a RC module, including its id.
+ @param radioEnableAvailable Availability of the control of enable/disable radio.
+ @param radioBandAvailable Availability of the control of radio band.
+ @param radioFrequencyAvailable Availability of the control of radio frequency.
+ @param hdChannelAvailable Availability of the control of HD radio channel.
+ @param rdsDataAvailable Availability of the getting Radio Data System (RDS) data.
+ @param availableHDChannelsAvailable Availability of the list of available HD sub-channel indexes.
+ @param stateAvailable Availability of the getting the Radio state.
+ @param signalStrengthAvailable Availability of the getting the signal strength.
+ @param signalChangeThresholdAvailable Availability of the getting the signal Change Threshold.
+ @param hdRadioEnableAvailable Availability of the control of enable/disable HD radio.
+ @param siriusXMRadioAvailable Availability of sirius XM radio.
+ @param sisDataAvailable Availability of sis data.
+ @return An instance of the SDLRadioControlCapabilities class
+ */
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDChannelsAvailable:(BOOL)availableHDChannelsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable;
+
+/**
+ * The short friendly name of the radio control module.
+
+ * It should not be used to identify a module by mobile application.
+ *
+ * Max string length 100 chars
+ */
+@property (strong, nonatomic) NSString *moduleName;
+
+/**
+ * Availability of the control of enable/disable radio.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioEnableAvailable;
+
+/**
+ * Availability of the control of radio band.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioBandAvailable;
+
+/**
+ * Availability of the control of radio frequency.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioFrequencyAvailable;
+
+/**
+ * Availability of the control of HD radio channel.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hdChannelAvailable;
+
+/**
+ * Availability of the getting Radio Data System (RDS) data.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rdsDataAvailable;
+
+/**
+ * Availability of the getting the number of available HD channels.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *availableHDsAvailable __deprecated_msg("Use availableHDChannelsAvailable instead.");
+
+/**
+ * Availability of the list of available HD sub-channel indexes.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *availableHDChannelsAvailable;
+
+/**
+ * Availability of the getting the Radio state.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *stateAvailable;
+
+/**
+ * Availability of the getting the signal strength.
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *signalStrengthAvailable;
+
+/**
+ * Availability of the getting the signal Change Threshold
+
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *signalChangeThresholdAvailable;
+
+/**
+ * Availability of the control of enable/disable HD radio.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hdRadioEnableAvailable;
+
+/**
+ * Availability of sirius XM radio.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *siriusXMRadioAvailable;
+
+/**
+ * Availability of the getting HD radio Station Information Service (SIS) data.
+ * True: Available, False: Not Available, Not present: Not Available.
+ *
+ * Optional, Boolean
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *sisDataAvailable;
+
+/**
+ * Information about a RC module, including its id.
+ *
+ * SDLModuleInfo
+ */
+@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRadioControlCapabilities.m b/SmartDeviceLink/public/SDLRadioControlCapabilities.m
new file mode 100644
index 000000000..ac1894de7
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRadioControlCapabilities.m
@@ -0,0 +1,160 @@
+//
+// SDLRadioControlCapabilities.m
+//
+
+#import "SDLRadioControlCapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLRadioControlCapabilities
+
+- (instancetype)initWithModuleName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo radioEnableAvailable:(BOOL)radioEnableAvailable radioBandAvailable:(BOOL)radioBandAvailable radioFrequencyAvailable:(BOOL)radioFrequencyAvailable hdChannelAvailable:(BOOL)hdChannelAvailable rdsDataAvailable:(BOOL)rdsDataAvailable availableHDChannelsAvailable:(BOOL)availableHDChannelsAvailable stateAvailable:(BOOL)stateAvailable signalStrengthAvailable:(BOOL)signalStrengthAvailable signalChangeThresholdAvailable:(BOOL)signalChangeThresholdAvailable hdRadioEnableAvailable:(BOOL)hdRadioEnableAvailable siriusXMRadioAvailable:(BOOL)siriusXMRadioAvailable sisDataAvailable:(BOOL)sisDataAvailable {
+ self = [self init];
+ if(!self){
+ return nil;
+ }
+
+ self.moduleName = moduleName;
+ self.moduleInfo = moduleInfo;
+ self.radioEnableAvailable = @(radioEnableAvailable);
+ self.radioBandAvailable = @(radioBandAvailable);
+ self.radioFrequencyAvailable = @(radioFrequencyAvailable);
+ self.hdChannelAvailable = @(hdChannelAvailable);
+ self.rdsDataAvailable = @(rdsDataAvailable);
+ self.availableHDChannelsAvailable = @(availableHDChannelsAvailable);
+ self.stateAvailable = @(stateAvailable);
+ self.signalStrengthAvailable = @(signalStrengthAvailable);
+ self.signalChangeThresholdAvailable = @(signalChangeThresholdAvailable);
+ self.hdRadioEnableAvailable = @(hdRadioEnableAvailable);
+ self.siriusXMRadioAvailable = @(siriusXMRadioAvailable);
+ self.sisDataAvailable = @(sisDataAvailable);
+
+ return self;
+}
+
+- (void)setModuleName:(NSString *)moduleName {
+ [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
+}
+
+- (NSString *)moduleName {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
+}
+
+- (void)setRadioEnableAvailable:(nullable NSNumber<SDLBool> *)radioEnableAvailable {
+ [self.store sdl_setObject:radioEnableAvailable forName:SDLRPCParameterNameRadioEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)radioEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRadioEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRadioBandAvailable:(nullable NSNumber<SDLBool> *)radioBandAvailable {
+ [self.store sdl_setObject:radioBandAvailable forName:SDLRPCParameterNameRadioBandAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)radioBandAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRadioBandAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRadioFrequencyAvailable:(nullable NSNumber<SDLBool> *)radioFrequencyAvailable {
+ [self.store sdl_setObject:radioFrequencyAvailable forName:SDLRPCParameterNameRadioFrequencyAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)radioFrequencyAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRadioFrequencyAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHdChannelAvailable:(nullable NSNumber<SDLBool> *)hdChannelAvailable {
+ [self.store sdl_setObject:hdChannelAvailable forName:SDLRPCParameterNameHDChannelAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)hdChannelAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHDChannelAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRdsDataAvailable:(nullable NSNumber<SDLBool> *)rdsDataAvailable {
+ [self.store sdl_setObject:rdsDataAvailable forName:SDLRPCParameterNameRDSDataAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)rdsDataAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRDSDataAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAvailableHDsAvailable:(nullable NSNumber<SDLBool> *)availableHDsAvailable {
+ [self.store sdl_setObject:availableHDsAvailable forName:SDLRPCParameterNameAvailableHDsAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)availableHDsAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDsAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAvailableHDChannelsAvailable:(nullable NSNumber<SDLBool> *)availableHDChannelsAvailable {
+ [self.store sdl_setObject:availableHDChannelsAvailable forName:SDLRPCParameterNameAvailableHDsAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)availableHDChannelsAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDsAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setStateAvailable:(nullable NSNumber<SDLBool> *)stateAvailable {
+ [self.store sdl_setObject:stateAvailable forName:SDLRPCParameterNameStateAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)stateAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameStateAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSignalStrengthAvailable:(nullable NSNumber<SDLBool> *)signalStrengthAvailable {
+ [self.store sdl_setObject:signalStrengthAvailable forName:SDLRPCParameterNameSignalStrengthAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)signalStrengthAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSignalStrengthAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSignalChangeThresholdAvailable:(nullable NSNumber<SDLBool> *)signalChangeThresholdAvailable {
+ [self.store sdl_setObject:signalChangeThresholdAvailable forName:SDLRPCParameterNameSignalChangeThresholdAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)signalChangeThresholdAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSignalChangeThresholdAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHdRadioEnableAvailable:(nullable NSNumber<SDLBool> *)hdRadioEnableAvailable {
+ [self.store sdl_setObject:hdRadioEnableAvailable forName:SDLRPCParameterNameHDRadioEnableAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)hdRadioEnableAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHDRadioEnableAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSiriusXMRadioAvailable:(nullable NSNumber<SDLBool> *)siriusXMRadioAvailable {
+ [self.store sdl_setObject:siriusXMRadioAvailable forName:SDLRPCParameterNameSiriusXMRadioAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)siriusXMRadioAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSiriusXMRadioAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSisDataAvailable:(nullable NSNumber<SDLBool> *)sisDataAvailable {
+ [self.store sdl_setObject:sisDataAvailable forName:SDLRPCParameterNameSISDataAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)sisDataAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSISDataAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
+}
+
+- (nullable SDLModuleInfo *)moduleInfo {
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRadioControlData.h b/SmartDeviceLink/public/SDLRadioControlData.h
new file mode 100644
index 000000000..523322b4c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRadioControlData.h
@@ -0,0 +1,160 @@
+//
+// SDLRadioControlData.h
+//
+
+#import "SDLRPCMessage.h"
+#import "SDLRadioBand.h"
+#import "SDLRadioState.h"
+
+@class SDLRDSData;
+@class SDLSISData;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Include information (both read-only and changeable data) about a remote control radio module.
+ */
+@interface SDLRadioControlData : SDLRPCStruct
+
+/**
+ Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
+
+ @param frequencyInteger integer part of the frequency
+ @param frequencyFraction fractional part of the frequency
+ @param band Radio band value
+ @param hdChannel Current HD sub-channel
+ @param radioEnable whether or not radio is enabled
+ @param hdRadioEnable whether or not hdradio is enabled
+ @return An instance of the SDLRadioControlData class
+ */
+- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable hdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable;
+
+/// Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
+///
+/// @param frequencyInteger Must be between 0 and 1710
+/// @param frequencyFraction Must be between 0 and 9
+/// @param hdChannel Must be between 0 and 7
+/// @return An instance of the SDLRadioControlData class
+- (instancetype)initFMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction hdChannel:(nullable NSNumber<SDLInt> *)hdChannel;
+
+/// Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
+///
+/// @param frequencyInteger Must be between 0 and 1710
+/// @param hdChannel Must be between 0 and 7
+/// @return An instance of the SDLRadioControlData class
+- (instancetype)initAMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger hdChannel:(nullable NSNumber<SDLInt> *)hdChannel;
+
+/// Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.
+///
+/// @param frequencyInteger Must be between 1 and 1710
+/// @return An instance of the SDLRadioControlData class
+- (instancetype)initXMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger;
+
+/**
+ * The integer part of the frequency ie for 101.7 this value should be 101
+ *
+ * Integer
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frequencyInteger;
+
+/**
+ * The fractional part of the frequency for 101.7 is 7
+ *
+ * Integer
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frequencyFraction;
+
+/**
+ * Radio band value
+ *
+ * SDLRadioBand
+ */
+@property (nullable, strong, nonatomic) SDLRadioBand band;
+
+/**
+ * Read only parameter. See RDSData data type for details.
+ *
+ * @warning This property is readonly and cannot be set on the module.
+ *
+ *SDLRDSData
+ */
+@property (nullable, strong, nonatomic) SDLRDSData *rdsData;
+
+/**
+ * number of HD sub-channels if available
+ *
+ * @warning This property is readonly and cannot be set on the module.
+ *
+ * Integer value Min Value - 1 Max Value -7
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *availableHDs __deprecated_msg("Use availableHDChannels instead");
+
+/**
+ * the list of available hd sub-channel indexes, empty list means no Hd channel is available, read-only
+ *
+ * @warning This property is readonly and cannot be set on the module.
+ *
+ * Integer value Min Value - 0 Max Value -7
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *availableHDChannels;
+
+/**
+ * Current HD sub-channel if available
+ *
+ * Integer value Min Value - 0 Max Value -7
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *hdChannel;
+
+/**
+ * Signal Strength Value
+ *
+ * @warning This property is readonly and cannot be set on the module.
+ *
+ * Integer value Min Value - 0 Max Value - 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *signalStrength;
+
+/**
+ * If the signal strength falls below the set value for this parameter, the radio will tune to an alternative frequency
+ *
+ * @warning This property is readonly and cannot be set on the module.
+ *
+ * Integer value Min Value - 0 Max Value - 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *signalChangeThreshold;
+
+/**
+ * True if the radio is on, false is the radio is off. When the radio is disabled, no data other than radioEnable is included in a GetInteriorVehicleData response
+ *
+ * Boolean value
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *radioEnable;
+
+/**
+ * Read only parameter. See RadioState data type for details.
+ *
+ * @warning This property is readonly and cannot be set on the module.
+ *
+ * SDLRadioState
+ */
+@property (nullable, strong, nonatomic) SDLRadioState state;
+
+/**
+ * True if the hd radio is on, false is the radio is off
+ *
+ * Boolean value
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hdRadioEnable;
+
+/**
+ * Read Read-only Station Information Service (SIS) data provides basic information
+ * about the station such as call sign,
+ * as well as information not displayable to the consumer such as the station identification number
+ *
+ * Optional, SDLSISData
+ */
+@property (nullable, strong, nonatomic) SDLSISData *sisData;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRadioControlData.m b/SmartDeviceLink/public/SDLRadioControlData.m
new file mode 100644
index 000000000..59a4d21d9
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRadioControlData.m
@@ -0,0 +1,176 @@
+//
+// SDLRadioControlData.m
+//
+
+#import "SDLRadioControlData.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRDSData.h"
+#import "SDLSISData.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLRadioControlData
+
+- (instancetype)initWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction band:(nullable SDLRadioBand)band hdChannel:(nullable NSNumber<SDLInt> *)hdChannel radioEnable:(nullable NSNumber<SDLBool> *)radioEnable hdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+
+ self.frequencyInteger = frequencyInteger;
+ self.frequencyFraction = frequencyFraction;
+ self.band = band;
+ self.hdChannel = hdChannel;
+ self.radioEnable = radioEnable;
+ self.hdRadioEnable = hdRadioEnable;
+
+ return self;
+}
+
+- (instancetype)initFMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger frequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction hdChannel:(nullable NSNumber<SDLInt> *)hdChannel {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+
+ self.band = SDLRadioBandFM;
+ self.frequencyInteger = frequencyInteger;
+ self.frequencyFraction = frequencyFraction;
+ self.hdChannel = hdChannel;
+
+ return self;
+}
+
+- (instancetype)initAMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger hdChannel:(nullable NSNumber<SDLInt> *)hdChannel {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+
+ self.band = SDLRadioBandAM;
+ self.frequencyInteger = frequencyInteger;
+ self.hdChannel = hdChannel;
+
+ return self;
+}
+
+- (instancetype)initXMWithFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger {
+ self = [self init];
+ if(!self) {
+ return nil;
+ }
+
+ self.frequencyInteger = frequencyInteger;
+ self.band = SDLRadioBandXM;
+
+ return self;
+}
+
+- (void)setFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger {
+ [self.store sdl_setObject:frequencyInteger forName:SDLRPCParameterNameFrequencyInteger];
+}
+
+- (nullable NSNumber<SDLInt> *)frequencyInteger {
+ return [self.store sdl_objectForName:SDLRPCParameterNameFrequencyInteger ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFrequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction {
+ [self.store sdl_setObject:frequencyFraction forName:SDLRPCParameterNameFrequencyFraction];
+}
+
+- (nullable NSNumber<SDLInt> *)frequencyFraction {
+ return [self.store sdl_objectForName:SDLRPCParameterNameFrequencyFraction ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBand:(nullable SDLRadioBand)band {
+ [self.store sdl_setObject:band forName:SDLRPCParameterNameBand];
+}
+
+- (nullable SDLRadioBand)band{
+ return [self.store sdl_enumForName:SDLRPCParameterNameBand error:nil];
+}
+
+- (void)setRdsData:(nullable SDLRDSData *)rdsData {
+ [self.store sdl_setObject:rdsData forName:SDLRPCParameterNameRDSData];
+}
+
+- (nullable SDLRDSData *)rdsData {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRDSData ofClass:SDLRDSData.class error:nil];
+}
+
+- (void)setAvailableHDChannels:(nullable NSNumber<SDLInt> *)availableHDChannels {
+ [self.store sdl_setObject:availableHDChannels forName:SDLRPCParameterNameAvailableHDChannels];
+}
+
+- (nullable NSNumber<SDLInt> *)availableHDChannels {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDChannels ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAvailableHDs:(nullable NSNumber<SDLInt> *)availableHDs {
+ [self.store sdl_setObject:availableHDs forName:SDLRPCParameterNameAvailableHDs];
+}
+
+- (nullable NSNumber<SDLInt> *)availableHDs {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDs ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHdChannel:(nullable NSNumber<SDLInt> *)hdChannel {
+ [self.store sdl_setObject:hdChannel forName:SDLRPCParameterNameHDChannel];
+}
+
+- (nullable NSNumber<SDLInt> *)hdChannel {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHDChannel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSignalStrength:(nullable NSNumber<SDLInt> *)signalStrength {
+ [self.store sdl_setObject:signalStrength forName:SDLRPCParameterNameSignalStrength];
+}
+
+- (nullable NSNumber<SDLInt> *)signalStrength {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSignalStrength ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSignalChangeThreshold:(nullable NSNumber<SDLInt> *)signalChangeThreshold {
+ [self.store sdl_setObject:signalChangeThreshold forName:SDLRPCParameterNameSignalChangeThreshold];
+}
+
+- (nullable NSNumber<SDLInt> *)signalChangeThreshold {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSignalChangeThreshold ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRadioEnable:(nullable NSNumber<SDLBool> *)radioEnable {
+ [self.store sdl_setObject:radioEnable forName:SDLRPCParameterNameRadioEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)radioEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRadioEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setState:(nullable SDLRadioState)state {
+ [self.store sdl_setObject:state forName:SDLRPCParameterNameState];
+}
+
+- (nullable SDLRadioState)state {
+ return [self.store sdl_enumForName:SDLRPCParameterNameState error:nil];
+}
+
+- (void)setHdRadioEnable:(nullable NSNumber<SDLBool> *)hdRadioEnable {
+ [self.store sdl_setObject:hdRadioEnable forName:SDLRPCParameterNameHDRadioEnable];
+}
+
+- (nullable NSNumber<SDLBool> *)hdRadioEnable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHDRadioEnable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSisData:(nullable SDLSISData *)sisData {
+ [self.store sdl_setObject:sisData forName:SDLRPCParameterNameSISData];
+}
+
+- (nullable SDLSISData *)sisData {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSISData ofClass:SDLSISData.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRadioState.h b/SmartDeviceLink/public/SDLRadioState.h
new file mode 100644
index 000000000..fe9963984
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRadioState.h
@@ -0,0 +1,30 @@
+//
+// SDLRadioState.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * List possible states of a remote control radio module. Used in RadioControlData.
+ */
+typedef SDLEnum SDLRadioState NS_TYPED_ENUM;
+
+/**
+ * Represents Radio state as ACQUIRING
+ */
+extern SDLRadioState const SDLRadioStateAcquiring;
+
+/**
+ * Represents Radio state as ACQUIRED
+ */
+extern SDLRadioState const SDLRadioStateAcquired;
+
+/**
+ * Represents Radio state as MULTICAST
+ */
+extern SDLRadioState const SDLRadioStateMulticast;
+
+/**
+ * Represents Radio state as NOT_FOUND
+ */
+extern SDLRadioState const SDLRadioStateNotFound;
diff --git a/SmartDeviceLink/SDLRadioState.m b/SmartDeviceLink/public/SDLRadioState.m
index e14aebeed..e14aebeed 100644
--- a/SmartDeviceLink/SDLRadioState.m
+++ b/SmartDeviceLink/public/SDLRadioState.m
diff --git a/SmartDeviceLink/SDLReadDID.h b/SmartDeviceLink/public/SDLReadDID.h
index 299e7851d..299e7851d 100644
--- a/SmartDeviceLink/SDLReadDID.h
+++ b/SmartDeviceLink/public/SDLReadDID.h
diff --git a/SmartDeviceLink/SDLReadDID.m b/SmartDeviceLink/public/SDLReadDID.m
index dd337708e..dd337708e 100644
--- a/SmartDeviceLink/SDLReadDID.m
+++ b/SmartDeviceLink/public/SDLReadDID.m
diff --git a/SmartDeviceLink/SDLReadDIDResponse.h b/SmartDeviceLink/public/SDLReadDIDResponse.h
index 612ed48d1..612ed48d1 100644
--- a/SmartDeviceLink/SDLReadDIDResponse.h
+++ b/SmartDeviceLink/public/SDLReadDIDResponse.h
diff --git a/SmartDeviceLink/SDLReadDIDResponse.m b/SmartDeviceLink/public/SDLReadDIDResponse.m
index 7bad1e43e..7bad1e43e 100644
--- a/SmartDeviceLink/SDLReadDIDResponse.m
+++ b/SmartDeviceLink/public/SDLReadDIDResponse.m
diff --git a/SmartDeviceLink/SDLRectangle.h b/SmartDeviceLink/public/SDLRectangle.h
index 04d9e76cc..04d9e76cc 100644
--- a/SmartDeviceLink/SDLRectangle.h
+++ b/SmartDeviceLink/public/SDLRectangle.h
diff --git a/SmartDeviceLink/SDLRectangle.m b/SmartDeviceLink/public/SDLRectangle.m
index 7e6a8a3c3..7e6a8a3c3 100644
--- a/SmartDeviceLink/SDLRectangle.m
+++ b/SmartDeviceLink/public/SDLRectangle.m
diff --git a/SmartDeviceLink/public/SDLRegisterAppInterface.h b/SmartDeviceLink/public/SDLRegisterAppInterface.h
new file mode 100644
index 000000000..805411b9a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRegisterAppInterface.h
@@ -0,0 +1,236 @@
+// SDLRegisterAppInterface.h
+//
+
+#import "SDLRPCRequest.h"
+
+#import "SDLAppHMIType.h"
+#import "SDLLanguage.h"
+
+@class SDLAppInfo;
+@class SDLDeviceInfo;
+@class SDLLifecycleConfiguration;
+@class SDLMsgVersion;
+@class SDLTemplateColorScheme;
+@class SDLTTSChunk;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Registers the application's interface with SDL. The `RegisterAppInterface` RPC declares the properties of the app, including the messaging interface version, the app name, etc. The mobile application must establish its interface registration with SDL before any other interaction with SDL can take place. The registration lasts until it is terminated either by the application calling the `SDLUnregisterAppInterface` method, or by SDL sending an `SDLOnAppInterfaceUnregistered` notification, or by loss of the underlying transport connection, or closing of the underlying message transmission protocol RPC session.
+ *
+ * Until the application receives its first `SDLOnHMIStatus` notification, its `SDLHMILevel` is assumed to be `NONE`, the `SDLAudioStreamingState` is assumed to be `NOT_AUDIBLE`, and the `SDLSystemContext` is assumed to be `MAIN`.
+ *
+ * All SDL resources which the application creates or uses (e.g. choice sets, command menu, etc.) are associated with the application's interface registration. Therefore, when the interface registration ends, the SDL resources associated with the application are disposed of. As a result, even though the application itself may continue to run on its host platform (e.g. mobile device) after the interface registration terminates, the application will not be able to use the SDL HMI without first establishing a new interface registration and re-creating its required SDL resources. That is, SDL resources created by (or on behalf of) an application do not persist beyond the life-span of the interface registration. Resources and settings whose lifespan is tied to the duration of an application's interface registration include: choice sets, command menus, and the media clock timer display value
+ *
+ * If the application intends to stream audio it is important to indicate so via the `isMediaApp` parameter. When set to true, audio will reliably stream without any configuration required by the user. When not set, audio may stream, depending on what the user might have manually configured as a media source on SDL.
+ *
+ * @since SDL 1.0
+ *
+ * @see SDLUnregisterAppInterface, SDLOnAppInterfaceUnregistered
+ */
+@interface SDLRegisterAppInterface : SDLRPCRequest
+
+/**
+ * Convenience init for registering the application with a lifecycle configuration.
+ *
+ * @param lifecycleConfiguration Configuration options for SDLManager
+ */
+- (instancetype)initWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration;
+
+/**
+ * Convenience init for registering the application with an app name, app id, and desired language.
+ *
+ * @param appName The mobile application's name
+ * @param appId An appId used to validate app with policy table entries
+ * @param languageDesired The language the application intends to use for user interaction
+ * @return A SDLRegisterAppInterface object
+ */
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired;
+
+/**
+ * Convenience init for registering the application with all possible options.
+ *
+ * @param appName The mobile application's name
+ * @param appId An appId used to validate app with policy table entries
+ * @param fullAppId A full UUID appID used to validate app with policy table entries.
+ * @param languageDesired The language the application intends to use for user interaction
+ * @param isMediaApp Indicates if the application is a media or a non-media application
+ * @param appTypes A list of all applicable app types stating which classifications to be given to the app
+ * @param shortAppName An abbreviated version of the mobile application's name
+ * @param ttsName TTS string for VR recognition of the mobile application name
+ * @param vrSynonyms Additional voice recognition commands
+ * @param hmiDisplayLanguageDesired Current app's expected VR+TTS language
+ * @param resumeHash ID used to uniquely identify current state of all app data that can persist through connection cycles
+ * @param dayColorScheme The color scheme to be used on a head unit using a "light" or "day" color scheme.
+ * @param nightColorScheme The color scheme to be used on a head unit using a "dark" or "night" color scheme
+ * @return A SDLRegisterAppInterface object
+ */
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId fullAppId:(nullable NSString *)fullAppId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme;
+
+/**
+ * Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
+ *
+ * SDLMsgVersion, Required
+ *
+ * @since SDL 1.0
+ */
+@property (strong, nonatomic) SDLMsgVersion *sdlMsgVersion;
+
+/**
+ * The mobile application's name. This name is displayed in the SDL Mobile Applications menu. It also serves as the unique identifier of the application for SmartDeviceLink. Applications with the same name will be rejected.
+ *
+ * 1. Needs to be unique over all applications. Applications with the same name will be rejected.
+ * 2. May not be empty.
+ * 3. May not start with a new line character.
+ * 4. May not interfere with any name or synonym of previously registered applications and any predefined blacklist of words (global commands).
+ *
+ * String, Required, Max length 100 chars
+ *
+ * @since SDL 1.0
+ */
+@property (strong, nonatomic) NSString *appName;
+
+/**
+ * Text-to-speech string for voice recognition of the mobile application name. Meant to overcome any failing on speech engine in properly pronouncing / understanding app name.
+ *
+ * 1. Needs to be unique over all applications.
+ * 2. May not be empty.
+ * 3. May not start with a new line character.
+ *
+ * Array of SDLTTSChunk, Optional, Array size 1 - 100
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *ttsName;
+
+/**
+ * Provides an abbreviated version of the app name (if needed), that will be displayed on head units that support very few characters. If not provided, the appName is used instead (and will be truncated if too long). It's recommended that this string be no longer than 5 characters.
+ *
+ * Legacy head units may limit the number of characters in an app name.
+ *
+ * String, Optional, Max length 100 chars
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSString *ngnMediaScreenAppName;
+
+/**
+ * Defines additional voice recognition commands
+ *
+ * @discussion May not interfere with any app name of previously registered applications and any predefined blacklist of words (global commands).
+ *
+ * Array of Strings, Optional, Array length 1 - 100, Max String length 40
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<NSString *> *vrSynonyms;
+
+/**
+ * Indicates if the application is a media or a non-media application. Media applications will appear in the head unit's media source list and can use the `MEDIA` template.
+ *
+ * Boolean, Required
+ *
+ * @since SDL 1.0
+ */
+@property (strong, nonatomic) NSNumber<SDLBool> *isMediaApplication;
+
+/**
+ * App's starting VR+TTS language. If there is a mismatch with the head unit, the app will be able to change its language with ChangeRegistration prior to app being brought into focus.
+ *
+ * SDLLanguage, Required
+ *
+ * @since SDL 1.0
+ */
+@property (strong, nonatomic) SDLLanguage languageDesired;
+
+/**
+ * Current app's expected display language. If there is a mismatch with the head unit, the app will be able to change its language with ChangeRegistration prior to app being brought into focus.
+ *
+ * SDLLanguage, Required
+ *
+ * @since SDL 2.0
+ */
+@property (strong, nonatomic) SDLLanguage hmiDisplayLanguageDesired;
+
+/**
+ * List of all applicable app HMI types stating which HMI classifications to be given to the app.
+ *
+ * Array of SDLAppHMIType, Optional, Array size 1 - 100
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLAppHMIType> *appHMIType;
+
+/**
+ * ID used to uniquely identify a previous state of all app data that can persist through connection cycles (e.g. ignition cycles). This registered data (commands, submenus, choice sets, etc.) can be reestablished without needing to explicitly re-send each piece. If omitted, then the previous state of an app's commands, etc. will not be restored.
+ *
+ * When sending hashID, all RegisterAppInterface parameters should still be provided (e.g. ttsName, etc.).
+ *
+ * String, Optional, max length 100 chars
+ *
+ * @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) NSString *hashID;
+
+/**
+ * Information about the connecting device.
+ *
+ * SDLDeviceInfo, Optional
+ *
+ * @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) SDLDeviceInfo *deviceInfo;
+
+/**
+ * ID used to validate app with policy table entries.
+ *
+ * String, Required, max length 100
+ *
+ * @see `fullAppID`
+ *
+ * @since SDL 2.0
+ */
+@property (strong, nonatomic) NSString *appID;
+
+/**
+ * A full UUID appID used to validate app with policy table entries.
+ *
+ * @discussion The `fullAppId` is used to authenticate apps that connect with head units that implement SDL Core v.5.0 and newer. If connecting with older head units, the `fullAppId` can be truncated to create the required `appId` needed to register the app. The `appId` is the first 10 non-dash ("-") characters of the `fullAppID` (e.g. if you have a `fullAppId` of 123e4567-e89b-12d3-a456-426655440000, the `appId` will be 123e4567e8).
+ *
+ * String, Optional
+ *
+ * @since SDL 5.0
+ */
+@property (nullable, strong, nonatomic) NSString *fullAppID;
+
+/**
+ * Contains detailed information about the registered application.
+ *
+ * SDLAppInfo, Optional
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) SDLAppInfo *appInfo;
+
+/**
+ * The color scheme to be used on a head unit using a "light" or "day" color scheme. The OEM may only support this theme if their head unit only has a light color scheme.
+ *
+ * SDLTemplateColorScheme, Optional
+ *
+ * @since SDL 5.0
+ */
+@property (strong, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
+
+/**
+ * The color scheme to be used on a head unit using a "dark" or "night" color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.
+ *
+ * SDLTemplateColorScheme, Optional
+ *
+ * @since SDL 5.0
+ */
+@property (strong, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRegisterAppInterface.m b/SmartDeviceLink/public/SDLRegisterAppInterface.m
new file mode 100644
index 000000000..eced457ff
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRegisterAppInterface.m
@@ -0,0 +1,232 @@
+// SDLRegisterAppInterface.m
+//
+
+
+#import "SDLRegisterAppInterface.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLAppHMIType.h"
+#import "SDLAppInfo.h"
+#import "SDLDeviceInfo.h"
+#import "SDLGlobals.h"
+#import "SDLLanguage.h"
+#import "SDLLifecycleConfiguration.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLMsgVersion.h"
+#import "SDLTemplateColorScheme.h"
+#import "SDLTTSChunk.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLRegisterAppInterface
+
+#pragma mark - Lifecycle
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameRegisterAppInterface]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration {
+ NSArray<SDLAppHMIType> *allHMITypes = lifecycleConfiguration.additionalAppTypes ? [lifecycleConfiguration.additionalAppTypes arrayByAddingObject:lifecycleConfiguration.appType] : @[lifecycleConfiguration.appType];
+
+ return [self initWithAppName:lifecycleConfiguration.appName
+ appId:lifecycleConfiguration.appId
+ fullAppId:lifecycleConfiguration.fullAppId
+ languageDesired:lifecycleConfiguration.language
+ isMediaApp:lifecycleConfiguration.isMedia
+ appTypes:allHMITypes
+ shortAppName:lifecycleConfiguration.shortAppName
+ ttsName:lifecycleConfiguration.ttsName
+ vrSynonyms:lifecycleConfiguration.voiceRecognitionCommandNames
+ hmiDisplayLanguageDesired:lifecycleConfiguration.language
+ resumeHash:lifecycleConfiguration.resumeHash
+ dayColorScheme:lifecycleConfiguration.dayColorScheme
+ nightColorScheme:lifecycleConfiguration.nightColorScheme];
+}
+
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId languageDesired:(SDLLanguage)languageDesired {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.appName = appName;
+ self.appID = appId;
+ self.fullAppID = nil;
+ self.languageDesired = languageDesired;
+
+ self.hmiDisplayLanguageDesired = languageDesired;
+
+ UInt8 majorVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(0, 1)].intValue;
+ UInt8 minorVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(2, 1)].intValue;
+ UInt8 patchVersion = (UInt8)[SDLMaxProxyRPCVersion substringWithRange:NSMakeRange(4, 1)].intValue;
+ self.sdlMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:majorVersion minorVersion:minorVersion patchVersion:patchVersion];
+ self.appInfo = [SDLAppInfo currentAppInfo];
+ self.deviceInfo = [SDLDeviceInfo currentDevice];
+ self.correlationID = @1;
+ self.isMediaApplication = @NO;
+
+ return self;
+}
+
+- (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId fullAppId:(nullable NSString *)fullAppId languageDesired:(SDLLanguage)languageDesired isMediaApp:(BOOL)isMediaApp appTypes:(NSArray<SDLAppHMIType> *)appTypes shortAppName:(nullable NSString *)shortAppName ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms hmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired resumeHash:(nullable NSString *)resumeHash dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
+ self = [self initWithAppName:appName appId:appId languageDesired:languageDesired];
+
+ self.fullAppID = fullAppId;
+ self.isMediaApplication = @(isMediaApp);
+ self.appHMIType = appTypes;
+ self.ngnMediaScreenAppName = shortAppName;
+ self.ttsName = [ttsName copy];
+ self.vrSynonyms = [vrSynonyms copy];
+ self.hmiDisplayLanguageDesired = hmiDisplayLanguageDesired;
+ self.hashID = resumeHash;
+ self.dayColorScheme = dayColorScheme;
+ self.nightColorScheme = nightColorScheme;
+
+ return self;
+}
+
+#pragma mark - Getters and Setters
+
+- (void)setSdlMsgVersion:(SDLMsgVersion *)sdlMsgVersion {
+ [self.parameters sdl_setObject:sdlMsgVersion forName:SDLRPCParameterNameSyncMessageVersion];
+}
+
+- (SDLMsgVersion *)sdlMsgVersion {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLMsgVersion.class error:nil];
+}
+
+- (void)setAppName:(NSString *)appName {
+ [self.parameters sdl_setObject:appName forName:SDLRPCParameterNameAppName];
+}
+
+- (NSString *)appName {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAppName ofClass:NSString.class error:&error];
+}
+
+- (void)setTtsName:(nullable NSArray<SDLTTSChunk *> *)ttsName {
+ [self.parameters sdl_setObject:ttsName forName:SDLRPCParameterNameTTSName];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)ttsName {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSName ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setNgnMediaScreenAppName:(nullable NSString *)ngnMediaScreenAppName {
+ [self.parameters sdl_setObject:ngnMediaScreenAppName forName:SDLRPCParameterNameNGNMediaScreenAppName];
+}
+
+- (nullable NSString *)ngnMediaScreenAppName {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameNGNMediaScreenAppName ofClass:NSString.class error:nil];
+}
+
+- (void)setVrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms {
+ [self.parameters sdl_setObject:vrSynonyms forName:SDLRPCParameterNameVRSynonyms];
+}
+
+- (nullable NSArray<NSString *> *)vrSynonyms {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRSynonyms ofClass:NSString.class error:nil];
+}
+
+- (void)setIsMediaApplication:(NSNumber<SDLBool> *)isMediaApplication {
+ [self.parameters sdl_setObject:isMediaApplication forName:SDLRPCParameterNameIsMediaApplication];
+}
+
+- (NSNumber<SDLBool> *)isMediaApplication {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameIsMediaApplication ofClass:NSNumber.class error:&error];
+}
+
+- (void)setLanguageDesired:(SDLLanguage)languageDesired {
+ [self.parameters sdl_setObject:languageDesired forName:SDLRPCParameterNameLanguageDesired];
+}
+
+- (SDLLanguage)languageDesired {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguageDesired error:&error];
+}
+
+- (void)setHmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired {
+ [self.parameters sdl_setObject:hmiDisplayLanguageDesired forName:SDLRPCParameterNameHMIDisplayLanguageDesired];
+}
+
+- (SDLLanguage)hmiDisplayLanguageDesired {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguageDesired error:&error];
+}
+
+- (void)setAppHMIType:(nullable NSArray<SDLAppHMIType> *)appHMIType {
+ [self.parameters sdl_setObject:appHMIType forName:SDLRPCParameterNameAppHMIType];
+}
+
+- (nullable NSArray<SDLAppHMIType> *)appHMIType {
+ return [self.parameters sdl_enumsForName:SDLRPCParameterNameAppHMIType error:nil];
+}
+
+- (void)setHashID:(nullable NSString *)hashID {
+ [self.parameters sdl_setObject:hashID forName:SDLRPCParameterNameHashId];
+}
+
+- (nullable NSString *)hashID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHashId ofClass:NSString.class error:nil];
+}
+
+- (void)setDeviceInfo:(nullable SDLDeviceInfo *)deviceInfo {
+ [self.parameters sdl_setObject:deviceInfo forName:SDLRPCParameterNameDeviceInfo];
+}
+
+- (nullable SDLDeviceInfo *)deviceInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceInfo ofClass:SDLDeviceInfo.class error:nil];
+}
+
+- (void)setAppID:(NSString *)appID {
+ [self.parameters sdl_setObject:appID forName:SDLRPCParameterNameAppId];
+}
+
+- (NSString *)appID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error];
+}
+
+- (void)setFullAppID:(nullable NSString *)fullAppID {
+ [self.parameters sdl_setObject:fullAppID forName:SDLRPCParameterNameFullAppID];
+}
+
+- (nullable NSString *)fullAppID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFullAppID ofClass:NSString.class error:nil];
+}
+
+- (void)setAppInfo:(nullable SDLAppInfo *)appInfo {
+ [self.parameters sdl_setObject:appInfo forName:SDLRPCParameterNameAppInfo];
+}
+
+- (nullable SDLAppInfo *)appInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAppInfo ofClass:SDLAppInfo.class error:nil];
+}
+
+- (void)setDayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme {
+ [self.parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme];
+}
+
+- (nullable SDLTemplateColorScheme *)dayColorScheme {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
+}
+
+- (void)setNightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
+ [self.parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme];
+}
+
+- (nullable SDLTemplateColorScheme *)nightColorScheme {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.h b/SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.h
new file mode 100644
index 000000000..3538e22e3
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.h
@@ -0,0 +1,205 @@
+// SDLRegisterAppInterfaceResponse.h
+//
+
+
+#import "SDLRPCResponse.h"
+
+#import "SDLHMIZoneCapabilities.h"
+#import "SDLLanguage.h"
+#import "SDLPrerecordedSpeech.h"
+#import "SDLSpeechCapabilities.h"
+#import "SDLVrCapabilities.h"
+
+@class SDLAudioPassThruCapabilities;
+@class SDLButtonCapabilities;
+@class SDLDisplayCapabilities;
+@class SDLHMICapabilities;
+@class SDLPresetBankCapabilities;
+@class SDLSoftButtonCapabilities;
+@class SDLMsgVersion;
+@class SDLVehicleType;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Response to SDLRegisterAppInterface
+ *
+ * @since SDL 1.0
+ */
+@interface SDLRegisterAppInterfaceResponse : SDLRPCResponse
+
+/**
+ * Specifies the negotiated version number of the SmartDeviceLink protocol that is to be supported by the mobile application.
+ *
+ * SDLMsgVersion, Optional
+ *
+ * @since SDL 1.0
+ */
+@property(nullable, strong, nonatomic) SDLMsgVersion *sdlMsgVersion;
+
+/**
+ * The currently active VR+TTS language on the module. See "Language" for options.
+ *
+ * SDLLanguage, Optional
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) SDLLanguage language;
+
+/**
+ * The currently active display language on the module. See "Language" for options.
+ *
+ * SDLLanguage, Optional
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) SDLLanguage hmiDisplayLanguage;
+
+/**
+ * Contains information about the display's capabilities.
+ *
+ * SDLDisplayCapabilities, Optional
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) SDLDisplayCapabilities *displayCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
+
+/**
+ * Contains information about the head unit button capabilities.
+ *
+ * Array of SDLButtonCapabilities, Optional, Array of length 1 - 100
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
+
+/**
+ * Contains information about the head unit soft button capabilities.
+ *
+ * Array of SDLSoftButtonCapabilities, Optional, Array of length 1 - 100
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
+
+/**
+ * If returned, the platform supports custom on-screen Presets
+ *
+ * SDLPresetBankCapabilities, Optional
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) SDLPresetBankCapabilities *presetBankCapabilities __deprecated_msg("This parameter is deprecated and replaced by GetSystemCapability using DISPLAY. Deprecated in sdl_ios v6.4 / RPC spec 6.0. You can use the SystemCapabilityManager to have automatic full compatibility support.");
+
+/**
+ * Contains information about the HMI zone capabilities.
+ *
+ * Array of SDLHMIZoneCapabilities, Optional, Array of length 1 - 100
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLHMIZoneCapabilities> *hmiZoneCapabilities;
+
+/**
+ * Contains information about the text-to-speech capabilities.
+ *
+ * Array of SDLSpeechCapabilities, Optional, Array of length 1 - 100
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSpeechCapabilities> *speechCapabilities;
+
+/**
+ * Contains a list of prerecorded speech items present on the platform.
+ *
+ * Array of SDLPrerecordedSpeech, Optional, Array of length 1 - 100
+ *
+ * @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLPrerecordedSpeech> *prerecordedSpeech;
+
+/**
+ * Contains information about the VR capabilities.
+ *
+ * Array of SDLVRCapabilities, Optional, Array of length 1 - 100
+ *
+ * @since SDL 1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLVRCapabilities> *vrCapabilities;
+
+/**
+ * Describes different audio type configurations for PerformAudioPassThru, e.g. {8kHz,8-bit,PCM}. The audio is recorded in monaural.
+ *
+ * Array of SDLAudioPassThruCapabilities, Optional, Array of length 1 - 100
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLAudioPassThruCapabilities *> *audioPassThruCapabilities;
+
+/**
+ * Describes different audio type configurations for the audio PCM stream service, e.g. {8kHz,8-bit,PCM}
+ *
+ * SDLAudioPassThruCapabilities, Optional
+ *
+ * @since SDL 4.1
+ */
+@property (nullable, strong, nonatomic) SDLAudioPassThruCapabilities *pcmStreamCapabilities;
+
+/**
+ * Specifies the connected vehicle's type.
+ *
+ * SDLVehicleType, Optional
+ *
+ * @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) SDLVehicleType *vehicleType;
+
+/**
+ * Specifies the white-list of supported diagnostic modes (0x00-0xFF) capable for DiagnosticMessage requests. If a mode outside this list is requested, it will be rejected.
+ *
+ * Array of Integers, Optional, Array of length 1 - 100, Value range: 0 - 255
+ *
+ * @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) NSArray<NSNumber *> *supportedDiagModes;
+
+/**
+ * Specifies the HMI capabilities.
+ *
+ * SDLHMICapabilities, Optional
+ *
+ * @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) SDLHMICapabilities *hmiCapabilities;
+
+/**
+ * The version of SDL Core running on the connected head unit
+ *
+ * String, Optional, Max length: 100
+ *
+ * @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) NSString *sdlVersion;
+
+/**
+ * The software version of the system that implements the SmartDeviceLink core.
+ *
+ * String, Optional, Max length: 100
+ *
+ * @since SDL 3.0
+ */
+@property (nullable, strong, nonatomic) NSString *systemSoftwareVersion;
+
+/**
+ * Existence of apps icon at system. If true, apps icon was resumed at system. If false, apps icon is not resumed at system.
+ *
+ * Bool, Optional
+ *
+ * @since SDL 5.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *iconResumed;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.m b/SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.m
new file mode 100644
index 000000000..fdc857cd2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRegisterAppInterfaceResponse.m
@@ -0,0 +1,187 @@
+// SDLRegisterAppInterfaceResponse.m
+//
+
+
+#import "SDLRegisterAppInterfaceResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLAudioPassThruCapabilities.h"
+#import "SDLButtonCapabilities.h"
+#import "SDLDisplayCapabilities.h"
+#import "SDLHMICapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLPresetBankCapabilities.h"
+#import "SDLSoftButtonCapabilities.h"
+#import "SDLMsgVersion.h"
+#import "SDLVehicleType.h"
+#import "SDLVrCapabilities.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLRegisterAppInterfaceResponse
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameRegisterAppInterface]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (void)setSdlMsgVersion:(nullable SDLMsgVersion *)sdlMsgVersion {
+ [self.parameters sdl_setObject:sdlMsgVersion forName:SDLRPCParameterNameSyncMessageVersion];
+}
+
+- (nullable SDLMsgVersion *)sdlMsgVersion {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLMsgVersion.class error:nil];
+}
+
+- (void)setLanguage:(nullable SDLLanguage)language {
+ [self.parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage];
+}
+
+- (nullable SDLLanguage)language {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguage error:nil];
+}
+
+- (void)setHmiDisplayLanguage:(nullable SDLLanguage)hmiDisplayLanguage {
+ [self.parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage];
+}
+
+- (nullable SDLLanguage)hmiDisplayLanguage {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:nil];
+}
+
+- (void)setDisplayCapabilities:(nullable SDLDisplayCapabilities *)displayCapabilities {
+ [self.parameters sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities];
+}
+
+- (nullable SDLDisplayCapabilities *)displayCapabilities {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapabilities.class error:nil];
+}
+
+- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ [self.parameters sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];
+}
+
+- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil];
+}
+
+- (void)setSoftButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
+ [self.parameters sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities];
+}
+
+- (nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil];
+}
+
+- (void)setPresetBankCapabilities:(nullable SDLPresetBankCapabilities *)presetBankCapabilities {
+ [self.parameters sdl_setObject:presetBankCapabilities forName:SDLRPCParameterNamePresetBankCapabilities];
+}
+
+- (nullable SDLPresetBankCapabilities *)presetBankCapabilities {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePresetBankCapabilities ofClass:SDLPresetBankCapabilities.class error:nil];
+}
+
+- (void)setHmiZoneCapabilities:(nullable NSArray<SDLHMIZoneCapabilities> *)hmiZoneCapabilities {
+ [self.parameters sdl_setObject:hmiZoneCapabilities forName:SDLRPCParameterNameHMIZoneCapabilities];
+}
+
+- (nullable NSArray<SDLHMIZoneCapabilities> *)hmiZoneCapabilities {
+ return [self.parameters sdl_enumsForName:SDLRPCParameterNameHMIZoneCapabilities error:nil];
+}
+
+- (void)setSpeechCapabilities:(nullable NSArray<SDLSpeechCapabilities> *)speechCapabilities {
+ [self.parameters sdl_setObject:speechCapabilities forName:SDLRPCParameterNameSpeechCapabilities];
+}
+
+- (nullable NSArray<SDLSpeechCapabilities> *)speechCapabilities {
+ return [self.parameters sdl_enumsForName:SDLRPCParameterNameSpeechCapabilities error:nil];
+}
+
+- (void)setPrerecordedSpeech:(nullable NSArray<SDLPrerecordedSpeech> *)prerecordedSpeech {
+ [self.parameters sdl_setObject:prerecordedSpeech forName:SDLRPCParameterNamePrerecordedSpeech];
+}
+
+- (nullable NSArray<SDLPrerecordedSpeech> *)prerecordedSpeech {
+ return [self.parameters sdl_enumsForName:SDLRPCParameterNamePrerecordedSpeech error:nil];
+}
+
+- (void)setVrCapabilities:(nullable NSArray<SDLVRCapabilities> *)vrCapabilities {
+ [self.parameters sdl_setObject:vrCapabilities forName:SDLRPCParameterNameVRCapabilities];
+}
+
+- (nullable NSArray<SDLVRCapabilities> *)vrCapabilities {
+ return [self.parameters sdl_enumsForName:SDLRPCParameterNameVRCapabilities error:nil];
+}
+
+- (void)setAudioPassThruCapabilities:(nullable NSArray<SDLAudioPassThruCapabilities *> *)audioPassThruCapabilities {
+ [self.parameters sdl_setObject:audioPassThruCapabilities forName:SDLRPCParameterNameAudioPassThruCapabilities];
+}
+
+- (nullable NSArray<SDLAudioPassThruCapabilities *> *)audioPassThruCapabilities {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameAudioPassThruCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil];
+}
+
+- (void)setPcmStreamCapabilities:(nullable SDLAudioPassThruCapabilities *)pcmStreamCapabilities {
+ [self.parameters sdl_setObject:pcmStreamCapabilities forName:SDLRPCParameterNamePCMStreamCapabilities];
+}
+
+- (nullable SDLAudioPassThruCapabilities *)pcmStreamCapabilities {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePCMStreamCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil];
+}
+
+- (void)setVehicleType:(nullable SDLVehicleType *)vehicleType {
+ [self.parameters sdl_setObject:vehicleType forName:SDLRPCParameterNameVehicleType];
+}
+
+- (nullable SDLVehicleType *)vehicleType {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameVehicleType ofClass:SDLVehicleType.class error:nil];
+}
+
+- (void)setSupportedDiagModes:(nullable NSArray<NSNumber *> *)supportedDiagModes {
+ [self.parameters sdl_setObject:supportedDiagModes forName:SDLRPCParameterNameSupportedDiagnosticModes];
+}
+
+- (nullable NSArray<NSNumber *> *)supportedDiagModes {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameSupportedDiagnosticModes ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHmiCapabilities:(nullable SDLHMICapabilities *)hmiCapabilities {
+ [self.parameters sdl_setObject:hmiCapabilities forName:SDLRPCParameterNameHMICapabilities];
+}
+
+- (nullable SDLHMICapabilities *)hmiCapabilities {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHMICapabilities ofClass:SDLHMICapabilities.class error:nil];
+}
+
+- (void)setSdlVersion:(nullable NSString *)sdlVersion {
+ [self.parameters sdl_setObject:sdlVersion forName:SDLRPCParameterNameSDLVersion];
+}
+
+- (nullable NSString *)sdlVersion {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSDLVersion ofClass:NSString.class error:nil];
+}
+
+- (void)setSystemSoftwareVersion:(nullable NSString *)systemSoftwareVersion {
+ [self.parameters sdl_setObject:systemSoftwareVersion forName:SDLRPCParameterNameSystemSoftwareVersion];
+}
+
+- (nullable NSString *)systemSoftwareVersion {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemSoftwareVersion ofClass:NSString.class error:nil];
+}
+
+- (void)setIconResumed:(nullable NSNumber<SDLBool> *)iconResumed {
+ [self.parameters sdl_setObject:iconResumed forName:SDLRPCParameterNameIconResumed];
+}
+
+- (nullable NSNumber<SDLBool> *)iconResumed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameIconResumed ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.h b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModule.h
index 10db403b9..10db403b9 100644
--- a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.h
+++ b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModule.h
diff --git a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.m b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModule.m
index b28247963..b28247963 100644
--- a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModule.m
+++ b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModule.m
diff --git a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.h b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModuleResponse.h
index 63e880c7e..63e880c7e 100644
--- a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.h
+++ b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModuleResponse.h
diff --git a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.m b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModuleResponse.m
index 9013d23c1..9013d23c1 100644
--- a/SmartDeviceLink/SDLReleaseInteriorVehicleDataModuleResponse.m
+++ b/SmartDeviceLink/public/SDLReleaseInteriorVehicleDataModuleResponse.m
diff --git a/SmartDeviceLink/public/SDLRemoteControlCapabilities.h b/SmartDeviceLink/public/SDLRemoteControlCapabilities.h
new file mode 100644
index 000000000..6281aa566
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRemoteControlCapabilities.h
@@ -0,0 +1,89 @@
+//
+// SDLRemoteControlCapabilities.h
+//
+
+#import "SDLRPCMessage.h"
+
+@class SDLAudioControlCapabilities;
+@class SDLButtonCapabilities;
+@class SDLClimateControlCapabilities;
+@class SDLHMISettingsControlCapabilities;
+@class SDLLightControlCapabilities;
+@class SDLRadioControlCapabilities;
+@class SDLSeatControlCapabilities;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Capabilities of the remote control feature
+ */
+@interface SDLRemoteControlCapabilities : SDLRPCStruct
+
+/**
+ Constructs a newly allocated SDLRemoteControlCapabilities object with given parameters
+
+ @param climateControlCapabilities Array of SDLClimateControlCapabilities
+ @param radioControlCapabilities Array of SDLRadioControlCapabilities
+ @param buttonCapabilities Array of SDLButtonCapabilities
+ @param lightControlCapabilities Array of SDLLightControlCapabilities
+ @param seatControlCapabilities Array of SDLSeatControlCapabilities
+
+ @return An instance of the SDLRemoteControlCapabilities class
+
+ */
+- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities seatControlCapabilities:(nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities audioControlCapabilities:(nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities hmiSettingsControlCapabilities:(nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities lightControlCapabilities:(nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities;
+
+/**
+ * If included, the platform supports RC climate controls.
+ * For this baseline version, maxsize=1. i.e. only one climate control module is supported.
+ *
+ * Optional, Array of SDLClimateControlCapabilities, Array length 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLClimateControlCapabilities *> *climateControlCapabilities;
+
+/**
+ * If included, the platform supports RC radio controls.
+ * For this baseline version, maxsize=1. i.e. only one radio control module is supported.
+ *
+ * Optional, Array of SDLRadioControlCapabilities, Array length 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLRadioControlCapabilities *> *radioControlCapabilities;
+
+/**
+ * If included, the platform supports RC button controls with the included button names.
+ *
+ * Optional, Array of SDLButtonCapabilities, Array length 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
+
+/**
+ * If included, the platform supports seat controls.
+ *
+ * Optional, Array of SDLSeatControlCapabilities, Array length 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSeatControlCapabilities *> *seatControlCapabilities;
+
+/**
+ * If included, the platform supports audio controls.
+ *
+ * Optional, Array of SDLAudioControlCapabilities, Array length 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLAudioControlCapabilities *> *audioControlCapabilities;
+
+/**
+ * If included, the platform supports hmi setting controls.
+ *
+ * Optional, Array of SDLHMISettingsControlCapabilities, Array length 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLHMISettingsControlCapabilities *> *hmiSettingsControlCapabilities;
+
+/**
+ * If included, the platform supports light controls.
+ *
+ * Optional, Array of SDLLightControlCapabilities, Array length 1 - 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLLightControlCapabilities *> *lightControlCapabilities;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRemoteControlCapabilities.m b/SmartDeviceLink/public/SDLRemoteControlCapabilities.m
new file mode 100644
index 000000000..6024e34fa
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRemoteControlCapabilities.m
@@ -0,0 +1,117 @@
+//
+// SDLRemoteControlCapabilities.m
+//
+
+#import "SDLAudioControlCapabilities.h"
+#import "SDLButtonCapabilities.h"
+#import "SDLClimateControlCapabilities.h"
+#import "SDLHMISettingsControlCapabilities.h"
+#import "SDLLightControlCapabilities.h"
+#import "SDLRemoteControlCapabilities.h"
+#import "SDLRadioControlCapabilities.h"
+#import "SDLSeatControlCapabilities.h"
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLRemoteControlCapabilities
+
+- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities seatControlCapabilities:(nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities audioControlCapabilities:(nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities hmiSettingsControlCapabilities:(nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities lightControlCapabilities:(nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ self.climateControlCapabilities = climateControlCapabilities;
+ self.radioControlCapabilities = radioControlCapabilities;
+ self.buttonCapabilities = buttonCapabilities;
+ self.seatControlCapabilities = seatControlCapabilities;
+ self.audioControlCapabilities = audioControlCapabilities;
+ self.hmiSettingsControlCapabilities = hmiSettingsControlCapabilities;
+ self.lightControlCapabilities = lightControlCapabilities;
+
+ return self;
+}
+
+- (void)setClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities {
+ [self.store sdl_setObject:climateControlCapabilities forName:SDLRPCParameterNameClimateControlCapabilities];
+}
+
+- (nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameClimateControlCapabilities ofClass:SDLClimateControlCapabilities.class error:nil];
+}
+
+-(void)setRadioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities {
+ [self.store sdl_setObject:radioControlCapabilities forName:SDLRPCParameterNameRadioControlCapabilities ];
+}
+
+- (nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameRadioControlCapabilities ofClass:SDLRadioControlCapabilities.class error:nil];
+}
+
+- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ [self.store sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];}
+
+- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil];
+}
+
+- (void)setSeatControlCapabilities:(nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities {
+ [self.store sdl_setObject:seatControlCapabilities forName:SDLRPCParameterNameSeatControlCapabilities];
+}
+
+- (nullable NSArray<SDLSeatControlCapabilities *> *)seatControlCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameSeatControlCapabilities ofClass:SDLSeatControlCapabilities.class error:nil];
+}
+
+- (void)setAudioControlCapabilities:(nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities {
+ [self.store sdl_setObject:audioControlCapabilities forName:SDLRPCParameterNameAudioControlCapabilities];
+}
+
+- (nullable NSArray<SDLAudioControlCapabilities *> *)audioControlCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameAudioControlCapabilities ofClass:SDLAudioControlCapabilities.class error:nil];
+
+}
+
+- (void)setHmiSettingsControlCapabilities:(nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities {
+ // TODO: This parameter should not be an array according to the spec, in a future major version change, this parameter's type should be altered
+ if (hmiSettingsControlCapabilities.count == 0) {
+ [self.store sdl_setObject:nil forName:SDLRPCParameterNameHmiSettingsControlCapabilities];
+ return;
+ }
+
+ SDLHMISettingsControlCapabilities *capability = hmiSettingsControlCapabilities.firstObject;
+
+ [self.store sdl_setObject:capability forName:SDLRPCParameterNameHmiSettingsControlCapabilities];
+}
+
+- (nullable NSArray<SDLHMISettingsControlCapabilities *> *)hmiSettingsControlCapabilities {
+ SDLHMISettingsControlCapabilities *capability = [self.store sdl_objectForName:SDLRPCParameterNameHmiSettingsControlCapabilities ofClass:SDLHMISettingsControlCapabilities.class error:nil];
+ if (capability == nil) { return nil; }
+
+ return @[capability];
+}
+
+- (void)setLightControlCapabilities:(nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities {
+ // TODO: This parameter should not be an array according to the spec, in a future major version change, this parameter's type should be altered
+ if (lightControlCapabilities.count == 0) {
+ [self.store sdl_setObject:nil forName:SDLRPCParameterNameLightControlCapabilities];
+ return;
+ }
+
+ SDLLightControlCapabilities *capability = lightControlCapabilities.firstObject;
+
+ [self.store sdl_setObject:capability forName:SDLRPCParameterNameLightControlCapabilities];
+}
+
+- (nullable NSArray<SDLLightControlCapabilities *> *)lightControlCapabilities {
+ SDLLightControlCapabilities *capability = [self.store sdl_objectForName:SDLRPCParameterNameLightControlCapabilities ofClass:SDLLightControlCapabilities.class error:nil];
+ if (capability == nil) { return nil; }
+
+ return @[capability];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRequestType.h b/SmartDeviceLink/public/SDLRequestType.h
new file mode 100644
index 000000000..f91444d53
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRequestType.h
@@ -0,0 +1,121 @@
+// SDLRequestType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ A type of system request. Used in SystemRequest.
+ */
+typedef SDLEnum SDLRequestType NS_TYPED_ENUM;
+
+/**
+ An HTTP request
+ */
+extern SDLRequestType const SDLRequestTypeHTTP;
+
+/**
+ A file resumption request
+ */
+extern SDLRequestType const SDLRequestTypeFileResume;
+
+/**
+ An authentication request
+ */
+extern SDLRequestType const SDLRequestTypeAuthenticationRequest;
+
+/**
+ An authentication challenge
+ */
+extern SDLRequestType const SDLRequestTypeAuthenticationChallenge;
+
+/**
+ An authentication acknowledgment
+ */
+extern SDLRequestType const SDLRequestTypeAuthenticationAck;
+
+/**
+ An proprietary formatted request
+ */
+extern SDLRequestType const SDLRequestTypeProprietary;
+
+/**
+ An Query Apps request
+ */
+extern SDLRequestType const SDLRequestTypeQueryApps;
+
+/**
+ A Launch Apps request
+ */
+extern SDLRequestType const SDLRequestTypeLaunchApp;
+
+/**
+ The URL for a lock screen icon
+ */
+extern SDLRequestType const SDLRequestTypeLockScreenIconURL;
+
+/**
+ A traffic message channel request
+ */
+extern SDLRequestType const SDLRequestTypeTrafficMessageChannel;
+
+/**
+ A driver profile request
+ */
+extern SDLRequestType const SDLRequestTypeDriverProfile;
+
+/**
+ A voice search request
+ */
+extern SDLRequestType const SDLRequestTypeVoiceSearch;
+
+/**
+ A navigation request
+ */
+extern SDLRequestType const SDLRequestTypeNavigation;
+
+/**
+ A phone request
+ */
+extern SDLRequestType const SDLRequestTypePhone;
+
+/**
+ A climate request
+ */
+extern SDLRequestType const SDLRequestTypeClimate;
+
+/**
+ A settings request
+ */
+extern SDLRequestType const SDLRequestTypeSettings;
+
+/**
+ A vehicle diagnostics request
+ */
+extern SDLRequestType const SDLRequestTypeVehicleDiagnostics;
+
+/**
+ An emergency request
+ */
+extern SDLRequestType const SDLRequestTypeEmergency;
+
+/**
+ A media request
+ */
+extern SDLRequestType const SDLRequestTypeMedia;
+
+/**
+ A firmware over-the-air request
+ */
+extern SDLRequestType const SDLRequestTypeFOTA;
+
+/**
+ A request that is OEM specific using the `RequestSubType` in SystemRequest
+ */
+extern SDLRequestType const SDLRequestTypeOEMSpecific;
+
+/**
+ A request for an icon url
+ */
+extern SDLRequestType const SDLRequestTypeIconURL;
+
diff --git a/SmartDeviceLink/SDLRequestType.m b/SmartDeviceLink/public/SDLRequestType.m
index cbc6c7fda..cbc6c7fda 100644
--- a/SmartDeviceLink/SDLRequestType.m
+++ b/SmartDeviceLink/public/SDLRequestType.m
diff --git a/SmartDeviceLink/SDLResetGlobalProperties.h b/SmartDeviceLink/public/SDLResetGlobalProperties.h
index ddbadb9f3..ddbadb9f3 100644
--- a/SmartDeviceLink/SDLResetGlobalProperties.h
+++ b/SmartDeviceLink/public/SDLResetGlobalProperties.h
diff --git a/SmartDeviceLink/SDLResetGlobalProperties.m b/SmartDeviceLink/public/SDLResetGlobalProperties.m
index 8b60852f9..8b60852f9 100644
--- a/SmartDeviceLink/SDLResetGlobalProperties.m
+++ b/SmartDeviceLink/public/SDLResetGlobalProperties.m
diff --git a/SmartDeviceLink/SDLResetGlobalPropertiesResponse.h b/SmartDeviceLink/public/SDLResetGlobalPropertiesResponse.h
index 8e941a73b..8e941a73b 100644
--- a/SmartDeviceLink/SDLResetGlobalPropertiesResponse.h
+++ b/SmartDeviceLink/public/SDLResetGlobalPropertiesResponse.h
diff --git a/SmartDeviceLink/SDLResetGlobalPropertiesResponse.m b/SmartDeviceLink/public/SDLResetGlobalPropertiesResponse.m
index 974b5efa9..974b5efa9 100644
--- a/SmartDeviceLink/SDLResetGlobalPropertiesResponse.m
+++ b/SmartDeviceLink/public/SDLResetGlobalPropertiesResponse.m
diff --git a/SmartDeviceLink/public/SDLResult.h b/SmartDeviceLink/public/SDLResult.h
new file mode 100644
index 000000000..58624544c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLResult.h
@@ -0,0 +1,215 @@
+// SDLResult.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Defines the possible result codes returned by SDL to the application in a response to a requested operation. Used in RPC responses
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLResult NS_TYPED_ENUM;
+
+/**
+ * The request succeeded
+ */
+extern SDLResult const SDLResultSuccess;
+
+/**
+ The request contained invalid data
+
+ The data sent is invalid. For example:
+
+ Invalid JSON syntax
+
+ Parameters out of bounds (number or enum range)
+
+ Mandatory parameters not provided
+
+ Parameter provided with wrong type
+
+ Invalid characters
+
+ Empty string
+ */
+extern SDLResult const SDLResultInvalidData;
+
+/**
+ The request had a string containing too many characters
+ */
+extern SDLResult const SDLResultCharacterLimitExceeded;
+
+/**
+ The request is not supported by the IVI unit implementing SDL
+ */
+extern SDLResult const SDLResultUnsupportedRequest;
+
+/**
+ The system could not process the request because the necessary memory couldn't be allocated
+ */
+extern SDLResult const SDLResultOutOfMemory;
+
+/**
+ There are too many requests pending (means that the response has not been delivered yet).
+
+ There is a limit of 1000 pending requests at a time.
+ */
+extern SDLResult const SDLResultTooManyPendingRequests;
+
+/**
+ One of the provided IDs is not valid.
+
+ For example: CorrelationID, CommandID, MenuID
+ */
+extern SDLResult const SDLResultInvalidId;
+
+/**
+ The provided name or synonym is a duplicate of some already-defined name or synonym.
+ */
+extern SDLResult const SDLResultDuplicateName;
+
+/**
+ There are already too many registered applications.
+ */
+extern SDLResult const SDLResultTooManyApplications;
+
+/**
+ RegisterAppInterface has been called, but this app is already registered
+ */
+extern SDLResult const SDLResultApplicationRegisteredAlready;
+
+/**
+ The Head Unit doesn't support the SDL version that is requested by the mobile application.
+ */
+extern SDLResult const SDLResultUnsupportedVersion;
+
+/**
+ The requested language is currently not supported. This might be because of a mismatch of the currently active language on the head unit and the requested language.
+ */
+extern SDLResult const SDLResultWrongLanguage;
+
+/**
+ A command can not be executed because no application has been registered with RegisterApplication.
+ */
+extern SDLResult const SDLResultApplicationNotRegistered;
+
+/**
+ The data may not be changed, because it is currently in use. For example when trying to delete a choice set that is currently involved in an interaction.
+ */
+extern SDLResult const SDLResultInUse;
+
+/**
+ The user has turned off access to vehicle data, and it is globally unavailable to mobile applications.
+ */
+extern SDLResult const SDLResultVehicleDataNotAllowed;
+
+/**
+ The requested vehicle data is not available on this vehicle or is not published.
+ */
+extern SDLResult const SDLResultVehicleDataNotAvailable;
+
+/**
+ The requested command was rejected, e.g. because the mobile app is in background and cannot perform any HMI commands, or an HMI command (e.g. Speak) is rejected because a higher priority HMI command (e.g. Alert) is playing.
+ */
+extern SDLResult const SDLResultRejected;
+
+/**
+ A command was aborted, e.g. due to user interaction (user pressed button), or an HMI command (e.g. Speak) is aborted because a higher priority HMI command (e.g. Alert) was requested.
+ */
+extern SDLResult const SDLResultAborted;
+
+/**
+ A command was ignored, because the intended result is already in effect. For example, SetMediaClockTimer was used to pause the media clock although the clock is paused already.
+ */
+extern SDLResult const SDLResultIgnored;
+
+/**
+ A button that was requested for subscription is not supported under the current system.
+ */
+extern SDLResult const SDLResultUnsupportedResource;
+
+/**
+ A specified file could not be found on the head unit.
+ */
+extern SDLResult const SDLResultFileNotFound;
+
+/**
+ Provided data is valid but something went wrong in the lower layers.
+ */
+extern SDLResult const SDLResultGenericError;
+
+/**
+ RPC is not authorized in local policy table.
+ */
+extern SDLResult const SDLResultDisallowed;
+
+/**
+ RPC is included in a functional group explicitly blocked by the user.
+ */
+extern SDLResult const SDLResultUserDisallowed;
+
+/**
+ * Overlay reached the maximum timeout and closed.
+ */
+extern SDLResult const SDLResultTimedOut;
+
+/**
+ * User selected to Cancel Route.
+ */
+extern SDLResult const SDLResultCancelRoute;
+
+/**
+ * The data sent failed to pass CRC check in receiver end.
+ */
+extern SDLResult const SDLResultCorruptedData;
+
+/**
+ The RPC (e.g. ReadDID) executed successfully but the data exceeded the platform maximum threshold and thus, only part of the data is available.
+ */
+extern SDLResult const SDLResultTruncatedData;
+
+/**
+ The user interrupted the RPC (e.g. PerformAudioPassThru) and indicated to start over. Note, the app must issue the new RPC.
+ */
+extern SDLResult const SDLResultRetry;
+
+/**
+ The RPC (e.g. SubscribeVehicleData) executed successfully but one or more items have a warning or failure.
+ */
+extern SDLResult const SDLResultWarnings;
+
+/**
+ The RPC (e.g. Slider) executed successfully and the user elected to save the current position / value.
+ */
+extern SDLResult const SDLResultSaved;
+
+/**
+ The certificate provided during authentication is invalid.
+ */
+extern SDLResult const SDLResultInvalidCertificate;
+
+/**
+ The certificate provided during authentication is expired.
+ */
+extern SDLResult const SDLResultExpiredCertificate;
+
+/**
+ The provided hash ID does not match the hash of the current set of registered data or the core could not resume the previous data.
+ */
+extern SDLResult const SDLResultResumeFailed;
+
+/**
+ The requested data is not available on this vehicle or is not published for the connected app.
+ */
+extern SDLResult const SDLResultDataNotAvailable;
+
+/**
+ The requested data is read only thus cannot be change via remote control .
+ */
+extern SDLResult const SDLResultReadOnly;
+
+/**
+ The RPC request needs to be encrypted.
+ */
+extern SDLResult const SDLResultEncryptionNeeded;
diff --git a/SmartDeviceLink/SDLResult.m b/SmartDeviceLink/public/SDLResult.m
index 234fb4eea..234fb4eea 100644
--- a/SmartDeviceLink/SDLResult.m
+++ b/SmartDeviceLink/public/SDLResult.m
diff --git a/SmartDeviceLink/SDLSISData.h b/SmartDeviceLink/public/SDLSISData.h
index 1d645ebb2..1d645ebb2 100644
--- a/SmartDeviceLink/SDLSISData.h
+++ b/SmartDeviceLink/public/SDLSISData.h
diff --git a/SmartDeviceLink/SDLSISData.m b/SmartDeviceLink/public/SDLSISData.m
index c0ff47cbf..c0ff47cbf 100644
--- a/SmartDeviceLink/SDLSISData.m
+++ b/SmartDeviceLink/public/SDLSISData.m
diff --git a/SmartDeviceLink/public/SDLSamplingRate.h b/SmartDeviceLink/public/SDLSamplingRate.h
new file mode 100644
index 000000000..ced15ffc2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSamplingRate.h
@@ -0,0 +1,32 @@
+// SDLSamplingRate.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Describes different sampling rates for PerformAudioPassThru and AudioPassThruCapabilities
+
+ @since SDL 2.0
+ */
+typedef SDLEnum SDLSamplingRate NS_TYPED_ENUM;
+
+/**
+ Sampling rate of 8 kHz
+ */
+extern SDLSamplingRate const SDLSamplingRate8KHZ;
+
+/**
+ * Sampling rate of 16 kHz
+ */
+extern SDLSamplingRate const SDLSamplingRate16KHZ;
+
+/**
+ * Sampling rate of 22 kHz
+ */
+extern SDLSamplingRate const SDLSamplingRate22KHZ;
+
+/**
+ * Sampling rate of 44 kHz
+ */
+extern SDLSamplingRate const SDLSamplingRate44KHZ;
diff --git a/SmartDeviceLink/SDLSamplingRate.m b/SmartDeviceLink/public/SDLSamplingRate.m
index 6858e6e77..6858e6e77 100644
--- a/SmartDeviceLink/SDLSamplingRate.m
+++ b/SmartDeviceLink/public/SDLSamplingRate.m
diff --git a/SmartDeviceLink/public/SDLScreenManager.h b/SmartDeviceLink/public/SDLScreenManager.h
new file mode 100644
index 000000000..bd1c9597f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLScreenManager.h
@@ -0,0 +1,407 @@
+//
+// SDLScreenManager.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 3/5/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "NSNumber+NumberType.h"
+#import "SDLButtonName.h"
+#import "SDLInteractionMode.h"
+#import "SDLMenuManagerConstants.h"
+#import "SDLMetadataType.h"
+#import "SDLNotificationConstants.h"
+#import "SDLTextAlignment.h"
+
+@class SDLArtwork;
+@class SDLChoiceCell;
+@class SDLChoiceSet;
+@class SDLFileManager;
+@class SDLKeyboardProperties;
+@class SDLMenuCell;
+@class SDLMenuConfiguration;
+@class SDLOnButtonEvent;
+@class SDLOnButtonPress;
+@class SDLSoftButtonObject;
+@class SDLSystemCapabilityManager;
+@class SDLTemplateConfiguration;
+@class SDLVoiceCommand;
+
+@protocol SDLConnectionManagerType;
+@protocol SDLChoiceSetDelegate;
+@protocol SDLKeyboardDelegate;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The handler run when the update has completed
+
+ @param error An error if the update failed and an error occurred
+ */
+typedef void(^SDLScreenManagerUpdateCompletionHandler)(NSError *__nullable error);
+
+/**
+ Return an error with userinfo [key: SDLChoiceCell, value: NSError] if choices failed to upload
+
+ @param error The error if one occurred
+ */
+typedef void(^SDLPreloadChoiceCompletionHandler)(NSError *__nullable error);
+
+/// A handler run when the subscribe button has been selected
+///
+/// @param buttonPress Indicates whether this is a long or short button press event
+/// @param buttonEvent Indicates that the button has been depressed or released
+/// @param error The error if one occurred
+typedef void (^SDLSubscribeButtonHandler)(SDLOnButtonPress *_Nullable buttonPress, SDLOnButtonEvent *_Nullable buttonEvent, NSError *_Nullable error);
+
+/// The SDLScreenManager is a manager to control SDL UI features. Use the screen manager for setting up the UI of the template, creating a menu for your users, creating softbuttons, setting textfields, etc..
+@interface SDLScreenManager : NSObject
+
+#pragma mark Text and Graphics
+
+/**
+ The top text field within a template layout. Pass an empty string `\@""` to clear the text field.
+
+ If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
+
+ If 3 lines are available: [field1, field2, field3 - field 4]
+
+ If 2 lines are available: [field1 - field2, field3 - field4]
+
+ If 1 line is available: [field1 - field2 - field3 - field4]
+ */
+@property (copy, nonatomic, nullable) NSString *textField1;
+
+/**
+ The second text field within a template layout. Pass an empty string `\@""` to clear the text field.
+
+ If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
+
+ If 3 lines are available: [field1, field2, field3 - field 4]
+
+ If 2 lines are available: [field1 - field2, field3 - field4]
+
+ If 1 line is available: [field1 - field2 - field3 - field4]
+ */
+@property (copy, nonatomic, nullable) NSString *textField2;
+
+/**
+ The third text field within a template layout. Pass an empty string `\@""` to clear the text field.
+
+ If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
+
+ If 3 lines are available: [field1, field2, field3 - field 4]
+
+ If 2 lines are available: [field1 - field2, field3 - field4]
+
+ If 1 line is available: [field1 - field2 - field3 - field4]
+ */
+@property (copy, nonatomic, nullable) NSString *textField3;
+
+/**
+ The fourth text field within a template layout. Pass an empty string `\@""` to clear the text field.
+
+ If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
+
+ If 3 lines are available: [field1, field2, field3 - field 4]
+
+ If 2 lines are available: [field1 - field2, field3 - field4]
+
+ If 1 line is available: [field1 - field2 - field3 - field4]
+ */
+@property (copy, nonatomic, nullable) NSString *textField4;
+
+/**
+ The media text field available within the media layout. Often less emphasized than textField(1-4)
+ */
+@property (copy, nonatomic, nullable) NSString *mediaTrackTextField;
+
+/**
+ The primary graphic within a template layout
+ */
+@property (strong, nonatomic, nullable) SDLArtwork *primaryGraphic;
+
+/**
+ A secondary graphic used in some template layouts
+ */
+@property (strong, nonatomic, nullable) SDLArtwork *secondaryGraphic;
+
+/**
+ What alignment textField(1-4) should use
+ */
+@property (copy, nonatomic) SDLTextAlignment textAlignment;
+
+/**
+ The type of data textField1 describes
+ */
+@property (copy, nonatomic, nullable) SDLMetadataType textField1Type;
+
+/**
+ The type of data textField2 describes
+ */
+@property (copy, nonatomic, nullable) SDLMetadataType textField2Type;
+
+/**
+ The type of data textField3 describes
+ */
+@property (copy, nonatomic, nullable) SDLMetadataType textField3Type;
+
+/**
+ The type of data textField4 describes
+ */
+@property (copy, nonatomic, nullable) SDLMetadataType textField4Type;
+
+/**
+ The title of the current template layout.
+ */
+@property (copy, nonatomic, nullable) NSString *title;
+
+#pragma mark Soft Buttons
+
+/**
+ The current list of soft buttons within a template layout. Set this array to change the displayed soft buttons.
+ */
+@property (copy, nonatomic) NSArray<SDLSoftButtonObject *> *softButtonObjects;
+
+#pragma mark Menu
+
+/**
+ Configures the layout of the menu and sub-menus. If set after a menu already exists, the existing main menu layout will be updated.
+
+ If set menu layouts don't match available menu layouts in WindowCapability, an error log will be emitted and the layout will not be set.
+
+ Setting this parameter will send a message to the remote system. This value will be set immediately, but if that message is rejected, the original value will be re-set and an error log will be emitted.
+
+ This only works on head units supporting RPC spec version 6.0 and newer. If the connected head unit does not support this feature, a warning log will be emitted and nothing will be set.
+ */
+@property (strong, nonatomic) SDLMenuConfiguration *menuConfiguration;
+
+/**
+ The current list of menu cells displayed in the app's menu.
+ */
+@property (copy, nonatomic) NSArray<SDLMenuCell *> *menu;
+
+/**
+Change the mode of the dynamic menu updater to be enabled, disabled, or enabled on known compatible head units.
+
+The current status for dynamic menu updates. A dynamic menu update allows for smarter building of menu changes. If this status is set to `SDLDynamicMenuUpdatesModeForceOn`, menu updates will only create add commands for new items and delete commands for items no longer appearing in the menu. This helps reduce possible RPCs failures as there will be significantly less commands sent to the HMI.
+
+If set to `SDLDynamicMenuUpdatesModeForceOff`, menu updates will work the legacy way. This means when a new menu is set the entire old menu is deleted and add commands are created for every item regarldess if the item appears in both the old and new menu. This method is RPCs heavy and may cause some failures when creating and updating large menus.
+
+ We recommend using either `SDLDynamicMenuUpdatesModeOnWithCompatibility` or `SDLDynamicMenuUpdatesModeForceOn`. `SDLDynamicMenuUpdatesModeOnWithCompatibility` turns dynamic updates off for head units that we know have poor compatibility with dynamic updates (e.g. they have bugs that cause menu items to not be placed correctly).
+ */
+@property (assign, nonatomic) SDLDynamicMenuUpdatesMode dynamicMenuUpdatesMode;
+
+/**
+ The current list of voice commands available for the user to speak and be recognized by the IVI's voice recognition engine.
+ */
+@property (copy, nonatomic) NSArray<SDLVoiceCommand *> *voiceCommands;
+
+#pragma mark Choice Sets
+
+/**
+ The default keyboard configuration, this can be additionally customized by each SDLKeyboardDelegate.
+ */
+@property (strong, nonatomic, null_resettable) SDLKeyboardProperties *keyboardConfiguration;
+
+/**
+ Cells will be hashed by their text, image names, and VR command text. When assembling an SDLChoiceSet, you can pull objects from here, or recreate them. The preloaded versions will be used so long as their text, image names, and VR commands are the same.
+ */
+@property (copy, nonatomic, readonly) NSSet<SDLChoiceCell *> *preloadedChoices;
+
+
+#pragma mark - Methods
+
+#pragma mark Lifecycle
+
+/**
+ Initialize a screen manager
+
+ @warning For internal use
+
+ @param connectionManager The connection manager used to send RPCs
+ @param fileManager The file manager used to upload files
+ @param systemCapabilityManager The system capability manager object for reading window capabilities
+ @return The screen manager
+ */
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager;
+
+/**
+ Starts the manager and all sub-managers
+
+ @param handler The handler called when setup is complete
+ */
+- (void)startWithCompletionHandler:(void(^)(NSError * _Nullable error))handler;
+
+/**
+ Stops the manager.
+
+ @warning For internal use
+ */
+- (void)stop;
+
+#pragma mark - Text and Graphic
+/**
+ Delays all screen updates until endUpdatesWithCompletionHandler: is called.
+ */
+- (void)beginUpdates;
+
+/**
+ Pairs with `beginUpdates:` to batch text, graphic, and layout changes into a single update with a callback when the update is complete.
+
+ Update text fields with new text set into the text field properties, updates the primary and secondary images with new image(s) if new one(s) been set, and updates the template if one was changed using `changeLayout:withCompletionHandler:`.
+
+ NOTE: The handler in `changeLayout:withCompletionHandler:` will not be called if the update is batched into this update.
+ */
+- (void)endUpdates;
+
+/**
+ Pairs with `beginUpdates:` to batch text, graphic, and layout changes into a single update with a callback when the update is complete.
+
+ Update text fields with new text set into the text field properties, updates the primary and secondary images with new image(s) if new one(s) been set, and updates the template if one was changed using `changeLayout:withCompletionHandler:`.
+
+ NOTE: The handler in `changeLayout:withCompletionHandler:` will not be called if the update is batched into this update.
+
+ NOTE: If this update returns an error, it may have been superseded by another update. This means that it was cancelled while in-progress because another update was requested, whether batched or not. Check for error domain `SDLErrorDomainTextAndGraphicManager` and code `SDLTextAndGraphicManagerErrorPendingUpdateSuperseded` to determine if your update was superseded. Any other error should represent a rejection of your data to be presented by the head unit. Note that if your update is superseded, it's possible that the update will succeed or fail later. If you have set a handler for your update which superseded this update, the error or success will be represented there.
+
+ @param handler A handler run when the fields have finished updating, with an error if the update failed. This handler may be called multiple times when the text update is sent and the image update is sent.
+ */
+- (void)endUpdatesWithCompletionHandler:(nullable SDLScreenManagerUpdateCompletionHandler)handler;
+
+#pragma mark - Change Layout
+
+/// Change the current layout to a new layout and optionally update the layout's night and day color schemes. The values set for the text, graphics, buttons and template title persist between layout changes. To update the text, graphics, buttons and template title at the same time as the template, batch all the updates between `beginUpdates` and `endUpdates`. If the layout update fails while batching, then the updated text, graphics, buttons or template title will also not be updated.
+///
+/// If you are connected on a < v6.0 connection and batching the update, the layout will be updated, then the text and graphics will be updated. If you are connected on a >= v6.0 connection, the layout will be updated at the same time that the text and graphics are updated.
+///
+/// If this update is batched between `beginUpdates` and `endUpdatesWithCompletionHandler:`, the completion handler here will not be called. Use the completion handler on `endUpdatesWithCompletionHandler:`
+///
+/// NOTE: If this update returns an error, it may have been superseded by another update. This means that it was cancelled while in-progress because another update was requested, whether batched or not. Check for error domain `SDLErrorDomainTextAndGraphicManager` and code `SDLTextAndGraphicManagerErrorPendingUpdateSuperseded` to determine if your update was superseded. Any other error should represent a rejection of your data to be presented by the head unit. Note that if your update is superseded, it's possible that the update will succeed or fail later. If you have set a handler for your update which superseded this update, the error or success will be represented there.
+///
+/// @param templateConfiguration The new configuration of the template, including the layout and color scheme.
+/// @param handler A handler that will be called when the layout change finished.
+- (void)changeLayout:(SDLTemplateConfiguration *)templateConfiguration withCompletionHandler:(nullable SDLScreenManagerUpdateCompletionHandler)handler;
+
+#pragma mark - Soft Buttons
+
+/// Retrieve a SoftButtonObject based on its name.
+/// @param name The name of the button
+- (nullable SDLSoftButtonObject *)softButtonObjectNamed:(NSString *)name;
+
+#pragma mark - Subscribe Buttons
+
+/// Subscribes to a subscribe button. The update handler will be called when the button has been selected. If there is an error subscribing to the subscribe button it will be returned in the `error` parameter of the updateHandler.
+/// @param buttonName The name of the hard button to subscribe to
+/// @param updateHandler The block run when the subscribe button is selected
+/// @return An object that can be used to unsubscribe the block using `unsubscribeButtonWithObserver:withCompletionHandler:`.
+- (id<NSObject>)subscribeButton:(SDLButtonName)buttonName withUpdateHandler:(SDLSubscribeButtonHandler)updateHandler;
+
+/// Subscribes to a subscribe button. The selector will be called when the button has been selected. If there is an error subscribing to the subscribe button it will be returned in the `error` parameter of the selector.
+///
+/// The selector supports the following parameters:
+///
+/// 1. A selector with no parameters. The observer will be notified when a button press occurs (it will not know if a short or long press has occurred).
+///
+/// 2. A selector with one parameter: (SDLButtonName). The observer will be notified when a button press occurs (both a short and long press will trigger the selector, but it will not be able to distinguish between them). It will not be notified of button events.
+///
+/// 3. A selector with two parameters: (SDLButtonName, NSError). The observer will be notified when a button press occurs (both a short and long press will trigger the selector, but it will not be able to distinguish between them). It will not be notified of button events.
+///
+/// 4. A selector with three parameters: (SDLButtonName, NSError, SDLOnButtonPress). The observer will be notified when a long or short button press occurs (and can distinguish between a short or long press), but will not be notified of individual button events.
+///
+/// 5. A selector with four parameters: (SDLButtonName, NSError, SDLOnButtonPress, SDLOnButtonEvent). The observer will be notified when any button press or any button event occurs (and can distinguish between them).
+///
+/// To unsubscribe from the hard button, call `unsubscribeButton:withObserver:withCompletionHandler:`.
+///
+/// @param buttonName The name of the hard button to subscribe to
+/// @param observer The object that will have `selector` called whenever the button has been selected
+/// @param selector The selector on `observer` that will be called whenever the button has been selected
+- (void)subscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer selector:(SEL)selector;
+
+/// Unsubscribes to a subscribe button. Please note that if a subscribe button has multiple subscribers the observer will no longer get notifications, however, the app will still be subscribed to the hard button until the last subscriber is removed.
+/// @param buttonName The name of the hard button to subscribe to
+/// @param observer The object that will be unsubscribed. If a block was subscribed, the return value should be passed. If a selector was subscribed, the observer object should be passed
+/// @param completionHandler A handler called when the observer has been unsubscribed to the hard button
+- (void)unsubscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer withCompletionHandler:(SDLScreenManagerUpdateCompletionHandler)completionHandler;
+
+#pragma mark - Choice Sets
+
+/**
+ Preload cells to the head unit. This will *greatly* reduce the time taken to present a choice set. Any already matching a choice already on the head unit will be ignored. You *do not* need to wait until the completion handler is called to present a choice set containing choices being loaded. The choice set will wait until the preload completes and then immediately present.
+
+ @param choices The choices to be preloaded.
+ @param handler The handler to be called when complete.
+ */
+- (void)preloadChoices:(NSArray<SDLChoiceCell *> *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler;
+
+/**
+ Delete loaded cells from the head unit. If the cells don't exist on the head unit they will be ignored.
+
+ @param choices The choices to be deleted. These will be matched via a hash of the text, image name(s), and VR commands.
+ */
+- (void)deleteChoices:(NSArray<SDLChoiceCell *> *)choices;
+
+/**
+ Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you're lazy...for real though, it's kind of confusing to the user and isn't recommended.
+
+ If the cells in the set are not already preloaded, they will be preloaded before the presentation occurs; this could take a while depending on the contents of the cells.
+
+ If the cells have voice commands and images attached, this could take upwards of 10 seconds. If there are no cells on the set, this will fail, calling `choiceSet:didReceiveError:` on the choice set delegate.
+
+ @param choiceSet The set to be displayed
+ @param mode If the set should be presented for the user to interact via voice, touch, or both
+ */
+- (void)presentChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode;
+
+/**
+ Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you're lazy...for real though, it's kind of confusing to the user and isn't recommended.
+
+ This presents the choice set as searchable when in a touch interaction. The user, when not in a distracted state, will have a keyboard available for searching this set. The user's input in the keyboard will be available in the SDLKeyboardDelegate.
+
+ If the cells in the set are not already preloaded, they will be preloaded before the presentation occurs; this could take a while depending on the contents of the cells.
+
+ If the cells have voice commands and images attached, this could take upwards of 10 seconds. If there are no cells on the set, this will fail, calling `choiceSet:didReceiveError:` on the choice set delegate.
+
+ @param choiceSet The set to be displayed
+ @param mode If the set should be presented for the user to interact via voice, touch, or both
+ @param delegate The keyboard delegate called when the user interacts with the search field of the choice set
+ */
+- (void)presentSearchableChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode withKeyboardDelegate:(id<SDLKeyboardDelegate>)delegate;
+
+/**
+ Present a keyboard-only interface to the user and receive input. The user will be able to input text in the keyboard when in a non-driver distraction situation.
+
+ @param initialText The initial text within the keyboard input field. It will disappear once the user selects the field in order to enter text
+ @param delegate The keyboard delegate called when the user interacts with the keyboard
+ @return A unique cancelID that can be used to cancel this keyboard
+ */
+- (nullable NSNumber<SDLInt> *)presentKeyboardWithInitialText:(NSString *)initialText delegate:(id<SDLKeyboardDelegate>)delegate;
+
+/**
+ Cancels the keyboard-only interface if it is currently showing. If the keyboard has not yet been sent to Core, it will not be sent.
+
+ This will only dismiss an already presented keyboard if connected to head units running SDL 6.0+.
+
+ @param cancelID The unique ID assigned to the keyboard, passed as the return value from `presentKeyboardWithInitialText:keyboardDelegate:`
+ */
+- (void)dismissKeyboardWithCancelID:(NSNumber<SDLInt> *)cancelID;
+
+#pragma mark - Menu
+
+/**
+ Present the top-level of your application menu. This method should be called if the menu needs to be opened programmatically because the built in menu button is hidden.
+ */
+- (BOOL)openMenu;
+
+/**
+ Present the application menu. This method should be called if the menu needs to be opened programmatically because the built in menu button is hidden. You must update the menu with the proper cells before calling this method. This RPC will fail if the cell does not contain a sub menu, or is not in the menu array.
+
+@param cell The submenu cell that should be opened as a sub menu, with its sub cells as the options.
+ */
+- (BOOL)openSubmenu:(SDLMenuCell *)cell;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLScreenManager.m b/SmartDeviceLink/public/SDLScreenManager.m
new file mode 100644
index 000000000..a8792e2fa
--- /dev/null
+++ b/SmartDeviceLink/public/SDLScreenManager.m
@@ -0,0 +1,331 @@
+//
+// SDLScreenManager.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 3/5/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLScreenManager.h"
+#import "SDLArtwork.h"
+#import "SDLChoiceSetManager.h"
+#import "SDLMenuManager.h"
+#import "SDLSoftButtonManager.h"
+#import "SDLSubscribeButtonManager.h"
+#import "SDLTextAndGraphicManager.h"
+#import "SDLVoiceCommandManager.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLScreenManager()
+
+@property (strong, nonatomic) SDLTextAndGraphicManager *textAndGraphicManager;
+@property (strong, nonatomic) SDLSoftButtonManager *softButtonManager;
+@property (strong, nonatomic) SDLMenuManager *menuManager;
+@property (strong, nonatomic) SDLVoiceCommandManager *voiceCommandMenuManager;
+@property (strong, nonatomic) SDLChoiceSetManager *choiceSetManager;
+@property (strong, nonatomic) SDLSubscribeButtonManager *subscribeButtonManager;
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+@property (weak, nonatomic) SDLFileManager *fileManager;
+@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
+
+@end
+
+@implementation SDLScreenManager
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager systemCapabilityManager:(SDLSystemCapabilityManager *)systemCapabilityManager {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _connectionManager = connectionManager;
+ _fileManager = fileManager;
+ _systemCapabilityManager = systemCapabilityManager;
+
+ _textAndGraphicManager = [[SDLTextAndGraphicManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
+ _softButtonManager = [[SDLSoftButtonManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
+ _subscribeButtonManager = [[SDLSubscribeButtonManager alloc] initWithConnectionManager:connectionManager];
+ _menuManager = [[SDLMenuManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
+ _voiceCommandMenuManager = [[SDLVoiceCommandManager alloc] initWithConnectionManager:connectionManager];
+ _choiceSetManager = [[SDLChoiceSetManager alloc] initWithConnectionManager:connectionManager fileManager:fileManager systemCapabilityManager:systemCapabilityManager];
+
+ return self;
+}
+
+- (void)startWithCompletionHandler:(void (^)(NSError * _Nullable))handler {
+ [self.textAndGraphicManager start];
+ [self.softButtonManager start];
+ [self.menuManager start];
+ [self.choiceSetManager start];
+ [self.subscribeButtonManager start];
+
+ handler(nil);
+}
+
+- (void)stop {
+ [self.textAndGraphicManager stop];
+ [self.softButtonManager stop];
+ [self.menuManager stop];
+ [self.voiceCommandMenuManager stop];
+ [self.choiceSetManager stop];
+ [self.subscribeButtonManager stop];
+}
+
+#pragma mark - Setters
+
+- (void)setTextField1:(nullable NSString *)textField1 {
+ self.textAndGraphicManager.textField1 = textField1;
+ self.softButtonManager.currentMainField1 = textField1;
+}
+
+- (void)setTextField2:(nullable NSString *)textField2 {
+ self.textAndGraphicManager.textField2 = textField2;
+}
+
+- (void)setTextField3:(nullable NSString *)textField3 {
+ self.textAndGraphicManager.textField3 = textField3;
+}
+
+- (void)setTextField4:(nullable NSString *)textField4 {
+ self.textAndGraphicManager.textField4 = textField4;
+}
+
+- (void)setMediaTrackTextField:(nullable NSString *)mediaTrackTextField {
+ self.textAndGraphicManager.mediaTrackTextField = mediaTrackTextField;
+}
+
+- (void)setPrimaryGraphic:(nullable SDLArtwork *)primaryGraphic {
+ if (primaryGraphic == nil) {
+ self.textAndGraphicManager.primaryGraphic = self.textAndGraphicManager.blankArtwork;
+ return;
+ }
+
+ self.textAndGraphicManager.primaryGraphic = primaryGraphic;
+}
+
+- (void)setSecondaryGraphic:(nullable SDLArtwork *)secondaryGraphic {
+ if (secondaryGraphic == nil) {
+ self.textAndGraphicManager.secondaryGraphic = self.textAndGraphicManager.blankArtwork;
+ return;
+ }
+
+ self.textAndGraphicManager.secondaryGraphic = secondaryGraphic;
+}
+
+- (void)setTextAlignment:(SDLTextAlignment)textAlignment {
+ self.textAndGraphicManager.alignment = textAlignment;
+}
+
+- (void)setTextField1Type:(nullable SDLMetadataType)textField1Type {
+ self.textAndGraphicManager.textField1Type = textField1Type;
+}
+
+- (void)setTextField2Type:(nullable SDLMetadataType)textField2Type {
+ self.textAndGraphicManager.textField2Type = textField2Type;
+}
+
+- (void)setTextField3Type:(nullable SDLMetadataType)textField3Type {
+ self.textAndGraphicManager.textField3Type = textField3Type;
+}
+
+- (void)setTextField4Type:(nullable SDLMetadataType)textField4Type {
+ self.textAndGraphicManager.textField4Type = textField4Type;
+}
+
+- (void)setTitle:(nullable NSString *)title {
+ self.textAndGraphicManager.title = title;
+}
+
+- (void)setSoftButtonObjects:(NSArray<SDLSoftButtonObject *> *)softButtonObjects {
+ self.softButtonManager.softButtonObjects = softButtonObjects;
+}
+
+- (void)setMenuConfiguration:(SDLMenuConfiguration *)menuConfiguration {
+ self.menuManager.menuConfiguration = menuConfiguration;
+}
+
+- (void)setMenu:(NSArray<SDLMenuCell *> *)menu {
+ self.menuManager.menuCells = menu;
+}
+
+- (void)setVoiceCommands:(NSArray<SDLVoiceCommand *> *)voiceCommands {
+ self.voiceCommandMenuManager.voiceCommands = voiceCommands;
+}
+
+- (void)setKeyboardConfiguration:(nullable SDLKeyboardProperties *)keyboardConfiguration {
+ self.choiceSetManager.keyboardConfiguration = keyboardConfiguration;
+}
+
+- (void)setDynamicMenuUpdatesMode:(SDLDynamicMenuUpdatesMode)dynamicMenuUpdatesMode {
+ self.menuManager.dynamicMenuUpdatesMode = dynamicMenuUpdatesMode;
+}
+
+#pragma mark - Getters
+
+- (nullable NSString *)textField1 {
+ return _textAndGraphicManager.textField1;
+}
+
+- (nullable NSString *)textField2 {
+ return _textAndGraphicManager.textField2;
+}
+
+- (nullable NSString *)textField3 {
+ return _textAndGraphicManager.textField3;
+}
+
+- (nullable NSString *)textField4 {
+ return _textAndGraphicManager.textField4;
+}
+
+- (nullable NSString *)mediaTrackTextField {
+ return _textAndGraphicManager.mediaTrackTextField;
+}
+
+- (nullable SDLArtwork *)primaryGraphic {
+ if ([_textAndGraphicManager.primaryGraphic.name isEqualToString:_textAndGraphicManager.blankArtwork.name]) {
+ return nil;
+ }
+
+ return _textAndGraphicManager.primaryGraphic;
+}
+
+- (nullable SDLArtwork *)secondaryGraphic {
+ if ([_textAndGraphicManager.secondaryGraphic.name isEqualToString:_textAndGraphicManager.blankArtwork.name]) {
+ return nil;
+ }
+
+ return _textAndGraphicManager.secondaryGraphic;
+}
+
+- (SDLTextAlignment)alignment {
+ return _textAndGraphicManager.alignment;
+}
+
+- (nullable SDLMetadataType)textField1Type {
+ return _textAndGraphicManager.textField1Type;
+}
+
+- (nullable SDLMetadataType)textField2Type {
+ return _textAndGraphicManager.textField2Type;
+}
+
+- (nullable SDLMetadataType)textField3Type {
+ return _textAndGraphicManager.textField3Type;
+}
+
+- (nullable SDLMetadataType)textField4Type {
+ return _textAndGraphicManager.textField4Type;
+}
+
+- (nullable NSString *)title {
+ return _textAndGraphicManager.title;
+}
+
+- (NSArray<SDLSoftButtonObject *> *)softButtonObjects {
+ return _softButtonManager.softButtonObjects;
+}
+
+- (SDLMenuConfiguration *)menuConfiguration {
+ return _menuManager.menuConfiguration;
+}
+
+- (NSArray<SDLMenuCell *> *)menu {
+ return _menuManager.menuCells;
+}
+
+- (NSArray<SDLVoiceCommand *> *)voiceCommands {
+ return _voiceCommandMenuManager.voiceCommands;
+}
+
+- (NSSet<SDLChoiceCell *> *)preloadedChoices {
+ return _choiceSetManager.preloadedChoices;
+}
+
+- (SDLKeyboardProperties *)keyboardConfiguration {
+ return _choiceSetManager.keyboardConfiguration;
+}
+
+#pragma mark - Begin / End Updates
+
+- (void)beginUpdates {
+ self.softButtonManager.batchUpdates = YES;
+ self.textAndGraphicManager.batchUpdates = YES;
+}
+
+- (void)endUpdates {
+ [self endUpdatesWithCompletionHandler:nil];
+}
+
+- (void)endUpdatesWithCompletionHandler:(nullable SDLScreenManagerUpdateCompletionHandler)handler {
+ self.softButtonManager.batchUpdates = NO;
+ self.textAndGraphicManager.batchUpdates = NO;
+
+ [self.textAndGraphicManager updateWithCompletionHandler:handler];
+}
+
+#pragma mark - Change Layout
+
+- (void)changeLayout:(SDLTemplateConfiguration *)templateConfiguration withCompletionHandler:(nullable SDLScreenManagerUpdateCompletionHandler)handler {
+ [self.textAndGraphicManager changeLayout:templateConfiguration withCompletionHandler:handler];
+}
+
+#pragma mark - Subscribe Buttons
+
+- (id<NSObject>)subscribeButton:(SDLButtonName)buttonName withUpdateHandler:(SDLSubscribeButtonHandler)updateHandler {
+ return [self.subscribeButtonManager subscribeButton:buttonName withUpdateHandler:updateHandler];
+}
+
+- (void)subscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer selector:(SEL)selector {
+ [self.subscribeButtonManager subscribeButton:buttonName withObserver:observer selector:selector];
+}
+
+- (void)unsubscribeButton:(SDLButtonName)buttonName withObserver:(id<NSObject>)observer withCompletionHandler:(SDLScreenManagerUpdateCompletionHandler)completionHandler {
+ [self.subscribeButtonManager unsubscribeButton:buttonName withObserver:observer withCompletionHandler:completionHandler];
+}
+
+#pragma mark - Soft Buttons
+
+- (nullable SDLSoftButtonObject *)softButtonObjectNamed:(NSString *)name {
+ return [self.softButtonManager softButtonObjectNamed:name];
+}
+
+#pragma mark - Choice Sets
+
+- (void)deleteChoices:(NSArray<SDLChoiceCell *> *)choices {
+ [self.choiceSetManager deleteChoices:choices];
+}
+
+- (void)preloadChoices:(NSArray<SDLChoiceCell *> *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler {
+ [self.choiceSetManager preloadChoices:choices withCompletionHandler:handler];
+}
+
+- (void)presentChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode {
+ [self.choiceSetManager presentChoiceSet:choiceSet mode:mode withKeyboardDelegate:nil];
+}
+
+- (void)presentSearchableChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode withKeyboardDelegate:(id<SDLKeyboardDelegate>)delegate {
+ [self.choiceSetManager presentChoiceSet:choiceSet mode:mode withKeyboardDelegate:delegate];
+}
+
+- (nullable NSNumber<SDLInt> *)presentKeyboardWithInitialText:(NSString *)initialText delegate:(id<SDLKeyboardDelegate>)delegate {
+ return [self.choiceSetManager presentKeyboardWithInitialText:initialText delegate:delegate];
+}
+
+- (void)dismissKeyboardWithCancelID:(NSNumber<SDLInt> *)cancelID{
+ [self.choiceSetManager dismissKeyboardWithCancelID:cancelID];
+}
+
+#pragma mark - Menu
+
+- (BOOL)openMenu {
+ return [self.menuManager openMenu];
+}
+
+- (BOOL)openSubmenu:(SDLMenuCell *)cell {
+ return [self.menuManager openSubmenu:cell];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLScreenParams.h b/SmartDeviceLink/public/SDLScreenParams.h
index 1a4969b91..1a4969b91 100644
--- a/SmartDeviceLink/SDLScreenParams.h
+++ b/SmartDeviceLink/public/SDLScreenParams.h
diff --git a/SmartDeviceLink/SDLScreenParams.m b/SmartDeviceLink/public/SDLScreenParams.m
index 5a99d0aea..5a99d0aea 100644
--- a/SmartDeviceLink/SDLScreenParams.m
+++ b/SmartDeviceLink/public/SDLScreenParams.m
diff --git a/SmartDeviceLink/public/SDLScrollableMessage.h b/SmartDeviceLink/public/SDLScrollableMessage.h
new file mode 100644
index 000000000..a81dd0393
--- /dev/null
+++ b/SmartDeviceLink/public/SDLScrollableMessage.h
@@ -0,0 +1,78 @@
+// SDLScrollableMessage.h
+//
+
+
+#import "SDLRPCRequest.h"
+
+@class SDLSoftButton;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Creates a full screen overlay containing a large block of formatted text that can be scrolled with buttons available.
+
+ If connecting to SDL Core v.6.0+, the scrollable message can be canceled programmatically using the `cancelID`. On older versions of SDL Core, the scrollable message will persist until the user has interacted with the scrollable message or the specified timeout has elapsed.
+
+ @since SDL 2.0
+ */
+@interface SDLScrollableMessage : SDLRPCRequest
+
+/**
+ Convenience init for creating a scrolling message with text.
+
+ @param message Body of text that can include newlines and tabs
+ @return A SDLScrollableMessage object
+ */
+- (instancetype)initWithMessage:(NSString *)message;
+
+/**
+ Convenience init for creating a scrolling message with text and buttons.
+
+ @param message Body of text that can include newlines and tabs
+ @param timeout Indicates how long of a timeout from the last action (i.e. scrolling message resets timeout)
+ @param softButtons Buttons for the displayed scrollable message
+ @param cancelID An ID for this specific scrollable message to allow cancellation through the `CancelInteraction` RPC
+ @return A SDLScrollableMessage object
+ */
+- (instancetype)initWithMessage:(NSString *)message timeout:(UInt16)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(UInt32)cancelID;
+
+/**
+ Body of text that can include newlines and tabs.
+
+ String, Required, Max length 500 chars
+
+ @since SDL 2.0
+ */
+@property (strong, nonatomic) NSString *scrollableMessageBody;
+
+/**
+ App defined timeout. Indicates how long of a timeout from the last action (i.e. scrolling message resets timeout). If not set, a default value of 30 seconds is used by Core.
+
+ Integer, Optional, Min value: 1000, Max value: 65535, Default value: 30000
+
+ @since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *timeout;
+
+/**
+ Buttons for the displayed scrollable message. If omitted on supported displays, only the system defined "Close" SoftButton will be displayed.
+
+ Array of SDLSoftButton, Optional, Array size: 0-8
+
+ Since SDL 2.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSoftButton *> *softButtons;
+
+/**
+ An ID for this specific scrollable message to allow cancellation through the `CancelInteraction` RPC.
+
+ Integer, Optional
+
+ @see SDLCancelInteraction
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLScrollableMessage.m b/SmartDeviceLink/public/SDLScrollableMessage.m
new file mode 100644
index 000000000..ef0208beb
--- /dev/null
+++ b/SmartDeviceLink/public/SDLScrollableMessage.m
@@ -0,0 +1,82 @@
+// SDLScrollableMessage.m
+//
+
+
+#import "SDLScrollableMessage.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLSoftButton.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLScrollableMessage
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameScrollableMessage]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithScrollableMessageBody:(NSString *)message timeout:(nullable NSNumber *)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(nullable NSNumber *)cancelID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.scrollableMessageBody = message;
+ self.timeout = timeout;
+ self.softButtons = softButtons;
+ self.cancelID = cancelID;
+
+ return self;
+}
+
+- (instancetype)initWithMessage:(NSString *)message timeout:(UInt16)timeout softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(UInt32)cancelID {
+ return [self initWithScrollableMessageBody:message timeout:@(timeout) softButtons:softButtons cancelID:@(cancelID)];
+}
+
+- (instancetype)initWithMessage:(NSString *)message {
+ return [self initWithScrollableMessageBody:message timeout:nil softButtons:nil cancelID:nil];
+}
+
+- (void)setScrollableMessageBody:(NSString *)scrollableMessageBody {
+ [self.parameters sdl_setObject:scrollableMessageBody forName:SDLRPCParameterNameScrollableMessageBody];
+}
+
+- (NSString *)scrollableMessageBody {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameScrollableMessageBody ofClass:NSString.class error:&error];
+}
+
+- (void)setTimeout:(nullable NSNumber<SDLInt> *)timeout {
+ [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout];
+}
+
+- (nullable NSNumber<SDLInt> *)timeout {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSoftButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
+ [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons];
+}
+
+- (nullable NSArray<SDLSoftButton *> *)softButtons {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil];
+}
+
+- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
+ [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
+}
+
+- (nullable NSNumber<SDLInt> *)cancelID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLScrollableMessageResponse.h b/SmartDeviceLink/public/SDLScrollableMessageResponse.h
index 4da587c1b..4da587c1b 100644
--- a/SmartDeviceLink/SDLScrollableMessageResponse.h
+++ b/SmartDeviceLink/public/SDLScrollableMessageResponse.h
diff --git a/SmartDeviceLink/SDLScrollableMessageResponse.m b/SmartDeviceLink/public/SDLScrollableMessageResponse.m
index df9112711..df9112711 100644
--- a/SmartDeviceLink/SDLScrollableMessageResponse.m
+++ b/SmartDeviceLink/public/SDLScrollableMessageResponse.m
diff --git a/SmartDeviceLink/public/SDLSeatControlCapabilities.h b/SmartDeviceLink/public/SDLSeatControlCapabilities.h
new file mode 100644
index 000000000..b85d9b3cb
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatControlCapabilities.h
@@ -0,0 +1,167 @@
+// SDLSeatControlCapabilities.h
+//
+
+
+#import "SDLRPCStruct.h"
+#import "SDLModuleInfo.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Include information about a seat control capabilities.
+ */
+@interface SDLSeatControlCapabilities : SDLRPCStruct
+
+/// Constructs a newly allocated SDLSeatControlCapabilities object with moduleName and moduleInfo
+///
+/// @param moduleName The short friendly name of the module.
+/// @param moduleInfo Information about a RC module, including its id
+/// @return An SDLSeatControlCapabilities object
+- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo;
+
+/// Constructs a newly allocated SDLSeatControlCapabilities object with all parameters
+///
+/// @param moduleName The short friendly name of the module.
+/// @param moduleInfo Information about a RC module, including its id
+/// @param heatingEnabledAvail Whether or not heating is available
+/// @param coolingEnabledAvail Whether or not heating is available
+/// @param heatingLevelAvail Whether or not heating level is available
+/// @param coolingLevelAvail Whether or not cooling level is available
+/// @param horizontalPositionAvail Whether or not horizontal Position is aavailable
+/// @param verticalPositionAvail Whether or not vertical position is available
+/// @param frontVerticalPositionAvail Whether or not front vertical position is available
+/// @param backVerticalPositionAvail Whether or not back vertical position is available
+/// @param backTitlAngleAvail Whether or not backTilt angle is available
+/// @param headSupportHorizontalPositionAvail Whether or not head supports for horizontal position is available
+/// @param headSupportVerticalPositionAvail Whether or not head supports for vertical position is available
+/// @param massageEnabledAvail Whether or not massage enabled is available
+/// @param massageModeAvail Whether or not massage mode is available
+/// @param massageCushionFirmnessAvail Whether or not massage cushion firmness is available
+/// @param memoryAvail Whether or not massage cushion firmness is available
+/// @return An SDLSeatControlCapabilities object
+- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo heatingEnabledAvailable:(BOOL)heatingEnabledAvail
+ coolingEnabledAvailable:(BOOL)coolingEnabledAvail heatingLevelAvailable:(BOOL)heatingLevelAvail coolingLevelAvailable:(BOOL)coolingLevelAvail horizontalPositionAvailable:(BOOL)horizontalPositionAvail verticalPositionAvailable:(BOOL)verticalPositionAvail frontVerticalPositionAvailable:(BOOL)frontVerticalPositionAvail backVerticalPositionAvailable:(BOOL)backVerticalPositionAvail backTiltAngleAvailable:(BOOL)backTitlAngleAvail headSupportHorizontalPositionAvailable:(BOOL)headSupportHorizontalPositionAvail headSupportVerticalPositionAvailable:(BOOL)headSupportVerticalPositionAvail massageEnabledAvailable:(BOOL)massageEnabledAvail massageModeAvailable:(BOOL)massageModeAvail massageCushionFirmnessAvailable:(BOOL)massageCushionFirmnessAvail memoryAvailable:(BOOL)memoryAvail;
+
+/**
+ * @abstract The short friendly name of the light control module.
+ * It should not be used to identify a module by mobile application.
+ *
+ * Required, Max length 100 chars
+ */
+@property (strong, nonatomic) NSString *moduleName;
+
+/**
+ * @abstract Whether or not heating is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatingEnabledAvailable;
+
+/**
+ * @abstract Whether or not cooling is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *coolingEnabledAvailable;
+
+/**
+ * @abstract Whether or not heating level is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatingLevelAvailable;
+
+/**
+ * @abstract Whether or not cooling level is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *coolingLevelAvailable;
+
+/**
+ * @abstract Whether or not horizontal Position is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *horizontalPositionAvailable;
+
+/**
+ * @abstract Whether or not vertical Position is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *verticalPositionAvailable;
+
+/**
+ * @abstract Whether or not front Vertical Position is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *frontVerticalPositionAvailable;
+
+/**
+ * @abstract Whether or not back Vertical Position is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *backVerticalPositionAvailable;
+
+/**
+ * @abstract Whether or not backTilt Angle Available is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *backTiltAngleAvailable;
+
+/**
+ * @abstract Whether or not head Supports for Horizontal Position is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *headSupportHorizontalPositionAvailable;
+
+/**
+ * @abstract Whether or not head Supports for Vertical Position is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *headSupportVerticalPositionAvailable;
+
+/**
+ * @abstract Whether or not massage Enabled is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageEnabledAvailable;
+
+/**
+ * @abstract Whether or not massage Mode is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageModeAvailable;
+
+/**
+ * @abstract Whether or not massage Cushion Firmness is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageCushionFirmnessAvailable;
+
+/**
+ * @abstract Whether or not memory is Available.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *memoryAvailable;
+
+/**
+ * @abstract Information about a RC module, including its id.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLModuleInfo *moduleInfo;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSeatControlCapabilities.m b/SmartDeviceLink/public/SDLSeatControlCapabilities.m
new file mode 100644
index 000000000..d7fec07ce
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatControlCapabilities.m
@@ -0,0 +1,215 @@
+// SDLSeatControlCapabilities.m
+//
+
+#import "SDLSeatControlCapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "NSMutableDictionary+Store.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSeatControlCapabilities
+
+- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ if (self = [super init]) {
+ self.moduleName = moduleName;
+ self.moduleInfo = moduleInfo;
+ }
+ return self;
+}
+
+- (instancetype)initWithName:(NSString *)moduleName moduleInfo:(nullable SDLModuleInfo *)moduleInfo heatingEnabledAvailable:(BOOL)heatingEnabledAvail
+ coolingEnabledAvailable:(BOOL)coolingEnabledAvail heatingLevelAvailable:(BOOL)heatingLevelAvail coolingLevelAvailable:(BOOL)coolingLevelAvail horizontalPositionAvailable:(BOOL)horizontalPositionAvail verticalPositionAvailable:(BOOL)verticalPositionAvail frontVerticalPositionAvailable:(BOOL)frontVerticalPositionAvail backVerticalPositionAvailable:(BOOL)backVerticalPositionAvail backTiltAngleAvailable:(BOOL)backTitlAngleAvail headSupportHorizontalPositionAvailable:(BOOL)headSupportHorizontalPositionAvail headSupportVerticalPositionAvailable:(BOOL)headSupportVerticalPositionAvail massageEnabledAvailable:(BOOL)massageEnabledAvail massageModeAvailable:(BOOL)massageModeAvail massageCushionFirmnessAvailable:(BOOL)massageCushionFirmnessAvail memoryAvailable:(BOOL)memoryAvail {
+
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ self.moduleName = moduleName;
+ self.moduleInfo = moduleInfo;
+ self.heatingEnabledAvailable = @(heatingEnabledAvail);
+ self.coolingEnabledAvailable = @(coolingEnabledAvail);
+ self.heatingLevelAvailable = @(heatingLevelAvail);
+ self.coolingLevelAvailable = @(coolingLevelAvail);
+ self.horizontalPositionAvailable = @(horizontalPositionAvail);
+ self.verticalPositionAvailable = @(verticalPositionAvail);
+ self.frontVerticalPositionAvailable = @(frontVerticalPositionAvail);
+ self.backVerticalPositionAvailable = @(backVerticalPositionAvail);
+ self.backTiltAngleAvailable = @(backTitlAngleAvail);
+ self.headSupportVerticalPositionAvailable = @(headSupportVerticalPositionAvail);
+ self.headSupportHorizontalPositionAvailable = @(headSupportHorizontalPositionAvail);
+ self.massageEnabledAvailable = @(massageEnabledAvail);
+ self.massageModeAvailable = @(massageModeAvail);
+ self.massageCushionFirmnessAvailable = @(massageCushionFirmnessAvail);
+ self.memoryAvailable = @(memoryAvail);
+
+ return self;
+}
+
+- (void)setModuleName:(NSString *)moduleName {
+ [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName];
+}
+
+- (NSString *)moduleName {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error];
+}
+
+- (void)setHeatingEnabledAvailable:(nullable NSNumber<SDLBool> *)heatingEnabledAvailable {
+ [self.store sdl_setObject:heatingEnabledAvailable forName:SDLRPCParameterNameHeatingEnabledAvailable];
+}
+
+- (nullable NSNumber<SDLBool> *)heatingEnabledAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatingEnabledAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCoolingEnabledAvailable:(nullable NSNumber<SDLBool> *)coolingEnabledAvailable {
+ [self.store sdl_setObject:coolingEnabledAvailable forName:SDLRPCParameterNameCoolingEnabledAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)coolingEnabledAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCoolingEnabledAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setHeatingLevelAvailable:(nullable NSNumber<SDLBool> *)heatingLevelAvailable {
+ [self.store sdl_setObject:heatingLevelAvailable forName:SDLRPCParameterNameHeatingLevelAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)heatingLevelAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatingLevelAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setCoolingLevelAvailable:(nullable NSNumber<SDLBool> *)coolingLevelAvailable {
+ [self.store sdl_setObject:coolingLevelAvailable forName:SDLRPCParameterNameCoolingLevelAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)coolingLevelAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCoolingLevelAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setHorizontalPositionAvailable:(nullable NSNumber<SDLBool> *)horizontalPositionAvailable {
+ [self.store sdl_setObject:horizontalPositionAvailable forName:SDLRPCParameterNameHorizontalPositionAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)horizontalPositionAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHorizontalPositionAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)verticalPositionAvailable {
+ [self.store sdl_setObject:verticalPositionAvailable forName:SDLRPCParameterNameVerticalPositionAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)verticalPositionAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameVerticalPositionAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setFrontVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)frontVerticalPositionAvailable {
+ [self.store sdl_setObject:frontVerticalPositionAvailable forName:SDLRPCParameterNameFrontVerticalPositionAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)frontVerticalPositionAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameFrontVerticalPositionAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setBackVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)backVerticalPositionAvailable {
+ [self.store sdl_setObject:backVerticalPositionAvailable forName:SDLRPCParameterNameBackVerticalPositionAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)backVerticalPositionAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameBackVerticalPositionAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setBackTiltAngleAvailable:(nullable NSNumber<SDLBool> *)backTiltAngleAvailable {
+ [self.store sdl_setObject:backTiltAngleAvailable forName:SDLRPCParameterNameBackTiltAngleAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)backTiltAngleAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameBackTiltAngleAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setHeadSupportHorizontalPositionAvailable:(nullable NSNumber<SDLBool> *)headSupportHorizontalPositionAvailable {
+ [self.store sdl_setObject:headSupportHorizontalPositionAvailable forName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)headSupportHorizontalPositionAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setHeadSupportVerticalPositionAvailable:(nullable NSNumber<SDLBool> *)headSupportVerticalPositionAvailable {
+ [self.store sdl_setObject:headSupportVerticalPositionAvailable forName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)headSupportVerticalPositionAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setMassageEnabledAvailable:(nullable NSNumber<SDLBool> *)massageEnabledAvailable {
+ [self.store sdl_setObject:massageEnabledAvailable forName:SDLRPCParameterNameMassageEnabledAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)massageEnabledAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMassageEnabledAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setMassageModeAvailable:(nullable NSNumber<SDLBool> *)massageModeAvailable {
+ [self.store sdl_setObject:massageModeAvailable forName:SDLRPCParameterNameMassageModeAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)massageModeAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMassageModeAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setMassageCushionFirmnessAvailable:(nullable NSNumber<SDLBool> *)massageCushionFirmnessAvailable {
+ [self.store sdl_setObject:massageCushionFirmnessAvailable forName:SDLRPCParameterNameMassageCushionFirmnessAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)massageCushionFirmnessAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMassageCushionFirmnessAvailable ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setMemoryAvailable:(nullable NSNumber<SDLBool> *)memoryAvailable {
+ [self.store sdl_setObject:memoryAvailable forName:SDLRPCParameterNameMemoryAvailable];
+
+}
+
+- (nullable NSNumber<SDLBool> *)memoryAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMemoryAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setModuleInfo:(nullable SDLModuleInfo *)moduleInfo {
+ [self.store sdl_setObject:moduleInfo forName:SDLRPCParameterNameModuleInfo];
+}
+
+- (nullable SDLModuleInfo *)moduleInfo {
+ return [self.store sdl_objectForName:SDLRPCParameterNameModuleInfo ofClass:SDLModuleInfo.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSeatControlData.h b/SmartDeviceLink/public/SDLSeatControlData.h
new file mode 100644
index 000000000..1ad3c9ae1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatControlData.h
@@ -0,0 +1,195 @@
+// SDLSeatControlData.h
+//
+
+#import "SDLRPCStruct.h"
+#import "SDLSeatMemoryActionType.h"
+#import "SDLSupportedSeat.h"
+
+@class SDLMassageModeData;
+@class SDLMassageCushionFirmness;
+@class SDLSeatMemoryAction;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Seat control data corresponds to "SEAT" ModuleType.
+ */
+
+@interface SDLSeatControlData : SDLRPCStruct
+
+/**
+ * Convenience init for setting all possible seat control data
+ *
+ * @param heatingEnabled - heatingEnabled
+ * @param coolingEnabled - coolingEnabled
+ * @param heatingLevel - heatingLevel
+ * @param coolingLevel - coolingLevel
+ * @param horizontalPosition - horizontalPosition
+ * @param verticalPosition - verticalPosition
+ * @param frontVerticalPosition - frontVerticalPosition
+ * @param backVerticalPosition - backVerticalPosition
+ * @param backTiltAngle - backTiltAngle
+ * @param headSupportHorizontalPosition - headSupportHorizontalPosition
+ * @param headSupportVerticalPosition - headSupportVerticalPosition
+ * @param massageEnabled - massageEnabled
+ * @param massageMode - massageMode
+ * @param massageCushionFirmness - massageCushionFirmness
+ * @param memory - memory
+ * @return A SDLSeatControlData object
+ */
+- (instancetype)initWithHeatingEnabled:(nullable NSNumber<SDLBool> *)heatingEnabled coolingEnabled:(nullable NSNumber<SDLBool> *)coolingEnabled heatingLevel:(nullable NSNumber<SDLUInt> *)heatingLevel coolingLevel:(nullable NSNumber<SDLUInt> *)coolingLevel horizontalPosition:(nullable NSNumber<SDLUInt> *)horizontalPosition verticalPosition:(nullable NSNumber<SDLUInt> *)verticalPosition frontVerticalPosition:(nullable NSNumber<SDLUInt> *)frontVerticalPosition backVerticalPosition:(nullable NSNumber<SDLUInt> *)backVerticalPosition backTiltAngle:(nullable NSNumber<SDLUInt> *)backTiltAngle headSupportHorizontalPosition:(nullable NSNumber<SDLUInt> *)headSupportHorizontalPosition headSupportVerticalPosition:(nullable NSNumber<SDLUInt> *)headSupportVerticalPosition massageEnabled:(nullable NSNumber<SDLBool> *)massageEnabled massageMode:(nullable NSArray<SDLMassageModeData *> *)massageMode massageCushionFirmness:(nullable NSArray<SDLMassageCushionFirmness *> *)massageCushionFirmness memory:(nullable SDLSeatMemoryAction *)memory;
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+/**
+Constructs a newly allocated SDLSeatControlData object with cushion and firmness
+
+@param supportedSeat id of remote controllable seat.
+@return An instance of the SDLSeatControlData class
+*/
+- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat __deprecated_msg("Use initWithHeatingEnabled:coolingEnabled:heatingLevel:coolingLevel:horizontalPosition:verticalPosition:frontVerticalPosition:backVerticalPosition:backTiltAngle:headSupportHorizontalPosition:headSupportVerticalPosition:massageEnabled:massageMode:massageCushionFirmness:memory: instead");;
+#pragma clang diagnostic pop
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+/**
+ Constructs a newly allocated SDLSeatControlData object with cushion and firmness
+
+@param supportedSeat id of remote controllable seat.
+@param heatingEnable Whether or not heating is enabled.
+@param coolingEnable Whether or not cooling is enabled.
+@param heatingLevel heating level
+@param coolingLevel cooling Level
+@param horizontal horizontal Position
+@param vertical vertical Position
+@param frontVertical frontVertical Position
+@param backVertical backVertical Position
+@param backAngle backAngle Position
+@param headSupportedHorizontal headSupportedHorizontal Position
+@param headSupportedVertical headSupportedVertical Position
+@param massageEnable Whether or not massage is enabled.
+@param massageMode Array of massage mode data.
+@param firmness Array of firmness data.
+@param memoryAction type of action to be performed.
+@return An instance of the SDLSeatControlData class
+*/
+- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat heatingEnabled:(BOOL)heatingEnable coolingEnable:(BOOL)coolingEnable heatingLevel:(UInt8)heatingLevel coolingLevel:(UInt8)coolingLevel horizontalPostion:(UInt8)horizontal verticalPostion:(UInt8)vertical frontVerticalPostion:(UInt8)frontVertical backVerticalPostion:(UInt8)backVertical backTiltAngle:(UInt8)backAngle headSupportedHorizontalPostion:(UInt8)headSupportedHorizontal headSupportedVerticalPostion:(UInt8)headSupportedVertical massageEnabled:(BOOL)massageEnable massageMode:(NSArray<SDLMassageModeData *> *)massageMode massageCussionFirmness:(NSArray<SDLMassageCushionFirmness *> *)firmness memory:(SDLSeatMemoryAction *)memoryAction __deprecated_msg("Use initWithHeatingEnabled:coolingEnabled:heatingLevel:coolingLevel:horizontalPosition:verticalPosition:frontVerticalPosition:backVerticalPosition:backTiltAngle:headSupportHorizontalPosition:headSupportVerticalPosition:massageEnabled:massageMode:massageCushionFirmness:memory: instead");
+#pragma clang diagnostic pop
+
+/**
+* @abstract id of seat that is a remote controllable seat.
+* @warning This should not be used to identify a seat, this is a deprecated parameter.
+*
+* Required
+*/
+@property (strong, nonatomic) SDLSupportedSeat id __deprecated;
+
+/**
+ * @abstract Whether or not heating is enabled.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *heatingEnabled;
+
+/**
+ * @abstract Whether or not cooling is enabled.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *coolingEnabled;
+
+/**
+ * @abstract heating level in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *heatingLevel;
+
+/**
+ * @abstract cooling level in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *coolingLevel;
+
+/**
+ * @abstract horizontal Position in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *horizontalPosition;
+
+/**
+ * @abstract heating level in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *verticalPosition;
+
+/**
+ * @abstract heating level in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frontVerticalPosition;
+
+/**
+ * @abstract heating level in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *backVerticalPosition;
+
+/**
+ * @abstract heating level in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *backTiltAngle;
+
+/**
+ * @abstract head Support Horizontal Position in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *headSupportHorizontalPosition;
+
+/**
+ * @abstract head Support Vertical Position in integer
+ *
+ * Optional, MinValue- 0 MaxValue= 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *headSupportVerticalPosition;
+
+/**
+ * @abstract Whether or not massage is enabled.
+
+ * Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *massageEnabled;
+
+/**
+ * @abstract Array of massage mode data.
+
+ * Optional, Array of SDLMassageModeData objects, MinArray size-1 MaxArray size-2
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLMassageModeData *> *massageMode;
+
+
+/**
+ * @abstract Array of firmness of a cushion.
+
+ * Optional, Array of SDLMassageCushionFirmness objects, MinArray size-1 MaxArray size-5
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLMassageCushionFirmness *> *massageCushionFirmness;
+
+/**
+ * @abstract type of action to be performed
+ *
+ * Required, @see SDLSeatMemoryAction
+ */
+@property (nullable, strong, nonatomic) SDLSeatMemoryAction *memory;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSeatControlData.m b/SmartDeviceLink/public/SDLSeatControlData.m
new file mode 100644
index 000000000..39b7bd81b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatControlData.m
@@ -0,0 +1,210 @@
+// SDLSeatControlData.m
+//
+
+#import "SDLSeatControlData.h"
+#import "SDLRPCParameterNames.h"
+#import "NSMutableDictionary+Store.h"
+
+#import "SDLMassageModeData.h"
+#import "SDLMassageCushionFirmness.h"
+#import "SDLSeatMemoryAction.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSeatControlData
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat {
+#pragma clang diagnostic pop
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.id = supportedSeat;
+
+ return self;
+}
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)initWithId:(SDLSupportedSeat)supportedSeat heatingEnabled:(BOOL)heatingEnable coolingEnable:(BOOL)coolingEnabled heatingLevel:(UInt8)heatingLevel coolingLevel:(UInt8)coolingLevel horizontalPostion:(UInt8)horizontal verticalPostion:(UInt8)vertical frontVerticalPostion:(UInt8)frontVertical backVerticalPostion:(UInt8)backVertical backTiltAngle:(UInt8)backAngle headSupportedHorizontalPostion:(UInt8)headSupportedHorizontal headSupportedVerticalPostion:(UInt8)headSupportedVertical massageEnabled:(BOOL)massageEnable massageMode:(NSArray<SDLMassageModeData *> *)massageMode massageCussionFirmness:(NSArray<SDLMassageCushionFirmness *> *)firmness memory:(SDLSeatMemoryAction *)memoryAction {
+#pragma clang diagnostic pop
+
+ self = [self initWithHeatingEnabled:@(heatingEnable) coolingEnabled:@(coolingEnabled) heatingLevel:@(heatingLevel) coolingLevel:@(coolingLevel) horizontalPosition:@(horizontal) verticalPosition:@(vertical) frontVerticalPosition:@(frontVertical) backVerticalPosition:@(backVertical) backTiltAngle:@(backAngle) headSupportHorizontalPosition:@(headSupportedHorizontal) headSupportVerticalPosition:@(headSupportedVertical) massageEnabled:@(massageEnable) massageMode:massageMode massageCushionFirmness:firmness memory:memoryAction];
+ if (!self) {
+ return nil;
+ }
+
+ self.id = supportedSeat;
+
+ return self;
+}
+
+- (instancetype)initWithHeatingEnabled:(nullable NSNumber<SDLBool> *)heatingEnabled coolingEnabled:(nullable NSNumber<SDLBool> *)coolingEnabled heatingLevel:(nullable NSNumber<SDLUInt> *)heatingLevel coolingLevel:(nullable NSNumber<SDLUInt> *)coolingLevel horizontalPosition:(nullable NSNumber<SDLUInt> *)horizontalPosition verticalPosition:(nullable NSNumber<SDLUInt> *)verticalPosition frontVerticalPosition:(nullable NSNumber<SDLUInt> *)frontVerticalPosition backVerticalPosition:(nullable NSNumber<SDLUInt> *)backVerticalPosition backTiltAngle:(nullable NSNumber<SDLUInt> *)backTiltAngle headSupportHorizontalPosition:(nullable NSNumber<SDLUInt> *)headSupportHorizontalPosition headSupportVerticalPosition:(nullable NSNumber<SDLUInt> *)headSupportVerticalPosition massageEnabled:(nullable NSNumber<SDLBool> *)massageEnabled massageMode:(nullable NSArray<SDLMassageModeData *> *)massageMode massageCushionFirmness:(nullable NSArray<SDLMassageCushionFirmness *> *)massageCushionFirmness memory:(nullable SDLSeatMemoryAction *)memory {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ self.heatingEnabled = heatingEnabled;
+ self.coolingEnabled = coolingEnabled;
+ self.heatingLevel = heatingLevel;
+ self.coolingLevel = coolingLevel;
+
+ self.horizontalPosition = horizontalPosition;
+ self.verticalPosition = verticalPosition;
+ self.frontVerticalPosition = frontVerticalPosition;
+ self.backVerticalPosition = backVerticalPosition;
+ self.backTiltAngle = backTiltAngle;
+
+ self.headSupportHorizontalPosition = headSupportHorizontalPosition;
+ self.headSupportVerticalPosition = headSupportVerticalPosition;
+
+ self.massageEnabled = massageEnabled;
+ self.massageMode = massageMode;
+ self.massageCushionFirmness = massageCushionFirmness;
+ self.memory = memory;
+
+ return self;
+}
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (void)setId:(SDLSupportedSeat)id {
+#pragma clang diagnostic pop
+ [self.store sdl_setObject:id forName:SDLRPCParameterNameId];
+}
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (SDLSupportedSeat)id {
+#pragma clang diagnostic pop
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameId error:&error];
+}
+
+- (void)setHeatingEnabled:(nullable NSNumber<SDLBool> *)heatingEnabled {
+ [self.store sdl_setObject:heatingEnabled forName:SDLRPCParameterNameHeatingEnabled];
+}
+
+- (nullable NSNumber<SDLBool> *)heatingEnabled {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatingEnabled ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCoolingEnabled:(nullable NSNumber<SDLBool> *)coolingEnabled {
+ [self.store sdl_setObject:coolingEnabled forName:SDLRPCParameterNameCoolingEnabled];
+}
+
+- (nullable NSNumber<SDLBool> *)coolingEnabled {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCoolingEnabled ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeatingLevel:(nullable NSNumber<SDLInt> *)heatingLevel {
+ [self.store sdl_setObject:heatingLevel forName:SDLRPCParameterNameHeatingLevel];
+}
+
+- (nullable NSNumber<SDLInt> *)heatingLevel {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeatingLevel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCoolingLevel:(nullable NSNumber<SDLInt> *)coolingLevel {
+ [self.store sdl_setObject:coolingLevel forName:SDLRPCParameterNameCoolingLevel];
+}
+
+- (nullable NSNumber<SDLInt> *)coolingLevel {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCoolingLevel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHorizontalPosition:(nullable NSNumber<SDLInt> *)horizontalPosition {
+ [self.store sdl_setObject:horizontalPosition forName:SDLRPCParameterNameHorizontalPosition];
+}
+
+- (nullable NSNumber<SDLInt> *)horizontalPosition {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHorizontalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setVerticalPosition:(nullable NSNumber<SDLInt> *)verticalPosition {
+ [self.store sdl_setObject:verticalPosition forName:SDLRPCParameterNameVerticalPosition];
+}
+
+- (nullable NSNumber<SDLInt> *)verticalPosition {
+ return [self.store sdl_objectForName:SDLRPCParameterNameVerticalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFrontVerticalPosition:(nullable NSNumber<SDLInt> *)frontVerticalPosition {
+ [self.store sdl_setObject:frontVerticalPosition forName:SDLRPCParameterNameFrontVerticalPosition];
+}
+
+- (nullable NSNumber<SDLInt> *)frontVerticalPosition {
+ return [self.store sdl_objectForName:SDLRPCParameterNameFrontVerticalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBackVerticalPosition:(nullable NSNumber<SDLInt> *)backVerticalPosition {
+ [self.store sdl_setObject:backVerticalPosition forName:SDLRPCParameterNameBackVerticalPosition];
+}
+
+- (nullable NSNumber<SDLInt> *)backVerticalPosition {
+ return [self.store sdl_objectForName:SDLRPCParameterNameBackVerticalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBackTiltAngle:(nullable NSNumber<SDLInt> *)backTiltAngle {
+ [self.store sdl_setObject:backTiltAngle forName:SDLRPCParameterNameBackTiltAngle];
+}
+
+- (nullable NSNumber<SDLInt> *)backTiltAngle {
+ return [self.store sdl_objectForName:SDLRPCParameterNameBackTiltAngle ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHeadSupportHorizontalPosition:(nullable NSNumber<SDLInt> *)headSupportHorizontalPosition {
+ [self.store sdl_setObject:headSupportHorizontalPosition forName:SDLRPCParameterNameHeadSupportHorizontalPosition];
+}
+
+- (nullable NSNumber<SDLInt> *)headSupportHorizontalPosition {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPosition ofClass:NSNumber.class error:nil];
+}
+
+-(void)setHeadSupportVerticalPosition:(nullable NSNumber<SDLInt> *)headSupportVerticalPosition {
+ [self.store sdl_setObject:headSupportVerticalPosition forName:SDLRPCParameterNameHeadSupportVerticalPosition];
+}
+
+- (nullable NSNumber<SDLInt> *)headSupportVerticalPosition {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setMassageEnabled:(nullable NSNumber<SDLBool> *)massageEnabled {
+ [self.store sdl_setObject:massageEnabled forName:SDLRPCParameterNameMassageEnabled];
+}
+
+- (nullable NSNumber<SDLBool> *)massageEnabled {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMassageEnabled ofClass:NSNumber.class error:nil];
+
+}
+
+- (void)setMassageMode:(nullable NSArray<SDLMassageModeData *> *)massageMode {
+ [self.store sdl_setObject:massageMode forName:SDLRPCParameterNameMassageMode];
+}
+
+- (nullable NSArray<SDLMassageModeData *> *)massageMode {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameMassageMode ofClass:SDLMassageModeData.class error:nil];
+}
+
+- (void)setMassageCushionFirmness:(nullable NSArray<SDLMassageCushionFirmness *> *)massageCushionFirmness {
+ [self.store sdl_setObject:massageCushionFirmness forName:SDLRPCParameterNameMassageCushionFirmness];
+}
+
+- (nullable NSArray<SDLMassageCushionFirmness *> *)massageCushionFirmness {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameMassageCushionFirmness ofClass:SDLMassageCushionFirmness.class error:nil];
+}
+
+- (void)setMemory:(nullable SDLSeatMemoryAction *)memory {
+ [self.store sdl_setObject:memory forName:SDLRPCParameterNameMemory];
+}
+
+- (nullable SDLSeatMemoryAction *)memory {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMemory ofClass:SDLSeatMemoryAction.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSeatLocation.h b/SmartDeviceLink/public/SDLSeatLocation.h
index 0c4d70597..0c4d70597 100644
--- a/SmartDeviceLink/SDLSeatLocation.h
+++ b/SmartDeviceLink/public/SDLSeatLocation.h
diff --git a/SmartDeviceLink/SDLSeatLocation.m b/SmartDeviceLink/public/SDLSeatLocation.m
index 82fc28940..82fc28940 100644
--- a/SmartDeviceLink/SDLSeatLocation.m
+++ b/SmartDeviceLink/public/SDLSeatLocation.m
diff --git a/SmartDeviceLink/SDLSeatLocationCapability.h b/SmartDeviceLink/public/SDLSeatLocationCapability.h
index 1bd5f5693..1bd5f5693 100644
--- a/SmartDeviceLink/SDLSeatLocationCapability.h
+++ b/SmartDeviceLink/public/SDLSeatLocationCapability.h
diff --git a/SmartDeviceLink/SDLSeatLocationCapability.m b/SmartDeviceLink/public/SDLSeatLocationCapability.m
index f6c59e58c..f6c59e58c 100644
--- a/SmartDeviceLink/SDLSeatLocationCapability.m
+++ b/SmartDeviceLink/public/SDLSeatLocationCapability.m
diff --git a/SmartDeviceLink/SDLSeatMemoryAction.h b/SmartDeviceLink/public/SDLSeatMemoryAction.h
index 7dbcf64f8..7dbcf64f8 100644
--- a/SmartDeviceLink/SDLSeatMemoryAction.h
+++ b/SmartDeviceLink/public/SDLSeatMemoryAction.h
diff --git a/SmartDeviceLink/SDLSeatMemoryAction.m b/SmartDeviceLink/public/SDLSeatMemoryAction.m
index 3c2bde049..3c2bde049 100644
--- a/SmartDeviceLink/SDLSeatMemoryAction.m
+++ b/SmartDeviceLink/public/SDLSeatMemoryAction.m
diff --git a/SmartDeviceLink/public/SDLSeatMemoryActionType.h b/SmartDeviceLink/public/SDLSeatMemoryActionType.h
new file mode 100644
index 000000000..41dbc2a5f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatMemoryActionType.h
@@ -0,0 +1,27 @@
+// SDLSeatMemoryActionType.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * List of possible actions on Seat Meomry
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLSeatMemoryActionType NS_TYPED_ENUM;
+
+/**
+ * @abstract Save current seat postions and settings to seat memory.
+ */
+extern SDLSeatMemoryActionType const SDLSeatMemoryActionTypeSave;
+
+/**
+ * @abstract Restore / apply the seat memory settings to the current seat.
+ */
+extern SDLSeatMemoryActionType const SDLSeatMemoryActionTypeRestore;
+
+/**
+ * @abstract No action to be performed.
+ */
+extern SDLSeatMemoryActionType const SDLSeatMemoryActionTypeNone;
+
diff --git a/SmartDeviceLink/SDLSeatMemoryActionType.m b/SmartDeviceLink/public/SDLSeatMemoryActionType.m
index 6e27c1cc2..6e27c1cc2 100644
--- a/SmartDeviceLink/SDLSeatMemoryActionType.m
+++ b/SmartDeviceLink/public/SDLSeatMemoryActionType.m
diff --git a/SmartDeviceLink/SDLSecurityType.h b/SmartDeviceLink/public/SDLSecurityType.h
index 202149e79..202149e79 100644
--- a/SmartDeviceLink/SDLSecurityType.h
+++ b/SmartDeviceLink/public/SDLSecurityType.h
diff --git a/SmartDeviceLink/SDLSendHapticData.h b/SmartDeviceLink/public/SDLSendHapticData.h
index c4c0f237c..c4c0f237c 100644
--- a/SmartDeviceLink/SDLSendHapticData.h
+++ b/SmartDeviceLink/public/SDLSendHapticData.h
diff --git a/SmartDeviceLink/SDLSendHapticData.m b/SmartDeviceLink/public/SDLSendHapticData.m
index f684b4114..f684b4114 100644
--- a/SmartDeviceLink/SDLSendHapticData.m
+++ b/SmartDeviceLink/public/SDLSendHapticData.m
diff --git a/SmartDeviceLink/SDLSendHapticDataResponse.h b/SmartDeviceLink/public/SDLSendHapticDataResponse.h
index 3be41e56a..3be41e56a 100644
--- a/SmartDeviceLink/SDLSendHapticDataResponse.h
+++ b/SmartDeviceLink/public/SDLSendHapticDataResponse.h
diff --git a/SmartDeviceLink/SDLSendHapticDataResponse.m b/SmartDeviceLink/public/SDLSendHapticDataResponse.m
index dd7231c07..dd7231c07 100644
--- a/SmartDeviceLink/SDLSendHapticDataResponse.m
+++ b/SmartDeviceLink/public/SDLSendHapticDataResponse.m
diff --git a/SmartDeviceLink/SDLSendLocation.h b/SmartDeviceLink/public/SDLSendLocation.h
index ab0d747b4..ab0d747b4 100644
--- a/SmartDeviceLink/SDLSendLocation.h
+++ b/SmartDeviceLink/public/SDLSendLocation.h
diff --git a/SmartDeviceLink/SDLSendLocation.m b/SmartDeviceLink/public/SDLSendLocation.m
index a63db0cae..a63db0cae 100644
--- a/SmartDeviceLink/SDLSendLocation.m
+++ b/SmartDeviceLink/public/SDLSendLocation.m
diff --git a/SmartDeviceLink/SDLSendLocationResponse.h b/SmartDeviceLink/public/SDLSendLocationResponse.h
index 35bcc5631..35bcc5631 100644
--- a/SmartDeviceLink/SDLSendLocationResponse.h
+++ b/SmartDeviceLink/public/SDLSendLocationResponse.h
diff --git a/SmartDeviceLink/SDLSendLocationResponse.m b/SmartDeviceLink/public/SDLSendLocationResponse.m
index a9404897d..a9404897d 100644
--- a/SmartDeviceLink/SDLSendLocationResponse.m
+++ b/SmartDeviceLink/public/SDLSendLocationResponse.m
diff --git a/SmartDeviceLink/SDLServiceEncryptionDelegate.h b/SmartDeviceLink/public/SDLServiceEncryptionDelegate.h
index dd45696a9..dd45696a9 100644
--- a/SmartDeviceLink/SDLServiceEncryptionDelegate.h
+++ b/SmartDeviceLink/public/SDLServiceEncryptionDelegate.h
diff --git a/SmartDeviceLink/public/SDLServiceUpdateReason.h b/SmartDeviceLink/public/SDLServiceUpdateReason.h
new file mode 100644
index 000000000..6a8b6fbbe
--- /dev/null
+++ b/SmartDeviceLink/public/SDLServiceUpdateReason.h
@@ -0,0 +1,64 @@
+//
+// SDLServiceUpdateReason.h
+// SmartDeviceLink
+//
+// Created by Nicole on 1/25/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration listing possible service update reasons.
+ */
+typedef SDLEnum SDLServiceUpdateReason NS_TYPED_ENUM;
+
+/**
+ * The service has just been published with the module and once activated to the primary service of its type, it will be ready for possible consumption.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateReasonPublished;
+
+/**
+ * The service has just been published with the module and once activated to the primary service of its type, it will be ready for possible consumption.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdatePublished __deprecated_msg("Use SDLServiceUpdateReasonPublished instead");
+
+/**
+ * The service has just been unpublished with the module and is no longer accessible.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateReasonRemoved;
+
+/**
+ * The service has just been unpublished with the module and is no longer accessible.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateRemoved __deprecated_msg("Use SDLServiceUpdateReasonRemoved instead");
+
+/**
+ * The service is activated as the primary service of this type. All requests dealing with this service type will be handled by this service.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateReasonActivated;
+
+/**
+ * The service is activated as the primary service of this type. All requests dealing with this service type will be handled by this service.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateActivated __deprecated_msg("Use SDLServiceUpdateReasonActivated instead");
+
+/**
+ * The service has been deactivated as the primary service of its type.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateReasonDeactivated;
+
+/**
+ * The service has been deactivated as the primary service of its type.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateDeactivated __deprecated_msg("Use SDLServiceUpdateReasonDeactivated instead");
+
+/**
+ * The service has updated its manifest. This could imply updated capabilities.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateReasonManifestUpdate;
+
+/**
+ * The service has updated its manifest. This could imply updated capabilities.
+ */
+extern SDLServiceUpdateReason const SDLServiceUpdateManifestUpdate __deprecated_msg("Use SDLServiceUpdateReasonManifestUpdate instead");
diff --git a/SmartDeviceLink/public/SDLServiceUpdateReason.m b/SmartDeviceLink/public/SDLServiceUpdateReason.m
new file mode 100644
index 000000000..28821ace4
--- /dev/null
+++ b/SmartDeviceLink/public/SDLServiceUpdateReason.m
@@ -0,0 +1,21 @@
+//
+// SDLServiceUpdateReason.m
+// SmartDeviceLink
+//
+// Created by Nicole on 1/25/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLServiceUpdateReason.h"
+
+SDLServiceUpdateReason const SDLServiceUpdateReasonPublished = @"PUBLISHED";
+SDLServiceUpdateReason const SDLServiceUpdateReasonRemoved = @"REMOVED";
+SDLServiceUpdateReason const SDLServiceUpdateReasonActivated = @"ACTIVATED";
+SDLServiceUpdateReason const SDLServiceUpdateReasonDeactivated = @"DEACTIVATED";
+SDLServiceUpdateReason const SDLServiceUpdateReasonManifestUpdate = @"MANIFEST_UPDATE";
+
+SDLServiceUpdateReason const SDLServiceUpdatePublished = @"PUBLISHED";
+SDLServiceUpdateReason const SDLServiceUpdateRemoved = @"REMOVED";
+SDLServiceUpdateReason const SDLServiceUpdateActivated = @"ACTIVATED";
+SDLServiceUpdateReason const SDLServiceUpdateDeactivated = @"DEACTIVATED";
+SDLServiceUpdateReason const SDLServiceUpdateManifestUpdate = @"MANIFEST_UPDATE";
diff --git a/SmartDeviceLink/SDLSetAppIcon.h b/SmartDeviceLink/public/SDLSetAppIcon.h
index 53f3531b5..53f3531b5 100644
--- a/SmartDeviceLink/SDLSetAppIcon.h
+++ b/SmartDeviceLink/public/SDLSetAppIcon.h
diff --git a/SmartDeviceLink/SDLSetAppIcon.m b/SmartDeviceLink/public/SDLSetAppIcon.m
index 6d7de66f8..6d7de66f8 100644
--- a/SmartDeviceLink/SDLSetAppIcon.m
+++ b/SmartDeviceLink/public/SDLSetAppIcon.m
diff --git a/SmartDeviceLink/SDLSetAppIconResponse.h b/SmartDeviceLink/public/SDLSetAppIconResponse.h
index 80fee988f..80fee988f 100644
--- a/SmartDeviceLink/SDLSetAppIconResponse.h
+++ b/SmartDeviceLink/public/SDLSetAppIconResponse.h
diff --git a/SmartDeviceLink/SDLSetAppIconResponse.m b/SmartDeviceLink/public/SDLSetAppIconResponse.m
index 38151c6cc..38151c6cc 100644
--- a/SmartDeviceLink/SDLSetAppIconResponse.m
+++ b/SmartDeviceLink/public/SDLSetAppIconResponse.m
diff --git a/SmartDeviceLink/SDLSetCloudAppProperties.h b/SmartDeviceLink/public/SDLSetCloudAppProperties.h
index eadcded16..eadcded16 100644
--- a/SmartDeviceLink/SDLSetCloudAppProperties.h
+++ b/SmartDeviceLink/public/SDLSetCloudAppProperties.h
diff --git a/SmartDeviceLink/SDLSetCloudAppProperties.m b/SmartDeviceLink/public/SDLSetCloudAppProperties.m
index ca2f657e9..ca2f657e9 100644
--- a/SmartDeviceLink/SDLSetCloudAppProperties.m
+++ b/SmartDeviceLink/public/SDLSetCloudAppProperties.m
diff --git a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h b/SmartDeviceLink/public/SDLSetCloudAppPropertiesResponse.h
index 8e4d39753..8e4d39753 100644
--- a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.h
+++ b/SmartDeviceLink/public/SDLSetCloudAppPropertiesResponse.h
diff --git a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m b/SmartDeviceLink/public/SDLSetCloudAppPropertiesResponse.m
index 4064b19a7..4064b19a7 100644
--- a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m
+++ b/SmartDeviceLink/public/SDLSetCloudAppPropertiesResponse.m
diff --git a/SmartDeviceLink/public/SDLSetDisplayLayout.h b/SmartDeviceLink/public/SDLSetDisplayLayout.h
new file mode 100644
index 000000000..15118e24e
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSetDisplayLayout.h
@@ -0,0 +1,73 @@
+// SDLSetDisplayLayout.h
+//
+
+
+#import "SDLRPCRequest.h"
+
+#import "SDLPredefinedLayout.h"
+
+@class SDLTemplateColorScheme;
+
+/**
+ * Used to set an alternate display layout. If not sent, default screen for
+ * given platform will be shown
+ *
+ * Since SmartDeviceLink 2.0
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLSetDisplayLayout : SDLRPCRequest
+
+/// Convenience init to set a display layout
+///
+/// @param predefinedLayout A template layout an app uses to display information
+/// @return An SDLSetDisplayLayout object
+- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout;
+
+/// Convenience init to set a display layout
+///
+/// @param displayLayout A display layout name
+/// @return An SDLSetDisplayLayout object
+- (instancetype)initWithLayout:(NSString *)displayLayout;
+
+/// Convenience init to set a display layout
+///
+/// @param predefinedLayout A display layout. Predefined or dynamically created screen layout
+/// @param dayColorScheme The color scheme to be used on a head unit using a "light" or "day" color scheme
+/// @param nightColorScheme The color scheme to be used on a head unit using a "dark" or "night" color scheme
+/// @return An SDLSetDisplayLayout object
+- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout dayColorScheme:(SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(SDLTemplateColorScheme *)nightColorScheme;
+
+/// Convenience init to set a display layout
+/// @param displayLayout A display layout name
+/// @param dayColorScheme The color scheme to be used on a head unit using a "light" or "day" color scheme
+/// @param nightColorScheme The color scheme to be used on a head unit using a "dark" or "night" color scheme
+/// @return An SDLSetDisplayLayout object
+- (instancetype)initWithLayout:(NSString *)displayLayout dayColorScheme:(SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(SDLTemplateColorScheme *)nightColorScheme;
+
+/**
+ * A display layout. Predefined or dynamically created screen layout.
+ * Currently only predefined screen layouts are defined. Predefined layouts
+ * include: "ONSCREEN_PRESETS" Custom screen containing app-defined onscreen
+ * presets. Currently defined for GEN2
+ */
+@property (strong, nonatomic) NSString *displayLayout;
+
+/**
+ The color scheme to be used on a head unit using a "light" or "day" color scheme. The OEM may only support this theme if their head unit only has a light color scheme.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLTemplateColorScheme *dayColorScheme;
+
+/**
+ The color scheme to be used on a head unit using a "dark" or "night" color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLTemplateColorScheme *nightColorScheme;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSetDisplayLayout.m b/SmartDeviceLink/public/SDLSetDisplayLayout.m
new file mode 100644
index 000000000..025d76bc6
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSetDisplayLayout.m
@@ -0,0 +1,81 @@
+// SDLSetDisplayLayout.m
+//
+
+
+#import "SDLSetDisplayLayout.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLTemplateColorScheme.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSetDisplayLayout
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameSetDisplayLayout]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout {
+ return [self initWithLayout:predefinedLayout];
+}
+
+- (instancetype)initWithLayout:(NSString *)displayLayout {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.displayLayout = displayLayout;
+
+ return self;
+}
+
+- (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout dayColorScheme:(SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(SDLTemplateColorScheme *)nightColorScheme {
+ return [self initWithLayout:predefinedLayout dayColorScheme:dayColorScheme nightColorScheme:nightColorScheme];
+}
+
+- (instancetype)initWithLayout:(NSString *)displayLayout dayColorScheme:(SDLTemplateColorScheme *)dayColorScheme nightColorScheme:(SDLTemplateColorScheme *)nightColorScheme {
+ self = [self initWithLayout:displayLayout];
+ if (!self) { return nil; }
+
+ self.dayColorScheme = dayColorScheme;
+ self.nightColorScheme = nightColorScheme;
+
+ return self;
+}
+
+- (void)setDisplayLayout:(NSString *)displayLayout {
+ [self.parameters sdl_setObject:displayLayout forName:SDLRPCParameterNameDisplayLayout];
+}
+
+- (NSString *)displayLayout {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDisplayLayout ofClass:NSString.class error:&error];
+}
+
+- (void)setDayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme {
+ [self.parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme];
+}
+
+- (nullable SDLTemplateColorScheme *)dayColorScheme {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
+}
+
+- (void)setNightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme {
+ [self.parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme];
+}
+
+- (nullable SDLTemplateColorScheme *)nightColorScheme {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetDisplayLayoutResponse.h b/SmartDeviceLink/public/SDLSetDisplayLayoutResponse.h
index 69987222d..69987222d 100644
--- a/SmartDeviceLink/SDLSetDisplayLayoutResponse.h
+++ b/SmartDeviceLink/public/SDLSetDisplayLayoutResponse.h
diff --git a/SmartDeviceLink/SDLSetDisplayLayoutResponse.m b/SmartDeviceLink/public/SDLSetDisplayLayoutResponse.m
index 552a95079..552a95079 100644
--- a/SmartDeviceLink/SDLSetDisplayLayoutResponse.m
+++ b/SmartDeviceLink/public/SDLSetDisplayLayoutResponse.m
diff --git a/SmartDeviceLink/public/SDLSetGlobalProperties.h b/SmartDeviceLink/public/SDLSetGlobalProperties.h
new file mode 100644
index 000000000..6968f8332
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSetGlobalProperties.h
@@ -0,0 +1,121 @@
+// SDLSetGlobalProperties.h
+//
+
+#import "SDLRPCRequest.h"
+
+#import "SDLMenuLayout.h"
+
+@class SDLImage;
+@class SDLKeyboardProperties;
+@class SDLTTSChunk;
+@class SDLVRHelpItem;
+@class SDLSeatLocation;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Sets global property values
+
+ Since SmartDeviceLink 1.0
+
+ See SDLResetGlobalProperties
+ */
+@interface SDLSetGlobalProperties : SDLRPCRequest
+
+/**
+ Initialize SetGlobalProperties with all possible items
+
+ @param helpText A string that will be turned into TTS chunks for the help prompt
+ @param timeoutText A string that will be turned into TTS chunks for the timeout prompt
+ @param vrHelpTitle The title of the help interface prompt
+ @param vrHelp The items of the help interface prompt
+ @param menuTitle The title of the menu button
+ @param menuIcon The icon on the menu button
+ @param keyboardProperties The properties of a keyboard prompt
+ @param menuLayout The layout of the top-level main menu
+ @return The SetGlobalProperties RPC
+ */
+- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties menuLayout:(nullable SDLMenuLayout)menuLayout __deprecated_msg("Use initWithUserLocation:helpPrompt:timeoutPrompt:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:menuLayout: instead");
+
+/**
+* Convenience init for setting all possible global properties
+*
+* @param userLocation - userLocation
+* @param helpPrompt - helpPrompt
+* @param timeoutPrompt - timeoutPrompt
+* @param vrHelpTitle - vrHelpTitle
+* @param vrHelp - vrHelp
+* @param menuTitle - menuTitle
+* @param menuIcon - menuIcon
+* @param keyboardProperties - keyboardProperties
+* @param menuLayout - menuLayout
+* @return A SDLSetGlobalProperties object
+*/
+- (instancetype)initWithUserLocation:(nullable SDLSeatLocation *)userLocation helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties menuLayout:(nullable SDLMenuLayout)menuLayout;
+
+/**
+ Help prompt for when the user asks for help with an interface prompt
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLTTSChunk *> *helpPrompt;
+
+/**
+ Help prompt for when an interface prompt times out
+
+ Optional, Array, at least 1 item
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLTTSChunk *> *timeoutPrompt;
+
+/**
+ Sets a voice recognition Help Title
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) NSString *vrHelpTitle;
+
+/**
+ Sets the items listed in the VR help screen used in an interaction started by Push to Talk
+
+ @since SmartDeviceLink 2.0
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) NSArray<SDLVRHelpItem *> *vrHelp;
+
+/**
+ Text for the menu button label
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) NSString *menuTitle;
+
+/**
+ Icon for the menu button
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLImage *menuIcon;
+
+/**
+ On-screen keyboard (perform interaction) configuration
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLKeyboardProperties *keyboardProperties;
+
+/**
+ Location of the user's seat. Default is driver's seat location if it is not set yet
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLSeatLocation *userLocation;
+
+/**
+ The main menu layout. If this is sent while a menu is already on-screen, the head unit will change the display to the new layout type. See available menu layouts on DisplayCapabilities.menuLayoutsAvailable. Defaults to the head unit default.
+ */
+@property (strong, nonatomic, nullable) SDLMenuLayout menuLayout;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSetGlobalProperties.m b/SmartDeviceLink/public/SDLSetGlobalProperties.m
new file mode 100644
index 000000000..123623cda
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSetGlobalProperties.m
@@ -0,0 +1,126 @@
+// SDLSetGlobalProperties.m
+//
+
+
+#import "SDLSetGlobalProperties.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLImage.h"
+#import "SDLKeyboardProperties.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLTTSChunk.h"
+#import "SDLVrHelpItem.h"
+#import "SDLSeatLocation.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSetGlobalProperties
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameSetGlobalProperties]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties menuLayout:(nullable SDLMenuLayout)menuLayout {
+ return [self initWithUserLocation:nil helpPrompt:[SDLTTSChunk textChunksFromString:helpText] timeoutPrompt:[SDLTTSChunk textChunksFromString:timeoutText] vrHelpTitle:vrHelpTitle vrHelp:vrHelp menuTitle:menuTitle menuIcon:menuIcon keyboardProperties:keyboardProperties menuLayout:menuLayout];
+}
+
+- (instancetype)initWithUserLocation:(nullable SDLSeatLocation *)userLocation helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt vrHelpTitle:(nullable NSString *)vrHelpTitle vrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp menuTitle:(nullable NSString *)menuTitle menuIcon:(nullable SDLImage *)menuIcon keyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties menuLayout:(nullable SDLMenuLayout)menuLayout {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.helpPrompt = helpPrompt;
+ self.timeoutPrompt = timeoutPrompt;
+ self.vrHelpTitle = vrHelpTitle;
+ self.vrHelp = [vrHelp mutableCopy];
+ self.menuTitle = menuTitle;
+ self.menuIcon = menuIcon;
+ self.keyboardProperties = keyboardProperties;
+ self.userLocation = userLocation;
+ self.menuLayout = menuLayout;
+
+ return self;
+}
+
+- (void)setHelpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt {
+ [self.parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)helpPrompt {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setTimeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
+ [self.parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)timeoutPrompt {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setVrHelpTitle:(nullable NSString *)vrHelpTitle {
+ [self.parameters sdl_setObject:vrHelpTitle forName:SDLRPCParameterNameVRHelpTitle];
+}
+
+- (nullable NSString *)vrHelpTitle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameVRHelpTitle ofClass:NSString.class error:nil];
+}
+
+- (void)setVrHelp:(nullable NSArray<SDLVRHelpItem *> *)vrHelp {
+ [self.parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp];
+}
+
+- (nullable NSArray<SDLVRHelpItem *> *)vrHelp {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil];
+}
+
+- (void)setMenuTitle:(nullable NSString *)menuTitle {
+ [self.parameters sdl_setObject:menuTitle forName:SDLRPCParameterNameMenuTitle];
+}
+
+- (nullable NSString *)menuTitle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuTitle ofClass:NSString.class error:nil];
+}
+
+- (void)setMenuIcon:(nullable SDLImage *)menuIcon {
+ [self.parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon];
+}
+
+- (nullable SDLImage *)menuIcon {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:SDLImage.class error:nil];
+}
+
+- (void)setKeyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties {
+ [self.parameters sdl_setObject:keyboardProperties forName:SDLRPCParameterNameKeyboardProperties];
+}
+
+- (nullable SDLKeyboardProperties *)keyboardProperties {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameKeyboardProperties ofClass:SDLKeyboardProperties.class error:nil];
+}
+
+- (void)setUserLocation:(nullable SDLSeatLocation *)userLocation {
+ [self.parameters sdl_setObject:userLocation forName:SDLRPCParameterNameUserLocation];
+}
+
+- (nullable SDLSeatLocation *)userLocation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameUserLocation ofClass:SDLSeatLocation.class error:nil];
+}
+
+- (void)setMenuLayout:(nullable SDLMenuLayout)menuLayout {
+ [self.parameters sdl_setObject:menuLayout forName:SDLRPCParameterNameMenuLayout];
+}
+
+- (nullable SDLMenuLayout)menuLayout {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameMenuLayout error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetGlobalPropertiesResponse.h b/SmartDeviceLink/public/SDLSetGlobalPropertiesResponse.h
index 6e9bb3c6d..6e9bb3c6d 100644
--- a/SmartDeviceLink/SDLSetGlobalPropertiesResponse.h
+++ b/SmartDeviceLink/public/SDLSetGlobalPropertiesResponse.h
diff --git a/SmartDeviceLink/SDLSetGlobalPropertiesResponse.m b/SmartDeviceLink/public/SDLSetGlobalPropertiesResponse.m
index f093f4399..f093f4399 100644
--- a/SmartDeviceLink/SDLSetGlobalPropertiesResponse.m
+++ b/SmartDeviceLink/public/SDLSetGlobalPropertiesResponse.m
diff --git a/SmartDeviceLink/SDLSetInteriorVehicleData.h b/SmartDeviceLink/public/SDLSetInteriorVehicleData.h
index fdc1d312e..fdc1d312e 100644
--- a/SmartDeviceLink/SDLSetInteriorVehicleData.h
+++ b/SmartDeviceLink/public/SDLSetInteriorVehicleData.h
diff --git a/SmartDeviceLink/SDLSetInteriorVehicleData.m b/SmartDeviceLink/public/SDLSetInteriorVehicleData.m
index 96d2ac782..96d2ac782 100644
--- a/SmartDeviceLink/SDLSetInteriorVehicleData.m
+++ b/SmartDeviceLink/public/SDLSetInteriorVehicleData.m
diff --git a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h b/SmartDeviceLink/public/SDLSetInteriorVehicleDataResponse.h
index 57690e013..57690e013 100644
--- a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h
+++ b/SmartDeviceLink/public/SDLSetInteriorVehicleDataResponse.h
diff --git a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m b/SmartDeviceLink/public/SDLSetInteriorVehicleDataResponse.m
index c99551675..c99551675 100644
--- a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m
+++ b/SmartDeviceLink/public/SDLSetInteriorVehicleDataResponse.m
diff --git a/SmartDeviceLink/public/SDLSetMediaClockTimer.h b/SmartDeviceLink/public/SDLSetMediaClockTimer.h
new file mode 100644
index 000000000..4c8ccdd89
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSetMediaClockTimer.h
@@ -0,0 +1,174 @@
+// SDLSetMediaClockTimer.h
+//
+
+#import "SDLRPCRequest.h"
+
+#import "SDLUpdateMode.h"
+#import "SDLAudioStreamingIndicator.h"
+
+@class SDLStartTime;
+
+/**
+ * Sets the media clock/timer value and the update method (e.g.count-up,
+ * count-down, etc.)
+ * <p>
+ * Function Group: Base <p>
+ * <b>HMILevel needs to be FULL, LIMITIED or BACKGROUND</b>
+ * </p>
+ *
+ * Since SmartDeviceLink 1.0
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLSetMediaClockTimer : SDLRPCRequest
+
+/**
+ Create a media clock timer that counts up, e.g from 0:00 to 4:18.
+
+ This will fail if startTime is greater than endTime
+
+ @param startTime The start time interval, e.g. (0) 0:00
+ @param endTime The end time interval, e.g. (258) 4:18
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:));
+
+/**
+ Create a media clock timer that counts up, e.g from 0:00 to 4:18.
+
+ This will fail if startTime is greater than endTime
+
+ @param startTime The start time interval, e.g. 0:00
+ @param endTime The end time interval, e.g. 4:18
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:));
+
+/**
+ Create a media clock timer that counts down, e.g. from 4:18 to 0:00
+
+ This will fail if endTime is greater than startTime
+
+ @param startTime The start time interval, e.g. (258) 4:18
+ @param endTime The end time interval, e.g. (0) 0:00
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:));
+
+/**
+ Create a media clock timer that counts down, e.g. from 4:18 to 0:00
+
+ This will fail if endTime is greater than startTime
+
+ @param startTime The start time interval, e.g. 4:18
+ @param endTime The end time interval, e.g. 0:00
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:));
+
+/**
+ Pause an existing (counting up / down) media clock timer
+
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)pauseWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(pause(playPauseIndicator:));
+
+/**
+ Update a pause time (or pause and update the time) on a media clock timer
+
+ @param startTime The new start time interval
+ @param endTime The new end time interval
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)updatePauseWithNewStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(pause(newStart:newEnd:playPauseIndicator:));
+
+/**
+ Update a pause time (or pause and update the time) on a media clock timer
+
+ @param startTime The new start time
+ @param endTime The new end time
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)updatePauseWithNewStartTime:(SDLStartTime *)startTime endTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(pause(newStart:newEnd:playPauseIndicator:));
+
+/**
+ Resume a paused media clock timer. It resumes at the same time at which it was paused.
+
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(resume(playPauseIndicator:));
+
+/**
+ Remove a media clock timer from the screen
+
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)clearWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(clear(playPauseIndicator:));
+
+/**
+ Create a SetMediaClockTimer RPC with all available parameters. It's recommended to use the specific initializers above.
+
+ @param updateMode The type of SetMediaClockTimer RPC
+ @param startTime The start time. Only valid in some updateModes.
+ @param endTime The end time. Only valid in some updateModes.
+ @param playPauseIndicator The display of the play/pause button
+ @return An object of SetMediaClockTimer
+ */
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(init(updateMode:startTime:endTime:playPauseIndicator:));
+
+/**
+ * A Start Time with specifying hour, minute, second values
+ *
+ * @discussion A startTime object with specifying hour, minute, second values
+ * <p>
+ * <b>Notes: </b>
+ * <ul>
+ * <li>If "updateMode" is COUNTUP or COUNTDOWN, this parameter
+ * must be provided</li>
+ * <li>Will be ignored for PAUSE/RESUME and CLEAR</li>
+ * </ul>
+ */
+@property (strong, nonatomic, nullable) SDLStartTime *startTime;
+/**
+ * An END time of type SDLStartTime, specifying hour, minute, second values
+ *
+ * @discussion An SDLStartTime object with specifying hour, minute, second values
+ */
+@property (strong, nonatomic, nullable) SDLStartTime *endTime;
+/**
+ * The media clock/timer update mode (COUNTUP/COUNTDOWN/PAUSE/RESUME)
+ *
+ * @discussion a Enumeration value (COUNTUP/COUNTDOWN/PAUSE/RESUME)
+ * <p>
+ * <b>Notes: </b>
+ * <ul>
+ * <li>When updateMode is PAUSE, RESUME or CLEAR, the start time value
+ * is ignored</li>
+ * <li>When updateMode is RESUME, the timer resumes counting from
+ * the timer's value when it was paused</li>
+ * </ul>
+ */
+@property (strong, nonatomic) SDLUpdateMode updateMode;
+
+/**
+ * The audio streaming indicator used for a play/pause button.
+ *
+ * @discussion Set the indicator icon of a play/pause button depending on the
+ * current audio playback. This parameter is optional. If omitted the last indicator sent
+ * will not change.
+ */
+@property (strong, nonatomic, nullable) SDLAudioStreamingIndicator audioStreamingIndicator;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSetMediaClockTimer.m b/SmartDeviceLink/public/SDLSetMediaClockTimer.m
new file mode 100644
index 000000000..bfbf77ec1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSetMediaClockTimer.m
@@ -0,0 +1,117 @@
+// SDLSetMediaClockTimer.m
+//
+
+
+#import "SDLSetMediaClockTimer.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLStartTime.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSetMediaClockTimer
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameSetMediaClockTimer]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ self = [self init];
+ if (!self) { return nil; }
+
+ self.updateMode = updateMode;
+ self.startTime = startTime;
+ self.endTime = endTime;
+ self.audioStreamingIndicator = playPauseIndicator;
+
+ return self;
+}
+
++ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
+ SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
+
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
+ SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
+
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)pauseWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)updatePauseWithNewStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
+ SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
+
+ return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)updatePauseWithNewStartTime:(SDLStartTime *)startTime endTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeResume startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
+}
+
++ (instancetype)clearWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeClear startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
+}
+
+- (void)setStartTime:(nullable SDLStartTime *)startTime {
+ [self.parameters sdl_setObject:startTime forName:SDLRPCParameterNameStartTime];
+}
+
+- (nullable SDLStartTime *)startTime {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStartTime ofClass:SDLStartTime.class error:nil];
+}
+
+- (void)setEndTime:(nullable SDLStartTime *)endTime {
+ [self.parameters sdl_setObject:endTime forName:SDLRPCParameterNameEndTime];
+}
+
+- (nullable SDLStartTime *)endTime {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEndTime ofClass:SDLStartTime.class error:nil];
+}
+
+- (void)setUpdateMode:(SDLUpdateMode)updateMode {
+ [self.parameters sdl_setObject:updateMode forName:SDLRPCParameterNameUpdateMode];
+}
+
+- (SDLUpdateMode)updateMode {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameUpdateMode error:&error];
+}
+
+- (void)setAudioStreamingIndicator:(nullable SDLAudioStreamingIndicator)audioStreamingIndicator {
+ [self.parameters sdl_setObject:audioStreamingIndicator forName:SDLRPCParameterNameAudioStreamingIndicator];
+}
+
+- (nullable SDLAudioStreamingIndicator)audioStreamingIndicator {
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameAudioStreamingIndicator error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSetMediaClockTimerResponse.h b/SmartDeviceLink/public/SDLSetMediaClockTimerResponse.h
index f6c443895..f6c443895 100644
--- a/SmartDeviceLink/SDLSetMediaClockTimerResponse.h
+++ b/SmartDeviceLink/public/SDLSetMediaClockTimerResponse.h
diff --git a/SmartDeviceLink/SDLSetMediaClockTimerResponse.m b/SmartDeviceLink/public/SDLSetMediaClockTimerResponse.m
index bcb1d12c8..bcb1d12c8 100644
--- a/SmartDeviceLink/SDLSetMediaClockTimerResponse.m
+++ b/SmartDeviceLink/public/SDLSetMediaClockTimerResponse.m
diff --git a/SmartDeviceLink/SDLShow.h b/SmartDeviceLink/public/SDLShow.h
index 723e5fd83..723e5fd83 100644
--- a/SmartDeviceLink/SDLShow.h
+++ b/SmartDeviceLink/public/SDLShow.h
diff --git a/SmartDeviceLink/SDLShow.m b/SmartDeviceLink/public/SDLShow.m
index c42295dd1..c42295dd1 100644
--- a/SmartDeviceLink/SDLShow.m
+++ b/SmartDeviceLink/public/SDLShow.m
diff --git a/SmartDeviceLink/SDLShowAppMenu.h b/SmartDeviceLink/public/SDLShowAppMenu.h
index a7ca2cf0f..a7ca2cf0f 100644
--- a/SmartDeviceLink/SDLShowAppMenu.h
+++ b/SmartDeviceLink/public/SDLShowAppMenu.h
diff --git a/SmartDeviceLink/public/SDLShowAppMenu.m b/SmartDeviceLink/public/SDLShowAppMenu.m
new file mode 100644
index 000000000..7d7a5fc23
--- /dev/null
+++ b/SmartDeviceLink/public/SDLShowAppMenu.m
@@ -0,0 +1,48 @@
+//
+// SDLOpenMenu.m
+// SmartDeviceLink
+//
+// Created by Justin Gluck on 7/12/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLShowAppMenu.h"
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLShowAppMenu
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameShowAppMenu]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithMenuID:(UInt32)menuID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.menuID = @(menuID);
+ return self;
+}
+
+- (void)setMenuID:(nullable NSNumber<SDLInt> *)menuID {
+ [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuID];
+}
+
+- (nullable NSNumber<SDLInt> *)menuID {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuID ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLShowAppMenuResponse.h b/SmartDeviceLink/public/SDLShowAppMenuResponse.h
index d5acd4c34..d5acd4c34 100644
--- a/SmartDeviceLink/SDLShowAppMenuResponse.h
+++ b/SmartDeviceLink/public/SDLShowAppMenuResponse.h
diff --git a/SmartDeviceLink/SDLShowAppMenuResponse.m b/SmartDeviceLink/public/SDLShowAppMenuResponse.m
index 281079e7b..281079e7b 100644
--- a/SmartDeviceLink/SDLShowAppMenuResponse.m
+++ b/SmartDeviceLink/public/SDLShowAppMenuResponse.m
diff --git a/SmartDeviceLink/SDLShowConstantTBT.h b/SmartDeviceLink/public/SDLShowConstantTBT.h
index 3ac01780d..3ac01780d 100644
--- a/SmartDeviceLink/SDLShowConstantTBT.h
+++ b/SmartDeviceLink/public/SDLShowConstantTBT.h
diff --git a/SmartDeviceLink/SDLShowConstantTBT.m b/SmartDeviceLink/public/SDLShowConstantTBT.m
index 70c2c09a1..70c2c09a1 100644
--- a/SmartDeviceLink/SDLShowConstantTBT.m
+++ b/SmartDeviceLink/public/SDLShowConstantTBT.m
diff --git a/SmartDeviceLink/SDLShowConstantTBTResponse.h b/SmartDeviceLink/public/SDLShowConstantTBTResponse.h
index c7db2ceb8..c7db2ceb8 100644
--- a/SmartDeviceLink/SDLShowConstantTBTResponse.h
+++ b/SmartDeviceLink/public/SDLShowConstantTBTResponse.h
diff --git a/SmartDeviceLink/SDLShowConstantTBTResponse.m b/SmartDeviceLink/public/SDLShowConstantTBTResponse.m
index 911e5080f..911e5080f 100644
--- a/SmartDeviceLink/SDLShowConstantTBTResponse.m
+++ b/SmartDeviceLink/public/SDLShowConstantTBTResponse.m
diff --git a/SmartDeviceLink/SDLShowResponse.h b/SmartDeviceLink/public/SDLShowResponse.h
index 2f69910c7..2f69910c7 100644
--- a/SmartDeviceLink/SDLShowResponse.h
+++ b/SmartDeviceLink/public/SDLShowResponse.h
diff --git a/SmartDeviceLink/SDLShowResponse.m b/SmartDeviceLink/public/SDLShowResponse.m
index c8b501129..c8b501129 100644
--- a/SmartDeviceLink/SDLShowResponse.m
+++ b/SmartDeviceLink/public/SDLShowResponse.m
diff --git a/SmartDeviceLink/SDLSingleTireStatus.h b/SmartDeviceLink/public/SDLSingleTireStatus.h
index 9ebe1b32e..9ebe1b32e 100644
--- a/SmartDeviceLink/SDLSingleTireStatus.h
+++ b/SmartDeviceLink/public/SDLSingleTireStatus.h
diff --git a/SmartDeviceLink/SDLSingleTireStatus.m b/SmartDeviceLink/public/SDLSingleTireStatus.m
index e756e8f69..e756e8f69 100644
--- a/SmartDeviceLink/SDLSingleTireStatus.m
+++ b/SmartDeviceLink/public/SDLSingleTireStatus.m
diff --git a/SmartDeviceLink/SDLSlider.h b/SmartDeviceLink/public/SDLSlider.h
index 13cef4c39..13cef4c39 100644
--- a/SmartDeviceLink/SDLSlider.h
+++ b/SmartDeviceLink/public/SDLSlider.h
diff --git a/SmartDeviceLink/SDLSlider.m b/SmartDeviceLink/public/SDLSlider.m
index 488b428d6..488b428d6 100644
--- a/SmartDeviceLink/SDLSlider.m
+++ b/SmartDeviceLink/public/SDLSlider.m
diff --git a/SmartDeviceLink/SDLSliderResponse.h b/SmartDeviceLink/public/SDLSliderResponse.h
index c7f7732d9..c7f7732d9 100644
--- a/SmartDeviceLink/SDLSliderResponse.h
+++ b/SmartDeviceLink/public/SDLSliderResponse.h
diff --git a/SmartDeviceLink/SDLSliderResponse.m b/SmartDeviceLink/public/SDLSliderResponse.m
index 6d9985111..6d9985111 100644
--- a/SmartDeviceLink/SDLSliderResponse.m
+++ b/SmartDeviceLink/public/SDLSliderResponse.m
diff --git a/SmartDeviceLink/SDLSoftButton.h b/SmartDeviceLink/public/SDLSoftButton.h
index 8fffc6727..8fffc6727 100644
--- a/SmartDeviceLink/SDLSoftButton.h
+++ b/SmartDeviceLink/public/SDLSoftButton.h
diff --git a/SmartDeviceLink/SDLSoftButton.m b/SmartDeviceLink/public/SDLSoftButton.m
index 6d1082c48..6d1082c48 100644
--- a/SmartDeviceLink/SDLSoftButton.m
+++ b/SmartDeviceLink/public/SDLSoftButton.m
diff --git a/SmartDeviceLink/SDLSoftButtonCapabilities.h b/SmartDeviceLink/public/SDLSoftButtonCapabilities.h
index 07d57e276..07d57e276 100644
--- a/SmartDeviceLink/SDLSoftButtonCapabilities.h
+++ b/SmartDeviceLink/public/SDLSoftButtonCapabilities.h
diff --git a/SmartDeviceLink/SDLSoftButtonCapabilities.m b/SmartDeviceLink/public/SDLSoftButtonCapabilities.m
index 6d5ea078d..6d5ea078d 100644
--- a/SmartDeviceLink/SDLSoftButtonCapabilities.m
+++ b/SmartDeviceLink/public/SDLSoftButtonCapabilities.m
diff --git a/SmartDeviceLink/SDLSoftButtonObject.h b/SmartDeviceLink/public/SDLSoftButtonObject.h
index 0de2f819d..0de2f819d 100644
--- a/SmartDeviceLink/SDLSoftButtonObject.h
+++ b/SmartDeviceLink/public/SDLSoftButtonObject.h
diff --git a/SmartDeviceLink/SDLSoftButtonObject.m b/SmartDeviceLink/public/SDLSoftButtonObject.m
index adb153e1a..adb153e1a 100644
--- a/SmartDeviceLink/SDLSoftButtonObject.m
+++ b/SmartDeviceLink/public/SDLSoftButtonObject.m
diff --git a/SmartDeviceLink/SDLSoftButtonState.h b/SmartDeviceLink/public/SDLSoftButtonState.h
index 687192e8c..687192e8c 100644
--- a/SmartDeviceLink/SDLSoftButtonState.h
+++ b/SmartDeviceLink/public/SDLSoftButtonState.h
diff --git a/SmartDeviceLink/SDLSoftButtonState.m b/SmartDeviceLink/public/SDLSoftButtonState.m
index e3fb26495..e3fb26495 100644
--- a/SmartDeviceLink/SDLSoftButtonState.m
+++ b/SmartDeviceLink/public/SDLSoftButtonState.m
diff --git a/SmartDeviceLink/public/SDLSoftButtonType.h b/SmartDeviceLink/public/SDLSoftButtonType.h
new file mode 100644
index 000000000..777f64940
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSoftButtonType.h
@@ -0,0 +1,25 @@
+// SDLSoftButtonType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ SoftButtonType (TEXT / IMAGE / BOTH). Used by SoftButton.
+ */
+typedef SDLEnum SDLSoftButtonType NS_TYPED_ENUM;
+
+/**
+ Text kind Softbutton
+ */
+extern SDLSoftButtonType const SDLSoftButtonTypeText;
+
+/**
+ Image kind Softbutton
+ */
+extern SDLSoftButtonType const SDLSoftButtonTypeImage;
+
+/**
+ Both (Text & Image) kind Softbutton
+ */
+extern SDLSoftButtonType const SDLSoftButtonTypeBoth;
diff --git a/SmartDeviceLink/SDLSoftButtonType.m b/SmartDeviceLink/public/SDLSoftButtonType.m
index 38de6d703..38de6d703 100644
--- a/SmartDeviceLink/SDLSoftButtonType.m
+++ b/SmartDeviceLink/public/SDLSoftButtonType.m
diff --git a/SmartDeviceLink/SDLSpeak.h b/SmartDeviceLink/public/SDLSpeak.h
index 31b69d85d..31b69d85d 100644
--- a/SmartDeviceLink/SDLSpeak.h
+++ b/SmartDeviceLink/public/SDLSpeak.h
diff --git a/SmartDeviceLink/SDLSpeak.m b/SmartDeviceLink/public/SDLSpeak.m
index 4a8b18244..4a8b18244 100644
--- a/SmartDeviceLink/SDLSpeak.m
+++ b/SmartDeviceLink/public/SDLSpeak.m
diff --git a/SmartDeviceLink/SDLSpeakResponse.h b/SmartDeviceLink/public/SDLSpeakResponse.h
index 0ae8ce88d..0ae8ce88d 100644
--- a/SmartDeviceLink/SDLSpeakResponse.h
+++ b/SmartDeviceLink/public/SDLSpeakResponse.h
diff --git a/SmartDeviceLink/SDLSpeakResponse.m b/SmartDeviceLink/public/SDLSpeakResponse.m
index e3cd91ae4..e3cd91ae4 100644
--- a/SmartDeviceLink/SDLSpeakResponse.m
+++ b/SmartDeviceLink/public/SDLSpeakResponse.m
diff --git a/SmartDeviceLink/public/SDLSpeechCapabilities.h b/SmartDeviceLink/public/SDLSpeechCapabilities.h
new file mode 100644
index 000000000..974990707
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSpeechCapabilities.h
@@ -0,0 +1,42 @@
+// SDLSpeechCapabilities.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Contains information about TTS capabilities on the SDL platform. Used in RegisterAppInterfaceResponse, and TTSChunk.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLSpeechCapabilities NS_TYPED_ENUM;
+
+/**
+ The SDL platform can speak text phrases.
+ */
+extern SDLSpeechCapabilities const SDLSpeechCapabilitiesText;
+
+/**
+ The SDL platform can speak SAPI Phonemes.
+ */
+extern SDLSpeechCapabilities const SDLSpeechCapabilitiesSAPIPhonemes;
+
+/**
+ The SDL platform can speak LHPlus Phonemes.
+ */
+extern SDLSpeechCapabilities const SDLSpeechCapabilitiesLHPlusPhonemes;
+
+/**
+ The SDL platform can speak Prerecorded indicators and prompts.
+ */
+extern SDLSpeechCapabilities const SDLSpeechCapabilitiesPrerecorded;
+
+/**
+ The SDL platform can speak Silence.
+ */
+extern SDLSpeechCapabilities const SDLSpeechCapabilitiesSilence;
+
+/**
+ The SDL platform can play a file
+ */
+extern SDLSpeechCapabilities const SDLSpeechCapabilitiesFile;
diff --git a/SmartDeviceLink/SDLSpeechCapabilities.m b/SmartDeviceLink/public/SDLSpeechCapabilities.m
index 33a349974..33a349974 100644
--- a/SmartDeviceLink/SDLSpeechCapabilities.m
+++ b/SmartDeviceLink/public/SDLSpeechCapabilities.m
diff --git a/SmartDeviceLink/public/SDLStabilityControlsStatus.h b/SmartDeviceLink/public/SDLStabilityControlsStatus.h
new file mode 100644
index 000000000..dc9d00b51
--- /dev/null
+++ b/SmartDeviceLink/public/SDLStabilityControlsStatus.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+#import "SDLVehicleDataStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @since SDL 7.0.0
+ */
+@interface SDLStabilityControlsStatus : SDLRPCStruct
+
+/**
+ * @param escSystem - escSystem
+ * @param trailerSwayControl - trailerSwayControl
+ * @return A SDLStabilityControlsStatus object
+ */
+- (instancetype)initWithEscSystem:(nullable SDLVehicleDataStatus)escSystem trailerSwayControl:(nullable SDLVehicleDataStatus)trailerSwayControl;
+
+/**
+ * true if vehicle stability control is ON, else false
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataStatus escSystem;
+
+/**
+ * true if vehicle trailer sway control is ON, else false
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataStatus trailerSwayControl;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLStabilityControlsStatus.m b/SmartDeviceLink/public/SDLStabilityControlsStatus.m
new file mode 100644
index 000000000..0748fe3f7
--- /dev/null
+++ b/SmartDeviceLink/public/SDLStabilityControlsStatus.m
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLStabilityControlsStatus.h"
+#import "SDLVehicleDataStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLStabilityControlsStatus
+
+- (instancetype)initWithEscSystem:(nullable SDLVehicleDataStatus)escSystem trailerSwayControl:(nullable SDLVehicleDataStatus)trailerSwayControl {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.escSystem = escSystem;
+ self.trailerSwayControl = trailerSwayControl;
+ return self;
+}
+
+- (void)setEscSystem:(nullable SDLVehicleDataStatus)escSystem {
+ [self.store sdl_setObject:escSystem forName:SDLRPCParameterNameEscSystem];
+}
+
+- (nullable SDLVehicleDataStatus)escSystem {
+ return [self.store sdl_enumForName:SDLRPCParameterNameEscSystem error:nil];
+}
+
+- (void)setTrailerSwayControl:(nullable SDLVehicleDataStatus)trailerSwayControl {
+ [self.store sdl_setObject:trailerSwayControl forName:SDLRPCParameterNameTrailerSwayControl];
+}
+
+- (nullable SDLVehicleDataStatus)trailerSwayControl {
+ return [self.store sdl_enumForName:SDLRPCParameterNameTrailerSwayControl error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStartTime.h b/SmartDeviceLink/public/SDLStartTime.h
index 05645830e..05645830e 100644
--- a/SmartDeviceLink/SDLStartTime.h
+++ b/SmartDeviceLink/public/SDLStartTime.h
diff --git a/SmartDeviceLink/SDLStartTime.m b/SmartDeviceLink/public/SDLStartTime.m
index 4fa55b9df..4fa55b9df 100644
--- a/SmartDeviceLink/SDLStartTime.m
+++ b/SmartDeviceLink/public/SDLStartTime.m
diff --git a/SmartDeviceLink/public/SDLStaticIconName.h b/SmartDeviceLink/public/SDLStaticIconName.h
new file mode 100644
index 000000000..c2e731d79
--- /dev/null
+++ b/SmartDeviceLink/public/SDLStaticIconName.h
@@ -0,0 +1,900 @@
+//
+// SDLStaticIconName.h
+// SmartDeviceLink
+//
+// Created by Nicole on 7/23/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Static icon names
+ */
+typedef SDLEnum SDLStaticIconName NS_TYPED_ENUM;
+
+/**
+ * Static icon accept call / active phone call in progress / initiate a phone call
+ */
+extern SDLStaticIconName const SDLStaticIconNameAcceptCall;
+
+/**
+ * Static icon add waypoint
+ */
+extern SDLStaticIconName const SDLStaticIconNameAddWaypoint;
+
+/**
+ * Static icon album
+ */
+extern SDLStaticIconName const SDLStaticIconNameAlbum;
+
+/**
+ * Static icon ambient lighting
+ */
+extern SDLStaticIconName const SDLStaticIconNameAmbientLighting;
+
+/**
+ * Static icon arrow - north
+ */
+extern SDLStaticIconName const SDLStaticIconNameArrowNorth;
+
+/**
+ * Static icon audio mute
+ */
+extern SDLStaticIconName const SDLStaticIconNameAudioMute;
+
+/**
+ * Static icon audiobook episode
+ */
+extern SDLStaticIconName const SDLStaticIconNameAudiobookEpisode;
+
+/**
+ * Static icon audiobook narrator
+ */
+extern SDLStaticIconName const SDLStaticIconNameAudiobookNarrator;
+
+/**
+ * Static icon auxillary audio
+ */
+extern SDLStaticIconName const SDLStaticIconNameAuxillaryAudio;
+
+/**
+ * Static icon back / return
+ */
+extern SDLStaticIconName const SDLStaticIconNameBack;
+
+/**
+ * Static icon battery capacity 0 of 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity0Of5;
+
+/**
+ * Static icon battery capacity 1 of 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity1Of5;
+
+/**
+ * Static icon battery capacity 2 of 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity2Of5;
+
+/**
+ * Static icon battery capacity 3 of 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity3Of5;
+
+/**
+ * Static icon battery capacity 4 of 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity4Of5;
+
+/**
+ * Static icon battery capacity 5 of 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameBatteryCapacity5Of5;
+
+/**
+ * Static icon bluetooth audio source
+ */
+extern SDLStaticIconName const SDLStaticIconNameBluetoothAudioSource;
+
+/**
+ * Static icon bluetooth1
+ */
+extern SDLStaticIconName const SDLStaticIconNameBluetooth1;
+
+/**
+ * Static icon bluetooth2
+ */
+extern SDLStaticIconName const SDLStaticIconNameBluetooth2;
+
+/**
+ * Static icon browse
+ */
+extern SDLStaticIconName const SDLStaticIconNameBrowse;
+
+/**
+ * Static icon cell phone in roaming mode
+ */
+extern SDLStaticIconName const SDLStaticIconNameCellPhoneInRoamingMode;
+
+/**
+ * Static icon cell service signal strength 0 of 5 bars
+ */
+extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength0Of5Bars;
+
+/**
+ * Static icon cell service signal strength 1 of 5 bars
+ */
+extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength1Of5Bars;
+
+/**
+ * Static icon cell service signal strength 2 of 5 bars
+ */
+extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength2Of5Bars;
+
+/**
+ * Static icon cell service signal strength 3 of 5 bars
+ */
+extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength3Of5Bars;
+
+/**
+ * Static icon cell service signal strength 4 of 5 bars
+ */
+extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength4Of5Bars;
+
+/**
+ * Static icon cell service signal strength 5 of 5 bars
+ */
+extern SDLStaticIconName const SDLStaticIconNameCellServiceSignalStrength5Of5Bars;
+
+/**
+ * Static icon change lane left
+ */
+extern SDLStaticIconName const SDLStaticIconNameChangeLaneLeft;
+
+/**
+ * Static icon change lane right
+ */
+extern SDLStaticIconName const SDLStaticIconNameChangeLaneRight;
+
+/**
+ * Static icon check box checked
+ */
+extern SDLStaticIconName const SDLStaticIconNameCheckBoxChecked;
+
+/**
+ * Static icon check box unchecked
+ */
+extern SDLStaticIconName const SDLStaticIconNameCheckBoxUnchecked;
+
+/**
+ * Static icon climate
+ */
+extern SDLStaticIconName const SDLStaticIconNameClimate;
+
+/**
+ * Static icon clock
+ */
+extern SDLStaticIconName const SDLStaticIconNameClock;
+
+/**
+ * Static icon compose (e.g. message)
+ */
+extern SDLStaticIconName const SDLStaticIconNameCompose;
+
+/**
+ * Static icon contact / person
+ */
+extern SDLStaticIconName const SDLStaticIconNameContact;
+
+/**
+ * Static icon continue
+ */
+extern SDLStaticIconName const SDLStaticIconNameContinue;
+
+/**
+ * Static icon dash / bullet point
+ */
+extern SDLStaticIconName const SDLStaticIconNameDash;
+
+/**
+ * Static icon date / calendar
+ */
+extern SDLStaticIconName const SDLStaticIconNameDate;
+
+/**
+ * Static icon delete/remove - trash
+ */
+extern SDLStaticIconName const SDLStaticIconNameDelete;
+
+/**
+ * Static icon destination
+ */
+extern SDLStaticIconName const SDLStaticIconNameDestination;
+
+/**
+ * Static icon destination ferry ahead
+ */
+extern SDLStaticIconName const SDLStaticIconNameDestinationFerryAhead;
+
+/**
+ * Static icon ebookmark (e.g. message, feed)
+ */
+extern SDLStaticIconName const SDLStaticIconNameEbookmark;
+
+/**
+ * Static icon empty (i.e. no image)
+ */
+extern SDLStaticIconName const SDLStaticIconNameEmpty;
+
+/**
+ * Static icon end call / reject call
+ */
+extern SDLStaticIconName const SDLStaticIconNameEndCall;
+
+/**
+ * Static icon fail / X
+ */
+extern SDLStaticIconName const SDLStaticIconNameFail;
+
+/**
+ * Static icon fast forward 30 secs
+ */
+extern SDLStaticIconName const SDLStaticIconNameFastForward30Secs;
+
+/**
+ * Static icon favorite / heart
+ */
+extern SDLStaticIconName const SDLStaticIconNameFavoriteHeart;
+
+/**
+ * Static icon favorite / star
+ */
+extern SDLStaticIconName const SDLStaticIconNameFavoriteStar;
+
+/**
+ * Static icon fax number
+ */
+extern SDLStaticIconName const SDLStaticIconNameFaxNumber;
+
+/**
+ * Static icon filename
+ */
+extern SDLStaticIconName const SDLStaticIconNameFilename;
+
+/**
+ * Static icon filter / search
+ */
+extern SDLStaticIconName const SDLStaticIconNameFilter;
+
+/**
+ * Static icon folder
+ */
+extern SDLStaticIconName const SDLStaticIconNameFolder;
+
+/**
+ * Static icon fuel prices
+ */
+extern SDLStaticIconName const SDLStaticIconNameFuelPrices;
+
+/**
+ * Static icon full map
+ */
+extern SDLStaticIconName const SDLStaticIconNameFullMap;
+
+/**
+ * Static icon generic phone number
+ */
+extern SDLStaticIconName const SDLStaticIconNameGenericPhoneNumber;
+
+/**
+ * Static icon genre
+ */
+extern SDLStaticIconName const SDLStaticIconNameGenre;
+
+/**
+ * Static icon global keyboard
+ */
+extern SDLStaticIconName const SDLStaticIconNameGlobalKeyboard;
+
+/**
+ * Static icon highway exit information
+ */
+extern SDLStaticIconName const SDLStaticIconNameHighwayExitInformation;
+
+/**
+ * Static icon home phone number
+ */
+extern SDLStaticIconName const SDLStaticIconNameHomePhoneNumber;
+
+/**
+ * Static icon hyperlink
+ */
+extern SDLStaticIconName const SDLStaticIconNameHyperlink;
+
+/**
+ * Static icon ID3 tag unknown
+ */
+extern SDLStaticIconName const SDLStaticIconNameID3TagUnknown;
+
+/**
+ * Static icon incoming calls (in list of phone calls)
+ */
+extern SDLStaticIconName const SDLStaticIconNameIncomingCalls;
+
+/**
+ * Static icon information
+ */
+extern SDLStaticIconName const SDLStaticIconNameInformation;
+
+/**
+ * Static icon IPOD media source
+ */
+extern SDLStaticIconName const SDLStaticIconNameIPodMediaSource;
+
+/**
+ * Static icon join calls
+ */
+extern SDLStaticIconName const SDLStaticIconNameJoinCalls;
+
+/**
+ * Static icon keep left
+ */
+extern SDLStaticIconName const SDLStaticIconNameKeepLeft;
+
+/**
+ * Static icon keep right
+ */
+extern SDLStaticIconName const SDLStaticIconNameKeepRight;
+
+/**
+ * Static icon key / keycode
+ */
+extern SDLStaticIconName const SDLStaticIconNameKey;
+
+/**
+ * Static icon left
+ */
+extern SDLStaticIconName const SDLStaticIconNameLeft;
+
+/**
+ * Static icon left arrow / back
+ */
+extern SDLStaticIconName const SDLStaticIconNameLeftArrow;
+
+/**
+ * Static icon left exit
+ */
+extern SDLStaticIconName const SDLStaticIconNameLeftExit;
+
+/**
+ * Static icon LINE IN audio source
+ */
+extern SDLStaticIconName const SDLStaticIconNameLineInAudioSource;
+
+/**
+ * Static icon locked
+ */
+extern SDLStaticIconName const SDLStaticIconNameLocked;
+
+/**
+ * Static icon media control - left arrow
+ */
+extern SDLStaticIconName const SDLStaticIconNameMediaControlLeftArrow;
+
+/**
+ * Static icon media control - recording
+ */
+extern SDLStaticIconName const SDLStaticIconNameMediaControlRecording;
+
+/**
+ * Static icon media control - right arrow
+ */
+extern SDLStaticIconName const SDLStaticIconNameMediaControlRightArrow;
+
+/**
+ * Static icon media control - stop (e.g. streaming)
+ */
+extern SDLStaticIconName const SDLStaticIconNameMediaControlStop;
+
+/**
+ * Static icon microphone
+ */
+extern SDLStaticIconName const SDLStaticIconNameMicrophone;
+
+/**
+ * Static icon missed calls (in list of phone calls)
+ */
+extern SDLStaticIconName const SDLStaticIconNameMissedCalls;
+
+/**
+ * Static icon mobile phone number
+ */
+extern SDLStaticIconName const SDLStaticIconNameMobilePhoneNumber;
+
+/**
+ * Static icon move down / download
+ */
+extern SDLStaticIconName const SDLStaticIconNameMoveDown;
+
+/**
+ * Static icon move up
+ */
+extern SDLStaticIconName const SDLStaticIconNameMoveUp;
+
+/**
+ * Static icon MP3 tag artist
+ */
+extern SDLStaticIconName const SDLStaticIconNameMP3TagArtist;
+
+/**
+ * Static icon navigation / navigation settings
+ */
+extern SDLStaticIconName const SDLStaticIconNameNavigation;
+
+/**
+ * Static icon navigation current direction
+ */
+extern SDLStaticIconName const SDLStaticIconNameNavigationCurrentDirection;
+
+/**
+ * Static icon negative rating - thumbs down
+ */
+extern SDLStaticIconName const SDLStaticIconNameNegativeRatingThumbsDown;
+
+/**
+ * Static icon new/unread text message/email
+ */
+extern SDLStaticIconName const SDLStaticIconNameNew;
+
+/**
+ * Static icon office phone number / work phone number
+ */
+extern SDLStaticIconName const SDLStaticIconNameOfficePhoneNumber;
+
+/**
+ * Static icon opened/read text message/email
+ */
+extern SDLStaticIconName const SDLStaticIconNameOpened;
+
+/**
+ * Static icon origin / nearby locale / current position
+ */
+extern SDLStaticIconName const SDLStaticIconNameOrigin;
+
+/**
+ * Static icon outgoing calls (in list of phone calls)
+ */
+extern SDLStaticIconName const SDLStaticIconNameOutgoingCalls;
+
+/**
+ * Static icon play / pause - pause active
+ */
+extern SDLStaticIconName const SDLStaticIconNamePause;
+
+/**
+ * Static icon phone call 1
+ */
+extern SDLStaticIconName const SDLStaticIconNamePhoneCall1;
+
+/**
+ * Static icon phone call 2
+ */
+extern SDLStaticIconName const SDLStaticIconNamePhoneCall2;
+
+/**
+ * Static icon phone device
+ */
+extern SDLStaticIconName const SDLStaticIconNamePhoneDevice;
+
+/**
+ * Static icon phonebook
+ */
+extern SDLStaticIconName const SDLStaticIconNamePhonebook;
+
+/**
+ * Static icon photo / picture
+ */
+extern SDLStaticIconName const SDLStaticIconNamePhoto;
+
+/**
+ * Static icon play / pause - play active
+ */
+extern SDLStaticIconName const SDLStaticIconNamePlay;
+
+/**
+ * Static icon playlist
+ */
+extern SDLStaticIconName const SDLStaticIconNamePlaylist;
+
+/**
+ * Static icon pop-up
+ */
+extern SDLStaticIconName const SDLStaticIconNamePopUp;
+
+/**
+ * Static icon positive rating - thumbs up
+ */
+extern SDLStaticIconName const SDLStaticIconNamePositiveRatingThumbsUp;
+
+/**
+ * Static icon power
+ */
+extern SDLStaticIconName const SDLStaticIconNamePower;
+
+/**
+ * Static icon primary phone (favorite)
+ */
+extern SDLStaticIconName const SDLStaticIconNamePrimaryPhone;
+
+/**
+ * Static icon radio button checked
+ */
+extern SDLStaticIconName const SDLStaticIconNameRadioButtonChecked;
+
+/**
+ * Static icon radio button unchecked
+ */
+extern SDLStaticIconName const SDLStaticIconNameRadioButtonUnchecked;
+
+/**
+ * Static icon recent calls / history
+ */
+extern SDLStaticIconName const SDLStaticIconNameRecentCalls;
+
+/**
+ * Static icon recent destinations
+ */
+extern SDLStaticIconName const SDLStaticIconNameRecentDestinations;
+
+/**
+ * Static icon redo
+ */
+extern SDLStaticIconName const SDLStaticIconNameRedo;
+
+/**
+ * Static icon refresh
+ */
+extern SDLStaticIconName const SDLStaticIconNameRefresh;
+
+/**
+ * Static icon remote diagnostics - check engine
+ */
+extern SDLStaticIconName const SDLStaticIconNameRemoteDiagnosticsCheckEngine;
+
+/**
+ * Static icon rendered 911 assist / emergency assistance
+ */
+extern SDLStaticIconName const SDLStaticIconNameRendered911Assist;
+
+/**
+ * Static icon repeat
+ */
+extern SDLStaticIconName const SDLStaticIconNameRepeat;
+
+/**
+ * Static icon repeat play
+ */
+extern SDLStaticIconName const SDLStaticIconNameRepeatPlay;
+
+/**
+ * Static icon reply
+ */
+extern SDLStaticIconName const SDLStaticIconNameReply;
+
+/**
+ * Static icon rewind 30 secs
+ */
+extern SDLStaticIconName const SDLStaticIconNameRewind30Secs;
+
+/**
+ * Static icon right
+ */
+extern SDLStaticIconName const SDLStaticIconNameRight;
+
+/**
+ * Static icon right exit
+ */
+extern SDLStaticIconName const SDLStaticIconNameRightExit;
+
+/**
+ * Static icon ringtones
+ */
+extern SDLStaticIconName const SDLStaticIconNameRingtones;
+
+/**
+ * Static icon roundabout left hand 1
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand1;
+
+/**
+ * Static icon roundabout left hand 2
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand2;
+
+/**
+ * Static icon roundabout left hand 3
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand3;
+
+/**
+ * Static icon roundabout left hand 4
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand4;
+
+/**
+ * Static icon roundabout left hand 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand5;
+
+/**
+ * Static icon roundabout left hand 6
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand6;
+
+/**
+ * Static icon roundabout left hand 7
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutLeftHand7;
+
+/**
+ * Static icon roundabout right hand 1
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand1;
+
+/**
+ * Static icon roundabout right hand 2
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand2;
+
+/**
+ * Static icon roundabout right hand 3
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand3;
+
+/**
+ * Static icon roundabout right hand 4
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand4;
+
+/**
+ * Static icon roundabout right hand 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand5;
+
+/**
+ * Static icon roundabout right hand 6
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand6;
+
+/**
+ * Static icon roundabout right hand 7
+ */
+extern SDLStaticIconName const SDLStaticIconNameRoundaboutRightHand7;
+
+/**
+ * Static icon RSS
+ */
+extern SDLStaticIconName const SDLStaticIconNameRSS;
+
+/**
+ * Static icon settings / menu
+ */
+extern SDLStaticIconName const SDLStaticIconNameSettings;
+
+/**
+ * Static icon sharp left
+ */
+extern SDLStaticIconName const SDLStaticIconNameSharpLeft;
+
+/**
+ * Static icon sharp right
+ */
+extern SDLStaticIconName const SDLStaticIconNameSharpRight;
+
+/**
+ * Static icon show
+ */
+extern SDLStaticIconName const SDLStaticIconNameShow;
+
+/**
+ * Static icon shuffle play
+ */
+extern SDLStaticIconName const SDLStaticIconNameShufflePlay;
+
+/**
+ * Static icon ski places / elevation / altitude
+ */
+extern SDLStaticIconName const SDLStaticIconNameSkiPlaces;
+
+/**
+ * Static icon slight left
+ */
+extern SDLStaticIconName const SDLStaticIconNameSlightLeft;
+
+/**
+ * Static icon slight right
+ */
+extern SDLStaticIconName const SDLStaticIconNameSlightRight;
+
+/**
+ * Static icon smartphone
+ */
+extern SDLStaticIconName const SDLStaticIconNameSmartphone;
+
+/**
+ * Static icon sort list
+ */
+extern SDLStaticIconName const SDLStaticIconNameSortList;
+
+/**
+ * Static icon speed dial numbers - number 0
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber0;
+
+/**
+ * Static icon speed dial numbers - number 1
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber1;
+
+/**
+ * Static icon speed dial numbers - number 2
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber2;
+
+/**
+ * Static icon speed dial numbers - number 3
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber3;
+
+/**
+ * Static icon speed dial numbers - number 4
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber4;
+
+/**
+ * Static icon speed dial numbers - number 5
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber5;
+
+/**
+ * Static icon speed dial numbers - number 6
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber6;
+
+/**
+ * Static icon speed dial numbers - number 7
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber7;
+
+/**
+ * Static icon speed dial numbers - number 8
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber8;
+
+/**
+ * Static icon speed dial numbers - number 9
+ */
+extern SDLStaticIconName const SDLStaticIconNameSpeedDialNumbersNumber9;
+
+/**
+ * Static icon success / check
+ */
+extern SDLStaticIconName const SDLStaticIconNameSuccess;
+
+/**
+ * Static icon track title / song title
+ */
+extern SDLStaticIconName const SDLStaticIconNameTrackTitle;
+
+/**
+ * Static icon traffic report
+ */
+extern SDLStaticIconName const SDLStaticIconNameTrafficReport;
+
+/**
+ * Static icon turn list
+ */
+extern SDLStaticIconName const SDLStaticIconNameTurnList;
+
+/**
+ * Static icon u-turn left traffic
+ */
+extern SDLStaticIconName const SDLStaticIconNameUTurnLeftTraffic;
+
+/**
+ * Static icon u-turn right traffic
+ */
+extern SDLStaticIconName const SDLStaticIconNameUTurnRightTraffic;
+
+/**
+ * Static icon undo
+ */
+extern SDLStaticIconName const SDLStaticIconNameUndo;
+
+/**
+ * Static icon unlocked
+ */
+extern SDLStaticIconName const SDLStaticIconNameUnlocked;
+
+/**
+ * Static icon USB media audio source
+ */
+extern SDLStaticIconName const SDLStaticIconNameUSBMediaAudioSource;
+
+/**
+ * Static icon voice control scrollbar - list item no. 1
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo1;
+
+/**
+ * Static icon voice control scrollbar - list item no. 2
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo2;
+
+/**
+ * Static icon voice control scrollbar - list item no. 3
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo3;
+
+/**
+ * Static icon voice control scrollbar - list item no. 4
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceControlScrollbarListItemNo4;
+
+/**
+ * Static icon voice recognition - failed
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionFailed;
+
+/**
+ * Static icon voice recognition - pause
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionPause;
+
+/**
+ * Static icon voice recognition - successful
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionSuccessful;
+
+/**
+ * Static icon voice recognition - system active
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionSystemActive;
+
+/**
+ * Static icon voice recognition - system listening
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionSystemListening;
+
+/**
+ * Static icon voice recognition - try again
+ */
+extern SDLStaticIconName const SDLStaticIconNameVoiceRecognitionTryAgain;
+
+/**
+ * Static icon warning / safety alert
+ */
+extern SDLStaticIconName const SDLStaticIconNameWarning;
+
+/**
+ * Static icon weather
+ */
+extern SDLStaticIconName const SDLStaticIconNameWeather;
+
+/**
+ * Static icon wifi full
+ */
+extern SDLStaticIconName const SDLStaticIconNameWifiFull;
+
+/**
+ * Static icon zoom in
+ */
+extern SDLStaticIconName const SDLStaticIconNameZoomIn;
+
+/**
+ * Static icon zoom out
+ */
+extern SDLStaticIconName const SDLStaticIconNameZoomOut;
+
diff --git a/SmartDeviceLink/SDLStaticIconName.m b/SmartDeviceLink/public/SDLStaticIconName.m
index c39ef14f2..c39ef14f2 100644
--- a/SmartDeviceLink/SDLStaticIconName.m
+++ b/SmartDeviceLink/public/SDLStaticIconName.m
diff --git a/SmartDeviceLink/SDLStationIDNumber.h b/SmartDeviceLink/public/SDLStationIDNumber.h
index 22288c1db..22288c1db 100644
--- a/SmartDeviceLink/SDLStationIDNumber.h
+++ b/SmartDeviceLink/public/SDLStationIDNumber.h
diff --git a/SmartDeviceLink/SDLStationIDNumber.m b/SmartDeviceLink/public/SDLStationIDNumber.m
index a88afe79a..a88afe79a 100644
--- a/SmartDeviceLink/SDLStationIDNumber.m
+++ b/SmartDeviceLink/public/SDLStationIDNumber.m
diff --git a/SmartDeviceLink/SDLStreamingAudioManagerType.h b/SmartDeviceLink/public/SDLStreamingAudioManagerType.h
index 1ec391ef7..1ec391ef7 100644
--- a/SmartDeviceLink/SDLStreamingAudioManagerType.h
+++ b/SmartDeviceLink/public/SDLStreamingAudioManagerType.h
diff --git a/SmartDeviceLink/public/SDLStreamingMediaConfiguration.h b/SmartDeviceLink/public/SDLStreamingMediaConfiguration.h
new file mode 100644
index 000000000..2c1585f16
--- /dev/null
+++ b/SmartDeviceLink/public/SDLStreamingMediaConfiguration.h
@@ -0,0 +1,134 @@
+//
+// SDLStreamingMediaConfiguration.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 8/2/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLStreamingMediaManagerConstants.h"
+
+@protocol SDLSecurityType;
+@protocol SDLStreamingMediaManagerDataSource;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The type of rendering that CarWindow will perform. Depending on your app, you may need to try different ones for best performance
+ */
+typedef NS_ENUM(NSUInteger, SDLCarWindowRenderingType) {
+ /// Instead of rendering your UIViewController's view, this will render the layer using renderInContext
+ SDLCarWindowRenderingTypeLayer,
+
+ /// Renders your UIViewController's view using drawViewHierarchyInRect:bounds afterScreenUpdates:YES
+ SDLCarWindowRenderingTypeViewAfterScreenUpdates,
+
+ /// Renders your UIViewController's view using drawViewHierarchyInRect:bounds afterScreenUpdates:NO
+ SDLCarWindowRenderingTypeViewBeforeScreenUpdates
+};
+
+/// The streaming media configuration. Use this class to configure streaming media information.
+@interface SDLStreamingMediaConfiguration : NSObject <NSCopying>
+
+/**
+ * What encryption level video/audio streaming should be. The default is SDLStreamingEncryptionFlagAuthenticateAndEncrypt.
+ */
+@property (assign, nonatomic) SDLStreamingEncryptionFlag maximumDesiredEncryption;
+
+/**
+ * Properties to use for applications that utilize the video encoder for streaming. See VTCompressionProperties.h for more details. For example, you can set kVTCompressionPropertyKey_ExpectedFrameRate to set your framerate. Setting the framerate this way will also set the framerate if you use CarWindow automatic streaming.
+ *
+ * Other properties you may want to try adjusting include kVTCompressionPropertyKey_AverageBitRate and kVTCompressionPropertyKey_DataRateLimits.
+ */
+@property (copy, nonatomic, nullable) NSDictionary<NSString *, id> *customVideoEncoderSettings;
+
+/**
+ Usable to change run time video stream setup behavior. Only use this and modify the results if you *really* know what you're doing. The head unit defaults are generally good.
+ */
+@property (weak, nonatomic, nullable) id<SDLStreamingMediaManagerDataSource> dataSource;
+
+/**
+ Set the initial view controller your video streaming content is within.
+
+ Activates the haptic view parser and CarWindow systems when set. This library will also use that information to attempt to return the touched view to you in `SDLTouchManagerDelegate`.
+
+ @note If you wish to alter this `rootViewController` while streaming via CarWindow, you must set a new `rootViewController` on `SDLStreamingMediaManager` and this will update both the haptic view parser and CarWindow.
+
+ @warning Apps using views outside of the `UIView` heirarchy (such as OpenGL) are currently unsupported. If you app uses partial views in the heirarchy, only those views will be discovered. Your OpenGL views will not be discoverable to a haptic interface head unit and you will have to manually make these views discoverable via the `SDLSendHapticData` RPC request.
+
+ @warning If the `rootViewController` is app UI and is set from the `UIViewController` class, it should only be set after viewDidAppear:animated is called. Setting the `rootViewController` in `viewDidLoad` or `viewWillAppear:animated` can cause weird behavior when setting the new frame.
+
+ @warning If setting the `rootViewController` when the app returns to the foreground, the app should register for the `UIApplicationDidBecomeActive` notification and not the `UIApplicationWillEnterForeground` notification. Setting the frame after a notification from the latter can also cause weird behavior when setting the new frame.
+
+ @warning While `viewDidLoad` will fire, appearance methods will not.
+ */
+@property (strong, nonatomic, nullable) UIViewController *rootViewController;
+
+/**
+ Declares if CarWindow will use layer rendering or view rendering. Defaults to layer rendering.
+ */
+@property (assign, nonatomic) SDLCarWindowRenderingType carWindowRenderingType;
+
+/**
+ When YES, the StreamingMediaManager will run a CADisplayLink with the framerate set to the video encoder settings kVTCompressionPropertyKey_ExpectedFrameRate. This then forces TouchManager (and CarWindow, if used) to sync their callbacks to the framerate. If using CarWindow, this *must* be YES. If NO, `enableSyncedPanning` on SDLTouchManager will be set to NO. Defaults to YES.
+ */
+@property (assign, nonatomic) BOOL enableForcedFramerateSync;
+
+/**
+ When YES, the StreamingMediaManager will disable its internal checks that the `rootViewController` only has one `supportedOrientation`. Having multiple orientations can cause streaming issues. If you wish to disable this check, set it to YES. Defaults to NO.
+ */
+@property (assign, nonatomic) BOOL allowMultipleViewControllerOrientations;
+
+/**
+ Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you'd like custom video encoder settings, you can set the property manually.
+
+ @return The configuration
+ */
+- (instancetype)init;
+
+/**
+ Create a secure video streaming configuration. Security managers will be provided from SDLEncryptionConfiguration and the encryption flag will be set to SDLStreamingEncryptionFlagAuthenticateAndEncrypt. If you'd like custom video encoder settings, you can set the property manually.
+
+ @return The configuration
+ */
++ (instancetype)secureConfiguration;
+
+/**
+ Manually set all the properties to the streaming media configuration
+
+ @param encryptionFlag The maximum encrpytion supported. If the connected head unit supports less than set here, it will still connect, but if it supports more than set here, it will not connect.
+ @param videoSettings Custom video encoder settings to be used in video streaming.
+ @param rootViewController The UIViewController wih the content that is being streamed on, to use for haptics if needed and possible (only works for UIViews)
+ @return The configuration
+ */
+- (instancetype)initWithEncryptionFlag:(SDLStreamingEncryptionFlag)encryptionFlag videoSettings:(nullable NSDictionary<NSString *, id> *)videoSettings dataSource:(nullable id<SDLStreamingMediaManagerDataSource>)dataSource rootViewController:(nullable UIViewController *)rootViewController;
+
+/**
+ Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you'd like custom video encoder settings, you can set the property manually. This is equivalent to `init`.
+
+ @return The configuration
+ */
++ (instancetype)insecureConfiguration NS_SWIFT_UNAVAILABLE("Use the standard initializer instead");
+
+/**
+ Create a CarWindow insecure configuration with a view controller
+
+ @param initialViewController The initial view controller that will be streamed
+ @return The configuration
+ */
++ (instancetype)autostreamingInsecureConfigurationWithInitialViewController:(UIViewController *)initialViewController;
+
+/**
+ Create a CarWindow secure configuration with a view controller.
+
+ @param initialViewController The initial view controller that will be streamed, this can be a basic `UIViewController` if you need to set your actual streaming view controller at a later time on `SDLManager.streamingManager.rootViewController`.
+ @return The configuration
+ */
++ (instancetype)autostreamingSecureConfigurationWithInitialViewController:(UIViewController *)initialViewController;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLStreamingMediaConfiguration.m b/SmartDeviceLink/public/SDLStreamingMediaConfiguration.m
new file mode 100644
index 000000000..7438b2678
--- /dev/null
+++ b/SmartDeviceLink/public/SDLStreamingMediaConfiguration.m
@@ -0,0 +1,68 @@
+//
+// SDLStreamingMediaConfiguration.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 8/2/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLStreamingMediaConfiguration.h"
+
+#import "SDLStreamingMediaManagerDataSource.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLStreamingMediaConfiguration
+
+- (instancetype)init {
+ return [self initWithEncryptionFlag:SDLStreamingEncryptionFlagNone videoSettings:nil dataSource:nil rootViewController:nil];
+}
+
++ (instancetype)secureConfiguration {
+ return [[self alloc] initWithEncryptionFlag:SDLStreamingEncryptionFlagAuthenticateAndEncrypt videoSettings:nil dataSource:nil rootViewController:nil];
+}
+
++ (instancetype)insecureConfiguration {
+ return [[self alloc] init];
+}
+
+- (instancetype)initWithEncryptionFlag:(SDLStreamingEncryptionFlag)encryptionFlag videoSettings:(nullable NSDictionary<NSString *, id> *)videoSettings dataSource:(nullable id<SDLStreamingMediaManagerDataSource>)dataSource rootViewController:(nullable UIViewController *)rootViewController {
+ if (!self) {
+ return nil;
+ }
+
+ _maximumDesiredEncryption = encryptionFlag;
+ _customVideoEncoderSettings = videoSettings;
+ _dataSource = dataSource;
+ _rootViewController = rootViewController;
+ _carWindowRenderingType = SDLCarWindowRenderingTypeLayer;
+ _enableForcedFramerateSync = YES;
+ _allowMultipleViewControllerOrientations = NO;
+
+ return self;
+}
+
++ (instancetype)autostreamingInsecureConfigurationWithInitialViewController:(UIViewController *)initialViewController {
+ return [[self alloc] initWithEncryptionFlag:SDLStreamingEncryptionFlagNone videoSettings:nil dataSource:nil rootViewController:initialViewController];
+}
+
++ (instancetype)autostreamingSecureConfigurationWithInitialViewController:(UIViewController *)initialViewController {
+ return [[self alloc] initWithEncryptionFlag:SDLStreamingEncryptionFlagAuthenticateAndEncrypt videoSettings:nil dataSource:nil rootViewController:initialViewController];
+}
+
+#pragma mark NSCopying
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLStreamingMediaConfiguration *newConfig = [[self.class allocWithZone:zone] initWithEncryptionFlag:_maximumDesiredEncryption videoSettings:_customVideoEncoderSettings dataSource:_dataSource rootViewController:_rootViewController];
+
+ newConfig.carWindowRenderingType = self.carWindowRenderingType;
+ newConfig.enableForcedFramerateSync = self.enableForcedFramerateSync;
+ newConfig.allowMultipleViewControllerOrientations = self.allowMultipleViewControllerOrientations;
+
+ return newConfig;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLStreamingMediaManager.h b/SmartDeviceLink/public/SDLStreamingMediaManager.h
new file mode 100644
index 000000000..44ccec14b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLStreamingMediaManager.h
@@ -0,0 +1,186 @@
+//
+// SDLStreamingDataManager.h
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 8/11/15.
+// Copyright (c) 2015 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <VideoToolbox/VideoToolbox.h>
+
+#import "SDLStreamingAudioManagerType.h"
+#import "SDLStreamingMediaManagerConstants.h"
+
+@class SDLAudioStreamManager;
+@class SDLConfiguration;
+@class SDLProtocol;
+@class SDLSecondaryTransportManager;
+@class SDLSystemCapabilityManager;
+@class SDLTouchManager;
+@class SDLVideoStreamingFormat;
+
+@protocol SDLFocusableItemLocatorType;
+@protocol SDLConnectionManagerType;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+/// Manager to help control streaming (video and audio) media services.
+@interface SDLStreamingMediaManager : NSObject <SDLStreamingAudioManagerType>
+
+/**
+ * Touch Manager responsible for providing touch event notifications.
+ */
+@property (nonatomic, strong, readonly) SDLTouchManager *touchManager;
+
+/**
+ * Audio Manager responsible for managing streaming audio.
+ */
+@property (nonatomic, strong, readonly) SDLAudioStreamManager *audioManager;
+
+/**
+ This property is used for SDLCarWindow, the ability to stream any view controller. To start, you must set an initial view controller on `SDLStreamingMediaConfiguration` `rootViewController`. After streaming begins, you can replace that view controller with a new root by placing the new view controller into this property.
+ */
+@property (nonatomic, strong, nullable) UIViewController *rootViewController;
+
+/**
+ A haptic interface that can be updated to reparse views within the window you've provided. Send a `SDLDidUpdateProjectionView` notification or call the `updateInterfaceLayout` method to reparse. The "output" of this haptic interface occurs in the `touchManager` property where it will call the delegate.
+ */
+@property (nonatomic, strong, readonly, nullable) id<SDLFocusableItemLocatorType> focusableItemManager;
+
+/**
+ * Whether or not video streaming is supported
+ *
+ * @see SDLRegisterAppInterface SDLDisplayCapabilities
+ */
+@property (assign, nonatomic, readonly, getter=isStreamingSupported) BOOL streamingSupported;
+
+/**
+ * Whether or not the video session is connected.
+ */
+@property (assign, nonatomic, readonly, getter=isVideoConnected) BOOL videoConnected;
+
+/**
+ * Whether or not the video session is encrypted. This may be different than the requestedEncryptionType.
+ */
+@property (assign, nonatomic, readonly, getter=isVideoEncrypted) BOOL videoEncrypted;
+
+/**
+ * Whether or not the audio session is connected.
+ */
+@property (assign, nonatomic, readonly, getter=isAudioConnected) BOOL audioConnected;
+
+/**
+ * Whether or not the audio session is encrypted. This may be different than the requestedEncryptionType.
+ */
+@property (assign, nonatomic, readonly, getter=isAudioEncrypted) BOOL audioEncrypted;
+
+/**
+ * Whether or not the video stream is paused due to either the application being backgrounded, the HMI state being either NONE or BACKGROUND, or the video stream not being ready.
+ */
+@property (assign, nonatomic, readonly, getter=isVideoStreamingPaused) BOOL videoStreamingPaused;
+
+/**
+ * The current screen resolution of the connected display in pixels.
+ */
+@property (assign, nonatomic, readonly) CGSize screenSize;
+
+/**
+ This is the agreed upon format of video encoder that is in use, or nil if not currently connected.
+ */
+@property (strong, nonatomic, readonly, nullable) SDLVideoStreamingFormat *videoFormat;
+
+/**
+ A list of all supported video formats by this manager
+ */
+@property (strong, nonatomic, readonly) NSArray<SDLVideoStreamingFormat *> *supportedFormats;
+
+/**
+ * The pixel buffer pool reference returned back from an active VTCompressionSessionRef encoder.
+ *
+ * @warning This will only return a valid pixel buffer pool after the encoder has been initialized (when the video session has started).
+ * @discussion Clients may call this once and retain the resulting pool, this call is cheap enough that it's OK to call it once per frame.
+ */
+@property (assign, nonatomic, readonly, nullable) CVPixelBufferPoolRef pixelBufferPool;
+
+/**
+ * The requested encryption type when a session attempts to connect. This setting applies to both video and audio sessions.
+ *
+ * DEFAULT: SDLStreamingEncryptionFlagAuthenticateAndEncrypt
+ */
+@property (assign, nonatomic) SDLStreamingEncryptionFlag requestedEncryptionType;
+
+/**
+ When YES, the StreamingMediaManager will send a black screen with "Video Backgrounded String". Defaults to YES.
+ */
+@property (assign, nonatomic) BOOL showVideoBackgroundDisplay;
+
+
+#pragma mark - Lifecycle
+
+/// Initializer unavailable
+- (instancetype)init NS_UNAVAILABLE;
+
+/// Create a new streaming media manager for navigation and projection apps with a specified configuration.
+/// @param connectionManager The pass-through for RPCs
+/// @param configuration This session's configuration
+/// @param systemCapabilityManager The system capability manager object for reading window capabilities
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager NS_DESIGNATED_INITIALIZER;
+
+/**
+ * Start the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on `SDLManager`.
+ */
+- (void)startWithProtocol:(SDLProtocol *)protocol;
+
+/**
+ * Stop the manager. This method is used internally.
+ */
+- (void)stop;
+
+/**
+ * Stop the audio feature of the manager. This method is used internally.
+ */
+- (void)stopAudio;
+
+/**
+ * Stop the video feature of the manager. This method is used internally.
+ */
+- (void)stopVideo;
+
+#pragma mark - Data Transfer
+
+/**
+ * This method receives raw image data and will run iOS8+'s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.
+ *
+ * @param imageBuffer A CVImageBufferRef to be encoded by Video Toolbox
+ *
+ * @return Whether or not the data was successfully encoded and sent.
+ */
+- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer;
+
+/**
+ * This method receives raw image data and will run iOS8+'s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.
+ *
+ * @param imageBuffer A CVImageBufferRef to be encoded by Video Toolbox
+ * @param presentationTimestamp A presentation timestamp for the frame, or kCMTimeInvalid if timestamp is unknown. If it's valid, it must be greater than the previous one.
+ *
+ * @return Whether or not the data was successfully encoded and sent.
+ */
+- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp;
+
+/**
+ * This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback.
+ *
+ * NOTE: See the `.audioManager` (SDLAudioStreamManager) `pushWithData:` method for a more modern API.
+ *
+ * @param audioData The data in PCM audio format, to be played
+ *
+ * @return Whether or not the data was successfully sent.
+ */
+- (BOOL)sendAudioData:(NSData *)audioData;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLStreamingMediaManager.m b/SmartDeviceLink/public/SDLStreamingMediaManager.m
new file mode 100644
index 000000000..8b072c6e3
--- /dev/null
+++ b/SmartDeviceLink/public/SDLStreamingMediaManager.m
@@ -0,0 +1,291 @@
+//
+// SDLStreamingDataManager.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 8/11/15.
+// Copyright (c) 2015 smartdevicelink. All rights reserved.
+//
+
+#import "SDLStreamingMediaManager.h"
+
+#import "SDLAudioStreamManager.h"
+#import "SDLConfiguration.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLGlobals.h"
+#import "SDLLogMacros.h"
+#import "SDLSecondaryTransportManager.h"
+#import "SDLStreamingAudioLifecycleManager.h"
+#import "SDLStreamingProtocolDelegate.h"
+#import "SDLStreamingVideoLifecycleManager.h"
+#import "SDLStreamingVideoScaleManager.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLTouchManager.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLStreamingMediaManager () <SDLStreamingProtocolDelegate>
+
+@property (strong, nonatomic) SDLStreamingAudioLifecycleManager *audioLifecycleManager;
+@property (strong, nonatomic) SDLStreamingVideoLifecycleManager *videoLifecycleManager;
+@property (assign, nonatomic) BOOL audioStarted;
+@property (assign, nonatomic) BOOL videoStarted;
+@property (strong, nonatomic, nullable) SDLProtocol *audioProtocol;
+@property (strong, nonatomic, nullable) SDLProtocol *videoProtocol;
+
+@property (strong, nonatomic, nullable) SDLSecondaryTransportManager *secondaryTransportManager;
+
+@end
+
+
+@implementation SDLStreamingMediaManager
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLConfiguration *)configuration systemCapabilityManager:(nullable SDLSystemCapabilityManager *)systemCapabilityManager {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _audioLifecycleManager = [[SDLStreamingAudioLifecycleManager alloc] initWithConnectionManager:connectionManager configuration:configuration systemCapabilityManager:systemCapabilityManager];
+ _videoLifecycleManager = [[SDLStreamingVideoLifecycleManager alloc] initWithConnectionManager:connectionManager configuration:configuration systemCapabilityManager:systemCapabilityManager];
+
+ return self;
+}
+
+- (void)stop {
+ [self stopAudio];
+ [self stopVideo];
+ self.audioProtocol = nil;
+ self.videoProtocol = nil;
+}
+
+
+#pragma mark Audio
+
+- (void)stopAudio {
+ [self.audioLifecycleManager stop];
+ self.audioStarted = NO;
+}
+
+- (BOOL)sendAudioData:(NSData*)audioData {
+ return [self.audioLifecycleManager sendAudioData:audioData];
+}
+
+#pragma mark Video
+
+- (void)stopVideo {
+ [self.videoLifecycleManager stop];
+ self.videoStarted = NO;
+}
+
+- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer {
+ return [self.videoLifecycleManager sendVideoData:imageBuffer];
+}
+
+- (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp {
+ return [self.videoLifecycleManager sendVideoData:imageBuffer presentationTimestamp:presentationTimestamp];
+}
+
+#pragma mark - Secondary Transport
+
+- (void)startWithProtocol:(SDLProtocol *)protocol {
+ [self didUpdateFromOldVideoProtocol:nil toNewVideoProtocol:protocol fromOldAudioProtocol:nil toNewAudioProtocol:protocol];
+}
+
+- (void)sdl_disconnectSecondaryTransportWithCompletionHandler:(void (^)(void))completionHandler {
+ if (self.secondaryTransportManager == nil) {
+ SDLLogV(@"Attempting to disconnect a non-existent secondary transport. Returning.");
+ return completionHandler();
+ }
+
+ [self.secondaryTransportManager disconnectSecondaryTransportWithCompletionHandler:completionHandler];
+}
+
+# pragma mark SDLStreamingProtocolDelegate
+
+- (void)didUpdateFromOldVideoProtocol:(nullable SDLProtocol *)oldVideoProtocol
+ toNewVideoProtocol:(nullable SDLProtocol *)newVideoProtocol
+ fromOldAudioProtocol:(nullable SDLProtocol *)oldAudioProtocol
+ toNewAudioProtocol:(nullable SDLProtocol *)newAudioProtocol {
+ BOOL videoProtocolUpdated = (oldVideoProtocol != newVideoProtocol);
+ BOOL audioProtocolUpdated = (oldAudioProtocol != newAudioProtocol);
+
+ if (!videoProtocolUpdated && !audioProtocolUpdated) {
+ SDLLogV(@"The video and audio transports did not update.");
+ return;
+ }
+
+ dispatch_group_t endServiceTask = dispatch_group_create();
+ dispatch_group_enter(endServiceTask);
+
+ __weak typeof(self) weakSelf = self;
+ if (oldVideoProtocol != nil) {
+ dispatch_group_enter(endServiceTask);
+ [self.videoLifecycleManager endVideoServiceWithCompletionHandler:^ {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ strongSelf.videoStarted = NO;
+ dispatch_group_leave(endServiceTask);
+ }];
+ }
+
+ if (oldAudioProtocol != nil) {
+ dispatch_group_enter(endServiceTask);
+ __weak typeof(self) weakSelf = self;
+ [self.audioLifecycleManager endAudioServiceWithCompletionHandler:^ {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ strongSelf.audioStarted = NO;
+ dispatch_group_leave(endServiceTask);
+ }];
+ }
+
+ dispatch_group_leave(endServiceTask);
+
+ // This will always run
+ dispatch_group_notify(endServiceTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{
+ if (oldVideoProtocol != nil || oldAudioProtocol != nil) {
+ [self sdl_reconnectSecondaryTransportWithNewVideoProtocol:newVideoProtocol newAudioProtocol:newAudioProtocol transportDestroyed:false];
+ } else {
+ SDLLogV(@"No need to disconnect the secondary transport. Starting new audio and video protocols");
+ [self sdl_startNewProtocolForAudio:newAudioProtocol forVideo:newVideoProtocol];
+ }
+ });
+}
+
+- (void)transportClosed {
+ [self sdl_reconnectSecondaryTransportWithNewVideoProtocol:nil newAudioProtocol:nil transportDestroyed:true];
+}
+
+/// Disconnects the secondary transport. If the transport is still open and a new video or audio protocol have been set, then a new video/audio sessions are attempted. If the transport has been closed, then the audio/video managers are stopped.
+/// @param newVideoProtocol The new video protocol
+/// @param newAudioProtocol The new audio protocol
+/// @param transportDestroyed Whether or not the transport is still open
+- (void)sdl_reconnectSecondaryTransportWithNewVideoProtocol:(nullable SDLProtocol *)newVideoProtocol newAudioProtocol:(nullable SDLProtocol *)newAudioProtocol transportDestroyed:(BOOL)transportDestroyed {
+ SDLLogV(@"Disconnecting the secondary transport");
+ __weak typeof(self) weakSelf = self;
+ [self sdl_disconnectSecondaryTransportWithCompletionHandler:^{
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (transportDestroyed) {
+ SDLLogD(@"Transport destroyed. Shutting down audio and video managers");
+ [strongSelf.audioLifecycleManager secondaryTransportDidDisconnect];
+ [strongSelf.videoLifecycleManager secondaryTransportDidDisconnect];
+ strongSelf.audioProtocol = nil;
+ strongSelf.videoProtocol = nil;
+ } else {
+ SDLLogD(@"Checking if new audio and video sessions need to be started on the transport");
+ strongSelf.audioProtocol = nil;
+ strongSelf.videoProtocol = nil;
+ [strongSelf sdl_startNewProtocolForAudio:newAudioProtocol forVideo:newVideoProtocol];
+ }
+ }];
+}
+
+/// Starts the audio and/or video services using the new protocol.
+/// @param newAudioProtocol The new audio protocol
+/// @param newVideoProtocol The new video protocol
+- (void)sdl_startNewProtocolForAudio:(nullable SDLProtocol *)newAudioProtocol forVideo:(nullable SDLProtocol *)newVideoProtocol {
+ if (newAudioProtocol == nil && newVideoProtocol == nil) {
+ SDLLogD(@"No new audio or video session will be started");
+ return;
+ }
+
+ if (newAudioProtocol != nil) {
+ self.audioProtocol = newAudioProtocol;
+ [self.audioLifecycleManager startWithProtocol:newAudioProtocol];
+ self.audioStarted = YES;
+ }
+ if (newVideoProtocol != nil) {
+ self.videoProtocol = newVideoProtocol;
+ [self.videoLifecycleManager startWithProtocol:newVideoProtocol];
+ self.videoStarted = YES;
+ }
+}
+
+#pragma mark - Getters
+
+- (SDLTouchManager *)touchManager {
+ return self.videoLifecycleManager.touchManager;
+}
+
+- (SDLAudioStreamManager *)audioManager {
+ return self.audioLifecycleManager.audioTranscodingManager;
+}
+
+- (nullable UIViewController *)rootViewController {
+ return self.videoLifecycleManager.rootViewController;
+}
+
+- (nullable id<SDLFocusableItemLocatorType>)focusableItemManager {
+ return self.videoLifecycleManager.focusableItemManager;
+}
+
+- (BOOL)isStreamingSupported {
+ // The flag is the same between the video and audio managers so just one needs to be returned.
+ return self.videoLifecycleManager.isStreamingSupported;
+}
+
+- (BOOL)isAudioConnected {
+ return self.audioLifecycleManager.isAudioConnected;
+}
+
+- (BOOL)isVideoConnected {
+ return self.videoLifecycleManager.isVideoConnected;
+}
+
+- (BOOL)isAudioEncrypted {
+ return self.audioLifecycleManager.isAudioEncrypted;
+}
+
+- (BOOL)isVideoEncrypted {
+ return self.videoLifecycleManager.isVideoEncrypted;
+}
+
+- (BOOL)isVideoStreamingPaused {
+ return self.videoLifecycleManager.isVideoStreamingPaused;
+}
+
+- (CGSize)screenSize {
+ return self.videoLifecycleManager.videoScaleManager.displayViewportResolution;
+}
+
+- (nullable SDLVideoStreamingFormat *)videoFormat {
+ return self.videoLifecycleManager.videoFormat;
+}
+
+- (NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
+ return self.videoLifecycleManager.supportedFormats;
+}
+
+- (CVPixelBufferPoolRef __nullable)pixelBufferPool {
+ return self.videoLifecycleManager.pixelBufferPool;
+}
+
+- (SDLStreamingEncryptionFlag)requestedEncryptionType {
+ // both audio and video managers should have same type
+ return self.videoLifecycleManager.requestedEncryptionType;
+}
+
+- (BOOL)showVideoBackgroundDisplay {
+ return self.videoLifecycleManager.showVideoBackgroundDisplay;
+}
+
+
+#pragma mark - Setters
+
+- (void)setRootViewController:(nullable UIViewController *)rootViewController {
+ self.videoLifecycleManager.rootViewController = rootViewController;
+}
+
+- (void)setRequestedEncryptionType:(SDLStreamingEncryptionFlag)requestedEncryptionType {
+ self.videoLifecycleManager.requestedEncryptionType = requestedEncryptionType;
+ self.audioLifecycleManager.requestedEncryptionType = requestedEncryptionType;
+}
+
+- (void)setShowVideoBackgroundDisplay:(BOOL)showVideoBackgroundDisplay {
+ self.videoLifecycleManager.showVideoBackgroundDisplay = showVideoBackgroundDisplay;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLStreamingMediaManagerConstants.h b/SmartDeviceLink/public/SDLStreamingMediaManagerConstants.h
index 291eb11a4..291eb11a4 100644
--- a/SmartDeviceLink/SDLStreamingMediaManagerConstants.h
+++ b/SmartDeviceLink/public/SDLStreamingMediaManagerConstants.h
diff --git a/SmartDeviceLink/SDLStreamingMediaManagerConstants.m b/SmartDeviceLink/public/SDLStreamingMediaManagerConstants.m
index 65a9b29a1..65a9b29a1 100644
--- a/SmartDeviceLink/SDLStreamingMediaManagerConstants.m
+++ b/SmartDeviceLink/public/SDLStreamingMediaManagerConstants.m
diff --git a/SmartDeviceLink/SDLStreamingMediaManagerDataSource.h b/SmartDeviceLink/public/SDLStreamingMediaManagerDataSource.h
index 8d7b0944f..8d7b0944f 100644
--- a/SmartDeviceLink/SDLStreamingMediaManagerDataSource.h
+++ b/SmartDeviceLink/public/SDLStreamingMediaManagerDataSource.h
diff --git a/SmartDeviceLink/SDLStreamingVideoScaleManager.h b/SmartDeviceLink/public/SDLStreamingVideoScaleManager.h
index 77d4a97d4..77d4a97d4 100644
--- a/SmartDeviceLink/SDLStreamingVideoScaleManager.h
+++ b/SmartDeviceLink/public/SDLStreamingVideoScaleManager.h
diff --git a/SmartDeviceLink/SDLStreamingVideoScaleManager.m b/SmartDeviceLink/public/SDLStreamingVideoScaleManager.m
index d9c2158d9..d9c2158d9 100644
--- a/SmartDeviceLink/SDLStreamingVideoScaleManager.m
+++ b/SmartDeviceLink/public/SDLStreamingVideoScaleManager.m
diff --git a/SmartDeviceLink/SDLSubscribeButton.h b/SmartDeviceLink/public/SDLSubscribeButton.h
index 75c058d4d..75c058d4d 100644
--- a/SmartDeviceLink/SDLSubscribeButton.h
+++ b/SmartDeviceLink/public/SDLSubscribeButton.h
diff --git a/SmartDeviceLink/SDLSubscribeButton.m b/SmartDeviceLink/public/SDLSubscribeButton.m
index b8f25b5c8..b8f25b5c8 100644
--- a/SmartDeviceLink/SDLSubscribeButton.m
+++ b/SmartDeviceLink/public/SDLSubscribeButton.m
diff --git a/SmartDeviceLink/SDLSubscribeButtonResponse.h b/SmartDeviceLink/public/SDLSubscribeButtonResponse.h
index 40f2b4c8d..40f2b4c8d 100644
--- a/SmartDeviceLink/SDLSubscribeButtonResponse.h
+++ b/SmartDeviceLink/public/SDLSubscribeButtonResponse.h
diff --git a/SmartDeviceLink/SDLSubscribeButtonResponse.m b/SmartDeviceLink/public/SDLSubscribeButtonResponse.m
index b9e8db4b8..b9e8db4b8 100644
--- a/SmartDeviceLink/SDLSubscribeButtonResponse.m
+++ b/SmartDeviceLink/public/SDLSubscribeButtonResponse.m
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleData.h b/SmartDeviceLink/public/SDLSubscribeVehicleData.h
new file mode 100644
index 000000000..27c830199
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleData.h
@@ -0,0 +1,289 @@
+// SDLSubscribeVehicleData.h
+//
+
+
+#import "SDLRPCRequest.h"
+
+/**
+ * Subscribes to specific published vehicle data items. The data will be only sent if it has changed. The application will be notified by the `onVehicleData` notification whenever new data is available. The update rate is dependent on sensors, vehicle architecture and vehicle type.
+ *
+ * @warning A vehicle may only support a subset of the vehicle data items. Be prepared for the situation where a signal is not available on a vehicle.
+ *
+ * Function Group: Location, VehicleInfo and DrivingChara
+ * HMILevel needs to be FULL, LIMITED or BACKGROUND
+ * Since SmartDeviceLink 2.0
+ * See SDLUnsubscribeVehicleData, SDLGetVehicleData
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLSubscribeVehicleData : SDLRPCRequest
+
+/**
+ * Convenience init for subscribing to all possible vehicle data items.
+ *
+ * @param accelerationPedalPosition Subscribe to accelerationPedalPosition
+ * @param airbagStatus Subscribe to airbagStatus
+ * @param beltStatus Subscribe to beltStatus
+ * @param bodyInformation Subscribe to bodyInformation
+ * @param cloudAppVehicleID Subscribe to cloudAppVehicleID
+ * @param clusterModeStatus Subscribe to clusterModeStatus
+ * @param deviceStatus Subscribe to deviceStatus
+ * @param driverBraking Subscribe to driverBraking
+ * @param eCallInfo Subscribe to eCallInfo
+ * @param electronicParkBrakeStatus Subscribe to electronicParkBrakeStatus
+ * @param emergencyEvent Subscribe to emergencyEvent
+ * @param engineOilLife Subscribe to engineOilLife
+ * @param engineTorque Subscribe to engineTorque
+ * @param externalTemperature Subscribe to externalTemperature
+ * @param fuelLevel Subscribe to fuelLevel
+ * @param fuelLevelState Subscribe to fuelLevelState
+ * @param fuelRange Subscribe to fuelRange
+ * @param gps Subscribe to gps
+ * @param headLampStatus Subscribe to headLampStatus
+ * @param instantFuelConsumption Subscribe to instantFuelConsumption
+ * @param myKey Subscribe to myKey
+ * @param odometer Subscribe to odometer
+ * @param prndl Subscribe to prndl
+ * @param rpm Subscribe to rpm
+ * @param speed Subscribe to speed
+ * @param steeringWheelAngle Subscribe to steeringWheelAngle
+ * @param tirePressure Subscribe to tirePressure
+ * @param turnSignal Subscribe to turnSignal
+ * @param wiperStatus Subscribe to wiperStatus
+ * @return A SDLSubscribeVehicleData object
+ */
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus: instead");
+
+/**
+ * Convenience init for subscribing to all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param externalTemperature - externalTemperature
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @return A SDLSubscribeVehicleData object
+ */
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus;
+
+/**
+ * See GearStatus
+ *
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *gearStatus;
+
+/**
+ * A boolean value. If true, subscribes GPS data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *gps;
+
+/**
+ * A boolean value. If true, subscribes Speed data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *speed;
+
+/**
+ * A boolean value. If true, subscribes RPM data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *rpm;
+
+/**
+ * A boolean value. If true, subscribes Fuel Level data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ * A boolean value. If true, subscribes Fuel Level State data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel_State __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ * A boolean value. If true, subscribes Fuel Range data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelRange;
+
+/**
+ * A boolean value. If true, subscribes Instant Fuel Consumption data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *instantFuelConsumption;
+
+/**
+ * A boolean value. If true, subscribes External Temperature data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *externalTemperature;
+
+/**
+ * See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
+ *
+ * @deprecated
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *prndl __deprecated_msg("use gearStatus instead on 7.0+ RPC version connections");
+
+/**
+ * A boolean value. If true, subscribes Tire Pressure status data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *tirePressure;
+
+/**
+ * A boolean value. If true, subscribes Odometer data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *odometer;
+
+/**
+ * A boolean value. If true, subscribes Belt Status data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *beltStatus;
+
+/**
+ * A boolean value. If true, subscribes Body Information data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *bodyInformation;
+
+/**
+ * A boolean value. If true, subscribes Device Status data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *deviceStatus;
+
+/**
+ * A boolean value. If true, subscribes Driver Braking data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *driverBraking;
+
+/**
+ * See WindowStatus
+ *
+ * @since SDL 7.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *windowStatus;
+
+/**
+ * A boolean value. If true, subscribes Wiper Status data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *wiperStatus;
+
+/**
+ * To indicate whether driver hands are off the steering wheel
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *handsOffSteering;
+
+/**
+ * A boolean value. If true, subscribes Head Lamp Status data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *headLampStatus;
+
+/**
+ * A boolean value. If true, subscribes to Engine Oil Life data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineOilLife;
+
+/**
+ * A boolean value. If true, subscribes Engine Torque data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineTorque;
+
+/**
+ * A boolean value. If true, subscribes Acc Pedal Position data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *accPedalPosition;
+
+/**
+ * See StabilityControlsStatus
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *stabilityControlsStatus;
+
+/**
+ * A boolean value. If true, subscribes Steering Wheel Angle data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *steeringWheelAngle;
+
+/**
+ * A boolean value. If true, subscribes eCall Info data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *eCallInfo;
+
+/**
+ * A boolean value. If true, subscribes Airbag Status data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *airbagStatus;
+
+/**
+ * A boolean value. If true, subscribes Emergency Event data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *emergencyEvent;
+
+/**
+ * A boolean value. If true, subscribes Cluster Mode Status data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *clusterModeStatus;
+
+/**
+ * A boolean value. If true, subscribes myKey data.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *myKey;
+
+/**
+ * A boolean value. If true, subscribes to the electronic parking brake status.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *electronicParkBrakeStatus;
+
+/**
+ * A boolean value. If true, subscribes to the turn signal status.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *turnSignal;
+
+/**
+ * A boolean value. If true, subscribes to the cloud app vehicle ID.
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
+
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState A boolean value. If true, requests the OEM custom vehicle data item.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
+
+/**
+ Gets the OEM custom vehicle data value for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return The state of an OEM custom vehicle data item for the given vehicle data name.
+
+ Added in SmartDeviceLink 6.0
+ */
+- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleData.m b/SmartDeviceLink/public/SDLSubscribeVehicleData.m
new file mode 100644
index 000000000..0e8b39c53
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleData.m
@@ -0,0 +1,353 @@
+// SDLSubscribeVehicleData.m
+//
+
+
+#import "SDLSubscribeVehicleData.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSubscribeVehicleData
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameSubscribeVehicleData];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
+ self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) externalTemperature:@(externalTemperature) turnSignal:@(turnSignal) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accelerationPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) handsOffSteering:nil windowStatus:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.fuelLevel = @(fuelLevel);
+ self.fuelLevel_State = @(fuelLevelState);
+ self.prndl = @(prndl);
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.gps = gps;
+ self.speed = speed;
+ self.rpm = rpm;
+ self.instantFuelConsumption = instantFuelConsumption;
+ self.fuelRange = fuelRange;
+ self.externalTemperature = externalTemperature;
+ self.turnSignal = turnSignal;
+ self.gearStatus = gearStatus;
+ self.tirePressure = tirePressure;
+ self.odometer = odometer;
+ self.beltStatus = beltStatus;
+ self.bodyInformation = bodyInformation;
+ self.deviceStatus = deviceStatus;
+ self.driverBraking = driverBraking;
+ self.wiperStatus = wiperStatus;
+ self.headLampStatus = headLampStatus;
+ self.engineTorque = engineTorque;
+ self.accPedalPosition = accPedalPosition;
+ self.steeringWheelAngle = steeringWheelAngle;
+ self.engineOilLife = engineOilLife;
+ self.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ self.cloudAppVehicleID = cloudAppVehicleID;
+ self.stabilityControlsStatus = stabilityControlsStatus;
+ self.eCallInfo = eCallInfo;
+ self.airbagStatus = airbagStatus;
+ self.emergencyEvent = emergencyEvent;
+ self.clusterModeStatus = clusterModeStatus;
+ self.myKey = myKey;
+ self.handsOffSteering = handsOffSteering;
+ self.windowStatus = windowStatus;
+ return self;
+}
+
+- (void)setGearStatus:(nullable NSNumber<SDLBool> *)gearStatus {
+ [self.parameters sdl_setObject:gearStatus forName:SDLRPCParameterNameGearStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)gearStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGearStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setGps:(nullable NSNumber<SDLBool> *)gps {
+ [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
+}
+
+- (nullable NSNumber<SDLBool> *)gps {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSpeed:(nullable NSNumber<SDLBool> *)speed {
+ [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
+}
+
+- (nullable NSNumber<SDLBool> *)speed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRpm:(nullable NSNumber<SDLBool> *)rpm {
+ [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
+}
+
+- (nullable NSNumber<SDLBool> *)rpm {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel:(nullable NSNumber<SDLBool> *)fuelLevel {
+ [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelLevel {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel_State:(nullable NSNumber<SDLBool> *)fuelLevel_State {
+ [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelLevel_State {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelRange:(nullable NSNumber<SDLBool> *)fuelRange {
+ [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelRange {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil];
+}
+
+- (void)setInstantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption {
+ [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
+}
+
+- (nullable NSNumber<SDLBool> *)instantFuelConsumption {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
+}
+
+- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
+ [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable NSNumber<SDLBool> *)externalTemperature {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
+}
+
+- (void)setPrndl:(nullable NSNumber<SDLBool> *)prndl {
+ [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
+}
+
+- (nullable NSNumber<SDLBool> *)prndl {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTirePressure:(nullable NSNumber<SDLBool> *)tirePressure {
+ [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
+}
+
+- (nullable NSNumber<SDLBool> *)tirePressure {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil];
+}
+
+- (void)setOdometer:(nullable NSNumber<SDLBool> *)odometer {
+ [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
+}
+
+- (nullable NSNumber<SDLBool> *)odometer {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBeltStatus:(nullable NSNumber<SDLBool> *)beltStatus {
+ [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)beltStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation {
+ [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
+}
+
+- (nullable NSNumber<SDLBool> *)bodyInformation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDeviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus {
+ [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)deviceStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDriverBraking:(nullable NSNumber<SDLBool> *)driverBraking {
+ [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
+}
+
+- (nullable NSNumber<SDLBool> *)driverBraking {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil];
+}
+
+- (void)setWindowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ [self.parameters sdl_setObject:windowStatus forName:SDLRPCParameterNameWindowStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)windowStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowStatus ofClass:NSNumber.class error:&error];
+}
+
+- (void)setWiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus {
+ [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)wiperStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHandsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering {
+ [self.parameters sdl_setObject:handsOffSteering forName:SDLRPCParameterNameHandsOffSteering];
+}
+
+- (nullable NSNumber<SDLBool> *)handsOffSteering {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:NSNumber.class error:&error];
+}
+
+- (void)setHeadLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus {
+ [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)headLampStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife {
+ [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
+}
+
+- (nullable NSNumber<SDLBool> *)engineOilLife {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineTorque:(nullable NSNumber<SDLBool> *)engineTorque {
+ [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
+}
+
+- (nullable NSNumber<SDLBool> *)engineTorque {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAccPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition {
+ [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
+}
+
+- (nullable NSNumber<SDLBool> *)accPedalPosition {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSteeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle {
+ [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
+}
+
+- (nullable NSNumber<SDLBool> *)steeringWheelAngle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
+}
+
+- (void)setECallInfo:(nullable NSNumber<SDLBool> *)eCallInfo {
+ [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
+}
+
+- (nullable NSNumber<SDLBool> *)eCallInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAirbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus {
+ [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)airbagStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEmergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent {
+ [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
+}
+
+- (nullable NSNumber<SDLBool> *)emergencyEvent {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil];
+}
+
+- (void)setClusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus {
+ [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)clusterModeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setMyKey:(nullable NSNumber<SDLBool> *)myKey {
+ [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
+}
+
+- (nullable NSNumber<SDLBool> *)myKey {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil];
+}
+
+- (void)setElectronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
+ [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTurnSignal:(nullable NSNumber<SDLBool> *)turnSignal {
+ [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
+}
+
+- (nullable NSNumber<SDLBool> *)turnSignal {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
+}
+
+- (void)setStabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus {
+ [self.parameters sdl_setObject:stabilityControlsStatus forName:SDLRPCParameterNameStabilityControlsStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)stabilityControlsStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStabilityControlsStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
+ [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
+}
+
+- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h
new file mode 100644
index 000000000..5e37053d8
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h
@@ -0,0 +1,306 @@
+// SDLSubscribeVehicleDataResponse.h
+//
+
+#import "SDLRPCResponse.h"
+
+@class SDLVehicleDataResult;
+
+
+/**
+ Response to SDLSubscribeVehicleData
+
+ Since SmartDeviceLink 2.0
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLSubscribeVehicleDataResponse : SDLRPCResponse
+
+/**
+ * Convenience init for setting all possible values on vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param externalTemperature - externalTemperature
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModes - clusterModes
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @return A SDLSubscribeVehicleDataResponse object
+ */
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus;
+
+/**
+ * See GearStatus
+ *
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *gearStatus;
+
+/**
+ The result of requesting to subscribe to the GPSData.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *gps;
+
+/**
+ The result of requesting to subscribe to the vehicle speed in kilometers per hour.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *speed;
+
+/**
+ The result of requesting to subscribe to the number of revolutions per minute of the engine.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *rpm;
+
+/**
+ The result of requesting to subscribe to the fuel level in the tank (percentage)
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ The result of requesting to subscribe to the fuel level state.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel_State __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ The result of requesting to subscribe to the fuel range.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelRange;
+
+/**
+ The result of requesting to subscribe to the instantaneous fuel consumption in microlitres.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *instantFuelConsumption;
+
+/**
+ The result of requesting to subscribe to the external temperature in degrees celsius.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *externalTemperature;
+
+/**
+ * See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
+ *
+ * @deprecated
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *prndl __deprecated_msg("use gearStatus instead on 7.0+ RPC version connections");
+
+/**
+ The result of requesting to subscribe to the tireStatus.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *tirePressure;
+
+/**
+ The result of requesting to subscribe to the odometer in km.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *odometer;
+
+/**
+ The result of requesting to subscribe to the status of the seat belts.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *beltStatus;
+
+/**
+ The result of requesting to subscribe to the body information including power modes.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *bodyInformation;
+
+/**
+ The result of requesting to subscribe to the device status including signal and battery strength.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *deviceStatus;
+
+/**
+ The result of requesting to subscribe to the status of the brake pedal.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *driverBraking;
+
+/**
+ * See WindowStatus
+ *
+ * @since SDL 7.0
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *windowStatus;
+
+/**
+ The result of requesting to subscribe to the status of the wipers.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *wiperStatus;
+
+/**
+ To indicate whether driver hands are off the steering wheel
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *handsOffSteering;
+
+/**
+ The result of requesting to subscribe to the status of the head lamps.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *headLampStatus;
+
+/**
+ The result of requesting to subscribe to the estimated percentage of remaining oil life of the engine.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineOilLife;
+
+/**
+ The result of requesting to subscribe to the torque value for engine (in Nm) on non-diesel variants.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineTorque;
+
+/**
+ The result of requesting to subscribe to the accelerator pedal position (percentage depressed)
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *accPedalPosition;
+
+/**
+ See StabilityControlsStatus
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *stabilityControlsStatus;
+
+/**
+ The result of requesting to subscribe to the current angle of the steering wheel (in deg)
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *steeringWheelAngle;
+
+/**
+ The result of requesting to subscribe to the emergency call info
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *eCallInfo;
+
+/**
+ The result of requesting to subscribe to the airbag status
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *airbagStatus;
+
+/**
+ The result of requesting to subscribe to the emergency event
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *emergencyEvent;
+
+/**
+ The result of requesting to subscribe to the cluster modes
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *clusterModes;
+
+/**
+ The result of requesting to subscribe to the myKey status
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *myKey;
+
+/**
+ The result of requesting to subscribe to the electronic parking brake status
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *electronicParkBrakeStatus;
+
+/**
+ The result of requesting to subscribe to the turn signal
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *turnSignal;
+
+/**
+ The result of requesting to subscribe to the cloud app vehicle ID
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
+
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState SDLVehicleDataResult object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
+
+/**
+ Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return SDLVehicleDataResult An object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m
new file mode 100644
index 000000000..332847ed6
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m
@@ -0,0 +1,341 @@
+// SDLSubscribeVehicleDataResponse.m
+//
+
+
+#import "SDLSubscribeVehicleDataResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLVehicleDataResult.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSubscribeVehicleDataResponse
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameSubscribeVehicleData];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.gps = gps;
+ self.speed = speed;
+ self.rpm = rpm;
+ self.instantFuelConsumption = instantFuelConsumption;
+ self.fuelRange = fuelRange;
+ self.externalTemperature = externalTemperature;
+ self.turnSignal = turnSignal;
+ self.gearStatus = gearStatus;
+ self.tirePressure = tirePressure;
+ self.odometer = odometer;
+ self.beltStatus = beltStatus;
+ self.bodyInformation = bodyInformation;
+ self.deviceStatus = deviceStatus;
+ self.driverBraking = driverBraking;
+ self.wiperStatus = wiperStatus;
+ self.headLampStatus = headLampStatus;
+ self.engineTorque = engineTorque;
+ self.accPedalPosition = accPedalPosition;
+ self.steeringWheelAngle = steeringWheelAngle;
+ self.engineOilLife = engineOilLife;
+ self.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ self.cloudAppVehicleID = cloudAppVehicleID;
+ self.stabilityControlsStatus = stabilityControlsStatus;
+ self.eCallInfo = eCallInfo;
+ self.airbagStatus = airbagStatus;
+ self.emergencyEvent = emergencyEvent;
+ self.clusterModes = clusterModes;
+ self.myKey = myKey;
+ self.handsOffSteering = handsOffSteering;
+ self.windowStatus = windowStatus;
+ return self;
+}
+
+- (void)setGearStatus:(nullable SDLVehicleDataResult *)gearStatus {
+ [self.parameters sdl_setObject:gearStatus forName:SDLRPCParameterNameGearStatus];
+}
+
+- (nullable SDLVehicleDataResult *)gearStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGearStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setGps:(nullable SDLVehicleDataResult *)gps {
+ [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
+}
+
+- (nullable SDLVehicleDataResult *)gps {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setSpeed:(nullable SDLVehicleDataResult *)speed {
+ [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
+}
+
+- (nullable SDLVehicleDataResult *)speed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setRpm:(nullable SDLVehicleDataResult *)rpm {
+ [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
+}
+
+- (nullable SDLVehicleDataResult *)rpm {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setFuelLevel:(nullable SDLVehicleDataResult *)fuelLevel {
+ [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
+}
+
+- (nullable SDLVehicleDataResult *)fuelLevel {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setFuelLevel_State:(nullable SDLVehicleDataResult *)fuelLevel_State {
+ [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
+}
+
+- (nullable SDLVehicleDataResult *)fuelLevel_State {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setFuelRange:(nullable SDLVehicleDataResult *)fuelRange {
+ [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
+}
+
+- (nullable SDLVehicleDataResult *)fuelRange {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setInstantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption {
+ [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
+}
+
+- (nullable SDLVehicleDataResult *)instantFuelConsumption {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature {
+ [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable SDLVehicleDataResult *)externalTemperature {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setPrndl:(nullable SDLVehicleDataResult *)prndl {
+ [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
+}
+
+- (nullable SDLVehicleDataResult *)prndl {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setTirePressure:(nullable SDLVehicleDataResult *)tirePressure {
+ [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
+}
+
+- (nullable SDLVehicleDataResult *)tirePressure {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setOdometer:(nullable SDLVehicleDataResult *)odometer {
+ [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
+}
+
+- (nullable SDLVehicleDataResult *)odometer {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setBeltStatus:(nullable SDLVehicleDataResult *)beltStatus {
+ [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
+}
+
+- (nullable SDLVehicleDataResult *)beltStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setBodyInformation:(nullable SDLVehicleDataResult *)bodyInformation {
+ [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
+}
+
+- (nullable SDLVehicleDataResult *)bodyInformation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setDeviceStatus:(nullable SDLVehicleDataResult *)deviceStatus {
+ [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
+}
+
+- (nullable SDLVehicleDataResult *)deviceStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setDriverBraking:(nullable SDLVehicleDataResult *)driverBraking {
+ [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
+}
+
+- (nullable SDLVehicleDataResult *)driverBraking {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setWindowStatus:(nullable SDLVehicleDataResult *)windowStatus {
+ [self.parameters sdl_setObject:windowStatus forName:SDLRPCParameterNameWindowStatus];
+}
+
+- (nullable SDLVehicleDataResult *)windowStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowStatus ofClass:SDLVehicleDataResult.class error:&error];
+}
+
+- (void)setWiperStatus:(nullable SDLVehicleDataResult *)wiperStatus {
+ [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
+}
+
+- (nullable SDLVehicleDataResult *)wiperStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setHandsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering {
+ [self.parameters sdl_setObject:handsOffSteering forName:SDLRPCParameterNameHandsOffSteering];
+}
+
+- (nullable SDLVehicleDataResult *)handsOffSteering {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:SDLVehicleDataResult.class error:&error];
+}
+
+- (void)setHeadLampStatus:(nullable SDLVehicleDataResult *)headLampStatus {
+ [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
+}
+
+- (nullable SDLVehicleDataResult *)headLampStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setEngineOilLife:(nullable SDLVehicleDataResult *)engineOilLife {
+ [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
+}
+
+- (nullable SDLVehicleDataResult *)engineOilLife {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setEngineTorque:(nullable SDLVehicleDataResult *)engineTorque {
+ [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
+}
+
+- (nullable SDLVehicleDataResult *)engineTorque {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setAccPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition {
+ [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
+}
+
+- (nullable SDLVehicleDataResult *)accPedalPosition {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setSteeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle {
+ [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
+}
+
+- (nullable SDLVehicleDataResult *)steeringWheelAngle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setECallInfo:(nullable SDLVehicleDataResult *)eCallInfo {
+ [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
+}
+
+- (nullable SDLVehicleDataResult *)eCallInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setAirbagStatus:(nullable SDLVehicleDataResult *)airbagStatus {
+ [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
+}
+
+- (nullable SDLVehicleDataResult *)airbagStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setEmergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent {
+ [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
+}
+
+- (nullable SDLVehicleDataResult *)emergencyEvent {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setClusterModes:(nullable SDLVehicleDataResult *)clusterModes {
+ [self.parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes];
+}
+
+- (nullable SDLVehicleDataResult *)clusterModes {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setMyKey:(nullable SDLVehicleDataResult *)myKey {
+ [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
+}
+
+- (nullable SDLVehicleDataResult *)myKey {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setElectronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
+ [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
+}
+
+- (nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setTurnSignal:(nullable SDLVehicleDataResult *)turnSignal {
+ [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
+}
+
+- (nullable SDLVehicleDataResult *)turnSignal {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setStabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus {
+ [self.parameters sdl_setObject:stabilityControlsStatus forName:SDLRPCParameterNameStabilityControlsStatus];
+}
+
+- (nullable SDLVehicleDataResult *)stabilityControlsStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStabilityControlsStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSubscribeWayPoints.h b/SmartDeviceLink/public/SDLSubscribeWayPoints.h
index d7fd129bc..d7fd129bc 100644
--- a/SmartDeviceLink/SDLSubscribeWayPoints.h
+++ b/SmartDeviceLink/public/SDLSubscribeWayPoints.h
diff --git a/SmartDeviceLink/SDLSubscribeWayPoints.m b/SmartDeviceLink/public/SDLSubscribeWayPoints.m
index cd2e481cf..cd2e481cf 100644
--- a/SmartDeviceLink/SDLSubscribeWayPoints.m
+++ b/SmartDeviceLink/public/SDLSubscribeWayPoints.m
diff --git a/SmartDeviceLink/SDLSubscribeWayPointsResponse.h b/SmartDeviceLink/public/SDLSubscribeWayPointsResponse.h
index 7bea341e7..7bea341e7 100644
--- a/SmartDeviceLink/SDLSubscribeWayPointsResponse.h
+++ b/SmartDeviceLink/public/SDLSubscribeWayPointsResponse.h
diff --git a/SmartDeviceLink/SDLSubscribeWayPointsResponse.m b/SmartDeviceLink/public/SDLSubscribeWayPointsResponse.m
index 867fbc39e..867fbc39e 100644
--- a/SmartDeviceLink/SDLSubscribeWayPointsResponse.m
+++ b/SmartDeviceLink/public/SDLSubscribeWayPointsResponse.m
diff --git a/SmartDeviceLink/public/SDLSubtleAlert.h b/SmartDeviceLink/public/SDLSubtleAlert.h
new file mode 100644
index 000000000..f49c0e2c9
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubtleAlert.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCRequest.h"
+
+@class SDLImage;
+@class SDLSoftButton;
+@class SDLTTSChunk;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Shows an alert which typically consists of text-to-speech message and text on the display. At least either alertText1, alertText2 or TTSChunks need to be provided.
+ *
+ * @since SDL 7.0.0
+ */
+@interface SDLSubtleAlert : SDLRPCRequest
+
+/**
+ * @param alertText1 - alertText1
+ * @param alertText2 - alertText2
+ * @param alertIcon - alertIcon
+ * @param ttsChunks - ttsChunks
+ * @param duration - duration
+ * @param softButtons - softButtons
+ * @param cancelID - cancelID
+ * @return A SDLSubtleAlert object
+ */
+- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertIcon:(nullable SDLImage *)alertIcon ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(nullable NSNumber<SDLUInt> *)duration softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(nullable NSNumber<SDLInt> *)cancelID;
+
+/**
+ * The first line of the alert text field
+ * {"default_value": null, "max_length": 500, "min_length": 1}
+ */
+@property (nullable, strong, nonatomic) NSString *alertText1;
+
+/**
+ * The second line of the alert text field
+ * {"default_value": null, "max_length": 500, "min_length": 1}
+ */
+@property (nullable, strong, nonatomic) NSString *alertText2;
+
+/**
+ * Image to be displayed for the corresponding alert. See Image. If omitted on supported displays, no (or the default if applicable) icon should be displayed.
+ */
+@property (nullable, strong, nonatomic) SDLImage *alertIcon;
+
+/**
+ * An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.
+ * {"default_value": null, "max_size": 100, "min_size": 1}
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTTSChunk *> *ttsChunks;
+
+/**
+ * Timeout in milliseconds. Typical timeouts are 3-5 seconds. If omitted, timeout is set to 5s.
+ * {"default_value": 5000, "max_value": 10000, "min_value": 3000}
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *duration;
+
+/**
+ * App defined SoftButtons. If omitted on supported displays, the displayed alert shall not have any SoftButtons.
+ * {"default_value": null, "max_size": 2, "min_size": 0}
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSoftButton *> *softButtons;
+
+/**
+ * An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.
+ * {"default_value": null, "max_value": null, "min_value": null}
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *cancelID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubtleAlert.m b/SmartDeviceLink/public/SDLSubtleAlert.m
new file mode 100644
index 000000000..651b92a2c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubtleAlert.m
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLSubtleAlert.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLImage.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLSoftButton.h"
+#import "SDLTTSChunk.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSubtleAlert
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameSubtleAlert];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertIcon:(nullable SDLImage *)alertIcon ttsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks duration:(nullable NSNumber<SDLUInt> *)duration softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons cancelID:(nullable NSNumber<SDLInt> *)cancelID {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.alertText1 = alertText1;
+ self.alertText2 = alertText2;
+ self.alertIcon = alertIcon;
+ self.ttsChunks = ttsChunks;
+ self.duration = duration;
+ self.softButtons = softButtons;
+ self.cancelID = cancelID;
+ return self;
+}
+
+- (void)setAlertText1:(nullable NSString *)alertText1 {
+ [self.parameters sdl_setObject:alertText1 forName:SDLRPCParameterNameAlertText1];
+}
+
+- (nullable NSString *)alertText1 {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText1 ofClass:NSString.class error:nil];
+}
+
+- (void)setAlertText2:(nullable NSString *)alertText2 {
+ [self.parameters sdl_setObject:alertText2 forName:SDLRPCParameterNameAlertText2];
+}
+
+- (nullable NSString *)alertText2 {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText2 ofClass:NSString.class error:nil];
+}
+
+- (void)setAlertIcon:(nullable SDLImage *)alertIcon {
+ [self.parameters sdl_setObject:alertIcon forName:SDLRPCParameterNameAlertIcon];
+}
+
+- (nullable SDLImage *)alertIcon {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertIcon ofClass:SDLImage.class error:nil];
+}
+
+- (void)setTtsChunks:(nullable NSArray<SDLTTSChunk *> *)ttsChunks {
+ [self.parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks];
+}
+
+- (nullable NSArray<SDLTTSChunk *> *)ttsChunks {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:nil];
+}
+
+- (void)setDuration:(nullable NSNumber<SDLUInt> *)duration {
+ [self.parameters sdl_setObject:duration forName:SDLRPCParameterNameDuration];
+}
+
+- (nullable NSNumber<SDLUInt> *)duration {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDuration ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSoftButtons:(nullable NSArray<SDLSoftButton *> *)softButtons {
+ [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons];
+}
+
+- (nullable NSArray<SDLSoftButton *> *)softButtons {
+ return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil];
+}
+
+- (void)setCancelID:(nullable NSNumber<SDLInt> *)cancelID {
+ [self.parameters sdl_setObject:cancelID forName:SDLRPCParameterNameCancelID];
+}
+
+- (nullable NSNumber<SDLInt> *)cancelID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCancelID ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubtleAlertResponse.h b/SmartDeviceLink/public/SDLSubtleAlertResponse.h
new file mode 100644
index 000000000..00940a540
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubtleAlertResponse.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCResponse.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @since SDL 7.0.0
+ */
+@interface SDLSubtleAlertResponse : SDLRPCResponse
+
+/**
+ * @param tryAgainTime - tryAgainTime
+ * @return A SDLSubtleAlertResponse object
+ */
+- (instancetype)initWithTryAgainTime:(nullable NSNumber<SDLUInt> *)tryAgainTime;
+
+/**
+ * Amount of time (in milliseconds) that an app must wait before resending an alert. If provided, another system event or overlay currently has a higher priority than this alert. An app must not send an alert without waiting at least the amount of time dictated.
+ * {"default_value": null, "max_value": 2000000000, "min_value": 0}
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *tryAgainTime;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubtleAlertResponse.m b/SmartDeviceLink/public/SDLSubtleAlertResponse.m
new file mode 100644
index 000000000..4bd9c4b5a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSubtleAlertResponse.m
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLSubtleAlertResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSubtleAlertResponse
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameSubtleAlert];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithTryAgainTime:(nullable NSNumber<SDLUInt> *)tryAgainTime {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.tryAgainTime = tryAgainTime;
+ return self;
+}
+
+- (void)setTryAgainTime:(nullable NSNumber<SDLUInt> *)tryAgainTime {
+ [self.parameters sdl_setObject:tryAgainTime forName:SDLRPCParameterNameTryAgainTime];
+}
+
+- (nullable NSNumber<SDLUInt> *)tryAgainTime {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTryAgainTime ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSupportedSeat.h b/SmartDeviceLink/public/SDLSupportedSeat.h
new file mode 100644
index 000000000..15f2887a1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSupportedSeat.h
@@ -0,0 +1,23 @@
+// SDLSupportedSeat.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ * List possible seats that is a remote controllable seat.
+ *
+ * @deprecated
+ * @history SDL 5.0.0
+ * @since SDL 6.0.0
+ */
+typedef SDLEnum SDLSupportedSeat NS_TYPED_ENUM __deprecated;
+
+/**
+* Save current seat positions and settings to seat memory.
+*/
+extern SDLSupportedSeat const SDLSupportedSeatDriver __deprecated;
+
+/**
+* Restore / apply the seat memory settings to the current seat.
+*/
+extern SDLSupportedSeat const SDLSupportedSeatFrontPassenger __deprecated;
diff --git a/SmartDeviceLink/public/SDLSupportedSeat.m b/SmartDeviceLink/public/SDLSupportedSeat.m
new file mode 100644
index 000000000..f97678bb1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSupportedSeat.m
@@ -0,0 +1,7 @@
+// SDLSupportedSeat.m
+//
+
+#import "SDLSupportedSeat.h"
+
+SDLSupportedSeat const SDLSupportedSeatDriver = @"DRIVER";
+SDLSupportedSeat const SDLSupportedSeatFrontPassenger = @"FRONT_PASSENGER";
diff --git a/SmartDeviceLink/SDLSyncPData.h b/SmartDeviceLink/public/SDLSyncPData.h
index a72ad2cc9..a72ad2cc9 100644
--- a/SmartDeviceLink/SDLSyncPData.h
+++ b/SmartDeviceLink/public/SDLSyncPData.h
diff --git a/SmartDeviceLink/SDLSyncPData.m b/SmartDeviceLink/public/SDLSyncPData.m
index 46bd04427..46bd04427 100644
--- a/SmartDeviceLink/SDLSyncPData.m
+++ b/SmartDeviceLink/public/SDLSyncPData.m
diff --git a/SmartDeviceLink/SDLSyncPDataResponse.h b/SmartDeviceLink/public/SDLSyncPDataResponse.h
index e99452915..e99452915 100644
--- a/SmartDeviceLink/SDLSyncPDataResponse.h
+++ b/SmartDeviceLink/public/SDLSyncPDataResponse.h
diff --git a/SmartDeviceLink/SDLSyncPDataResponse.m b/SmartDeviceLink/public/SDLSyncPDataResponse.m
index 315af6b7c..315af6b7c 100644
--- a/SmartDeviceLink/SDLSyncPDataResponse.m
+++ b/SmartDeviceLink/public/SDLSyncPDataResponse.m
diff --git a/SmartDeviceLink/public/SDLSystemAction.h b/SmartDeviceLink/public/SDLSystemAction.h
new file mode 100644
index 000000000..c88a9c6a8
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemAction.h
@@ -0,0 +1,25 @@
+// SDLSystemAction.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration that describes system actions that can be triggered. Used in SoftButton.
+ */
+typedef SDLEnum SDLSystemAction NS_TYPED_ENUM;
+
+/**
+ A default soft button action
+ */
+extern SDLSystemAction const SDLSystemActionDefaultAction;
+
+/**
+ An action causing your app to steal HMI focus
+ */
+extern SDLSystemAction const SDLSystemActionStealFocus;
+
+/**
+ An action causing you to keep context
+ */
+extern SDLSystemAction const SDLSystemActionKeepContext;
diff --git a/SmartDeviceLink/SDLSystemAction.m b/SmartDeviceLink/public/SDLSystemAction.m
index 0dd9e5594..0dd9e5594 100644
--- a/SmartDeviceLink/SDLSystemAction.m
+++ b/SmartDeviceLink/public/SDLSystemAction.m
diff --git a/SmartDeviceLink/public/SDLSystemCapability.h b/SmartDeviceLink/public/SDLSystemCapability.h
new file mode 100755
index 000000000..d41136c2f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemCapability.h
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLRPCStruct.h"
+#import "SDLSystemCapabilityType.h"
+
+@class SDLAppServicesCapabilities;
+@class SDLDisplayCapability;
+@class SDLDriverDistractionCapability;
+@class SDLNavigationCapability;
+@class SDLPhoneCapability;
+@class SDLRemoteControlCapabilities;
+@class SDLSeatLocationCapability;
+@class SDLVideoStreamingCapability;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * The systemCapabilityType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist.
+ *
+ * First implemented in SDL Core v4.4
+ */
+@interface SDLSystemCapability : SDLRPCStruct
+
+/**
+ * Convenience init for an App Service Capability
+ *
+ * @param capability Describes the capabilities of app services including what service types are supported and the current state of services
+ * @return A SDLSystemCapability object
+ */
+- (instancetype)initWithAppServicesCapabilities:(SDLAppServicesCapabilities *)capability;
+
+/**
+ * Convenience init for a Navigation Capability
+ *
+ * @param capability Describes the extended capabilities of the onboard navigation system
+ * @return A SDLSystemCapability object
+ */
+- (instancetype)initWithNavigationCapability:(SDLNavigationCapability *)capability;
+
+/**
+ * Convenience init for a Phone Capability
+ *
+ * @param capability Describes the extended capabilities of the module's phone feature
+ * @return A SDLSystemCapability object
+ */
+- (instancetype)initWithPhoneCapability:(SDLPhoneCapability *)capability;
+
+/**
+ * Convenience init for a Video Streaming Capability
+ *
+ * @param capability Describes the capabilities of the module's video streaming feature
+ * @return A SDLSystemCapability object
+ */
+- (instancetype)initWithVideoStreamingCapability:(SDLVideoStreamingCapability *)capability;
+
+/**
+ * Convenience init for a Remote Control Capability
+ *
+ * @param capability Describes the extended capabilities of the module's remote control feature
+ * @return A SDLSystemCapability object
+ */
+- (instancetype)initWithRemoteControlCapability:(SDLRemoteControlCapabilities *)capability;
+
+/**
+ Convenience init for DisplayCapability list
+
+ @param capabilities Contains capabilities related to a physical screen and any associated windows
+ @return A SDLSystemCapability object
+ */
+- (instancetype)initWithDisplayCapabilities:(NSArray<SDLDisplayCapability *> *)capabilities;
+
+/**
+ * Convenience init for a Remote Control Capability
+ *
+ * @param capability Describes information about the locations of each seat
+ * @return A SDLSystemCapability object
+ */
+- (instancetype)initWithSeatLocationCapability:(SDLSeatLocationCapability *)capability;
+
+/// Convenience init for a Driver Distraction capability
+/// @param capability Describes capabilities when the driver is distracted
+/// @return A SDLSystemCapability object
+- (instancetype)initWithDriverDistractionCapability:(SDLDriverDistractionCapability *)capability;
+
+/**
+ * Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other parameter included.
+ */
+@property (strong, nonatomic) SDLSystemCapabilityType systemCapabilityType;
+
+/**
+ * Describes the capabilities of app services including what service types are supported and the current state of services.
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLAppServicesCapabilities *appServicesCapabilities;
+
+/**
+ * Describes the extended capabilities of the onboard navigation system
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLNavigationCapability *navigationCapability;
+
+/**
+ * Describes the extended capabilities of the module's phone feature
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLPhoneCapability *phoneCapability;
+
+/**
+ * Describes the capabilities of the module's video streaming feature
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLVideoStreamingCapability *videoStreamingCapability;
+
+/**
+ * Describes the extended capabilities of the module's remote control feature
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLRemoteControlCapabilities *remoteControlCapability;
+
+/**
+ * Describes information about the locations of each seat
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic) SDLSeatLocationCapability *seatLocationCapability;
+
+/**
+ Contain the display related information and all windows related to that display
+
+ Optional
+
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLDisplayCapability *> *displayCapabilities;
+
+/**
+ * Describes capabilities when the driver is distracted
+ *
+ * @since SDL 7.0.0
+ */
+@property (nullable, strong, nonatomic) SDLDriverDistractionCapability *driverDistractionCapability;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSystemCapability.m b/SmartDeviceLink/public/SDLSystemCapability.m
new file mode 100755
index 000000000..8cfe47dbe
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemCapability.m
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLSystemCapability.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLAppServicesCapabilities.h"
+#import "SDLDisplayCapability.h"
+#import "SDLDriverDistractionCapability.h"
+#import "SDLNavigationCapability.h"
+#import "SDLPhoneCapability.h"
+#import "SDLRemoteControlCapabilities.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLSeatLocationCapability.h"
+#import "SDLSystemCapabilityType.h"
+#import "SDLVideoStreamingCapability.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSystemCapability
+
+- (instancetype)initWithAppServicesCapabilities:(SDLAppServicesCapabilities *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypeAppServices;
+ self.appServicesCapabilities = capability;
+
+ return self;
+}
+
+- (instancetype)initWithPhoneCapability:(SDLPhoneCapability *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypePhoneCall;
+ self.phoneCapability = capability;
+
+ return self;
+}
+
+- (instancetype)initWithNavigationCapability:(SDLNavigationCapability *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypeNavigation;
+ self.navigationCapability = capability;
+
+ return self;
+}
+
+- (instancetype)initWithVideoStreamingCapability:(SDLVideoStreamingCapability *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypeVideoStreaming;
+ self.videoStreamingCapability = capability;
+
+ return self;
+}
+
+- (instancetype)initWithRemoteControlCapability:(SDLRemoteControlCapabilities *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypeRemoteControl;
+ self.remoteControlCapability = capability;
+
+ return self;
+}
+
+- (instancetype)initWithDisplayCapabilities:(NSArray<SDLDisplayCapability *> *)capabilities {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypeDisplays;
+ self.displayCapabilities = [capabilities copy];
+
+ return self;
+}
+
+- (instancetype)initWithSeatLocationCapability:(SDLSeatLocationCapability *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypeSeatLocation;
+ self.seatLocationCapability = capability;
+
+ return self;
+}
+
+- (instancetype)initWithDriverDistractionCapability:(SDLDriverDistractionCapability *)capability {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.systemCapabilityType = SDLSystemCapabilityTypeDriverDistraction;
+ self.driverDistractionCapability = capability;
+
+ return self;
+}
+
+- (void)setSystemCapabilityType:(SDLSystemCapabilityType)type {
+ [self.store sdl_setObject:type forName:SDLRPCParameterNameSystemCapabilityType];
+}
+
+- (SDLSystemCapabilityType)systemCapabilityType {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameSystemCapabilityType error:&error];
+}
+
+- (void)setAppServicesCapabilities:(nullable SDLAppServicesCapabilities *)appServicesCapabilities {
+ [self.store sdl_setObject:appServicesCapabilities forName:SDLRPCParameterNameAppServicesCapabilities];
+}
+
+- (nullable SDLAppServicesCapabilities *)appServicesCapabilities {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAppServicesCapabilities ofClass:SDLAppServicesCapabilities.class error:nil];
+}
+
+- (void)setNavigationCapability:(nullable SDLNavigationCapability *)navigationCapability {
+ [self.store sdl_setObject:navigationCapability forName:SDLRPCParameterNameNavigationCapability];
+}
+
+- (nullable SDLNavigationCapability *)navigationCapability {
+ return [self.store sdl_objectForName:SDLRPCParameterNameNavigationCapability ofClass:SDLNavigationCapability.class error:nil];
+}
+
+- (void)setPhoneCapability:(nullable SDLPhoneCapability *)phoneCapability {
+ [self.store sdl_setObject:phoneCapability forName:SDLRPCParameterNamePhoneCapability];
+}
+
+- (nullable SDLPhoneCapability *)phoneCapability {
+ return [self.store sdl_objectForName:SDLRPCParameterNamePhoneCapability ofClass:SDLPhoneCapability.class error:nil];
+}
+
+- (void)setVideoStreamingCapability:(nullable SDLVideoStreamingCapability *)videoStreamingCapability {
+ [self.store sdl_setObject:videoStreamingCapability forName:SDLRPCParameterNameVideoStreamingCapability];
+}
+
+- (nullable SDLVideoStreamingCapability *)videoStreamingCapability {
+ return [self.store sdl_objectForName:SDLRPCParameterNameVideoStreamingCapability ofClass:SDLVideoStreamingCapability.class error:nil];
+}
+
+- (void)setRemoteControlCapability:(nullable SDLRemoteControlCapabilities *)remoteControlCapability {
+ [self.store sdl_setObject:remoteControlCapability forName:SDLRPCParameterNameRemoteControlCapability];
+}
+
+- (nullable SDLRemoteControlCapabilities *)remoteControlCapability {
+ return [self.store sdl_objectForName:SDLRPCParameterNameRemoteControlCapability ofClass:SDLRemoteControlCapabilities.class error:nil];
+}
+
+- (void)setSeatLocationCapability:(nullable SDLSeatLocationCapability *)seatLocationCapability {
+ [self.store sdl_setObject:seatLocationCapability forName:SDLRPCParameterNameSeatLocationCapability];
+}
+
+- (nullable SDLSeatLocationCapability *)seatLocationCapability {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSeatLocationCapability ofClass:SDLSeatLocationCapability.class error:nil];
+}
+
+- (void)setDisplayCapabilities:(nullable NSArray<SDLDisplayCapability *> *)displayCapabilities {
+ [self.store sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities];
+}
+
+- (nullable NSArray<SDLDisplayCapability *> *)displayCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapability.class error:nil];
+}
+
+- (void)setDriverDistractionCapability:(nullable SDLDriverDistractionCapability *)driverDistractionCapability {
+ [self.store sdl_setObject:driverDistractionCapability forName:SDLRPCParameterNameDriverDistractionCapability];
+}
+
+- (nullable SDLDriverDistractionCapability *)driverDistractionCapability {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDriverDistractionCapability ofClass:SDLDriverDistractionCapability.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSystemCapabilityManager.h b/SmartDeviceLink/public/SDLSystemCapabilityManager.h
new file mode 100644
index 000000000..42467a2fb
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemCapabilityManager.h
@@ -0,0 +1,300 @@
+//
+// SDLSystemCapabilityManager.h
+// SmartDeviceLink
+//
+// Created by Nicole on 3/26/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLHMIZoneCapabilities.h"
+#import "SDLPrerecordedSpeech.h"
+#import "SDLSpeechCapabilities.h"
+#import "SDLSystemCapabilityType.h"
+#import "SDLVrCapabilities.h"
+
+@class SDLAppServicesCapabilities;
+@class SDLAudioPassThruCapabilities;
+@class SDLButtonCapabilities;
+@class SDLDisplayCapability;
+@class SDLDisplayCapabilities;
+@class SDLDriverDistractionCapability;
+@class SDLHMICapabilities;
+@class SDLNavigationCapability;
+@class SDLPhoneCapability;
+@class SDLPresetBankCapabilities;
+@class SDLRemoteControlCapabilities;
+@class SDLSeatLocationCapability;
+@class SDLSoftButtonCapabilities;
+@class SDLSystemCapability;
+@class SDLSystemCapabilityManager;
+@class SDLVideoStreamingCapability;
+@class SDLWindowCapability;
+
+@protocol SDLConnectionManagerType;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * A completion handler called after a request for the capability type is returned from the remote system.
+ *
+ * @param error The error returned if the request for a capability type failed. The error is nil if the request was successful.
+ * @param systemCapabilityManager The system capability manager
+ */
+typedef void (^SDLUpdateCapabilityHandler)(NSError * _Nullable error, SDLSystemCapabilityManager *systemCapabilityManager);
+
+/**
+ An observer block for whenever a subscription is called.
+
+ @param capability The capability that was updated.
+ */
+typedef void (^SDLCapabilityUpdateHandler)(SDLSystemCapability *capability);
+
+/**
+ An observer block for whenever a subscription or value is retrieved.
+
+ @param capability The capability that was updated.
+ @param subscribed Whether or not the capability was subscribed or if the capability will only be pulled once.
+ @param error An error that occurred.
+ */
+typedef void (^SDLCapabilityUpdateWithErrorHandler)(SDLSystemCapability * _Nullable capability, BOOL subscribed, NSError * _Nullable error);
+
+/**
+ A manager that handles updating and subscribing to SDL capabilities.
+ */
+@interface SDLSystemCapabilityManager : NSObject
+
+/**
+ * Provides window capabilities of all displays connected with SDL. By default, one display is connected and supported which includes window capability information of the default main window of the display. May be nil if the system has not provided display and window capability information yet.
+ *
+ * @see SDLDisplayCapability
+ *
+ * Optional, @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic, readonly) NSArray<SDLDisplayCapability *> *displays;
+
+/**
+ * @see SDLDisplayCapabilities
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic, readonly) SDLDisplayCapabilities *displayCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access capabilities of a display/window.");
+
+/**
+ * @see SDLHMICapabilities
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic, readonly) SDLHMICapabilities *hmiCapabilities;
+
+/**
+ * If returned, the platform supports on-screen SoftButtons
+ *
+ * @see SDLSoftButtonCapabilities
+ *
+ * Optional, Array of length 1 - 100, of SDLSoftButtonCapabilities
+ */
+@property (nullable, copy, nonatomic, readonly) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access soft button capabilities of a window.");
+
+/**
+ * @see SDLButtonCapabilities
+ *
+ * Optional, Array of length 1 - 100, of SDLButtonCapabilities
+ */
+@property (nullable, copy, nonatomic, readonly) NSArray<SDLButtonCapabilities *> *buttonCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access button capabilities of a window.");
+
+/**
+ * If returned, the platform supports custom on-screen Presets
+ *
+ * @see SDLPresetBankCapabilities
+ *
+ * Optional
+ */
+@property (nullable, strong, nonatomic, readonly) SDLPresetBankCapabilities *presetBankCapabilities __deprecated_msg("Use displays, windowCapabilityWithID: or defaultMainWindowCapability instead to access preset bank capabilities of a window.");
+
+/**
+ * @see SDLHMIZoneCapabilities
+ *
+ * Optional, Array of length 1 - 100, of SDLHMIZoneCapabilities
+ */
+@property (nullable, copy, nonatomic, readonly) NSArray<SDLHMIZoneCapabilities> *hmiZoneCapabilities;
+
+/**
+ * @see SDLSpeechCapabilities
+ *
+ * Optional, Array of length 1 - 100, of SDLSpeechCapabilities
+ */
+@property (nullable, copy, nonatomic, readonly) NSArray<SDLSpeechCapabilities> *speechCapabilities;
+
+/**
+ * @see SDLPrerecordedSpeech
+ *
+ * Optional, Array of length 1 - 100, of SDLPrerecordedSpeech
+ */
+@property (nullable, copy, nonatomic, readonly) NSArray<SDLPrerecordedSpeech> *prerecordedSpeechCapabilities;
+
+/**
+ * @see SDLVRCapabilities
+ *
+ * True if the head unit supports voice recognition; false if not.
+ */
+@property (nonatomic, assign, readonly) BOOL vrCapability;
+
+/**
+ * @see SDLAudioPassThruCapabilities
+ *
+ * Optional, Array of length 1 - 100, of SDLAudioPassThruCapabilities
+ */
+@property (nullable, copy, nonatomic, readonly) NSArray<SDLAudioPassThruCapabilities *> *audioPassThruCapabilities;
+
+/**
+ * @see SDLAudioPassThruCapabilities
+ *
+ * Optional, Array of length 1 - 100, of SDLAudioPassThruCapabilities
+ */
+@property (nullable, strong, nonatomic, readonly) SDLAudioPassThruCapabilities *pcmStreamCapability;
+
+/**
+ * If returned, the platform supports app services
+ */
+@property (nullable, strong, nonatomic, readonly) SDLAppServicesCapabilities *appServicesCapabilities;
+
+/**
+ If returned, the platform supports navigation
+ */
+@property (nullable, strong, nonatomic, readonly) SDLNavigationCapability *navigationCapability;
+
+/**
+ If returned, the platform supports making phone calls
+ */
+@property (nullable, strong, nonatomic, readonly) SDLPhoneCapability *phoneCapability;
+
+/**
+ If returned, the platform supports video streaming
+ */
+@property (nullable, strong, nonatomic, readonly) SDLVideoStreamingCapability *videoStreamingCapability;
+
+/**
+ If returned, the platform supports remote control capabilities
+ */
+@property (nullable, strong, nonatomic, readonly) SDLRemoteControlCapabilities *remoteControlCapability;
+
+/**
+ If returned, the platform supports remote control capabilities for seats
+ */
+@property (nullable, strong, nonatomic, readonly) SDLSeatLocationCapability *seatLocationCapability;
+
+/// If returned, the platform supports driver distraction capabilities
+@property (nullable, strong, nonatomic, readonly) SDLDriverDistractionCapability *driverDistractionCapability;
+
+/**
+ * Returns the window capability object of the default main window which is always pre-created by the connected system. This is a convenience method for easily accessing the capabilities of the default main window.
+ *
+ * @returns The window capability object representing the default main window capabilities or nil if no window capabilities exist.
+ */
+@property (nullable, strong, nonatomic, readonly) SDLWindowCapability *defaultMainWindowCapability;
+
+/**
+ YES if subscriptions are available on the connected module and you will automatically be notified if the value changes on the module. If NO, calls to `subscribe` methods will subscribe to updates, but the module will not automatically notify you. You will need to call `updateWithCapabilityType:completionHandler:` to force an update if you need one (though this should be rare). This does not apply to the `DISPLAYS` capability type which you can always subscribe to.
+ */
+@property (assign, nonatomic, readonly) BOOL supportsSubscriptions;
+
+/**
+ Init is unavailable. Dependencies must be injected using initWithConnectionManager:
+
+ @return nil
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ Creates a new system capability manager with a specified connection manager
+
+ @param manager A connection manager to use to forward on RPCs
+
+ @return An instance of SDLSystemCapabilityManager
+ */
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager NS_DESIGNATED_INITIALIZER;
+
+/**
+ Starts the manager. This method is used internally.
+ */
+- (void)start;
+
+/**
+ Stops the manager. This method is used internally.
+ */
+- (void)stop;
+
+/**
+ * Returns the window capability of one of your app's windows with the specified window ID that is on the primary display (i.e. the head unit itself). This is a convenience method to easily access capabilities of windows such as your apps' widget windows.
+ *
+ * To get the capabilities of the main window on the main display (i.e. your app's primary app screen on the head unit itself).
+ *
+ * @param windowID The ID of the window from which to get capabilities
+ * @returns The window window capabilities of the window with the specified windowID, or nil if the window is not known or no window capabilities exist.
+ */
+- (nullable SDLWindowCapability *)windowCapabilityWithWindowID:(NSUInteger)windowID;
+
+/// Returns whether or not the capability type is supported on the module. You can use this to check if subscribing to the capability will work. If this returns NO, then the feature is not supported by the head unit. If YES, the feature is supported by the head unit. You can subscribe to the capability type to get more information about the capability's support and features on the connected module.
+/// @param type The SystemCapabilityType that will be checked.
+/// @return Whether or not `type` is supported by the connected head unit.
+- (BOOL)isCapabilitySupported:(SDLSystemCapabilityType)type NS_SWIFT_NAME(isCapabilitySupported(type:));
+
+/**
+ * This method has been superseded by the `subscribeToCapabilityType:` methods. You should use one of those methods instead unless you only want a value once (you don't want to keep a long-lasting observer) and it must be current (most capabilities do not need to be updated). If you have a separate subscription observer and are connected to a head unit that does not support subscriptions, when this method returns, it will also call all subscription callbacks that you've set up with the new value if there is one. Therefore, you can use this method to force an update to all subscriptions of that particular type on head units that don't support subscriptions (`supportsSubscriptions == NO`).
+ *
+ * @param type The type of capability to retrieve
+ * @param handler The handler to be called when the retrieval is complete
+ */
+- (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SDLUpdateCapabilityHandler)handler;
+
+/// Subscribe to a particular capability type using a handler callback.
+///
+/// On v5.1.0+ systems (where `supportsSubscriptions == YES`):
+/// This method will be called immediately with the current value if a subscription already exists and will be called every time the value is updated.
+///
+/// Note that when the cached value is returned, the `subscribed` flag on the handler will be false until the subscription completes successfully and a new value is retrieved.
+///
+/// On sub-v5.1.0 systems (where `supportsSubscriptions == NO`):
+/// The method will be called immediately with the current value and will _not_ be automatically called every time the value is updated, unless the `type` is `DISPLAYS` which is supported on every version. If `updateCapabilityType:completionHandler` is called and a new value is retrieved, this value will be updated then. If this is the first subscription of this `SDLSystemCapabilityType`, then the value will be retrieved and returned.
+///
+/// @param type The type of capability to subscribe to
+/// @param handler The block to be called when the capability is updated with an error if one occurs
+/// @return An object that can be used to unsubscribe the block using unsubscribeFromCapabilityType:withObserver: by passing it in the observer callback, or nil if the manager can't attempt the subscription for some reason (such as the app being in HMI_NONE and the type is not DISPLAYS).
+- (nullable id<NSObject>)subscribeToCapabilityType:(SDLSystemCapabilityType)type withUpdateHandler:(SDLCapabilityUpdateWithErrorHandler)handler NS_SWIFT_NAME(subscribe(capabilityType:updateHandler:));
+
+
+/// Subscribe to a particular capability type with a selector callback.
+///
+/// The selector supports the following parameters:
+///
+/// 1. No parameters e.g. `- (void)phoneCapabilityUpdated;`
+///
+/// 2. One `SDLSystemCapability *` parameter, e.g. `- (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability`
+///
+/// 3. Two parameters, one `SDLSystemCapability *` parameter, and one `NSError` parameter, e.g. `- (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability error:(NSError *)error`
+///
+/// 4. Three parameters, one `SDLSystemCapability *` parameter, one `NSError` parameter, and one `BOOL` parameter e.g. `- (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability error:(NSError *)error subscribed:(BOOL)subscribed`
+///
+/// On v5.1.0+ systems (where `supportsSubscriptions == YES`):
+/// This method will be called immediately with the current value if a subscription already exists and will be called every time the value is updated.
+///
+/// On sub-v5.1.0 systems (where `supportsSubscriptions == NO`):
+/// The method will be called immediately with the current value and will _not_ be automatically called every time the value is updated, unless the `type` is `DISPLAYS` which is supported on every version. If `updateCapabilityType:completionHandler` is called and a new value is retrieved, this value will be updated then. If this is the first subscription of this `SDLSystemCapabilityType`, then the value will be retrieved and returned.
+///
+/// @param type The type of the system capability to subscribe to
+/// @param observer The object that will have `selector` called whenever the capability is updated
+/// @param selector The selector on `observer` that will be called whenever the capability is updated
+/// @return YES if the manager is attempting the subscription, or NO if the manager can't attempt the subscription for some reason (such as the app being in HMI_NONE and the type is not DISPLAYS), or the selector doesn't contain the correct number of parameters.
+- (BOOL)subscribeToCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer selector:(SEL)selector;
+
+/// Unsubscribe from a particular capability type. If it was subscribed with a block / handler, the return value should be passed to the `observer` to unsubscribe the block. If it was subscribed with a selector, the `observer` object (on which the selector exists and is called) should be passed to unsubscribe the object selector.
+///
+/// @param type The type of the system capability to unsubscribe from
+/// @param observer The object that will be unsubscribed. If a block was subscribed, the return value should be passed. If a selector was subscribed, the observer object should be passed.
+- (void)unsubscribeFromCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSystemCapabilityManager.m b/SmartDeviceLink/public/SDLSystemCapabilityManager.m
new file mode 100644
index 000000000..8d7e14a78
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemCapabilityManager.m
@@ -0,0 +1,821 @@
+//
+// SDLSystemCapabilityManager.m
+// SmartDeviceLink
+//
+// Created by Nicole on 3/26/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSystemCapabilityManager.h"
+
+#import "SDLAppServiceCapability.h"
+#import "SDLAppServiceRecord.h"
+#import "SDLAppServicesCapabilities.h"
+#import "SDLConnectionManagerType.h"
+#import "SDLDisplayCapabilities.h"
+#import "SDLDisplayCapability.h"
+#import "SDLDriverDistractionCapability.h"
+#import "SDLError.h"
+#import "SDLGenericResponse.h"
+#import "SDLGetSystemCapability.h"
+#import "SDLGetSystemCapabilityResponse.h"
+#import "SDLGlobals.h"
+#import "SDLHMICapabilities.h"
+#import "SDLImageField+ScreenManagerExtensions.h"
+#import "SDLLogMacros.h"
+#import "SDLNavigationCapability.h"
+#import "SDLNotificationConstants.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLOnSystemCapabilityUpdated.h"
+#import "SDLPhoneCapability.h"
+#import "SDLRegisterAppInterfaceResponse.h"
+#import "SDLPredefinedWindows.h"
+#import "SDLRemoteControlCapabilities.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLRPCResponseNotification.h"
+#import "SDLSeatLocationCapability.h"
+#import "SDLSetDisplayLayoutResponse.h"
+#import "SDLSystemCapability.h"
+#import "SDLSystemCapabilityObserver.h"
+#import "SDLTextField+ScreenManagerExtensions.h"
+#import "SDLTextFieldName.h"
+#import "SDLVersion.h"
+#import "SDLVideoStreamingCapability.h"
+#import "SDLWindowCapability.h"
+#import "SDLWindowTypeCapabilities.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLSystemCapabilityManager ()
+
+typedef NSString * SDLServiceID;
+
+@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
+
+@property (nullable, strong, nonatomic, readwrite) NSArray<SDLDisplayCapability *> *displays;
+@property (nullable, strong, nonatomic, readwrite) SDLDisplayCapabilities *displayCapabilities;
+@property (nullable, strong, nonatomic, readwrite) SDLHMICapabilities *hmiCapabilities;
+@property (nullable, copy, nonatomic, readwrite) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
+@property (nullable, copy, nonatomic, readwrite) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
+@property (nullable, strong, nonatomic, readwrite) SDLPresetBankCapabilities *presetBankCapabilities;
+@property (nullable, copy, nonatomic, readwrite) NSArray<SDLHMIZoneCapabilities> *hmiZoneCapabilities;
+@property (nullable, copy, nonatomic, readwrite) NSArray<SDLSpeechCapabilities> *speechCapabilities;
+@property (nullable, copy, nonatomic, readwrite) NSArray<SDLPrerecordedSpeech> *prerecordedSpeechCapabilities;
+@property (nonatomic, assign, readwrite) BOOL vrCapability;
+@property (nullable, copy, nonatomic, readwrite) NSArray<SDLAudioPassThruCapabilities *> *audioPassThruCapabilities;
+@property (nullable, strong, nonatomic, readwrite) SDLAudioPassThruCapabilities *pcmStreamCapability;
+@property (nullable, strong, nonatomic, readwrite) SDLNavigationCapability *navigationCapability;
+@property (nullable, strong, nonatomic, readwrite) SDLPhoneCapability *phoneCapability;
+@property (nullable, strong, nonatomic, readwrite) SDLVideoStreamingCapability *videoStreamingCapability;
+@property (nullable, strong, nonatomic, readwrite) SDLRemoteControlCapabilities *remoteControlCapability;
+@property (nullable, strong, nonatomic, readwrite) SDLSeatLocationCapability *seatLocationCapability;
+@property (nullable, strong, nonatomic, readwrite) SDLDriverDistractionCapability *driverDistractionCapability;
+
+@property (nullable, strong, nonatomic) NSMutableDictionary<SDLServiceID, SDLAppServiceCapability *> *appServicesCapabilitiesDictionary;
+
+@property (assign, nonatomic, readwrite) BOOL supportsSubscriptions;
+@property (strong, nonatomic) NSMutableDictionary<SDLSystemCapabilityType, NSMutableArray<SDLSystemCapabilityObserver *> *> *capabilityObservers;
+@property (strong, nonatomic) NSMutableDictionary<SDLSystemCapabilityType, NSNumber<SDLBool> *> *subscriptionStatus;
+
+@property (assign, nonatomic) BOOL shouldConvertDeprecatedDisplayCapabilities;
+@property (strong, nonatomic) SDLHMILevel currentHMILevel;
+
+@property (copy, nonatomic) dispatch_queue_t readWriteQueue;
+
+@end
+
+@implementation SDLSystemCapabilityManager
+
+#pragma mark - Lifecycle
+
+- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _readWriteQueue = dispatch_queue_create_with_target("com.sdl.systemCapabilityManager.readWriteQueue", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
+ _connectionManager = manager;
+ _shouldConvertDeprecatedDisplayCapabilities = YES;
+ _appServicesCapabilitiesDictionary = [NSMutableDictionary dictionary];
+
+ _capabilityObservers = [NSMutableDictionary dictionary];
+ _subscriptionStatus = [NSMutableDictionary dictionary];
+
+ _currentHMILevel = SDLHMILevelNone;
+
+ [self sdl_registerForNotifications];
+
+ return self;
+}
+
+- (void)start { }
+
+/**
+ * Resets the capabilities when a transport session is closed.
+ */
+- (void)stop {
+ SDLLogD(@"System Capability manager stopped");
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ self.displayCapabilities = nil;
+ self.displays = nil;
+ self.hmiCapabilities = nil;
+ self.softButtonCapabilities = nil;
+ self.buttonCapabilities = nil;
+ self.presetBankCapabilities = nil;
+ self.hmiZoneCapabilities = nil;
+ self.speechCapabilities = nil;
+ self.prerecordedSpeechCapabilities = nil;
+ self.vrCapability = NO;
+ self.audioPassThruCapabilities = nil;
+ self.pcmStreamCapability = nil;
+ self.navigationCapability = nil;
+ self.phoneCapability = nil;
+ self.videoStreamingCapability = nil;
+ self.remoteControlCapability = nil;
+ self.seatLocationCapability = nil;
+ self.driverDistractionCapability = nil;
+
+ self.supportsSubscriptions = NO;
+
+ self.appServicesCapabilitiesDictionary = [NSMutableDictionary dictionary];
+ [self.capabilityObservers removeAllObjects];
+ [self.subscriptionStatus removeAllObjects];
+
+ self.currentHMILevel = SDLHMILevelNone;
+ self.shouldConvertDeprecatedDisplayCapabilities = YES;
+ }];
+}
+
+#pragma mark - Getters
+
+- (BOOL)supportsSubscriptions {
+ return [[SDLGlobals sharedGlobals].rpcVersion isGreaterThanOrEqualToVersion:[SDLVersion versionWithString:@"5.1.0"]];
+}
+
+- (nullable SDLAppServicesCapabilities *)appServicesCapabilities {
+ if (self.appServicesCapabilitiesDictionary.count == 0) { return nil; }
+
+ return [[SDLAppServicesCapabilities alloc] initWithAppServices:self.appServicesCapabilitiesDictionary.allValues];
+}
+
+#pragma mark - Window And Display Capabilities
+
+- (nullable SDLWindowCapability *)windowCapabilityWithWindowID:(NSUInteger)windowID {
+ NSArray<SDLDisplayCapability *> *capabilities = self.displays;
+ if (capabilities == nil || capabilities.count == 0) {
+ return nil;
+ }
+
+ SDLDisplayCapability *mainDisplay = capabilities.firstObject;
+ for (SDLWindowCapability *windowCapability in mainDisplay.windowCapabilities) {
+ NSUInteger currentWindowID = windowCapability.windowID != nil ? windowCapability.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
+ if (currentWindowID == windowID) {
+ return windowCapability;
+ }
+ }
+ return nil;
+}
+
+- (nullable SDLWindowCapability *)defaultMainWindowCapability {
+ return [self windowCapabilityWithWindowID:SDLPredefinedWindowsDefaultWindow];
+}
+
+#pragma mark Convert Deprecated to New
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+/// Convert the capabilities from a `RegisterAppInterfaceResponse` into a new-style `DisplayCapability` for the main display.
+/// @param rpc The `RegisterAppInterfaceResponse` RPC
+- (NSArray<SDLDisplayCapability *> *)sdl_createDisplayCapabilityListFromRegisterResponse:(SDLRegisterAppInterfaceResponse *)rpc {
+ return [self sdl_createDisplayCapabilityListFromDeprecatedDisplayCapabilities:rpc.displayCapabilities buttons:rpc.buttonCapabilities softButtons:rpc.softButtonCapabilities];
+}
+
+- (NSArray<SDLDisplayCapability *> *)sdl_createDisplayCapabilityListFromSetDisplayLayoutResponse:(SDLSetDisplayLayoutResponse *)rpc {
+ return [self sdl_createDisplayCapabilityListFromDeprecatedDisplayCapabilities:rpc.displayCapabilities buttons:rpc.buttonCapabilities softButtons:rpc.softButtonCapabilities];
+}
+#pragma clang diagnostic pop
+
+/// Creates a "new-style" display capability from the "old-style" `SDLDisplayCapabilities` object and other "old-style" objects that were returned in `RegisterAppInterfaceResponse` and `SetDisplayLayoutResponse`
+/// @param display The old-style `SDLDisplayCapabilities` object to convert
+/// @param buttons The old-style `SDLButtonCapabilities` object to convert
+/// @param softButtons The old-style `SDLSoftButtonCapabilities` to convert
+- (NSArray<SDLDisplayCapability *> *)sdl_createDisplayCapabilityListFromDeprecatedDisplayCapabilities:(SDLDisplayCapabilities *)display buttons:(NSArray<SDLButtonCapabilities *> *)buttons softButtons:(NSArray<SDLSoftButtonCapabilities *> *)softButtons {
+ SDLLogV(@"Creating display capability from deprecated display capabilities");
+ // Based on deprecated Display capabilities we don't know if widgets are supported. The default MAIN window is the only window we know is supported, so it's the only one we will expose.
+ SDLWindowTypeCapabilities *windowTypeCapabilities = [[SDLWindowTypeCapabilities alloc] initWithType:SDLWindowTypeMain maximumNumberOfWindows:1];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+ NSString *displayName = display.displayName ?: display.displayType;
+#pragma clang diagnostic pop
+ SDLDisplayCapability *displayCapability = [[SDLDisplayCapability alloc] initWithDisplayName:displayName];
+ displayCapability.windowTypeSupported = @[windowTypeCapabilities];
+
+ // Create a window capability object for the default MAIN window
+ SDLWindowCapability *defaultWindowCapability = [[SDLWindowCapability alloc] init];
+ defaultWindowCapability.windowID = @(SDLPredefinedWindowsDefaultWindow);
+ defaultWindowCapability.buttonCapabilities = [buttons copy];
+ defaultWindowCapability.softButtonCapabilities = [softButtons copy];
+
+ // return if display capabilities don't exist.
+ if (display == nil) {
+ defaultWindowCapability.textFields = [SDLTextField allTextFields];
+ defaultWindowCapability.imageFields = [SDLImageField allImageFields];
+ displayCapability.windowCapabilities = @[defaultWindowCapability];
+ return @[displayCapability];
+ }
+
+ // Copy all available display capability properties
+ defaultWindowCapability.templatesAvailable = [display.templatesAvailable copy];
+ defaultWindowCapability.numCustomPresetsAvailable = [display.numCustomPresetsAvailable copy];
+ defaultWindowCapability.textFields = [display.textFields copy];
+ defaultWindowCapability.imageFields = [display.imageFields copy];
+
+ /*
+ The description from the mobile API to "graphicSupported:
+ > The display's persistent screen supports referencing a static or dynamic image.
+ For backward compatibility (AppLink 2.0) static image type is always presented
+ */
+ if (display.graphicSupported.boolValue) {
+ defaultWindowCapability.imageTypeSupported = @[SDLImageTypeStatic, SDLImageTypeDynamic];
+ } else {
+ defaultWindowCapability.imageTypeSupported = @[SDLImageTypeStatic];
+ }
+
+ displayCapability.windowCapabilities = @[defaultWindowCapability];
+ return @[displayCapability];
+}
+
+#pragma mark Convert New to Deprecated
+
+/// Update the internal deprecated display capability methods with new values based on the current value of the default main window capability and the primary display
+- (void)sdl_updateDeprecatedDisplayCapabilities {
+ SDLLogV(@"Updating deprecated capabilities from default main window capabilities");
+ SDLWindowCapability *defaultMainWindowCapabilities = self.defaultMainWindowCapability;
+ if (self.displays.count == 0) {
+ return;
+ }
+
+ // Create the deprecated capabilities for backward compatibility if developers try to access them
+ SDLDisplayCapabilities *convertedCapabilities = [[SDLDisplayCapabilities alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+ convertedCapabilities.displayType = SDLDisplayTypeGeneric; // deprecated but it is mandatory
+#pragma clang diagnostic pop
+ convertedCapabilities.displayName = self.displays.firstObject.displayName;
+ convertedCapabilities.textFields = [defaultMainWindowCapabilities.textFields copy];
+ convertedCapabilities.imageFields = [defaultMainWindowCapabilities.imageFields copy];
+ convertedCapabilities.templatesAvailable = [defaultMainWindowCapabilities.templatesAvailable copy];
+ convertedCapabilities.numCustomPresetsAvailable = [defaultMainWindowCapabilities.numCustomPresetsAvailable copy];
+ convertedCapabilities.mediaClockFormats = @[]; // mandatory field but allows empty array
+ convertedCapabilities.graphicSupported = @([defaultMainWindowCapabilities.imageTypeSupported containsObject:SDLImageTypeDynamic]);
+
+ self.displayCapabilities = convertedCapabilities;
+ self.buttonCapabilities = defaultMainWindowCapabilities.buttonCapabilities;
+ self.softButtonCapabilities = defaultMainWindowCapabilities.softButtonCapabilities;
+}
+
+#pragma mark - System Capability Updates
+
+- (BOOL)isCapabilitySupported:(SDLSystemCapabilityType)type {
+ if ([self sdl_cachedCapabilityForType:type] != nil) {
+ return YES;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypePhoneCall]) {
+ return self.hmiCapabilities.phoneCall.boolValue;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeNavigation]) {
+ return self.hmiCapabilities.navigation.boolValue;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
+ return self.hmiCapabilities.displays.boolValue;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeRemoteControl]) {
+ return self.hmiCapabilities.remoteControl.boolValue;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeSeatLocation]) {
+ return self.hmiCapabilities.seatLocation.boolValue;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDriverDistraction]) {
+ return self.hmiCapabilities.driverDistraction.boolValue;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeAppServices]) {
+ //This is a corner case that the param was not available in 5.1.0, but the app services feature was available. We have to say it's available because we don't know.
+ if ([[SDLGlobals sharedGlobals].rpcVersion isEqualToVersion:[SDLVersion versionWithString:@"5.1.0"]]) {
+ return YES;
+ }
+
+ return self.hmiCapabilities.appServices.boolValue;
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming]) {
+ if ([[SDLGlobals sharedGlobals].rpcVersion isGreaterThanOrEqualToVersion:[SDLVersion versionWithString:@"3.0.0"]] && [[SDLGlobals sharedGlobals].rpcVersion isLessThanOrEqualToVersion:[SDLVersion versionWithString:@"4.4.0"]]) {
+ // This was before the system capability feature was added so check if graphics are supported instead using the deprecated display capabilities
+ return self.displayCapabilities.graphicSupported.boolValue;
+ }
+
+ return self.hmiCapabilities.videoStreaming.boolValue;
+ } else {
+ return NO;
+ }
+
+
+ return NO;
+}
+
+- (nullable SDLSystemCapability *)sdl_cachedCapabilityForType:(SDLSystemCapabilityType)type {
+ if ([type isEqualToEnum:SDLSystemCapabilityTypePhoneCall] && self.phoneCapability != nil) {
+ return [[SDLSystemCapability alloc] initWithPhoneCapability:self.phoneCapability];
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeNavigation] && self.navigationCapability != nil) {
+ return [[SDLSystemCapability alloc] initWithNavigationCapability:self.navigationCapability];
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeAppServices] && self.appServicesCapabilities != nil) {
+ return [[SDLSystemCapability alloc] initWithAppServicesCapabilities:self.appServicesCapabilities];
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDisplays] && self.displays != nil) {
+ return [[SDLSystemCapability alloc] initWithDisplayCapabilities:self.displays];
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeSeatLocation] && self.seatLocationCapability != nil) {
+ return [[SDLSystemCapability alloc] initWithSeatLocationCapability:self.seatLocationCapability];
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDriverDistraction] && self.driverDistractionCapability != nil) {
+ return [[SDLSystemCapability alloc] initWithDriverDistractionCapability:self.driverDistractionCapability];
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeRemoteControl] && self.remoteControlCapability != nil) {
+ return [[SDLSystemCapability alloc] initWithRemoteControlCapability:self.remoteControlCapability];
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming] && self.videoStreamingCapability != nil) {
+ return [[SDLSystemCapability alloc] initWithVideoStreamingCapability:self.videoStreamingCapability];
+ } else {
+ return nil;
+ }
+}
+
+- (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SDLUpdateCapabilityHandler)handler {
+ SDLLogV(@"Updating capability type: %@", type);
+ if ([self.currentHMILevel isEqualToEnum:SDLHMILevelNone] && ![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
+ SDLLogE(@"Attempted to update type: %@ in HMI level NONE, which is not allowed. Please wait until you are in HMI BACKGROUND, LIMITED, or FULL before attempting to update any SystemCapabilityType DISPLAYS.", type);
+ return handler([NSError sdl_systemCapabilityManager_cannotUpdateInHMINONE], self);
+ } else if ([type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
+ SDLLogE(@"Attempted to update type DISPLAYS, which is not allowed. You are always subscribed to displays, please either pull the cached data directly or subscribe for updates to DISPLAYS.");
+ return handler([NSError sdl_systemCapabilityManager_cannotUpdateTypeDISPLAYS], self);
+ }
+
+ // If we support subscriptions and we're already subscribed
+ if (self.supportsSubscriptions && [self.subscriptionStatus[type] isEqualToNumber:@YES]) {
+ // Just return the cached data because we get `onSystemCapability` callbacks
+ handler(nil, self);
+ } else {
+ // Go and get the actual data
+ __weak typeof(self) weakself = self;
+ [self sdl_sendGetSystemCapabilityWithType:type subscribe:nil completionHandler:^(SDLSystemCapability * _Nonnull capability, BOOL subscribed, NSError * _Nonnull error) {
+ handler(error, weakself);
+ }];
+ }
+}
+
+# pragma mark Subscribing
+
+/// Sends a GetSystemCapability and sends back the response
+/// @param type The type to get
+/// @param subscribe Whether to change the subscription status. YES to subscribe, NO to unsubscribe, nil to keep whatever the current state is
+/// @param handler The handler to be returned
+- (void)sdl_sendGetSystemCapabilityWithType:(SDLSystemCapabilityType)type subscribe:(nullable NSNumber<SDLBool> *)subscribe completionHandler:(nullable SDLCapabilityUpdateWithErrorHandler)handler {
+ SDLLogV(@"Sending GetSystemCapability with type: %@, subscribe: %@", type, subscribe);
+ SDLGetSystemCapability *getSystemCapability = [[SDLGetSystemCapability alloc] initWithType:type];
+ getSystemCapability.subscribe = subscribe;
+
+ __weak typeof(self) weakself = self;
+ [self.connectionManager sendConnectionRequest:getSystemCapability withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
+ if (![response isKindOfClass:[SDLGetSystemCapabilityResponse class]]) {
+ SDLLogE(@"GetSystemCapability failed, type: %@, did not return a GetSystemCapability response", type);
+ if (handler == nil) { return; }
+ handler(nil, NO, [NSError sdl_systemCapabilityManager_moduleDoesNotSupportSystemCapabilities]);
+ return;
+ }
+
+ if (response.success.boolValue == false) {
+ SDLLogE(@"GetSystemCapability failed, type: %@, error: %@", type, error);
+ if (handler == nil) { return; }
+ handler(nil, NO, error);
+ return;
+ }
+
+ SDLGetSystemCapabilityResponse *getSystemCapabilityResponse = (SDLGetSystemCapabilityResponse *)response;
+ SDLLogD(@"GetSystemCapability response succeeded, type: %@, response: %@", type, getSystemCapabilityResponse);
+
+ if (![weakself.subscriptionStatus[type] isEqualToNumber:subscribe] && weakself.supportsSubscriptions) {
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ weakself.subscriptionStatus[type] = subscribe;
+ }];
+ }
+
+ [weakself sdl_saveSystemCapability:getSystemCapabilityResponse.systemCapability error:error completionHandler:handler];
+ }];
+}
+
+#pragma mark Saving Capability Responses
+
+/**
+ Saves a system capability. All system capabilities will update with the full object except for app services. For app services only the updated app service capabilities will be included in the `SystemCapability` sent from Core. The cached `appServicesCapabilities` will be updated with the new `appService` data.
+
+ @param systemCapability The system capability to be saved
+ @param handler The handler to be called when the save completes
+ @return Whether or not the save occurred. This can be `NO` if the new system capability is equivalent to the old capability.
+ */
+- (BOOL)sdl_saveSystemCapability:(nullable SDLSystemCapability *)systemCapability error:(nullable NSError *)error completionHandler:(nullable SDLCapabilityUpdateWithErrorHandler)handler {
+ SDLLogV(@"Saving system capability type: %@", systemCapability);
+
+ SDLSystemCapabilityType systemCapabilityType = systemCapability.systemCapabilityType;
+
+ if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypePhoneCall]) {
+ if ([self.phoneCapability isEqual:systemCapability.phoneCapability]) {
+ [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
+ return NO;
+ }
+ self.phoneCapability = systemCapability.phoneCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeNavigation]) {
+ if ([self.navigationCapability isEqual:systemCapability.navigationCapability]) {
+ [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
+ return NO;
+ }
+ self.navigationCapability = systemCapability.navigationCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeRemoteControl]) {
+ if ([self.remoteControlCapability isEqual:systemCapability.remoteControlCapability]) {
+ [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
+ return NO;
+ }
+ self.remoteControlCapability = systemCapability.remoteControlCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeSeatLocation]) {
+ if ([self.seatLocationCapability isEqual:systemCapability.seatLocationCapability]) {
+ [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
+ return NO;
+ }
+ self.seatLocationCapability = systemCapability.seatLocationCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeDriverDistraction]) {
+ if ([self.driverDistractionCapability isEqual:systemCapability.driverDistractionCapability]) {
+ [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
+ return NO;
+ }
+ self.driverDistractionCapability = systemCapability.driverDistractionCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming]) {
+ if ([self.videoStreamingCapability isEqual:systemCapability.videoStreamingCapability]) {
+ [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
+ return NO;
+ }
+ self.videoStreamingCapability = systemCapability.videoStreamingCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeAppServices]) {
+ [self sdl_saveAppServicesCapabilitiesUpdate:systemCapability.appServicesCapabilities];
+ systemCapability = [[SDLSystemCapability alloc] initWithAppServicesCapabilities:self.appServicesCapabilities];
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
+ self.shouldConvertDeprecatedDisplayCapabilities = NO;
+ [self sdl_saveDisplayCapabilityListUpdate:systemCapability.displayCapabilities];
+ } else {
+ SDLLogW(@"Received response for unknown System Capability Type: %@", systemCapabilityType);
+ return NO;
+ }
+
+ SDLLogD(@"Updated system capability manager with new data: %@", systemCapability);
+
+ [self sdl_callObserversForUpdate:systemCapability error:error handler:handler];
+ return YES;
+}
+
+#pragma mark Merge Capability Deltas
+
+- (void)sdl_saveAppServicesCapabilitiesUpdate:(SDLAppServicesCapabilities *)newCapabilities {
+ SDLLogV(@"Saving app services capability update with new capabilities: %@", newCapabilities);
+ for (SDLAppServiceCapability *capability in newCapabilities.appServices) {
+ // If the capability has been removed, delete the saved capability; otherwise just update with the new capability
+ SDLAppServiceCapability *newCapability = [capability.updateReason isEqualToEnum:SDLServiceUpdateReasonRemoved] ? nil : capability;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ self.appServicesCapabilitiesDictionary[capability.updatedAppServiceRecord.serviceID] = newCapability;
+ }];
+ }
+}
+
+/// Save a new new-style `DisplayCapability` update (only contains the delta) that was received by merging it with the existing version.
+/// @param newCapabilities The new `DisplayCapability` update delta.
+- (void)sdl_saveDisplayCapabilityListUpdate:(NSArray<SDLDisplayCapability *> *)newCapabilities {
+ NSArray<SDLDisplayCapability *> *oldCapabilities = self.displays;
+ SDLLogV(@"Saving display capability update with new capabilities: %@", newCapabilities);
+
+ if (oldCapabilities == nil) {
+ self.displays = newCapabilities;
+ [self sdl_updateDeprecatedDisplayCapabilities];
+ return;
+ }
+
+ SDLDisplayCapability *oldDefaultDisplayCapabilities = oldCapabilities.firstObject;
+ NSMutableArray<SDLWindowCapability *> *copyWindowCapabilities = [oldDefaultDisplayCapabilities.windowCapabilities mutableCopy];
+
+ SDLDisplayCapability *newDefaultDisplayCapabilities = newCapabilities.firstObject;
+ NSArray<SDLWindowCapability *> *newWindowCapabilities = newDefaultDisplayCapabilities.windowCapabilities;
+
+ for (SDLWindowCapability *newWindow in newWindowCapabilities) {
+ BOOL oldFound = NO;
+ for (NSUInteger i = 0; i < copyWindowCapabilities.count; i++) {
+ SDLWindowCapability *oldWindow = copyWindowCapabilities[i];
+ NSUInteger newWindowID = newWindow.windowID ? newWindow.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
+ NSUInteger oldWindowID = oldWindow.windowID ? oldWindow.windowID.unsignedIntegerValue : SDLPredefinedWindowsDefaultWindow;
+
+ if (newWindowID == oldWindowID) {
+ // Replace the old window caps with new ones
+ copyWindowCapabilities[i] = newWindow;
+ oldFound = true;
+ break;
+ }
+ }
+
+ if (!oldFound) {
+ // This is a new unknown window
+ [copyWindowCapabilities addObject:newWindow];
+ }
+ }
+
+ // replace the window capabilities array with the merged one.
+ newDefaultDisplayCapabilities.windowCapabilities = [copyWindowCapabilities copy];
+ self.displays = @[newDefaultDisplayCapabilities];
+ [self sdl_updateDeprecatedDisplayCapabilities];
+}
+
+#pragma mark - Manager Subscriptions
+
+#pragma mark Subscribing
+
+- (nullable id<NSObject>)subscribeToCapabilityType:(SDLSystemCapabilityType)type withUpdateHandler:(SDLCapabilityUpdateWithErrorHandler)handler {
+ SDLLogD(@"Subscribing to capability type: %@ with a handler", type);
+ SDLSystemCapabilityObserver *observerObject = [[SDLSystemCapabilityObserver alloc] initWithObserver:[[NSObject alloc] init] updateHandler:handler];
+
+ id<NSObject> subscribedObserver = [self sdl_subscribeToCapabilityType:type observerObject:observerObject];
+ return subscribedObserver;
+}
+
+- (BOOL)subscribeToCapabilityType:(SDLSystemCapabilityType)type withObserver:(id<NSObject>)observer selector:(SEL)selector {
+ SDLLogD(@"Subscribing to capability type: %@, with observer: %@, selector: %@", type, observer, NSStringFromSelector(selector));
+ NSUInteger numberOfParametersInSelector = [NSStringFromSelector(selector) componentsSeparatedByString:@":"].count - 1;
+ if (numberOfParametersInSelector > 3) {
+ SDLLogE(@"Attempted to subscribe to a capability using a selector that contains more than 3 parameters.");
+ return NO;
+ }
+
+ if (observer == nil) {
+ SDLLogE(@"Attempted to subscribe to type: %@ with a selector on a *nil* observer, which will always fail.", type);
+ return NO;
+ }
+
+ SDLSystemCapabilityObserver *observerObject = [[SDLSystemCapabilityObserver alloc] initWithObserver:observer selector:selector];
+
+ id<NSObject> subscribedObserver = [self sdl_subscribeToCapabilityType:type observerObject:observerObject];
+ return subscribedObserver == nil ? NO : YES;
+}
+
+/// Helper method for subscribing to a system capability type
+/// @param type The SystemCapabilityType that will be subscribed
+/// @param observerObject An object that can be used to unsubscribe the block. If nil, the subscription was not succesful.
+/// @return The observer if the subscription was succesful; nil if not.
+- (nullable id<NSObject>)sdl_subscribeToCapabilityType:(SDLSystemCapabilityType)type observerObject:(SDLSystemCapabilityObserver *)observerObject {
+ if ([self.currentHMILevel isEqualToEnum:SDLHMILevelNone] && ![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
+ SDLLogE(@"Attempted to subscribe to type: %@ in HMI level NONE, which is not allowed. Please wait until you are in HMI BACKGROUND, LIMITED, or FULL before attempting to subscribe to any SystemCapabilityType other than DISPLAYS.", type);
+ [self sdl_invokeObserver:observerObject withCapabilityType:type capability:nil error:[NSError sdl_systemCapabilityManager_cannotUpdateInHMINONE]];
+ return nil;
+ }
+
+ if (self.capabilityObservers[type] == nil) {
+ SDLLogD(@"This is the first subscription to capability type: %@, sending a GetSystemCapability with subscribe true", type);
+
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ self.capabilityObservers[type] = [NSMutableArray arrayWithObject:observerObject];
+ }];
+
+ // We don't want to send this for the displays type because that's automatically subscribed
+ if (![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
+ [self sdl_sendGetSystemCapabilityWithType:type subscribe:@YES completionHandler:nil];
+ } else {
+ // If we're not calling the GSC RPC we should invoke the observer with the cached data
+ [self sdl_invokeObserver:observerObject withCapabilityType:type capability:[self sdl_cachedCapabilityForType:type] error:nil];
+ }
+ } else {
+ // Store the observer and call it immediately with the cached value
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ [self.capabilityObservers[type] addObject:observerObject];
+ }];
+
+ [self sdl_invokeObserver:observerObject withCapabilityType:type capability:[self sdl_cachedCapabilityForType:type] error:nil];
+ }
+
+ return observerObject.observer;
+}
+
+#pragma mark Unubscribing
+
+- (void)unsubscribeFromCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer {
+ SDLLogD(@"Unsubscribing from capability type: %@", type);
+ for (SDLSystemCapabilityObserver *capabilityObserver in self.capabilityObservers[type]) {
+ if ([observer isEqual:capabilityObserver.observer] && self.capabilityObservers[type] != nil) {
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ [self.capabilityObservers[type] removeObject:capabilityObserver];
+ }];
+
+ [self sdl_removeNilObserversAndUnsubscribeIfNecessary];
+ break;
+ }
+ }
+}
+
+- (void)sdl_removeNilObserversAndUnsubscribeIfNecessary {
+ SDLLogV(@"Checking for nil observers and removing them, then checking for subscriptions we don't need and unsubscribing.");
+ // Loop through our observers
+ for (SDLSystemCapabilityType key in self.capabilityObservers.allKeys) {
+ for (SDLSystemCapabilityObserver *observer in self.capabilityObservers[key]) {
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ // If an observer object is nil, remove it
+ if (observer.observer == nil) {
+ [self.capabilityObservers[key] removeObject:observer];
+ }
+
+ // If we no longer have any observers for that type, remove the array
+ if (self.capabilityObservers[key].count == 0) {
+ [self.capabilityObservers removeObjectForKey:key];
+ }
+ }];
+ }
+ }
+
+ // If we don't support subscriptions, we don't want to unsubscribe by sending an RPC below
+ if (!self.supportsSubscriptions) {
+ return;
+ }
+
+ // Loop through our subscription statuses, check if we're subscribed. If we are, and we do not have observers for that type, and that type is not DISPLAYS, then unsubscribe.
+ for (SDLSystemCapabilityType type in self.subscriptionStatus.allKeys) {
+ if ([self.subscriptionStatus[type] isEqualToNumber:@YES]
+ && self.capabilityObservers[type] == nil
+ && ![type isEqualToEnum:SDLSystemCapabilityTypeDisplays]) {
+ SDLLogD(@"Removing the last subscription to type %@, sending a GetSystemCapability with subscribe false (will unsubscribe)", type);
+ [self sdl_sendGetSystemCapabilityWithType:type subscribe:@NO completionHandler:nil];
+ }
+ }
+}
+
+#pragma mark Notifying Subscribers
+
+/// Calls all observers of a capability type with an updated capability
+/// @param capability The new capability update
+/// @param handler The update handler to call, if one exists after the observers are called
+- (void)sdl_callObserversForUpdate:(nullable SDLSystemCapability *)capability error:(nullable NSError *)error handler:(nullable SDLCapabilityUpdateWithErrorHandler)handler {
+ SDLSystemCapabilityType type = capability.systemCapabilityType;
+ SDLLogV(@"Calling observers for type: %@ with update: %@", type, capability);
+
+ [self sdl_removeNilObserversAndUnsubscribeIfNecessary];
+
+ for (SDLSystemCapabilityObserver *observer in self.capabilityObservers[type]) {
+ [self sdl_invokeObserver:observer withCapabilityType:type capability:capability error:error];
+ }
+
+ if (handler == nil) { return; }
+ handler(capability, self.subscriptionStatus[type].boolValue, error);
+}
+
+- (void)sdl_invokeObserver:(SDLSystemCapabilityObserver *)observer withCapabilityType:(SDLSystemCapabilityType)type capability:(nullable SDLSystemCapability *)capability error:(nullable NSError *)error {
+ BOOL subscribed = self.subscriptionStatus[type].boolValue || [type isEqualToEnum:SDLSystemCapabilityTypeDisplays];
+
+ if (observer.updateBlock != nil) {
+ observer.updateBlock(capability, subscribed, error);
+ } else {
+ if (![observer.observer respondsToSelector:observer.selector]) {
+ @throw [NSException sdl_invalidSystemCapabilitySelectorExceptionWithSelector:observer.selector];
+ }
+
+ NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[(NSObject *)observer.observer methodSignatureForSelector:observer.selector]];
+ [invocation setSelector:observer.selector];
+ [invocation setTarget:observer.observer];
+
+ NSUInteger numberOfParametersInSelector = [NSStringFromSelector(observer.selector) componentsSeparatedByString:@":"].count - 1;
+ if (numberOfParametersInSelector >= 1) {
+ [invocation setArgument:&capability atIndex:2];
+ }
+ if (numberOfParametersInSelector >= 2) {
+ [invocation setArgument:&error atIndex:3];
+ }
+ if (numberOfParametersInSelector >= 3) {
+ [invocation setArgument:&subscribed atIndex:4];
+ }
+ if (numberOfParametersInSelector >= 4) {
+ @throw [NSException sdl_invalidSystemCapabilitySelectorExceptionWithSelector:observer.selector];
+ }
+
+ [invocation invoke];
+ }
+}
+
+#pragma mark - Notifications
+
+/// Registers for notifications and responses from Core
+- (void)sdl_registerForNotifications {
+ SDLLogV(@"Registering for notifications");
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_displayLayoutResponse:) name:SDLDidReceiveSetDisplayLayoutResponse object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_systemCapabilityUpdatedNotification:) name:SDLDidReceiveSystemCapabilityUpdatedNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil];
+}
+
+/**
+ * Called when a `RegisterAppInterfaceResponse` response is received from Core. The head unit capabilities are saved.
+ *
+ * @param notification The `RegisterAppInterfaceResponse` response received from Core
+ */
+- (void)sdl_registerResponse:(SDLRPCResponseNotification *)notification {
+ SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
+ if (!response.success.boolValue) { return; }
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+ self.displayCapabilities = response.displayCapabilities;
+ self.softButtonCapabilities = response.softButtonCapabilities;
+ self.buttonCapabilities = response.buttonCapabilities;
+ self.presetBankCapabilities = response.presetBankCapabilities;
+#pragma clang diagnostic pop
+
+ self.hmiCapabilities = response.hmiCapabilities;
+ self.hmiZoneCapabilities = response.hmiZoneCapabilities;
+ self.speechCapabilities = response.speechCapabilities;
+ self.prerecordedSpeechCapabilities = response.prerecordedSpeech;
+ self.vrCapability = (response.vrCapabilities.count > 0 && [response.vrCapabilities.firstObject isEqualToEnum:SDLVRCapabilitiesText]) ? YES : NO;
+ self.audioPassThruCapabilities = response.audioPassThruCapabilities;
+ self.pcmStreamCapability = response.pcmStreamCapabilities;
+
+ self.shouldConvertDeprecatedDisplayCapabilities = YES;
+ self.displays = [self sdl_createDisplayCapabilityListFromRegisterResponse:response];
+
+ SDLLogV(@"Received RegisterAppInterface response, filled out display and other capabilities");
+
+ // Call the observers in case the new display capability list is created from deprecated types
+ SDLSystemCapability *systemCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:self.displays];
+ [self sdl_callObserversForUpdate:systemCapability error:nil handler:nil];
+}
+
+/**
+ * Called when a `SetDisplayLayoutResponse` response is received from Core. If the template was set successfully, the the new capabilities for the template are saved.
+ *
+ * @param notification The `SetDisplayLayoutResponse` response received from Core
+ */
+- (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+ SDLSetDisplayLayoutResponse *response = (SDLSetDisplayLayoutResponse *)notification.response;
+#pragma clang diagnostic pop
+ if (!response.success.boolValue) { return; }
+
+ // If we've received a display capability update then we should not convert our deprecated display capabilities and we should just return
+ if (!self.shouldConvertDeprecatedDisplayCapabilities) { return; }
+
+ self.displayCapabilities = response.displayCapabilities;
+ self.buttonCapabilities = response.buttonCapabilities;
+ self.softButtonCapabilities = response.softButtonCapabilities;
+ self.presetBankCapabilities = response.presetBankCapabilities;
+
+ self.displays = [self sdl_createDisplayCapabilityListFromSetDisplayLayoutResponse:response];
+
+ SDLLogV(@"Received SetDisplayLayout response, filled out display and other capabilities");
+
+ // Call the observers in case the new display capability list is created from deprecated types
+ SDLSystemCapability *systemCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:self.displays];
+ [self sdl_callObserversForUpdate:systemCapability error:nil handler:nil];
+}
+
+/**
+ * Called when an `OnSystemCapabilityUpdated` notification is received from Core. The updated system capabilty is saved.
+ *
+ * @param notification The `OnSystemCapabilityUpdated` notification received from Core
+ */
+- (void)sdl_systemCapabilityUpdatedNotification:(SDLRPCNotificationNotification *)notification {
+ SDLOnSystemCapabilityUpdated *systemCapabilityUpdatedNotification = (SDLOnSystemCapabilityUpdated *)notification.notification;
+ SDLLogV(@"Received OnSystemCapability update for type %@", systemCapabilityUpdatedNotification.systemCapability.systemCapabilityType);
+
+ [self sdl_saveSystemCapability:systemCapabilityUpdatedNotification.systemCapability error:nil completionHandler:nil];
+}
+
+- (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification {
+ SDLOnHMIStatus *onHMIStatus = (SDLOnHMIStatus *)notification.notification;
+ self.currentHMILevel = onHMIStatus.hmiLevel;
+}
+
+
+#pragma mark Getters
+
+- (NSMutableDictionary<SDLSystemCapabilityType, NSMutableArray<SDLSystemCapabilityObserver *> *> *)capabilityObservers {
+ __block NSMutableDictionary<SDLSystemCapabilityType, NSMutableArray<SDLSystemCapabilityObserver *> *> *dict = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ dict = self->_capabilityObservers;
+ }];
+
+ return dict;
+}
+
+- (NSMutableDictionary<SDLSystemCapabilityType, NSNumber<SDLBool> *> *)subscriptionStatus {
+ __block NSMutableDictionary<SDLSystemCapabilityType, NSNumber<SDLBool> *> *dict = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ dict = self->_subscriptionStatus;
+ }];
+
+ return dict;
+}
+
+- (nullable NSMutableDictionary<SDLServiceID, SDLAppServiceCapability *> *)appServicesCapabilitiesDictionary {
+ __block NSMutableDictionary<SDLServiceID, SDLAppServiceCapability *> *dict = nil;
+ [SDLGlobals runSyncOnSerialSubQueue:self.readWriteQueue block:^{
+ dict = self->_appServicesCapabilitiesDictionary;
+ }];
+
+ return dict;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSystemCapabilityType.h b/SmartDeviceLink/public/SDLSystemCapabilityType.h
new file mode 100755
index 000000000..0d184023b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemCapabilityType.h
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLEnum.h"
+
+/**
+ The type of system capability to get more information on. Used in GetSystemCapability.
+ */
+typedef SDLEnum SDLSystemCapabilityType NS_TYPED_ENUM;
+
+/**
+ The app services capability
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeAppServices;
+
+/**
+ The navigation capability
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeNavigation;
+
+/**
+ The phone call capability
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall;
+
+/**
+ The video streaming capability
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming;
+
+/**
+ The remote control capability
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl;
+
+/**
+ Contains information about the locations of each seat
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeSeatLocation;
+
+/**
+ The Display type capability
+
+ @since SDL 6.0
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeDisplays;
+
+/**
+ * @since SDL 7.0.0
+ */
+extern SDLSystemCapabilityType const SDLSystemCapabilityTypeDriverDistraction;
diff --git a/SmartDeviceLink/public/SDLSystemCapabilityType.m b/SmartDeviceLink/public/SDLSystemCapabilityType.m
new file mode 100755
index 000000000..5f5894ec5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemCapabilityType.m
@@ -0,0 +1,18 @@
+//
+// SDLSystemCapabilityType.m
+// SmartDeviceLink-iOS
+//
+// Created by Joel Fischer on 7/10/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLSystemCapabilityType.h"
+
+SDLSystemCapabilityType const SDLSystemCapabilityTypeAppServices = @"APP_SERVICES";
+SDLSystemCapabilityType const SDLSystemCapabilityTypeNavigation = @"NAVIGATION";
+SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall = @"PHONE_CALL";
+SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming = @"VIDEO_STREAMING";
+SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl = @"REMOTE_CONTROL";
+SDLSystemCapabilityType const SDLSystemCapabilityTypeSeatLocation = @"SEAT_LOCATION";
+SDLSystemCapabilityType const SDLSystemCapabilityTypeDisplays = @"DISPLAYS";
+SDLSystemCapabilityType const SDLSystemCapabilityTypeDriverDistraction = @"DRIVER_DISTRACTION";
diff --git a/SmartDeviceLink/public/SDLSystemContext.h b/SmartDeviceLink/public/SDLSystemContext.h
new file mode 100644
index 000000000..fbdb09d6f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemContext.h
@@ -0,0 +1,41 @@
+// SDLSystemContext.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Indicates whether or not a user-initiated interaction is in progress, and if so, in what mode (i.e. MENU or VR). Used in OnHMIStatus
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLSystemContext NS_TYPED_ENUM;
+
+/**
+ * No user interaction (user-initiated or app-initiated) is in progress.
+ */
+extern SDLSystemContext const SDLSystemContextMain;
+
+/**
+ * VR-oriented, user-initiated or app-initiated interaction is in-progress.
+ */
+extern SDLSystemContext const SDLSystemContextVoiceRecognitionSession;
+
+/**
+ * Menu-oriented, user-initiated or app-initiated interaction is in-progress.
+ */
+extern SDLSystemContext const SDLSystemContextMenu;
+
+/**
+ * The app's display HMI is currently being obscured by either a system or other app's overlay.
+ *
+ * @since SDL 2.0
+ */
+extern SDLSystemContext const SDLSystemContextHMIObscured;
+
+/**
+ * Broadcast only to whichever app has an alert currently being displayed.
+ *
+ * @since SDL 2.0
+ */
+extern SDLSystemContext const SDLSystemContextAlert;
diff --git a/SmartDeviceLink/SDLSystemContext.m b/SmartDeviceLink/public/SDLSystemContext.m
index ea27eb3dc..ea27eb3dc 100644
--- a/SmartDeviceLink/SDLSystemContext.m
+++ b/SmartDeviceLink/public/SDLSystemContext.m
diff --git a/SmartDeviceLink/SDLSystemRequest.h b/SmartDeviceLink/public/SDLSystemRequest.h
index 75cd10a6c..75cd10a6c 100644
--- a/SmartDeviceLink/SDLSystemRequest.h
+++ b/SmartDeviceLink/public/SDLSystemRequest.h
diff --git a/SmartDeviceLink/public/SDLSystemRequest.m b/SmartDeviceLink/public/SDLSystemRequest.m
new file mode 100644
index 000000000..e16968be0
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSystemRequest.m
@@ -0,0 +1,74 @@
+// SDLSystemRequest.m
+//
+
+
+#import "SDLSystemRequest.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSystemRequest
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ if (self = [super initWithName:SDLRPCFunctionNameSystemRequest]) {
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithType:(SDLRequestType)requestType fileName:(nullable NSString *)fileName {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+
+ self.requestType = requestType;
+ self.fileName = fileName;
+
+ return self;
+}
+
+- (instancetype)initWithProprietaryType:(NSString *)proprietaryType fileName:(nullable NSString *)fileName {
+ self = [self init];
+ if (!self) { return nil; }
+
+ self.requestType = SDLRequestTypeOEMSpecific;
+ self.requestSubType = proprietaryType;
+ self.fileName = fileName;
+
+ return self;
+}
+
+- (void)setRequestType:(SDLRequestType)requestType {
+ [self.parameters sdl_setObject:requestType forName:SDLRPCParameterNameRequestType];
+}
+
+- (SDLRequestType)requestType {
+ NSError *error = nil;
+ return [self.parameters sdl_enumForName:SDLRPCParameterNameRequestType error:&error];
+}
+
+- (void)setRequestSubType:(nullable NSString *)requestSubType {
+ [self.parameters sdl_setObject:requestSubType forName:SDLRPCParameterNameRequestSubType];
+}
+
+- (nullable NSString *)requestSubType {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRequestSubType ofClass:NSString.class error:nil];
+}
+
+- (void)setFileName:(nullable NSString *)fileName {
+ [self.parameters sdl_setObject:fileName forName:SDLRPCParameterNameFileName];
+}
+
+- (nullable NSString *)fileName {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFileName ofClass:NSString.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLSystemRequestResponse.h b/SmartDeviceLink/public/SDLSystemRequestResponse.h
index d8d57a344..d8d57a344 100644
--- a/SmartDeviceLink/SDLSystemRequestResponse.h
+++ b/SmartDeviceLink/public/SDLSystemRequestResponse.h
diff --git a/SmartDeviceLink/SDLSystemRequestResponse.m b/SmartDeviceLink/public/SDLSystemRequestResponse.m
index 3275c2228..3275c2228 100644
--- a/SmartDeviceLink/SDLSystemRequestResponse.m
+++ b/SmartDeviceLink/public/SDLSystemRequestResponse.m
diff --git a/SmartDeviceLink/public/SDLTBTState.h b/SmartDeviceLink/public/SDLTBTState.h
new file mode 100644
index 000000000..33f3a945c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTBTState.h
@@ -0,0 +1,60 @@
+// SDLTBTState.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ The turn-by-turn state, used in OnTBTClientState.
+ */
+typedef SDLEnum SDLTBTState NS_TYPED_ENUM;
+
+/**
+ The route should be updated
+ */
+extern SDLTBTState const SDLTBTStateRouteUpdateRequest;
+
+/**
+ The route is accepted
+ */
+extern SDLTBTState const SDLTBTStateRouteAccepted;
+
+/**
+ The route is refused
+ */
+extern SDLTBTState const SDLTBTStateRouteRefused;
+
+/**
+ The route is cancelled
+ */
+extern SDLTBTState const SDLTBTStateRouteCancelled;
+
+/**
+ The route should update its Estimated Time of Arrival
+ */
+extern SDLTBTState const SDLTBTStateETARequest;
+
+/**
+ The route should update its next turn
+ */
+extern SDLTBTState const SDLTBTStateNextTurnRequest;
+
+/**
+ The route should update its status
+ */
+extern SDLTBTState const SDLTBTStateRouteStatusRequest;
+
+/**
+ The route update its summary
+ */
+extern SDLTBTState const SDLTBTStateRouteSummaryRequest;
+
+/**
+ The route should update the trip's status
+ */
+extern SDLTBTState const SDLTBTStateTripStatusRequest;
+
+/**
+ The route update timed out
+ */
+extern SDLTBTState const SDLTBTStateRouteUpdateRequestTimeout;
diff --git a/SmartDeviceLink/SDLTBTState.m b/SmartDeviceLink/public/SDLTBTState.m
index ababcdc2b..ababcdc2b 100644
--- a/SmartDeviceLink/SDLTBTState.m
+++ b/SmartDeviceLink/public/SDLTBTState.m
diff --git a/SmartDeviceLink/public/SDLTPMS.h b/SmartDeviceLink/public/SDLTPMS.h
new file mode 100644
index 000000000..23cab375b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTPMS.h
@@ -0,0 +1,50 @@
+// SDLTPMS.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ An enum representing values of the tire pressure monitoring system
+ */
+typedef SDLEnum SDLTPMS NS_TYPED_ENUM;
+
+/**
+ If set the status of the tire is not known.
+ */
+extern SDLTPMS const SDLTPMSUnknown;
+
+/**
+ TPMS does not function.
+ */
+extern SDLTPMS const SDLTPMSSystemFault;
+
+/**
+ The sensor of the tire does not function.
+ */
+extern SDLTPMS const SDLTPMSSensorFault;
+
+/**
+ TPMS is reporting a low tire pressure for the tire.
+ */
+extern SDLTPMS const SDLTPMSLow;
+
+/**
+ TPMS is active and the tire pressure is monitored.
+ */
+extern SDLTPMS const SDLTPMSSystemActive;
+
+/**
+ TPMS is reporting that the tire must be trained.
+ */
+extern SDLTPMS const SDLTPMSTrain;
+
+/**
+ TPMS reports the training for the tire is completed.
+ */
+extern SDLTPMS const SDLTPMSTrainingComplete;
+
+/**
+ TPMS reports the tire is not trained.
+ */
+extern SDLTPMS const SDLTPMSNotTrained;
diff --git a/SmartDeviceLink/SDLTPMS.m b/SmartDeviceLink/public/SDLTPMS.m
index 54a66d10b..54a66d10b 100644
--- a/SmartDeviceLink/SDLTPMS.m
+++ b/SmartDeviceLink/public/SDLTPMS.m
diff --git a/SmartDeviceLink/SDLTTSChunk.h b/SmartDeviceLink/public/SDLTTSChunk.h
index d0d04a0fd..d0d04a0fd 100644
--- a/SmartDeviceLink/SDLTTSChunk.h
+++ b/SmartDeviceLink/public/SDLTTSChunk.h
diff --git a/SmartDeviceLink/SDLTTSChunk.m b/SmartDeviceLink/public/SDLTTSChunk.m
index 49f036835..49f036835 100644
--- a/SmartDeviceLink/SDLTTSChunk.m
+++ b/SmartDeviceLink/public/SDLTTSChunk.m
diff --git a/SmartDeviceLink/SDLTemperature.h b/SmartDeviceLink/public/SDLTemperature.h
index e93fae6d1..e93fae6d1 100644
--- a/SmartDeviceLink/SDLTemperature.h
+++ b/SmartDeviceLink/public/SDLTemperature.h
diff --git a/SmartDeviceLink/SDLTemperature.m b/SmartDeviceLink/public/SDLTemperature.m
index 45d1e2280..45d1e2280 100644
--- a/SmartDeviceLink/SDLTemperature.m
+++ b/SmartDeviceLink/public/SDLTemperature.m
diff --git a/SmartDeviceLink/public/SDLTemperatureUnit.h b/SmartDeviceLink/public/SDLTemperatureUnit.h
new file mode 100644
index 000000000..e7bd4a0d6
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTemperatureUnit.h
@@ -0,0 +1,21 @@
+//
+// SDLTemperatureUnit.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ The unit of temperature to display. Used in Temperature.
+ */
+typedef SDLEnum SDLTemperatureUnit NS_TYPED_ENUM;
+
+/**
+ Reflects the current HMI setting for temperature unit in Celsius
+ */
+extern SDLTemperatureUnit const SDLTemperatureUnitCelsius;
+
+/**
+ Reflects the current HMI setting for temperature unit in Fahrenheit
+ */
+extern SDLTemperatureUnit const SDLTemperatureUnitFahrenheit;
diff --git a/SmartDeviceLink/SDLTemperatureUnit.m b/SmartDeviceLink/public/SDLTemperatureUnit.m
index f54fcaaac..f54fcaaac 100644
--- a/SmartDeviceLink/SDLTemperatureUnit.m
+++ b/SmartDeviceLink/public/SDLTemperatureUnit.m
diff --git a/SmartDeviceLink/SDLTemplateColorScheme.h b/SmartDeviceLink/public/SDLTemplateColorScheme.h
index 5f0c615b2..5f0c615b2 100644
--- a/SmartDeviceLink/SDLTemplateColorScheme.h
+++ b/SmartDeviceLink/public/SDLTemplateColorScheme.h
diff --git a/SmartDeviceLink/SDLTemplateColorScheme.m b/SmartDeviceLink/public/SDLTemplateColorScheme.m
index 0c758fbbd..0c758fbbd 100644
--- a/SmartDeviceLink/SDLTemplateColorScheme.m
+++ b/SmartDeviceLink/public/SDLTemplateColorScheme.m
diff --git a/SmartDeviceLink/SDLTemplateConfiguration.h b/SmartDeviceLink/public/SDLTemplateConfiguration.h
index 39d0b0df7..39d0b0df7 100644
--- a/SmartDeviceLink/SDLTemplateConfiguration.h
+++ b/SmartDeviceLink/public/SDLTemplateConfiguration.h
diff --git a/SmartDeviceLink/SDLTemplateConfiguration.m b/SmartDeviceLink/public/SDLTemplateConfiguration.m
index 9407a0d33..9407a0d33 100644
--- a/SmartDeviceLink/SDLTemplateConfiguration.m
+++ b/SmartDeviceLink/public/SDLTemplateConfiguration.m
diff --git a/SmartDeviceLink/public/SDLTextAlignment.h b/SmartDeviceLink/public/SDLTextAlignment.h
new file mode 100644
index 000000000..f9b0a16ee
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTextAlignment.h
@@ -0,0 +1,27 @@
+// SDLTextAlignment.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * The list of possible alignments of text in a field. May only work on some display types. used in Show.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLTextAlignment NS_TYPED_ENUM;
+
+/**
+ * Text aligned left.
+ */
+extern SDLTextAlignment const SDLTextAlignmentLeft;
+
+/**
+ * Text aligned right.
+ */
+extern SDLTextAlignment const SDLTextAlignmentRight;
+
+/**
+ * Text aligned centered.
+ */
+extern SDLTextAlignment const SDLTextAlignmentCenter;
diff --git a/SmartDeviceLink/SDLTextAlignment.m b/SmartDeviceLink/public/SDLTextAlignment.m
index 1e82636e5..1e82636e5 100644
--- a/SmartDeviceLink/SDLTextAlignment.m
+++ b/SmartDeviceLink/public/SDLTextAlignment.m
diff --git a/SmartDeviceLink/public/SDLTextField.h b/SmartDeviceLink/public/SDLTextField.h
new file mode 100644
index 000000000..a345ff145
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTextField.h
@@ -0,0 +1,56 @@
+// SDLTextField.h
+//
+
+#import "SDLRPCMessage.h"
+
+#import "SDLCharacterSet.h"
+#import "SDLTextFieldName.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Struct defining the characteristics of a displayed field on the HMI.
+ *
+ * @since SDL 1.0
+ */
+@interface SDLTextField : SDLRPCStruct
+
+/**
+ * The enumeration identifying the field.
+ *
+ * @see SDLTextFieldName
+ *
+ * Required
+ */
+@property (strong, nonatomic) SDLTextFieldName name;
+
+/**
+ * The set of characters that are supported by this text field. All text is sent in UTF-8 format, but not all systems may support all of the characters expressed by UTF-8. All systems will support at least ASCII, but they may support more, either the LATIN-1 character set, or the full UTF-8 character set.
+ */
+@property (strong, nonatomic) SDLCharacterSet characterSet;
+
+/**
+ * The number of characters in one row of this field.
+ *
+ * Required, Integer 1 - 500
+ */
+@property (strong, nonatomic) NSNumber<SDLInt> *width;
+
+/**
+ * The number of rows for this text field.
+ *
+ * Required, Integer 1 - 8
+ */
+@property (strong, nonatomic) NSNumber<SDLInt> *rows;
+
+/// Convenience initalizer for the TextField RPC struct
+/// @param name The name identifying this text field
+/// @param characterSet The character set of this text field
+/// @param width The number of characters per row allowed in this text field
+/// @param rows The number of rows allowed in this text field
+- (instancetype)initWithName:(SDLTextFieldName)name characterSet:(SDLCharacterSet)characterSet width:(NSUInteger)width rows:(NSUInteger)rows;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTextField.m b/SmartDeviceLink/public/SDLTextField.m
index 80941cc5f..80941cc5f 100644
--- a/SmartDeviceLink/SDLTextField.m
+++ b/SmartDeviceLink/public/SDLTextField.m
diff --git a/SmartDeviceLink/public/SDLTextFieldName.h b/SmartDeviceLink/public/SDLTextFieldName.h
new file mode 100644
index 000000000..57d741026
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTextFieldName.h
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLEnum.h"
+
+/**
+ * Names of the text fields that can appear on a SDL display. Used in TextFieldName.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLTextFieldName NS_TYPED_ENUM;
+
+/**
+ * The first line of the first set of main fields of the persistent display. Applies to SDLShow.
+ */
+extern SDLTextFieldName const SDLTextFieldNameMainField1;
+
+/**
+ * The second line of the first set of main fields of the persistent display. Applies to SDLShow.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameMainField2;
+
+/**
+ * The first line of the second set of main fields of the persistent display. Applies to SDLShow.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameMainField3;
+
+/**
+ * The second line of the second set of main fields of the persistent display. Applies to SDLShow.
+
+ @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameMainField4;
+
+/**
+ The title line of the persistent display. Applies to SDLShow.
+
+ @since SDL 6.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameTemplateTitle;
+
+/**
+ * The status bar on the NGN display. Applies to SDLShow.
+ */
+extern SDLTextFieldName const SDLTextFieldNameStatusBar;
+
+/**
+ * Text value for MediaClock field. Must be properly formatted according to MediaClockFormat. Applies to SDLShow.
+ *
+ * @discussion This field is commonly used to show elapsed or remaining time in an audio track or audio capture.
+ */
+extern SDLTextFieldName const SDLTextFieldNameMediaClock;
+
+/**
+ * The track field of NGN type ACMs. This field is only available for media applications on a NGN display. Applies to SDLShow.
+ *
+ * @discussion This field is commonly used to show the current track number
+ */
+extern SDLTextFieldName const SDLTextFieldNameMediaTrack;
+
+/**
+ * The first line of the alert text field. Applies to SDLAlert.
+ */
+extern SDLTextFieldName const SDLTextFieldNameAlertText1;
+
+/**
+ * The second line of the alert text field. Applies to SDLAlert.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameAlertText2;
+
+/**
+ * The third line of the alert text field. Applies to SDLAlert.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameAlertText3;
+
+/**
+ * Long form body of text that can include newlines and tabs. Applies to SDLScrollableMessage.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameScrollableMessageBody;
+
+/**
+ * First line suggestion for a user response (in the case of VR enabled interaction).
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameInitialInteractionText;
+
+/**
+ * First line of navigation text.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameNavigationText1;
+
+/**
+ * Second line of navigation text.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameNavigationText2;
+
+/**
+ * Estimated Time of Arrival time for navigation.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameETA;
+
+/**
+ * Total distance to destination for navigation.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameTotalDistance;
+
+/**
+ * First line of text for audio pass thru.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText1;
+
+/**
+ * Second line of text for audio pass thru.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText2;
+
+/**
+ * Header text for slider.
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameSliderHeader;
+
+/**
+ * Footer text for slider
+ *
+ * @since SDL 2.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameSliderFooter;
+
+/**
+ * Primary text for SDLChoice
+ */
+extern SDLTextFieldName const SDLTextFieldNameMenuName;
+
+/**
+ * Secondary text for SDLChoice
+ */
+extern SDLTextFieldName const SDLTextFieldNameSecondaryText;
+
+/**
+ * Tertiary text for SDLChoice
+ */
+extern SDLTextFieldName const SDLTextFieldNameTertiaryText;
+
+/**
+ * Optional text to label an app menu button (for certain touchscreen platforms)
+ */
+extern SDLTextFieldName const SDLTextFieldNameMenuTitle;
+
+/**
+ * Optional name / title of intended location for SDLSendLocation
+ *
+ * @since SDL 4.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameLocationName;
+
+/**
+ * Optional description of intended location / establishment (if applicable) for SDLSendLocation
+ *
+ * @since SDL 4.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameLocationDescription;
+
+/**
+ * Optional location address (if applicable) for SDLSendLocation
+ *
+ * @since SDL 4.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameAddressLines;
+
+/**
+ * Optional hone number of intended location / establishment (if applicable) for SDLSendLocation
+ *
+ * @since SDL 4.0
+ */
+extern SDLTextFieldName const SDLTextFieldNamePhoneNumber;
+
+/**
+ * The first line of the subtle alert text field; applies to `SubtleAlert` `alertText1`
+ *
+ * @since SDL 7.0.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameSubtleAlertText1;
+
+/**
+ * The second line of the subtle alert text field; applies to `SubtleAlert` `alertText2`
+ *
+ * @since SDL 7.0.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameSubtleAlertText2;
+
+/**
+ * A text field in the soft button of a subtle alert; applies to `SubtleAlert` `softButtons`
+ *
+ * @since SDL 7.0.0
+ */
+extern SDLTextFieldName const SDLTextFieldNameSubtleAlertSoftButtonText;
diff --git a/SmartDeviceLink/public/SDLTextFieldName.m b/SmartDeviceLink/public/SDLTextFieldName.m
new file mode 100644
index 000000000..54f8c781e
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTextFieldName.m
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLTextFieldName.h"
+
+SDLTextFieldName const SDLTextFieldNameMainField1 = @"mainField1";
+SDLTextFieldName const SDLTextFieldNameMainField2 = @"mainField2";
+SDLTextFieldName const SDLTextFieldNameMainField3 = @"mainField3";
+SDLTextFieldName const SDLTextFieldNameMainField4 = @"mainField4";
+SDLTextFieldName const SDLTextFieldNameTemplateTitle = @"templateTitle";
+SDLTextFieldName const SDLTextFieldNameStatusBar = @"statusBar";
+SDLTextFieldName const SDLTextFieldNameMediaClock = @"mediaClock";
+SDLTextFieldName const SDLTextFieldNameMediaTrack = @"mediaTrack";
+SDLTextFieldName const SDLTextFieldNameAlertText1 = @"alertText1";
+SDLTextFieldName const SDLTextFieldNameAlertText2 = @"alertText2";
+SDLTextFieldName const SDLTextFieldNameAlertText3 = @"alertText3";
+SDLTextFieldName const SDLTextFieldNameScrollableMessageBody = @"scrollableMessageBody";
+SDLTextFieldName const SDLTextFieldNameInitialInteractionText = @"initialInteractionText";
+SDLTextFieldName const SDLTextFieldNameNavigationText1 = @"navigationText1";
+SDLTextFieldName const SDLTextFieldNameNavigationText2 = @"navigationText2";
+SDLTextFieldName const SDLTextFieldNameETA = @"ETA";
+SDLTextFieldName const SDLTextFieldNameTotalDistance = @"totalDistance";
+SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText1 = @"audioPassThruDisplayText1";
+SDLTextFieldName const SDLTextFieldNameAudioPassThruDisplayText2 = @"audioPassThruDisplayText2";
+SDLTextFieldName const SDLTextFieldNameSliderHeader = @"sliderHeader";
+SDLTextFieldName const SDLTextFieldNameSliderFooter = @"sliderFooter";
+SDLTextFieldName const SDLTextFieldNameMenuName = @"menuName";
+SDLTextFieldName const SDLTextFieldNameSecondaryText = @"secondaryText";
+SDLTextFieldName const SDLTextFieldNameTertiaryText = @"tertiaryText";
+SDLTextFieldName const SDLTextFieldNameMenuTitle = @"menuTitle";
+SDLTextFieldName const SDLTextFieldNameLocationName = @"locationName";
+SDLTextFieldName const SDLTextFieldNameLocationDescription = @"locationDescription";
+SDLTextFieldName const SDLTextFieldNameAddressLines = @"addressLines";
+SDLTextFieldName const SDLTextFieldNamePhoneNumber = @"phoneNumber";
+SDLTextFieldName const SDLTextFieldNameSubtleAlertText1 = @"subtleAlertText1";
+SDLTextFieldName const SDLTextFieldNameSubtleAlertText2 = @"subtleAlertText2";
+SDLTextFieldName const SDLTextFieldNameSubtleAlertSoftButtonText = @"subtleAlertSoftButtonText";
diff --git a/SmartDeviceLink/public/SDLTimerMode.h b/SmartDeviceLink/public/SDLTimerMode.h
new file mode 100644
index 000000000..416b9df92
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTimerMode.h
@@ -0,0 +1,25 @@
+// SDLTimerMode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ The direction of a timer. Used in nothing.
+ */
+typedef SDLEnum SDLTimerMode NS_TYPED_ENUM;
+
+/**
+ The timer should count up.
+ */
+extern SDLTimerMode const SDLTimerModeUp;
+
+/**
+ The timer should count down.
+ */
+extern SDLTimerMode const SDLTimerModeDown;
+
+/**
+ The timer should not count.
+ */
+extern SDLTimerMode const SDLTimerModeNone;
diff --git a/SmartDeviceLink/SDLTimerMode.m b/SmartDeviceLink/public/SDLTimerMode.m
index c5b353465..c5b353465 100644
--- a/SmartDeviceLink/SDLTimerMode.m
+++ b/SmartDeviceLink/public/SDLTimerMode.m
diff --git a/SmartDeviceLink/SDLTireStatus.h b/SmartDeviceLink/public/SDLTireStatus.h
index 2d00f1787..2d00f1787 100644
--- a/SmartDeviceLink/SDLTireStatus.h
+++ b/SmartDeviceLink/public/SDLTireStatus.h
diff --git a/SmartDeviceLink/SDLTireStatus.m b/SmartDeviceLink/public/SDLTireStatus.m
index aa1bac556..aa1bac556 100644
--- a/SmartDeviceLink/SDLTireStatus.m
+++ b/SmartDeviceLink/public/SDLTireStatus.m
diff --git a/SmartDeviceLink/SDLTouch.h b/SmartDeviceLink/public/SDLTouch.h
index b6df4bacf..b6df4bacf 100644
--- a/SmartDeviceLink/SDLTouch.h
+++ b/SmartDeviceLink/public/SDLTouch.h
diff --git a/SmartDeviceLink/SDLTouch.m b/SmartDeviceLink/public/SDLTouch.m
index 583778062..583778062 100644
--- a/SmartDeviceLink/SDLTouch.m
+++ b/SmartDeviceLink/public/SDLTouch.m
diff --git a/SmartDeviceLink/SDLTouchCoord.h b/SmartDeviceLink/public/SDLTouchCoord.h
index 202473167..202473167 100644
--- a/SmartDeviceLink/SDLTouchCoord.h
+++ b/SmartDeviceLink/public/SDLTouchCoord.h
diff --git a/SmartDeviceLink/SDLTouchCoord.m b/SmartDeviceLink/public/SDLTouchCoord.m
index e41a6435c..e41a6435c 100644
--- a/SmartDeviceLink/SDLTouchCoord.m
+++ b/SmartDeviceLink/public/SDLTouchCoord.m
diff --git a/SmartDeviceLink/SDLTouchEvent.h b/SmartDeviceLink/public/SDLTouchEvent.h
index b11a9a21a..b11a9a21a 100644
--- a/SmartDeviceLink/SDLTouchEvent.h
+++ b/SmartDeviceLink/public/SDLTouchEvent.h
diff --git a/SmartDeviceLink/SDLTouchEvent.m b/SmartDeviceLink/public/SDLTouchEvent.m
index 2fbfa90d4..2fbfa90d4 100644
--- a/SmartDeviceLink/SDLTouchEvent.m
+++ b/SmartDeviceLink/public/SDLTouchEvent.m
diff --git a/SmartDeviceLink/SDLTouchEventCapabilities.h b/SmartDeviceLink/public/SDLTouchEventCapabilities.h
index ff88a7962..ff88a7962 100644
--- a/SmartDeviceLink/SDLTouchEventCapabilities.h
+++ b/SmartDeviceLink/public/SDLTouchEventCapabilities.h
diff --git a/SmartDeviceLink/SDLTouchEventCapabilities.m b/SmartDeviceLink/public/SDLTouchEventCapabilities.m
index 5a69566da..5a69566da 100644
--- a/SmartDeviceLink/SDLTouchEventCapabilities.m
+++ b/SmartDeviceLink/public/SDLTouchEventCapabilities.m
diff --git a/SmartDeviceLink/public/SDLTouchManager.h b/SmartDeviceLink/public/SDLTouchManager.h
new file mode 100644
index 000000000..4f0104d31
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTouchManager.h
@@ -0,0 +1,99 @@
+//
+// SDLTouchManager.h
+// SmartDeviceLink-iOS
+//
+// Created by Muller, Alexander (A.) on 6/14/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "SDLTouchType.h"
+
+@protocol SDLFocusableItemHitTester;
+@protocol SDLTouchManagerDelegate;
+
+@class SDLTouch;
+@class SDLStreamingVideoScaleManager;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Handler for touch events
+///
+/// @param touch Describes a touch location
+/// @param type The type of touch
+typedef void(^SDLTouchEventHandler)(SDLTouch *touch, SDLTouchType type);
+
+/// Touch Manager responsible for processing touch event notifications.
+@interface SDLTouchManager : NSObject
+
+/**
+ Notified of processed touches such as pinches, pans, and taps
+ */
+@property (nonatomic, weak, nullable) id<SDLTouchManagerDelegate> touchEventDelegate;
+
+/**
+ Returns all OnTouchEvent notifications as SDLTouch and SDLTouchType objects.
+ */
+@property (copy, nonatomic, nullable) SDLTouchEventHandler touchEventHandler;
+
+/**
+ Distance between two taps on the screen, in the head unit's coordinate system, used for registering double-tap callbacks.
+
+ Defaults to 50 px.
+ */
+@property (nonatomic, assign) CGFloat tapDistanceThreshold;
+
+/**
+ Minimum distance for a pan gesture in the head unit's coordinate system, used for registering pan callbacks.
+
+ Defaults to 8 px.
+ */
+@property (nonatomic, assign) CGFloat panDistanceThreshold;
+
+/**
+ Time (in seconds) between tap events to register a double-tap callback. This must be greater than 0.0.
+
+ Default is 0.4 seconds.
+ */
+@property (nonatomic, assign) CGFloat tapTimeThreshold;
+
+/**
+ If set to NO, the display link syncing will be ignored. Defaults to YES.
+ */
+@property (assign, nonatomic) BOOL enableSyncedPanning;
+
+/**
+ Boolean denoting whether or not the touch manager should deliver touch event callbacks.
+
+ Default is true.
+ */
+@property (nonatomic, assign, getter=isTouchEnabled) BOOL touchEnabled;
+
+/**
+ Cancels pending touch event timers that may be in progress.
+
+ Currently only impacts the timer used to register single taps.
+ */
+- (void)cancelPendingTouches;
+
+/// Initializer unavailable
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ Initialize a touch manager with a hit tester and a video scale manager.
+
+ @param hitTester The hit tester to be used to correlate a point with a view
+ @param videoScaleManager The scale manager that scales from the display screen coordinate system to the app's viewport coordinate system
+ @return The initialized touch manager
+ */
+- (instancetype)initWithHitTester:(nullable id<SDLFocusableItemHitTester>)hitTester videoScaleManager:(SDLStreamingVideoScaleManager *)videoScaleManager;
+
+/**
+ Called by SDLStreamingMediaManager in sync with the streaming framerate. This helps to moderate panning gestures by allowing the UI to be modified in time with the framerate.
+ */
+- (void)syncFrame;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLTouchManager.m b/SmartDeviceLink/public/SDLTouchManager.m
new file mode 100644
index 000000000..ad9eb4703
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTouchManager.m
@@ -0,0 +1,498 @@
+//
+// SDLTouchManager.m
+// SmartDeviceLink-iOS
+//
+// Created by Muller, Alexander (A.) on 6/14/16.
+// Copyright © 2016 smartdevicelink. All rights reserved.
+//
+
+#import "SDLTouchManager.h"
+
+#import "CGPoint_Util.h"
+#import "SDLGlobals.h"
+#import "SDLFocusableItemHitTester.h"
+#import "SDLLogMacros.h"
+#import "SDLNotificationConstants.h"
+#import "SDLOnTouchEvent.h"
+#import "SDLPinchGesture.h"
+#import "SDLRPCNotificationNotification.h"
+#import "SDLStreamingVideoScaleManager.h"
+#import "SDLTimer.h"
+#import "SDLTouch.h"
+#import "SDLTouchCoord.h"
+#import "SDLTouchEvent.h"
+#import "SDLTouchManagerDelegate.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSUInteger, SDLPerformingTouchType) {
+ SDLPerformingTouchTypeNone,
+ SDLPerformingTouchTypeSingleTouch,
+ SDLPerformingTouchTypeMultiTouch,
+ SDLPerformingTouchTypePanningTouch
+};
+
+/*!
+ * @abstract
+ * Touch Manager will ignore touches that represent more than 2 fingers on the screen.
+ */
+static NSUInteger const MaximumNumberOfTouches = 2;
+
+@interface SDLTouchManager ()
+
+/*!
+ * @abstract
+ * First touch received from onOnTouchEvent.
+ */
+@property (nonatomic, strong, nullable) SDLTouch *firstTouch;
+
+/*!
+ * @abstract
+ * Previous touch received from onOnTouchEvent.
+ */
+@property (nonatomic, strong, nullable) SDLTouch *previousTouch;
+
+/*!
+ * @abstract
+ * Cached previous single tap used for double tap detection.
+ */
+@property (nonatomic, strong, nullable) SDLTouch *singleTapTouch;
+
+/*!
+ * @abstract
+ * Distance of a previously generated pinch event. Used to calculate the scale of zoom motion.
+ */
+@property (nonatomic, assign) CGFloat previousPinchDistance;
+
+/*!
+ * @abstract
+ * Current in-progress pinch gesture.
+ */
+@property (nonatomic, strong, nullable) SDLPinchGesture *currentPinchGesture;
+
+/*!
+ * @abstract
+ * Timer used for distinguishing between single & double taps.
+ */
+@property (nonatomic, strong, nullable) SDLTimer *singleTapTimer;
+
+/*!
+ * @abstract
+ * Current touch type being performed.
+ */
+@property (nonatomic, assign) SDLPerformingTouchType performingTouchType;
+
+/**
+ A hit tester that allows us to check for a view based on coordinates, if available.
+ */
+@property (nonatomic, weak, nullable) id<SDLFocusableItemHitTester> hitTester;
+
+/**
+ The last panning touch we received
+ */
+@property (nonatomic) CGPoint lastStoredTouchLocation;
+
+/**
+ The last panning touch that we notified the developer about
+ */
+@property (nonatomic) CGPoint lastNotifiedTouchLocation;
+
+/**
+ The scale manager that scales from the display screen coordinate system to the app's viewport coordinate system
+*/
+@property (strong, nonatomic) SDLStreamingVideoScaleManager *videoScaleManager;
+
+@end
+
+@implementation SDLTouchManager
+
+- (instancetype)initWithHitTester:(nullable id<SDLFocusableItemHitTester>)hitTester videoScaleManager:(SDLStreamingVideoScaleManager *)videoScaleManager {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+
+ _hitTester = hitTester;
+ _videoScaleManager = videoScaleManager;
+ _tapTimeThreshold = 0.4f;
+ _tapDistanceThreshold = 50.0f;
+ _panDistanceThreshold = 8.0f;
+ _touchEnabled = YES;
+ _enableSyncedPanning = YES;
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_onTouchEvent:) name:SDLDidReceiveTouchEventNotification object:nil];
+
+ return self;
+}
+
+#pragma mark - Public
+- (void)cancelPendingTouches {
+ [self sdl_cancelSingleTapTimer];
+}
+
+- (void)syncFrame {
+ if (!self.isTouchEnabled || (!self.touchEventHandler && !self.touchEventDelegate)) {
+ return;
+ }
+
+ if (self.performingTouchType == SDLPerformingTouchTypePanningTouch) {
+ CGPoint storedTouchLocation = self.lastStoredTouchLocation;
+ CGPoint notifiedTouchLocation = self.lastNotifiedTouchLocation;
+
+ if (CGPointEqualToPoint(storedTouchLocation, CGPointZero) ||
+ CGPointEqualToPoint(notifiedTouchLocation, CGPointZero) ||
+ CGPointEqualToPoint(storedTouchLocation, notifiedTouchLocation)) {
+ return;
+ }
+
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceivePanningFromPoint:toPoint:)]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self.touchEventDelegate touchManager:self
+ didReceivePanningFromPoint:notifiedTouchLocation
+ toPoint:storedTouchLocation];
+
+ self.lastNotifiedTouchLocation = storedTouchLocation;
+ });
+ }
+ } else if (self.performingTouchType == SDLPerformingTouchTypeMultiTouch) {
+ if (self.previousPinchDistance == self.currentPinchGesture.distance) {
+ return;
+ }
+
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceivePinchAtCenterPoint:withScale:)]) {
+
+ CGFloat scale = self.currentPinchGesture.distance / self.previousPinchDistance;
+ CGPoint center = self.currentPinchGesture.center;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self.touchEventDelegate touchManager:self
+ didReceivePinchAtCenterPoint:center
+ withScale:scale];
+ });
+ }
+
+ self.previousPinchDistance = self.currentPinchGesture.distance;
+ }
+}
+
+#pragma mark - SDLDidReceiveTouchEventNotification
+
+/**
+ * Handles detecting the type and state of the gesture and notifies the appropriate delegate callbacks.
+
+ * @param notification A SDLOnTouchEvent notification.
+ */
+- (void)sdl_onTouchEvent:(SDLRPCNotificationNotification *)notification {
+ if (!self.isTouchEnabled
+ || (!self.touchEventHandler && !self.touchEventDelegate)
+ || ![notification.notification isKindOfClass:SDLOnTouchEvent.class]) {
+ return;
+ }
+
+ SDLOnTouchEvent *onTouchEvent = (SDLOnTouchEvent *)notification.notification;
+ onTouchEvent = [self.videoScaleManager scaleTouchEventCoordinates:onTouchEvent];
+
+ SDLTouchType touchType = onTouchEvent.type;
+ [onTouchEvent.event enumerateObjectsUsingBlock:^(SDLTouchEvent *touchEvent, NSUInteger idx, BOOL *stop) {
+ SDLTouch *touch = [[SDLTouch alloc] initWithTouchEvent:touchEvent];
+
+ if (self.touchEventHandler != NULL) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ self.touchEventHandler(touch, touchType);
+ });
+ }
+
+ if (!self.touchEventDelegate || (touch.identifier > MaximumNumberOfTouches)) {
+ return;
+ }
+
+ if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeBegin]) {
+ [self sdl_handleTouchBegan:touch];
+ } else if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeMove]) {
+ [self sdl_handleTouchMoved:touch];
+ } else if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeEnd]) {
+ [self sdl_handleTouchEnded:touch];
+ } else if ([onTouchEvent.type isEqualToEnum:SDLTouchTypeCancel]) {
+ [self sdl_handleTouchCanceled:touch];
+ }
+ }];
+}
+
+#pragma mark - Private
+/**
+ * Handles a BEGIN touch event sent by Core
+ *
+ * @param touch Gesture information
+ */
+- (void)sdl_handleTouchBegan:(SDLTouch *)touch {
+ _performingTouchType = SDLPerformingTouchTypeSingleTouch;
+
+ switch (touch.identifier) {
+ case SDLTouchIdentifierFirstFinger: {
+ self.firstTouch = touch;
+ self.previousTouch = touch;
+ } break;
+ case SDLTouchIdentifierSecondFinger: {
+ _performingTouchType = SDLPerformingTouchTypeMultiTouch;
+ self.currentPinchGesture = [[SDLPinchGesture alloc] initWithFirstTouch:self.previousTouch secondTouch:touch];
+ self.previousPinchDistance = self.currentPinchGesture.distance;
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:pinchDidStartInView:atCenterPoint:)]) {
+ CGPoint center = self.currentPinchGesture.center;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:center] : nil;
+ [self.touchEventDelegate touchManager:self pinchDidStartInView:hitView atCenterPoint:center];
+ });
+ }
+ } break;
+ }
+}
+
+/**
+ * Handles a MOVE touch event sent by Core
+ *
+ * @param touch Gesture information
+ */
+- (void)sdl_handleTouchMoved:(SDLTouch *)touch {
+ CGFloat xDelta = fabs(touch.location.x - self.firstTouch.location.x);
+ CGFloat yDelta = fabs(touch.location.y - self.firstTouch.location.y);
+ if (xDelta <= self.panDistanceThreshold && yDelta <= self.panDistanceThreshold) {
+ return;
+ }
+
+ switch (self.performingTouchType) {
+ case SDLPerformingTouchTypeMultiTouch: {
+ switch (touch.identifier) {
+ case SDLTouchIdentifierFirstFinger: {
+ self.currentPinchGesture.firstTouch = touch;
+ } break;
+ case SDLTouchIdentifierSecondFinger: {
+ self.currentPinchGesture.secondTouch = touch;
+ } break;
+ }
+
+ if (!self.enableSyncedPanning) {
+ [self syncFrame];
+ }
+ } break;
+ case SDLPerformingTouchTypeSingleTouch: {
+ self.lastNotifiedTouchLocation = touch.location;
+ self.lastStoredTouchLocation = touch.location;
+
+ _performingTouchType = SDLPerformingTouchTypePanningTouch;
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:panningDidStartInView:atPoint:)]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:touch.location] : nil;
+ [self.touchEventDelegate touchManager:self panningDidStartInView:hitView atPoint:touch.location];
+ });
+ }
+ } break;
+ case SDLPerformingTouchTypePanningTouch: {
+ if (!self.enableSyncedPanning) {
+ [self syncFrame];
+ }
+ self.lastStoredTouchLocation = touch.location;
+ } break;
+ case SDLPerformingTouchTypeNone: break;
+ }
+
+ self.previousTouch = touch;
+}
+
+/**
+ * Handles a END touch type notification sent by Core
+ *
+ * @param touch Gesture information
+ */
+- (void)sdl_handleTouchEnded:(SDLTouch *)touch {
+ switch (self.performingTouchType) {
+ case SDLPerformingTouchTypeMultiTouch: {
+ [self sdl_setMultiTouchFingerTouchForTouch:touch];
+ if (self.currentPinchGesture.isValid) {
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:pinchDidEndInView:atCenterPoint:)]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:self.currentPinchGesture.center] : nil;
+ [self.touchEventDelegate touchManager:self pinchDidEndInView:hitView atCenterPoint:self.currentPinchGesture.center];
+ self.currentPinchGesture = nil;
+ });
+ } else {
+ self.currentPinchGesture = nil;
+ }
+ }
+ } break;
+ case SDLPerformingTouchTypePanningTouch: {
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:panningDidEndInView:atPoint:)]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:touch.location] : nil;
+ [self.touchEventDelegate touchManager:self panningDidEndInView:hitView atPoint:touch.location];
+ });
+ }
+ } break;
+ case SDLPerformingTouchTypeSingleTouch: {
+ if (self.singleTapTimer == nil) {
+ // Initial Tap
+ self.singleTapTouch = touch;
+ [self sdl_initializeSingleTapTimerAtPoint:self.singleTapTouch.location];
+ } else {
+ // Double Tap
+ [self sdl_cancelSingleTapTimer];
+
+ NSUInteger timeStampDelta = touch.timeStamp - self.singleTapTouch.timeStamp;
+ CGFloat xDelta = fabs(touch.location.x - self.singleTapTouch.location.x);
+ CGFloat yDelta = fabs(touch.location.y - self.singleTapTouch.location.y);
+
+ if (timeStampDelta <= self.tapTimeThreshold * NSEC_PER_USEC && xDelta <= self.tapDistanceThreshold && yDelta <= self.tapDistanceThreshold) {
+ CGPoint centerPoint = CGPointCenterOfPoints(touch.location,
+ self.singleTapTouch.location);
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceiveDoubleTapForView:atPoint:)]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ UIView *hitView = (self.hitTester != nil) ? [self.hitTester viewForPoint:centerPoint] : nil;
+ [self.touchEventDelegate touchManager:self didReceiveDoubleTapForView:hitView atPoint:centerPoint];
+ });
+ }
+ }
+
+ self.singleTapTouch = nil;
+ }
+ } break;
+ case SDLPerformingTouchTypeNone: break;
+ }
+
+ self.firstTouch = nil;
+ self.previousTouch = nil;
+ _performingTouchType = SDLPerformingTouchTypeNone;
+}
+
+/**
+ * Handles a CANCEL touch event sent by CORE. A CANCEL touch event is sent when a gesture is interrupted during a video stream. This can happen when a system dialog box appears on the screen, such as when the user is alerted about an incoming phone call.
+ *
+ * Pinch and pan gesture subscribers are notified if the gesture is canceled. Tap gestures are simply canceled without notification.
+ *
+ * @param touch Gesture information
+ */
+- (void)sdl_handleTouchCanceled:(SDLTouch *)touch {
+ if (self.singleTapTimer != nil) {
+ // Cancel any ongoing single tap timer
+ [self sdl_cancelSingleTapTimer];
+ self.singleTapTouch = nil;
+ }
+
+ switch (self.performingTouchType) {
+ case SDLPerformingTouchTypeMultiTouch: {
+ [self sdl_setMultiTouchFingerTouchForTouch:touch];
+ if (self.currentPinchGesture.isValid) {
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:pinchCanceledAtCenterPoint:)]) {
+ CGPoint center = self.currentPinchGesture.center;
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self.touchEventDelegate touchManager:self
+ pinchCanceledAtCenterPoint:center];
+ });
+ }
+ self.currentPinchGesture = nil;
+ }
+ } break;
+ case SDLPerformingTouchTypePanningTouch: {
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:panningCanceledAtPoint:)]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self.touchEventDelegate touchManager:self
+ panningCanceledAtPoint:touch.location];
+ });
+ }
+ } break;
+ case SDLPerformingTouchTypeSingleTouch: // fallthrough
+ case SDLPerformingTouchTypeNone: break;
+ }
+
+ self.firstTouch = nil;
+ self.previousTouch = nil;
+ _performingTouchType = SDLPerformingTouchTypeNone;
+}
+
+#pragma mark - Helpers
+
+/**
+ * Saves the pinch touch gesture to the correct finger
+ *
+ * @param touch Gesture information
+ */
+- (void)sdl_setMultiTouchFingerTouchForTouch:(SDLTouch *)touch {
+ switch (touch.identifier) {
+ case SDLTouchIdentifierFirstFinger: {
+ self.currentPinchGesture.firstTouch = touch;
+ } break;
+ case SDLTouchIdentifierSecondFinger: {
+ self.currentPinchGesture.secondTouch = touch;
+ } break;
+ }
+}
+
+/**
+ * Creates a timer used to detect the type of tap gesture (single or double tap)
+ *
+ * @param point Screen coordinates of the tap gesture
+ */
+- (void)sdl_initializeSingleTapTimerAtPoint:(CGPoint)point {
+ if (self.singleTapTimer != nil) {
+ [self sdl_cancelSingleTapTimer];
+ }
+
+ __weak typeof(self) weakSelf = self;
+ self.singleTapTimer = [[SDLTimer alloc] initWithDuration:self.tapTimeThreshold];
+ self.singleTapTimer.elapsedBlock = ^{
+ [weakSelf sdl_singleTapTimerCallbackWithPoint:point];
+ };
+ [self.singleTapTimer start];
+}
+
+/**
+ The method that will be called when the timer fires that was started in `sdl_initializeSingleTapTimerAtPoint:`.
+
+ This is called on the main thread based on `sdl_initializeSingleTapTimerAtPoint:`
+
+ @param point The point where the tap occurred
+ */
+- (void)sdl_singleTapTimerCallbackWithPoint:(CGPoint)point {
+ self.singleTapTouch = nil;
+ [self sdl_cancelSingleTapTimer];
+ if ([self.touchEventDelegate respondsToSelector:@selector(touchManager:didReceiveSingleTapForView:atPoint:)]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self sdl_getSingleTapHitView:point hitViewHandler:^(UIView * _Nullable selectedView) {
+ [self.touchEventDelegate touchManager:self didReceiveSingleTapForView:selectedView atPoint:point];
+ }];
+ });
+ }
+}
+
+/**
+ * HAX to preserve the thread on which the delegate is notified for single taps; returning on the main thread would be a breaking change. All other touch gestures currently notify the delegate on the main thread. The single tap timer runs on a background thread so when a single tap is detected the hit test needs to be done on the main thread and then the result is returned on a background thread.
+ *
+ * Checks if a single tap is inside a view. As the single tap timer is run on a background thread, the check is done on a main thread and then the result is returned on a background thread.
+ *
+ * @param point Screen coordinates of the tap gesture
+ * @param hitViewHandler A handler that returns the view the point is inside of; nil if the point does not lie inside of a view
+ */
+- (void)sdl_getSingleTapHitView:(CGPoint)point hitViewHandler:(nullable void (^)(UIView * __nullable hitView))hitViewHandler {
+ if (!self.hitTester) {
+ if (!hitViewHandler) { return; }
+ return hitViewHandler(nil);
+ }
+
+ UIView *hitView = [self.hitTester viewForPoint:point];
+ if (!hitViewHandler) { return; }
+
+ return hitViewHandler(hitView);
+}
+
+/**
+ * Cancels a tap gesture timer
+ */
+- (void)sdl_cancelSingleTapTimer {
+ if (self.singleTapTimer == nil) {
+ return;
+ }
+
+ [self.singleTapTimer cancel];
+ self.singleTapTimer = nil;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLTouchManagerDelegate.h b/SmartDeviceLink/public/SDLTouchManagerDelegate.h
index 1e3bc57b5..1e3bc57b5 100644
--- a/SmartDeviceLink/SDLTouchManagerDelegate.h
+++ b/SmartDeviceLink/public/SDLTouchManagerDelegate.h
diff --git a/SmartDeviceLink/public/SDLTouchType.h b/SmartDeviceLink/public/SDLTouchType.h
new file mode 100644
index 000000000..83faad3c2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTouchType.h
@@ -0,0 +1,30 @@
+// SDLTouchType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ The type of a touch in a projection application. Used in OnTouchEvent.
+ */
+typedef SDLEnum SDLTouchType NS_TYPED_ENUM;
+
+/**
+ The touch is the beginning of a finger pressed on the display.
+ */
+extern SDLTouchType const SDLTouchTypeBegin;
+
+/**
+ The touch is the movement of a finger pressed on the display.
+ */
+extern SDLTouchType const SDLTouchTypeMove;
+
+/**
+ The touch is the ending of a finger pressed on the display.
+ */
+extern SDLTouchType const SDLTouchTypeEnd;
+
+/**
+ The touch is the cancellation of a finger pressed on the display.
+ */
+extern SDLTouchType const SDLTouchTypeCancel;
diff --git a/SmartDeviceLink/SDLTouchType.m b/SmartDeviceLink/public/SDLTouchType.m
index 4637625bd..4637625bd 100644
--- a/SmartDeviceLink/SDLTouchType.m
+++ b/SmartDeviceLink/public/SDLTouchType.m
diff --git a/SmartDeviceLink/public/SDLTransmissionType.h b/SmartDeviceLink/public/SDLTransmissionType.h
new file mode 100644
index 000000000..e85068b0d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTransmissionType.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLEnum.h"
+
+/**
+ * Type of transmission used in the vehicle.
+ *
+ * @since SDL 7.0
+*/
+typedef SDLEnum SDLTransmissionType NS_TYPED_ENUM;
+
+/**
+ * Automatic transmission.
+ */
+extern SDLTransmissionType const SDLTransmissionTypeAutomatic;
+
+/**
+ * Continuously variable transmission(CVT).
+ */
+extern SDLTransmissionType const SDLTransmissionTypeContinuouslyVariable;
+
+/**
+ * Direct drive between engine and wheels.
+ */
+extern SDLTransmissionType const SDLTransmissionTypeDirectDrive;
+
+/**
+ * Dual clutch transmission.
+ */
+extern SDLTransmissionType const SDLTransmissionTypeDualClutch;
+
+/**
+ * Electric variable transmission.
+ */
+extern SDLTransmissionType const SDLTransmissionTypeElectricVariable;
+
+/**
+ * Infinitely variable transmission.
+ */
+extern SDLTransmissionType const SDLTransmissionTypeInfinitelyVariable;
+
+/**
+ * Manual transmission.
+ */
+extern SDLTransmissionType const SDLTransmissionTypeManual;
+
+/**
+ * Semi automatic transmission.
+ */
+extern SDLTransmissionType const SDLTransmissionTypeSemiAutomatic;
diff --git a/SmartDeviceLink/public/SDLTransmissionType.m b/SmartDeviceLink/public/SDLTransmissionType.m
new file mode 100644
index 000000000..800935124
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTransmissionType.m
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLTransmissionType.h"
+
+SDLTransmissionType const SDLTransmissionTypeAutomatic = @"AUTOMATIC";
+SDLTransmissionType const SDLTransmissionTypeContinuouslyVariable = @"CONTINUOUSLY_VARIABLE";
+SDLTransmissionType const SDLTransmissionTypeDirectDrive = @"DIRECT_DRIVE";
+SDLTransmissionType const SDLTransmissionTypeDualClutch = @"DUAL_CLUTCH";
+SDLTransmissionType const SDLTransmissionTypeElectricVariable = @"ELECTRIC_VARIABLE";
+SDLTransmissionType const SDLTransmissionTypeInfinitelyVariable = @"INFINITELY_VARIABLE";
+SDLTransmissionType const SDLTransmissionTypeManual = @"MANUAL";
+SDLTransmissionType const SDLTransmissionTypeSemiAutomatic = @"SEMI_AUTOMATIC";
diff --git a/SmartDeviceLink/public/SDLTriggerSource.h b/SmartDeviceLink/public/SDLTriggerSource.h
new file mode 100644
index 000000000..f10e7f0b5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTriggerSource.h
@@ -0,0 +1,27 @@
+// SDLTriggerSource.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Indicates whether choice/command was selected via VR or via a menu selection (using SEEKRIGHT/SEEKLEFT, TUNEUP, TUNEDOWN, OK buttons). Used in PerformInteractionResponse and OnCommand.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLTriggerSource NS_TYPED_ENUM;
+
+/**
+ * Selection made via menu
+ */
+extern SDLTriggerSource const SDLTriggerSourceMenu;
+
+/**
+ * Selection made via Voice session
+ */
+extern SDLTriggerSource const SDLTriggerSourceVoiceRecognition;
+
+/**
+ * Selection made via Keyboard
+ */
+extern SDLTriggerSource const SDLTriggerSourceKeyboard;
diff --git a/SmartDeviceLink/SDLTriggerSource.m b/SmartDeviceLink/public/SDLTriggerSource.m
index e5c075a8d..e5c075a8d 100644
--- a/SmartDeviceLink/SDLTriggerSource.m
+++ b/SmartDeviceLink/public/SDLTriggerSource.m
diff --git a/SmartDeviceLink/SDLTurn.h b/SmartDeviceLink/public/SDLTurn.h
index b86d64695..b86d64695 100644
--- a/SmartDeviceLink/SDLTurn.h
+++ b/SmartDeviceLink/public/SDLTurn.h
diff --git a/SmartDeviceLink/SDLTurn.m b/SmartDeviceLink/public/SDLTurn.m
index ec4ced937..ec4ced937 100644
--- a/SmartDeviceLink/SDLTurn.m
+++ b/SmartDeviceLink/public/SDLTurn.m
diff --git a/SmartDeviceLink/public/SDLTurnSignal.h b/SmartDeviceLink/public/SDLTurnSignal.h
new file mode 100644
index 000000000..34c9e7ea9
--- /dev/null
+++ b/SmartDeviceLink/public/SDLTurnSignal.h
@@ -0,0 +1,34 @@
+//
+// SDLTurnSignal.h
+// SmartDeviceLink
+//
+// Created by Nicole on 7/19/18.
+// Copyright © 2018 smartdevicelink. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enumeration that describes the status of the turn light indicator.
+ */
+typedef SDLEnum SDLTurnSignal NS_TYPED_ENUM;
+
+/**
+ * Turn signal is OFF
+ */
+extern SDLTurnSignal const SDLTurnSignalOff;
+
+/**
+ * Left turn signal is on
+ */
+extern SDLTurnSignal const SDLTurnSignalLeft;
+
+/**
+ * Right turn signal is on
+ */
+extern SDLTurnSignal const SDLTurnSignalRight;
+
+/**
+ * Both signals (left and right) are on
+ */
+extern SDLTurnSignal const SDLTurnSignalBoth;
diff --git a/SmartDeviceLink/SDLTurnSignal.m b/SmartDeviceLink/public/SDLTurnSignal.m
index dedd49e72..dedd49e72 100644
--- a/SmartDeviceLink/SDLTurnSignal.m
+++ b/SmartDeviceLink/public/SDLTurnSignal.m
diff --git a/SmartDeviceLink/SDLUnpublishAppService.h b/SmartDeviceLink/public/SDLUnpublishAppService.h
index 56e1f12b7..56e1f12b7 100644
--- a/SmartDeviceLink/SDLUnpublishAppService.h
+++ b/SmartDeviceLink/public/SDLUnpublishAppService.h
diff --git a/SmartDeviceLink/SDLUnpublishAppService.m b/SmartDeviceLink/public/SDLUnpublishAppService.m
index 3da728501..3da728501 100644
--- a/SmartDeviceLink/SDLUnpublishAppService.m
+++ b/SmartDeviceLink/public/SDLUnpublishAppService.m
diff --git a/SmartDeviceLink/SDLUnpublishAppServiceResponse.h b/SmartDeviceLink/public/SDLUnpublishAppServiceResponse.h
index fb048ca4b..fb048ca4b 100644
--- a/SmartDeviceLink/SDLUnpublishAppServiceResponse.h
+++ b/SmartDeviceLink/public/SDLUnpublishAppServiceResponse.h
diff --git a/SmartDeviceLink/SDLUnpublishAppServiceResponse.m b/SmartDeviceLink/public/SDLUnpublishAppServiceResponse.m
index db26d0610..db26d0610 100644
--- a/SmartDeviceLink/SDLUnpublishAppServiceResponse.m
+++ b/SmartDeviceLink/public/SDLUnpublishAppServiceResponse.m
diff --git a/SmartDeviceLink/SDLUnregisterAppInterface.h b/SmartDeviceLink/public/SDLUnregisterAppInterface.h
index 35ca04639..35ca04639 100644
--- a/SmartDeviceLink/SDLUnregisterAppInterface.h
+++ b/SmartDeviceLink/public/SDLUnregisterAppInterface.h
diff --git a/SmartDeviceLink/SDLUnregisterAppInterface.m b/SmartDeviceLink/public/SDLUnregisterAppInterface.m
index d191da5bb..d191da5bb 100644
--- a/SmartDeviceLink/SDLUnregisterAppInterface.m
+++ b/SmartDeviceLink/public/SDLUnregisterAppInterface.m
diff --git a/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.h b/SmartDeviceLink/public/SDLUnregisterAppInterfaceResponse.h
index da366a5e4..da366a5e4 100644
--- a/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.h
+++ b/SmartDeviceLink/public/SDLUnregisterAppInterfaceResponse.h
diff --git a/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.m b/SmartDeviceLink/public/SDLUnregisterAppInterfaceResponse.m
index 7cc5eced3..7cc5eced3 100644
--- a/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.m
+++ b/SmartDeviceLink/public/SDLUnregisterAppInterfaceResponse.m
diff --git a/SmartDeviceLink/SDLUnsubscribeButton.h b/SmartDeviceLink/public/SDLUnsubscribeButton.h
index 9fd78ec25..9fd78ec25 100644
--- a/SmartDeviceLink/SDLUnsubscribeButton.h
+++ b/SmartDeviceLink/public/SDLUnsubscribeButton.h
diff --git a/SmartDeviceLink/SDLUnsubscribeButton.m b/SmartDeviceLink/public/SDLUnsubscribeButton.m
index 3e84ad5b6..3e84ad5b6 100644
--- a/SmartDeviceLink/SDLUnsubscribeButton.m
+++ b/SmartDeviceLink/public/SDLUnsubscribeButton.m
diff --git a/SmartDeviceLink/SDLUnsubscribeButtonResponse.h b/SmartDeviceLink/public/SDLUnsubscribeButtonResponse.h
index 23753b097..23753b097 100644
--- a/SmartDeviceLink/SDLUnsubscribeButtonResponse.h
+++ b/SmartDeviceLink/public/SDLUnsubscribeButtonResponse.h
diff --git a/SmartDeviceLink/SDLUnsubscribeButtonResponse.m b/SmartDeviceLink/public/SDLUnsubscribeButtonResponse.m
index 6d705d36e..6d705d36e 100644
--- a/SmartDeviceLink/SDLUnsubscribeButtonResponse.m
+++ b/SmartDeviceLink/public/SDLUnsubscribeButtonResponse.m
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleData.h b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.h
new file mode 100644
index 000000000..57acba53d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.h
@@ -0,0 +1,291 @@
+// SDLUnsubscribeVehicleData.h
+//
+
+
+#import "SDLRPCRequest.h"
+
+/**
+ * This function is used to unsubscribe the notifications from the
+ * subscribeVehicleData function
+ * <p>
+ * Function Group: Location, VehicleInfo and DrivingChara
+ * <p>
+ * <b>HMILevel needs to be FULL, LIMITED or BACKGROUND</b>
+ * </p>
+ *
+ * @since SmartDeviceLink 2.0<br/>
+ * See SDLSubscribeVehicleData SDLGetVehicleData
+ */
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLUnsubscribeVehicleData : SDLRPCRequest
+
+/**
+ * Convenience init for unsubscribing to all possible vehicle data items.
+ *
+ * @param accelerationPedalPosition Unsubscribe to accelerationPedalPosition
+ * @param airbagStatus Unsubscribe to airbagStatus
+ * @param beltStatus Unsubscribe to beltStatus
+ * @param bodyInformation Unsubscribe to bodyInformation
+ * @param cloudAppVehicleID Unsubscribe to cloudAppVehicleID
+ * @param clusterModeStatus Unsubscribe to clusterModeStatus
+ * @param deviceStatus Unsubscribe to deviceStatus
+ * @param driverBraking Unsubscribe to driverBraking
+ * @param eCallInfo Unsubscribe to eCallInfo
+ * @param electronicParkBrakeStatus Unsubscribe to electronicParkBrakeStatus
+ * @param emergencyEvent Unsubscribe to emergencyEvent
+ * @param engineOilLife Unsubscribe to engineOilLife
+ * @param engineTorque Unsubscribe to engineTorque
+ * @param externalTemperature Unsubscribe to externalTemperature
+ * @param fuelLevel Unsubscribe to fuelLevel
+ * @param fuelLevelState Unsubscribe to fuelLevelState
+ * @param fuelRange Unsubscribe to fuelRange
+ * @param gps Unsubscribe to gps
+ * @param headLampStatus Unsubscribe to headLampStatus
+ * @param instantFuelConsumption Unsubscribe to instantFuelConsumption
+ * @param myKey Unsubscribe to myKey
+ * @param odometer Unsubscribe to odometer
+ * @param prndl Unsubscribe to prndl
+ * @param rpm Unsubscribe to rpm
+ * @param speed Unsubscribe to speed
+ * @param steeringWheelAngle Unsubscribe to steeringWheelAngle
+ * @param tirePressure Unsubscribe to tirePressure
+ * @param turnSignal Unsubscribe to turnSignal
+ * @param wiperStatus Unsubscribe to wiperStatus
+ * @return A SDLUnsubscribeVehicleData object
+ */
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus: instead");
+
+/**
+ * Convenience init for unsubscribing from all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param externalTemperature - externalTemperature
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @return A SDLUnsubscribeVehicleData object
+ */
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus;
+
+/**
+ * See GearStatus
+ *
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *gearStatus;
+
+/**
+ * If true, unsubscribes from GPS
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *gps;
+
+/**
+ * If true, unsubscribes from Speed
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *speed;
+
+/**
+ * If true, unsubscribes from RPM
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *rpm;
+
+/**
+ * If true, unsubscribes from Fuel Level
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ * If true, unsubscribes from Fuel Level State
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelLevel_State __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ * If true, unsubscribes from Fuel Range
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *fuelRange;
+
+/**
+ * If true, unsubscribes from Instant Fuel Consumption
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *instantFuelConsumption;
+
+/**
+ * If true, unsubscribes from External Temperature
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *externalTemperature;
+
+/**
+ * See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
+ *
+ * @deprecated
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *prndl __deprecated_msg("use gearStatus instead on 7.0+ RPC version connections");
+
+/**
+ * If true, unsubscribes from Tire Pressure
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *tirePressure;
+
+/**
+ * If true, unsubscribes from Odometer
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *odometer;
+
+/**
+ * If true, unsubscribes from Belt Status
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *beltStatus;
+
+/**
+ * If true, unsubscribes from Body Information
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *bodyInformation;
+
+/**
+ * If true, unsubscribes from Device Status
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *deviceStatus;
+
+/**
+ * If true, unsubscribes from Driver Braking
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *driverBraking;
+
+/**
+ * See WindowStatus
+ *
+ * @since SDL 7.0
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *windowStatus;
+
+/**
+ * If true, unsubscribes from Wiper Status
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *wiperStatus;
+
+/**
+ * To indicate whether driver hands are off the steering wheel
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *handsOffSteering;
+
+/**
+ * If true, unsubscribes from Head Lamp Status
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *headLampStatus;
+
+/**
+ * If true, unsubscribes from Engine Oil Life
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineOilLife;
+
+/**
+ * If true, unsubscribes from Engine Torque
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *engineTorque;
+
+/**
+ * If true, unsubscribes from Acc Pedal Position
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *accPedalPosition;
+
+/**
+ * See StabilityControlsStatus
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *stabilityControlsStatus;
+
+/**
+ * If true, unsubscribes from Steering Wheel Angle data
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *steeringWheelAngle;
+
+/**
+ * If true, unsubscribes from eCallInfo
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *eCallInfo;
+
+/**
+ * If true, unsubscribes from Airbag Status
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *airbagStatus;
+
+/**
+ * If true, unsubscribes from Emergency Event
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *emergencyEvent;
+
+/**
+ * If true, unsubscribes from Cluster Mode Status
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *clusterModeStatus;
+
+/**
+ * If true, unsubscribes from My Key
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *myKey;
+
+/**
+ A boolean value. If true, unsubscribes to the Electronic Parking Brake Status
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *electronicParkBrakeStatus;
+
+/**
+ A boolean value. If true, unsubscribes to the Turn Signal
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *turnSignal;
+
+/**
+ A boolean value. If true, unsubscribes to the Cloud App Vehicle ID
+ */
+@property (strong, nonatomic, nullable) NSNumber<SDLBool> *cloudAppVehicleID;
+
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState A boolean value. If true, requests an unsubscribes of the OEM custom vehicle data item.
+
+ Added SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
+
+/**
+ Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item to unsubscribe for.
+ @return A boolean value indicating if an unsubscribe request will occur for the OEM custom vehicle data item.
+
+ Added SmartDeviceLink 6.0
+ */
+- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleData.m b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.m
new file mode 100644
index 000000000..217c23ce5
--- /dev/null
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.m
@@ -0,0 +1,353 @@
+// SDLUnsubscribeVehicleData.m
+//
+
+
+#import "SDLUnsubscribeVehicleData.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLUnsubscribeVehicleData
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameUnsubscribeVehicleData];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
+ self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) externalTemperature:@(externalTemperature) turnSignal:@(turnSignal) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accelerationPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) handsOffSteering:nil windowStatus:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.fuelLevel = @(fuelLevel);
+ self.fuelLevel_State = @(fuelLevelState);
+ self.prndl = @(prndl);
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.gps = gps;
+ self.speed = speed;
+ self.rpm = rpm;
+ self.instantFuelConsumption = instantFuelConsumption;
+ self.fuelRange = fuelRange;
+ self.externalTemperature = externalTemperature;
+ self.turnSignal = turnSignal;
+ self.gearStatus = gearStatus;
+ self.tirePressure = tirePressure;
+ self.odometer = odometer;
+ self.beltStatus = beltStatus;
+ self.bodyInformation = bodyInformation;
+ self.deviceStatus = deviceStatus;
+ self.driverBraking = driverBraking;
+ self.wiperStatus = wiperStatus;
+ self.headLampStatus = headLampStatus;
+ self.engineTorque = engineTorque;
+ self.accPedalPosition = accPedalPosition;
+ self.steeringWheelAngle = steeringWheelAngle;
+ self.engineOilLife = engineOilLife;
+ self.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ self.cloudAppVehicleID = cloudAppVehicleID;
+ self.stabilityControlsStatus = stabilityControlsStatus;
+ self.eCallInfo = eCallInfo;
+ self.airbagStatus = airbagStatus;
+ self.emergencyEvent = emergencyEvent;
+ self.clusterModeStatus = clusterModeStatus;
+ self.myKey = myKey;
+ self.handsOffSteering = handsOffSteering;
+ self.windowStatus = windowStatus;
+ return self;
+}
+
+- (void)setGearStatus:(nullable NSNumber<SDLBool> *)gearStatus {
+ [self.parameters sdl_setObject:gearStatus forName:SDLRPCParameterNameGearStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)gearStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGearStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setGps:(nullable NSNumber<SDLBool> *)gps {
+ [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
+}
+
+- (nullable NSNumber<SDLBool> *)gps {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSpeed:(nullable NSNumber<SDLBool> *)speed {
+ [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
+}
+
+- (nullable NSNumber<SDLBool> *)speed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil];
+}
+
+- (void)setRpm:(nullable NSNumber<SDLBool> *)rpm {
+ [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
+}
+
+- (nullable NSNumber<SDLBool> *)rpm {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel:(nullable NSNumber<SDLBool> *)fuelLevel {
+ [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelLevel {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelLevel_State:(nullable NSNumber<SDLBool> *)fuelLevel_State {
+ [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelLevel_State {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil];
+}
+
+- (void)setFuelRange:(nullable NSNumber<SDLBool> *)fuelRange {
+ [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
+}
+
+- (nullable NSNumber<SDLBool> *)fuelRange {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil];
+}
+
+- (void)setInstantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption {
+ [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
+}
+
+- (nullable NSNumber<SDLBool> *)instantFuelConsumption {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
+}
+
+- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
+ [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable NSNumber<SDLBool> *)externalTemperature {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil];
+}
+
+- (void)setPrndl:(nullable NSNumber<SDLBool> *)prndl {
+ [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
+}
+
+- (nullable NSNumber<SDLBool> *)prndl {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTirePressure:(nullable NSNumber<SDLBool> *)tirePressure {
+ [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
+}
+
+- (nullable NSNumber<SDLBool> *)tirePressure {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil];
+}
+
+- (void)setOdometer:(nullable NSNumber<SDLBool> *)odometer {
+ [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
+}
+
+- (nullable NSNumber<SDLBool> *)odometer {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBeltStatus:(nullable NSNumber<SDLBool> *)beltStatus {
+ [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)beltStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setBodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation {
+ [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
+}
+
+- (nullable NSNumber<SDLBool> *)bodyInformation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDeviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus {
+ [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)deviceStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDriverBraking:(nullable NSNumber<SDLBool> *)driverBraking {
+ [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
+}
+
+- (nullable NSNumber<SDLBool> *)driverBraking {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil];
+}
+
+- (void)setWiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus {
+ [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)wiperStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setHandsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering {
+ [self.parameters sdl_setObject:handsOffSteering forName:SDLRPCParameterNameHandsOffSteering];
+}
+
+- (nullable NSNumber<SDLBool> *)handsOffSteering {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:NSNumber.class error:&error];
+}
+
+- (void)setHeadLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus {
+ [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)headLampStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife {
+ [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
+}
+
+- (nullable NSNumber<SDLBool> *)engineOilLife {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEngineTorque:(nullable NSNumber<SDLBool> *)engineTorque {
+ [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
+}
+
+- (nullable NSNumber<SDLBool> *)engineTorque {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAccPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition {
+ [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
+}
+
+- (nullable NSNumber<SDLBool> *)accPedalPosition {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSteeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle {
+ [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
+}
+
+- (nullable NSNumber<SDLBool> *)steeringWheelAngle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil];
+}
+
+- (void)setECallInfo:(nullable NSNumber<SDLBool> *)eCallInfo {
+ [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
+}
+
+- (nullable NSNumber<SDLBool> *)eCallInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil];
+}
+
+- (void)setAirbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus {
+ [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)airbagStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setEmergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent {
+ [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
+}
+
+- (nullable NSNumber<SDLBool> *)emergencyEvent {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil];
+}
+
+- (void)setClusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus {
+ [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)clusterModeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setMyKey:(nullable NSNumber<SDLBool> *)myKey {
+ [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
+}
+
+- (nullable NSNumber<SDLBool> *)myKey {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil];
+}
+
+- (void)setElectronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
+ [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)electronicParkBrakeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTurnSignal:(nullable NSNumber<SDLBool> *)turnSignal {
+ [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
+}
+
+- (nullable NSNumber<SDLBool> *)turnSignal {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil];
+}
+
+- (void)setCloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable NSNumber<SDLBool> *)cloudAppVehicleID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil];
+}
+
+- (void)setStabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus {
+ [self.parameters sdl_setObject:stabilityControlsStatus forName:SDLRPCParameterNameStabilityControlsStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)stabilityControlsStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStabilityControlsStatus ofClass:NSNumber.class error:nil];
+}
+
+- (void)setWindowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ [self.parameters sdl_setObject:windowStatus forName:SDLRPCParameterNameWindowStatus];
+}
+
+- (nullable NSNumber<SDLBool> *)windowStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowStatus ofClass:NSNumber.class error:&error];
+}
+
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(BOOL)vehicleDataState {
+ [self.parameters sdl_setObject:@(vehicleDataState) forName:vehicleDataName];
+}
+
+- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h
new file mode 100644
index 000000000..cbc79afc3
--- /dev/null
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h
@@ -0,0 +1,305 @@
+// SDLUnsubscribeVehicleDataResponse.h
+//
+
+#import "SDLRPCResponse.h"
+
+@class SDLVehicleDataResult;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Response to UnsubscribeVehicleData
+
+ since SmartDeviceLink 2.0
+ */
+@interface SDLUnsubscribeVehicleDataResponse : SDLRPCResponse
+
+/**
+ * Convenience init for setting all possible values on vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param externalTemperature - externalTemperature
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModes - clusterModes
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @return A SDLUnsubscribeVehicleDataResponse object
+ */
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus;
+
+/**
+ * See GearStatus
+ *
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *gearStatus;
+
+/**
+ The result of requesting to unsubscribe to the GPSData.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *gps;
+
+/**
+ The result of requesting to unsubscribe to the vehicle speed in kilometers per hour.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *speed;
+
+/**
+ The result of requesting to unsubscribe to the number of revolutions per minute of the engine.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *rpm;
+
+/**
+ The result of requesting to unsubscribe to the fuel level in the tank (percentage)
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ The result of requesting to unsubscribe to the fuel level state.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelLevel_State __deprecated_msg("use fuelRange instead on 7.0+ RPC version connections");
+
+/**
+ The result of requesting to unsubscribe to the fuel range.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *fuelRange;
+
+/**
+ The result of requesting to unsubscribe to the instantaneous fuel consumption in microlitres.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *instantFuelConsumption;
+
+/**
+ The result of requesting to unsubscribe to the external temperature in degrees celsius.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *externalTemperature;
+
+/**
+ * See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
+ *
+ * @deprecated
+ * @since SDL 7.0
+*/
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *prndl __deprecated_msg("use gearStatus instead on 7.0+ RPC version connections");
+
+/**
+ The result of requesting to unsubscribe to the tireStatus.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *tirePressure;
+
+/**
+ The result of requesting to unsubscribe to the odometer in km.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *odometer;
+
+/**
+ The result of requesting to unsubscribe to the status of the seat belts.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *beltStatus;
+
+/**
+ The result of requesting to unsubscribe to the body information including power modes.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *bodyInformation;
+
+/**
+ The result of requesting to unsubscribe to the device status including signal and battery strength.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *deviceStatus;
+
+/**
+ The result of requesting to unsubscribe to the status of the brake pedal.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *driverBraking;
+
+/**
+ * See WindowStatus
+ *
+ * @since SDL 7.0
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *windowStatus;
+
+/**
+ The result of requesting to unsubscribe to the status of the wipers.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *wiperStatus;
+
+/**
+ The result of requesting to unsubscribe from the status of driver hands are off the steering wheel
+ */
+@property (nullable, strong, nonatomic) SDLVehicleDataResult *handsOffSteering;
+
+/**
+ The result of requesting to unsubscribe to the status of the head lamps.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *headLampStatus;
+
+/**
+ The result of requesting to unsubscribe to the estimated percentage of remaining oil life of the engine.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineOilLife;
+
+/**
+ The result of requesting to unsubscribe to the torque value for engine (in Nm) on non-diesel variants.
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *engineTorque;
+
+/**
+ The result of requesting to unsubscribe to the accelerator pedal position (percentage depressed)
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *accPedalPosition;
+
+/**
+ See StabilityControlsStatus
+ */
+@property (nullable, strong, nonatomic) SDLVehicleDataResult *stabilityControlsStatus;
+
+/**
+ The result of requesting to unsubscribe to the current angle of the steering wheel (in deg)
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *steeringWheelAngle;
+
+/**
+ The result of requesting to unsubscribe to the emergency call info
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *eCallInfo;
+
+/**
+ The result of requesting to unsubscribe to the airbag status
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *airbagStatus;
+
+/**
+ The result of requesting to unsubscribe to the emergency event
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *emergencyEvent;
+
+/**
+ The result of requesting to unsubscribe to the cluster modes
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *clusterModes;
+
+/**
+ The result of requesting to unsubscribe to the myKey status
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *myKey;
+
+/**
+ The result of requesting to unsubscribe to the electronic parking brake status
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *electronicParkBrakeStatus;
+
+/**
+ The result of requesting to unsubscribe to the turn signal
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *turnSignal;
+
+/**
+ The result of requesting to unsubscribe to the cloud app vehicle id
+
+ Optional
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *cloudAppVehicleID;
+
+/**
+ Sets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @param vehicleDataState SDLVehicleDataResult object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState NS_SWIFT_NAME(setOEMCustomVehicleData(name:state:));
+
+/**
+ Gets the OEM custom vehicle data state for any given OEM custom vehicle data name.
+
+ @param vehicleDataName The name of the OEM custom vehicle data item.
+ @return SDLVehicleDataResult object containing custom data type and result code information.
+
+ Added SmartDeviceLink 6.0
+ */
+- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m
new file mode 100644
index 000000000..3a44257e1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m
@@ -0,0 +1,342 @@
+// SDLUnsubscribeVehicleDataResponse.m
+//
+
+
+#import "SDLUnsubscribeVehicleDataResponse.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLVehicleDataResult.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLUnsubscribeVehicleDataResponse
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (instancetype)init {
+ self = [super initWithName:SDLRPCFunctionNameUnsubscribeVehicleData];
+ if (!self) {
+ return nil;
+ }
+ return self;
+}
+#pragma clang diagnostic pop
+
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.gps = gps;
+ self.speed = speed;
+ self.rpm = rpm;
+ self.instantFuelConsumption = instantFuelConsumption;
+ self.fuelRange = fuelRange;
+ self.externalTemperature = externalTemperature;
+ self.turnSignal = turnSignal;
+ self.gearStatus = gearStatus;
+ self.tirePressure = tirePressure;
+ self.odometer = odometer;
+ self.beltStatus = beltStatus;
+ self.bodyInformation = bodyInformation;
+ self.deviceStatus = deviceStatus;
+ self.driverBraking = driverBraking;
+ self.wiperStatus = wiperStatus;
+ self.headLampStatus = headLampStatus;
+ self.engineTorque = engineTorque;
+ self.accPedalPosition = accPedalPosition;
+ self.steeringWheelAngle = steeringWheelAngle;
+ self.engineOilLife = engineOilLife;
+ self.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ self.cloudAppVehicleID = cloudAppVehicleID;
+ self.stabilityControlsStatus = stabilityControlsStatus;
+ self.eCallInfo = eCallInfo;
+ self.airbagStatus = airbagStatus;
+ self.emergencyEvent = emergencyEvent;
+ self.clusterModes = clusterModes;
+ self.myKey = myKey;
+ self.handsOffSteering = handsOffSteering;
+ self.windowStatus = windowStatus;
+ return self;
+}
+
+- (void)setGearStatus:(nullable SDLVehicleDataResult *)gearStatus {
+ [self.parameters sdl_setObject:gearStatus forName:SDLRPCParameterNameGearStatus];
+}
+
+- (nullable SDLVehicleDataResult *)gearStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGearStatus ofClass:SDLVehicleDataResult.class error:&error];
+}
+
+- (void)setGps:(nullable SDLVehicleDataResult *)gps {
+ [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS];
+}
+
+- (nullable SDLVehicleDataResult *)gps {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setSpeed:(nullable SDLVehicleDataResult *)speed {
+ [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed];
+}
+
+- (nullable SDLVehicleDataResult *)speed {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setRpm:(nullable SDLVehicleDataResult *)rpm {
+ [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM];
+}
+
+- (nullable SDLVehicleDataResult *)rpm {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setFuelLevel:(nullable SDLVehicleDataResult *)fuelLevel {
+ [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel];
+}
+
+- (nullable SDLVehicleDataResult *)fuelLevel {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setFuelLevel_State:(nullable SDLVehicleDataResult *)fuelLevel_State {
+ [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState];
+}
+
+- (nullable SDLVehicleDataResult *)fuelLevel_State {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setFuelRange:(nullable SDLVehicleDataResult *)fuelRange {
+ [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange];
+}
+
+- (nullable SDLVehicleDataResult *)fuelRange {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setInstantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption {
+ [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption];
+}
+
+- (nullable SDLVehicleDataResult *)instantFuelConsumption {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature {
+ [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable SDLVehicleDataResult *)externalTemperature {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setPrndl:(nullable SDLVehicleDataResult *)prndl {
+ [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL];
+}
+
+- (nullable SDLVehicleDataResult *)prndl {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setTirePressure:(nullable SDLVehicleDataResult *)tirePressure {
+ [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure];
+}
+
+- (nullable SDLVehicleDataResult *)tirePressure {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setOdometer:(nullable SDLVehicleDataResult *)odometer {
+ [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer];
+}
+
+- (nullable SDLVehicleDataResult *)odometer {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setBeltStatus:(nullable SDLVehicleDataResult *)beltStatus {
+ [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus];
+}
+
+- (nullable SDLVehicleDataResult *)beltStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setBodyInformation:(nullable SDLVehicleDataResult *)bodyInformation {
+ [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation];
+}
+
+- (nullable SDLVehicleDataResult *)bodyInformation {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setDeviceStatus:(nullable SDLVehicleDataResult *)deviceStatus {
+ [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus];
+}
+
+- (nullable SDLVehicleDataResult *)deviceStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setDriverBraking:(nullable SDLVehicleDataResult *)driverBraking {
+ [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking];
+}
+
+- (nullable SDLVehicleDataResult *)driverBraking {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setWindowStatus:(nullable SDLVehicleDataResult *)windowStatus {
+ [self.parameters sdl_setObject:windowStatus forName:SDLRPCParameterNameWindowStatus];
+}
+
+- (nullable SDLVehicleDataResult *)windowStatus {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWindowStatus ofClass:SDLVehicleDataResult.class error:&error];
+}
+
+- (void)setWiperStatus:(nullable SDLVehicleDataResult *)wiperStatus {
+ [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus];
+}
+
+- (nullable SDLVehicleDataResult *)wiperStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setHandsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering {
+ [self.parameters sdl_setObject:handsOffSteering forName:SDLRPCParameterNameHandsOffSteering];
+}
+
+- (nullable SDLVehicleDataResult *)handsOffSteering {
+ NSError *error = nil;
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:SDLVehicleDataResult.class error:&error];
+}
+
+- (void)setHeadLampStatus:(nullable SDLVehicleDataResult *)headLampStatus {
+ [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus];
+}
+
+- (nullable SDLVehicleDataResult *)headLampStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setEngineOilLife:(nullable SDLVehicleDataResult *)engineOilLife {
+ [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife];
+}
+
+- (nullable SDLVehicleDataResult *)engineOilLife {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setEngineTorque:(nullable SDLVehicleDataResult *)engineTorque {
+ [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque];
+}
+
+- (nullable SDLVehicleDataResult *)engineTorque {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setAccPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition {
+ [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition];
+}
+
+- (nullable SDLVehicleDataResult *)accPedalPosition {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setSteeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle {
+ [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle];
+}
+
+- (nullable SDLVehicleDataResult *)steeringWheelAngle {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setECallInfo:(nullable SDLVehicleDataResult *)eCallInfo {
+ [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo];
+}
+
+- (nullable SDLVehicleDataResult *)eCallInfo {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setAirbagStatus:(nullable SDLVehicleDataResult *)airbagStatus {
+ [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus];
+}
+
+- (nullable SDLVehicleDataResult *)airbagStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setEmergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent {
+ [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent];
+}
+
+- (nullable SDLVehicleDataResult *)emergencyEvent {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setClusterModes:(nullable SDLVehicleDataResult *)clusterModes {
+ [self.parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes];
+}
+
+- (nullable SDLVehicleDataResult *)clusterModes {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setMyKey:(nullable SDLVehicleDataResult *)myKey {
+ [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey];
+}
+
+- (nullable SDLVehicleDataResult *)myKey {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setElectronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
+ [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus];
+}
+
+- (nullable SDLVehicleDataResult *)electronicParkBrakeStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setTurnSignal:(nullable SDLVehicleDataResult *)turnSignal {
+ [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal];
+}
+
+- (nullable SDLVehicleDataResult *)turnSignal {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID];
+}
+
+- (nullable SDLVehicleDataResult *)cloudAppVehicleID {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setStabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus {
+ [self.parameters sdl_setObject:stabilityControlsStatus forName:SDLRPCParameterNameStabilityControlsStatus];
+}
+
+- (nullable SDLVehicleDataResult *)stabilityControlsStatus {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameStabilityControlsStatus ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+- (void)setOEMCustomVehicleData:(NSString *)vehicleDataName withVehicleDataState:(SDLVehicleDataResult *)vehicleDataState {
+ [self.parameters sdl_setObject:vehicleDataState forName:vehicleDataName];
+}
+
+- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName {
+ return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLUnsubscribeWayPoints.h b/SmartDeviceLink/public/SDLUnsubscribeWayPoints.h
index 4b67ac277..4b67ac277 100644
--- a/SmartDeviceLink/SDLUnsubscribeWayPoints.h
+++ b/SmartDeviceLink/public/SDLUnsubscribeWayPoints.h
diff --git a/SmartDeviceLink/SDLUnsubscribeWayPoints.m b/SmartDeviceLink/public/SDLUnsubscribeWayPoints.m
index 30b3e2c07..30b3e2c07 100644
--- a/SmartDeviceLink/SDLUnsubscribeWayPoints.m
+++ b/SmartDeviceLink/public/SDLUnsubscribeWayPoints.m
diff --git a/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.h b/SmartDeviceLink/public/SDLUnsubscribeWayPointsResponse.h
index 304930a4d..304930a4d 100644
--- a/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.h
+++ b/SmartDeviceLink/public/SDLUnsubscribeWayPointsResponse.h
diff --git a/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.m b/SmartDeviceLink/public/SDLUnsubscribeWayPointsResponse.m
index 7eb3e6369..7eb3e6369 100644
--- a/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.m
+++ b/SmartDeviceLink/public/SDLUnsubscribeWayPointsResponse.m
diff --git a/SmartDeviceLink/public/SDLUpdateMode.h b/SmartDeviceLink/public/SDLUpdateMode.h
new file mode 100644
index 000000000..fd9cafb2e
--- /dev/null
+++ b/SmartDeviceLink/public/SDLUpdateMode.h
@@ -0,0 +1,37 @@
+// SDLUpdateMode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Specifies what function should be performed on the media clock/counter. Used in SetMediaClockTimer.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLUpdateMode NS_TYPED_ENUM;
+
+/**
+ * Starts the media clock timer counting upward, in increments of 1 second.
+ */
+extern SDLUpdateMode const SDLUpdateModeCountUp;
+
+/**
+ * Starts the media clock timer counting downward, in increments of 1 second.
+ */
+extern SDLUpdateMode const SDLUpdateModeCountDown;
+
+/**
+ * Pauses the media clock timer.
+ */
+extern SDLUpdateMode const SDLUpdateModePause;
+
+/**
+ * Resumes the media clock timer. The timer resumes counting in whatever mode was in effect before pausing (i.e. COUNTUP or COUNTDOWN).
+ */
+extern SDLUpdateMode const SDLUpdateModeResume;
+
+/**
+ * Clear the media clock timer.
+ */
+extern SDLUpdateMode const SDLUpdateModeClear;
diff --git a/SmartDeviceLink/SDLUpdateMode.m b/SmartDeviceLink/public/SDLUpdateMode.m
index fd527f24e..fd527f24e 100644
--- a/SmartDeviceLink/SDLUpdateMode.m
+++ b/SmartDeviceLink/public/SDLUpdateMode.m
diff --git a/SmartDeviceLink/SDLUpdateTurnList.h b/SmartDeviceLink/public/SDLUpdateTurnList.h
index 0133e0e2f..0133e0e2f 100644
--- a/SmartDeviceLink/SDLUpdateTurnList.h
+++ b/SmartDeviceLink/public/SDLUpdateTurnList.h
diff --git a/SmartDeviceLink/SDLUpdateTurnList.m b/SmartDeviceLink/public/SDLUpdateTurnList.m
index ed7d6328a..ed7d6328a 100644
--- a/SmartDeviceLink/SDLUpdateTurnList.m
+++ b/SmartDeviceLink/public/SDLUpdateTurnList.m
diff --git a/SmartDeviceLink/SDLUpdateTurnListResponse.h b/SmartDeviceLink/public/SDLUpdateTurnListResponse.h
index cc05e2ec7..cc05e2ec7 100644
--- a/SmartDeviceLink/SDLUpdateTurnListResponse.h
+++ b/SmartDeviceLink/public/SDLUpdateTurnListResponse.h
diff --git a/SmartDeviceLink/SDLUpdateTurnListResponse.m b/SmartDeviceLink/public/SDLUpdateTurnListResponse.m
index 5231609d7..5231609d7 100644
--- a/SmartDeviceLink/SDLUpdateTurnListResponse.m
+++ b/SmartDeviceLink/public/SDLUpdateTurnListResponse.m
diff --git a/SmartDeviceLink/public/SDLVehicleDataActiveStatus.h b/SmartDeviceLink/public/SDLVehicleDataActiveStatus.h
new file mode 100644
index 000000000..bfcb31c5b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVehicleDataActiveStatus.h
@@ -0,0 +1,35 @@
+// SDLVehicleDataActiveStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Vehicle Data Activity Status. Used in nothing.
+ */
+typedef SDLEnum SDLVehicleDataActiveStatus NS_TYPED_ENUM;
+
+/**
+ Inactive not confirmed
+ */
+extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusInactiveNotConfirmed;
+
+/**
+ Inactive confirmed
+ */
+extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusInactiveConfirmed;
+
+/**
+ Active not confirmed
+ */
+extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusActiveNotConfirmed;
+
+/**
+ Active confirmed
+ */
+extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusActiveConfirmed;
+
+/**
+ Fault
+ */
+extern SDLVehicleDataActiveStatus const SDLVehicleDataActiveStatusFault;
diff --git a/SmartDeviceLink/SDLVehicleDataActiveStatus.m b/SmartDeviceLink/public/SDLVehicleDataActiveStatus.m
index 99450ca41..99450ca41 100644
--- a/SmartDeviceLink/SDLVehicleDataActiveStatus.m
+++ b/SmartDeviceLink/public/SDLVehicleDataActiveStatus.m
diff --git a/SmartDeviceLink/public/SDLVehicleDataEventStatus.h b/SmartDeviceLink/public/SDLVehicleDataEventStatus.h
new file mode 100644
index 000000000..7a453e964
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVehicleDataEventStatus.h
@@ -0,0 +1,37 @@
+// SDLVehicleDataEventStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of a vehicle data event; e.g. a seat belt event status. Used in retrieving vehicle data.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLVehicleDataEventStatus NS_TYPED_ENUM;
+
+/**
+ No event
+ */
+extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusNoEvent;
+
+/**
+ The event is a No status
+ */
+extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusNo;
+
+/**
+ The event is a Yes status
+ */
+extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusYes;
+
+/**
+ Vehicle data event is not supported
+ */
+extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusNotSupported;
+
+/**
+ The event is a Fault status
+ */
+extern SDLVehicleDataEventStatus const SDLVehicleDataEventStatusFault;
diff --git a/SmartDeviceLink/SDLVehicleDataEventStatus.m b/SmartDeviceLink/public/SDLVehicleDataEventStatus.m
index 9c84a4c29..9c84a4c29 100644
--- a/SmartDeviceLink/SDLVehicleDataEventStatus.m
+++ b/SmartDeviceLink/public/SDLVehicleDataEventStatus.m
diff --git a/SmartDeviceLink/public/SDLVehicleDataNotificationStatus.h b/SmartDeviceLink/public/SDLVehicleDataNotificationStatus.h
new file mode 100644
index 000000000..40e28ab8d
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVehicleDataNotificationStatus.h
@@ -0,0 +1,32 @@
+// SDLVehicleDataNotificationStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of a vehicle data notification. Used in ECallInfo
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLVehicleDataNotificationStatus NS_TYPED_ENUM;
+
+/**
+ The vehicle data notification status is not supported
+ */
+extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusNotSupported;
+
+/**
+ The vehicle data notification status is normal
+ */
+extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusNormal;
+
+/**
+ The vehicle data notification status is active
+ */
+extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusActive;
+
+/**
+ The vehicle data notification status is not used
+ */
+extern SDLVehicleDataNotificationStatus const SDLVehicleDataNotificationStatusNotUsed;
diff --git a/SmartDeviceLink/SDLVehicleDataNotificationStatus.m b/SmartDeviceLink/public/SDLVehicleDataNotificationStatus.m
index 6e3d75020..6e3d75020 100644
--- a/SmartDeviceLink/SDLVehicleDataNotificationStatus.m
+++ b/SmartDeviceLink/public/SDLVehicleDataNotificationStatus.m
diff --git a/SmartDeviceLink/SDLVehicleDataResult.h b/SmartDeviceLink/public/SDLVehicleDataResult.h
index deeb325a9..deeb325a9 100644
--- a/SmartDeviceLink/SDLVehicleDataResult.h
+++ b/SmartDeviceLink/public/SDLVehicleDataResult.h
diff --git a/SmartDeviceLink/SDLVehicleDataResult.m b/SmartDeviceLink/public/SDLVehicleDataResult.m
index db6995051..db6995051 100644
--- a/SmartDeviceLink/SDLVehicleDataResult.m
+++ b/SmartDeviceLink/public/SDLVehicleDataResult.m
diff --git a/SmartDeviceLink/public/SDLVehicleDataResultCode.h b/SmartDeviceLink/public/SDLVehicleDataResultCode.h
new file mode 100644
index 000000000..9dd6f730f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVehicleDataResultCode.h
@@ -0,0 +1,55 @@
+// SDLVehicleDataResultCode.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ Vehicle Data Result Code. Used in DIDResult.
+ */
+typedef SDLEnum SDLVehicleDataResultCode NS_TYPED_ENUM;
+
+/**
+ Individual vehicle data item / DTC / DID request or subscription successful
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeSuccess;
+
+/**
+ DTC / DID request successful, however, not all active DTCs or full contents of DID location available
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeTruncatedData;
+
+/**
+ This vehicle data item is not allowed for this app by SDL
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeDisallowed;
+
+/**
+ The user has not granted access to this type of vehicle data item at this time
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeUserDisallowed;
+
+/**
+ The ECU ID referenced is not a valid ID on the bus / system
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeInvalidId;
+
+/**
+ The requested vehicle data item / DTC / DID is not currently available or responding on the bus / system
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeVehicleDataNotAvailable;
+
+/**
+ The vehicle data item is already subscribed
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeDataAlreadySubscribed;
+
+/**
+ The vehicle data item cannot be unsubscribed because it is not currently subscribed
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeDataNotSubscribed;
+
+/**
+ The request for this item is ignored because it is already in progress
+ */
+extern SDLVehicleDataResultCode const SDLVehicleDataResultCodeIgnored;
diff --git a/SmartDeviceLink/SDLVehicleDataResultCode.m b/SmartDeviceLink/public/SDLVehicleDataResultCode.m
index cc32d3bdd..cc32d3bdd 100644
--- a/SmartDeviceLink/SDLVehicleDataResultCode.m
+++ b/SmartDeviceLink/public/SDLVehicleDataResultCode.m
diff --git a/SmartDeviceLink/public/SDLVehicleDataStatus.h b/SmartDeviceLink/public/SDLVehicleDataStatus.h
new file mode 100644
index 000000000..16e32700a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVehicleDataStatus.h
@@ -0,0 +1,27 @@
+// SDLVehicleDataStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of a binary vehicle data item. Used in MyKey.
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLVehicleDataStatus NS_TYPED_ENUM;
+
+/**
+ No data avaliable
+ */
+extern SDLVehicleDataStatus const SDLVehicleDataStatusNoDataExists;
+
+/**
+ The status is Off
+ */
+extern SDLVehicleDataStatus const SDLVehicleDataStatusOff;
+
+/**
+ The status is On
+ */
+extern SDLVehicleDataStatus const SDLVehicleDataStatusOn;
diff --git a/SmartDeviceLink/SDLVehicleDataStatus.m b/SmartDeviceLink/public/SDLVehicleDataStatus.m
index 3c398ce44..3c398ce44 100644
--- a/SmartDeviceLink/SDLVehicleDataStatus.m
+++ b/SmartDeviceLink/public/SDLVehicleDataStatus.m
diff --git a/SmartDeviceLink/public/SDLVehicleDataType.h b/SmartDeviceLink/public/SDLVehicleDataType.h
new file mode 100644
index 000000000..3426695d0
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVehicleDataType.h
@@ -0,0 +1,196 @@
+// SDLVehicleDataType.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Defines the vehicle data types that can be published and/or subscribed to using SDLSubscribeVehicleData. Used in VehicleDataResult
+ */
+typedef SDLEnum SDLVehicleDataType NS_TYPED_ENUM;
+
+/**
+ * Vehicle Gear Status data
+ * @since SDL 7.0
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeGearStatus;
+
+/**
+ GPS vehicle data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeGPS;
+
+/**
+ Vehicle speed data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeSpeed;
+
+/**
+ vehicle data StabilityControlsStatus to know if stability controls like ESC, Traction Control etc. are active.
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeStabilityControlsStatus;
+
+/**
+ Vehicle RPM data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeRPM;
+
+/**
+ Vehicle fuel level data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeFuelLevel __deprecated_msg("use SDLVehicleDataTypeFuelRange on RPC 7.0+ connections");
+
+/**
+ Vehicle fuel level state data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeFuelLevelState __deprecated_msg("use SDLVehicleDataTypeFuelRange on RPC 7.0+ connections");
+
+/**
+ Vehicle fuel consumption data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeFuelConsumption;
+
+/**
+ Vehicle external temperature data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeExternalTemperature;
+
+/**
+ Vehicle VIN data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeVIN;
+
+/**
+ Vehicle PRNDL data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypePRNDL __deprecated_msg("use SDLVehicleDataTypeGearStatus instead on 7.0+ RPC version connections");
+
+/**
+ Vehicle tire pressure data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeTirePressure;
+
+/**
+ Vehicle odometer data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeOdometer;
+
+/**
+ Vehicle belt status data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeBeltStatus;
+
+/**
+ Vehicle body info data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeBodyInfo;
+
+/**
+ Vehicle device status data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeDeviceStatus;
+
+/**
+ Vehicle emergency call info data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeECallInfo;
+
+/**
+ Vehicle fuel range data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeFuelRange;
+
+/**
+ Vehicle airbag status data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeAirbagStatus;
+
+/**
+ Vehicle emergency event info
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeEmergencyEvent;
+
+/**
+ Vehicle cluster mode status data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeClusterModeStatus;
+
+/**
+ Vehicle MyKey data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeMyKey;
+
+/**
+ Vehicle braking data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeBraking;
+
+/**
+ Vehicle wiper status data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeWiperStatus;
+
+/**
+ To indicate whether driver hands are off the steering wheel
+ Added in SDL 7.0.0
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeHandsOffSteering;
+
+/**
+ Vehicle headlamp status
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeHeadlampStatus;
+
+/**
+ Vehicle battery voltage data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeBatteryVoltage;
+
+/**
+ Vehicle engine oil life data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeEngineOilLife;
+
+/**
+ Vehicle engine torque data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeEngineTorque;
+
+/**
+ Vehicle accleration pedal data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeAccelerationPedal;
+
+/**
+ Vehicle steering wheel data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeSteeringWheel;
+
+/**
+ Vehicle electronic parking brake status data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeElectronicParkBrakeStatus;
+
+/**
+ Vehicle turn signal data
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeTurnSignal;
+
+/**
+ The cloud application vehicle id. Used by cloud apps to identify a head unit
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID;
+
+/**
+ Custom OEM Vehicle data
+
+ Added in SDL 6.0
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeOEMVehicleDataType;
+
+/**
+ * Describes the status of a window of a door/liftgate etc.
+ *
+ * @since SDL 7.0
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeWindowStatus;
diff --git a/SmartDeviceLink/public/SDLVehicleDataType.m b/SmartDeviceLink/public/SDLVehicleDataType.m
new file mode 100644
index 000000000..90bf95888
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVehicleDataType.m
@@ -0,0 +1,42 @@
+// SDLVehicleDataType.m
+//
+
+
+#import "SDLVehicleDataType.h"
+
+SDLVehicleDataType const SDLVehicleDataTypeAccelerationPedal = @"VEHICLEDATA_ACCPEDAL";
+SDLVehicleDataType const SDLVehicleDataTypeAirbagStatus = @"VEHICLEDATA_AIRBAGSTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeBatteryVoltage = @"VEHICLEDATA_BATTVOLTAGE";
+SDLVehicleDataType const SDLVehicleDataTypeBeltStatus = @"VEHICLEDATA_BELTSTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeBodyInfo = @"VEHICLEDATA_BODYINFO";
+SDLVehicleDataType const SDLVehicleDataTypeBraking = @"VEHICLEDATA_BRAKING";
+SDLVehicleDataType const SDLVehicleDataTypeCloudAppVehicleID = @"VEHICLEDATA_CLOUDAPPVEHICLEID";
+SDLVehicleDataType const SDLVehicleDataTypeClusterModeStatus = @"VEHICLEDATA_CLUSTERMODESTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeDeviceStatus = @"VEHICLEDATA_DEVICESTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeECallInfo = @"VEHICLEDATA_ECALLINFO";
+SDLVehicleDataType const SDLVehicleDataTypeElectronicParkBrakeStatus = @"VEHICLEDATA_ELECTRONICPARKBRAKESTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeEmergencyEvent = @"VEHICLEDATA_EMERGENCYEVENT";
+SDLVehicleDataType const SDLVehicleDataTypeEngineOilLife = @"VEHICLEDATA_ENGINEOILLIFE";
+SDLVehicleDataType const SDLVehicleDataTypeEngineTorque = @"VEHICLEDATA_ENGINETORQUE";
+SDLVehicleDataType const SDLVehicleDataTypeExternalTemperature = @"VEHICLEDATA_EXTERNTEMP";
+SDLVehicleDataType const SDLVehicleDataTypeFuelConsumption = @"VEHICLEDATA_FUELCONSUMPTION";
+SDLVehicleDataType const SDLVehicleDataTypeFuelLevel = @"VEHICLEDATA_FUELLEVEL";
+SDLVehicleDataType const SDLVehicleDataTypeFuelLevelState = @"VEHICLEDATA_FUELLEVEL_STATE";
+SDLVehicleDataType const SDLVehicleDataTypeFuelRange = @"VEHICLEDATA_FUELRANGE";
+SDLVehicleDataType const SDLVehicleDataTypeGPS = @"VEHICLEDATA_GPS";
+SDLVehicleDataType const SDLVehicleDataTypeGearStatus = @"VEHICLEDATA_GEARSTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeHandsOffSteering = @"VEHICLEDATA_HANDSOFFSTEERING";
+SDLVehicleDataType const SDLVehicleDataTypeHeadlampStatus = @"VEHICLEDATA_HEADLAMPSTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeMyKey = @"VEHICLEDATA_MYKEY";
+SDLVehicleDataType const SDLVehicleDataTypeOEMVehicleDataType = @"VEHICLEDATA_OEM_CUSTOM_DATA";
+SDLVehicleDataType const SDLVehicleDataTypeOdometer = @"VEHICLEDATA_ODOMETER";
+SDLVehicleDataType const SDLVehicleDataTypePRNDL = @"VEHICLEDATA_PRNDL";
+SDLVehicleDataType const SDLVehicleDataTypeRPM = @"VEHICLEDATA_RPM";
+SDLVehicleDataType const SDLVehicleDataTypeSpeed = @"VEHICLEDATA_SPEED";
+SDLVehicleDataType const SDLVehicleDataTypeStabilityControlsStatus = @"VEHICLEDATA_STABILITYCONTROLSSTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeSteeringWheel = @"VEHICLEDATA_STEERINGWHEEL";
+SDLVehicleDataType const SDLVehicleDataTypeTirePressure = @"VEHICLEDATA_TIREPRESSURE";
+SDLVehicleDataType const SDLVehicleDataTypeTurnSignal = @"VEHICLEDATA_TURNSIGNAL";
+SDLVehicleDataType const SDLVehicleDataTypeVIN = @"VEHICLEDATA_VIN";
+SDLVehicleDataType const SDLVehicleDataTypeWindowStatus = @"VEHICLEDATA_WINDOWSTATUS";
+SDLVehicleDataType const SDLVehicleDataTypeWiperStatus = @"VEHICLEDATA_WIPERSTATUS";
diff --git a/SmartDeviceLink/SDLVehicleType.h b/SmartDeviceLink/public/SDLVehicleType.h
index 0c9c100dc..0c9c100dc 100644
--- a/SmartDeviceLink/SDLVehicleType.h
+++ b/SmartDeviceLink/public/SDLVehicleType.h
diff --git a/SmartDeviceLink/SDLVehicleType.m b/SmartDeviceLink/public/SDLVehicleType.m
index 5f3df0700..5f3df0700 100644
--- a/SmartDeviceLink/SDLVehicleType.m
+++ b/SmartDeviceLink/public/SDLVehicleType.m
diff --git a/SmartDeviceLink/public/SDLVentilationMode.h b/SmartDeviceLink/public/SDLVentilationMode.h
new file mode 100644
index 000000000..ea47c5675
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVentilationMode.h
@@ -0,0 +1,31 @@
+//
+// SDLVentilationMode.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ The ventilation mode. Used in ClimateControlCapabilities
+ */
+typedef SDLEnum SDLVentilationMode NS_TYPED_ENUM;
+
+/**
+ The upper ventilation mode
+ */
+extern SDLVentilationMode const SDLVentilationModeUpper;
+
+/**
+ The lower ventilation mode
+ */
+extern SDLVentilationMode const SDLVentilationModeLower;
+
+/**
+ The both ventilation mode
+ */
+extern SDLVentilationMode const SDLVentilationModeBoth;
+
+/**
+ No ventilation mode
+ */
+extern SDLVentilationMode const SDLVentilationModeNone;
+
diff --git a/SmartDeviceLink/SDLVentilationMode.m b/SmartDeviceLink/public/SDLVentilationMode.m
index b4b26eef1..b4b26eef1 100644
--- a/SmartDeviceLink/SDLVentilationMode.m
+++ b/SmartDeviceLink/public/SDLVentilationMode.m
diff --git a/SmartDeviceLink/public/SDLVersion.h b/SmartDeviceLink/public/SDLVersion.h
new file mode 100644
index 000000000..1cd50510f
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVersion.h
@@ -0,0 +1,105 @@
+//
+// SDLVersion.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 2/19/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class SDLMsgVersion;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Specifies a major / minor / patch version number for semantic versioning purposes and comparisons
+@interface SDLVersion : NSObject <NSCopying>
+
+/// Major version (e.g. X.0.0)
+@property (nonatomic, assign) NSUInteger major;
+
+/// Minor version (e.g. 0.X.0)
+@property (nonatomic, assign) NSUInteger minor;
+
+/// Patch version (e.g. 0.0.X)
+@property (nonatomic, assign) NSUInteger patch;
+
+/// A String format of the current SDLVersion
+@property (nonatomic, copy, readonly) NSString *stringVersion;
+
+/// Convenience init
+///
+/// @param major Major version
+/// @param minor Minor version
+/// @param patch Patch version
+/// @return An SDLVersion object
+- (instancetype)initWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch;
+
+/// Convenience init
+///
+/// @param major Major version
+/// @param minor Minor version
+/// @param patch Patch version
+/// @return An SDLVersion object
++ (instancetype)versionWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch;
+
+/// Convenience init
+///
+/// @param versionString String representation of the version
+/// @return An SDLVersion object
+- (nullable instancetype)initWithString:(NSString *)versionString;
+
+/// Convenience init
+///
+/// @param versionString String representation of the version
+/// @return An SDLVersion object
++ (nullable instancetype)versionWithString:(NSString *)versionString;
+
+/// Convenience init to set version using SDLMsgVersion
+///
+/// @param sdlMsgVersion Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
+/// @return An SDLVersion object
+- (instancetype)initWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion;
+
+/// Convenience init to set version using SDLMsgVersion
+///
+/// @param sdlMsgVersion Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
+/// @return SDLVersion object
++ (instancetype)versionWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion;
+
+/// Compare two SDLVersions
+- (NSComparisonResult)compare:(SDLVersion *)otherVersion;
+
+/// Compare is less than
+///
+/// @param otherVersion SDLVersion Object
+/// @return BOOL
+- (BOOL)isLessThanVersion:(SDLVersion *)otherVersion;
+
+/// Compare is equal to
+///
+/// @param otherVersion SDLVersion Object
+/// @return BOOL
+- (BOOL)isEqualToVersion:(SDLVersion *)otherVersion;
+
+/// Compare is greater than
+///
+/// @param otherVersion SDLVersion Object
+/// @return BOOL
+- (BOOL)isGreaterThanVersion:(SDLVersion *)otherVersion;
+
+/// Compare is greater than or equal to
+///
+/// @param otherVersion SDLVersion Object
+/// @return BOOL
+- (BOOL)isGreaterThanOrEqualToVersion:(SDLVersion *)otherVersion;
+
+/// Compare is less than or equal to
+///
+/// @param otherVersion SDLVersion Object
+/// @return BOOL
+- (BOOL)isLessThanOrEqualToVersion:(SDLVersion *)otherVersion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLVersion.m b/SmartDeviceLink/public/SDLVersion.m
new file mode 100644
index 000000000..75ddd42f9
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVersion.m
@@ -0,0 +1,144 @@
+//
+// SDLVersion.m
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 2/19/19.
+// Copyright © 2019 smartdevicelink. All rights reserved.
+//
+
+#import "SDLVersion.h"
+
+#import "SDLMsgVersion.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLVersion
+
+#pragma mark - Initializers
+
+- (instancetype)initWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _major = major;
+ _minor = minor;
+ _patch = patch;
+
+ return self;
+}
+
++ (instancetype)versionWithMajor:(NSUInteger)major minor:(NSUInteger)minor patch:(NSUInteger)patch {
+ return [[self alloc] initWithMajor:major minor:minor patch:patch];
+}
+
+- (nullable instancetype)initWithString:(NSString *)versionString {
+ self = [super init];
+ if (!self) { return nil; }
+
+ NSArray<NSString *> *splitVersions = [versionString componentsSeparatedByString:@"."];
+ if (splitVersions.count != 3) {
+ NSAssert(splitVersions.count == 3, @"Splitting a version string must result in major, minor, and patch. The format must be 'X.X.X'");
+ return nil;
+ }
+
+ NSInteger majorInt = splitVersions[0].integerValue;
+ NSInteger minorInt = splitVersions[1].integerValue;
+ NSInteger patchInt = splitVersions[2].integerValue;
+
+ if (majorInt < 0 || minorInt < 0 || patchInt < 0) {
+ NSAssert(NO, @"Attempted to parse invalid SDLVersion: %@", splitVersions);
+ return nil;
+ }
+
+ _major = (NSUInteger)majorInt;
+ _minor = (NSUInteger)minorInt;
+ _patch = (NSUInteger)patchInt;
+
+ return self;
+}
+
++ (nullable instancetype)versionWithString:(NSString *)versionString {
+ return [[self alloc] initWithString:versionString];
+}
+
+- (instancetype)initWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion {
+ self = [super init];
+ if (!self) { return nil; }
+
+ _major = sdlMsgVersion.majorVersion.unsignedIntegerValue;
+ _minor = sdlMsgVersion.minorVersion.unsignedIntegerValue;
+ _patch = sdlMsgVersion.patchVersion.unsignedIntegerValue;
+
+ return self;
+}
+
++ (instancetype)versionWithSDLMsgVersion:(SDLMsgVersion *)sdlMsgVersion {
+ return [[self alloc] initWithSDLMsgVersion:sdlMsgVersion];
+}
+
+#pragma mark - Setters / Getters
+
+- (NSString *)stringVersion {
+ return [NSString stringWithFormat:@"%lu.%lu.%lu", (unsigned long)_major, (unsigned long)_minor, (unsigned long)_patch];
+}
+
+#pragma mark - Helper functions
+
+- (NSComparisonResult)compare:(SDLVersion *)otherVersion {
+ if (self.major > otherVersion.major) {
+ return NSOrderedDescending;
+ } else if ((self.major == otherVersion.major) && (self.minor > otherVersion.minor)) {
+ return NSOrderedDescending;
+ } else if ((self.major == otherVersion.major) && (self.minor == otherVersion.minor) && (self.patch > otherVersion.patch)) {
+ return NSOrderedDescending;
+ } else if ((self.major == otherVersion.major) && (self.minor == otherVersion.minor) && (self.patch == otherVersion.patch)) {
+ return NSOrderedSame;
+ }
+
+ return NSOrderedAscending;
+}
+
+- (BOOL)isLessThanVersion:(SDLVersion *)otherVersion {
+ return ([self compare:otherVersion] == NSOrderedAscending);
+}
+
+- (BOOL)isEqualToVersion:(SDLVersion *)otherVersion {
+ return ([self compare:otherVersion] == NSOrderedSame);
+}
+
+- (BOOL)isGreaterThanVersion:(SDLVersion *)otherVersion {
+ return ([self compare:otherVersion] == NSOrderedDescending);
+}
+
+- (BOOL)isGreaterThanOrEqualToVersion:(SDLVersion *)otherVersion {
+ return ([self isGreaterThanVersion:otherVersion] || [self isEqualToVersion:otherVersion]);
+}
+
+- (BOOL)isLessThanOrEqualToVersion:(SDLVersion *)otherVersion {
+ return ([self isLessThanVersion:otherVersion] || [self isEqualToVersion:otherVersion]);
+}
+
+#pragma mark - NSObject overrides
+
+- (BOOL)isEqual:(id)object {
+ if (object == nil) { return NO; }
+ if (![object isMemberOfClass:self.class]) { return NO; }
+
+ SDLVersion *otherVersion = (SDLVersion *)object;
+
+ return [self isEqualToVersion:otherVersion];
+}
+
+- (NSString *)description {
+ return self.stringVersion;
+}
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ SDLVersion *new = [[SDLVersion allocWithZone:zone] initWithMajor:_major minor:_minor patch:_patch];
+ return new;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLVideoStreamingCapability.h b/SmartDeviceLink/public/SDLVideoStreamingCapability.h
new file mode 100644
index 000000000..6a28c30bc
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVideoStreamingCapability.h
@@ -0,0 +1,89 @@
+//
+// SDLVideoStreamingCapability.h
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 7/31/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCMessage.h"
+
+@class SDLImageResolution;
+@class SDLVideoStreamingFormat;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contains information about this system's video streaming capabilities
+ */
+@interface SDLVideoStreamingCapability : SDLRPCStruct
+
+/**
+ Convenience init for creating a video streaming capability with all parameters.
+
+ @param preferredResolution The preferred resolution of a video stream for decoding and rendering on HMI
+ @param maxBitrate The maximum bitrate of video stream that is supported, in kbps
+ @param supportedFormats Detailed information on each format supported by this system, in its preferred order
+ @param hapticDataSupported True if the system can utilize the haptic spatial data from the source being streamed
+ @param diagonalScreenSize The diagonal screen size in inches
+ @param pixelPerInch The diagonal resolution in pixels divided by the diagonal screen size in inches
+ @param scale The scaling factor the app should use to change the size of the projecting view
+ @return A SDLVideoStreamingCapability object
+ */
+- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported diagonalScreenSize:(float)diagonalScreenSize pixelPerInch:(float)pixelPerInch scale:(float)scale;
+
+/**
+ The preferred resolution of a video stream for decoding and rendering on HMI
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) SDLImageResolution *preferredResolution;
+
+/**
+ The maximum bitrate of video stream that is supported, in kbps, optional
+
+ Optional, minvalue= 0, maxvalue= 2147483647
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *maxBitrate;
+
+/**
+ Detailed information on each format supported by this system, in its preferred order
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLVideoStreamingFormat *> *supportedFormats;
+
+/**
+ True if the system can utilize the haptic spatial data from the source being streamed.
+
+ Optional
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *hapticSpatialDataSupported;
+
+/**
+ The diagonal screen size in inches.
+
+ Float, Optional, minvalue="0"
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *diagonalScreenSize;
+
+/**
+ The diagonal resolution in pixels divided by the diagonal screen size in inches.
+
+ Float, Optional, minvalue="0"
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *pixelPerInch;
+
+/**
+ The scaling factor the app should use to change the size of the projecting view.
+
+ Float, Optional, minvalue="1" maxvalue="10"
+ @since SDL 6.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *scale;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLVideoStreamingCapability.m b/SmartDeviceLink/public/SDLVideoStreamingCapability.m
new file mode 100644
index 000000000..ec4f2c591
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVideoStreamingCapability.m
@@ -0,0 +1,95 @@
+//
+// SDLVideoStreamingCapability.m
+// SmartDeviceLink-iOS
+//
+// Created by Brett McIsaac on 7/31/17.
+// Copyright © 2017 smartdevicelink. All rights reserved.
+//
+
+#import "SDLImageResolution.h"
+#import "SDLVideoStreamingCapability.h"
+#import "SDLVideoStreamingFormat.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLVideoStreamingCapability
+
+- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported diagonalScreenSize:(float)diagonalScreenSize pixelPerInch:(float)pixelPerInch scale:(float)scale {
+ self = [self init];
+ if (!self) {
+ return self;
+ }
+
+ self.maxBitrate = @(maxBitrate);
+ self.preferredResolution = preferredResolution;
+ self.supportedFormats = supportedFormats;
+ self.hapticSpatialDataSupported = @(hapticDataSupported);
+ self.diagonalScreenSize = @(diagonalScreenSize);
+ self.pixelPerInch = @(pixelPerInch);
+ self.scale = @(scale);
+
+ return self;
+}
+
+- (void)setPreferredResolution:(nullable SDLImageResolution *)preferredResolution {
+ [self.store sdl_setObject:preferredResolution forName:SDLRPCParameterNamePreferredResolution];
+}
+
+- (nullable SDLImageResolution *)preferredResolution {
+ return [self.store sdl_objectForName:SDLRPCParameterNamePreferredResolution ofClass:SDLImageResolution.class error:nil];
+}
+
+- (void)setMaxBitrate:(nullable NSNumber<SDLInt> *)maxBitrate {
+ [self.store sdl_setObject:maxBitrate forName:SDLRPCParameterNameMaxBitrate];
+}
+
+- (nullable NSNumber<SDLInt> *)maxBitrate {
+ return [self.store sdl_objectForName:SDLRPCParameterNameMaxBitrate ofClass:NSNumber.class error:nil];
+}
+
+- (void)setSupportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
+ [self.store sdl_setObject:supportedFormats forName:SDLRPCParameterNameSupportedFormats];
+}
+
+- (nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameSupportedFormats ofClass:SDLVideoStreamingFormat.class error:nil];
+}
+
+- (void)setHapticSpatialDataSupported:(nullable NSNumber<SDLBool> *)hapticSpatialDataSupported {
+ [self.store sdl_setObject:hapticSpatialDataSupported forName:SDLRPCParameterNameHapticSpatialDataSupported];
+}
+
+- (nullable NSNumber<SDLBool> *)hapticSpatialDataSupported {
+ return [self.store sdl_objectForName:SDLRPCParameterNameHapticSpatialDataSupported ofClass:NSNumber.class error:nil];
+}
+
+- (void)setDiagonalScreenSize:(nullable NSNumber<SDLFloat> *)diagonalScreenSize {
+ [self.store sdl_setObject:diagonalScreenSize forName:SDLRPCParameterNameDiagonalScreenSize];
+}
+
+- (nullable NSNumber<SDLFloat> *)diagonalScreenSize {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDiagonalScreenSize ofClass:NSNumber.class error:nil];
+}
+
+- (void)setPixelPerInch:(nullable NSNumber<SDLFloat> *)pixelPerInch {
+ [self.store sdl_setObject:pixelPerInch forName:SDLRPCParameterNamePixelPerInch];
+}
+
+- (nullable NSNumber<SDLFloat> *)pixelPerInch {
+ return [self.store sdl_objectForName:SDLRPCParameterNamePixelPerInch ofClass:NSNumber.class error:nil];
+}
+
+- (void)setScale:(nullable NSNumber<SDLFloat> *)scale {
+ [self.store sdl_setObject:scale forName:SDLRPCParameterNameScale];
+}
+
+- (nullable NSNumber<SDLFloat> *)scale {
+ return [self.store sdl_objectForName:SDLRPCParameterNameScale ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLVideoStreamingCodec.h b/SmartDeviceLink/public/SDLVideoStreamingCodec.h
new file mode 100644
index 000000000..20d9c2a31
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVideoStreamingCodec.h
@@ -0,0 +1,36 @@
+//
+// SDLVideoStreamingCodec.h
+// SmartDeviceLink-iOS
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enum for each type of video streaming codec. Used in VideoStreamingFormat.
+ */
+typedef SDLEnum SDLVideoStreamingCodec NS_TYPED_ENUM;
+
+/**
+ * H264
+ */
+extern SDLVideoStreamingCodec const SDLVideoStreamingCodecH264;
+
+/**
+ * H265
+ */
+extern SDLVideoStreamingCodec const SDLVideoStreamingCodecH265;
+
+/**
+ * Theora
+ */
+extern SDLVideoStreamingCodec const SDLVideoStreamingCodecTheora;
+
+/**
+ * VP8
+ */
+extern SDLVideoStreamingCodec const SDLVideoStreamingCodecVP8;
+
+/**
+ * VP9
+ */
+extern SDLVideoStreamingCodec const SDLVideoStreamingCodecVP9;
diff --git a/SmartDeviceLink/SDLVideoStreamingCodec.m b/SmartDeviceLink/public/SDLVideoStreamingCodec.m
index 6ad66105f..6ad66105f 100644
--- a/SmartDeviceLink/SDLVideoStreamingCodec.m
+++ b/SmartDeviceLink/public/SDLVideoStreamingCodec.m
diff --git a/SmartDeviceLink/SDLVideoStreamingFormat.h b/SmartDeviceLink/public/SDLVideoStreamingFormat.h
index 958ae43b2..958ae43b2 100644
--- a/SmartDeviceLink/SDLVideoStreamingFormat.h
+++ b/SmartDeviceLink/public/SDLVideoStreamingFormat.h
diff --git a/SmartDeviceLink/SDLVideoStreamingFormat.m b/SmartDeviceLink/public/SDLVideoStreamingFormat.m
index 4fda8d340..4fda8d340 100644
--- a/SmartDeviceLink/SDLVideoStreamingFormat.m
+++ b/SmartDeviceLink/public/SDLVideoStreamingFormat.m
diff --git a/SmartDeviceLink/public/SDLVideoStreamingProtocol.h b/SmartDeviceLink/public/SDLVideoStreamingProtocol.h
new file mode 100644
index 000000000..8a285aa80
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVideoStreamingProtocol.h
@@ -0,0 +1,36 @@
+//
+// SDLVideoStreamingProtocol.h
+// SmartDeviceLink-iOS
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enum for each type of video streaming protocol, used in VideoStreamingFormat
+ */
+typedef SDLEnum SDLVideoStreamingProtocol NS_TYPED_ENUM;
+
+/**
+ * RAW
+ */
+extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRAW;
+
+/**
+ * RTP
+ */
+extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRTP;
+
+/**
+ * RTSP
+ */
+extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRTSP;
+
+/**
+ * RTMP
+ */
+extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolRTMP;
+
+/**
+ * WebM
+ */
+extern SDLVideoStreamingProtocol const SDLVideoStreamingProtocolWebM;
diff --git a/SmartDeviceLink/SDLVideoStreamingProtocol.m b/SmartDeviceLink/public/SDLVideoStreamingProtocol.m
index c39addd75..c39addd75 100644
--- a/SmartDeviceLink/SDLVideoStreamingProtocol.m
+++ b/SmartDeviceLink/public/SDLVideoStreamingProtocol.m
diff --git a/SmartDeviceLink/public/SDLVideoStreamingState.h b/SmartDeviceLink/public/SDLVideoStreamingState.h
new file mode 100644
index 000000000..c09fea875
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVideoStreamingState.h
@@ -0,0 +1,24 @@
+//
+// SDLVideoStreamingState.h
+// SmartDeviceLink
+//
+// Created by Joel Fischer on 6/19/18.
+// Copyright © 2018 Livio. All rights reserved.
+//
+
+#import "SDLEnum.h"
+
+/**
+ * Enum for each type of video streaming protocol, used in VideoStreamingFormat
+ */
+typedef SDLEnum SDLVideoStreamingState NS_TYPED_ENUM;
+
+/**
+ * STREAMABLE, the current app is allowed to stream video
+ */
+extern SDLVideoStreamingState const SDLVideoStreamingStateStreamable;
+
+/**
+ * NOT_STREAMABLE, the current app is not allowed to stream video
+ */
+extern SDLVideoStreamingState const SDLVideoStreamingStateNotStreamable;
diff --git a/SmartDeviceLink/SDLVideoStreamingState.m b/SmartDeviceLink/public/SDLVideoStreamingState.m
index 5d4d8c8f5..5d4d8c8f5 100644
--- a/SmartDeviceLink/SDLVideoStreamingState.m
+++ b/SmartDeviceLink/public/SDLVideoStreamingState.m
diff --git a/SmartDeviceLink/SDLVoiceCommand.h b/SmartDeviceLink/public/SDLVoiceCommand.h
index 1ed0225bc..1ed0225bc 100644
--- a/SmartDeviceLink/SDLVoiceCommand.h
+++ b/SmartDeviceLink/public/SDLVoiceCommand.h
diff --git a/SmartDeviceLink/SDLVoiceCommand.m b/SmartDeviceLink/public/SDLVoiceCommand.m
index ba0421fc6..ba0421fc6 100644
--- a/SmartDeviceLink/SDLVoiceCommand.m
+++ b/SmartDeviceLink/public/SDLVoiceCommand.m
diff --git a/SmartDeviceLink/public/SDLVrCapabilities.h b/SmartDeviceLink/public/SDLVrCapabilities.h
new file mode 100644
index 000000000..39ac75da8
--- /dev/null
+++ b/SmartDeviceLink/public/SDLVrCapabilities.h
@@ -0,0 +1,17 @@
+// SDLVRCapabilities.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * The VR capabilities of the connected SDL platform. Used in RegisterAppInterfaceResponse.
+ *
+ * @since SDL 1.0
+ */
+typedef SDLEnum SDLVRCapabilities NS_TYPED_ENUM;
+
+/**
+ * The SDL platform is capable of recognizing spoken text in the current language.
+ */
+extern SDLVRCapabilities const SDLVRCapabilitiesText;
diff --git a/SmartDeviceLink/SDLVrCapabilities.m b/SmartDeviceLink/public/SDLVrCapabilities.m
index 40f72ca37..40f72ca37 100644
--- a/SmartDeviceLink/SDLVrCapabilities.m
+++ b/SmartDeviceLink/public/SDLVrCapabilities.m
diff --git a/SmartDeviceLink/SDLVrHelpItem.h b/SmartDeviceLink/public/SDLVrHelpItem.h
index 9587da9c1..9587da9c1 100644
--- a/SmartDeviceLink/SDLVrHelpItem.h
+++ b/SmartDeviceLink/public/SDLVrHelpItem.h
diff --git a/SmartDeviceLink/SDLVrHelpItem.m b/SmartDeviceLink/public/SDLVrHelpItem.m
index 8a9424b62..8a9424b62 100644
--- a/SmartDeviceLink/SDLVrHelpItem.m
+++ b/SmartDeviceLink/public/SDLVrHelpItem.m
diff --git a/SmartDeviceLink/public/SDLWarningLightStatus.h b/SmartDeviceLink/public/SDLWarningLightStatus.h
new file mode 100644
index 000000000..ad7be994c
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWarningLightStatus.h
@@ -0,0 +1,32 @@
+// SDLWarningLightStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * Reflects the status of a cluster instrument warning light. Used in TireStatus
+ *
+ * @since SDL 2.0
+ */
+typedef SDLEnum SDLWarningLightStatus NS_TYPED_ENUM;
+
+/**
+ * The warning light is off
+ */
+extern SDLWarningLightStatus const SDLWarningLightStatusOff;
+
+/**
+ * The warning light is off
+ */
+extern SDLWarningLightStatus const SDLWarningLightStatusOn;
+
+/**
+ * The warning light is flashing
+ */
+extern SDLWarningLightStatus const SDLWarningLightStatusFlash;
+
+/**
+ * The warning light is unused
+ */
+extern SDLWarningLightStatus const SDLWarningLightStatusNotUsed;
diff --git a/SmartDeviceLink/SDLWarningLightStatus.m b/SmartDeviceLink/public/SDLWarningLightStatus.m
index 6547275b3..6547275b3 100644
--- a/SmartDeviceLink/SDLWarningLightStatus.m
+++ b/SmartDeviceLink/public/SDLWarningLightStatus.m
diff --git a/SmartDeviceLink/public/SDLWayPointType.h b/SmartDeviceLink/public/SDLWayPointType.h
new file mode 100644
index 000000000..639c75a7b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWayPointType.h
@@ -0,0 +1,19 @@
+// SDLWaypointType.h
+//
+
+#import "SDLEnum.h"
+
+/**
+ The type of a navigation waypoint. Used in GetWayPoints.
+ */
+typedef SDLEnum SDLWayPointType NS_TYPED_ENUM;
+
+/**
+ All other waypoint types
+ */
+extern SDLWayPointType const SDLWayPointTypeAll;
+
+/**
+ The destination waypoint
+ */
+extern SDLWayPointType const SDLWayPointTypeDestination;
diff --git a/SmartDeviceLink/SDLWayPointType.m b/SmartDeviceLink/public/SDLWayPointType.m
index bfed8bc66..bfed8bc66 100644
--- a/SmartDeviceLink/SDLWayPointType.m
+++ b/SmartDeviceLink/public/SDLWayPointType.m
diff --git a/SmartDeviceLink/SDLWeatherAlert.h b/SmartDeviceLink/public/SDLWeatherAlert.h
index 21d85456f..21d85456f 100644
--- a/SmartDeviceLink/SDLWeatherAlert.h
+++ b/SmartDeviceLink/public/SDLWeatherAlert.h
diff --git a/SmartDeviceLink/SDLWeatherAlert.m b/SmartDeviceLink/public/SDLWeatherAlert.m
index 8d09e78f3..8d09e78f3 100644
--- a/SmartDeviceLink/SDLWeatherAlert.m
+++ b/SmartDeviceLink/public/SDLWeatherAlert.m
diff --git a/SmartDeviceLink/SDLWeatherData.h b/SmartDeviceLink/public/SDLWeatherData.h
index 68ea63cdc..68ea63cdc 100644
--- a/SmartDeviceLink/SDLWeatherData.h
+++ b/SmartDeviceLink/public/SDLWeatherData.h
diff --git a/SmartDeviceLink/SDLWeatherData.m b/SmartDeviceLink/public/SDLWeatherData.m
index 4be530ec5..4be530ec5 100644
--- a/SmartDeviceLink/SDLWeatherData.m
+++ b/SmartDeviceLink/public/SDLWeatherData.m
diff --git a/SmartDeviceLink/SDLWeatherServiceData.h b/SmartDeviceLink/public/SDLWeatherServiceData.h
index 488e30fb3..488e30fb3 100644
--- a/SmartDeviceLink/SDLWeatherServiceData.h
+++ b/SmartDeviceLink/public/SDLWeatherServiceData.h
diff --git a/SmartDeviceLink/SDLWeatherServiceData.m b/SmartDeviceLink/public/SDLWeatherServiceData.m
index 60b110e0d..60b110e0d 100644
--- a/SmartDeviceLink/SDLWeatherServiceData.m
+++ b/SmartDeviceLink/public/SDLWeatherServiceData.m
diff --git a/SmartDeviceLink/SDLWeatherServiceManifest.h b/SmartDeviceLink/public/SDLWeatherServiceManifest.h
index 761474b44..761474b44 100644
--- a/SmartDeviceLink/SDLWeatherServiceManifest.h
+++ b/SmartDeviceLink/public/SDLWeatherServiceManifest.h
diff --git a/SmartDeviceLink/SDLWeatherServiceManifest.m b/SmartDeviceLink/public/SDLWeatherServiceManifest.m
index 753a152ed..753a152ed 100644
--- a/SmartDeviceLink/SDLWeatherServiceManifest.m
+++ b/SmartDeviceLink/public/SDLWeatherServiceManifest.m
diff --git a/SmartDeviceLink/public/SDLWindowCapability.h b/SmartDeviceLink/public/SDLWindowCapability.h
new file mode 100644
index 000000000..4795e667b
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWindowCapability.h
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLRPCStruct.h"
+
+#import "SDLImageType.h"
+#import "SDLMenuLayout.h"
+
+@class SDLButtonCapabilities;
+@class SDLDynamicUpdateCapabilities;
+@class SDLImageField;
+@class SDLSoftButtonCapabilities;
+@class SDLTextField;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Reflects content of DisplayCapabilities, ButtonCapabilities and SoftButtonCapabilities
+
+ @since SDL 6.0
+ */
+@interface SDLWindowCapability : SDLRPCStruct
+
+/**
+ * @param windowID - windowID
+ * @param textFields - textFields
+ * @param imageFields - imageFields
+ * @param imageTypeSupported - imageTypeSupported
+ * @param templatesAvailable - templatesAvailable
+ * @param numCustomPresetsAvailable - numCustomPresetsAvailable
+ * @param buttonCapabilities - buttonCapabilities
+ * @param softButtonCapabilities - softButtonCapabilities
+ * @param menuLayoutsAvailable - menuLayoutsAvailable
+ * @param dynamicUpdateCapabilities - dynamicUpdateCapabilities
+ * @return A SDLWindowCapability object
+ */
+- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities;
+
+/**
+ The specified ID of the window. Can be set to a predefined window, or omitted for the main window on the main display.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *windowID;
+
+/**
+ A set of all fields that support text data. @see TextField
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLTextField *> *textFields;
+
+/**
+ A set of all fields that support images. @see ImageField
+
+ Size: min 0 max 1000
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLImageField *> *imageFields;
+
+/**
+ Provides information about image types supported by the system.
+
+ Size: min 0 max 1000
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLImageType> *imageTypeSupported;
+
+/**
+ A set of all window templates available on the head unit.
+
+ Size: min 0 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<NSString *> *templatesAvailable;
+
+/**
+ The number of on-window custom presets available (if any); otherwise omitted.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLInt> *numCustomPresetsAvailable;
+
+/**
+ The number of buttons and the capabilities of each on-window button.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
+
+/**
+ The number of soft buttons available on-window and the capabilities for each button.
+
+ Size: min 1 max 100
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
+
+/**
+ An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available.
+
+ Optional, array of 1 to 100, see SDLMenuLayout
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLMenuLayout> *menuLayoutsAvailable;
+
+/**
+ * Contains the head unit's capabilities for dynamic updating features declaring if the module will send dynamic update RPCs.
+ *
+ * @since SDL 7.0.0
+ */
+@property (nullable, strong, nonatomic) SDLDynamicUpdateCapabilities *dynamicUpdateCapabilities;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLWindowCapability.m b/SmartDeviceLink/public/SDLWindowCapability.m
new file mode 100644
index 000000000..9c3ebe7e2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWindowCapability.m
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* Redistributions of source code must retain the above copyright notice, this
+* list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#import "SDLWindowCapability.h"
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLButtonCapabilities.h"
+#import "SDLDynamicUpdateCapabilities.h"
+#import "SDLImageField.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLSoftButtonCapabilities.h"
+#import "SDLTextField.h"
+
+@implementation SDLWindowCapability
+
+- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.windowID = windowID;
+ self.textFields = textFields;
+ self.imageFields = imageFields;
+ self.imageTypeSupported = imageTypeSupported;
+ self.templatesAvailable = templatesAvailable;
+ self.numCustomPresetsAvailable = numCustomPresetsAvailable;
+ self.buttonCapabilities = buttonCapabilities;
+ self.softButtonCapabilities = softButtonCapabilities;
+ self.menuLayoutsAvailable = menuLayoutsAvailable;
+ self.dynamicUpdateCapabilities = dynamicUpdateCapabilities;
+ return self;
+}
+
+- (void)setWindowID:(nullable NSNumber<SDLUInt> *)windowID {
+ [self.store sdl_setObject:windowID forName:SDLRPCParameterNameWindowId];
+}
+
+- (nullable NSNumber<SDLUInt> *)windowID {
+ return [self.store sdl_objectForName:SDLRPCParameterNameWindowId ofClass:NSNumber.class error:nil];
+}
+
+- (void)setTextFields:(nullable NSArray<SDLTextField *> *)textFields {
+ [self.store sdl_setObject:textFields forName:SDLRPCParameterNameTextFields];
+}
+
+- (nullable NSArray<SDLTextField *> *)textFields {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameTextFields ofClass:SDLTextField.class error:nil];
+}
+
+- (void)setImageFields:(nullable NSArray<SDLImageField *> *)imageFields {
+ [self.store sdl_setObject:imageFields forName:SDLRPCParameterNameImageFields];
+}
+
+- (nullable NSArray<SDLImageField *> *)imageFields {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameImageFields ofClass:SDLImageField.class error:nil];
+}
+
+- (void)setImageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported {
+ [self.store sdl_setObject:imageTypeSupported forName:SDLRPCParameterNameImageTypeSupported];
+}
+
+- (nullable NSArray<SDLImageType> *)imageTypeSupported {
+ return [self.store sdl_enumsForName:SDLRPCParameterNameImageTypeSupported error:nil];
+}
+
+- (void)setTemplatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable {
+ [self.store sdl_setObject:templatesAvailable forName:SDLRPCParameterNameTemplatesAvailable];
+}
+
+- (nullable NSArray<NSString *> *)templatesAvailable {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameTemplatesAvailable ofClass:NSString.class error:nil];
+}
+
+- (void)setNumCustomPresetsAvailable:(nullable NSNumber<SDLInt> *)numCustomPresetsAvailable {
+ [self.store sdl_setObject:numCustomPresetsAvailable forName:SDLRPCParameterNameNumberCustomPresetsAvailable];
+}
+
+- (nullable NSNumber<SDLInt> *)numCustomPresetsAvailable {
+ return [self.store sdl_objectForName:SDLRPCParameterNameNumberCustomPresetsAvailable ofClass:NSNumber.class error:nil];
+}
+
+- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ [self.store sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];
+}
+
+- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil];
+}
+
+
+- (void)setSoftButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
+ [self.store sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities];
+}
+
+- (nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil];
+}
+
+- (void)setMenuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable {
+ [self.store sdl_setObject:menuLayoutsAvailable forName:SDLRPCParameterNameMenuLayoutsAvailable];
+}
+
+- (nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable {
+ return [self.store sdl_enumsForName:SDLRPCParameterNameMenuLayoutsAvailable error:nil];
+}
+
+- (void)setDynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities {
+ [self.store sdl_setObject:dynamicUpdateCapabilities forName:SDLRPCParameterNameDynamicUpdateCapabilities];
+}
+
+- (nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities {
+ return [self.store sdl_objectForName:SDLRPCParameterNameDynamicUpdateCapabilities ofClass:SDLDynamicUpdateCapabilities.class error:nil];
+}
+
+@end
diff --git a/SmartDeviceLink/public/SDLWindowState.h b/SmartDeviceLink/public/SDLWindowState.h
new file mode 100644
index 000000000..fcbab5691
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWindowState.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @since SDL 7.0.0
+ */
+@interface SDLWindowState : SDLRPCStruct
+
+/**
+ * @param approximatePosition - The approximate percentage that the window is open - 0 being fully closed, 100 being fully open
+ * @param deviation - The percentage deviation of the approximatePosition. e.g. If the approximatePosition is 50 and the deviation is 10, then the window's location is somewhere between 40 and 60.
+ * @return A SDLWindowState object
+ */
+- (instancetype)initWithApproximatePosition:(UInt8)approximatePosition deviation:(UInt8)deviation;
+
+/**
+ * The approximate percentage that the window is open - 0 being fully closed, 100 being fully open
+ *
+ * Mandatory, Integer, 0 - 100
+ */
+@property (strong, nonatomic) NSNumber<SDLUInt> *approximatePosition;
+
+/**
+ * The percentage deviation of the approximatePosition. e.g. If the approximatePosition is 50 and the deviation is 10, then the window's location is somewhere between 40 and 60.
+ *
+ * Mandatory, Integer, 0 - 100
+ */
+@property (strong, nonatomic) NSNumber<SDLUInt> *deviation;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLWindowState.m b/SmartDeviceLink/public/SDLWindowState.m
new file mode 100644
index 000000000..ee22c09bb
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWindowState.m
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowState.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLWindowState
+
+- (instancetype)initWithApproximatePosition:(UInt8)approximatePosition deviation:(UInt8)deviation {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.approximatePosition = @(approximatePosition);
+ self.deviation = @(deviation);
+ return self;
+}
+
+- (void)setApproximatePosition:(NSNumber<SDLUInt> *)approximatePosition {
+ [self.store sdl_setObject:approximatePosition forName:SDLRPCParameterNameApproximatePosition];
+}
+
+- (NSNumber<SDLUInt> *)approximatePosition {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameApproximatePosition ofClass:NSNumber.class error:&error];
+}
+
+- (void)setDeviation:(NSNumber<SDLUInt> *)deviation {
+ [self.store sdl_setObject:deviation forName:SDLRPCParameterNameDeviation];
+}
+
+- (NSNumber<SDLUInt> *)deviation {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameDeviation ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLWindowStatus.h b/SmartDeviceLink/public/SDLWindowStatus.h
new file mode 100644
index 000000000..e3e235242
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWindowStatus.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+
+@class SDLGrid;
+@class SDLWindowState;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Describes the status of a window of a door/liftgate etc.
+ *
+ * @since SDL 7.0.0
+ */
+@interface SDLWindowStatus : SDLRPCStruct
+
+/**
+ * @param location - location
+ * @param state - state
+ * @return A SDLWindowStatus object
+ */
+- (instancetype)initWithLocation:(SDLGrid *)location state:(SDLWindowState *)state;
+
+/**
+ * location
+ *
+ * Mandatory
+*/
+@property (strong, nonatomic) SDLGrid *location;
+
+/**
+ * state
+ *
+ * Mandatory
+*/
+@property (strong, nonatomic) SDLWindowState *state;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLWindowStatus.m b/SmartDeviceLink/public/SDLWindowStatus.m
new file mode 100644
index 000000000..1fc54b359
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWindowStatus.m
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLGrid.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowState.h"
+#import "SDLWindowStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLWindowStatus
+
+- (instancetype)initWithLocation:(SDLGrid *)location state:(SDLWindowState *)state {
+ self = [super init];
+ if (!self) {
+ return nil;
+ }
+ self.location = location;
+ self.state = state;
+ return self;
+}
+
+- (void)setLocation:(SDLGrid *)location {
+ [self.store sdl_setObject:location forName:SDLRPCParameterNameLocation];
+}
+
+- (SDLGrid *)location {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameLocation ofClass:SDLGrid.class error:&error];
+}
+
+- (void)setState:(SDLWindowState *)state {
+ [self.store sdl_setObject:state forName:SDLRPCParameterNameState];
+}
+
+- (SDLWindowState *)state {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameState ofClass:SDLWindowState.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLWindowType.h b/SmartDeviceLink/public/SDLWindowType.h
new file mode 100644
index 000000000..7e47e3ad9
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWindowType.h
@@ -0,0 +1,21 @@
+//
+// SDLWindowType.h
+// SmartDeviceLink
+
+#import "SDLEnum.h"
+/**
+ The type of the window to be created. Main window or widget.
+
+ @since SDL 6.0
+ */
+typedef SDLEnum SDLWindowType NS_TYPED_ENUM;
+
+/**
+ This window type describes the main window on a display.
+ */
+extern SDLWindowType const SDLWindowTypeMain;
+
+/**
+ A widget is a small window that the app can create to provide information and soft buttons for quick app control.
+ */
+extern SDLWindowType const SDLWindowTypeWidget;
diff --git a/SmartDeviceLink/SDLWindowType.m b/SmartDeviceLink/public/SDLWindowType.m
index 90678e3ea..90678e3ea 100644
--- a/SmartDeviceLink/SDLWindowType.m
+++ b/SmartDeviceLink/public/SDLWindowType.m
diff --git a/SmartDeviceLink/SDLWindowTypeCapabilities.h b/SmartDeviceLink/public/SDLWindowTypeCapabilities.h
index 551fd692c..551fd692c 100644
--- a/SmartDeviceLink/SDLWindowTypeCapabilities.h
+++ b/SmartDeviceLink/public/SDLWindowTypeCapabilities.h
diff --git a/SmartDeviceLink/SDLWindowTypeCapabilities.m b/SmartDeviceLink/public/SDLWindowTypeCapabilities.m
index 1e2212d97..1e2212d97 100644
--- a/SmartDeviceLink/SDLWindowTypeCapabilities.m
+++ b/SmartDeviceLink/public/SDLWindowTypeCapabilities.m
diff --git a/SmartDeviceLink/public/SDLWiperStatus.h b/SmartDeviceLink/public/SDLWiperStatus.h
new file mode 100644
index 000000000..23ddfac7a
--- /dev/null
+++ b/SmartDeviceLink/public/SDLWiperStatus.h
@@ -0,0 +1,85 @@
+// SDLWiperStatus.h
+//
+
+
+#import "SDLEnum.h"
+
+/**
+ * The status of the windshield wipers. Used in retrieving vehicle data.
+ */
+typedef SDLEnum SDLWiperStatus NS_TYPED_ENUM;
+
+/**
+ * Wiper is off
+ */
+extern SDLWiperStatus const SDLWiperStatusOff;
+
+/**
+ * Wiper is off automatically
+ */
+extern SDLWiperStatus const SDLWiperStatusAutomaticOff;
+
+/**
+ * Wiper is moving but off
+ */
+extern SDLWiperStatus const SDLWiperStatusOffMoving;
+
+/**
+ * Wiper is off due to a manual interval
+ */
+extern SDLWiperStatus const SDLWiperStatusManualIntervalOff;
+
+/**
+ * Wiper is on due to a manual interval
+ */
+extern SDLWiperStatus const SDLWiperStatusManualIntervalOn;
+
+/**
+ * Wiper is on low manually
+ */
+extern SDLWiperStatus const SDLWiperStatusManualLow;
+
+/**
+ * Wiper is on high manually
+ */
+extern SDLWiperStatus const SDLWiperStatusManualHigh;
+
+/**
+ * Wiper is on for a single wipe manually
+ */
+extern SDLWiperStatus const SDLWiperStatusManualFlick;
+
+/**
+ * Wiper is in wash mode
+ */
+extern SDLWiperStatus const SDLWiperStatusWash;
+
+/**
+ * Wiper is on low automatically
+ */
+extern SDLWiperStatus const SDLWiperStatusAutomaticLow;
+
+/**
+ * Wiper is on high automatically
+ */
+extern SDLWiperStatus const SDLWiperStatusAutomaticHigh;
+
+/**
+ * Wiper is performing a courtesy wipe
+ */
+extern SDLWiperStatus const SDLWiperStatusCourtesyWipe;
+
+/**
+ * Wiper is on automatic adjust
+ */
+extern SDLWiperStatus const SDLWiperStatusAutomaticAdjust;
+
+/**
+ * Wiper is stalled
+ */
+extern SDLWiperStatus const SDLWiperStatusStalled;
+
+/**
+ * Wiper data is not available
+ */
+extern SDLWiperStatus const SDLWiperStatusNoDataExists;
diff --git a/SmartDeviceLink/SDLWiperStatus.m b/SmartDeviceLink/public/SDLWiperStatus.m
index 8f62e0563..8f62e0563 100644
--- a/SmartDeviceLink/SDLWiperStatus.m
+++ b/SmartDeviceLink/public/SDLWiperStatus.m
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetManagerSpec.m
index c9ce76b50..47156d1c0 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetManagerSpec.m
@@ -95,7 +95,7 @@ describe(@"choice set manager tests", ^{
testCell3 = [[SDLChoiceCell alloc] initWithText:@"test3"];
enabledWindowCapability = [[SDLWindowCapability alloc] init];
- enabledWindowCapability.textFields = @[[[SDLTextField alloc] initWithName:SDLTextFieldNameMenuName characterSet:SDLCharacterSetType5 width:500 rows:1]];
+ enabledWindowCapability.textFields = @[[[SDLTextField alloc] initWithName:SDLTextFieldNameMenuName characterSet:SDLCharacterSetUtf8 width:500 rows:1]];
disabledWindowCapability = [[SDLWindowCapability alloc] init];
disabledWindowCapability.textFields = @[];
blankWindowCapability = [[SDLWindowCapability alloc] init];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m
index 73a973975..1d099305f 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m
@@ -41,19 +41,6 @@ describe(@"a configuration", ^{
someEncryptionConfig = [SDLEncryptionConfiguration defaultConfiguration];
});
- it(@"initWithLifecycle:lockScreen:logging:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [[SDLConfiguration alloc] initWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig];
-
- expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig));
- expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig));
- expect(testConfig.loggingConfig).to(equal(someLogConfig));
- expect(testConfig.streamingMediaConfig).to(beNil());
- expect(testConfig.fileManagerConfig).toNot(beNil());
- #pragma clang diagnostic pop
- });
-
it(@"initWithLifecycle:lockScreen:logging:fileManager:", ^{
testConfig = [[SDLConfiguration alloc] initWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig fileManager:someFileManagerConfig encryption: someEncryptionConfig];
@@ -65,51 +52,12 @@ describe(@"a configuration", ^{
expect(testConfig.encryptionConfig).to(equal(someEncryptionConfig));
});
- it(@"configurationWithLifecycle:lockScreen:logging:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [SDLConfiguration configurationWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig];
-
- expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig));
- expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig));
- expect(testConfig.loggingConfig).to(equal(someLogConfig));
- expect(testConfig.streamingMediaConfig).to(beNil());
- expect(testConfig.fileManagerConfig).toNot(beNil());
- #pragma clang diagnostic pop
- });
-
- it(@"configurationWithLifecycle:lockScreen:logging:fileManager", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [SDLConfiguration configurationWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig fileManager:someFileManagerConfig];
- #pragma clang diagnostic pop
-
- expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig));
- expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig));
- expect(testConfig.loggingConfig).to(equal(someLogConfig));
- expect(testConfig.streamingMediaConfig).to(beNil());
- expect(testConfig.fileManagerConfig).to(equal(someFileManagerConfig));
- });
-
describe(@"streaming media config", ^{
beforeEach(^{
someLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:someAppName fullAppId:someAppId];
someLifecycleConfig.appType = SDLAppHMITypeNavigation;
});
- it(@"initWithLifecycle:lockScreen:logging:streamingMedia:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [[SDLConfiguration alloc] initWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig streamingMedia:someStreamingConfig];
-
- expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig));
- expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig));
- expect(testConfig.loggingConfig).to(equal(someLogConfig));
- expect(testConfig.streamingMediaConfig).to(equal(someStreamingConfig));
- expect(testConfig.fileManagerConfig).toNot(beNil());
- #pragma clang diagnostic pop
- });
-
it(@"initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:", ^{
testConfig = [[SDLConfiguration alloc] initWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig streamingMedia:someStreamingConfig fileManager:someFileManagerConfig encryption:[SDLEncryptionConfiguration defaultConfiguration]];
@@ -119,32 +67,6 @@ describe(@"a configuration", ^{
expect(testConfig.streamingMediaConfig).to(equal(someStreamingConfig));
expect(testConfig.fileManagerConfig).to(equal(someFileManagerConfig));
});
-
- it(@"configurationWithLifecycle:lockScreen:logging:streamingMedia:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [SDLConfiguration configurationWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig streamingMedia:someStreamingConfig];
-
- expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig));
- expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig));
- expect(testConfig.loggingConfig).to(equal(someLogConfig));
- expect(testConfig.streamingMediaConfig).to(equal(someStreamingConfig));
- expect(testConfig.fileManagerConfig).toNot(beNil());
- #pragma clang diagnostic pop
- });
-
- it(@"configurationWithLifecycle:lockScreen:logging:streamingMedia:fileManager:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [SDLConfiguration configurationWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig streamingMedia:someStreamingConfig fileManager:someFileManagerConfig];
- #pragma clang diagnostic pop
-
- expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig));
- expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig));
- expect(testConfig.loggingConfig).to(equal(someLogConfig));
- expect(testConfig.streamingMediaConfig).to(equal(someStreamingConfig));
- expect(testConfig.fileManagerConfig).to(equal(someFileManagerConfig));
- });
});
});
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m
index 9f49311f7..da30cb2eb 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleConfigurationSpec.m
@@ -19,7 +19,7 @@
@interface SDLLifecycleConfiguration()
-+ (NSString *)sdlex_shortAppIdFromFullAppId:(NSString *)fullAppId;
++ (NSString *)sdl_shortAppIdFromFullAppId:(NSString *)fullAppId;
@end
@@ -29,9 +29,8 @@ QuickSpecBegin(SDLLifecycleConfigurationSpec)
describe(@"A lifecycle configuration", ^{
__block SDLLifecycleConfiguration *testConfig = nil;
__block NSString *testAppName = @"An App Name";
- __block NSString *testAppId = @"00542596";
- __block NSString *testFullAppId = @"-ab--987-adfa651kj-212346h3kjkaju";
- __block NSString *expectedGeneratedAppId = @"ab987adfa6";
+ __block NSString *testFullAppId = @"123e4567-e89b-12d3-a456-426614174000";
+ __block NSString *expectedGeneratedAppId = @"123e4567e8";
__block SDLVersion *baseVersion = nil;
beforeEach(^{
@@ -41,16 +40,6 @@ describe(@"A lifecycle configuration", ^{
context(@"created with a default configuration", ^{
context(@"should be successfully initialized", ^{
- it(@"defaultConfigurationWithAppName:appId:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:testAppName appId:testAppId];
-
- expect(testConfig.appId).to(match(testAppId));
- expect(testConfig.fullAppId).to(beNil());
- #pragma clang diagnostic pop
- });
-
it(@"defaultConfigurationWithAppName:fullAppId:", ^{
testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:testAppName fullAppId:testFullAppId];
@@ -83,18 +72,20 @@ describe(@"A lifecycle configuration", ^{
__block NSArray<SDLTTSChunk *> *testTTSName = nil;
__block NSArray<NSString *> *testSynonyms = nil;
__block NSString *testResumeHashString = nil;
+ __block NSString *testAppId = nil;
beforeEach(^{
- testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:testAppName fullAppId:testFullAppId];
- });
-
- it(@"it should get and set correctly", ^{
testShortAppName = @"Short Name";
testTTSChunk = [[SDLTTSChunk alloc] initWithText:@"test tts name" type:SDLSpeechCapabilitiesText];
testTTSName = @[testTTSChunk];
testSynonyms = @[@"Test 1", @"Test 2", @"Test 3", @"Test 4"];
testResumeHashString = @"testing";
+ testAppId = @"pppppppppppppppppppppppppppppppppppppppppp";
+
+ testConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:testAppName fullAppId:testFullAppId];
+ });
+ it(@"it should get and set correctly", ^{
testConfig.appType = SDLAppHMITypeMedia;
testConfig.additionalAppTypes = @[SDLAppHMITypeProjection];
testConfig.language = SDLLanguageArSa;
@@ -105,13 +96,14 @@ describe(@"A lifecycle configuration", ^{
testConfig.resumeHash = testResumeHashString;
testConfig.minimumProtocolVersion = [SDLVersion versionWithString:@"1.0.0"];
testConfig.minimumRPCVersion = [SDLVersion versionWithString:@"2.0.0"];
+ testConfig.appId = testAppId;
});
afterEach(^{
expect(testConfig.appName).to(match(testAppName));
expect(testConfig.shortAppName).to(match(testShortAppName));
expect(testConfig.fullAppId).to(match(testFullAppId));
- expect(testConfig.appId).to(match(expectedGeneratedAppId));
+ expect(testConfig.appId).to(match(testAppId));
expect(testConfig.tcpDebugMode).to(beFalse());
expect(testConfig.tcpDebugIPAddress).to(match(@"192.168.0.1"));
expect(@(testConfig.tcpDebugPort)).to(equal(@12345));
@@ -140,16 +132,6 @@ describe(@"A lifecycle configuration", ^{
});
context(@"should be successfully initialized", ^{
- it(@"debugConfigurationWithAppName:appId:ipAddress:port:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [SDLLifecycleConfiguration debugConfigurationWithAppName:testAppName appId:testAppId ipAddress:testIPAddress port:testPort];
-
- expect(testConfig.appId).to(match(testAppId));
- expect(testConfig.fullAppId).to(beNil());
- #pragma clang diagnostic pop
- });
-
it(@"debugConfigurationWithAppName:fullAppId:ipAddress:port:", ^{
testConfig = [SDLLifecycleConfiguration debugConfigurationWithAppName:testAppName fullAppId:testFullAppId ipAddress:testIPAddress port:testPort];
@@ -182,6 +164,7 @@ describe(@"A lifecycle configuration", ^{
__block NSArray<NSString *> *testSynonyms = nil;
__block NSString *testResumeHashString = nil;
__block SDLVersion *testVersion = nil;
+ __block NSString *testAppId = nil;
beforeEach(^{
testConfig = [SDLLifecycleConfiguration debugConfigurationWithAppName:testAppName fullAppId:testFullAppId ipAddress:testIPAddress port:testPort];
@@ -194,6 +177,7 @@ describe(@"A lifecycle configuration", ^{
testSynonyms = @[@"Test 1", @"Test 2", @"Test 3", @"Test 4"];
testResumeHashString = @"testing";
testVersion = [SDLVersion versionWithMajor:1 minor:0 patch:0];
+ testAppId = @"p&4rrqwervw-jolmk";
testConfig.appType = SDLAppHMITypeInformation;
testConfig.additionalAppTypes = @[SDLAppHMITypeProjection];
@@ -205,13 +189,14 @@ describe(@"A lifecycle configuration", ^{
testConfig.resumeHash = testResumeHashString;
testConfig.minimumRPCVersion = testVersion;
testConfig.minimumProtocolVersion = testVersion;
+ testConfig.appId = testAppId;
});
afterEach(^{
expect(testConfig.appName).to(match(testAppName));
expect(testConfig.shortAppName).to(match(testShortAppName));
expect(testConfig.fullAppId).to(match(testFullAppId));
- expect(testConfig.appId).to(match(expectedGeneratedAppId));
+ expect(testConfig.appId).to(match(testAppId));
expect(testConfig.tcpDebugMode).to(beTrue());
expect(testConfig.tcpDebugIPAddress).to(match(@"1.1.1.1"));
expect(@(testConfig.tcpDebugPort)).to(equal(@42));
@@ -232,34 +217,28 @@ describe(@"A lifecycle configuration", ^{
});
describe(@"When generating the `appId` from the `fullAppId`", ^{
- it(@"should return nil if full app id is nil", ^{
- NSString *testFullAppId = nil;
- NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
- expect(appId).to(beNil());
- });
-
it(@"should return an empty string if the full app id is empty", ^{
NSString *testFullAppId = @"";
- NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
+ NSString *appId = [SDLLifecycleConfiguration sdl_shortAppIdFromFullAppId:testFullAppId];
+ expect(appId).to(beEmpty());
+ });
+
+ it(@"should return an empty string if the full app id only has dashes", ^{
+ NSString *testFullAppId = @"--";
+ NSString *appId = [SDLLifecycleConfiguration sdl_shortAppIdFromFullAppId:testFullAppId];
expect(appId).to(beEmpty());
});
it(@"should return a string truncated to the first non-dash 10 characters", ^{
NSString *testFullAppId = @"34-uipe--k-rtqwedeftg-1";
- NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
+ NSString *appId = [SDLLifecycleConfiguration sdl_shortAppIdFromFullAppId:testFullAppId];
expect(appId).to(match(@"34uipekrtq"));
});
- it(@"should return a string if the full app id is less than 10 characters", ^{
- NSString *testFullAppId = @"a";
- NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
- expect(appId).to(match(@"a"));
- });
-
- it(@"should return an empty string if the full app id only has dash characters", ^{
- NSString *testFullAppId = @"-";
- NSString *appId = [SDLLifecycleConfiguration sdlex_shortAppIdFromFullAppId:testFullAppId];
- expect(appId).to(beEmpty());
+ it(@"should return the full app id if the full app id is less than 10 characters", ^{
+ NSString *testFullAppId = @"ab";
+ NSString *appId = [SDLLifecycleConfiguration sdl_shortAppIdFromFullAppId:testFullAppId];
+ expect(appId).to(equal(testFullAppId));
});
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
index 55bc7336f..dfba05a0e 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
@@ -5,9 +5,12 @@
#import "SDLLifecycleManager.h"
#import "SDLAppServiceData.h"
+#import "SDLChangeRegistration.h"
#import "SDLConfiguration.h"
#import "SDLConnectionManagerType.h"
+#import "SDLEncryptionConfiguration.h"
#import "SDLError.h"
+#import "SDLFileManagerConfiguration.h"
#import "SDLFileManager.h"
#import "SDLGlobals.h"
#import "SDLHMILevel.h"
@@ -120,11 +123,11 @@ describe(@"a lifecycle manager", ^{
};
beforeEach(^{
- SDLLifecycleConfiguration *testLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:@"Test App" appId:@"Test Id"];
+ SDLLifecycleConfiguration *testLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:@"Test App" fullAppId:@"TestFullAppID"];
testLifecycleConfig.shortAppName = @"Short Name";
testLifecycleConfig.appType = SDLAppHMITypeNavigation;
- testConfig = [SDLConfiguration configurationWithLifecycle:testLifecycleConfig lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] streamingMedia:[SDLStreamingMediaConfiguration insecureConfiguration]];
+ testConfig = [[SDLConfiguration alloc] initWithLifecycle:testLifecycleConfig lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] streamingMedia:[SDLStreamingMediaConfiguration insecureConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:[SDLEncryptionConfiguration defaultConfiguration]];
testConfig.lifecycleConfig.languagesSupported = @[SDLLanguageEnUs, SDLLanguageEnGb];
testConfig.lifecycleConfig.language = SDLLanguageEnUs;
testConfig.lifecycleConfig.minimumProtocolVersion = [SDLVersion versionWithMajor:2 minor:0 patch:0];
@@ -433,137 +436,103 @@ describe(@"a lifecycle manager", ^{
});
context(@"when the register response returns different language than the one passed with the lifecycle configuration", ^{
- context(@"using the deprecated delegate method", ^{
- __block TestOldConfigurationUpdateManagerDelegate *oldDelegate = nil;
- beforeEach(^{
- oldDelegate = OCMClassMock([TestOldConfigurationUpdateManagerDelegate class]);
- testManager.delegate = oldDelegate;
- });
-
- it(@"should should update the configuration when the app supports the head unit language", ^{
- SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
- registerAppInterfaceResponse.success = @YES;
- registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
- registerAppInterfaceResponse.info = @"Language mismatch";
- registerAppInterfaceResponse.language = SDLLanguageEnGb;
- registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageEnGb;
- testManager.registerResponse = registerAppInterfaceResponse;
-
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:@"EnGb" shortAppName:@"E" ttsName:[SDLTTSChunk textChunksFromString:@"EnGb ttsName"] voiceRecognitionCommandNames:nil];
- OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any]]).andReturn(update);
-
- setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
- // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
- [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
-
- expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnGb));
- expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"EnGb"));
- expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"E"));
- expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(equal([SDLTTSChunk textChunksFromString:@"EnGb ttsName"]));
-
- OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any]]);
- });
-
- it(@"should not update the configuration when the app does not support the head unit language", ^{
- SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
- registerAppInterfaceResponse.success = @YES;
- registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
- registerAppInterfaceResponse.info = @"Language mismatch";
- registerAppInterfaceResponse.language = SDLLanguageDeDe;
- registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageDeDe;
- testManager.registerResponse = registerAppInterfaceResponse;
-
- OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any]]).andReturn(nil);
-
- setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
- // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
- [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
-
- expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnUs));
- expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"Test App"));
- expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"Short Name"));
- expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(beNil());
-
- OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any]]);
- });
+ __block TestNewConfigurationUpdateManagerDelegate *newDelegate = nil;
+ beforeEach(^{
+ newDelegate = OCMClassMock([TestNewConfigurationUpdateManagerDelegate class]);
+ testManager.delegate = newDelegate;
});
- context(@"using the updated delegate method", ^{
- __block TestNewConfigurationUpdateManagerDelegate *newDelegate = nil;
- beforeEach(^{
- newDelegate = OCMClassMock([TestNewConfigurationUpdateManagerDelegate class]);
- testManager.delegate = newDelegate;
- });
-
- it(@"should should update the configuration when the app supports the head unit language", ^{
- SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
- registerAppInterfaceResponse.success = @YES;
- registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
- registerAppInterfaceResponse.info = @"Language mismatch";
- registerAppInterfaceResponse.language = SDLLanguageEnGb;
- registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageEnGb;
- testManager.registerResponse = registerAppInterfaceResponse;
-
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:@"EnGb" shortAppName:@"E" ttsName:[SDLTTSChunk textChunksFromString:@"EnGb ttsName"] voiceRecognitionCommandNames:nil];
- OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]).andReturn(update);
-
- setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
- // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
- [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
-
- expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnGb));
- expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"EnGb"));
- expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"E"));
- expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(equal([SDLTTSChunk textChunksFromString:@"EnGb ttsName"]));
-
- OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]);
- });
-
- it(@"should not update the configuration when the app does not support the head unit language", ^{
- SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
- registerAppInterfaceResponse.success = @YES;
- registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
- registerAppInterfaceResponse.info = @"Language mismatch";
- registerAppInterfaceResponse.language = SDLLanguageDeDe;
- registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageDeDe;
- testManager.registerResponse = registerAppInterfaceResponse;
-
- OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]).andReturn(nil);
-
- setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
- // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
- [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
+ it(@"should should update the configuration when the app supports the head unit language", ^{
+ SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+ registerAppInterfaceResponse.success = @YES;
+ registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
+ registerAppInterfaceResponse.info = @"Language mismatch";
+ registerAppInterfaceResponse.language = SDLLanguageEnGb;
+ registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageEnGb;
+ testManager.registerResponse = registerAppInterfaceResponse;
+
+ SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:@"EnGb" shortAppName:@"E" ttsName:[SDLTTSChunk textChunksFromString:@"EnGb ttsName"] voiceRecognitionCommandNames:@[@"EnGb", @"Gb"]];
+ OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]).andReturn(update);
+
+ OCMExpect([protocolMock sendRPC:[OCMArg checkWithBlock:^BOOL(id value) {
+ SDLChangeRegistration *changeRegistration = (SDLChangeRegistration *)value;
+ expect(changeRegistration.appName).to(equal(update.appName));
+ expect(changeRegistration.ngnMediaScreenAppName).to(equal(update.shortAppName));
+ expect(changeRegistration.ttsName).to(equal(update.ttsName));
+ expect(changeRegistration.vrSynonyms).to(equal(@[@"EnGb", @"Gb"]));
+ return [value isKindOfClass:[SDLChangeRegistration class]];
+ }]]);
+
+ setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
+ // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
+ [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
+
+ expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnGb));
+ expect(testManager.currentVRLanguage).toEventually(equal(SDLLanguageEnGb));
+ expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"EnGb"));
+ expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"E"));
+ expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(equal([SDLTTSChunk textChunksFromString:@"EnGb ttsName"]));
+
+ OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]);
+ OCMVerifyAll(protocolMock);
+ });
- expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnUs));
- expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"Test App"));
- expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"Short Name"));
- expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(beNil());
+ it(@"should not update the configuration when the app does not support the head unit language or display language", ^{
+ SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+ registerAppInterfaceResponse.success = @YES;
+ registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
+ registerAppInterfaceResponse.info = @"Language mismatch";
+ registerAppInterfaceResponse.language = SDLLanguageDeDe;
+ registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageDeDe;
+ testManager.registerResponse = registerAppInterfaceResponse;
- OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]);
- });
+ OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]).andReturn(nil);
- it(@"should update if the hmi display language changes", ^{
- SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
- registerAppInterfaceResponse.success = @YES;
- registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
- registerAppInterfaceResponse.info = @"Language mismatch";
- registerAppInterfaceResponse.language = SDLLanguageEnUs;
- registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageEnGb;
- testManager.registerResponse = registerAppInterfaceResponse;
+ setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
+ // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
+ [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
- OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]).andReturn(nil);
+ expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnUs));
+ expect(testManager.currentVRLanguage).toEventually(equal(SDLLanguageEnUs));
+ expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"Test App"));
+ expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"Short Name"));
+ expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(beNil());
- setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
- // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
- [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
-
- expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnUs));
- expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"Test App"));
- expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"Short Name"));
- expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(beNil());
+ OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]);
+ });
- OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]);
- });
+ it(@"should update when the app supports the head unit display language", ^{
+ SDLRegisterAppInterfaceResponse *registerAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+ registerAppInterfaceResponse.success = @YES;
+ registerAppInterfaceResponse.resultCode = SDLResultWrongLanguage;
+ registerAppInterfaceResponse.info = @"Language mismatch";
+ registerAppInterfaceResponse.language = SDLLanguageEnUs;
+ registerAppInterfaceResponse.hmiDisplayLanguage = SDLLanguageEnGb;
+ testManager.registerResponse = registerAppInterfaceResponse;
+
+ SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] initWithAppName:@"EnGb" shortAppName:@"Gb" ttsName:nil voiceRecognitionCommandNames:nil];
+ OCMStub([testManager.delegate managerShouldUpdateLifecycleToLanguage:registerAppInterfaceResponse.language hmiLanguage:registerAppInterfaceResponse.hmiDisplayLanguage]).andReturn(update);
+
+ OCMExpect([protocolMock sendRPC:[OCMArg checkWithBlock:^BOOL(id value) {
+ SDLChangeRegistration *changeRegistration = (SDLChangeRegistration *)value;
+ expect(changeRegistration.appName).to(equal(update.appName));
+ expect(changeRegistration.ngnMediaScreenAppName).to(equal(update.shortAppName));
+ expect(changeRegistration.ttsName).to(beNil());
+ expect(changeRegistration.vrSynonyms).to(beNil());
+ return [value isKindOfClass:[SDLChangeRegistration class]];
+ }]]);
+
+ setToStateWithEnterTransition(SDLLifecycleStateRegistered, SDLLifecycleStateUpdatingConfiguration);
+ // Transition to StateSettingUpManagers to prevent assert error from the lifecycle machine
+ [testManager.lifecycleStateMachine setToState:SDLLifecycleStateSettingUpManagers fromOldState:SDLLifecycleStateUpdatingConfiguration callEnterTransition:NO];
+
+ expect(testManager.configuration.lifecycleConfig.language).toEventually(equal(SDLLanguageEnGb));
+ expect(testManager.currentVRLanguage).toEventually(equal(SDLLanguageEnUs));
+ expect(testManager.configuration.lifecycleConfig.appName).toEventually(equal(@"EnGb"));
+ expect(testManager.configuration.lifecycleConfig.shortAppName).toEventually(equal(@"Gb"));
+ expect(testManager.configuration.lifecycleConfig.ttsName).toEventually(beNil());
+
+ OCMVerify([testManager.delegate managerShouldUpdateLifecycleToLanguage:[OCMArg any] hmiLanguage:[OCMArg any]]);
});
});
});
@@ -803,7 +772,7 @@ describe(@"a lifecycle manager", ^{
context(@"if secondary transport is not allowed", ^{
beforeEach(^{
lifecycleConfig.allowedSecondaryTransports = SDLSecondaryTransportsNone;
- SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:nil logging:nil fileManager:nil];
+ SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:[SDLEncryptionConfiguration defaultConfiguration]];
testManager = [[SDLLifecycleManager alloc] initWithConfiguration:config delegate:nil];
[testManager.lifecycleStateMachine setToState:SDLLifecycleStateStarted fromOldState:nil callEnterTransition:YES];
});
@@ -817,7 +786,7 @@ describe(@"a lifecycle manager", ^{
beforeEach(^{
lifecycleConfig.allowedSecondaryTransports = SDLSecondaryTransportsTCP;
lifecycleConfig.appType = SDLAppHMITypeSocial;
- SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:nil logging:nil fileManager:nil];
+ SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:[SDLEncryptionConfiguration defaultConfiguration]];
testManager = [[SDLLifecycleManager alloc] initWithConfiguration:config delegate:nil];
[testManager.lifecycleStateMachine setToState:SDLLifecycleStateStarted fromOldState:nil callEnterTransition:YES];
});
@@ -831,7 +800,7 @@ describe(@"a lifecycle manager", ^{
beforeEach(^{
lifecycleConfig.allowedSecondaryTransports = SDLSecondaryTransportsTCP;
lifecycleConfig.appType = SDLAppHMITypeProjection;
- SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:nil logging:nil streamingMedia:SDLStreamingMediaConfiguration.insecureConfiguration fileManager:nil];
+ SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] streamingMedia:[SDLStreamingMediaConfiguration insecureConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:[SDLEncryptionConfiguration defaultConfiguration]];
testManager = [[SDLLifecycleManager alloc] initWithConfiguration:config delegate:nil];
[testManager.lifecycleStateMachine setToState:SDLLifecycleStateStarted fromOldState:nil callEnterTransition:YES];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleSystemRequestHandlerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleSystemRequestHandlerSpec.m
index 01211e324..a722b218f 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleSystemRequestHandlerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleSystemRequestHandlerSpec.m
@@ -202,7 +202,7 @@ describe(@"SDLLifecycleSystemRequestHandler tests", ^{
OCMStub([mockedApplication sharedApplication]).andReturn(mockedApplication);
OCMExpect([mockedApplication openURL:[OCMArg checkWithBlock:^BOOL(id obj) {
return [((NSURL *)obj).absoluteString isEqualToString:@"myApp://"];
- }]]);
+ }] options:@{} completionHandler:nil]);
SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidReceiveSystemRequestNotification object:nil rpcNotification:receivedSystemRequest];
[[NSNotificationCenter defaultCenter] postNotification:notification];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m
index 2963efb96..f95c90e71 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenConfigurationSpec.m
@@ -14,11 +14,6 @@ describe(@"a lock screen configuration", ^{
});
it(@"should properly set properties", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testConfig.enableAutomaticLockScreen).to(beFalse());
- expect(testConfig.showInOptionalState).to(beFalse());
-#pragma clang diagnostic pop
expect(testConfig.enableDismissGesture).to(beFalse());
expect(testConfig.showDeviceLogo).to(beFalse());
expect(testConfig.backgroundColor).to(equal([UIColor colorWithRed:(57.0/255.0) green:(78.0/255.0) blue:(96.0/255.0) alpha:1.0]));
@@ -33,11 +28,6 @@ describe(@"a lock screen configuration", ^{
});
it(@"should properly set properties", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testConfig.enableAutomaticLockScreen).to(beTrue());
- expect(testConfig.showInOptionalState).to(beFalse());
-#pragma clang diagnostic pop
expect(testConfig.enableDismissGesture).to(beTrue());
expect(testConfig.showDeviceLogo).to(beTrue());
expect(testConfig.backgroundColor).to(equal([UIColor colorWithRed:(57.0/255.0) green:(78.0/255.0) blue:(96.0/255.0) alpha:1.0]));
@@ -58,11 +48,6 @@ describe(@"a lock screen configuration", ^{
});
it(@"should properly set properties", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testConfig.enableAutomaticLockScreen).to(beTrue());
- expect(testConfig.showInOptionalState).to(beFalse());
-#pragma clang diagnostic pop
expect(testConfig.enableDismissGesture).to(beTrue());
expect(testConfig.showDeviceLogo).to(beTrue());
expect(testConfig.backgroundColor).to(equal([UIColor blueColor]));
@@ -81,11 +66,6 @@ describe(@"a lock screen configuration", ^{
});
it(@"should properly set properties", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testConfig.enableAutomaticLockScreen).to(beTrue());
- expect(testConfig.showInOptionalState).to(beFalse());
-#pragma clang diagnostic pop
expect(testConfig.enableDismissGesture).to(beTrue());
expect(testConfig.showDeviceLogo).to(beTrue());
expect(testConfig.backgroundColor).to(equal([UIColor colorWithRed:(57.0/255.0) green:(78.0/255.0) blue:(96.0/255.0) alpha:1.0]));
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
index 7357b9e9f..50bf195be 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenManagerSpec.m
@@ -5,12 +5,11 @@
#import "SDLFakeViewControllerPresenter.h"
#import "SDLLockScreenConfiguration.h"
#import "SDLLockScreenManager.h"
-#import "SDLLockScreenStatus.h"
+#import "SDLLockScreenStatusInfo.h"
#import "SDLLockScreenStatusManager.h"
#import "SDLLockScreenViewController.h"
#import "SDLNotificationConstants.h"
#import "SDLNotificationDispatcher.h"
-#import "SDLOnLockScreenStatus.h"
#import "SDLOnDriverDistraction.h"
#import "SDLRPCNotificationNotification.h"
@@ -21,11 +20,7 @@
@property (strong, nonatomic) id<SDLViewControllerPresentable> presenter;
@property (strong, nonatomic) SDLLockScreenStatusManager *statusManager;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-@property (strong, nonatomic, nullable) SDLOnLockScreenStatus *lastLockNotification;
-#pragma clang diagnostic pop
-
+@property (strong, nonatomic, nullable) SDLLockScreenStatusInfo *lastLockNotification;
@property (strong, nonatomic, nullable) SDLOnDriverDistraction *lastDriverDistractionNotification;
@property (assign, nonatomic, readwrite, getter=isLockScreenDismissable) BOOL lockScreenDismissable;
@property (assign, nonatomic) BOOL lockScreenDismissedByUser;
@@ -36,49 +31,52 @@ QuickSpecBegin(SDLLockScreenManagerSpec)
describe(@"a lock screen manager", ^{
__block SDLLockScreenManager *testManager = nil;
- __block SDLFakeViewControllerPresenter *fakeViewControllerPresenter = nil;
__block SDLNotificationDispatcher *dispatcherMock = nil;
-
+ __block id fakeViewControllerPresenter = nil;
+
beforeEach(^{
- fakeViewControllerPresenter = [[SDLFakeViewControllerPresenter alloc] init];
- dispatcherMock = OCMClassMock([SDLNotificationDispatcher class]);
+ testManager = nil;
+ dispatcherMock = nil;
+ fakeViewControllerPresenter = nil;
});
-
+
context(@"with a disabled configuration", ^{
beforeEach(^{
+ fakeViewControllerPresenter = OCMPartialMock([[SDLFakeViewControllerPresenter alloc] init]);
+ dispatcherMock = OCMClassMock([SDLNotificationDispatcher class]);
+
testManager = [[SDLLockScreenManager alloc] initWithConfiguration:[SDLLockScreenConfiguration disabledConfiguration] notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
});
it(@"should set properties correctly", ^{
// Note: We can't check the "lockScreenPresented" flag on the Lock Screen Manager because it's a computer property checking the window
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beFalse());
expect(testManager.lockScreenViewController).to(beNil());
});
- describe(@"after it is started", ^{
+ describe(@"after the manager has been started", ^{
beforeEach(^{
[testManager start];
});
it(@"should not have a lock screen controller", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beFalse());
expect(testManager.lockScreenViewController).to(beNil());
});
describe(@"when the lock screen status becomes REQUIRED", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLOnLockScreenStatus *testRequiredStatus = nil;
+ __block SDLLockScreenStatusInfo *testRequiredStatus = nil;
beforeEach(^{
- testRequiredStatus = [[SDLOnLockScreenStatus alloc] init];
+ testRequiredStatus = [[SDLLockScreenStatusInfo alloc] init];
testRequiredStatus.lockScreenStatus = SDLLockScreenStatusRequired;
- [dispatcherMock postNotificationName:SDLDidChangeLockScreenStatusNotification infoObject:testRequiredStatus];
-#pragma clang diagnostic pop
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager userInfo:@{SDLNotificationUserInfoObject: testRequiredStatus}];
});
it(@"should not have presented the lock screen", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ OCMReject([fakeViewControllerPresenter updateLockScreenToShow:[OCMArg any] withCompletionHandler:nil]);
+
+ OCMVerifyAllWithDelay(fakeViewControllerPresenter, 0.5);
});
});
});
@@ -86,11 +84,14 @@ describe(@"a lock screen manager", ^{
context(@"with an enabled configuration", ^{
beforeEach(^{
+ fakeViewControllerPresenter = OCMPartialMock([[SDLFakeViewControllerPresenter alloc] init]);
+ dispatcherMock = OCMClassMock([SDLNotificationDispatcher class]);
+
testManager = [[SDLLockScreenManager alloc] initWithConfiguration:[SDLLockScreenConfiguration enabledConfiguration] notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
});
-
+
it(@"should set properties correctly", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beFalse());
expect(testManager.lockScreenViewController).to(beNil());
});
@@ -98,115 +99,108 @@ describe(@"a lock screen manager", ^{
beforeEach(^{
[testManager start];
});
-
+
it(@"should set up the view controller correctly", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beFalse());
expect(testManager.lockScreenViewController).toNot(beNil());
expect(testManager.lockScreenViewController).to(beAnInstanceOf([SDLLockScreenViewController class]));
});
-
+
describe(@"when the lock screen status becomes REQUIRED", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLOnLockScreenStatus *testRequiredStatus = nil;
-#pragma clang diagnostic pop
+ __block SDLLockScreenStatusInfo *testRequiredStatus = nil;
__block SDLOnDriverDistraction *testDriverDistraction = nil;
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequiredStatus = [[SDLOnLockScreenStatus alloc] init];
+ testRequiredStatus = [[SDLLockScreenStatusInfo alloc] init];
testRequiredStatus.lockScreenStatus = SDLLockScreenStatusRequired;
- SDLRPCNotificationNotification *testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager rpcNotification:testRequiredStatus];
-#pragma clang diagnostic pop
- [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
- });
-
- it(@"should have presented the lock screen", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beTrue());
+
+ testDriverDistraction = [[SDLOnDriverDistraction alloc] init];
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager userInfo:@{SDLNotificationUserInfoObject: testRequiredStatus}];
});
-
- it(@"should not have a vehicle icon", ^{
+
+ it(@"should have presented the lock screen and the lockscreen should not have a vehicle icon", ^{
+ OCMExpect([fakeViewControllerPresenter updateLockScreenToShow:YES withCompletionHandler:[OCMArg any]]);
+
+ OCMVerifyAllWithDelay(fakeViewControllerPresenter, 0.5);
+
expect(((SDLLockScreenViewController *)testManager.lockScreenViewController).vehicleIcon).to(beNil());
});
- describe(@"when a driver distraction notification is posted with lockScreenDismissableEnabled as true", ^{
+ describe(@"when a driver distraction notification is posted with lockScreenDismissableEnabled set to true", ^{
__block SDLRPCNotificationNotification *testDriverDistractionNotification = nil;
beforeEach(^{
- testDriverDistraction = [[SDLOnDriverDistraction alloc] init];
testDriverDistraction.lockScreenDismissalEnabled = @YES;
-
+
testDriverDistractionNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeDriverDistractionStateNotification object:dispatcherMock rpcNotification:testDriverDistraction];
-
+
[[NSNotificationCenter defaultCenter] postNotification:testDriverDistractionNotification];
});
-
+
it(@"should be able to be dismissed", ^{
- expect(testManager.isLockScreenDismissable).toEventually(equal(YES));
+ expect(testManager.isLockScreenDismissable).toEventually(beTrue());
});
});
-
- describe(@"when a driver distraction notification is posted with lockScreenDismissableEnabled as false", ^{
+
+ describe(@"when a driver distraction notification is posted with lockScreenDismissableEnabled set to false", ^{
__block SDLRPCNotificationNotification *testDriverDistractionNotification = nil;
-
+
beforeEach(^{
- testDriverDistraction = [[SDLOnDriverDistraction alloc] init];
- testDriverDistraction.lockScreenDismissalEnabled = @0;
-
- testDriverDistractionNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeDriverDistractionStateNotification object:nil rpcNotification:testDriverDistraction];
-
+ testDriverDistraction.lockScreenDismissalEnabled = @NO;
+
+ testDriverDistractionNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeDriverDistractionStateNotification object:dispatcherMock rpcNotification:testDriverDistraction];
+
[[NSNotificationCenter defaultCenter] postNotification:testDriverDistractionNotification];
});
-
+
it(@"should not be able to be dismissed", ^{
- expect(testManager.isLockScreenDismissable).toEventually(equal(NO));
+ expect(testManager.isLockScreenDismissable).toEventually(beFalse());
});
-
});
-
- describe(@"when a driver distraction notification is posted with lockScreenDismissableEnabled nil bit", ^{
+
+ describe(@"when a driver distraction notification is posted with lockScreenDismissableEnabled set to nil", ^{
__block SDLRPCNotificationNotification *testDriverDistractionNotification = nil;
-
+
beforeEach(^{
- testDriverDistraction = [[SDLOnDriverDistraction alloc] init];
-
- testDriverDistractionNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeDriverDistractionStateNotification object:nil rpcNotification:testDriverDistraction];
-
+ testDriverDistractionNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeDriverDistractionStateNotification object:dispatcherMock rpcNotification:testDriverDistraction];
+
[[NSNotificationCenter defaultCenter] postNotification:testDriverDistractionNotification];
});
-
+
it(@"should not be able to be dismissed", ^{
- expect(testManager.isLockScreenDismissable).toEventually(equal(NO));
+ expect(testManager.isLockScreenDismissable).toEventually(beFalse());
});
-
});
-
+
describe(@"then the manager is stopped", ^{
beforeEach(^{
[testManager stop];
});
-
+
it(@"should have dismissed the lock screen", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ OCMVerify([fakeViewControllerPresenter stopWithCompletionHandler:[OCMArg any]]);
+
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).to(beFalse());
});
});
-
+
describe(@"then the status becomes OFF", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLOnLockScreenStatus *testOffStatus = nil;
+ __block SDLLockScreenStatusInfo *testOffStatus = nil;
beforeEach(^{
- testOffStatus = [[SDLOnLockScreenStatus alloc] init];
+ testOffStatus = [[SDLLockScreenStatusInfo alloc] init];
testOffStatus.lockScreenStatus = SDLLockScreenStatusOff;
- SDLRPCNotificationNotification *testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:nil rpcNotification:testOffStatus];
-#pragma clang diagnostic pop
- [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager userInfo:@{SDLNotificationUserInfoObject: testOffStatus}];
});
-
+
it(@"should have dismissed the lock screen", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ OCMExpect([fakeViewControllerPresenter updateLockScreenToShow:NO withCompletionHandler:[OCMArg any]]);
+
+ OCMVerifyAllWithDelay(fakeViewControllerPresenter, 0.5);
+
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).to(beFalse());
});
});
});
@@ -218,12 +212,16 @@ describe(@"a lock screen manager", ^{
SDLLockScreenConfiguration *testsConfig = [SDLLockScreenConfiguration enabledConfiguration];
beforeEach(^{
+ fakeViewControllerPresenter = OCMPartialMock([[SDLFakeViewControllerPresenter alloc] init]);
+ dispatcherMock = OCMClassMock([SDLNotificationDispatcher class]);
+
testIcon = [UIImage imageNamed:@"testImagePNG" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil];
});
it(@"should should set the vehicle icon on the default lockscreen if showDeviceLogo set to true", ^{
testsConfig.showDeviceLogo = YES;
- fakeViewControllerPresenter.lockViewController = [[SDLLockScreenViewController alloc] init];
+
+ OCMStub([fakeViewControllerPresenter lockViewController]).andReturn([[SDLLockScreenViewController alloc] init]);
testManager = [[SDLLockScreenManager alloc] initWithConfiguration:testsConfig notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
[[NSNotificationCenter defaultCenter] postNotificationName:SDLDidReceiveLockScreenIcon object:nil userInfo:@{ SDLNotificationUserInfoObject: testIcon }];
@@ -233,7 +231,7 @@ describe(@"a lock screen manager", ^{
it(@"should should not set the vehicle icon on the default lockscreen if showDeviceLogo set to false", ^{
testsConfig.showDeviceLogo = NO;
- fakeViewControllerPresenter.lockViewController = [[SDLLockScreenViewController alloc] init];
+ OCMStub([fakeViewControllerPresenter lockViewController]).andReturn([[SDLLockScreenViewController alloc] init]);
testManager = [[SDLLockScreenManager alloc] initWithConfiguration:testsConfig notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
[[NSNotificationCenter defaultCenter] postNotificationName:SDLDidReceiveLockScreenIcon object:nil userInfo:@{ SDLNotificationUserInfoObject: testIcon }];
@@ -244,38 +242,41 @@ describe(@"a lock screen manager", ^{
it(@"should should not modify a custom lockscreen", ^{
testsConfig.showDeviceLogo = YES;
UIViewController *customLockScreen = [[UIViewController alloc] init];
- fakeViewControllerPresenter.lockViewController = customLockScreen;
+ OCMStub([fakeViewControllerPresenter lockViewController]).andReturn(customLockScreen);
testManager = [[SDLLockScreenManager alloc] initWithConfiguration:testsConfig notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
[[NSNotificationCenter defaultCenter] postNotificationName:SDLDidReceiveLockScreenIcon object:nil userInfo:@{ SDLNotificationUserInfoObject: testIcon }];
- expect(fakeViewControllerPresenter.lockViewController).toEventually(equal(customLockScreen));
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).lockViewController).toEventually(equal(customLockScreen));
});
});
context(@"with a custom color configuration", ^{
__block UIColor *testColor = nil;
__block UIImage *testImage = nil;
-
+
beforeEach(^{
+ fakeViewControllerPresenter = OCMPartialMock([[SDLFakeViewControllerPresenter alloc] init]);
+ dispatcherMock = OCMClassMock([SDLNotificationDispatcher class]);
+
testColor = [UIColor blueColor];
testImage = [UIImage imageNamed:@"testImagePNG" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil];
-
+
testManager = [[SDLLockScreenManager alloc] initWithConfiguration:[SDLLockScreenConfiguration enabledConfigurationWithAppIcon:testImage backgroundColor:testColor] notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
});
-
+
it(@"should set properties correctly", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).to(beFalse());
expect(testManager.lockScreenViewController).to(beNil());
});
-
+
describe(@"after it's started", ^{
beforeEach(^{
[testManager start];
});
-
+
it(@"should set up the view controller correctly", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beFalse());
expect(testManager.lockScreenViewController).toNot(beNil());
expect(testManager.lockScreenViewController).to(beAnInstanceOf([SDLLockScreenViewController class]));
expect(((SDLLockScreenViewController *)testManager.lockScreenViewController).backgroundColor).to(equal(testColor));
@@ -283,27 +284,30 @@ describe(@"a lock screen manager", ^{
});
});
});
-
+
context(@"with a custom view controller configuration", ^{
__block UIViewController *testViewController = nil;
-
+
beforeEach(^{
+ fakeViewControllerPresenter = OCMPartialMock([[SDLFakeViewControllerPresenter alloc] init]);
+ dispatcherMock = OCMClassMock([SDLNotificationDispatcher class]);
+
testViewController = [[UIViewController alloc] init];
testManager = [[SDLLockScreenManager alloc] initWithConfiguration:[SDLLockScreenConfiguration enabledConfigurationWithViewController:testViewController] notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
});
-
+
it(@"should set properties correctly", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beFalse());
expect(testManager.lockScreenViewController).to(beNil());
});
-
+
describe(@"after it's started", ^{
beforeEach(^{
[testManager start];
});
-
+
it(@"should set up the view controller correctly", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beFalse());
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beFalse());
expect(testManager.lockScreenViewController).toNot(beNil());
expect(testManager.lockScreenViewController).toNot(beAnInstanceOf([SDLLockScreenViewController class]));
expect(testManager.lockScreenViewController).to(equal(testViewController));
@@ -313,6 +317,9 @@ describe(@"a lock screen manager", ^{
context(@"with a dismissable false configuration", ^{
beforeEach(^{
+ fakeViewControllerPresenter = OCMPartialMock([[SDLFakeViewControllerPresenter alloc] init]);
+ dispatcherMock = OCMClassMock([SDLNotificationDispatcher class]);
+
SDLLockScreenConfiguration *config = [SDLLockScreenConfiguration enabledConfiguration];
config.enableDismissGesture = NO;
@@ -324,11 +331,8 @@ describe(@"a lock screen manager", ^{
__block SDLRPCNotificationNotification *testDriverDistractionNotification = nil;
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLOnLockScreenStatus *status = [[SDLOnLockScreenStatus alloc] init];
+ SDLLockScreenStatusInfo *status = [[SDLLockScreenStatusInfo alloc] init];
status.lockScreenStatus = SDLLockScreenStatusRequired;
-#pragma clang diagnostic pop
testManager.lastLockNotification = status;
SDLOnDriverDistraction *testDriverDistraction = [[SDLOnDriverDistraction alloc] init];
@@ -346,22 +350,12 @@ describe(@"a lock screen manager", ^{
});
describe(@"with an always enabled configuration", ^{
- __block SDLFakeViewControllerPresenter *fakeViewControllerPresenter = nil;
- __block SDLRPCNotificationNotification *testLockStatusNotification = nil;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLOnLockScreenStatus *testStatus = nil;
-#pragma clang diagnostic pop
+ __block SDLLockScreenStatusInfo *testStatus = nil;
beforeEach(^{
- fakeViewControllerPresenter = [[SDLFakeViewControllerPresenter alloc] init];
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testStatus = [[SDLOnLockScreenStatus alloc] init];
-#pragma clang diagnostic pop
+ fakeViewControllerPresenter = OCMPartialMock([[SDLFakeViewControllerPresenter alloc] init]);
+ testStatus = [[SDLLockScreenStatusInfo alloc] init];
SDLLockScreenConfiguration *config = [SDLLockScreenConfiguration enabledConfiguration];
config.displayMode = SDLLockScreenConfigurationDisplayModeAlways;
@@ -371,100 +365,84 @@ describe(@"a lock screen manager", ^{
context(@"receiving a lock screen status of required", ^{
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testStatus.lockScreenStatus = SDLLockScreenStatusRequired;
- testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager rpcNotification:testStatus];
-#pragma clang diagnostic pop
- [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+ OCMStub([fakeViewControllerPresenter lockViewController]).andReturn([[SDLLockScreenViewController alloc] init]);
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager userInfo:@{SDLNotificationUserInfoObject: testStatus}];
});
it(@"should present the lock screen if not already presented", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beTrue());
+ OCMExpect([fakeViewControllerPresenter updateLockScreenToShow:YES withCompletionHandler:[OCMArg any]]);
+
+ OCMVerifyAllWithDelay(fakeViewControllerPresenter, 0.5);
+
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beTrue());
});
});
context(@"receiving a lock screen status of off", ^{
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testStatus.lockScreenStatus = SDLLockScreenStatusOff;
- testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager rpcNotification:testStatus];
-#pragma clang diagnostic pop
- [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+ OCMStub([fakeViewControllerPresenter lockViewController]).andReturn([[SDLLockScreenViewController alloc] init]);
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager userInfo:@{SDLNotificationUserInfoObject: testStatus}];
});
it(@"should present the lock screen if not already presented", ^{
- expect(fakeViewControllerPresenter.shouldShowLockScreen).toEventually(beTrue());
+ OCMExpect([fakeViewControllerPresenter updateLockScreenToShow:YES withCompletionHandler:[OCMArg any]]);
+
+ OCMVerifyAllWithDelay(fakeViewControllerPresenter, 0.5);
+
+ expect(((SDLFakeViewControllerPresenter *)fakeViewControllerPresenter).shouldShowLockScreen).toEventually(beTrue());
});
});
});
describe(@"A lock screen status of OPTIONAL", ^{
__block SDLLockScreenConfiguration *testLockScreenConfig = nil;
- __block id mockViewControllerPresenter = nil;
- __block SDLRPCNotificationNotification *testLockStatusNotification = nil;
+ __block SDLLockScreenStatusInfo *testOptionalStatus;
beforeEach(^{
- mockViewControllerPresenter = OCMClassMock([SDLFakeViewControllerPresenter class]);
+ fakeViewControllerPresenter = OCMClassMock([SDLFakeViewControllerPresenter class]);
testLockScreenConfig = [SDLLockScreenConfiguration enabledConfiguration];
+
+ testOptionalStatus = [[SDLLockScreenStatusInfo alloc] init];
+ testOptionalStatus.lockScreenStatus = SDLLockScreenStatusOptional;
});
- context(@"showInOptionalState is true", ^{
+ context(@"displayMode is set to always show the lockscreen", ^{
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testLockScreenConfig.showInOptionalState = true;
-#pragma clang diagnostic pop
-
- testManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:dispatcherMock presenter:mockViewControllerPresenter];
+ testLockScreenConfig.displayMode = SDLLockScreenConfigurationDisplayModeOptionalOrRequired;
+ testManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
testManager.canPresent = YES;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLOnLockScreenStatus *testOptionalStatus = [[SDLOnLockScreenStatus alloc] init];
- testOptionalStatus.lockScreenStatus = SDLLockScreenStatusOptional;
- testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager rpcNotification:testOptionalStatus];
-#pragma clang diagnostic pop
});
it(@"should present the lock screen if not already presented", ^{
- OCMStub([mockViewControllerPresenter lockViewController]).andReturn([OCMArg any]);
- OCMExpect([mockViewControllerPresenter updateLockScreenToShow:YES withCompletionHandler:[OCMArg any]]).ignoringNonObjectArgs();
+ OCMStub([fakeViewControllerPresenter lockViewController]).andReturn([OCMArg any]);
+ OCMExpect([fakeViewControllerPresenter updateLockScreenToShow:YES withCompletionHandler:[OCMArg any]]).ignoringNonObjectArgs();
- [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager userInfo:@{SDLNotificationUserInfoObject: testOptionalStatus}];
- OCMVerifyAllWithDelay(mockViewControllerPresenter, 0.5);
+ OCMVerifyAllWithDelay(fakeViewControllerPresenter, 0.5);
});
});
- context(@"showInOptionalState is false", ^{
+ context(@"displayMode is set to never show the lockscreen", ^{
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testLockScreenConfig.showInOptionalState = false;
-#pragma clang diagnostic pop
-
- testManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:dispatcherMock presenter:mockViewControllerPresenter];
+ testLockScreenConfig.displayMode = SDLLockScreenConfigurationDisplayModeNever;
+ testManager = [[SDLLockScreenManager alloc] initWithConfiguration:testLockScreenConfig notificationDispatcher:dispatcherMock presenter:fakeViewControllerPresenter];
testManager.canPresent = YES;
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLOnLockScreenStatus *testOptionalStatus = [[SDLOnLockScreenStatus alloc] init];
- testOptionalStatus.lockScreenStatus = SDLLockScreenStatusOptional;
- testLockStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager rpcNotification:testOptionalStatus];
-#pragma clang diagnostic pop
});
it(@"should dismiss the lock screen if already presented", ^{
- OCMStub([mockViewControllerPresenter lockViewController]).andReturn([OCMArg any]);
- OCMExpect([mockViewControllerPresenter updateLockScreenToShow:NO withCompletionHandler:[OCMArg any]]).ignoringNonObjectArgs();
+ OCMStub([fakeViewControllerPresenter lockViewController]).andReturn([OCMArg any]);
+ OCMExpect([fakeViewControllerPresenter updateLockScreenToShow:NO withCompletionHandler:[OCMArg any]]).ignoringNonObjectArgs();
- [[NSNotificationCenter defaultCenter] postNotification:testLockStatusNotification];
+ [[NSNotificationCenter defaultCenter] postNotificationName:SDLDidChangeLockScreenStatusNotification object:testManager.statusManager userInfo:@{SDLNotificationUserInfoObject: testOptionalStatus}];
- OCMVerifyAllWithDelay(mockViewControllerPresenter, 0.5);
+ OCMVerifyAllWithDelay(fakeViewControllerPresenter, 0.5);
});
});
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m
index ab8b281fd..485b02b6d 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m
@@ -35,32 +35,6 @@ describe(@"a menu cell", ^{
expect(testCell.subCells).to(beNil());
});
- it(@"should initialize properly as a submenu item", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testCell = [[SDLMenuCell alloc] initWithTitle:someTitle subCells:someSubcells];
-
- expect(testCell.title).to(equal(someTitle));
- expect(testCell.icon).to(beNil());
- expect(testCell.voiceCommands).to(beNil());
- expect(testCell.subCells).to(equal(someSubcells));
- expect(testCell.submenuLayout).to(beNil());
- #pragma clang diagnostic pop
- });
-
- it(@"should initialize properly as a submenu item with icon", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testCell = [[SDLMenuCell alloc] initWithTitle:someTitle icon:someArtwork subCells:someSubcells];
-
- expect(testCell.title).to(equal(someTitle));
- expect(testCell.icon).to(equal(someArtwork));
- expect(testCell.voiceCommands).to(beNil());
- expect(testCell.subCells).to(equal(someSubcells));
- expect(testCell.submenuLayout).to(beNil());
-#pragma clang diagnostic pop
- });
-
it(@"should initialize properly as a submenu item with icon and layout", ^{
testCell = [[SDLMenuCell alloc] initWithTitle:someTitle icon:someArtwork submenuLayout:testLayout subCells:someSubcells];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m
index 757c6411b..d4b910005 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m
@@ -7,7 +7,7 @@
QuickSpecBegin(SDLPermissionFilterSpec)
-describe(@"A filter", ^{
+describe(@"A permissions filter", ^{
__block NSString *testRPCName1 = nil;
__block NSString *testRPCName2 = nil;
__block SDLPermissionElement *testPermissionElement1 = nil;
@@ -24,88 +24,43 @@ describe(@"A filter", ^{
__block NSArray<SDLPermissionElement *> *testPermissionElements = nil;
__block SDLPermissionGroupType testGroupType = SDLPermissionGroupTypeAny;
__block SDLPermissionFilter *testFilter = nil;
-
- __block NSDictionary<SDLPermissionRPCName, NSNumber<SDLBool> *> *testObserverReturnChangedDict = nil;
- __block NSDictionary<SDLPermissionRPCName, SDLRPCPermissionStatus *> *testRPCPermissionStatusReturnChangedDict = nil;
+ __block NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *testRPCPermissionStatusReturnChangedDict = nil;
beforeEach(^{
testPermissionElements = @[testPermissionElement1, testPermissionElement2];
testGroupType = SDLPermissionGroupTypeAny;
+
+ testFilter = [[SDLPermissionFilter alloc] initWithPermissions:testPermissionElements groupType:testGroupType permissionStatusHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ testRPCPermissionStatusReturnChangedDict = change;
+ }];
+ });
+
+ it(@"should set the permission elements array correctly", ^{
+ expect(testFilter.permissionElements).to(equal(testPermissionElements));
});
- context(@"using initWithRPCNames:changeType:permissionsHandler:rpcPermissionStatusHandler", ^{
- context(@"using SDLPermissionsChangedHandler init", ^{
- beforeEach(^{
- testFilter = [[SDLPermissionFilter alloc] initWithPermissions:testPermissionElements groupType:testGroupType permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- testObserverReturnChangedDict = change;
- }];
- });
-
- it(@"should set the rpcNames array correctly", ^{
- expect([testFilter rpcNamesFromPermissionElements:testPermissionElements]).to(equal([testFilter rpcNamesFromPermissionElements:testPermissionElements]));
- });
-
- describe(@"it should set up the observer correctly", ^{
- __block NSDictionary<SDLPermissionRPCName,NSNumber<SDLBool> *> *testObserverChangedDict = nil;
- __block NSNumber<SDLBool> *testRPCName1Bool = nil;
- __block NSNumber<SDLBool> *testRPCName2Bool = nil;
- __block SDLPermissionGroupStatus testObserverGroupStatus = SDLPermissionGroupStatusUnknown;
-
- beforeEach(^{
- testRPCName1Bool = @YES;
- testRPCName2Bool = @NO;
- testObserverChangedDict = @{testRPCName1: testRPCName1Bool,
- testRPCName2: testRPCName2Bool};
- testObserverGroupStatus = SDLPermissionGroupStatusMixed;
-
- testFilter.handler(testObserverChangedDict, testObserverGroupStatus);
- });
-
- it(@"should call the changedDict correctly", ^{
- expect(testObserverReturnChangedDict).to(equal(testObserverChangedDict));
- });
-
- it(@"should call the status correctly", ^{
- expect(@(testObserverGroupStatus)).to(equal(@(testObserverGroupStatus)));
- });
- });
+ describe(@"it should set up the observer correctly", ^{
+ __block NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *testObserverChangedDict = nil;
+ __block SDLRPCPermissionStatus *rpcPermissionStatus1 = nil;
+ __block SDLRPCPermissionStatus *rpcPermissionStatus2 = nil;
+ __block SDLPermissionGroupStatus testObserverGroupStatus = SDLPermissionGroupStatusUnknown;
+
+ beforeEach(^{
+ rpcPermissionStatus1 = [[SDLRPCPermissionStatus alloc] initWithRPCName:testRPCName1 isRPCAllowed:YES rpcParameters:nil];
+ rpcPermissionStatus2 = [[SDLRPCPermissionStatus alloc] initWithRPCName:testRPCName2 isRPCAllowed:NO rpcParameters:nil];
+ testObserverChangedDict = @{testRPCName1: rpcPermissionStatus1,
+ testRPCName2: rpcPermissionStatus2};
+ testObserverGroupStatus = SDLPermissionGroupStatusMixed;
+
+ testFilter.rpcPermissionStatusHandler(testObserverChangedDict, testObserverGroupStatus);
+ });
+
+ it(@"should call the changedDict correctly", ^{
+ expect(testRPCPermissionStatusReturnChangedDict).to(equal(testObserverChangedDict));
});
- context(@"using the SDLRPCPermissionStatusChangedHandler init", ^{
- beforeEach(^{
- testFilter = [[SDLPermissionFilter alloc] initWithPermissions:testPermissionElements groupType:testGroupType permissionStatusHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) {
- testRPCPermissionStatusReturnChangedDict = change;
- }];
- });
-
- it(@"should set the permission elements array correctly", ^{
- expect(testFilter.permissionElements).to(equal(testPermissionElements));
- });
-
- describe(@"it should set up the observer correctly", ^{
- __block NSDictionary<SDLPermissionRPCName, SDLRPCPermissionStatus *> *testObserverChangedDict = nil;
- __block SDLRPCPermissionStatus *rpcPermissionStatus1 = nil;
- __block SDLRPCPermissionStatus *rpcPermissionStatus2 = nil;
- __block SDLPermissionGroupStatus testObserverGroupStatus = SDLPermissionGroupStatusUnknown;
-
- beforeEach(^{
- rpcPermissionStatus1 = [[SDLRPCPermissionStatus alloc] initWithRPCName:testRPCName1 isRPCAllowed:YES rpcParameters:nil];
- rpcPermissionStatus2 = [[SDLRPCPermissionStatus alloc] initWithRPCName:testRPCName2 isRPCAllowed:NO rpcParameters:nil];
- testObserverChangedDict = @{testRPCName1: rpcPermissionStatus1,
- testRPCName2: rpcPermissionStatus2};
- testObserverGroupStatus = SDLPermissionGroupStatusMixed;
-
- testFilter.rpcPermissionStatusHandler(testObserverChangedDict, testObserverGroupStatus);
- });
-
- it(@"should call the changedDict correctly", ^{
- expect(testRPCPermissionStatusReturnChangedDict).to(equal(testObserverChangedDict));
- });
-
- it(@"should call the status correctly", ^{
- expect(@(testObserverGroupStatus)).to(equal(@(testObserverGroupStatus)));
- });
- });
+ it(@"should call the status correctly", ^{
+ expect(@(testObserverGroupStatus)).to(equal(@(testObserverGroupStatus)));
});
});
});
@@ -115,23 +70,14 @@ describe(@"A filter", ^{
__block SDLPermissionFilter *testCopiedFilter = nil;
beforeEach(^{
- testFilter = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {}];
+ testFilter = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionStatusHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {}];
testCopiedFilter = [testFilter copy];
});
- it(@"should say copied filters are not the same instance", ^{
+ it(@"should copy correctly", ^{
expect(testCopiedFilter).toNot(beIdenticalTo(testFilter));
- });
-
- it(@"should copy the identifier correctly", ^{
expect(testCopiedFilter.identifier).to(equal(testFilter.identifier));
- });
-
- it(@"should copy the filter array correctly", ^{
expect(testCopiedFilter.permissionElements).to(equal(testFilter.permissionElements));
- });
-
- it(@"should copy the change type correctly", ^{
expect(@(testCopiedFilter.groupType)).to(equal(@(testFilter.groupType)));
});
});
@@ -142,10 +88,10 @@ describe(@"A filter", ^{
__block SDLPermissionFilter *testDifferentFilter = nil;
beforeEach(^{
- testSameFilter1 = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:(SDLPermissionGroupType)SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {}];
+ testSameFilter1 = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionStatusHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {}];
testSameFilter2 = [testSameFilter1 copy];
- testDifferentFilter = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:(SDLPermissionGroupType)SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {}];
+ testDifferentFilter = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionStatusHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {}];
});
it(@"should say copied filters are the same", ^{
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m
index 05020ef37..9888aab69 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m
@@ -17,7 +17,7 @@
@interface SDLPermissionManager ()
-@property (strong, nonatomic) NSMutableDictionary<SDLPermissionRPCName, SDLPermissionItem *> *permissions;
+@property (strong, nonatomic) NSMutableDictionary<SDLRPCFunctionName, SDLPermissionItem *> *permissions;
@property (strong, nonatomic) NSMutableArray<SDLPermissionFilter *> *filters;
@property (copy, nonatomic, nullable) SDLHMILevel currentHMILevel;
@property (assign, nonatomic) BOOL requiresEncryption;
@@ -64,6 +64,7 @@ describe(@"SDLPermissionsManager", ^{
__block SDLPermissionElement *testPermissionElementAllAllowed = nil;
__block SDLPermissionElement *testPermissionElementFullLimitedAllowed = nil;
+ __block SDLPermissionElement *testPermissionElementFullLimitedBackgroundAllowed = nil;
__block SDLPermissionElement *testPermissionElementDisallowed = nil;
beforeEach(^{
@@ -152,6 +153,7 @@ describe(@"SDLPermissionsManager", ^{
// Permission Elements
testPermissionElementAllAllowed = [[SDLPermissionElement alloc] initWithRPCName:testRPCNameAllAllowed parameterPermissions:@[testRPCParameterNameAllAllowed]];
testPermissionElementFullLimitedAllowed = [[SDLPermissionElement alloc] initWithRPCName:testRPCNameFullLimitedAllowed parameterPermissions:@[testRPCParameterNameFullLimitedAllowed]];
+ testPermissionElementFullLimitedBackgroundAllowed = [[SDLPermissionElement alloc] initWithRPCName:testRPCNameFullLimitedBackgroundAllowed parameterPermissions: nil];
testPermissionElementDisallowed = [[SDLPermissionElement alloc] initWithRPCName:testRPCNameAllDisallowed parameterPermissions:@[testRPCParameterNameAllDisallowed]];
});
@@ -170,118 +172,47 @@ describe(@"SDLPermissionsManager", ^{
__block BOOL testResultBOOL = NO;
context(@"when no permissions exist", ^{
- context(@"deprecated isRPCAllowed: method", ^{
- beforeEach(^{
- someRPCName = @"some rpc name";
-
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultBOOL = [testPermissionsManager isRPCAllowed:someRPCName];
- #pragma clang diagnostic pop
- });
-
- it(@"should not be allowed", ^{
- expect(testResultBOOL).to(beFalse());
- });
- });
-
- context(@"isRPCNameAllowed: method", ^{
- beforeEach(^{
- someRPCFunctionName = @"SomeRPCFunctionName";
- testResultBOOL = [testPermissionsManager isRPCNameAllowed:someRPCName];
- });
+ it(@"should not be allowed", ^{
+ someRPCFunctionName = @"SomeRPCFunctionName";
+ testResultBOOL = [testPermissionsManager isRPCNameAllowed:someRPCName];
- it(@"should not be allowed", ^{
- expect(testResultBOOL).to(beFalse());
- });
+ expect(testResultBOOL).to(beFalse());
});
});
context(@"when permissions exist but no HMI level", ^{
- context(@"deprecated isRPCAllowed: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultBOOL = [testPermissionsManager isRPCAllowed:testRPCNameAllAllowed];
- #pragma clang diagnostic pop
- });
-
- it(@"should not be allowed", ^{
- expect(testResultBOOL).to(beFalse());
- });
- });
-
- context(@"isRPCNameAllowed: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- testResultBOOL = [testPermissionsManager isRPCNameAllowed:someRPCName];
- });
+ it(@"should not be allowed", ^{
+ [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
+ testResultBOOL = [testPermissionsManager isRPCNameAllowed:someRPCName];
- it(@"should not be allowed", ^{
- expect(testResultBOOL).to(beFalse());
- });
+ expect(testResultBOOL).to(beFalse());
});
});
context(@"when permissions exist", ^{
- context(@"deprecated isRPCAllowed: method", ^{
- context(@"and the permission is allowed", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultBOOL = [testPermissionsManager isRPCAllowed:testRPCNameAllAllowed];
- #pragma clang diagnostic pop
- });
+ context(@"and the permission is allowed", ^{
+ beforeEach(^{
+ [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
+ [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- it(@"should be allowed", ^{
- expect(testResultBOOL).to(beTrue());
- });
+ testResultBOOL = [testPermissionsManager isRPCNameAllowed:testRPCNameAllAllowed];
});
- context(@"and the permission is denied", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultBOOL = [testPermissionsManager isRPCAllowed:testRPCNameAllDisallowed];
- #pragma clang diagnostic pop
- });
-
- it(@"should be denied", ^{
- expect(testResultBOOL).to(beFalse());
- });
+ it(@"should be allowed", ^{
+ expect(testResultBOOL).to(beTrue());
});
});
- context(@"isRPCNameAllowed: method", ^{
- context(@"and the permission is allowed", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
-
- testResultBOOL = [testPermissionsManager isRPCNameAllowed:testRPCNameAllAllowed];
- });
+ context(@"and the permission is denied", ^{
+ beforeEach(^{
+ [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
+ [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- it(@"should be allowed", ^{
- expect(testResultBOOL).to(beTrue());
- });
+ testResultBOOL = [testPermissionsManager isRPCNameAllowed:testRPCNameAllDisallowed];
});
- context(@"and the permission is denied", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
-
- testResultBOOL = [testPermissionsManager isRPCNameAllowed:testRPCNameAllDisallowed];
- });
-
- it(@"should be denied", ^{
- expect(testResultBOOL).to(beFalse());
- });
+ it(@"should be denied", ^{
+ expect(testResultBOOL).to(beFalse());
});
});
});
@@ -291,123 +222,48 @@ describe(@"SDLPermissionsManager", ^{
__block SDLPermissionGroupStatus testResultStatus = SDLPermissionGroupStatusUnknown;
context(@"with no permissions data", ^{
- context(@"deprecated groupStatusOfRPCs: method", ^{
- beforeEach(^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultStatus = [testPermissionsManager groupStatusOfRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed]];
- #pragma clang diagnostic pop
- });
-
- it(@"should return unknown", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusUnknown)));
- });
- });
+ it(@"should return unknown", ^{
+ testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed]];
- context(@"groupStatusOfRPCPermissions: method", ^{
- beforeEach(^{
- testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed]];
- });
-
- it(@"should return unknown", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusUnknown)));
- });
+ expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusUnknown)));
});
});
context(@"for an all allowed group", ^{
- context(@"deprecated groupStatusOfRPCs: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultStatus = [testPermissionsManager groupStatusOfRPCs:@[testRPCNameAllAllowed, testRPCNameFullLimitedAllowed]];
- #pragma clang diagnostic pop
- });
-
- it(@"should return allowed", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusAllowed)));
- });
- });
-
- context(@"groupStatusOfRPCPermissions: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
+ it(@"should return allowed", ^{
+ [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
+ [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed]];
- });
+ testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed]];
- it(@"should return allowed", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusAllowed)));
- });
+ expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusAllowed)));
});
});
context(@"for an all disallowed group", ^{
- context(@"deprecated groupStatusOfRPCs: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultStatus = [testPermissionsManager groupStatusOfRPCs:@[testRPCNameFullLimitedAllowed, testRPCNameAllDisallowed]];
- #pragma clang diagnostic pop
- });
-
- it(@"should return disallowed", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusDisallowed)));
- });
- });
-
- context(@"groupStatusOfRPCPermissions: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
+ it(@"should return disallowed", ^{
+ [[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
+ [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementFullLimitedAllowed, testPermissionElementDisallowed]];
- });
+ testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementFullLimitedAllowed, testPermissionElementDisallowed]];
- it(@"should return disallowed", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusDisallowed)));
- });
+ expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusDisallowed)));
});
});
context(@"for a mixed group", ^{
- context(@"deprecated groupStatusOfRPCs: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultStatus = [testPermissionsManager groupStatusOfRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed]];
- #pragma clang diagnostic pop
- });
-
- it(@"should return mixed", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusMixed)));
- });
- });
-
- context(@"groupStatusOfRPCPermissions: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
+ it(@"should return mixed", ^{
+ [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
+ [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]];
- });
+ testResultStatus = [testPermissionsManager groupStatusOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]];
- it(@"should return mixed", ^{
- expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusMixed)));
- });
+ expect(@(testResultStatus)).to(equal(@(SDLPermissionGroupStatusMixed)));
});
});
});
describe(@"checking the status of RPCs", ^{
- __block NSDictionary<SDLPermissionRPCName, NSNumber *> *testResultPermissionStatusDict = nil;
__block NSDictionary<SDLRPCFunctionName, SDLRPCPermissionStatus *> *testResultRPCPermissionStatusDict = nil;
__block SDLRPCPermissionStatus *allowedResultStatus = nil;
__block SDLRPCPermissionStatus *disallowedResultStatus = nil;
@@ -418,87 +274,49 @@ describe(@"SDLPermissionsManager", ^{
__block SDLRPCPermissionStatus *testDisallowedStatus = nil;
context(@"with no permissions data", ^{
- context(@"deprecated statusOfRPCs: method", ^{
- beforeEach(^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultPermissionStatusDict = [testPermissionsManager statusOfRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed]];
- #pragma clang diagnostic pop
- });
-
- it(@"should return correct permission statuses", ^{
- expect(testResultPermissionStatusDict[testRPCNameAllAllowed]).to(equal(@NO));
- expect(testResultPermissionStatusDict[testRPCNameAllDisallowed]).to(equal(@NO));
- });
- });
+ it(@"should return the correct permission statuses", ^{
+ testResultRPCPermissionStatusDict = [testPermissionsManager statusesOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]];
+ allowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementAllAllowed.rpcName];
+ disallowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementDisallowed.rpcName];
- context(@"statusesOfRPCPermissions: method", ^{
- beforeEach(^{
- testResultRPCPermissionStatusDict = [testPermissionsManager statusesOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]];
- allowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementAllAllowed.rpcName];
- disallowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementDisallowed.rpcName];
-
- testAllowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllAllowed, nil];
- testAllowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementAllAllowed.rpcName isRPCAllowed:YES rpcParameters:testAllowedDict];
- testDisallowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllDisallowed, nil];
- testDisallowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementDisallowed.rpcName isRPCAllowed:YES rpcParameters:testDisallowedDict];
- });
+ testAllowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllAllowed, nil];
+ testAllowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementAllAllowed.rpcName isRPCAllowed:YES rpcParameters:testAllowedDict];
+ testDisallowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllDisallowed, nil];
+ testDisallowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementDisallowed.rpcName isRPCAllowed:YES rpcParameters:testDisallowedDict];
- it(@"should return the correct permission statuses", ^{
- expect(allowedResultStatus.rpcName).to(equal(testAllowedStatus.rpcName));
- expect(allowedResultStatus.rpcParameters).to(equal(testAllowedStatus.rpcParameters));
- expect(allowedResultStatus.rpcAllowed).to(equal(@NO));
+ expect(allowedResultStatus.rpcName).to(equal(testAllowedStatus.rpcName));
+ expect(allowedResultStatus.rpcParameters).to(equal(testAllowedStatus.rpcParameters));
+ expect(allowedResultStatus.rpcAllowed).to(equal(@NO));
- expect(disallowedResultStatus.rpcName).to(equal(testDisallowedStatus.rpcName));
- expect(disallowedResultStatus.rpcParameters).to(equal(testDisallowedStatus.rpcParameters));
- expect(disallowedResultStatus.rpcAllowed).to(equal(@NO));
- });
+ expect(disallowedResultStatus.rpcName).to(equal(testDisallowedStatus.rpcName));
+ expect(disallowedResultStatus.rpcParameters).to(equal(testDisallowedStatus.rpcParameters));
+ expect(disallowedResultStatus.rpcAllowed).to(equal(@NO));
});
});
context(@"with permissions data", ^{
- context(@"deprecated statusOfRPCs: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResultPermissionStatusDict = [testPermissionsManager statusOfRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed]];
- #pragma clang diagnostic pop
- });
-
- it(@"should return correct permission statuses", ^{
- expect(testResultPermissionStatusDict[testRPCNameAllAllowed]).to(equal(@YES));
- expect(testResultPermissionStatusDict[testRPCNameAllDisallowed]).to(equal(@NO));
- });
- });
-
- context(@"statusesOfRPCPermissions: method", ^{
- beforeEach(^{
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
+ it(@"should return the correct permission statuses", ^{
+ [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
+ [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- testResultRPCPermissionStatusDict = [testPermissionsManager statusesOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]];
+ testResultRPCPermissionStatusDict = [testPermissionsManager statusesOfRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]];
- allowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementAllAllowed.rpcName];
- disallowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementDisallowed.rpcName];
+ allowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementAllAllowed.rpcName];
+ disallowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementDisallowed.rpcName];
- testAllowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(1), testRPCParameterNameAllAllowed, nil];
- testAllowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementAllAllowed.rpcName isRPCAllowed:YES rpcParameters:testAllowedDict];
+ testAllowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(1), testRPCParameterNameAllAllowed, nil];
+ testAllowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementAllAllowed.rpcName isRPCAllowed:YES rpcParameters:testAllowedDict];
- testDisallowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllDisallowed, nil];
- testDisallowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementDisallowed.rpcName isRPCAllowed:NO rpcParameters:testDisallowedDict];
- });
+ testDisallowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllDisallowed, nil];
+ testDisallowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementDisallowed.rpcName isRPCAllowed:NO rpcParameters:testDisallowedDict];
- it(@"should return the correct permission statuses", ^{
- expect(allowedResultStatus.rpcName).to(equal(testAllowedStatus.rpcName));
- expect(allowedResultStatus.rpcParameters).to(equal(testAllowedStatus.rpcParameters));
- expect(allowedResultStatus.rpcAllowed).to(equal(testAllowedStatus.rpcAllowed));
+ expect(allowedResultStatus.rpcName).to(equal(testAllowedStatus.rpcName));
+ expect(allowedResultStatus.rpcParameters).to(equal(testAllowedStatus.rpcParameters));
+ expect(allowedResultStatus.rpcAllowed).to(equal(testAllowedStatus.rpcAllowed));
- expect(disallowedResultStatus.rpcName).to(equal(testDisallowedStatus.rpcName));
- expect(disallowedResultStatus.rpcParameters).to(equal(testDisallowedStatus.rpcParameters));
- expect(disallowedResultStatus.rpcAllowed).to(equal(testDisallowedStatus.rpcAllowed));
- });
+ expect(disallowedResultStatus.rpcName).to(equal(testDisallowedStatus.rpcName));
+ expect(disallowedResultStatus.rpcParameters).to(equal(testDisallowedStatus.rpcParameters));
+ expect(disallowedResultStatus.rpcAllowed).to(equal(testDisallowedStatus.rpcAllowed));
});
});
});
@@ -508,654 +326,402 @@ describe(@"SDLPermissionsManager", ^{
context(@"when no data is present", ^{
__block BOOL testObserverCalled = NO;
__block SDLPermissionGroupStatus testObserverStatus = SDLPermissionGroupStatusUnknown;
- __block NSDictionary<SDLPermissionRPCName,NSNumber *> *testObserverChangeDict = nil;
+ __block NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> *testObserverChangeDict = nil;
beforeEach(^{
testObserverCalled = NO;
testObserverStatus = SDLPermissionGroupStatusUnknown;
testObserverChangeDict = nil;
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- testObserverChangeDict = change;
+
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
+ testObserverChangeDict = updatedPermissionStatuses;
testObserverStatus = status;
testObserverCalled = YES;
}];
- #pragma clang diagnostic pop
});
it(@"should return correct permission statuses", ^{
expect(@(testObserverCalled)).to(equal(@YES));
expect(@(testObserverStatus)).to(equal(@(SDLPermissionGroupStatusUnknown)));
- expect(testObserverChangeDict[testRPCNameAllAllowed]).to(equal(@NO));
- expect(testObserverChangeDict[testRPCNameAllDisallowed]).to(equal(@NO));
+ expect(testObserverChangeDict[testRPCNameAllAllowed].rpcAllowed).to(equal(@NO));
+ expect(testObserverChangeDict[testRPCNameAllDisallowed].rpcAllowed).to(equal(@NO));
});
});
context(@"when data is already present", ^{
__block NSInteger numberOfTimesObserverCalled = 0;
- __block NSDictionary<SDLPermissionRPCName,NSNumber *> *testObserverBlockChangedDict = nil;
+ __block NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> *testObserverBlockChangedDict = nil;
__block SDLPermissionGroupStatus testObserverReturnStatus = SDLPermissionGroupStatusUnknown;
+ beforeEach(^{
+ numberOfTimesObserverCalled = 0;
+ testObserverBlockChangedDict = nil;
+ testObserverReturnStatus = SDLPermissionGroupStatusUnknown;
+ });
+
context(@"to match an ANY observer", ^{
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
-
// Post the notification before setting the observer to make sure data is already present
// HMI Full & Limited allowed
[[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- // This should be called twice, once for each RPC being observed. It should be called immediately since data should already be present
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName, NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
+ // This should be called should be called immediately since the `groupType` is `any`
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
numberOfTimesObserverCalled++;
- testObserverBlockChangedDict = changedDict;
+ testObserverBlockChangedDict = updatedPermissionStatuses;
testObserverReturnStatus = status;
}];
- #pragma clang diagnostic pop
});
it(@"should call the observer with proper status", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
- expect(testObserverBlockChangedDict[testRPCNameAllAllowed]).to(equal(@YES));
- expect(testObserverBlockChangedDict[testRPCNameAllDisallowed]).to(equal(@NO));
- expect(testObserverBlockChangedDict.allKeys).to(haveCount(@2));
- expect(@(testObserverReturnStatus)).to(equal(@(SDLPermissionGroupStatusMixed)));
+ expect(numberOfTimesObserverCalled).to(equal(1));
+ expect(testObserverBlockChangedDict[testRPCNameAllAllowed].rpcAllowed).to(beTrue());
+ expect(testObserverBlockChangedDict[testRPCNameAllDisallowed].rpcAllowed).to(beFalse());
+ expect(testObserverBlockChangedDict.allKeys).to(haveCount(2));
+ expect(@(testObserverReturnStatus)).to(equal(SDLPermissionGroupStatusMixed));
});
});
- context(@"to match an all allowed observer", ^{
+ context(@"to match an All Allowed observer", ^{
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
-
// Post the notification before setting the observer to make sure data is already present
// HMI Full & Limited allowed, hmi level LIMITED
[[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- // This should be called twice, once for each RPC being observed. It should be called immediately since data should already be present
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ // This should be called called immediately since data is already present and all rpcs are allowed
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
numberOfTimesObserverCalled++;
- testObserverBlockChangedDict = change;
+ testObserverBlockChangedDict = updatedPermissionStatuses;
testObserverReturnStatus = status;
}];
- #pragma clang diagnostic pop
});
it(@"should call the observer with proper status", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
- expect(testObserverBlockChangedDict[testRPCNameAllAllowed]).to(equal(@YES));
- expect(testObserverBlockChangedDict[testRPCNameFullLimitedAllowed]).to(equal(@YES));
- expect(testObserverBlockChangedDict.allKeys).to(haveCount(@2));
- expect(@(testObserverReturnStatus)).to(equal(@(SDLPermissionGroupStatusAllowed)));
+ expect(numberOfTimesObserverCalled).to(equal(1));
+ expect(testObserverBlockChangedDict[testRPCNameAllAllowed].rpcAllowed).to(beTrue());
+ expect(testObserverBlockChangedDict[testRPCNameFullLimitedAllowed].rpcAllowed).to(beTrue());
+ expect(testObserverBlockChangedDict.allKeys).to(haveCount(2));
+ expect(@(testObserverReturnStatus)).to(equal(SDLPermissionGroupStatusAllowed));
});
});
- context(@"that does not match an all allowed observer", ^{
+ context(@"that does not match an All Allowed observer", ^{
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
-
// Post the notification before setting the observer to make sure data is already present
// HMI Full & Limited allowed, hmi level NONE
[[NSNotificationCenter defaultCenter] postNotification:noneHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- // This should be called twice, once for each RPC being observed. It should be called immediately since data should already be present
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllDisallowed, testRPCNameFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ // This should not be called at all since not all rpcs are allowed
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementDisallowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
numberOfTimesObserverCalled++;
+ testObserverBlockChangedDict = updatedPermissionStatuses;
testObserverReturnStatus = status;
}];
- #pragma clang diagnostic pop
});
- it(@"should call the observer with status Disallowed", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
- expect(@(testObserverReturnStatus)).to(equal(@(SDLPermissionGroupStatusDisallowed)));
+ it(@"should not call the observer", ^{
+ expect(numberOfTimesObserverCalled).to(equal(0));
+ expect(testObserverBlockChangedDict).to(beNil());
+ expect(@(testObserverReturnStatus)).to(equal(SDLPermissionGroupStatusUnknown));
});
});
});
});
- describe(@"adding a new observer with subscribeToRPCPermissions:groupType:Handler", ^{
- context(@"when no data is present", ^{
- __block BOOL testObserverCalled = NO;
-
- beforeEach(^{
- testObserverCalled = NO;
- [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- testObserverCalled = YES;
- }];
- });
-
- it(@"should be called", ^{
- expect(testObserverCalled).to(beTrue());
- });
- });
-
- context(@"when data is present", ^{
- __block BOOL testObserverCalled = NO;
-
- beforeEach(^{
- testObserverCalled = NO;
-
- // Post the notification before setting the observer to make sure data is already present
- // HMI Full & Limited allowed
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
-
- // This should not be called even with data currently present, the handler will only be called when an permissions update occurs after the RPC is subscribed to
- [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- testObserverCalled = YES;
- }];
- });
-
- it(@"should be called", ^{
- expect(@(testObserverCalled)).to(beTrue());
- });
- });
- });
-
- context(@"updating an observer with new permission data", ^{
+ context(@"getting new permission data", ^{
__block NSInteger numberOfTimesObserverCalled = 0;
-
- __block SDLOnPermissionsChange *testPermissionChangeUpdate = nil;
- __block SDLPermissionItem *testPermissionUpdated = nil;
- __block NSMutableArray<NSDictionary<SDLPermissionRPCName,NSNumber*> *> *changeDicts = nil;
+ __block NSMutableArray<NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> *> *changeDicts = nil;
__block NSMutableArray<NSNumber<SDLUInt> *> *testStatuses = nil;
- context(@"to match an ANY observer", ^{
- beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
- changeDicts = [NSMutableArray array];
- testStatuses = [NSMutableArray array];
+ beforeEach(^{
+ numberOfTimesObserverCalled = 0;
+ changeDicts = [NSMutableArray array];
+ testStatuses = [NSMutableArray array];
+ });
+ context(@"with an ANY group type observer", ^{
+ beforeEach(^{
// Post the notification before setting the observer to make sure data is already present
// HMI Full & Limited allowed, hmi level LIMITED
[[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
// Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
numberOfTimesObserverCalled++;
- [changeDicts addObject:changedDict];
+ [changeDicts addObject:updatedPermissionStatuses];
}];
- #pragma clang diagnostic pop
+ });
+ it(@"should notify the observer when permissions have changed", ^{
// Create a permission update disallowing our current HMI level for the observed permission
- SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
testHMIPermissionsUpdated.allowed = @[SDLHMILevelBackground, SDLHMILevelFull];
testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelLimited, SDLHMILevelNone];
- testPermissionUpdated = [[SDLPermissionItem alloc] init];
+ SDLPermissionItem *testPermissionUpdated = [[SDLPermissionItem alloc] init];
testPermissionUpdated.rpcName = testRPCNameAllAllowed;
testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
- testPermissionUpdated.parameterPermissions = testParameterPermissions;
+ testPermissionUpdated.parameterPermissions = [[SDLParameterPermissions alloc] init];
- testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
+ SDLOnPermissionsChange *testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
// Send the permission update
SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
[[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- });
- it(@"should call the observer twice", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@2));
- });
+ expect(numberOfTimesObserverCalled).to(equal(2));
- it(@"should have proper data in the first change dict", ^{
expect(changeDicts[0].allKeys).to(contain(testRPCNameAllAllowed));
expect(changeDicts[0].allKeys).to(contain(testRPCNameAllDisallowed));
+ SDLRPCPermissionStatus *allAllowed1 = changeDicts[0][testRPCNameAllAllowed];
+ expect(allAllowed1.rpcAllowed).to(beTrue());
+ SDLRPCPermissionStatus *allDisallowed1 = changeDicts[0][testRPCNameAllDisallowed];
+ expect(allDisallowed1.rpcAllowed).to(beFalse());
- NSNumber<SDLBool> *allAllowed = changeDicts[0][testRPCNameAllAllowed];
- expect(allAllowed).to(equal(@YES));
-
- NSNumber<SDLBool> *allDisallowed = changeDicts[0][testRPCNameAllDisallowed];
- expect(allDisallowed).to(equal(@NO));
- });
-
- it(@"should have the proper data in the second change dict", ^{
expect(changeDicts[1].allKeys).to(contain(testRPCNameAllAllowed));
expect(changeDicts[1].allKeys).to(contain(testRPCNameAllDisallowed));
-
- NSNumber<SDLBool> *allAllowed = changeDicts[1][testRPCNameAllAllowed];
- expect(allAllowed).to(equal(@NO));
-
- NSNumber<SDLBool> *allDisallowed = changeDicts[1][testRPCNameAllDisallowed];
- expect(allDisallowed).to(equal(@NO));
+ SDLRPCPermissionStatus *allAllowed2 = changeDicts[1][testRPCNameAllAllowed];
+ expect(allAllowed2.rpcAllowed).to(beFalse());
+ SDLRPCPermissionStatus *allDisallowed2 = changeDicts[1][testRPCNameAllDisallowed];
+ expect(allDisallowed2.rpcAllowed).to(beFalse());
});
- describe(@"when the permission has not changed", ^{
- __block SDLOnPermissionsChange *testPermissionChangeUpdateNoChange = nil;
- __block SDLPermissionItem *testPermissionUpdatedNoChange = nil;
-
- beforeEach(^{
- numberOfTimesObserverCalled = 0;
-
- // Create a permission update disallowing our current HMI level for the observed permission
- SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
- SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
- testHMIPermissionsUpdated.allowed = @[SDLHMILevelBackground, SDLHMILevelFull];
- testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelLimited, SDLHMILevelNone];
-
- testPermissionUpdatedNoChange = [[SDLPermissionItem alloc] init];
- testPermissionUpdatedNoChange.rpcName = testRPCNameAllAllowed;
- testPermissionUpdatedNoChange.hmiPermissions = testHMIPermissionsUpdated;
- testPermissionUpdatedNoChange.parameterPermissions = testParameterPermissions;
+ it(@"should not notify the observer if permissions have not changed", ^{
+ SDLOnPermissionsChange *testNoPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
+ testNoPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionElementAllAllowed];
- testPermissionChangeUpdateNoChange = [[SDLOnPermissionsChange alloc] init];
- testPermissionChangeUpdateNoChange.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
+ // Send the permission update
+ SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testNoPermissionChangeUpdate];
+ [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- // Send the permission update
- SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
- [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- });
+ expect(numberOfTimesObserverCalled).to(equal(1));
- it(@"should not call the filter observer again", ^{
- expect(numberOfTimesObserverCalled).to(equal(0));
- });
+ expect(changeDicts[0].allKeys).to(contain(testRPCNameAllAllowed));
+ expect(changeDicts[0].allKeys).to(contain(testRPCNameAllDisallowed));
+ SDLRPCPermissionStatus *allAllowed = changeDicts[0][testRPCNameAllAllowed];
+ expect(allAllowed.rpcAllowed).to(beTrue());
+ SDLRPCPermissionStatus *allDisallowed = changeDicts[0][testRPCNameAllDisallowed];
+ expect(allDisallowed.rpcAllowed).to(beFalse());
});
});
- context(@"to match an all allowed observer", ^{
+ context(@"with an All Allowed group type observer", ^{
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
- changeDicts = [NSMutableArray array];
- testStatuses = [NSMutableArray array];
-
// Post the notification before setting the observer to make sure data is already present
// HMI Full & Limited allowed, hmi level BACKGROUND
[[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
});
- context(@"so that it becomes All Allowed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllDisallowed, testRPCNameFullLimitedBackgroundAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:change];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
-
- // Create a permission update allowing our current HMI level for the observed permission
- SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
- SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
- testHMIPermissionsUpdated.allowed = @[SDLHMILevelLimited, SDLHMILevelNone, SDLHMILevelBackground, SDLHMILevelFull];
- testHMIPermissionsUpdated.userDisallowed = @[];
-
- testPermissionUpdated = [[SDLPermissionItem alloc] init];
- testPermissionUpdated.rpcName = testRPCNameAllDisallowed;
- testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
- testPermissionUpdated.parameterPermissions = testParameterPermissions;
-
- testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
- testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
-
- // Send the permission update
- SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
- [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- });
-
- it(@"should call the observer twice", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@2));
- });
-
- it(@"should have proper data in the first change dict", ^{
- expect(changeDicts[0].allKeys).to(haveCount(@2));
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusMixed)));
- });
-
- it(@"should have the proper data in the second change dict", ^{
- expect(changeDicts[1].allKeys).to(haveCount(@2));
- expect(testStatuses[1]).to(equal(@(SDLPermissionGroupStatusAllowed)));
- });
- });
-
- context(@"so that it goes from All Allowed to mixed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:change];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
-
- // Create a permission update disallowing our current HMI level for the observed permission
- SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
- SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
- testHMIPermissionsUpdated.allowed = @[];
- testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelBackground, SDLHMILevelFull, SDLHMILevelLimited, SDLHMILevelNone];
-
- testPermissionUpdated = [[SDLPermissionItem alloc] init];
- testPermissionUpdated.rpcName = testRPCNameAllAllowed;
- testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
- testPermissionUpdated.parameterPermissions = testParameterPermissions;
-
- testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
- testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
+ it(@"should notify the observer when permissions change from some-not-allowed to all-allowed", ^{
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
+ numberOfTimesObserverCalled++;
+ [changeDicts addObject:updatedPermissionStatuses];
+ [testStatuses addObject:@(status)];
+ }];
- // Send the permission update
- SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
- [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- });
+ SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
+ testHMIPermissionsUpdated.allowed = @[SDLHMILevelBackground, SDLHMILevelFull, SDLHMILevelLimited];
+ testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelNone];
- it(@"should call the observer twice", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@2));
- });
+ SDLParameterPermissions *updatedParameterPermissions = [[SDLParameterPermissions alloc] init];
+ updatedParameterPermissions.userDisallowed = @[];
+ updatedParameterPermissions.allowed = @[testRPCNameFullLimitedAllowed];
- it(@"should have proper data in the first change dict", ^{
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusAllowed)));
- expect(changeDicts[0].allKeys).to(contain(testRPCNameAllAllowed));
+ SDLPermissionItem *testPermissionUpdated = [[SDLPermissionItem alloc] init];
+ testPermissionUpdated.rpcName = testRPCNameFullLimitedAllowed;
+ testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
+ testPermissionUpdated.parameterPermissions = updatedParameterPermissions;
- NSNumber<SDLBool> *isAllowed = changeDicts[0][testRPCNameAllAllowed];
- expect(isAllowed).to(equal(@YES));
- });
+ SDLOnPermissionsChange *testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
+ testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
- it(@"should have the proper data in the second change dict", ^{
- expect(testStatuses[1]).to(equal(@(SDLPermissionGroupStatusDisallowed)));
- expect(changeDicts[1].allKeys).to(contain(testRPCNameAllAllowed));
+ // Send the permission update
+ SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
+ [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- NSNumber<SDLBool> *isAllowed = changeDicts[1][testRPCNameAllAllowed];
- expect(isAllowed).to(equal(@NO));
- });
+ expect(numberOfTimesObserverCalled).to(equal(1));
+ expect(testStatuses[0]).to(equal(SDLPermissionGroupStatusAllowed));
+ expect(changeDicts[0].allKeys).to(contain(testRPCNameFullLimitedAllowed));
+ SDLRPCPermissionStatus *isAllowed = changeDicts[0][testRPCNameFullLimitedAllowed];
+ expect(isAllowed.rpcAllowed).to(beTrue());
});
- });
- context(@"to not match an all allowed observer", ^{
- beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
- changeDicts = [NSMutableArray array];
- testStatuses = [NSMutableArray array];
+ it(@"should notify the observer when permissions change from all-allowed to some-not-allowed", ^{
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
+ numberOfTimesObserverCalled++;
+ [changeDicts addObject:updatedPermissionStatuses];
+ [testStatuses addObject:@(status)];
+ }];
- // Post the notification before setting the observer to make sure data is already present
- // HMI Full & Limited allowed, hmi level BACKGROUND
- [[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- });
+ // Create a permission update disallowing our current HMI level for the observed permission
+ SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
+ SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
+ testHMIPermissionsUpdated.allowed = @[];
+ testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelBackground, SDLHMILevelFull, SDLHMILevelLimited, SDLHMILevelNone];
- context(@"from mixed to disallowed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:change];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
+ SDLPermissionItem *testPermissionUpdated = [[SDLPermissionItem alloc] init];
+ testPermissionUpdated.rpcName = testRPCNameAllAllowed;
+ testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
+ testPermissionUpdated.parameterPermissions = testParameterPermissions;
- // Create a permission update disallowing our current HMI level for the observed permission
- SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
- SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
- testHMIPermissionsUpdated.allowed = @[];
- testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelBackground, SDLHMILevelFull, SDLHMILevelLimited, SDLHMILevelNone];
+ SDLOnPermissionsChange *testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
+ testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
- testPermissionUpdated = [[SDLPermissionItem alloc] init];
- testPermissionUpdated.rpcName = testRPCNameAllAllowed;
- testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
- testPermissionUpdated.parameterPermissions = testParameterPermissions;
+ // Send the permission update
+ SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
+ [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
- testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
+ expect(numberOfTimesObserverCalled).to(equal(2));
- // Send the permission update
- SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
- [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- });
+ expect(testStatuses[0]).to(equal(SDLPermissionGroupStatusAllowed));
+ expect(changeDicts[0].allKeys).to(contain(testRPCNameAllAllowed));
+ SDLRPCPermissionStatus *isAllowed1 = changeDicts[0][testRPCNameAllAllowed];
+ expect(isAllowed1.rpcAllowed).to(beTrue());
- it(@"should call the observer with a mixed status", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusMixed)));
- });
+ expect(testStatuses[1]).to(equal(SDLPermissionGroupStatusDisallowed));
+ expect(changeDicts[1].allKeys).to(contain(testRPCNameAllAllowed));
+ SDLRPCPermissionStatus *isAllowed2 = changeDicts[1][testRPCNameAllAllowed];
+ expect(isAllowed2.rpcAllowed).to(beFalse());
});
- context(@"from disallowed to mixed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameFullLimitedAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:change];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
+ it(@"should not notify the observer when permissions change from all-not-allowed (mixed) to all-not-allowed (disallowed)", ^{
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementDisallowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
+ numberOfTimesObserverCalled++;
+ [changeDicts addObject:updatedPermissionStatuses];
+ [testStatuses addObject:@(status)];
+ }];
- // Create a permission update disallowing our current HMI level for the observed permission
- SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
- SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
- testHMIPermissionsUpdated.allowed = @[SDLHMILevelLimited, SDLHMILevelBackground];
- testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelFull, SDLHMILevelNone];
+ // Create a permission update disallowing our current HMI level for the observed permission
+ SDLParameterPermissions *testParameterPermissions = [[SDLParameterPermissions alloc] init];
+ SDLHMIPermissions *testHMIPermissionsUpdated = [[SDLHMIPermissions alloc] init];
+ testHMIPermissionsUpdated.allowed = @[];
+ testHMIPermissionsUpdated.userDisallowed = @[SDLHMILevelBackground, SDLHMILevelFull, SDLHMILevelLimited, SDLHMILevelNone];
- testPermissionUpdated = [[SDLPermissionItem alloc] init];
- testPermissionUpdated.rpcName = testRPCNameAllAllowed;
- testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
- testPermissionUpdated.parameterPermissions = testParameterPermissions;
+ SDLPermissionItem *testPermissionUpdated = [[SDLPermissionItem alloc] init];
+ testPermissionUpdated.rpcName = testRPCNameAllAllowed;
+ testPermissionUpdated.hmiPermissions = testHMIPermissionsUpdated;
+ testPermissionUpdated.parameterPermissions = testParameterPermissions;
- testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
- testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
+ SDLOnPermissionsChange *testPermissionChangeUpdate = [[SDLOnPermissionsChange alloc] init];
+ testPermissionChangeUpdate.permissionItem = [NSArray arrayWithObject:testPermissionUpdated];
- // Send the permission update
- SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
- [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- });
+ // Send the permission update
+ SDLRPCNotificationNotification *updatedNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangePermissionsNotification object:nil rpcNotification:testPermissionChangeUpdate];
+ [[NSNotificationCenter defaultCenter] postNotification:updatedNotification];
- it(@"should call the observer", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusDisallowed)));
- });
+ expect(numberOfTimesObserverCalled).to(equal(0));
+ expect(changeDicts).to(beEmpty());
+ expect(testStatuses).to(beEmpty());
});
});
});
- context(@"updating an observer with a new HMI level", ^{
+ context(@"getting a new HMI level", ^{
__block NSInteger numberOfTimesObserverCalled = 0;
- __block NSMutableArray<NSDictionary<SDLPermissionRPCName,NSNumber *> *> *changeDicts = nil;
+ __block NSMutableArray<NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> *> *changeDicts = nil;
__block NSMutableArray<NSNumber<SDLUInt> *> *testStatuses = nil;
- context(@"to match an ANY observer", ^{
- beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
- changeDicts = [NSMutableArray array];
- testStatuses = [NSMutableArray array];
+ beforeEach(^{
+ numberOfTimesObserverCalled = 0;
+ changeDicts = [NSMutableArray array];
+ testStatuses = [NSMutableArray array];
+ });
+ context(@"with an ANY group type observer", ^{
+ beforeEach(^{
// Post the notification before setting the observer to make sure data is already present
// HMI Full & Limited allowed, hmi level BACKGROUND
[[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
numberOfTimesObserverCalled++;
- [changeDicts addObject:changedDict];
+ [changeDicts addObject:updatedPermissionStatuses];
[testStatuses addObject:@(status)];
}];
- #pragma clang diagnostic pop
// Upgrade the HMI level to LIMITED
[[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
});
- it(@"should call the observer twice", ^{
+ it(@"should notify the observer when the hmi level changes to allow or disallow any of the RPCs", ^{
expect(@(numberOfTimesObserverCalled)).to(equal(@2));
- });
-
- it(@"should have proper data in the first change dict", ^{
- NSNumber<SDLBool> *allAllowed = changeDicts[0][testRPCNameAllAllowed];
- expect(allAllowed).to(equal(@YES));
-
- NSNumber<SDLBool> *fullLimitedAllowed = changeDicts[0][testRPCNameFullLimitedAllowed];
- expect(fullLimitedAllowed).to(equal(@NO));
+ SDLRPCPermissionStatus *allAllowed1 = changeDicts[0][testRPCNameAllAllowed];
+ expect(allAllowed1.rpcAllowed).to(beTrue());
+ SDLRPCPermissionStatus *fullLimitedAllowed1 = changeDicts[0][testRPCNameFullLimitedAllowed];
+ expect(fullLimitedAllowed1.rpcAllowed).to(beFalse());
expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusMixed)));
- });
-
- it(@"should have the proper data in the second change dict", ^{
- NSNumber<SDLBool> *allAllowed = changeDicts[1][testRPCNameAllAllowed];
- expect(allAllowed).to(equal(@YES));
-
- NSNumber<SDLBool> *fullLimitedAllowed = changeDicts[1][testRPCNameFullLimitedAllowed];
- expect(fullLimitedAllowed).to(equal(@YES));
+ SDLRPCPermissionStatus *allAllowed2 = changeDicts[1][testRPCNameAllAllowed];
+ expect(allAllowed2.rpcAllowed).to(beTrue());
+ SDLRPCPermissionStatus *fullLimitedAllowed2 = changeDicts[1][testRPCNameFullLimitedAllowed];
+ expect(fullLimitedAllowed2.rpcAllowed).to(beTrue());
expect(testStatuses[1]).to(equal(@(SDLPermissionGroupStatusAllowed)));
});
});
- context(@"to match an all allowed observer", ^{
+ context(@"with an All Allowed group type observer", ^{
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
- changeDicts = [NSMutableArray array];
- testStatuses = [NSMutableArray array];
-
// Post the notification before setting the observer to make sure data is already present
// HMI Full & Limited allowed, hmi level BACKGROUND
[[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
});
- context(@"so that it becomes All Allowed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:changedDict];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
-
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- });
-
- it(@"should call the observer", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@2));
-
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusDisallowed)));
- expect(testStatuses[1]).to(equal(@(SDLPermissionGroupStatusAllowed)));
- });
- });
-
- context(@"so that it goes from All Allowed to at least some disallowed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameFullLimitedBackgroundAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:changedDict];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
-
- [[NSNotificationCenter defaultCenter] postNotification:noneHMINotification];
- });
-
- it(@"should call the observer twice", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@2));
- });
-
- it(@"should have proper data in the first change dict", ^{
- expect(changeDicts[0].allKeys).to(contain(testRPCNameFullLimitedBackgroundAllowed));
-
- NSNumber<SDLBool> *isAllowed = changeDicts[0][testRPCNameFullLimitedBackgroundAllowed];
- expect(isAllowed).to(equal(@YES));
-
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusAllowed)));
- });
-
- it(@"should have the proper data in the second change dict", ^{
- expect(changeDicts[1].allKeys).to(contain(testRPCNameFullLimitedBackgroundAllowed));
+ it(@"should notify the observer when the hmi level changes the status from some-not-allowed to all-allowed", ^{
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
+ numberOfTimesObserverCalled++;
+ [changeDicts addObject:updatedPermissionStatuses];
+ [testStatuses addObject:@(status)];
+ }];
- NSNumber<SDLBool> *isAllowed = changeDicts[1][testRPCNameFullLimitedBackgroundAllowed];
- expect(isAllowed).to(equal(@NO));
+ [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- expect(testStatuses[1]).to(equal(@(SDLPermissionGroupStatusDisallowed)));
- });
+ expect(numberOfTimesObserverCalled).to(equal(1));
+ expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusAllowed)));
});
- });
-
- context(@"to not match an all allowed observer", ^{
- beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
- changeDicts = [NSMutableArray array];
- testStatuses = [NSMutableArray array];
- // Post the notification before setting the observer to make sure data is already present
- // HMI Full & Limited allowed, hmi level BACKGROUND
- [[NSNotificationCenter defaultCenter] postNotification:backgroundHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
- });
+ it(@"should notify the observer when the hmi level changes the status from all-allowed to some-not-allowed", ^{
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementFullLimitedBackgroundAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
+ numberOfTimesObserverCalled++;
+ [changeDicts addObject:updatedPermissionStatuses];
+ [testStatuses addObject:@(status)];
+ }];
- context(@"that goes from disallowed to mixed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameFullLimitedAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:changedDict];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
+ [[NSNotificationCenter defaultCenter] postNotification:noneHMINotification];
- [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
- });
+ expect(numberOfTimesObserverCalled).to(equal(2));
- it(@"should call the observer", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
+ expect(changeDicts[0].allKeys).to(contain(testRPCNameFullLimitedBackgroundAllowed));
+ SDLRPCPermissionStatus *allAllowed1 = changeDicts[0][testRPCNameFullLimitedBackgroundAllowed];
+ expect(allAllowed1.rpcAllowed).to(beTrue());
+ expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusAllowed)));
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusDisallowed)));
- });
+ expect(changeDicts[1].allKeys).to(contain(testRPCNameFullLimitedBackgroundAllowed));
+ SDLRPCPermissionStatus *allAllowed2 = changeDicts[1][testRPCNameFullLimitedBackgroundAllowed];
+ expect(allAllowed2.rpcAllowed).to(beFalse());
+ expect(testStatuses[1]).to(equal(@(SDLPermissionGroupStatusDisallowed)));
});
- context(@"that goes from mixed to disallowed", ^{
- beforeEach(^{
- // Set an observer that should be called immediately for the preexisting data, then called again when new data is sent
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameFullLimitedAllowed, testRPCNameFullLimitedBackgroundAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
- [changeDicts addObject:changedDict];
- [testStatuses addObject:@(status)];
- }];
- #pragma clang diagnostic pop
+ it(@"should not notify the observer when the hmi level changes but the status has not changed from all-allowed to some-not-allowed or from some-not-allowed to all-allowed", ^{
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementFullLimitedBackgroundAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAllAllowed withHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull updatedPermissionStatuses, SDLPermissionGroupStatus status) {
+ numberOfTimesObserverCalled++;
+ [changeDicts addObject:updatedPermissionStatuses];
+ [testStatuses addObject:@(status)];
+ }];
- [[NSNotificationCenter defaultCenter] postNotification:noneHMINotification];
- });
+ [[NSNotificationCenter defaultCenter] postNotification:noneHMINotification];
- it(@"should call the observer", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
- expect(testStatuses[0]).to(equal(@(SDLPermissionGroupStatusMixed)));
- });
+ expect(numberOfTimesObserverCalled).to(equal(0));
+ expect(changeDicts).to(beEmpty());
+ expect(testStatuses).to(beEmpty());
});
});
});
@@ -1251,91 +817,77 @@ describe(@"SDLPermissionsManager", ^{
__block NSInteger numberOfTimesObserverCalled = 0;
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
-
- // Add two observers
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- NSUUID *observerId = [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName, NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
+ // Add observer
+ SDLPermissionObserverIdentifier observerIdentifier = [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
numberOfTimesObserverCalled++;
}];
- #pragma clang diagnostic pop
- // Remove one observer
- [testPermissionsManager removeObserverForIdentifier:observerId];
+ // Remove the observer
+ [testPermissionsManager removeObserverForIdentifier:observerIdentifier];
// Post a notification
[[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
});
- it(@"should only call the observer once", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@1));
+ it(@"should call the observer once (it should be called immediately after the subscription due to the `groupType` being set to `any`)", ^{
+ expect(numberOfTimesObserverCalled).to(equal(1));
});
});
context(@"removing a single observer and leaving one remaining", ^{
- __block NSUInteger numberOfTimesObserverCalled = 0;
+ __block NSInteger numberOfTimesObserver1Called = 0;
+ __block NSInteger numberOfTimesObserver2Called = 0;
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
-
// Add two observers
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- NSUUID *testRemovedObserverId = [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
+ SDLPermissionObserverIdentifier observerIdentifier1 = [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ numberOfTimesObserver1Called++;
}];
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ numberOfTimesObserver2Called++;
}];
- #pragma clang diagnostic pop
- // Remove one observer
- [testPermissionsManager removeObserverForIdentifier:testRemovedObserverId];
+ // Remove one of the observers
+ [testPermissionsManager removeObserverForIdentifier:observerIdentifier1];
// Post a notification
[[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
});
- it(@"should call three observers", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@3));
+ it(@"should call the observers a total three times (the first two should be called immediately after the subscription due to the `groupType` being set to `any`)", ^{
+ expect(numberOfTimesObserver1Called).to(equal(1));
+ expect(numberOfTimesObserver2Called).to(equal(2));
});
});
context(@"removing all observers", ^{
- __block NSInteger numberOfTimesObserverCalled = 0;
+ __block NSInteger numberOfTimesObserver1Called = 0;
+ __block NSInteger numberOfTimesObserver2Called = 0;
beforeEach(^{
- // Reset vars
- numberOfTimesObserverCalled = 0;
-
// Add two observers
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ numberOfTimesObserver1Called++;
}];
- [testPermissionsManager addObserverForRPCs:@[testRPCNameAllAllowed, testRPCNameAllDisallowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {
- numberOfTimesObserverCalled++;
+ [testPermissionsManager subscribeToRPCPermissions:@[testPermissionElementAllAllowed, testPermissionElementFullLimitedAllowed] groupType:SDLPermissionGroupTypeAny withHandler:^(NSDictionary<SDLRPCFunctionName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {
+ numberOfTimesObserver2Called++;
}];
- #pragma clang diagnostic pop
// Remove all observers
[testPermissionsManager removeAllObservers];
- // Add some permissions
+ // Post a notification
[[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification];
[[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification];
});
- it(@"should not call the observer", ^{
- expect(@(numberOfTimesObserverCalled)).to(equal(@2));
+ it(@"should call each observer once (it should be called immediately after the subscription due to the `groupType` being set to `any`)", ^{
+ expect(numberOfTimesObserver1Called).to(equal(1));
+ expect(numberOfTimesObserver2Called).to(equal(1));
});
});
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLPreloadChoicesOperationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLPreloadChoicesOperationSpec.m
index 986a01c61..c36e574fe 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLPreloadChoicesOperationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLPreloadChoicesOperationSpec.m
@@ -22,6 +22,7 @@ describe(@"a preload choices operation", ^{
__block TestConnectionManager *testConnectionManager = nil;
__block SDLFileManager *testFileManager = nil;
__block SDLPreloadChoicesOperation *testOp = nil;
+ __block NSString *testDisplayName = @"SDL_GENERIC";
__block NSData *cellArtData = [@"testart" dataUsingEncoding:NSUTF8StringEncoding];
@@ -80,7 +81,7 @@ describe(@"a preload choices operation", ^{
primaryTextField.name = SDLTextFieldNameMenuName;
windowCapability.textFields = @[];
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
[testOp start];
NSArray<SDLCreateInteractionChoiceSet *> *receivedRequests = (NSArray<SDLCreateInteractionChoiceSet *> *)testConnectionManager.receivedRequests;
@@ -91,7 +92,7 @@ describe(@"a preload choices operation", ^{
context(@"only main text capabilities", ^{
it(@"should skip to preloading cells", ^{
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
[testOp start];
expect(@(testOp.currentState)).to(equal(SDLPreloadChoicesOperationStatePreloadingChoices));
@@ -106,7 +107,7 @@ describe(@"a preload choices operation", ^{
OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO);
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
[testOp start];
});
@@ -133,7 +134,7 @@ describe(@"a preload choices operation", ^{
beforeEach(^{
OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(YES);
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
[testOp start];
});
@@ -148,7 +149,7 @@ describe(@"a preload choices operation", ^{
context(@"when artworks are static icons", ^{
beforeEach(^{
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithStaticIcon];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithStaticIcon];
[testOp start];
});
@@ -161,7 +162,7 @@ describe(@"a preload choices operation", ^{
beforeEach(^{
OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO);
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithArtwork];
[testOp start];
});
@@ -191,7 +192,7 @@ describe(@"a preload choices operation", ^{
describe(@"assembling choices", ^{
it(@"should be correct with no text and VR required", ^{
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
[testOp start];
NSArray<SDLCreateInteractionChoiceSet *> *receivedRequests = (NSArray<SDLCreateInteractionChoiceSet *> *)testConnectionManager.receivedRequests;
@@ -207,7 +208,7 @@ describe(@"a preload choices operation", ^{
primaryTextField.name = SDLTextFieldNameMenuName;
windowCapability.textFields = @[primaryTextField];
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
[testOp start];
NSArray<SDLCreateInteractionChoiceSet *> *receivedRequests = (NSArray<SDLCreateInteractionChoiceSet *> *)testConnectionManager.receivedRequests;
@@ -226,7 +227,7 @@ describe(@"a preload choices operation", ^{
secondaryTextField.name = SDLTextFieldNameSecondaryText;
windowCapability.textFields = @[primaryTextField, secondaryTextField];
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
[testOp start];
NSArray<SDLCreateInteractionChoiceSet *> *receivedRequests = (NSArray<SDLCreateInteractionChoiceSet *> *)testConnectionManager.receivedRequests;
@@ -247,7 +248,7 @@ describe(@"a preload choices operation", ^{
tertiaryTextField.name = SDLTextFieldNameTertiaryText;
windowCapability.textFields = @[primaryTextField, secondaryTextField, tertiaryTextField];
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:NO cellsToPreload:cellsWithoutArtwork];
[testOp start];
NSArray<SDLCreateInteractionChoiceSet *> *receivedRequests = (NSArray<SDLCreateInteractionChoiceSet *> *)testConnectionManager.receivedRequests;
@@ -261,7 +262,7 @@ describe(@"a preload choices operation", ^{
it(@"should be correct with VR optional", ^{
- testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:SDLDisplayTypeGeneric windowCapability:windowCapability isVROptional:YES cellsToPreload:cellsWithoutArtwork];
+ testOp = [[SDLPreloadChoicesOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager displayName:testDisplayName windowCapability:windowCapability isVROptional:YES cellsToPreload:cellsWithoutArtwork];
[testOp start];
NSArray<SDLCreateInteractionChoiceSet *> *receivedRequests = (NSArray<SDLCreateInteractionChoiceSet *> *)testConnectionManager.receivedRequests;
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m
index 93d5e5829..4a39a0676 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingAudioLifecycleManagerSpec.m
@@ -315,7 +315,6 @@ describe(@"the streaming audio manager", ^{
});
it(@"should have set all the right properties", ^{
- expect([[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeAudio]).to(equal(testMTU));
expect(streamingLifecycleManager.audioEncrypted).to(equal(YES));
expect(streamingLifecycleManager.currentAudioStreamState).to(equal(SDLAudioStreamManagerStateReady));
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingMediaConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingMediaConfigurationSpec.m
index c3c934d55..5132e0551 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingMediaConfigurationSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingMediaConfigurationSpec.m
@@ -11,85 +11,118 @@ QuickSpecBegin(SDLStreamingMediaConfigurationSpec)
describe(@"a streaming media configuration", ^{
__block SDLStreamingMediaConfiguration *testConfig = nil;
+ __block SDLFakeSecurityManager *testFakeSecurityManager = nil;
+ __block UIViewController *testViewController = nil;
+ __block SDLStreamingEncryptionFlag testEncryptionFlag = SDLStreamingEncryptionFlagNone;
+ __block SDLFakeStreamingManagerDataSource *testDataSource = nil;
+ __block NSDictionary<NSString *, id> *testVideoEncoderSettings = nil;
+
+ beforeEach(^{
+ testFakeSecurityManager = [[SDLFakeSecurityManager alloc] init];
+ testDataSource = [[SDLFakeStreamingManagerDataSource alloc] init];
+ testVideoEncoderSettings = @{
+ (__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate : @1
+ };
+ testViewController = [[UIViewController alloc] init];
+ testEncryptionFlag = SDLStreamingEncryptionFlagAuthenticateAndEncrypt;
+ });
- context(@"That is created with a full initializer", ^{
- __block SDLFakeSecurityManager *testFakeSecurityManager = nil;
- __block SDLStreamingEncryptionFlag testEncryptionFlag = SDLStreamingEncryptionFlagNone;
- __block SDLFakeStreamingManagerDataSource *testDataSource = nil;
- __block NSDictionary<NSString *, id> *testVideoEncoderSettings = nil;
- __block UIViewController *testViewController = nil;
-
- beforeEach(^{
- testFakeSecurityManager = [[SDLFakeSecurityManager alloc] init];
- testDataSource = [[SDLFakeStreamingManagerDataSource alloc] init];
- testVideoEncoderSettings = @{
- (__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate : @1
- };
- testViewController = [[UIViewController alloc] init];
- testEncryptionFlag = SDLStreamingEncryptionFlagAuthenticateAndEncrypt;
-
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testConfig = [[SDLStreamingMediaConfiguration alloc] initWithSecurityManagers:@[testFakeSecurityManager.class] encryptionFlag:testEncryptionFlag videoSettings:testVideoEncoderSettings dataSource:testDataSource rootViewController:testViewController];
- #pragma clang diagnostic pop
- });
+ context(@"That is created without the default secure/insecure settings", ^{
+ it(@"should have properly set all properties with initWithEncryptionFlag:videoSettings:dataSource:rootViewController:", ^{
+ testConfig = [[SDLStreamingMediaConfiguration alloc] initWithEncryptionFlag:testEncryptionFlag videoSettings:testVideoEncoderSettings dataSource:testDataSource rootViewController:testViewController];
- it(@"should have properly set properties using deprecated init", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testConfig.securityManagers).to(contain(testFakeSecurityManager.class));
-#pragma clang diagnostic pop
- expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(SDLStreamingEncryptionFlagAuthenticateAndEncrypt)));
+ expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(testEncryptionFlag)));
expect(testConfig.customVideoEncoderSettings).to(equal(testVideoEncoderSettings));
expect(testConfig.allowMultipleViewControllerOrientations).to(equal(NO));
expect(testConfig.dataSource).to(equal(testDataSource));
expect(testConfig.rootViewController).to(equal(testViewController));
+ expect(@(testConfig.carWindowRenderingType)).to(equal(@(SDLCarWindowRenderingTypeLayer)));
+ expect(testConfig.enableForcedFramerateSync).to(beTrue());
});
- it(@"should have properly set properties using deprecated init", ^{
- testConfig = [[SDLStreamingMediaConfiguration alloc] initWithEncryptionFlag:testEncryptionFlag videoSettings:testVideoEncoderSettings dataSource:testDataSource rootViewController:testViewController ];
+ it(@"should have properly set and insecure configuration with init", ^{
+ testConfig = [[SDLStreamingMediaConfiguration alloc] init];
- expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(SDLStreamingEncryptionFlagAuthenticateAndEncrypt)));
- expect(testConfig.customVideoEncoderSettings).to(equal(testVideoEncoderSettings));
+ expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(SDLStreamingEncryptionFlagNone)));
+ expect(testConfig.customVideoEncoderSettings).to(beNil());
expect(testConfig.allowMultipleViewControllerOrientations).to(equal(NO));
- expect(testConfig.dataSource).to(equal(testDataSource));
- expect(testConfig.rootViewController).to(equal(testViewController));
+ expect(testConfig.dataSource).to(beNil());
+ expect(testConfig.rootViewController).to(beNil());
+ expect(@(testConfig.carWindowRenderingType)).to(equal(@(SDLCarWindowRenderingTypeLayer)));
+ expect(testConfig.enableForcedFramerateSync).to(beTrue());
});
});
context(@"that is created with insecure settings", ^{
- beforeEach(^{
+ it(@"should have properly set properties with insecureConfiguration", ^{
testConfig = [SDLStreamingMediaConfiguration insecureConfiguration];
- });
- it(@"should have properly set properties", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testConfig.securityManagers).to(beNil());
-#pragma clang diagnostic pop
expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(SDLStreamingEncryptionFlagNone)));
expect(testConfig.customVideoEncoderSettings).to(beNil());
expect(testConfig.allowMultipleViewControllerOrientations).to(equal(NO));
expect(testConfig.dataSource).to(beNil());
expect(testConfig.rootViewController).to(beNil());
+ expect(@(testConfig.carWindowRenderingType)).to(equal(@(SDLCarWindowRenderingTypeLayer)));
+ expect(testConfig.enableForcedFramerateSync).to(beTrue());
});
- });
- context(@"that is created with secure settings", ^{
- __block SDLFakeSecurityManager *testFakeSecurityManager = nil;
+ it(@"should have properly set properties with autostreamingInsecureConfigurationWithInitialViewController", ^{
+ testConfig = [SDLStreamingMediaConfiguration autostreamingInsecureConfigurationWithInitialViewController:testViewController];
- beforeEach(^{
- testFakeSecurityManager = [[SDLFakeSecurityManager alloc] init];
+ expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(SDLStreamingEncryptionFlagNone)));
+ expect(testConfig.customVideoEncoderSettings).to(beNil());
+ expect(testConfig.allowMultipleViewControllerOrientations).to(equal(NO));
+ expect(testConfig.dataSource).to(beNil());
+ expect(testConfig.rootViewController).to(equal(testViewController));
+ expect(@(testConfig.carWindowRenderingType)).to(equal(@(SDLCarWindowRenderingTypeLayer)));
+ expect(testConfig.enableForcedFramerateSync).to(beTrue());
+ });
+ });
+ context(@"that is created with secure settings", ^{
+ it(@"should have properly set properties with secureConfiguration", ^{
testConfig = [SDLStreamingMediaConfiguration secureConfiguration];
- });
- it(@"should have properly set properties", ^{
expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(SDLStreamingEncryptionFlagAuthenticateAndEncrypt)));
expect(testConfig.customVideoEncoderSettings).to(beNil());
expect(testConfig.allowMultipleViewControllerOrientations).to(equal(NO));
expect(testConfig.dataSource).to(beNil());
expect(testConfig.rootViewController).to(beNil());
+ expect(@(testConfig.carWindowRenderingType)).to(equal(@(SDLCarWindowRenderingTypeLayer)));
+ expect(testConfig.enableForcedFramerateSync).to(beTrue());
+ });
+
+ it(@"should have properly set properties with autostreamingSecureConfigurationWithInitialViewController:", ^{
+ testConfig = [SDLStreamingMediaConfiguration autostreamingSecureConfigurationWithInitialViewController:testViewController];
+
+ expect(@(testConfig.maximumDesiredEncryption)).to(equal(@(SDLStreamingEncryptionFlagAuthenticateAndEncrypt)));
+ expect(testConfig.customVideoEncoderSettings).to(beNil());
+ expect(testConfig.allowMultipleViewControllerOrientations).to(equal(NO));
+ expect(testConfig.dataSource).to(beNil());
+ expect(testConfig.rootViewController).to(equal(testViewController));
+ expect(@(testConfig.carWindowRenderingType)).to(equal(@(SDLCarWindowRenderingTypeLayer)));
+ expect(testConfig.enableForcedFramerateSync).to(beTrue());
+ });
+ });
+
+ context(@"copying a filter", ^{
+ __block SDLStreamingMediaConfiguration *testStreamingMediaConfiguration = nil;
+ __block SDLStreamingMediaConfiguration *testCopiedStreamingMediaConfiguration = nil;
+
+ beforeEach(^{
+ testStreamingMediaConfiguration = [[SDLStreamingMediaConfiguration alloc] initWithEncryptionFlag:testEncryptionFlag videoSettings:testVideoEncoderSettings dataSource:testDataSource rootViewController:testViewController];
+ testCopiedStreamingMediaConfiguration = [testStreamingMediaConfiguration copy];
+ });
+
+ it(@"should copy correctly", ^{
+ expect(testCopiedStreamingMediaConfiguration).toNot(beIdenticalTo(testStreamingMediaConfiguration));
+ expect(@(testCopiedStreamingMediaConfiguration.maximumDesiredEncryption)).to(equal(testStreamingMediaConfiguration.maximumDesiredEncryption));
+ expect(testCopiedStreamingMediaConfiguration.customVideoEncoderSettings).to(equal(testStreamingMediaConfiguration.customVideoEncoderSettings));
+ expect(testCopiedStreamingMediaConfiguration.dataSource).to(equal(testStreamingMediaConfiguration.dataSource));
+ expect(testCopiedStreamingMediaConfiguration.rootViewController).to(equal(testStreamingMediaConfiguration.rootViewController));
+ expect(@(testCopiedStreamingMediaConfiguration.carWindowRenderingType)).to(equal(testStreamingMediaConfiguration.carWindowRenderingType));
+ expect(testCopiedStreamingMediaConfiguration.enableForcedFramerateSync).to(equal(testStreamingMediaConfiguration.enableForcedFramerateSync));
+ expect(testCopiedStreamingMediaConfiguration.allowMultipleViewControllerOrientations).to(equal(testStreamingMediaConfiguration.allowMultipleViewControllerOrientations));
});
});
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
index f138e873d..c42e10961 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
@@ -556,7 +556,6 @@ describe(@"the streaming video manager", ^{
});
it(@"should have set all the right properties", ^{
- expect([[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeVideo]).to(equal(testMTU));
expect(@(CGSizeEqualToSize(streamingLifecycleManager.videoScaleManager.displayViewportResolution, CGSizeMake(testVideoWidth, testVideoHeight)))).to(beTrue());
expect(streamingLifecycleManager.videoEncrypted).to(equal(YES));
expect(streamingLifecycleManager.videoFormat).to(equal([[SDLVideoStreamingFormat alloc] initWithCodec:testVideoCodec protocol:testVideoProtocol]));
@@ -646,7 +645,7 @@ describe(@"the streaming video manager", ^{
testPreferredResolutions = @[testImageResolution, testImageResolution2];
streamingLifecycleManager.preferredResolutions = testPreferredResolutions;
- testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:@[[NSString stringWithUTF8String:SDLControlFrameHeightKey], [NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]]];
+ testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:@[[NSString stringWithUTF8String:SDLControlFrameHeightKey], [NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]] reason:@"failed"];
testVideoMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testVideoHeader andPayload:testVideoStartNakPayload.data];
[streamingLifecycleManager protocol:protocolMock didReceiveStartServiceNAK:testVideoMessage];
});
@@ -668,7 +667,7 @@ describe(@"the streaming video manager", ^{
testPreferredResolutions = @[testImageResolution];
streamingLifecycleManager.preferredResolutions = testPreferredResolutions;
- testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:@[[NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]]];
+ testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:@[[NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]] reason:@"failed"];
testVideoMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testVideoHeader andPayload:testVideoStartNakPayload.data];
[streamingLifecycleManager protocol:protocolMock didReceiveStartServiceNAK:testVideoMessage];
});
@@ -689,7 +688,7 @@ describe(@"the streaming video manager", ^{
testPreferredResolutions = @[testImageResolution];
streamingLifecycleManager.preferredResolutions = testPreferredResolutions;
- testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:@[[NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]]];
+ testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:@[[NSString stringWithUTF8String:SDLControlFrameVideoCodecKey]] reason:@"failed"];
testVideoMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testVideoHeader andPayload:testVideoStartNakPayload.data];
[streamingLifecycleManager protocol:protocolMock didReceiveStartServiceNAK:testVideoMessage];
});
@@ -704,7 +703,7 @@ describe(@"the streaming video manager", ^{
streamingLifecycleManager.preferredFormats = testPreferredFormats;
streamingLifecycleManager.preferredResolutions = testPreferredResolutions;
- testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:nil];
+ testVideoStartNakPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:nil reason:nil];
testVideoMessage = [[SDLV2ProtocolMessage alloc] initWithHeader:testVideoHeader andPayload:testVideoStartNakPayload.data];
[streamingLifecycleManager protocol:protocolMock didReceiveStartServiceNAK:testVideoMessage];
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicManagerSpec.m
index 99aa9dbb5..41ff4ba56 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicManagerSpec.m
@@ -3,14 +3,22 @@
#import <OCMock/OCMock.h>
#import "SDLDisplayCapabilities.h"
+#import "SDLDisplayCapability.h"
#import "SDLFileManager.h"
#import "SDLHMILevel.h"
#import "SDLImage.h"
#import "SDLImageField.h"
#import "SDLMetadataTags.h"
+#import "SDLOnHMIStatus.h"
+#import "SDLPredefinedWindows.h"
#import "SDLPutFileResponse.h"
+#import "SDLRPCNotificationNotification.h"
#import "SDLShow.h"
+#import "SDLSystemCapability.h"
+#import "SDLTemplateConfiguration.h"
#import "SDLTextAndGraphicManager.h"
+#import "SDLTextAndGraphicState.h"
+#import "SDLTextAndGraphicUpdateOperation.h"
#import "SDLTextField.h"
#import "SDLSystemCapabilityManager.h"
#import "SDLWindowCapability.h"
@@ -21,15 +29,11 @@
// Dependencies
@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
@property (weak, nonatomic) SDLFileManager *fileManager;
+@property (weak, nonatomic) SDLSystemCapabilityManager *systemCapabilityManager;
-@property (strong, nonatomic) SDLShow *currentScreenData;
+@property (strong, nonatomic) SDLTextAndGraphicState *currentScreenData;
-@property (strong, nonatomic, nullable) SDLShow *inProgressUpdate;
-@property (copy, nonatomic, nullable) SDLTextAndGraphicUpdateCompletionHandler inProgressHandler;
-
-@property (strong, nonatomic, nullable) SDLShow *queuedImageUpdate;
-@property (assign, nonatomic) BOOL hasQueuedUpdate;
-@property (copy, nonatomic, nullable) SDLTextAndGraphicUpdateCompletionHandler queuedUpdateHandler;
+@property (strong, nonatomic) NSOperationQueue *transactionQueue;
@property (strong, nonatomic, nullable) SDLWindowCapability *windowCapability;
@property (strong, nonatomic, nullable) SDLHMILevel currentLevel;
@@ -42,9 +46,21 @@
@end
+@interface SDLTextAndGraphicUpdateOperation ()
+
+@property (copy, nonatomic, nullable) CurrentDataUpdatedHandler currentDataUpdatedHandler;
+@property (strong, nonatomic) SDLTextAndGraphicState *updatedState;
+
+@end
+
QuickSpecBegin(SDLTextAndGraphicManagerSpec)
describe(@"text and graphic manager", ^{
+ __block SDLDisplayCapability *testDisplayCapability = nil;
+ __block SDLWindowCapability *testWindowCapability = nil;
+ __block SDLSystemCapability *testSystemCapability = nil;
+ __block SDLOnHMIStatus *testHMIStatus = nil;
+
__block SDLTextAndGraphicManager *testManager = nil;
__block TestConnectionManager *mockConnectionManager = [[TestConnectionManager alloc] init];
__block SDLFileManager *mockFileManager = nil;
@@ -53,7 +69,6 @@ describe(@"text and graphic manager", ^{
__block NSString *testString = @"some string";
__block NSString *testArtworkName = @"some artwork name";
__block SDLArtwork *testArtwork = [[SDLArtwork alloc] initWithData:[@"Test data" dataUsingEncoding:NSUTF8StringEncoding] name:testArtworkName fileExtension:@"png" persistent:NO];
- __block SDLArtwork *testStaticIcon = [SDLArtwork artworkWithStaticIcon:SDLStaticIconNameDate];
beforeEach(^{
mockFileManager = OCMClassMock([SDLFileManager class]);
@@ -62,6 +77,7 @@ describe(@"text and graphic manager", ^{
[testManager start];
});
+ // should instantiate correctly
it(@"should instantiate correctly", ^{
expect(testManager.connectionManager).to(equal(mockConnectionManager));
expect(testManager.fileManager).to(equal(mockFileManager));
@@ -80,49 +96,67 @@ describe(@"text and graphic manager", ^{
expect(testManager.textField3Type).to(beNil());
expect(testManager.textField4Type).to(beNil());
- expect(testManager.currentScreenData).to(equal([[SDLShow alloc] init]));
- expect(testManager.inProgressUpdate).to(beNil());
- expect(testManager.queuedImageUpdate).to(beNil());
- expect(testManager.hasQueuedUpdate).to(beFalse());
+ expect(testManager.currentScreenData).toNot(beNil());
+ expect(testManager.transactionQueue).toNot(beNil());
expect(testManager.windowCapability).to(beNil());
expect(testManager.currentLevel).to(equal(SDLHMILevelNone));
expect(testManager.blankArtwork).toNot(beNil());
expect(testManager.isDirty).to(beFalse());
});
+ // setting setters
describe(@"setting setters", ^{
beforeEach(^{
testManager.currentLevel = SDLHMILevelFull;
});
+ // when in HMI NONE
context(@"when in HMI NONE", ^{
beforeEach(^{
testManager.currentLevel = SDLHMILevelNone;
});
- it(@"should not set text field 1", ^{
+ it(@"should set text field 1 but be suspended", ^{
testManager.textField1 = testString;
expect(testManager.textField1).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
- expect(testManager.isDirty).to(beTrue());
+ expect(testManager.transactionQueue.isSuspended).to(beTrue());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
});
});
+ // when no HMI level has been received
context(@"when no HMI level has been received", ^{
beforeEach(^{
testManager.currentLevel = nil;
});
- it(@"should not set text field 1", ^{
+ it(@"should set text field 1 but be suspended", ^{
testManager.textField1 = testString;
expect(testManager.textField1).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
- expect(testManager.isDirty).to(beTrue());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
+ expect(testManager.transactionQueue.isSuspended).to(beTrue());
});
});
+ // when previous updates have bene cancelled
+ context(@"when previous updates have bene cancelled", ^{
+ beforeEach(^{
+ testManager.textField1 = @"Hello";
+
+ // This should cancel the first operation
+ testManager.textField2 = @"Goodbye";
+ });
+
+ it(@"should properly queue the new update", ^{
+ expect(testManager.transactionQueue.isSuspended).to(beTrue());
+ expect(testManager.transactionQueue.operationCount).to(equal(2));
+ expect(testManager.transactionQueue.operations[0].cancelled).to(beTrue());
+ });
+ });
+
+ // while batching
context(@"while batching", ^{
beforeEach(^{
testManager.batchUpdates = YES;
@@ -132,7 +166,7 @@ describe(@"text and graphic manager", ^{
testManager.textField1 = testString;
expect(testManager.textField1).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -140,7 +174,7 @@ describe(@"text and graphic manager", ^{
testManager.textField2 = testString;
expect(testManager.textField2).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -148,7 +182,7 @@ describe(@"text and graphic manager", ^{
testManager.textField3 = testString;
expect(testManager.textField3).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -156,7 +190,7 @@ describe(@"text and graphic manager", ^{
testManager.textField4 = testString;
expect(testManager.textField4).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -164,7 +198,7 @@ describe(@"text and graphic manager", ^{
testManager.mediaTrackTextField = testString;
expect(testManager.mediaTrackTextField).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -172,7 +206,7 @@ describe(@"text and graphic manager", ^{
testManager.title = testString;
expect(testManager.title).to(equal(testString));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -180,7 +214,7 @@ describe(@"text and graphic manager", ^{
testManager.primaryGraphic = testArtwork;
expect(testManager.primaryGraphic.name).to(equal(testArtworkName));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -188,7 +222,7 @@ describe(@"text and graphic manager", ^{
testManager.secondaryGraphic = testArtwork;
expect(testManager.secondaryGraphic.name).to(equal(testArtworkName));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -196,7 +230,7 @@ describe(@"text and graphic manager", ^{
testManager.alignment = SDLTextAlignmentLeft;
expect(testManager.alignment).to(equal(SDLTextAlignmentLeft));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -204,7 +238,7 @@ describe(@"text and graphic manager", ^{
testManager.textField1Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField1Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -212,7 +246,7 @@ describe(@"text and graphic manager", ^{
testManager.textField2Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField2Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -220,7 +254,7 @@ describe(@"text and graphic manager", ^{
testManager.textField3Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField3Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
@@ -228,11 +262,12 @@ describe(@"text and graphic manager", ^{
testManager.textField4Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField4Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).to(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
expect(testManager.isDirty).to(beTrue());
});
});
+ // while not batching
context(@"while not batching", ^{
beforeEach(^{
testManager.batchUpdates = NO;
@@ -242,7 +277,7 @@ describe(@"text and graphic manager", ^{
testManager.textField1 = testString;
expect(testManager.textField1).to(equal(testString));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -250,7 +285,7 @@ describe(@"text and graphic manager", ^{
testManager.textField2 = testString;
expect(testManager.textField2).to(equal(testString));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -258,7 +293,7 @@ describe(@"text and graphic manager", ^{
testManager.textField3 = testString;
expect(testManager.textField3).to(equal(testString));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -266,7 +301,7 @@ describe(@"text and graphic manager", ^{
testManager.textField4 = testString;
expect(testManager.textField4).to(equal(testString));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -274,7 +309,7 @@ describe(@"text and graphic manager", ^{
testManager.mediaTrackTextField = testString;
expect(testManager.mediaTrackTextField).to(equal(testString));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -282,7 +317,7 @@ describe(@"text and graphic manager", ^{
testManager.title = testString;
expect(testManager.title).to(equal(testString));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -290,7 +325,7 @@ describe(@"text and graphic manager", ^{
testManager.primaryGraphic = testArtwork;
expect(testManager.primaryGraphic.name).to(equal(testArtworkName));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -298,7 +333,7 @@ describe(@"text and graphic manager", ^{
testManager.secondaryGraphic = testArtwork;
expect(testManager.secondaryGraphic.name).to(equal(testArtworkName));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -306,7 +341,7 @@ describe(@"text and graphic manager", ^{
testManager.alignment = SDLTextAlignmentLeft;
expect(testManager.alignment).to(equal(SDLTextAlignmentLeft));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -314,7 +349,7 @@ describe(@"text and graphic manager", ^{
testManager.textField1Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField1Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -322,7 +357,7 @@ describe(@"text and graphic manager", ^{
testManager.textField2Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField2Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -330,7 +365,7 @@ describe(@"text and graphic manager", ^{
testManager.textField3Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField3Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
@@ -338,12 +373,13 @@ describe(@"text and graphic manager", ^{
testManager.textField4Type = SDLMetadataTypeMediaAlbum;
expect(testManager.textField4Type).to(equal(SDLMetadataTypeMediaAlbum));
- expect(testManager.inProgressUpdate).toNot(beNil());
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
expect(testManager.isDirty).to(beFalse());
});
});
});
+ // batching an update
describe(@"batching an update", ^{
NSString *textLine1 = @"line1";
NSString *textLine2 = @"line2";
@@ -361,670 +397,191 @@ describe(@"text and graphic manager", ^{
testManager.currentLevel = SDLHMILevelFull;
testManager.batchUpdates = YES;
- testManager.textField1 = nil;
- testManager.textField2 = nil;
- testManager.textField3 = nil;
- testManager.textField4 = nil;
- testManager.mediaTrackTextField = nil;
- testManager.title = nil;
- testManager.textField1Type = nil;
- testManager.textField2Type = nil;
- testManager.textField3Type = nil;
- testManager.textField4Type = nil;
+ testManager.textField1 = textLine1;
+ testManager.textField2 = textLine2;
+ testManager.textField3 = textLine3;
+ testManager.textField4 = textLine4;
+ testManager.mediaTrackTextField = textMediaTrack;
+ testManager.title = textTitle;
+ testManager.textField1Type = line1Type;
+ testManager.textField2Type = line2Type;
+ testManager.textField3Type = line3Type;
+ testManager.textField4Type = line4Type;
});
- context(@"when textFields are nil", ^{
- beforeEach(^{
- testManager.windowCapability = [[SDLWindowCapability alloc] init];
- });
+ it(@"should wait until batching ends to create an update operation", ^{
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
- it(@"should send nothing", ^{
- testManager.mediaTrackTextField = textMediaTrack;
- testManager.title = textTitle;
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField4 = textLine4;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mediaTrack).toNot(equal(textMediaTrack));
- expect(testManager.inProgressUpdate.templateTitle).toNot(equal(textTitle));
- expect(testManager.inProgressUpdate.mainField1).toNot(equal(textLine1));
- expect(testManager.inProgressUpdate.mainField2).toNot(equal(textLine2));
- expect(testManager.inProgressUpdate.mainField3).toNot(equal(textLine3));
- expect(testManager.inProgressUpdate.mainField4).toNot(equal(textLine4));
- });
+ testManager.batchUpdates = NO;
+ [testManager updateWithCompletionHandler:nil];
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
});
+ });
- context(@"with one line available", ^{
+ // changing the layout
+ describe(@"changing the layout", ^{
+ // while not batching
+ context(@"while not batching", ^{
beforeEach(^{
- testManager.windowCapability = [[SDLWindowCapability alloc] init];
- SDLTextField *lineOneField = [[SDLTextField alloc] init];
- lineOneField.name = SDLTextFieldNameMainField1;
- testManager.windowCapability.textFields = @[lineOneField];
- });
-
- it(@"should not set mediatrack", ^{
- testManager.mediaTrackTextField = textMediaTrack;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mediaTrack).toNot(equal(textMediaTrack));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
- });
-
- it(@"should not set title", ^{
- testManager.title = textTitle;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.templateTitle).toNot(equal(textTitle));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
- });
-
- it(@"should format a one line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField1Type = line1Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.metadataTags.mainField1.firstObject).to(equal(line1Type));
- expect(testManager.inProgressUpdate.mainField2).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(beNil());
- });
-
- it(@"should format a two line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@", textLine1, textLine2]));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[1]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.mainField2).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(beNil());
- });
-
- it(@"should format a three line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@ - %@", textLine1, textLine2, textLine3]));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[1]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[2]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.mainField2).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(beNil());
- });
-
- it(@"should format a four line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField4 = textLine4;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
- testManager.textField4Type = line4Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@ - %@ - %@", textLine1, textLine2, textLine3, textLine4]));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[1]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[2]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[3]).to(equal(line4Type));
- expect(testManager.inProgressUpdate.mainField2).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(beNil());
+ SDLTemplateConfiguration *testConfig = [[SDLTemplateConfiguration alloc] initWithTemplate:@"Test Template"];
+ [testManager changeLayout:testConfig withCompletionHandler:nil];
});
- context(@"when media track and title are available", ^{
- beforeEach(^{
- NSMutableArray<SDLTextField *> *existingFieldsMutable = [testManager.windowCapability.textFields mutableCopy];
- SDLTextField *mediaTrack = [[SDLTextField alloc] init];
- mediaTrack.name = SDLTextFieldNameMediaTrack;
- [existingFieldsMutable addObject:mediaTrack];
-
- SDLTextField *title = [[SDLTextField alloc] init];
- title.name = SDLTextFieldNameTemplateTitle;
- [existingFieldsMutable addObject:title];
- testManager.windowCapability.textFields = [existingFieldsMutable copy];
- });
-
- it(@"should set media track and title properly", ^{
- testManager.mediaTrackTextField = textMediaTrack;
- testManager.title = textTitle;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mediaTrack).to(equal(textMediaTrack));
- expect(testManager.inProgressUpdate.templateTitle).to(equal(textTitle));
- });
+ it(@"should create and start the operation", ^{
+ expect(testManager.transactionQueue.operationCount).to(equal(1));
});
});
- context(@"with two lines available", ^{
+ // while batching
+ context(@"while batching", ^{
beforeEach(^{
- testManager.windowCapability = [[SDLWindowCapability alloc] init];
- SDLTextField *lineTwoField = [[SDLTextField alloc] init];
- lineTwoField.name = SDLTextFieldNameMainField2;
- testManager.windowCapability.textFields = @[lineTwoField];
- });
-
- it(@"should not set mediatrack", ^{
- testManager.mediaTrackTextField = textMediaTrack;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mediaTrack).toNot(equal(textMediaTrack));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
- });
-
- it(@"should not set title", ^{
- testManager.title = textTitle;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.templateTitle).toNot(equal(textTitle));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
+ testManager.batchUpdates = YES;
+ SDLTemplateConfiguration *testConfig = [[SDLTemplateConfiguration alloc] initWithTemplate:@"Test Template"];
+ [testManager changeLayout:testConfig withCompletionHandler:nil];
});
- it(@"should format a one line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField1Type = line1Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.metadataTags.mainField1.firstObject).to(equal(line1Type));
- expect(testManager.inProgressUpdate.mainField2).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(beNil());
+ it(@"should not create and start the operation", ^{
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
});
+ });
+ });
- it(@"should format a two line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.metadataTags.mainField1.firstObject).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine2));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField3).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(beNil());
- });
+ // when the operation updates the current screen data
+ describe(@"when the operation updates the current screen data", ^{
+ __block SDLTextAndGraphicUpdateOperation *testOperation = nil;
+ __block SDLTextAndGraphicUpdateOperation *testOperation2 = nil;
- it(@"should format a three line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
+ beforeEach(^{
+ testManager.textField1 = @"test";
+ testManager.textField2 = @"test2";
+ testOperation = testManager.transactionQueue.operations[0];
+ testOperation2 = testManager.transactionQueue.operations[1];
+ });
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@", textLine1, textLine2]));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine3));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[1]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(2));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField3).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(beNil());
+ // with good data
+ context(@"with good data", ^{
+ beforeEach(^{
+ testOperation.currentDataUpdatedHandler(testOperation.updatedState, nil);
});
- it(@"should format a four line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField4 = textLine4;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
- testManager.textField4Type = line4Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@", textLine1, textLine2]));
- expect(testManager.inProgressUpdate.mainField2).to(equal([NSString stringWithFormat:@"%@ - %@", textLine3, textLine4]));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[1]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(2));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[1]).to(equal(line4Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(2));
- expect(testManager.inProgressUpdate.mainField3).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(beNil());
+ it(@"should update the manager's and pending operations' current screen data", ^{
+ expect(testManager.currentScreenData).to(equal(testOperation.updatedState));
+ expect(testOperation2.currentScreenData).to(equal(testOperation.updatedState));
});
});
- context(@"with three lines available", ^{
+ // with an error
+ context(@"with an error", ^{
beforeEach(^{
- testManager.windowCapability = [[SDLWindowCapability alloc] init];
- SDLTextField *lineThreeField = [[SDLTextField alloc] init];
- lineThreeField.name = SDLTextFieldNameMainField3;
- testManager.windowCapability.textFields = @[lineThreeField];
+ testManager.currentScreenData = [[SDLTextAndGraphicState alloc] init];
+ testManager.currentScreenData.textField1 = @"Test1";
+ testOperation.currentDataUpdatedHandler(nil, [NSError errorWithDomain:@"any" code:1 userInfo:nil]);
});
- it(@"should not set mediatrack", ^{
- testManager.mediaTrackTextField = textMediaTrack;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mediaTrack).toNot(equal(textMediaTrack));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
+ it(@"should reset the manager's data", ^{
+ expect(testManager.textField1).to(equal(testManager.currentScreenData.textField1));
});
+ });
+ });
- it(@"should not set title", ^{
- testManager.title = textTitle;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.templateTitle).toNot(equal(textTitle));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
- });
-
- it(@"should format a one line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField1Type = line1Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.mainField2).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(beNil());
- });
+ // on HMI level update
+ describe(@"on hmi level update", ^{
+ beforeEach(^{
+ testHMIStatus = [[SDLOnHMIStatus alloc] init];
- it(@"should format a two line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
+ testWindowCapability = [[SDLWindowCapability alloc] initWithWindowID:@(SDLPredefinedWindowsDefaultWindow) textFields:nil imageFields:nil imageTypeSupported:nil templatesAvailable:nil numCustomPresetsAvailable:nil buttonCapabilities:nil softButtonCapabilities:nil menuLayoutsAvailable:nil dynamicUpdateCapabilities:nil];
+ testDisplayCapability = [[SDLDisplayCapability alloc] initWithDisplayName:@"Test display" windowCapabilities:@[testWindowCapability] windowTypeSupported:nil];
+ testSystemCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:@[testDisplayCapability]];
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.metadataTags.mainField1.firstObject).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine2));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField3).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(beNil());
- });
+ [testManager sdl_displayCapabilityDidUpdate:testSystemCapability];
+ });
- it(@"should format a three line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
+ // with a non-default window
+ context(@"with a non-default window", ^{
+ beforeEach(^{
+ testHMIStatus.hmiLevel = SDLHMILevelFull;
+ testHMIStatus.windowID = @435;
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine2));
- expect(testManager.inProgressUpdate.mainField3).to(equal(textLine3));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField3[0]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField4).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField4).to(beNil());
+ SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeHMIStatusNotification object:nil rpcNotification:testHMIStatus];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
});
- it(@"should format a four line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField4 = textLine4;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
- testManager.textField4Type = line4Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine2));
- expect(testManager.inProgressUpdate.mainField3).to(equal([NSString stringWithFormat:@"%@ - %@", textLine3, textLine4]));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField3[0]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField3[1]).to(equal(line4Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(haveCount(2));
- expect(testManager.inProgressUpdate.mainField4).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField4).to(beNil());
+ it(@"should not alter the current level or update the queue's suspension", ^{
+ expect(testManager.currentLevel).toNot(equal(SDLHMILevelFull));
+ expect(testManager.transactionQueue.suspended).to(beTrue());
});
});
- context(@"with four lines available", ^{
+ // with HMI NONE
+ context(@"with HMI NONE", ^{
beforeEach(^{
- testManager.windowCapability = [[SDLWindowCapability alloc] init];
- SDLTextField *lineFourField = [[SDLTextField alloc] init];
- lineFourField.name = SDLTextFieldNameMainField4;
- testManager.windowCapability.textFields = @[lineFourField];
- });
+ testHMIStatus.hmiLevel = SDLHMILevelNone;
+ testHMIStatus.windowID = @(SDLPredefinedWindowsDefaultWindow);
- it(@"should not set mediatrack", ^{
- testManager.mediaTrackTextField = textMediaTrack;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mediaTrack).toNot(equal(textMediaTrack));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
+ SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeHMIStatusNotification object:nil rpcNotification:testHMIStatus];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
});
- it(@"should not set title", ^{
- testManager.title = textTitle;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.templateTitle).toNot(equal(textTitle));
- expect(testManager.inProgressUpdate.mainField1).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(beNil());
+ it(@"should not alter the current level or update the queue's suspension", ^{
+ expect(testManager.currentLevel).to(equal(SDLHMILevelNone));
+ expect(testManager.transactionQueue.suspended).to(beTrue());
});
+ });
- it(@"should format a one line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField1Type = line1Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
+ // with HMI BACKGROUND
+ context(@"with HMI BACKGROUND", ^{
+ beforeEach(^{
+ testHMIStatus.hmiLevel = SDLHMILevelBackground;
+ testHMIStatus.windowID = @(SDLPredefinedWindowsDefaultWindow);
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.mainField2).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(beNil());
+ SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeHMIStatusNotification object:nil rpcNotification:testHMIStatus];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
});
- it(@"should format a two line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.metadataTags.mainField1.firstObject).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine2));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField3).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(beNil());
+ it(@"should alter the current level and update the queue's suspension", ^{
+ expect(testManager.currentLevel).to(equal(SDLHMILevelBackground));
+ expect(testManager.transactionQueue.suspended).to(beFalse());
});
+ });
+ });
- it(@"should format a three line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
-
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine2));
- expect(testManager.inProgressUpdate.mainField3).to(equal(textLine3));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField3[0]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(haveCount(1));
- expect(testManager.inProgressUpdate.mainField4).to(beEmpty());
- expect(testManager.inProgressUpdate.metadataTags.mainField4).to(beNil());
- });
+ // on display capability update
+ describe(@"on display capability update", ^{
+ beforeEach(^{
+ testHMIStatus = [[SDLOnHMIStatus alloc] init];
+ testHMIStatus.windowID = @(SDLPredefinedWindowsDefaultWindow);
+ testHMIStatus.hmiLevel = SDLHMILevelFull;
+ SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeHMIStatusNotification object:nil rpcNotification:testHMIStatus];
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+
+ testWindowCapability = [[SDLWindowCapability alloc] initWithWindowID:@(SDLPredefinedWindowsDefaultWindow) textFields:nil imageFields:nil imageTypeSupported:nil templatesAvailable:nil numCustomPresetsAvailable:nil buttonCapabilities:nil softButtonCapabilities:nil menuLayoutsAvailable:nil dynamicUpdateCapabilities:nil];
+ testDisplayCapability = [[SDLDisplayCapability alloc] initWithDisplayName:@"Test display" windowCapabilities:@[testWindowCapability] windowTypeSupported:nil];
+ testSystemCapability = [[SDLSystemCapability alloc] initWithDisplayCapabilities:@[testDisplayCapability]];
+ });
- it(@"should format a four line text and metadata update properly", ^{
- testManager.textField1 = textLine1;
- testManager.textField2 = textLine2;
- testManager.textField3 = textLine3;
- testManager.textField4 = textLine4;
- testManager.textField1Type = line1Type;
- testManager.textField2Type = line2Type;
- testManager.textField3Type = line3Type;
- testManager.textField4Type = line4Type;
+ it(@"should start the transaction queue and not send a transaction", ^{
+ [testManager sdl_displayCapabilityDidUpdate:testSystemCapability];
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.mainField1).to(equal(textLine1));
- expect(testManager.inProgressUpdate.mainField2).to(equal(textLine2));
- expect(testManager.inProgressUpdate.mainField3).to(equal(textLine3));
- expect(testManager.inProgressUpdate.mainField4).to(equal(textLine4));
- expect(testManager.inProgressUpdate.metadataTags.mainField1[0]).to(equal(line1Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField1).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField2[0]).to(equal(line2Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField2).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField3[0]).to(equal(line3Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField3).to(haveCount(1));
- expect(testManager.inProgressUpdate.metadataTags.mainField4[0]).to(equal(line4Type));
- expect(testManager.inProgressUpdate.metadataTags.mainField4).to(haveCount(1));
- });
+ expect(testManager.transactionQueue.isSuspended).to(beFalse());
+ expect(testManager.transactionQueue.operationCount).to(equal(0));
});
- context(@"updating images", ^{
- __block NSString *testTextFieldText = @"mainFieldText";
-
+ context(@"if there's data", ^{
beforeEach(^{
- testManager.windowCapability = [[SDLWindowCapability alloc] init];
- SDLImageField *primaryImageField = [[SDLImageField alloc] init];
- primaryImageField.name = SDLImageFieldNameGraphic;
- SDLImageField *secondaryImageField = [[SDLImageField alloc] init];
- secondaryImageField.name = SDLImageFieldNameSecondaryGraphic;
- testManager.windowCapability.imageFields = @[primaryImageField, secondaryImageField];
-
- SDLTextField *lineOneField = [[SDLTextField alloc] init];
- lineOneField.name = SDLTextFieldNameMainField1;
- testManager.windowCapability.textFields = @[lineOneField];
-
- testManager.batchUpdates = YES;
- testManager.textField1 = testTextFieldText;
- });
-
- context(@"when imageFields are nil", ^{
- beforeEach(^{
- testManager.windowCapability.imageFields = nil;
- });
-
- it(@"should send nothing", ^{
- testManager.primaryGraphic = testArtwork;
- testManager.secondaryGraphic = testArtwork;
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.graphic).to(beNil());
- expect(testManager.inProgressUpdate.secondaryGraphic).to(beNil());
- expect(testManager.inProgressUpdate.mainField1).to(equal(testTextFieldText));
- });
- });
-
- context(@"when the image is already on the head unit", ^{
- beforeEach(^{
- OCMStub([mockFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(YES);
- });
-
- it(@"should immediately attempt to update", ^{
- testManager.primaryGraphic = testArtwork;
- testManager.secondaryGraphic = testArtwork;
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.inProgressUpdate.graphic.value).to(equal(testArtworkName));
- expect(testManager.inProgressUpdate.secondaryGraphic.value).to(equal(testArtworkName));
- expect(testManager.inProgressUpdate.mainField1).to(equal(testTextFieldText));
- });
- });
-
- context(@"when the image is a static icon", ^{
- beforeEach(^{
- testManager.primaryGraphic = testStaticIcon;
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
- });
-
- it(@"should immediately update without uploading the images", ^{
- OCMReject([mockFileManager uploadArtwork:[OCMArg any] completionHandler:[OCMArg any]]);
- expect(testManager.inProgressUpdate.mainField1).to(equal(testTextFieldText));
- expect(testManager.inProgressUpdate.graphic.value).toNot(beNil());
- });
- });
-
- context(@"when the image is not on the head unit", ^{
- beforeEach(^{
- OCMStub([mockFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO);
-
- testManager.primaryGraphic = testArtwork;
- testManager.secondaryGraphic = testArtwork;
- testManager.batchUpdates = NO;
- [testManager updateWithCompletionHandler:nil];
- });
-
- it(@"should immediately attempt to update without the images", ^{
- expect(testManager.inProgressUpdate.mainField1).to(equal(testTextFieldText));
- expect(testManager.inProgressUpdate.graphic.value).to(beNil());
- expect(testManager.inProgressUpdate.secondaryGraphic.value).to(beNil());
- expect(testManager.queuedImageUpdate.graphic.value).to(equal(testArtworkName));
- expect(testManager.queuedImageUpdate.secondaryGraphic.value).to(equal(testArtworkName));
- });
+ testManager.textField1 = @"test";
+ [testManager sdl_displayCapabilityDidUpdate:testSystemCapability];
});
- describe(@"When an image fails to upload to the remote", ^{
- __block SDLArtwork *testArtwork1 = nil;
- __block SDLArtwork *testArtwork2 = nil;
-
- beforeEach(^{
- testArtwork1 = [[SDLArtwork alloc] initWithData:[@"Test data 1" dataUsingEncoding:NSUTF8StringEncoding] name:@"Test data 1" fileExtension:@"png" persistent:NO];
- testArtwork2 = [[SDLArtwork alloc] initWithData:[@"Test data 2" dataUsingEncoding:NSUTF8StringEncoding] name:@"Test data 2" fileExtension:@"png" persistent:NO];
- });
-
- context(@"If the images for the primary and secondary graphics fail the upload process", ^{
- it(@"Should skip sending an update", ^{
- testManager.primaryGraphic = testArtwork1;
- testManager.secondaryGraphic = testArtwork2;
- testManager.batchUpdates = NO;
-
- OCMStub([mockFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO);
- NSArray<NSString *> *testSuccessfulArtworks = @[];
- NSError *testError = [NSError errorWithDomain:@"errorDomain"
- code:9
- userInfo:@{testArtwork1.name:@"error 1", testArtwork2.name:@"error 2"}
- ];
- OCMStub([mockFileManager uploadArtworks:[OCMArg isNotNil] completionHandler:([OCMArg invokeBlockWithArgs:testSuccessfulArtworks, testError, nil])]);
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.textField1).to(equal(testTextFieldText));
- expect(testManager.inProgressUpdate).to(beNil());
- expect(testManager.queuedImageUpdate.graphic.value).to(equal(testArtwork1.name));
- expect(testManager.queuedImageUpdate.secondaryGraphic.value).to(equal(testArtwork2.name));
- });
- });
-
- context(@"If only one of images for the primary and secondary graphics fails to upload", ^{
- it(@"Should show the primary graphic even if the secondary graphic upload fails", ^{
- testManager.primaryGraphic = testArtwork1;
- testManager.secondaryGraphic = testArtwork2;
- testManager.batchUpdates = NO;
-
- OCMStub([mockFileManager hasUploadedFile:testArtwork1]).andReturn(YES);
- OCMStub([mockFileManager hasUploadedFile:testArtwork2]).andReturn(NO);
- NSArray<NSString *> *testSuccessfulArtworks = @[testArtwork1.name];
- NSError *testError = [NSError errorWithDomain:@"errorDomain" code:9 userInfo:@{testArtwork2.name:@"error 2"}];
- OCMStub([mockFileManager uploadArtworks:[OCMArg isNotNil] completionHandler:([OCMArg invokeBlockWithArgs:testSuccessfulArtworks, testError, nil])]);
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.textField1).to(equal(testTextFieldText));
- expect(testManager.inProgressUpdate.graphic.value).to(equal(testArtwork1.name));
- expect(testManager.inProgressUpdate.secondaryGraphic).to(beNil());
- expect(testManager.inProgressUpdate.mainField1).to(beNil());
- expect(testManager.queuedImageUpdate.graphic.value).to(equal(testArtwork1.name));
- expect(testManager.queuedImageUpdate.secondaryGraphic.value).to(equal(testArtwork2.name));
- });
-
- it(@"Should show the secondary graphic even if the primary graphic upload fails", ^{
- testManager.primaryGraphic = testArtwork1;
- testManager.secondaryGraphic = testArtwork2;
- testManager.batchUpdates = NO;
-
- OCMStub([mockFileManager hasUploadedFile:testArtwork1]).andReturn(NO);
- OCMStub([mockFileManager hasUploadedFile:testArtwork2]).andReturn(YES);
- NSArray<NSString *> *testSuccessfulArtworks = @[testArtwork2.name];
- NSError *testError = [NSError errorWithDomain:@"errorDomain" code:9 userInfo:@{testArtwork1.name:@"error 2"}];
- OCMStub([mockFileManager uploadArtworks:[OCMArg isNotNil] completionHandler:([OCMArg invokeBlockWithArgs:testSuccessfulArtworks, testError, nil])]);
- [testManager updateWithCompletionHandler:nil];
-
- expect(testManager.textField1).to(equal(testTextFieldText));
- expect(testManager.inProgressUpdate.graphic).to(beNil());
- expect(testManager.inProgressUpdate.secondaryGraphic.value).to(equal(testArtwork2.name));
- expect(testManager.inProgressUpdate.mainField1).to(beNil());
- expect(testManager.queuedImageUpdate.graphic.value).to(equal(testArtwork1.name));
- expect(testManager.queuedImageUpdate.secondaryGraphic.value).to(equal(testArtwork2.name));
- });
- });
+ it(@"should send an update and not supersede the previous update", ^{
+ expect(testManager.transactionQueue.isSuspended).to(beFalse());
+ expect(testManager.transactionQueue.operationCount).to(equal(2));
+ expect(testManager.transactionQueue.operations[0].isCancelled).to(beFalse());
});
});
});
- context(@"On disconnects", ^{
+ // on disconnect
+ describe(@"on disconnect", ^{
beforeEach(^{
[testManager stop];
});
@@ -1046,10 +603,7 @@ describe(@"text and graphic manager", ^{
expect(testManager.textField3Type).to(beNil());
expect(testManager.textField4Type).to(beNil());
- expect(testManager.currentScreenData).to(equal([[SDLShow alloc] init]));
- expect(testManager.inProgressUpdate).to(beNil());
- expect(testManager.queuedImageUpdate).to(beNil());
- expect(testManager.hasQueuedUpdate).to(beFalse());
+ expect(testManager.currentScreenData).toNot(beNil());
expect(testManager.windowCapability).to(beNil());
expect(testManager.currentLevel).to(equal(SDLHMILevelNone));
expect(testManager.blankArtwork).toNot(beNil());
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicStateSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicStateSpec.m
new file mode 100644
index 000000000..4a48c5798
--- /dev/null
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicStateSpec.m
@@ -0,0 +1,72 @@
+//
+// SDLTextAndGraphicStateSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Joel Fischer on 9/11/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLArtwork.h"
+#import "SDLTemplateConfiguration.h"
+#import "SDLTextAlignment.h"
+#import "SDLTextAndGraphicState.h"
+
+QuickSpecBegin(SDLTextAndGraphicStateSpec)
+
+UIImage *testImagePNG = [UIImage imageNamed:@"testImagePNG" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
+UIImage *testImagePNG2 = [UIImage imageNamed:@"TestLockScreenAppIcon" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
+
+NSString *stringText1 = @"String 1";
+NSString *stringText2 = @"String 2";
+NSString *stringText3 = @"String 3";
+NSString *stringText4 = @"String 4";
+NSString *stringTitle = @"String Title";
+NSString *stringMedia = @"String Media";
+SDLTextAlignment testAlignment = SDLTextAlignmentLeft;
+SDLArtwork *artworkPrimary = [[SDLArtwork alloc] initWithImage:testImagePNG name:@"Artwork Primary" persistent:NO asImageFormat:SDLArtworkImageFormatPNG];
+SDLArtwork *artworkSecondary = [[SDLArtwork alloc] initWithImage:testImagePNG2 name:@"Artwork Secondary" persistent:NO asImageFormat:SDLArtworkImageFormatPNG];
+SDLMetadataType type1 = SDLMetadataTypeRating;
+SDLMetadataType type2 = SDLMetadataTypeHumidity;
+SDLMetadataType type3 = SDLMetadataTypeMediaYear;
+SDLMetadataType type4 = SDLMetadataTypeMediaGenre;
+SDLTemplateConfiguration *testConfig = [[SDLTemplateConfiguration alloc] initWithTemplate:@"Test Template" dayColorScheme:nil nightColorScheme:nil];
+
+describe(@"state initialization", ^{
+ __block SDLTextAndGraphicState *testState = nil;
+ beforeEach(^{
+ testState = [[SDLTextAndGraphicState alloc] initWithTextField1:stringText1 textField2:stringText2 textField3:stringText3 textField4:stringText4 mediaText:stringMedia title:stringTitle primaryGraphic:artworkPrimary secondaryGraphic:artworkSecondary alignment:testAlignment textField1Type:type1 textField2Type:type2 textField3Type:type3 textField4Type:type4 templateConfiguration:testConfig];
+ });
+
+ it(@"should initialize correctly", ^{
+ expect(testState.textField1).to(equal(stringText1));
+ expect(testState.textField2).to(equal(stringText2));
+ expect(testState.textField3).to(equal(stringText3));
+ expect(testState.textField4).to(equal(stringText4));
+ expect(testState.mediaTrackTextField).to(equal(stringMedia));
+ expect(testState.title).to(equal(stringTitle));
+ expect(testState.primaryGraphic).to(equal(artworkPrimary));
+ expect(testState.secondaryGraphic).to(equal(artworkSecondary));
+ expect(testState.alignment).to(equal(testAlignment));
+ expect(testState.textField1Type).to(equal(type1));
+ expect(testState.textField2Type).to(equal(type2));
+ expect(testState.textField3Type).to(equal(type3));
+ expect(testState.textField4Type).to(equal(type4));
+ });
+
+ it(@"should copy correctly", ^{
+ SDLTextAndGraphicState *newState = [testState copy];
+
+ expect(testState).toNot(beIdenticalTo(newState));
+ });
+
+ it(@"should compare equality correctly", ^{
+ SDLTextAndGraphicState *newState = [testState copy];
+
+ expect(testState).to(equal(newState));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicUpdateOperationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicUpdateOperationSpec.m
new file mode 100644
index 000000000..0c70ec4f7
--- /dev/null
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLTextAndGraphicUpdateOperationSpec.m
@@ -0,0 +1,1267 @@
+//
+// SDLTextAndGraphicUpdateOperationSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Joel Fischer on 8/18/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+#import <OCMock/OCMock.h>
+
+#import "SDLFileManager.h"
+#import "SDLGlobals.h"
+#import "SDLImage.h"
+#import "SDLImageField.h"
+#import "SDLImageField+ScreenManagerExtensions.h"
+#import "SDLMetadataTags.h"
+#import "SDLResult.h"
+#import "SDLSetDisplayLayout.h"
+#import "SDLSetDisplayLayoutResponse.h"
+#import "SDLShow.h"
+#import "SDLShowResponse.h"
+#import "SDLTemplateConfiguration.h"
+#import "SDLTextAndGraphicState.h"
+#import "SDLTextAndGraphicUpdateOperation.h"
+#import "SDLTextField.h"
+#import "SDLTextField+ScreenManagerExtensions.h"
+#import "SDLTextFieldName.h"
+#import "SDLVersion.h"
+#import "SDLWindowCapability.h"
+#import "TestConnectionManager.h"
+
+QuickSpecBegin(SDLTextAndGraphicUpdateOperationSpec)
+
+SDLTextField *fieldLine1 = [[SDLTextField alloc] initWithName:SDLTextFieldNameMainField1 characterSet:SDLCharacterSetUtf8 width:20 rows:20];
+SDLTextField *fieldLine2 = [[SDLTextField alloc] initWithName:SDLTextFieldNameMainField2 characterSet:SDLCharacterSetUtf8 width:20 rows:20];
+SDLTextField *fieldLine3 = [[SDLTextField alloc] initWithName:SDLTextFieldNameMainField3 characterSet:SDLCharacterSetUtf8 width:20 rows:20];
+SDLTextField *fieldLine4 = [[SDLTextField alloc] initWithName:SDLTextFieldNameMainField4 characterSet:SDLCharacterSetUtf8 width:20 rows:20];
+SDLImageField *fieldGraphic = [[SDLImageField alloc] initWithName:SDLImageFieldNameGraphic imageTypeSupported:@[SDLFileTypePNG] imageResolution:nil];
+SDLImageField *fieldSecondaryGraphic = [[SDLImageField alloc] initWithName:SDLImageFieldNameSecondaryGraphic imageTypeSupported:@[SDLFileTypePNG] imageResolution:nil];
+
+NSString *field1String = @"Text Field 1";
+NSString *field2String = @"Text Field 2";
+NSString *field3String = @"Text Field 3";
+NSString *field4String = @"Text Field 4";
+NSString *titleString = @"Title";
+NSString *mediaTrackString = @"Media track string";
+
+NSString *testArtworkName = @"some artwork name";
+SDLArtwork *testArtwork = [[SDLArtwork alloc] initWithData:[@"Test data" dataUsingEncoding:NSUTF8StringEncoding] name:testArtworkName fileExtension:@"png" persistent:NO];
+NSString *testArtworkName2 = @"some other artwork name";
+SDLArtwork *testArtwork2 = [[SDLArtwork alloc] initWithData:[@"Test data 2" dataUsingEncoding:NSUTF8StringEncoding] name:testArtworkName2 fileExtension:@"png" persistent:NO];
+SDLArtwork *testStaticIcon = [SDLArtwork artworkWithStaticIcon:SDLStaticIconNameDate];
+
+SDLTemplateConfiguration *newConfiguration = [[SDLTemplateConfiguration alloc] initWithPredefinedLayout:SDLPredefinedLayoutTilesOnly];
+
+describe(@"the text and graphic operation", ^{
+ __block SDLTextAndGraphicUpdateOperation *testOp = nil;
+
+ __block TestConnectionManager *testConnectionManager = nil;
+ __block SDLFileManager *mockFileManager = nil;
+ __block SDLWindowCapability *windowCapability = nil;
+ __block SDLTextAndGraphicState *updatedState = nil;
+ __block SDLWindowCapability *allEnabledCapability = [[SDLWindowCapability alloc] init];
+
+ __block SDLShowResponse *successShowResponse = [[SDLShowResponse alloc] init];
+ __block SDLSetDisplayLayoutResponse *successSetDisplayLayoutResponse = [[SDLSetDisplayLayoutResponse alloc] init];
+ __block SDLShowResponse *failShowResponse = [[SDLShowResponse alloc] init];
+ __block SDLSetDisplayLayoutResponse *failSetDisplayLayoutResponse = [[SDLSetDisplayLayoutResponse alloc] init];
+ __block SDLTextAndGraphicState *emptyCurrentData = nil;
+
+ __block SDLTextAndGraphicState *receivedState = nil;
+ __block NSError *receivedError = nil;
+ __block NSError *completionError = nil;
+
+ beforeEach(^{
+ testConnectionManager = [[TestConnectionManager alloc] init];
+ mockFileManager = OCMClassMock([SDLFileManager class]);
+ testOp = nil;
+ updatedState = nil;
+ allEnabledCapability.imageFields = [SDLImageField allImageFields];
+ allEnabledCapability.textFields = [SDLTextField allTextFields];
+
+ successShowResponse.success = @YES;
+ successShowResponse.resultCode = SDLResultSuccess;
+ successSetDisplayLayoutResponse.success = @YES;
+ successSetDisplayLayoutResponse.resultCode = SDLResultSuccess;
+ failShowResponse.success = @NO;
+ failShowResponse.resultCode = SDLResultInUse;
+ failSetDisplayLayoutResponse.success = @NO;
+ failSetDisplayLayoutResponse.resultCode = SDLResultInUse;
+
+ emptyCurrentData = [[SDLTextAndGraphicState alloc] init];
+ receivedState = nil;
+ receivedError = nil;
+
+ // Default to the max version
+ [SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:SDLMaxProxyRPCVersion];
+ });
+
+ // updating text fields
+ describe(@"updating text fields", ^{
+ // with textfields available == nil
+ context(@"with textfields available == nil", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ });
+
+ context(@"when sending four lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+ updatedState.textField4 = field4String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should not send any text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(beEmpty());
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beNil());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+ });
+
+ // when updating the media track and title
+ context(@"when updating the media track and title", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.title = titleString;
+ updatedState.mediaTrackTextField = mediaTrackString;
+ });
+
+ // when they're available
+ context(@"when they're available", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = [SDLTextField allTextFields];
+ });
+
+ it(@"should send the media track and title", ^{
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+ expect(sentShow.templateTitle).toNot(beNil());
+ expect(sentShow.mediaTrack).toNot(beNil());
+ });
+ });
+
+ // when they're not available
+ context(@"when they're not available", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ });
+
+ it(@"should not send the media track and title", ^{
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ });
+ });
+ });
+
+ // with one line available
+ context(@"with one line available", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = @[fieldLine1];
+ });
+
+ context(@"when sending one line of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should only send one line of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal(field1String));
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending two lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should concatenate the strings into one line", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@", field1String, field2String]));
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending three lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should concatenate the strings into one line", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@ - %@", field1String, field2String, field3String]));
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending four lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+ updatedState.textField4 = field4String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should concatenate the strings into one line", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@ - %@ - %@", field1String, field2String, field3String, field4String]));
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+ });
+
+ // with two lines available
+ context(@"with two lines available", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = @[fieldLine1, fieldLine2];
+ });
+
+ context(@"when sending one line of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should only send one line of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal(field1String));
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending two lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send two lines of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal(field1String));
+ expect(sentShow.mainField2).to(equal(field2String));
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending three lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should concatenate the strings into two lines", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@", field1String, field2String]));
+ expect(sentShow.mainField2).to(equal(field3String));
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending four lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+ updatedState.textField4 = field4String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should concatenate the strings into two lines", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@ - %@", field1String, field2String]));
+ expect(sentShow.mainField2).to(equal([NSString stringWithFormat:@"%@ - %@", field3String, field4String]));
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+ });
+
+ // with three lines available
+ context(@"with three lines available", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = @[fieldLine1, fieldLine2, fieldLine3];
+ });
+
+ context(@"when sending one line of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should only send one line of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending two lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send two lines of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(equal([NSString stringWithFormat:@"%@", field2String]));
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending three lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send three lines of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(equal([NSString stringWithFormat:@"%@", field2String]));
+ expect(sentShow.mainField3).to(equal([NSString stringWithFormat:@"%@", field3String]));
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beEmpty());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending four lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+ updatedState.textField4 = field4String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should concatenate the strings into three lines", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(equal([NSString stringWithFormat:@"%@", field2String]));
+ expect(sentShow.mainField3).to(equal([NSString stringWithFormat:@"%@ - %@", field3String, field4String]));
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beEmpty());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+ });
+
+ // with four lines available
+ context(@"with four lines available", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = @[fieldLine1, fieldLine2, fieldLine3, fieldLine4];
+ });
+
+ context(@"when sending one line of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should only send one line of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(beEmpty());
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beNil());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending two lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send two lines of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(equal([NSString stringWithFormat:@"%@", field2String]));
+ expect(sentShow.mainField3).to(beEmpty());
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beNil());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending three lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send three lines text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(equal([NSString stringWithFormat:@"%@", field2String]));
+ expect(sentShow.mainField3).to(equal([NSString stringWithFormat:@"%@", field3String]));
+ expect(sentShow.mainField4).to(beEmpty());
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beEmpty());
+ expect(sentShow.metadataTags.mainField4).to(beNil());
+ });
+ });
+
+ context(@"when sending four lines of text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+ updatedState.textField4 = field4String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send four lines of text", ^{
+ SDLShow *sentShow = testConnectionManager.receivedRequests.firstObject;
+
+ expect(testOp.isFinished).to(beTrue());
+ expect(sentShow.mainField1).to(equal([NSString stringWithFormat:@"%@", field1String]));
+ expect(sentShow.mainField2).to(equal([NSString stringWithFormat:@"%@", field2String]));
+ expect(sentShow.mainField3).to(equal([NSString stringWithFormat:@"%@", field3String]));
+ expect(sentShow.mainField4).to(equal([NSString stringWithFormat:@"%@", field4String]));
+ expect(sentShow.templateTitle).to(beEmpty());
+ expect(sentShow.alignment).to(beNil());
+ expect(sentShow.mediaTrack).to(beEmpty());
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ expect(sentShow.metadataTags.mainField1).to(beEmpty());
+ expect(sentShow.metadataTags.mainField2).to(beEmpty());
+ expect(sentShow.metadataTags.mainField3).to(beEmpty());
+ expect(sentShow.metadataTags.mainField4).to(beEmpty());
+ });
+ });
+ });
+
+ // should call the update handler when done
+ context(@"should call the update handler when done", ^{
+ __block BOOL didCallHandler = NO;
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = @[fieldLine1, fieldLine2, fieldLine3, fieldLine4];
+
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+ updatedState.textField4 = field4String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:^(NSError * _Nullable error) {
+ didCallHandler = YES;
+ }];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send the text and then call the update handler", ^{
+ expect(didCallHandler).to(equal(YES));
+ });
+ });
+
+ // should call the currentScreenDataUpdatedHandler when the screen data is updated
+ context(@"should call the currentScreenDataUpdatedHandler when the screen data is updated", ^{
+ __block SDLTextAndGraphicState *updatedData = nil;
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = @[fieldLine1, fieldLine2, fieldLine3, fieldLine4];
+
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.textField2 = field2String;
+ updatedState.textField3 = field3String;
+ updatedState.textField4 = field4String;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState *_Nullable newScreenData, NSError *_Nullable error) {
+ updatedData = newScreenData;
+ } updateCompletionHandler:nil];
+ [testOp start];
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ });
+
+ it(@"should send the text and then call the update handler", ^{
+ expect(updatedData.textField1).to(equal(field1String));
+ expect(updatedData.textField2).to(equal(field2String));
+ expect(updatedData.textField3).to(equal(field3String));
+ expect(updatedData.textField4).to(equal(field4String));
+ });
+ });
+ });
+
+ // updating image fields
+ describe(@"updating image fields", ^{
+ beforeEach(^{
+ windowCapability = [[SDLWindowCapability alloc] init];
+ windowCapability.textFields = @[fieldLine1, fieldLine2, fieldLine3, fieldLine4];
+ windowCapability.imageFields = @[fieldGraphic, fieldSecondaryGraphic];
+ });
+
+ // when the images are already available on the head unit
+ context(@"when the images are already available on the head unit", ^{
+ beforeEach(^{
+ OCMStub([mockFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(YES);
+ });
+
+ // when only the primary graphic is supported
+ context(@"when only the primary graphic is supported", ^{
+ beforeEach(^{
+ windowCapability.imageFields = @[fieldGraphic];
+
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.primaryGraphic = testArtwork;
+ updatedState.secondaryGraphic = testArtwork2;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should send a show and not upload any artworks", ^{
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *firstSentRequest = testConnectionManager.receivedRequests[0];
+ expect(firstSentRequest.mainField1).to(equal(field1String));
+ expect(firstSentRequest.mainField2).to(beEmpty());
+ expect(firstSentRequest.graphic).toNot(beNil());
+ expect(firstSentRequest.secondaryGraphic).to(beNil());
+ });
+ });
+
+ // when both image fields are supported
+ context(@"when both image fields are supported", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.primaryGraphic = testArtwork;
+ updatedState.secondaryGraphic = testArtwork2;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should send a show and not upload any artworks", ^{
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *firstSentRequest = testConnectionManager.receivedRequests[0];
+ expect(firstSentRequest.mainField1).to(equal(field1String));
+ expect(firstSentRequest.mainField2).to(beEmpty());
+ expect(firstSentRequest.graphic).toNot(beNil());
+ expect(firstSentRequest.secondaryGraphic).toNot(beNil());
+ });
+ });
+ });
+
+ // when images are not on the head unit
+ context(@"when images are not on the head unit", ^{
+ beforeEach(^{
+ OCMStub([mockFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO);
+ OCMStub([mockFileManager uploadArtworks:[OCMArg any] progressHandler:[OCMArg any] completionHandler:([OCMArg invokeBlockWithArgs:[NSNull null], [NSNull null], nil])]);
+ });
+
+ // when there is text to update as well
+ context(@"when there is text to update as well", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.primaryGraphic = testArtwork;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {
+ receivedState = newScreenData;
+ receivedError = error;
+ } updateCompletionHandler:^(NSError * _Nullable error) {
+ completionError = error;
+ }];
+ [testOp start];
+ });
+
+ context(@"when the text show succeeds", ^{
+ it(@"should then upload the images, then send the full show", ^{
+ // First the text only show should be sent
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *firstSentRequest = testConnectionManager.receivedRequests[0];
+ expect(firstSentRequest.mainField1).to(equal(field1String));
+ expect(firstSentRequest.graphic).to(beNil());
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+
+ // Then the images should be uploaded
+ OCMExpect([mockFileManager uploadArtworks:[OCMArg any] progressHandler:[OCMArg any] completionHandler:[OCMArg any]]);
+
+ // Then the full show should be sent, this is currently not testable because the `mockFileManager hasUploadedFile` should change mid-call of `uploadArtworks` after the artwork is uploaded but before the final Show is sent in sdl_createImageOnlyShowWithPrimaryArtwork.
+ // expect(testConnectionManager.receivedRequests).to(haveCount(2));
+ // SDLShow *secondSentRequest = testConnectionManager.receivedRequests[1];
+ // expect(secondSentRequest.mainField1).to(beNil());
+ // expect(secondSentRequest.graphic).toNot(beNil());
+ });
+ });
+
+ context(@"when the text show fails", ^{
+ it(@"should return an error and finish the operation", ^{
+ // First the text only show should be sent
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *firstSentRequest = testConnectionManager.receivedRequests[0];
+ expect(firstSentRequest.mainField1).to(equal(field1String));
+ expect(firstSentRequest.graphic).to(beNil());
+ [testConnectionManager respondToLastRequestWithResponse:failShowResponse];
+
+ // Then it should return a failure and finish
+ expect(receivedState).to(beNil());
+ expect(receivedError).toNot(beNil());
+ expect(completionError).toNot(beNil());
+
+ expect(testOp.isFinished).to(beTrue());
+ });
+ });
+
+ context(@"when cancelled before the text show returns", ^{
+ it(@"should return an error and finish the operation", ^{
+ // First the text only show should be sent
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *firstSentRequest = testConnectionManager.receivedRequests[0];
+ expect(firstSentRequest.mainField1).to(equal(field1String));
+ expect(firstSentRequest.graphic).to(beNil());
+
+ [testOp cancel];
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+
+ // Then it should return a failure and finish
+ expect(receivedState).toNot(beNil());
+ expect(receivedError).to(beNil());
+ expect(completionError).toNot(beNil());
+
+ expect(testOp.isFinished).to(beTrue());
+ });
+ });
+ });
+
+ // when there is no text to update
+ context(@"when there is no text to update", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.primaryGraphic = testArtwork;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should just upload the images, then send the full show", ^{
+ // First the text only show should be sent
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *firstSentRequest = testConnectionManager.receivedRequests[0];
+ expect(firstSentRequest.mainField1).to(beEmpty());
+ expect(firstSentRequest.graphic).to(beNil());
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+
+ // Then the images should be uploaded
+ OCMExpect([mockFileManager uploadArtworks:[OCMArg any] progressHandler:[OCMArg any] completionHandler:[OCMArg any]]);
+
+ // Then the full show should be sent, this is currently not testable because the `mockFileManager hasUploadedFile` should change mid-call of `uploadArtworks` after the artwork is uploaded but before the final Show is sent in sdl_createImageOnlyShowWithPrimaryArtwork.
+// expect(testConnectionManager.receivedRequests).to(haveCount(2));
+// SDLShow *secondSentRequest = testConnectionManager.receivedRequests[1];
+// expect(secondSentRequest.mainField1).to(beEmpty());
+// expect(secondSentRequest.graphic).toNot(beNil());
+ });
+ });
+
+ // when the image is a static icon
+ context(@"when the image is a static icon", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.primaryGraphic = testStaticIcon;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should not upload the artwork", ^{
+ // The full show should be sent immediately
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *firstSentRequest = testConnectionManager.receivedRequests[0];
+ expect(firstSentRequest.mainField1).to(beEmpty());
+ expect(firstSentRequest.graphic).toNot(beNil());
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+
+ // Then the images should be uploaded
+ OCMReject([mockFileManager uploadArtworks:[OCMArg any] progressHandler:[OCMArg any] completionHandler:[OCMArg any]]);
+ });
+ });
+ });
+
+ // when an image fails to upload to the remote
+ describe(@"when an image fails to upload to the remote", ^{
+ context(@"if the images for the primary and secondary graphics fail the upload process", ^{
+ beforeEach(^{
+ OCMStub([mockFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO);
+ NSArray<NSString *> *testSuccessfulArtworks = @[];
+ NSError *testError = [NSError errorWithDomain:@"errorDomain"
+ code:9
+ userInfo:@{testArtwork.name:@"error 1", testArtwork2.name:@"error 2"}
+ ];
+ OCMStub([mockFileManager uploadArtworks:[OCMArg isNotNil] completionHandler:([OCMArg invokeBlockWithArgs:testSuccessfulArtworks, testError, nil])]);
+
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.primaryGraphic = testArtwork;
+ updatedState.secondaryGraphic = testArtwork2;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should skip sending an update", ^{
+ // Just the empty text show
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+
+ SDLShow *sentShow = testConnectionManager.receivedRequests[0];
+ expect(sentShow.graphic).to(beNil());
+ expect(sentShow.secondaryGraphic).to(beNil());
+ });
+ });
+
+ context(@"if only one of images for the primary and secondary graphics fails to upload", ^{
+ it(@"should show the primary graphic even if the secondary graphic upload fails", ^{
+ OCMStub([mockFileManager hasUploadedFile:testArtwork]).andReturn(YES);
+ OCMStub([mockFileManager hasUploadedFile:testArtwork2]).andReturn(NO);
+ NSArray<NSString *> *testSuccessfulArtworks = @[testArtwork.name];
+ NSError *testError = [NSError errorWithDomain:@"errorDomain" code:9 userInfo:@{testArtwork2.name:@"error 2"}];
+ OCMStub([mockFileManager uploadArtworks:[OCMArg isNotNil] progressHandler:[OCMArg isNotNil] completionHandler:([OCMArg invokeBlockWithArgs:testSuccessfulArtworks, testError, nil])]);
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.primaryGraphic = testArtwork;
+ updatedState.secondaryGraphic = testArtwork2;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *receivedShow = testConnectionManager.receivedRequests[0];
+ expect(receivedShow.mainField1).to(equal(field1String));
+ expect(receivedShow.graphic.value).to(beNil());
+ expect(receivedShow.secondaryGraphic).to(beNil());
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ expect(testConnectionManager.receivedRequests).to(haveCount(2));
+ SDLShow *secondReceivedShow = testConnectionManager.receivedRequests[1];
+ expect(secondReceivedShow.mainField1).to(beNil());
+ expect(secondReceivedShow.graphic.value).to(equal(testArtwork.name));
+ expect(secondReceivedShow.secondaryGraphic).to(beNil());
+ });
+
+ it(@"Should show the secondary graphic even if the primary graphic upload fails", ^{
+ OCMStub([mockFileManager hasUploadedFile:testArtwork]).andReturn(NO);
+ OCMStub([mockFileManager hasUploadedFile:testArtwork2]).andReturn(YES);
+ NSArray<NSString *> *testSuccessfulArtworks = @[testArtwork2.name];
+ NSError *testError = [NSError errorWithDomain:@"errorDomain" code:9 userInfo:@{testArtwork.name:@"error 2"}];
+ OCMStub([mockFileManager uploadArtworks:[OCMArg isNotNil] progressHandler:[OCMArg isNotNil] completionHandler:([OCMArg invokeBlockWithArgs:testSuccessfulArtworks, testError, nil])]);
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.textField1 = field1String;
+ updatedState.primaryGraphic = testArtwork;
+ updatedState.secondaryGraphic = testArtwork2;
+
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:windowCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {} updateCompletionHandler:nil];
+ [testOp start];
+
+ expect(testConnectionManager.receivedRequests).to(haveCount(1));
+ SDLShow *receivedShow = testConnectionManager.receivedRequests[0];
+ expect(receivedShow.mainField1).to(equal(field1String));
+ expect(receivedShow.graphic).to(beNil());
+ expect(receivedShow.secondaryGraphic).to(beNil());
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ expect(testConnectionManager.receivedRequests).to(haveCount(2));
+ SDLShow *secondReceivedShow = testConnectionManager.receivedRequests[1];
+ expect(secondReceivedShow.mainField1).to(beNil());
+ expect(secondReceivedShow.graphic).to(beNil());
+ expect(secondReceivedShow.secondaryGraphic.value).to(equal(testArtwork2.name));
+ });
+ });
+ });
+ });
+
+ // changing a layout
+ describe(@"changing a layout", ^{
+ // on less than RPC 6.0
+ context(@"on less than RPC 6.0", ^{
+ beforeEach(^{
+ [SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"5.0.0"];
+ });
+
+ // by itself
+ context(@"by itself", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.templateConfig = newConfiguration;
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:allEnabledCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {
+ receivedState = newScreenData;
+ receivedError = error;
+ } updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should send a set display layout, then update the screen data, then send a Show with no data", ^{
+ SDLSetDisplayLayout *sentRPC = testConnectionManager.receivedRequests.firstObject;
+ expect(sentRPC).to(beAnInstanceOf([SDLSetDisplayLayout class]));
+ expect(sentRPC.displayLayout).to(equal(newConfiguration.template));
+
+ [testConnectionManager respondToLastRequestWithResponse:successSetDisplayLayoutResponse];
+ expect(receivedState.templateConfig).toNot(beNil());
+ expect(receivedError).to(beNil());
+
+ SDLShow *sentRPC2 = testConnectionManager.receivedRequests[1];
+ expect(sentRPC2).to(beAnInstanceOf([SDLShow class]));
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ expect(testOp.isFinished).to(beTrue());
+ });
+ });
+
+ // with other text
+ context(@"with other text", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.templateConfig = newConfiguration;
+ updatedState.textField1 = field1String;
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:allEnabledCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {
+ receivedState = newScreenData;
+ receivedError = error;
+ } updateCompletionHandler:^(NSError * _Nullable error) {
+ completionError = error;
+ }];
+ [testOp start];
+ });
+
+ // should send a set display layout, then update the screen data, then send a Show with data and then update the screen data again
+ it(@"should send a set display layout, then update the screen data, then send a Show with data and then update the screen data again", ^{
+ SDLSetDisplayLayout *sentRPC = testConnectionManager.receivedRequests.firstObject;
+ expect(sentRPC).to(beAnInstanceOf([SDLSetDisplayLayout class]));
+ expect(sentRPC.displayLayout).to(equal(newConfiguration.template));
+
+ [testConnectionManager respondToLastRequestWithResponse:successSetDisplayLayoutResponse];
+ expect(receivedState.templateConfig).toNot(beNil());
+ expect(receivedState.textField1).to(beNil());
+ expect(receivedError).to(beNil());
+
+ SDLShow *sentRPC2 = testConnectionManager.receivedRequests[1];
+ expect(sentRPC2).to(beAnInstanceOf([SDLShow class]));
+ expect(sentRPC2.mainField1).to(equal(field1String));
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ expect(receivedState.templateConfig).toNot(beNil());
+ expect(receivedState.textField1).toNot(beNil());
+ expect(receivedError).to(beNil());
+ expect(completionError).to(beNil());
+ expect(testOp.isFinished).to(beTrue());
+ });
+
+ // when cancelled before finishing
+ describe(@"when cancelled before finishing", ^{
+ it(@"should finish the operation with the set display layout data in the current data handler and set an update superseded error in the update completion handler", ^{
+ SDLSetDisplayLayout *sentRPC = testConnectionManager.receivedRequests.firstObject;
+ expect(sentRPC).to(beAnInstanceOf([SDLSetDisplayLayout class]));
+ expect(sentRPC.displayLayout).to(equal(newConfiguration.template));
+
+ [testOp cancel];
+ [testConnectionManager respondToLastRequestWithResponse:successSetDisplayLayoutResponse];
+ expect(receivedState).toNot(beNil());
+ expect(receivedError).to(beNil());
+ expect(completionError).toNot(beNil());
+
+ expect(testOp.isFinished).to(beTrue());
+
+ });
+ });
+
+ // when it receives a set display layout failure
+ describe(@"when it receives a set display layout failure", ^{
+ it(@"should send a set display layout, then reset the screen data, then finish the operation", ^{
+ SDLSetDisplayLayout *sentRPC = testConnectionManager.receivedRequests.firstObject;
+ expect(sentRPC).to(beAnInstanceOf([SDLSetDisplayLayout class]));
+ expect(sentRPC.displayLayout).to(equal(newConfiguration.template));
+
+ [testConnectionManager respondToLastRequestWithResponse:failSetDisplayLayoutResponse];
+ expect(receivedState).to(beNil());
+ expect(receivedError).toNot(beNil());
+ expect(completionError).toNot(beNil());
+
+ expect(testOp.isFinished).to(beTrue());
+ });
+ });
+ });
+ });
+
+ // on greater or equal than RPC 6.0
+ context(@"on greater or equal than RPC 6.0", ^{
+ beforeEach(^{
+ [SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"6.0.0"];
+ });
+
+ // by itself
+ context(@"by itself", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.templateConfig = newConfiguration;
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:allEnabledCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {
+ receivedState = newScreenData;
+ receivedError = error;
+ } updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should send a show, then update the screen data", ^{
+ SDLShow *sentRPC = testConnectionManager.receivedRequests.firstObject;
+ expect(sentRPC).to(beAnInstanceOf([SDLShow class]));
+ expect(sentRPC.templateConfiguration).to(equal(newConfiguration));
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ expect(receivedState.templateConfig).toNot(beNil());
+ expect(receivedState.textField1).to(beNil());
+ expect(receivedError).to(beNil());
+ expect(testOp.isFinished).to(beTrue());
+ });
+ });
+
+ // with other text
+ context(@"with other text that isn't supported", ^{
+ beforeEach(^{
+ updatedState = [[SDLTextAndGraphicState alloc] init];
+ updatedState.templateConfig = newConfiguration;
+ updatedState.textField1 = field1String;
+ testOp = [[SDLTextAndGraphicUpdateOperation alloc] initWithConnectionManager:testConnectionManager fileManager:mockFileManager currentCapabilities:allEnabledCapability currentScreenData:emptyCurrentData newState:updatedState currentScreenDataUpdatedHandler:^(SDLTextAndGraphicState * _Nullable newScreenData, NSError * _Nullable error) {
+ receivedState = newScreenData;
+ receivedError = error;
+ } updateCompletionHandler:nil];
+ [testOp start];
+ });
+
+ it(@"should send a show, then update all screen data", ^{
+ SDLShow *sentRPC = testConnectionManager.receivedRequests.firstObject;
+ expect(sentRPC).to(beAnInstanceOf([SDLShow class]));
+ expect(sentRPC.templateConfiguration).to(equal(newConfiguration));
+
+ [testConnectionManager respondToLastRequestWithResponse:successShowResponse];
+ expect(receivedState.templateConfig).toNot(beNil());
+ expect(receivedState.textField1).to(equal(field1String));
+ expect(receivedError).to(beNil());
+ expect(testOp.isFinished).to(beTrue());
+ });
+
+ // when it receives a show failure
+ describe(@"when it receives a show failure", ^{
+ it(@"it should send a set display layout, then reset the screen data, then do nothing else", ^{
+ SDLShow *sentRPC = testConnectionManager.receivedRequests.firstObject;
+ expect(sentRPC).to(beAnInstanceOf([SDLShow class]));
+ expect(sentRPC.templateConfiguration).to(equal(newConfiguration));
+
+ [testConnectionManager respondToLastRequestWithResponse:failShowResponse];
+ expect(receivedState).to(beNil());
+ expect(receivedError).toNot(beNil());
+
+ expect(testOp.isFinished).to(beTrue());
+ });
+ });
+ });
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m
index 9621f6e75..08dcb922c 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLVersionSpec.m
@@ -1,7 +1,6 @@
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
-#import "SDLSyncMsgVersion.h"
#import "SDLMsgVersion.h"
#import "SDLVersion.h"
@@ -56,22 +55,6 @@ describe(@"a version object", ^{
});
});
- context(@"created from a SyncMsgVersion object", ^{
- beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSyncMsgVersion *msgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:major minorVersion:minor patchVersion:patch];
- testVersion = [[SDLVersion alloc] initWithSyncMsgVersion:msgVersion];
-#pragma clang diagnostic pop
- });
-
- it(@"should match the parameters", ^{
- expect(testVersion.major).to(equal(major));
- expect(testVersion.minor).to(equal(minor));
- expect(testVersion.patch).to(equal(patch));
- });
- });
-
context(@"created from a SDLMsgVersion object", ^{
beforeEach(^{
SDLMsgVersion *msgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:major minorVersion:minor patchVersion:patch];
diff --git a/SmartDeviceLinkTests/LoggingSpecs/SDLLogConfigurationSpec.m b/SmartDeviceLinkTests/LoggingSpecs/SDLLogConfigurationSpec.m
index d434f1269..df4d48691 100644
--- a/SmartDeviceLinkTests/LoggingSpecs/SDLLogConfigurationSpec.m
+++ b/SmartDeviceLinkTests/LoggingSpecs/SDLLogConfigurationSpec.m
@@ -22,12 +22,7 @@ describe(@"a log configuration", ^{
expect(@(testConfiguration.errorsAsynchronous)).to(equal(@NO));
expect(@(testConfiguration.areAssertionsDisabled)).to(equal(@NO));
expect(@(testConfiguration.globalLogLevel)).to(equal(@(SDLLogLevelError)));
-
- if ([NSProcessInfo processInfo].operatingSystemVersion.majorVersion >= 10) {
- expect([testConfiguration.targets anyObject].class).to(equal([SDLLogTargetOSLog class]));
- } else {
- expect([testConfiguration.targets anyObject].class).to(equal([SDLLogTargetAppleSystemLog class]));
- }
+ expect([testConfiguration.targets anyObject].class).to(equal([SDLLogTargetOSLog class]));
});
});
@@ -43,12 +38,7 @@ describe(@"a log configuration", ^{
expect(@(testConfiguration.errorsAsynchronous)).to(equal(@NO));
expect(@(testConfiguration.areAssertionsDisabled)).to(equal(@NO));
expect(@(testConfiguration.globalLogLevel)).to(equal(@(SDLLogLevelDebug)));
-
- if ([NSProcessInfo processInfo].operatingSystemVersion.majorVersion >= 10) {
- expect([testConfiguration.targets anyObject].class).to(equal([SDLLogTargetOSLog class]));
- } else {
- expect([testConfiguration.targets anyObject].class).to(equal([SDLLogTargetAppleSystemLog class]));
- }
+ expect([testConfiguration.targets anyObject].class).to(equal([SDLLogTargetOSLog class]));
});
});
});
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/ControlFramePayloadSpecs/SDLControlFramePayloadNakSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/ControlFramePayloadSpecs/SDLControlFramePayloadNakSpec.m
index 282ce9bc7..78a2e8137 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/ControlFramePayloadSpecs/SDLControlFramePayloadNakSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/ControlFramePayloadSpecs/SDLControlFramePayloadNakSpec.m
@@ -15,19 +15,18 @@ describe(@"Test encoding data", ^{
context(@"with paramaters", ^{
beforeEach(^{
testParams = @[@"testParam1", @"testParam2"];
- testPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:testParams];
+ testPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:testParams reason:@"failed"];
});
it(@"should create the correct data", ^{
NSString *base64Encoded = [testPayload.data base64EncodedStringWithOptions:0];
- expect(base64Encoded).to(equal(@"PgAAAARyZWplY3RlZFBhcmFtcwApAAAAAjAACwAAAHRlc3RQYXJhbTEAAjEACwAAAHRlc3RQYXJhbTIAAAA="));
+ expect(base64Encoded).to(equal(@"UQAAAARyZWplY3RlZFBhcmFtcwApAAAAAjAACwAAAHRlc3RQYXJhbTEAAjEACwAAAHRlc3RQYXJhbTIAAAJyZWFzb24ABwAAAGZhaWxlZAAA"));
});
});
context(@"without parameters", ^{
beforeEach(^{
- testParams = nil;
- testPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:testParams];
+ testPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:nil reason:nil];
});
it(@"should create no data", ^{
@@ -44,7 +43,7 @@ describe(@"Test decoding data", ^{
beforeEach(^{
testParams = @[@"testParam1", @"testParam2"];
- SDLControlFramePayloadNak *firstPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:testParams];
+ SDLControlFramePayloadNak *firstPayload = [[SDLControlFramePayloadNak alloc] initWithRejectedParams:testParams reason:@"failed"];
testData = firstPayload.data;
testPayload = [[SDLControlFramePayloadNak alloc] initWithData:testData];
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
index b4e542012..483033569 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
@@ -399,6 +399,8 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
__block id transportMock = nil;
__block SDLProtocol *testProtocol = nil;
__block id delegateMock = nil;
+ __block int64_t testMTU = 989786483;
+ __block int32_t hashId = 1545784;
beforeEach(^{
transportMock = OCMProtocolMock(@protocol(SDLTransportType));
@@ -419,7 +421,7 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
context(@"If the service type is RPC", ^{
it(@"Should store the auth token and the protocol version and pass the start service along to the delegate", ^{
- SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:testAuthToken protocolVersion:@"5.2.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:testAuthToken protocolVersion:@"5.2.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
NSData *testData = testPayload.data;
SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
@@ -443,7 +445,7 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
});
it(@"Should store the protocol version, but not get the auth token, and pass the start service along to the delegate if the protocol version is greater than 5.0.0 but less than 5.2.0", ^{
- SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
NSData *testData = testPayload.data;
SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
@@ -467,7 +469,7 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
});
it(@"Should set the max head unit version using the header version if the protocol version is missing from the payload", ^{
- SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:nil protocolVersion:nil secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:nil protocolVersion:nil secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
NSData *testData = testPayload.data;
SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
@@ -491,9 +493,9 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
});
});
- context(@"If the service type is not RPC", ^{
+ context(@"If the service type is control", ^{
it(@"Should just pass the start service along to the delegate", ^{
- SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
NSData *testData = testPayload.data;
SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
@@ -517,12 +519,68 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"0.0.0"));
});
});
+
+ context(@"If the service type is Audio", ^{
+ it(@"Should just pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeAudio;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ SDLProtocolMessage *ackMessage = [SDLProtocolMessage messageWithHeader:testHeader andPayload:testData];
+ OCMExpect([delegateMock protocol:testProtocol didReceiveStartServiceACK:ackMessage]);
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol protocol:testProtocol didReceiveStartServiceACK:ackMessage];
+
+ OCMVerifyAllWithDelay(delegateMock, 0.1);
+
+ // Should keep their default values
+ expect(testProtocol.authToken).to(beNil());
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"1.0.0"));
+ expect([[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeAudio]).to(equal(testMTU));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"0.0.0"));
+ });
+ });
+
+ context(@"If the service type is Video", ^{
+ it(@"Should just pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:testAuthToken protocolVersion:@"5.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeVideo;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ SDLProtocolMessage *ackMessage = [SDLProtocolMessage messageWithHeader:testHeader andPayload:testData];
+ OCMExpect([delegateMock protocol:testProtocol didReceiveStartServiceACK:ackMessage]);
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol protocol:testProtocol didReceiveStartServiceACK:ackMessage];
+
+ OCMVerifyAllWithDelay(delegateMock, 0.1);
+
+ // Should keep their default values
+ expect(testProtocol.authToken).to(beNil());
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"1.0.0"));
+ expect([[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeVideo]).to(equal(testMTU));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"0.0.0"));
+ });
+ });
});
context(@"For protocol versions below 5.0.0", ^{
context(@"If the service type is RPC", ^{
it(@"Should store the protocol version and pass the start service along to the delegate", ^{
- SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:nil protocolVersion:@"3.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:nil protocolVersion:@"3.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
NSData *testData = testPayload.data;
SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:5];
@@ -547,7 +605,7 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
context(@"If the service type is not RPC", ^{
it(@"Should just pass the start service along to the delegate", ^{
- SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:1545784 mtu:989786483 authToken:nil protocolVersion:@"4.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:nil protocolVersion:@"4.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
NSData *testData = testPayload.data;
SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:4];
@@ -569,6 +627,58 @@ describe(@"HandleProtocolSessionStarted tests", ^ {
OCMVerifyAllWithDelay(delegateMock, 0.1);
});
});
+
+ context(@"If the service type is Audio", ^{
+ it(@"Should just pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:nil protocolVersion:@"4.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:4];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeAudio;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ SDLProtocolMessage *ackMessage = [SDLProtocolMessage messageWithHeader:testHeader andPayload:testData];
+ OCMExpect([delegateMock protocol:testProtocol didReceiveStartServiceACK:ackMessage]);
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol protocol:testProtocol didReceiveStartServiceACK:ackMessage];
+
+ // Should keep their default values
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"1.0.0"));
+ expect([[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeAudio]).to(equal(1024));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"0.0.0"));
+ OCMVerifyAllWithDelay(delegateMock, 0.1);
+ });
+ });
+
+ context(@"If the service type is Video", ^{
+ it(@"Should just pass the start service along to the delegate", ^{
+ SDLControlFramePayloadRPCStartServiceAck *testPayload = [[SDLControlFramePayloadRPCStartServiceAck alloc] initWithHashId:hashId mtu:testMTU authToken:nil protocolVersion:@"4.1.0" secondaryTransports:nil audioServiceTransports:nil videoServiceTransports:nil];
+ NSData *testData = testPayload.data;
+
+ SDLV2ProtocolHeader* testHeader = [[SDLV2ProtocolHeader alloc] initWithVersion:4];
+ testHeader.frameType = SDLFrameTypeControl;
+ testHeader.serviceType = SDLServiceTypeVideo;
+ testHeader.frameData = SDLFrameInfoStartServiceACK;
+ testHeader.sessionID = 0x93;
+ testHeader.bytesInPayload = (UInt32)testData.length;
+
+ SDLProtocolMessage *ackMessage = [SDLProtocolMessage messageWithHeader:testHeader andPayload:testData];
+ OCMExpect([delegateMock protocol:testProtocol didReceiveStartServiceACK:ackMessage]);
+
+ [testProtocol.protocolDelegateTable addObject:delegateMock];
+ [testProtocol protocol:testProtocol didReceiveStartServiceACK:ackMessage];
+
+ // Should keep their default values
+ expect([SDLGlobals sharedGlobals].protocolVersion.stringVersion).to(equal(@"1.0.0"));
+ expect([[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeVideo]).to(equal(1024));
+ expect([SDLGlobals sharedGlobals].maxHeadUnitProtocolVersion.stringVersion).to(equal(@"0.0.0"));
+ OCMVerifyAllWithDelay(delegateMock, 0.1);
+ });
+ });
});
});
diff --git a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
index 32599856d..b47292f55 100644
--- a/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
+++ b/SmartDeviceLinkTests/ProtocolSpecs/SDLFunctionIDSpec.m
@@ -89,6 +89,8 @@ describe(@"GetFunctionName Tests", ^ {
expect([functionID functionNameForId:32785]).to(equal(SDLRPCFunctionNameOnRCStatus));
expect([functionID functionNameForId:32786]).to(equal(SDLRPCFunctionNameOnAppServiceData));
expect([functionID functionNameForId:32787]).to(equal(SDLRPCFunctionNameOnSystemCapabilityUpdated));
+ expect([functionID functionNameForId:32789]).to(equal(SDLRPCFunctionNameOnUpdateFile));
+ expect([functionID functionNameForId:32790]).to(equal(SDLRPCFunctionNameOnUpdateSubMenu));
//Not listed in Spec
#pragma clang diagnostic push
diff --git a/SmartDeviceLinkTests/ProxySpecs/SDLHapticManagerSpec.m b/SmartDeviceLinkTests/ProxySpecs/SDLHapticManagerSpec.m
index c5e50301f..cec23d2ee 100644
--- a/SmartDeviceLinkTests/ProxySpecs/SDLHapticManagerSpec.m
+++ b/SmartDeviceLinkTests/ProxySpecs/SDLHapticManagerSpec.m
@@ -19,6 +19,7 @@
#import "SDLTouchCoord.h"
#import "SDLTouchEvent.h"
#import "SDLTouch.h"
+#import "TestHapticRectViewController.h"
BOOL compareRectangle(SDLRectangle *sdlRectangle, CGRect cgRect) {
expect(sdlRectangle.x).to(equal(cgRect.origin.x));
@@ -46,7 +47,7 @@ QuickSpecBegin(SDLHapticManagerSpec)
describe(@"the haptic manager", ^{
__block UIWindow *uiWindow;
- __block UIViewController *uiViewController;
+ __block TestHapticRectViewController *testHapticRectViewController;
__block SDLFocusableItemLocator *hapticManager;
__block SDLSendHapticData* sentHapticRequest;
@@ -58,23 +59,23 @@ describe(@"the haptic manager", ^{
beforeEach(^{
uiWindow = [[UIWindow alloc] init];
- uiViewController = [[UIViewController alloc] init];
- uiWindow.rootViewController = uiViewController;
+ testHapticRectViewController = [[TestHapticRectViewController alloc] init];
+ uiWindow.rootViewController = testHapticRectViewController;
sdlLifecycleManager = OCMProtocolMock(@protocol(SDLConnectionManagerType));
hapticManager = nil;
sentHapticRequest = nil;
- sdlStreamingVideoScaleManager = [[SDLStreamingVideoScaleManager alloc] initWithScale:1.0 displayViewportResolution:uiViewController.view.frame.size];
+ sdlStreamingVideoScaleManager = [[SDLStreamingVideoScaleManager alloc] initWithScale:1.0 displayViewportResolution:testHapticRectViewController.view.frame.size];
});
context(@"when disabled", ^{
beforeEach(^{
viewRect1 = CGRectMake(101, 101, 50, 50);
UITextField *textField1 = [[UITextField alloc] initWithFrame:viewRect1];
- [uiViewController.view addSubview:textField1];
+ [testHapticRectViewController.view addSubview:textField1];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = NO;
[hapticManager updateInterfaceLayout];
});
@@ -94,7 +95,7 @@ describe(@"the haptic manager", ^{
context(@"when initialized with no focusable view", ^{
beforeEach(^{
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
[hapticManager updateInterfaceLayout];
});
@@ -114,9 +115,9 @@ describe(@"the haptic manager", ^{
beforeEach(^{
viewRect1 = CGRectMake(101, 101, 50, 50);
UITextField *textField1 = [[UITextField alloc] initWithFrame:viewRect1];
- [uiViewController.view addSubview:textField1];
+ [testHapticRectViewController.view addSubview:textField1];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
});
@@ -147,9 +148,9 @@ describe(@"the haptic manager", ^{
beforeEach(^{
viewRect1 = CGRectMake(101, 101, 50, 50);
UIButton *button = [[UIButton alloc] initWithFrame:viewRect1];
- [uiViewController.view addSubview:button];
+ [testHapticRectViewController.view addSubview:button];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
});
@@ -178,17 +179,19 @@ describe(@"the haptic manager", ^{
context(@"when initialized with no views and then updated with two additional views", ^{
beforeEach(^{
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
viewRect1 = CGRectMake(101, 101, 50, 50);
UITextField *textField1 = [[UITextField alloc] initWithFrame:viewRect1];
- [uiViewController.view addSubview:textField1];
+ textField1.tag = 2;
+ [testHapticRectViewController.view addSubview:textField1];
- viewRect2 = CGRectMake(201, 201, 50, 50);
+ viewRect2 = CGRectMake(333, 333, 50, 50);
UITextField *textField2 = [[UITextField alloc] initWithFrame:viewRect2];
- [uiViewController.view addSubview:textField2];
+ textField2.tag = 1; // Preferred focus view
+ [testHapticRectViewController.view addSubview:textField2];
[hapticManager updateInterfaceLayout];
});
@@ -222,7 +225,7 @@ describe(@"the haptic manager", ^{
context(@"when initialized with nested views", ^{
beforeEach(^{
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(101, 101, 50, 50)];
- [uiViewController.view addSubview:textField];
+ [testHapticRectViewController.view addSubview:textField];
viewRect1 = CGRectMake(110, 110, 10, 10);
UITextField *textField1 = [[UITextField alloc] initWithFrame:viewRect1];
@@ -232,7 +235,7 @@ describe(@"the haptic manager", ^{
UITextField *textField2 = [[UITextField alloc] initWithFrame:viewRect2];
[textField addSubview:textField2];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
});
@@ -266,7 +269,7 @@ describe(@"the haptic manager", ^{
context(@"when initialized with nested button views", ^{
beforeEach(^{
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(101, 101, 50, 50)];
- [uiViewController.view addSubview:button];
+ [testHapticRectViewController.view addSubview:button];
viewRect1 = CGRectMake(110, 110, 10, 10);
UIButton *button1 = [[UIButton alloc] initWithFrame:viewRect1];
@@ -276,7 +279,7 @@ describe(@"the haptic manager", ^{
UITextField *textField2 = [[UITextField alloc] initWithFrame:viewRect2];
[button addSubview:textField2];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
});
@@ -319,13 +322,13 @@ describe(@"the haptic manager", ^{
viewRect1 = CGRectMake(101, 101, 50, 50);
UITextField *textField1 = [[UITextField alloc] initWithFrame:viewRect1];
- [uiViewController.view addSubview:textField1];
+ [testHapticRectViewController.view addSubview:textField1];
viewRect2 = CGRectMake(201, 201, 50, 50);
UITextField *textField2 = [[UITextField alloc] initWithFrame:viewRect2];
- [uiViewController.view addSubview:textField2];
+ [testHapticRectViewController.view addSubview:textField2];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
@@ -348,6 +351,7 @@ describe(@"the haptic manager", ^{
});
});
+ // FIXME
context(@"when initialized with one view and notified after adding one more view", ^{
beforeEach(^{
OCMStub([sdlLifecycleManager sendConnectionManagerRequest:[OCMArg checkWithBlock:^BOOL(id value){
@@ -360,15 +364,17 @@ describe(@"the haptic manager", ^{
viewRect1 = CGRectMake(101, 101, 50, 50);
UITextField *textField1 = [[UITextField alloc] initWithFrame:viewRect1];
- [uiViewController.view addSubview:textField1];
+ textField1.tag = 2;
+ [testHapticRectViewController.view addSubview:textField1];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
viewRect2 = CGRectMake(201, 201, 50, 50);
UITextField *textField2 = [[UITextField alloc] initWithFrame:viewRect2];
- [uiViewController.view addSubview:textField2];
+ textField2.tag = 1; // Preferred focus view
+ [testHapticRectViewController.view addSubview:textField2];
});
context(@"when not started", ^{
@@ -416,7 +422,7 @@ describe(@"the haptic manager", ^{
context(@"when stopped", ^{
beforeEach(^{
[hapticManager stop];
- for (UIView *subview in uiViewController.view.subviews) { [subview removeFromSuperview]; }
+ for (UIView *subview in testHapticRectViewController.view.subviews) { [subview removeFromSuperview]; }
[[NSNotificationCenter defaultCenter] postNotificationName:SDLDidUpdateProjectionView object:nil];
});
@@ -431,12 +437,12 @@ describe(@"the haptic manager", ^{
context(@"when touched inside a view", ^{
beforeEach(^{
UITextField *textField1 = [[UITextField alloc] initWithFrame:CGRectMake(101, 101, 50, 50)];
- [uiViewController.view addSubview:textField1];
+ [testHapticRectViewController.view addSubview:textField1];
UITextField *textField2 = [[UITextField alloc] initWithFrame:CGRectMake(201, 201, 50, 50)];
- [uiViewController.view addSubview:textField2];
+ [testHapticRectViewController.view addSubview:textField2];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
});
@@ -453,12 +459,12 @@ describe(@"the haptic manager", ^{
context(@"when touched in overlapping views' area", ^{
beforeEach(^{
UITextField *textField1 = [[UITextField alloc] initWithFrame:CGRectMake(101, 101, 50, 50)];
- [uiViewController.view addSubview:textField1];
+ [testHapticRectViewController.view addSubview:textField1];
UITextField *textField2 = [[UITextField alloc] initWithFrame:CGRectMake(126, 126, 50, 50)];
- [uiViewController.view addSubview:textField2];
+ [testHapticRectViewController.view addSubview:textField2];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
});
@@ -474,7 +480,7 @@ describe(@"the haptic manager", ^{
UITextField *textField1 = [[UITextField alloc] initWithFrame:CGRectMake(101, 101, 50, 50)];
[uiWindow insertSubview:textField1 aboveSubview:uiWindow];
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
[hapticManager updateInterfaceLayout];
});
@@ -486,16 +492,16 @@ describe(@"the haptic manager", ^{
describe(@"scaling", ^{
__block float testUpdatedScale = 0.0;
- __block CGSize testScreenSize = uiViewController.view.frame.size;
+ __block CGSize testScreenSize = testHapticRectViewController.view.frame.size;
beforeEach(^{
viewRect1 = CGRectMake(320, 600, 100, 100);
UIButton *button = [[UIButton alloc] initWithFrame:viewRect1];
- [uiViewController.view addSubview:button];
+ [testHapticRectViewController.view addSubview:button];
sentHapticRequest = nil;
- hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:uiViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
+ hapticManager = [[SDLFocusableItemLocator alloc] initWithViewController:testHapticRectViewController connectionManager:sdlLifecycleManager videoScaleManager:sdlStreamingVideoScaleManager];
hapticManager.enableHapticDataRequests = YES;
});
diff --git a/SmartDeviceLinkTests/ProxySpecs/SDLLockScreenStatusManagerSpec.m b/SmartDeviceLinkTests/ProxySpecs/SDLLockScreenStatusManagerSpec.m
index 758da74d9..7bca387e4 100644
--- a/SmartDeviceLinkTests/ProxySpecs/SDLLockScreenStatusManagerSpec.m
+++ b/SmartDeviceLinkTests/ProxySpecs/SDLLockScreenStatusManagerSpec.m
@@ -8,12 +8,11 @@
#import "SDLOnDriverDistraction.h"
#import "SDLHMILevel.h"
+#import "SDLLockScreenStatusInfo.h"
#import "SDLLockScreenStatusManager.h"
-#import "SDLLockScreenStatus.h"
#import "SDLNotificationConstants.h"
#import "SDLNotificationDispatcher.h"
#import "SDLOnHMIStatus.h"
-#import "SDLOnLockScreenStatus.h"
#import "SDLRPCNotificationNotification.h"
@@ -21,7 +20,7 @@ QuickSpecBegin(SDLLockScreenStatusManagerSpec)
describe(@"the lockscreen status manager", ^{
__block SDLLockScreenStatusManager *testManager;
- __block SDLNotificationDispatcher *mockDispatcher;
+ __block id mockDispatcher;
beforeEach(^{
mockDispatcher = OCMClassMock([SDLNotificationDispatcher class]);
@@ -108,10 +107,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen off", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusOff));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusOff));
});
});
@@ -121,10 +117,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen off", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusOff));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusOff));
});
});
@@ -140,10 +133,7 @@ describe(@"the lockscreen status manager", ^{
context(@"if we do not set the driver distraction state", ^{
it(@"should return lock screen required", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusRequired));
});
});
@@ -153,10 +143,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen optional", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusOptional));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusOptional));
});
});
@@ -166,10 +153,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen required", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusRequired));
});
});
});
@@ -180,10 +164,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen off", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusOff));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusOff));
});
});
});
@@ -195,10 +176,7 @@ describe(@"the lockscreen status manager", ^{
context(@"if we do not set the driver distraction state", ^{
it(@"should return lock screen required", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusRequired));
});
});
@@ -208,10 +186,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen optional", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusOptional));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusOptional));
});
});
@@ -221,10 +196,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen required", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusRequired));
});
});
});
@@ -236,10 +208,7 @@ describe(@"the lockscreen status manager", ^{
context(@"if we do not set the driver distraction state", ^{
it(@"should return lock screen required", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusRequired));
});
});
@@ -249,10 +218,7 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen optional", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusOptional));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusOptional));
});
});
@@ -262,21 +228,14 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should return lock screen required", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testManager.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
+ expect(@(testManager.lockScreenStatus)).to(equal(SDLLockScreenStatusRequired));
});
});
});
});
describe(@"when sending a lock screen status notification", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLOnLockScreenStatus *onLockScreenStatusNotification = nil;
-#pragma clang diagnostic pop
-
+ __block SDLLockScreenStatusInfo *onLockScreenStatusNotification = nil;
beforeEach(^{
testManager.userSelected = YES;
testManager.driverDistracted = NO;
@@ -298,55 +257,46 @@ describe(@"the lockscreen status manager", ^{
});
it(@"should properly return lock screen status", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(onLockScreenStatusNotification.lockScreenStatus).to(equal(SDLLockScreenStatusOptional));
-#pragma clang diagnostic pop
+ expect(@(onLockScreenStatusNotification.lockScreenStatus)).to(equal(SDLLockScreenStatusOptional));
});
});
describe(@"when receiving an HMI status", ^{
- __block id lockScreenIconObserver = nil;
beforeEach(^{
- SDLOnHMIStatus *hmiStatus = [[SDLOnHMIStatus alloc] initWithHMILevel:SDLHMILevelFull systemContext:SDLSystemContextMain audioStreamingState:SDLAudioStreamingStateAudible videoStreamingState:nil windowID:nil];
- SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeHMIStatusNotification object:mockDispatcher rpcNotification:hmiStatus];
+ OCMExpect([mockDispatcher postNotificationName:SDLDidChangeLockScreenStatusNotification infoObject:[OCMArg checkWithBlock:^BOOL(id value) {
+ SDLLockScreenStatusInfo *lockScreenStatusInfo = (SDLLockScreenStatusInfo *)value;
+ expect(lockScreenStatusInfo.hmiLevel).to(equal(SDLHMILevelFull));
+ return [lockScreenStatusInfo isKindOfClass:[SDLLockScreenStatusInfo class]];
+ }]]);
- lockScreenIconObserver = OCMObserverMock();
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [[NSNotificationCenter defaultCenter] addMockObserver:lockScreenIconObserver name:SDLDidChangeLockScreenStatusNotification object:testManager];
- [[lockScreenIconObserver expect] notificationWithName:SDLDidChangeLockScreenStatusNotification object:[OCMArg any] userInfo:[OCMArg any]];
-#pragma clang diagnostic pop
-
- [[NSNotificationCenter defaultCenter] postNotification:notification];
+ SDLOnHMIStatus *hmiStatus = [[SDLOnHMIStatus alloc] initWithHMILevel:SDLHMILevelFull systemContext:SDLSystemContextMain audioStreamingState:SDLAudioStreamingStateAudible videoStreamingState:nil windowID:nil];
+ SDLRPCNotificationNotification *hmiStatusNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeHMIStatusNotification object:mockDispatcher rpcNotification:hmiStatus];
+ [[NSNotificationCenter defaultCenter] postNotification:hmiStatusNotification];
});
it(@"should update the driver distraction status and send a notification", ^{
expect(testManager.hmiLevel).to(equal(SDLHMILevelFull));
- OCMVerifyAll(lockScreenIconObserver);
+ OCMVerifyAllWithDelay(mockDispatcher, 0.5);
});
});
describe(@"when receiving a driver distraction status", ^{
- __block id lockScreenIconObserver = nil;
beforeEach(^{
+ OCMExpect([mockDispatcher postNotificationName:SDLDidChangeLockScreenStatusNotification infoObject:[OCMArg checkWithBlock:^BOOL(id value) {
+ SDLLockScreenStatusInfo *lockScreenStatusInfo = (SDLLockScreenStatusInfo *)value;
+ expect(lockScreenStatusInfo.driverDistractionStatus).to(beTrue());
+ return [lockScreenStatusInfo isKindOfClass:[SDLLockScreenStatusInfo class]];
+ }]]);
+
SDLOnDriverDistraction *driverDistraction = [[SDLOnDriverDistraction alloc] init];
driverDistraction.state = SDLDriverDistractionStateOn;
- SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeDriverDistractionStateNotification object:mockDispatcher rpcNotification:driverDistraction];
-
- lockScreenIconObserver = OCMObserverMock();
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [[NSNotificationCenter defaultCenter] addMockObserver:lockScreenIconObserver name:SDLDidChangeLockScreenStatusNotification object:testManager];
- [[lockScreenIconObserver expect] notificationWithName:SDLDidChangeLockScreenStatusNotification object:[OCMArg any] userInfo:[OCMArg any]];
-#pragma clang diagnostic pop
-
- [[NSNotificationCenter defaultCenter] postNotification:notification];
+ SDLRPCNotificationNotification *driverDistractionStateNotification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidChangeDriverDistractionStateNotification object:mockDispatcher rpcNotification:driverDistraction];
+ [[NSNotificationCenter defaultCenter] postNotification:driverDistractionStateNotification];
});
it(@"should update the driver distraction status and send a notification", ^{
expect(testManager.driverDistracted).to(beTrue());
- OCMVerifyAll(lockScreenIconObserver);
+ OCMVerifyAllWithDelay(mockDispatcher, 0.5);
});
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m
index f00bfa300..7efc466bb 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m
@@ -26,6 +26,7 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLAppHMITypeTesting).to(equal(@"TESTING"));
expect(SDLAppHMITypeSystem).to(equal(@"SYSTEM"));
expect(SDLAppHMITypeRemoteControl).to(equal(@"REMOTE_CONTROL"));
+ expect(SDLAppHMITypeWebView).to(equal(@"WEB_VIEW"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppInterfaceUnregisteredReasonSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppInterfaceUnregisteredReasonSpec.m
index e92d3d81d..4685476b1 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppInterfaceUnregisteredReasonSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppInterfaceUnregisteredReasonSpec.m
@@ -29,6 +29,7 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLAppInterfaceUnregisteredReasonAppUnauthorized).to(equal(@"APP_UNAUTHORIZED"));
expect(SDLAppInterfaceUnregisteredReasonProtocolViolation).to(equal(@"PROTOCOL_VIOLATION"));
expect(SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource).to(equal(@"UNSUPPORTED_HMI_RESOURCE"));
+ expect(SDLAppInterfaceUnregisteredReasonResourceConstraint).to(equal(@"RESOURCE_CONSTRAINT"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCapacityUnitSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCapacityUnitSpec.m
new file mode 100644
index 000000000..8dc19f03e
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCapacityUnitSpec.m
@@ -0,0 +1,21 @@
+//
+// SDLCapacityUnitSpec.m
+// SmartDeviceLinkTests
+//
+
+#import <Nimble/Nimble.h>
+#import <Quick/Quick.h>
+
+#import "SDLCapacityUnit.h"
+
+QuickSpecBegin(SDLCapacityUnitSpec)
+
+describe(@"Individual Enum Value Tests", ^ {
+ it(@"Should match internal values", ^ {
+ expect(SDLCapacityUnitKilograms).to(equal(@"KILOGRAMS"));
+ expect(SDLCapacityUnitKilowatthours).to(equal(@"KILOWATTHOURS"));
+ expect(SDLCapacityUnitLiters).to(equal(@"LITERS"));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCharacterSetSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCharacterSetSpec.m
index 293b2f3fe..58440e51d 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCharacterSetSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLCharacterSetSpec.m
@@ -14,10 +14,16 @@ QuickSpecBegin(SDLCharacterSetSpec)
describe(@"Individual Enum Value Tests", ^ {
it(@"Should match internal values", ^ {
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(SDLCharacterSetType2).to(equal(@"TYPE2SET"));
expect(SDLCharacterSetType5).to(equal(@"TYPE5SET"));
expect(SDLCharacterSetCID1).to(equal(@"CID1SET"));
expect(SDLCharacterSetCID2).to(equal(@"CID2SET"));
+ #pragma clang diagnostic pop
+ expect(SDLCharacterSetAscii).to(equal(@"ASCII"));
+ expect(SDLCharacterSetIso88591).to(equal(@"ISO_8859_1"));
+ expect(SDLCharacterSetUtf8).to(equal(@"UTF_8"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDisplayTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDisplayTypeSpec.m
index 46aaa3411..3c76b43a7 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDisplayTypeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDisplayTypeSpec.m
@@ -14,6 +14,8 @@ QuickSpecBegin(SDLDisplayTypeSpec)
describe(@"Individual Enum Value Tests", ^ {
it(@"Should match internal values", ^ {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(SDLDisplayTypeCID).to(equal(@"CID"));
expect(SDLDisplayTypeType2).to(equal(@"TYPE2"));
expect(SDLDisplayTypeType5).to(equal(@"TYPE5"));
@@ -25,6 +27,7 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLDisplayTypeMFD5).to(equal(@"MFD5"));
expect(SDLDisplayTypeGen38Inch).to(equal(@"GEN3_8-INCH"));
expect(SDLDisplayTypeGeneric).to(equal(@"SDL_GENERIC"));
+#pragma clang diagnostic pop
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLImageFieldNameSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLImageFieldNameSpec.m
index bf3e9f82f..6363714eb 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLImageFieldNameSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLImageFieldNameSpec.m
@@ -27,6 +27,8 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLImageFieldNameShowConstantTBTIcon).to(equal(@"showConstantTBTIcon"));
expect(SDLImageFieldNameShowConstantTBTNextTurnIcon).to(equal(@"showConstantTBTNextTurnIcon"));
expect(SDLImageFieldNameLocationImage).to(equal(@"locationImage"));
+ expect(SDLImageFieldNameSubMenuIcon).to(equal(@"subMenuIcon"));
+ expect(SDLImageFieldNameSubtleAlertIcon).to(equal(@"subtleAlertIcon"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLockScreenStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLockScreenStatusSpec.m
deleted file mode 100644
index d6aaf4036..000000000
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLLockScreenStatusSpec.m
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// SDLLockScreenStatusSpec.m
-// SmartDeviceLink
-
-
-#import <Foundation/Foundation.h>
-
-#import <Quick/Quick.h>
-#import <Nimble/Nimble.h>
-
-#import "SDLLockScreenStatus.h"
-
-QuickSpecBegin(SDLLockScreenStatusSpec)
-
-describe(@"Individual Enum Value Tests", ^ {
- it(@"Should match internal values", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(SDLLockScreenStatusOff).to(equal(@"OFF"));
- expect(SDLLockScreenStatusOptional).to(equal(@"OPTIONAL"));
- expect(SDLLockScreenStatusRequired).to(equal(@"REQUIRED"));
-#pragma clang diagnostic pop
- });
-});
-
-QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPRNDLSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPRNDLSpec.m
index 169bf4ffb..6d370c57b 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPRNDLSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPRNDLSpec.m
@@ -12,8 +12,8 @@
QuickSpecBegin(SDLPRNDLSpec)
-describe(@"Individual Enum Value Tests", ^ {
- it(@"Should match internal values", ^ {
+describe(@"individual enum value tests", ^ {
+ it(@"should match internal values", ^ {
expect(SDLPRNDLPark).to(equal(@"PARK"));
expect(SDLPRNDLReverse).to(equal(@"REVERSE"));
expect(SDLPRNDLNeutral).to(equal(@"NEUTRAL"));
@@ -21,7 +21,9 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLPRNDLSport).to(equal(@"SPORT"));
expect(SDLPRNDLLowGear).to(equal(@"LOWGEAR"));
expect(SDLPRNDLFirst).to(equal(@"FIRST"));
+ expect(SDLPRNDLNinth).to(equal(@"NINTH"));
expect(SDLPRNDLSecond).to(equal(@"SECOND"));
+ expect(SDLPRNDLTenth).to(equal(@"TENTH"));
expect(SDLPRNDLThird).to(equal(@"THIRD"));
expect(SDLPRNDLFourth).to(equal(@"FOURTH"));
expect(SDLPRNDLFifth).to(equal(@"FIFTH"));
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedLayoutSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedLayoutSpec.m
index 1635f7741..884f3fa78 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedLayoutSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLPredefinedLayoutSpec.m
@@ -34,6 +34,7 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLPredefinedLayoutLargeGraphicWithSoftButtons).to(equal(@"LARGE_GRAPHIC_WITH_SOFTBUTTONS"));
expect(SDLPredefinedLayoutDoubleGraphicWithSoftButtons).to(equal(@"DOUBLE_GRAPHIC_WITH_SOFTBUTTONS"));
expect(SDLPredefinedLayoutLargeGraphicOnly).to(equal(@"LARGE_GRAPHIC_ONLY"));
+ expect(SDLPredefinedLayoutWebView).to(equal(@"WEB_VIEW"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLServiceUpdateReasonSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLServiceUpdateReasonSpec.m
index a66d2df97..7dd7522e6 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLServiceUpdateReasonSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLServiceUpdateReasonSpec.m
@@ -15,11 +15,20 @@ QuickSpecBegin(SDLServiceUpdateReasonSpec)
describe(@"Individual Enum Value Tests", ^{
it(@"Should match internal values", ^{
+ expect(SDLServiceUpdateReasonPublished).to(equal(@"PUBLISHED"));
+ expect(SDLServiceUpdateReasonRemoved).to(equal(@"REMOVED"));
+ expect(SDLServiceUpdateReasonActivated).to(equal(@"ACTIVATED"));
+ expect(SDLServiceUpdateReasonDeactivated).to(equal(@"DEACTIVATED"));
+ expect(SDLServiceUpdateReasonManifestUpdate).to(equal(@"MANIFEST_UPDATE"));
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(SDLServiceUpdatePublished).to(equal(@"PUBLISHED"));
expect(SDLServiceUpdateRemoved).to(equal(@"REMOVED"));
expect(SDLServiceUpdateActivated).to(equal(@"ACTIVATED"));
expect(SDLServiceUpdateDeactivated).to(equal(@"DEACTIVATED"));
expect(SDLServiceUpdateManifestUpdate).to(equal(@"MANIFEST_UPDATE"));
+#pragma clang diagnostic pop
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSupportedSeatSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSupportedSeatSpec.m
index d01bda43f..581802716 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSupportedSeatSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSupportedSeatSpec.m
@@ -14,8 +14,11 @@ QuickSpecBegin(SDLSupportedSeatSpec)
describe(@"Individual Enum Value Tests", ^ {
it(@"Should match internal values", ^ {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(SDLSupportedSeatDriver).to(equal(@"DRIVER"));
expect(SDLSupportedSeatFrontPassenger).to(equal(@"FRONT_PASSENGER"));
+#pragma clang diagnostic pop
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m
index 58bb889dc..ff6fe1656 100755
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m
@@ -15,6 +15,9 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLSystemCapabilityTypePhoneCall).to(equal(@"PHONE_CALL"));
expect(SDLSystemCapabilityTypeVideoStreaming).to(equal(@"VIDEO_STREAMING"));
expect(SDLSystemCapabilityTypeRemoteControl).to(equal(@"REMOTE_CONTROL"));
+ expect(SDLSystemCapabilityTypeDisplays).to(equal(@"DISPLAYS"));
+ expect(SDLSystemCapabilityTypeSeatLocation).to(equal(@"SEAT_LOCATION"));
+ expect(SDLSystemCapabilityTypeDriverDistraction).to(equal(@"DRIVER_DISTRACTION"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m
index bacc79853..8f4b698fa 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m
@@ -43,6 +43,9 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLTextFieldNameLocationDescription).to(equal(@"locationDescription"));
expect(SDLTextFieldNameAddressLines).to(equal(@"addressLines"));
expect(SDLTextFieldNamePhoneNumber).to(equal(@"phoneNumber"));
+ expect(SDLTextFieldNameSubtleAlertText1).to(equal(@"subtleAlertText1"));
+ expect(SDLTextFieldNameSubtleAlertText2).to(equal(@"subtleAlertText2"));
+ expect(SDLTextFieldNameSubtleAlertSoftButtonText).to(equal("subtleAlertSoftButtonText"));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTransmissionTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTransmissionTypeSpec.m
new file mode 100644
index 000000000..73a245e44
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTransmissionTypeSpec.m
@@ -0,0 +1,25 @@
+//
+// SDLTransmissionTypeSpec.m
+// SmartDeviceLinkTests
+//
+
+#import <Nimble/Nimble.h>
+#import <Quick/Quick.h>
+#import "SDLTransmissionType.h"
+
+QuickSpecBegin(SDLTransmissionTypeSpec)
+
+describe(@"individual enum value tests", ^{
+ it(@"should match internal values", ^{
+ expect(SDLTransmissionTypeAutomatic).to(equal(@"AUTOMATIC"));
+ expect(SDLTransmissionTypeContinuouslyVariable).to(equal(@"CONTINUOUSLY_VARIABLE"));
+ expect(SDLTransmissionTypeDirectDrive).to(equal(@"DIRECT_DRIVE"));
+ expect(SDLTransmissionTypeDualClutch).to(equal(@"DUAL_CLUTCH"));
+ expect(SDLTransmissionTypeElectricVariable).to(equal(@"ELECTRIC_VARIABLE"));
+ expect(SDLTransmissionTypeInfinitelyVariable).to(equal(@"INFINITELY_VARIABLE"));
+ expect(SDLTransmissionTypeManual).to(equal(@"MANUAL"));
+ expect(SDLTransmissionTypeSemiAutomatic).to(equal(@"SEMI_AUTOMATIC"));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
index 16f87d613..f897b1d22 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
@@ -2,50 +2,59 @@
// SDLVehicleDataTypeSpec.m
// SmartDeviceLink
-
#import <Foundation/Foundation.h>
-
-#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
+#import <Quick/Quick.h>
#import "SDLVehicleDataType.h"
QuickSpecBegin(SDLVehicleDataTypeSpec)
-describe(@"Individual Enum Value Tests", ^ {
- it(@"Should match internal values", ^ {
- expect(SDLVehicleDataTypeGPS).to(equal(@"VEHICLEDATA_GPS"));
- expect(SDLVehicleDataTypeSpeed).to(equal(@"VEHICLEDATA_SPEED"));
- expect(SDLVehicleDataTypeRPM).to(equal(@"VEHICLEDATA_RPM"));
- expect(SDLVehicleDataTypeFuelLevel).to(equal(@"VEHICLEDATA_FUELLEVEL"));
- expect(SDLVehicleDataTypeFuelLevelState).to(equal(@"VEHICLEDATA_FUELLEVEL_STATE"));
- expect(SDLVehicleDataTypeFuelConsumption).to(equal(@"VEHICLEDATA_FUELCONSUMPTION"));
- expect(SDLVehicleDataTypeFuelRange).to(equal(@"VEHICLEDATA_FUELRANGE"));
- expect(SDLVehicleDataTypeExternalTemperature).to(equal(@"VEHICLEDATA_EXTERNTEMP"));
- expect(SDLVehicleDataTypeVIN).to(equal(@"VEHICLEDATA_VIN"));
- expect(SDLVehicleDataTypePRNDL).to(equal(@"VEHICLEDATA_PRNDL"));
- expect(SDLVehicleDataTypeTirePressure).to(equal(@"VEHICLEDATA_TIREPRESSURE"));
- expect(SDLVehicleDataTypeOdometer).to(equal(@"VEHICLEDATA_ODOMETER"));
+describe(@"individual enum value tests", ^{
+ it(@"should match internal values", ^{
+ expect(SDLVehicleDataTypeAccelerationPedal).to(equal(@"VEHICLEDATA_ACCPEDAL"));
+ expect(SDLVehicleDataTypeAirbagStatus).to(equal(@"VEHICLEDATA_AIRBAGSTATUS"));
+ expect(SDLVehicleDataTypeBatteryVoltage).to(equal(@"VEHICLEDATA_BATTVOLTAGE"));
expect(SDLVehicleDataTypeBeltStatus).to(equal(@"VEHICLEDATA_BELTSTATUS"));
expect(SDLVehicleDataTypeBodyInfo).to(equal(@"VEHICLEDATA_BODYINFO"));
+ expect(SDLVehicleDataTypeBraking).to(equal(@"VEHICLEDATA_BRAKING"));
+ expect(SDLVehicleDataTypeCloudAppVehicleID).to(equal(@"VEHICLEDATA_CLOUDAPPVEHICLEID"));
+ expect(SDLVehicleDataTypeClusterModeStatus).to(equal(@"VEHICLEDATA_CLUSTERMODESTATUS"));
expect(SDLVehicleDataTypeDeviceStatus).to(equal(@"VEHICLEDATA_DEVICESTATUS"));
expect(SDLVehicleDataTypeECallInfo).to(equal(@"VEHICLEDATA_ECALLINFO"));
- expect(SDLVehicleDataTypeAirbagStatus).to(equal(@"VEHICLEDATA_AIRBAGSTATUS"));
+ expect(SDLVehicleDataTypeElectronicParkBrakeStatus).to(equal(@"VEHICLEDATA_ELECTRONICPARKBRAKESTATUS"));
expect(SDLVehicleDataTypeEmergencyEvent).to(equal(@"VEHICLEDATA_EMERGENCYEVENT"));
- expect(SDLVehicleDataTypeClusterModeStatus).to(equal(@"VEHICLEDATA_CLUSTERMODESTATUS"));
- expect(SDLVehicleDataTypeMyKey).to(equal(@"VEHICLEDATA_MYKEY"));
- expect(SDLVehicleDataTypeBraking).to(equal(@"VEHICLEDATA_BRAKING"));
- expect(SDLVehicleDataTypeWiperStatus).to(equal(@"VEHICLEDATA_WIPERSTATUS"));
- expect(SDLVehicleDataTypeHeadlampStatus).to(equal(@"VEHICLEDATA_HEADLAMPSTATUS"));
- expect(SDLVehicleDataTypeBatteryVoltage).to(equal(@"VEHICLEDATA_BATTVOLTAGE"));
expect(SDLVehicleDataTypeEngineOilLife).to(equal(@"VEHICLEDATA_ENGINEOILLIFE"));
expect(SDLVehicleDataTypeEngineTorque).to(equal(@"VEHICLEDATA_ENGINETORQUE"));
- expect(SDLVehicleDataTypeAccelerationPedal).to(equal(@"VEHICLEDATA_ACCPEDAL"));
+ expect(SDLVehicleDataTypeExternalTemperature).to(equal(@"VEHICLEDATA_EXTERNTEMP"));
+ expect(SDLVehicleDataTypeFuelConsumption).to(equal(@"VEHICLEDATA_FUELCONSUMPTION"));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(SDLVehicleDataTypeFuelLevel).to(equal(@"VEHICLEDATA_FUELLEVEL"));
+ expect(SDLVehicleDataTypeFuelLevelState).to(equal(@"VEHICLEDATA_FUELLEVEL_STATE"));
+#pragma clang diagnostic pop
+ expect(SDLVehicleDataTypeFuelRange).to(equal(@"VEHICLEDATA_FUELRANGE"));
+ expect(SDLVehicleDataTypeGPS).to(equal(@"VEHICLEDATA_GPS"));
+ expect(SDLVehicleDataTypeGearStatus).to(equal(@"VEHICLEDATA_GEARSTATUS"));
+ expect(SDLVehicleDataTypeHandsOffSteering).to(equal(@"VEHICLEDATA_HANDSOFFSTEERING"));
+ expect(SDLVehicleDataTypeHeadlampStatus).to(equal(@"VEHICLEDATA_HEADLAMPSTATUS"));
+ expect(SDLVehicleDataTypeMyKey).to(equal(@"VEHICLEDATA_MYKEY"));
+ expect(SDLVehicleDataTypeOdometer).to(equal(@"VEHICLEDATA_ODOMETER"));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(SDLVehicleDataTypePRNDL).to(equal(@"VEHICLEDATA_PRNDL"));
+#pragma clang diagnostic pop
+ expect(SDLVehicleDataTypeRPM).to(equal(@"VEHICLEDATA_RPM"));
+ expect(SDLVehicleDataTypeSpeed).to(equal(@"VEHICLEDATA_SPEED"));
+ expect(SDLVehicleDataTypeStabilityControlsStatus).to(equal(@"VEHICLEDATA_STABILITYCONTROLSSTATUS"));
expect(SDLVehicleDataTypeSteeringWheel).to(equal(@"VEHICLEDATA_STEERINGWHEEL"));
- expect(SDLVehicleDataTypeElectronicParkBrakeStatus).to(equal(@"VEHICLEDATA_ELECTRONICPARKBRAKESTATUS"));
+ expect(SDLVehicleDataTypeTirePressure).to(equal(@"VEHICLEDATA_TIREPRESSURE"));
expect(SDLVehicleDataTypeTurnSignal).to(equal(@"VEHICLEDATA_TURNSIGNAL"));
- expect(SDLVehicleDataTypeCloudAppVehicleID).to(equal(@"VEHICLEDATA_CLOUDAPPVEHICLEID"));
+ expect(SDLVehicleDataTypeVIN).to(equal(@"VEHICLEDATA_VIN"));
+ expect(SDLVehicleDataTypeWindowStatus).to(equal(@"VEHICLEDATA_WINDOWSTATUS"));
+ expect(SDLVehicleDataTypeWiperStatus).to(equal(@"VEHICLEDATA_WIPERSTATUS"));
});
});
QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m
deleted file mode 100644
index da9c091df..000000000
--- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// SDLOnLockScreenStatusSpec.m
-// SmartDeviceLink
-
-
-#import <Foundation/Foundation.h>
-
-#import <Quick/Quick.h>
-#import <Nimble/Nimble.h>
-
-#import "SDLOnLockScreenStatus.h"
-#import "SDLHMILevel.h"
-#import "SDLLockScreenStatus.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
-
-QuickSpecBegin(SDLOnLockScreenStatusSpec)
-
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLOnLockScreenStatus* testNotification = [[SDLOnLockScreenStatus alloc] init];
-#pragma clang diagnostic pop
- testNotification.driverDistractionStatus = @NO;
- testNotification.userSelected = @3;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testNotification.lockScreenStatus = SDLLockScreenStatusRequired;
-#pragma clang diagnostic pop
- testNotification.hmiLevel = SDLHMILevelNone;
-
- expect(testNotification.driverDistractionStatus).to(equal(@NO));
- expect(testNotification.userSelected).to(equal(@3));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testNotification.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
- expect(testNotification.hmiLevel).to(equal(SDLHMILevelNone));
- });
-
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameNotification:
- @{SDLRPCParameterNameParameters:
- @{@"driverDistractionStatus":@NO,
- @"userSelected":@3,
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- @"OnLockScreenStatus":SDLLockScreenStatusRequired,
-#pragma clang diagnostic pop
- @"hmiLevel":SDLHMILevelNone},
- SDLRPCParameterNameOperationName:@"OnLockScreenStatus"}} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLOnLockScreenStatus* testNotification = [[SDLOnLockScreenStatus alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
- expect(testNotification.driverDistractionStatus).to(equal(@NO));
- expect(testNotification.userSelected).to(equal(@3));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testNotification.lockScreenStatus).to(equal(SDLLockScreenStatusRequired));
-#pragma clang diagnostic pop
- expect(testNotification.hmiLevel).to(equal(SDLHMILevelNone));
- });
-
- it(@"Should return nil if not set", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLOnLockScreenStatus* testNotification = [[SDLOnLockScreenStatus alloc] init];
-#pragma clang diagnostic pop
-
- expect(testNotification.driverDistractionStatus).to(beNil());
- expect(testNotification.userSelected).to(beNil());
- expect(testNotification.lockScreenStatus).to(beNil());
- expect(testNotification.hmiLevel).to(beNil());
- });
-});
-
-QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSubtleAlertPressedSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSubtleAlertPressedSpec.m
new file mode 100644
index 000000000..e582242ed
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSubtleAlertPressedSpec.m
@@ -0,0 +1,29 @@
+//
+// SDLOnSubtleAlertPressedSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 7/28/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLOnSubtleAlertPressed.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+QuickSpecBegin(SDLOnSubtleAlertPressedSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ __block SDLOnSubtleAlertPressed *testOnSubtleAlertPressed = nil;
+
+ it(@"Should init correctly", ^{
+ testOnSubtleAlertPressed = [[SDLOnSubtleAlertPressed alloc] init];
+
+ expect(testOnSubtleAlertPressed).toNot(beNil());
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m
index 63b2bbd58..a4a21e7c4 100644
--- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m
@@ -2,18 +2,17 @@
// SDLOnSystemRequestSpec.m
// SmartDeviceLink
-
#import <Foundation/Foundation.h>
-
-#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
+#import <Quick/Quick.h>
#import "SDLFileType.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLRPCFunctionNames.h"
#import "SDLOnSystemRequest.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCParameterNames.h"
#import "SDLRequestType.h"
+static NSString *const SDLTestURL = @"https://www.smartdevicelink.com";
QuickSpecBegin(SDLOnSystemRequestSpec)
@@ -23,7 +22,7 @@ describe(@"Getter/Setter Tests", ^ {
testNotification.requestType = SDLRequestTypeFileResume;
testNotification.requestSubType = @"subtype";
- testNotification.url = @"www.google.com";
+ testNotification.url = SDLTestURL;
testNotification.timeout = @52345;
testNotification.fileType = SDLFileTypePNG;
testNotification.offset = @2532678684;
@@ -31,7 +30,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testNotification.requestType).to(equal(SDLRequestTypeFileResume));
expect(testNotification.requestSubType).to(equal(@"subtype"));
- expect(testNotification.url).to(equal(@"www.google.com"));
+ expect(testNotification.url).to(equal(SDLTestURL));
expect(testNotification.timeout).to(equal(@52345));
expect(testNotification.fileType).to(equal(SDLFileTypePNG));
expect(testNotification.offset).to(equal(@2532678684));
@@ -43,7 +42,7 @@ describe(@"Getter/Setter Tests", ^ {
@{SDLRPCParameterNameParameters:
@{SDLRPCParameterNameRequestType:SDLRequestTypeFileResume,
SDLRPCParameterNameRequestSubType: @"subtype",
- SDLRPCParameterNameURL:@"www.google.com",
+ SDLRPCParameterNameURL:SDLTestURL,
SDLRPCParameterNameTimeout:@52345,
SDLRPCParameterNameFileType:SDLFileTypePNG,
SDLRPCParameterNameOffset:@2532678684,
@@ -56,7 +55,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testNotification.requestType).to(equal(SDLRequestTypeFileResume));
expect(testNotification.requestSubType).to(equal(@"subtype"));
- expect(testNotification.url).to(equal([@"www.google.com" mutableCopy]));
+ expect(testNotification.url).to(equal(SDLTestURL));
expect(testNotification.timeout).to(equal(@52345));
expect(testNotification.fileType).to(equal(SDLFileTypePNG));
expect(testNotification.offset).to(equal(@2532678684));
@@ -74,6 +73,57 @@ describe(@"Getter/Setter Tests", ^ {
expect(testNotification.offset).to(beNil());
expect(testNotification.length).to(beNil());
});
+
+ it(@"Should set and get url correctly (zero length url)", ^{
+ SDLOnSystemRequest *testRequest = [[SDLOnSystemRequest alloc] init];
+ NSString *testURL = @"";
+ testRequest.url = testURL;
+ expect(testRequest.url).to(equal(testURL));
+
+ NSURL *nsurl = [NSURL URLWithString:testURL];
+ expect(nsurl).notTo(beNil());
+ expect(nsurl.absoluteString).to(equal(testURL));
+ });
+
+ it(@"Should set and get url correctly (1000 sym long url)", ^{
+ const int size = 1000;
+ SDLOnSystemRequest* testRequest = [[SDLOnSystemRequest alloc] init];
+ NSMutableString *testURL = [NSMutableString stringWithCapacity:1024];
+ [testURL setString:SDLTestURL];
+ while(size > testURL.length) {
+ [testURL appendString:@"/testcomponent"];
+ }
+ if (size < testURL.length) {
+ const NSRange range = NSMakeRange(size, testURL.length - size);
+ [testURL deleteCharactersInRange:range];
+ }
+ testRequest.url = testURL;
+ expect(testRequest.url).to(equal(testURL));
+
+ NSURL *nsurl = [NSURL URLWithString:testURL];
+ expect(nsurl).notTo(beNil());
+ expect(nsurl.absoluteString).to(equal(testURL));
+ });
+
+ it(@"Should set and get url correctly (extra long url)", ^{
+ const int size = 1024 * 1024;
+ SDLOnSystemRequest *testRequest = [[SDLOnSystemRequest alloc] init];
+ NSMutableString *testURL = [NSMutableString stringWithCapacity:size + 20];
+ [testURL setString:SDLTestURL];
+ while(size > testURL.length) {
+ [testURL appendString:@"/testcomponent"];
+ }
+ if (size < testURL.length) {
+ const NSRange range = NSMakeRange(size, testURL.length - size);
+ [testURL deleteCharactersInRange:range];
+ }
+ testRequest.url = testURL;
+ expect(testRequest.url).to(equal(testURL));
+
+ NSURL *nsurl = [NSURL URLWithString:testURL];
+ expect(nsurl).notTo(beNil());
+ expect(nsurl.absoluteString).to(equal(testURL));
+ });
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateFileSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateFileSpec.m
new file mode 100644
index 000000000..c39c671b5
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateFileSpec.m
@@ -0,0 +1,74 @@
+//
+// SDLOnUpdateFileSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Joel Fischer on 7/30/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCParameterNames.h"
+#import "SDLOnUpdateFile.h"
+
+QuickSpecBegin(SDLOnUpdateFileSpec)
+
+__block SDLOnUpdateFile *testRPC = nil;
+__block NSString *testFileName = nil;
+
+beforeEach(^{
+ testFileName = @"test file name";
+});
+
+describe(@"when initializing with init", ^{
+ beforeEach(^{
+ testRPC = [[SDLOnUpdateFile alloc] init];
+ });
+
+ it(@"should have no data", ^{
+ expect(testRPC.fileName).to(beNil());
+ });
+
+ describe(@"when getting/setting parameters", ^{
+ beforeEach(^{
+ testRPC.fileName = testFileName;
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testRPC.fileName).to(equal(testFileName));
+ });
+ });
+});
+
+describe(@"when initializing with a dictionary", ^{
+ beforeEach(^{
+ NSDictionary *testDict = @{
+ SDLRPCParameterNameNotification: @{
+ SDLRPCParameterNameParameters: @{
+ SDLRPCParameterNameFileName: testFileName
+ }
+ }
+ };
+
+ testRPC = [[SDLOnUpdateFile alloc] initWithDictionary:testDict];
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testRPC.fileName).to(equal(testFileName));
+ });
+});
+
+describe(@"when initializing with initWithFileName:", ^{
+ beforeEach(^{
+ testRPC = [[SDLOnUpdateFile alloc] initWithFileName:testFileName];
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testRPC.fileName).to(equal(testFileName));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateSubMenuSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateSubMenuSpec.m
new file mode 100644
index 000000000..fd845f0a0
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnUpdateSubMenuSpec.m
@@ -0,0 +1,88 @@
+//
+// SDLOnUpdateSubMenuSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Joel Fischer on 7/30/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCParameterNames.h"
+#import "SDLOnUpdateSubMenu.h"
+
+QuickSpecBegin(SDLOnUpdateSubMenuSpec)
+
+__block SDLOnUpdateSubMenu *testRPC = nil;
+__block UInt32 testMenuID = 32;
+__block NSNumber<SDLBool> *testUpdateSubCells = @YES;
+
+describe(@"when initializing with init", ^{
+ beforeEach(^{
+ testRPC = [[SDLOnUpdateSubMenu alloc] init];
+ });
+
+ it(@"should have no data", ^{
+ expect(testRPC.menuID).to(beFalsy());
+ expect(testRPC.updateSubCells).to(beFalsy());
+ });
+
+ describe(@"when getting/setting parameters", ^{
+ beforeEach(^{
+ testRPC.menuID = @(testMenuID);
+ testRPC.updateSubCells = testUpdateSubCells;
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testRPC.menuID).to(equal(@(testMenuID)));
+ expect(testRPC.updateSubCells).to(equal(testUpdateSubCells));
+ });
+ });
+});
+
+describe(@"when initializing with a dictionary", ^{
+ beforeEach(^{
+ NSDictionary *testDict = @{
+ SDLRPCParameterNameNotification: @{
+ SDLRPCParameterNameParameters: @{
+ SDLRPCParameterNameMenuID: @(testMenuID),
+ SDLRPCParameterNameUpdateSubCells: testUpdateSubCells
+ }
+ }
+ };
+
+ testRPC = [[SDLOnUpdateSubMenu alloc] initWithDictionary:testDict];
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testRPC.menuID).to(equal(@(testMenuID)));
+ expect(testRPC.updateSubCells).to(equal(testUpdateSubCells));
+ });
+});
+
+describe(@"when initializing with initWithMenuID:", ^{
+ beforeEach(^{
+ testRPC = [[SDLOnUpdateSubMenu alloc] initWithMenuID:testMenuID];
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testRPC.menuID).to(equal(@(testMenuID)));
+ expect(testRPC.updateSubCells).to(beNil());
+ });
+});
+
+describe(@"when initializing with initWithMenuID:updateSubCells:", ^{
+ beforeEach(^{
+ testRPC = [[SDLOnUpdateSubMenu alloc] initWithMenuID:testMenuID updateSubCells:testUpdateSubCells];
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testRPC.menuID).to(equal(@(testMenuID)));
+ expect(testRPC.updateSubCells).to(equal(testUpdateSubCells));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
index c2f9afbf2..f42283b01 100644
--- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
@@ -12,219 +12,325 @@
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
-
QuickSpecBegin(SDLOnVehicleDataSpec)
+// set up all test constants
+SDLGPSData* gps = [[SDLGPSData alloc] init];
+SDLTireStatus* tirePressure = [[SDLTireStatus alloc] init];
+SDLBeltStatus* beltStatus = [[SDLBeltStatus alloc] init];
+SDLBodyInformation* bodyInformation = [[SDLBodyInformation alloc] init];
+SDLDeviceStatus* deviceStatus = [[SDLDeviceStatus alloc] init];
+SDLHeadLampStatus* headLampStatus = [[SDLHeadLampStatus alloc] init];
+SDLECallInfo* eCallInfo = [[SDLECallInfo alloc] init];
+SDLAirbagStatus* airbagStatus = [[SDLAirbagStatus alloc] init];
+SDLEmergencyEvent* emergencyEvent = [[SDLEmergencyEvent alloc] init];
+SDLClusterModeStatus* clusterModeStatus = [[SDLClusterModeStatus alloc] init];
+SDLMyKey* myKey = [[SDLMyKey alloc] init];
+SDLFuelRange* fuelRange = [[SDLFuelRange alloc] init];
+NSArray<SDLFuelRange *> *fuelRangeArray = @[fuelRange, fuelRange];
+NSString *const vin = @"6574839201a";
+NSString *const cloudAppVehicleID = @"cloud-6f56054e-d633-11ea-999a-14109fcf4b5b";
+const float speed = 123.45;
+const NSUInteger rpm = 3599;
+const float fuelLevel = 34.45;
+SDLComponentVolumeStatus fuelLevel_State = SDLComponentVolumeStatusLow;
+const float instantFuelConsumption = 45.67;
+const float externalTemperature = 56.67;
+SDLTurnSignal turnSignal = SDLTurnSignalLeft;
+SDLPRNDL prndl = SDLPRNDLReverse;
+const NSUInteger odometer = 100999;
+SDLVehicleDataEventStatus driverBraking = SDLVehicleDataEventStatusYes;
+SDLWiperStatus wiperStatus = SDLWiperStatusWash;
+const float steeringWheelAngle = 359.99;
+const float engineTorque = 999.123;
+const float accPedalPosition = 35.88;
+const float engineOilLife = 98.76;
+SDLElectronicParkBrakeStatus electronicParkBrakeStatus = SDLElectronicParkBrakeStatusTransition;
+SDLStabilityControlsStatus *stabilityControlsStatus = [[SDLStabilityControlsStatus alloc] init];
+NSArray<SDLWindowStatus *> *windowStatus = @[[[SDLWindowStatus alloc] init], [[SDLWindowStatus alloc] init]];
+const BOOL handsOffSteering = YES;
+SDLGearStatus *gearStatus = [[SDLGearStatus alloc] initWithUserSelectedGear:SDLPRNDLDrive actualGear:SDLPRNDLPark transmissionType:SDLTransmissionTypeAutomatic];
-describe(@"Getter/Setter Tests", ^ {
- __block SDLGPSData* gps = nil;
- __block SDLTireStatus* tires = nil;
- __block SDLBeltStatus* belt = nil;
- __block SDLBodyInformation* body = nil;
- __block SDLDeviceStatus* device = nil;
- __block SDLHeadLampStatus* headLamp = nil;
- __block SDLECallInfo* eCall = nil;
- __block SDLAirbagStatus* airbag = nil;
- __block SDLEmergencyEvent* event = nil;
- __block SDLClusterModeStatus* clusterMode = nil;
- __block SDLMyKey* myKey = nil;
- __block SDLFuelRange* fuelRange = nil;
- __block NSString* cloudAppVehicleID = nil;
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
+ SDLOnVehicleData* testResponse = [[SDLOnVehicleData alloc] init];
+ testResponse.accPedalPosition = @(accPedalPosition);
+ testResponse.airbagStatus = airbagStatus;
+ testResponse.beltStatus = beltStatus;
+ testResponse.bodyInformation = bodyInformation;
+ testResponse.cloudAppVehicleID = cloudAppVehicleID;
+ testResponse.clusterModeStatus = clusterModeStatus;
+ testResponse.deviceStatus = deviceStatus;
+ testResponse.driverBraking = driverBraking;
+ testResponse.eCallInfo = eCallInfo;
+ testResponse.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ testResponse.emergencyEvent = emergencyEvent;
+ testResponse.engineOilLife = @(engineOilLife);
+ testResponse.engineTorque = @(engineTorque);
+ testResponse.externalTemperature = @(externalTemperature);
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.fuelLevel = @(fuelLevel);
+ testResponse.fuelLevel_State = fuelLevel_State;
+#pragma clang diagnostic pop
+ testResponse.fuelRange = fuelRangeArray;
+ testResponse.gearStatus = gearStatus;
+ testResponse.gps = gps;
+ testResponse.handsOffSteering = @(handsOffSteering);
+ testResponse.headLampStatus = headLampStatus;
+ testResponse.instantFuelConsumption = @(instantFuelConsumption);
+ testResponse.myKey = myKey;
+ testResponse.odometer = @(odometer);
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.prndl = prndl;
+#pragma clang diagnostic pop
+ testResponse.rpm = @(rpm);
+ testResponse.speed = @(speed);
+ testResponse.stabilityControlsStatus = stabilityControlsStatus;
+ testResponse.steeringWheelAngle = @(steeringWheelAngle);
+ testResponse.tirePressure = tirePressure;
+ testResponse.turnSignal = turnSignal;
+ testResponse.vin = vin;
+ testResponse.windowStatus = windowStatus;
+ testResponse.wiperStatus = wiperStatus;
- beforeEach(^{
- gps = [[SDLGPSData alloc] init];
- tires = [[SDLTireStatus alloc] init];
- belt = [[SDLBeltStatus alloc] init];
- body = [[SDLBodyInformation alloc] init];
- device = [[SDLDeviceStatus alloc] init];
- headLamp = [[SDLHeadLampStatus alloc] init];
- eCall = [[SDLECallInfo alloc] init];
- airbag = [[SDLAirbagStatus alloc] init];
- event = [[SDLEmergencyEvent alloc] init];
- clusterMode = [[SDLClusterModeStatus alloc] init];
- myKey = [[SDLMyKey alloc] init];
- fuelRange = [[SDLFuelRange alloc] init];
- cloudAppVehicleID = @"testCloudAppVehicleID";
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
+ expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(@(handsOffSteering)));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(equal(prndl));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ });
});
- it(@"should correctly initialize with init", ^ {
- SDLOnVehicleData* testNotification = [[SDLOnVehicleData alloc] init];
-
- testNotification.accPedalPosition = @99.99999999;
- testNotification.airbagStatus = airbag;
- testNotification.beltStatus = belt;
- testNotification.bodyInformation = body;
- testNotification.cloudAppVehicleID = cloudAppVehicleID;
- testNotification.clusterModeStatus = clusterMode;
- testNotification.deviceStatus = device;
- testNotification.driverBraking = SDLVehicleDataEventStatusYes;
- testNotification.eCallInfo = eCall;
- testNotification.electronicParkBrakeStatus = SDLElectronicParkBrakeStatusDriveActive;
- testNotification.emergencyEvent = event;
- testNotification.engineOilLife = @34.45;
- testNotification.engineTorque = @-200.124;
- testNotification.externalTemperature = @-10;
- testNotification.fuelLevel = @10.3;
- testNotification.fuelLevel_State = SDLComponentVolumeStatusAlert;
- testNotification.fuelRange = @[fuelRange, fuelRange];
- testNotification.gps = gps;
- testNotification.headLampStatus = headLamp;
- testNotification.instantFuelConsumption = @4000.63;
- testNotification.myKey = myKey;
- testNotification.odometer = @100050;
- testNotification.prndl = SDLPRNDLDrive;
- testNotification.rpm = @4242;
- testNotification.speed = @70.1;
- testNotification.steeringWheelAngle = @0.000000001;
- testNotification.tirePressure = tires;
- testNotification.turnSignal = SDLTurnSignalRight;
- testNotification.vin = @"222222222722";
- testNotification.wiperStatus = SDLWiperStatusStalled;
-
- expect(testNotification.accPedalPosition).to(equal(@99.99999999));
- expect(testNotification.airbagStatus).to(equal(airbag));
- expect(testNotification.beltStatus).to(equal(belt));
- expect(testNotification.bodyInformation).to(equal(body));
- expect(testNotification.cloudAppVehicleID).to(equal(cloudAppVehicleID));
- expect(testNotification.clusterModeStatus).to(equal(clusterMode));
- expect(testNotification.deviceStatus).to(equal(device));
- expect(testNotification.driverBraking).to(equal(SDLVehicleDataEventStatusYes));
- expect(testNotification.eCallInfo).to(equal(eCall));
- expect(testNotification.electronicParkBrakeStatus).to(equal(SDLElectronicParkBrakeStatusDriveActive));
- expect(testNotification.emergencyEvent).to(equal(event));
- expect(testNotification.engineOilLife).to(equal(@34.45));
- expect(testNotification.engineTorque).to(equal(@-200.124));
- expect(testNotification.externalTemperature).to(equal(@-10));
- expect(testNotification.fuelLevel).to(equal(@10.3));
- expect(testNotification.fuelLevel_State).to(equal(SDLComponentVolumeStatusAlert));
- expect(testNotification.fuelRange).to(equal(@[fuelRange, fuelRange]));
- expect(testNotification.gps).to(equal(gps));
- expect(testNotification.headLampStatus).to(equal(headLamp));
- expect(testNotification.instantFuelConsumption).to(equal(@4000.63));
- expect(testNotification.myKey).to(equal(myKey));
- expect(testNotification.odometer).to(equal(@100050));
- expect(testNotification.prndl).to(equal(SDLPRNDLDrive));
- expect(testNotification.rpm).to(equal(@4242));
- expect(testNotification.speed).to(equal(@70.1));
- expect(testNotification.steeringWheelAngle).to(equal(@0.000000001));
- expect(testNotification.tirePressure).to(equal(tires));
- expect(testNotification.turnSignal).to(equal(SDLTurnSignalRight));
- expect(testNotification.vin).to(equal(@"222222222722"));
- expect(testNotification.wiperStatus).to(equal(SDLWiperStatusStalled));
- });
-
- it(@"Should get correctly when initialized", ^ {
+ context(@"initWithDictionary:", ^{
NSDictionary* dict = @{SDLRPCParameterNameNotification:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameAccelerationPedalPosition:@99.99999999,
- SDLRPCParameterNameAirbagStatus:airbag,
- SDLRPCParameterNameBeltStatus:belt,
- SDLRPCParameterNameBodyInformation:body,
- SDLRPCParameterNameCloudAppVehicleID:cloudAppVehicleID,
- SDLRPCParameterNameClusterModeStatus:clusterMode,
- SDLRPCParameterNameDeviceStatus:device,
- SDLRPCParameterNameDriverBraking:SDLVehicleDataEventStatusYes,
- SDLRPCParameterNameECallInfo:eCall,
- SDLRPCParameterNameElectronicParkBrakeStatus:SDLElectronicParkBrakeStatusDriveActive,
- SDLRPCParameterNameEmergencyEvent:event,
- SDLRPCParameterNameEngineOilLife:@45.1,
- SDLRPCParameterNameEngineTorque:@-200.124,
- SDLRPCParameterNameExternalTemperature:@-10,
- SDLRPCParameterNameFuelLevel:@10.3,
- SDLRPCParameterNameFuelLevelState:SDLComponentVolumeStatusAlert,
- SDLRPCParameterNameFuelRange:@[fuelRange],
- SDLRPCParameterNameGPS:gps,
- SDLRPCParameterNameHeadLampStatus:headLamp,
- SDLRPCParameterNameInstantFuelConsumption:@4000.63,
- SDLRPCParameterNameMyKey:myKey,
- SDLRPCParameterNameOdometer:@100050,
- SDLRPCParameterNamePRNDL:SDLPRNDLDrive,
- SDLRPCParameterNameRPM:@4242,
- SDLRPCParameterNameSpeed:@70.1,
- SDLRPCParameterNameSteeringWheelAngle:@0.000000001,
- SDLRPCParameterNameTirePressure:tires,
- SDLRPCParameterNameTurnSignal:SDLTurnSignalOff,
- SDLRPCParameterNameVIN:@"222222222722",
- SDLRPCParameterNameWiperStatus:SDLWiperStatusStalled},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnVehicleData}};
+ @{SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAccelerationPedalPosition:@(accPedalPosition),
+ SDLRPCParameterNameAirbagStatus:airbagStatus,
+ SDLRPCParameterNameBeltStatus:beltStatus,
+ SDLRPCParameterNameBodyInformation:bodyInformation,
+ SDLRPCParameterNameCloudAppVehicleID:cloudAppVehicleID,
+ SDLRPCParameterNameClusterModeStatus:clusterModeStatus,
+ SDLRPCParameterNameDeviceStatus:deviceStatus,
+ SDLRPCParameterNameDriverBraking:driverBraking,
+ SDLRPCParameterNameECallInfo:eCallInfo,
+ SDLRPCParameterNameElectronicParkBrakeStatus:electronicParkBrakeStatus,
+ SDLRPCParameterNameEmergencyEvent:emergencyEvent,
+ SDLRPCParameterNameEngineOilLife:@(engineOilLife),
+ SDLRPCParameterNameEngineTorque:@(engineTorque),
+ SDLRPCParameterNameExternalTemperature:@(externalTemperature),
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLOnVehicleData* testNotification = [[SDLOnVehicleData alloc] initWithDictionary:dict];
+ SDLRPCParameterNameFuelLevel:@(fuelLevel),
+ SDLRPCParameterNameFuelLevelState:fuelLevel_State,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameFuelRange:fuelRangeArray,
+ SDLRPCParameterNameGearStatus:gearStatus,
+ SDLRPCParameterNameGPS:gps,
+ SDLRPCParameterNameHandsOffSteering:@(handsOffSteering),
+ SDLRPCParameterNameHeadLampStatus:headLampStatus,
+ SDLRPCParameterNameInstantFuelConsumption:@(instantFuelConsumption),
+ SDLRPCParameterNameMyKey:myKey,
+ SDLRPCParameterNameOdometer:@(odometer),
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNamePRNDL:prndl,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameRPM:@(rpm),
+ SDLRPCParameterNameSpeed:@(speed),
+ SDLRPCParameterNameStabilityControlsStatus:stabilityControlsStatus,
+ SDLRPCParameterNameSteeringWheelAngle:@(steeringWheelAngle),
+ SDLRPCParameterNameTirePressure:tirePressure,
+ SDLRPCParameterNameTurnSignal:turnSignal,
+ SDLRPCParameterNameVIN:vin,
+ SDLRPCParameterNameWindowStatus:windowStatus,
+ SDLRPCParameterNameWiperStatus:wiperStatus,
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnVehicleData}};
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLOnVehicleData* testResponse = [[SDLOnVehicleData alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
-
- expect(testNotification.accPedalPosition).to(equal(@99.99999999));
- expect(testNotification.airbagStatus).to(equal(airbag));
- expect(testNotification.beltStatus).to(equal(belt));
- expect(testNotification.bodyInformation).to(equal(body));
- expect(testNotification.cloudAppVehicleID).to(equal(cloudAppVehicleID));
- expect(testNotification.clusterModeStatus).to(equal(clusterMode));
- expect(testNotification.deviceStatus).to(equal(device));
- expect(testNotification.driverBraking).to(equal(SDLVehicleDataEventStatusYes));
- expect(testNotification.eCallInfo).to(equal(eCall));
- expect(testNotification.electronicParkBrakeStatus).to(equal(SDLElectronicParkBrakeStatusDriveActive));
- expect(testNotification.emergencyEvent).to(equal(event));
- expect(testNotification.engineOilLife).to(equal(@45.1));
- expect(testNotification.engineTorque).to(equal(@-200.124));
- expect(testNotification.externalTemperature).to(equal(@-10));
- expect(testNotification.fuelLevel).to(equal(@10.3));
- expect(testNotification.fuelLevel_State).to(equal(SDLComponentVolumeStatusAlert));
- expect(testNotification.fuelRange).to(equal(@[fuelRange]));
- expect(testNotification.gps).to(equal(gps));
- expect(testNotification.headLampStatus).to(equal(headLamp));
- expect(testNotification.instantFuelConsumption).to(equal(@4000.63));
- expect(testNotification.myKey).to(equal(myKey));
- expect(testNotification.odometer).to(equal(@100050));
- expect(testNotification.prndl).to(equal(SDLPRNDLDrive));
- expect(testNotification.rpm).to(equal(@4242));
- expect(testNotification.speed).to(equal(@70.1));
- expect(testNotification.steeringWheelAngle).to(equal(@0.000000001));
- expect(testNotification.tirePressure).to(equal(tires));
- expect(testNotification.turnSignal).to(equal(SDLTurnSignalOff));
- expect(testNotification.vin).to(equal(@"222222222722"));
- expect(testNotification.wiperStatus).to(equal(SDLWiperStatusStalled));
- });
-
- it(@"Should return nil if not set", ^ {
- SDLOnVehicleData* testNotification = [[SDLOnVehicleData alloc] init];
-
- expect(testNotification.accPedalPosition).to(beNil());
- expect(testNotification.airbagStatus).to(beNil());
- expect(testNotification.beltStatus).to(beNil());
- expect(testNotification.bodyInformation).to(beNil());
- expect(testNotification.cloudAppVehicleID).to(beNil());
- expect(testNotification.clusterModeStatus).to(beNil());
- expect(testNotification.deviceStatus).to(beNil());
- expect(testNotification.driverBraking).to(beNil());
- expect(testNotification.eCallInfo).to(beNil());
- expect(testNotification.electronicParkBrakeStatus).to(beNil());
- expect(testNotification.emergencyEvent).to(beNil());
- expect(testNotification.engineOilLife).to(beNil());
- expect(testNotification.engineTorque).to(beNil());
- expect(testNotification.externalTemperature).to(beNil());
- expect(testNotification.fuelLevel).to(beNil());
- expect(testNotification.fuelLevel_State).to(beNil());
- expect(testNotification.fuelRange).to(beNil());
- expect(testNotification.gps).to(beNil());
- expect(testNotification.headLampStatus).to(beNil());
- expect(testNotification.instantFuelConsumption).to(beNil());
- expect(testNotification.myKey).to(beNil());
- expect(testNotification.odometer).to(beNil());
- expect(testNotification.prndl).to(beNil());
- expect(testNotification.rpm).to(beNil());
- expect(testNotification.speed).to(beNil());
- expect(testNotification.steeringWheelAngle).to(beNil());
- expect(testNotification.tirePressure).to(beNil());
- expect(testNotification.turnSignal).to(beNil());
- expect(testNotification.vin).to(beNil());
- expect(testNotification.wiperStatus).to(beNil());
- });
- it(@"Should set and get generic Network Signal Data", ^{
- SDLOnVehicleData *testRequest = [[SDLOnVehicleData alloc] init];
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
+ expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(@(handsOffSteering)));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(equal(prndl));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ });
+ });
- [testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:@"oemVehicleData"];
+ context(@"init", ^{
+ SDLOnVehicleData* testResponse = [[SDLOnVehicleData alloc] init];
+ it(@"expect all properties to be nil", ^{
+ expect(testResponse.accPedalPosition).to(beNil());
+ expect(testResponse.airbagStatus).to(beNil());
+ expect(testResponse.beltStatus).to(beNil());
+ expect(testResponse.bodyInformation).to(beNil());
+ expect(testResponse.cloudAppVehicleID).to(beNil());
+ expect(testResponse.clusterModeStatus).to(beNil());
+ expect(testResponse.deviceStatus).to(beNil());
+ expect(testResponse.driverBraking).to(beNil());
+ expect(testResponse.eCallInfo).to(beNil());
+ expect(testResponse.electronicParkBrakeStatus).to(beNil());
+ expect(testResponse.emergencyEvent).to(beNil());
+ expect(testResponse.engineOilLife).to(beNil());
+ expect(testResponse.engineTorque).to(beNil());
+ expect(testResponse.externalTemperature).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(beNil());
+ expect(testResponse.gearStatus).to(beNil());
+ expect(testResponse.gps).to(beNil());
+ expect(testResponse.handsOffSteering).to(beNil());
+ expect(testResponse.headLampStatus).to(beNil());
+ expect(testResponse.instantFuelConsumption).to(beNil());
+ expect(testResponse.myKey).to(beNil());
+ expect(testResponse.odometer).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(beNil());
+ expect(testResponse.speed).to(beNil());
+ expect(testResponse.stabilityControlsStatus).to(beNil());
+ expect(testResponse.steeringWheelAngle).to(beNil());
+ expect(testResponse.tirePressure).to(beNil());
+ expect(testResponse.turnSignal).to(beNil());
+ expect(testResponse.vin).to(beNil());
+ expect(testResponse.windowStatus).to(beNil());
+ expect(testResponse.wiperStatus).to(beNil());
+ });
+ });
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
+ SDLOnVehicleData* testResponse = [[SDLOnVehicleData alloc] initWithGps:gps speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:fuelRangeArray externalTemperature:@(externalTemperature) turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:@(odometer) beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:@(engineTorque) accPedalPosition:@(accPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey handsOffSteering:@(handsOffSteering) windowStatus:windowStatus];
- expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@"oemVehicleData"));
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(@(handsOffSteering)));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ });
+ });
+ context(@"init and set OEM Custom Vehicle Data", ^{
+ SDLOnVehicleData *testResponse = [[SDLOnVehicleData alloc] init];
+ [testResponse setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:@"oemVehicleData"];
+
+ it(@"expect OEM Custom Vehicle Data to be set properly", ^{
+ expect([testResponse getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@"oemVehicleData"));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m
index c89033af5..d036ba1ec 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m
@@ -117,42 +117,6 @@ describe(@"initializers", ^{
});
});
- context(@"initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:handler:", ^{
- __block UInt32 parentId = 1234;
- __block UInt16 position = 2;
-
- it(@"should initialize with an image", ^{
- NSString *iconValue = @"Icon";
- SDLImageType imageType = SDLImageTypeDynamic;
-
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testCommand = [[SDLAddCommand alloc] initWithId:commandId vrCommands:vrCommands menuName:menuName parentId:parentId position:position iconValue:iconValue iconType:imageType handler:nil];
-
- expect(testCommand.cmdID).to(equal(commandId));
- expect(testCommand.vrCommands).to(equal(vrCommands));
- expect(testCommand.menuParams.menuName).toNot(beNil());
- expect(testCommand.menuParams.parentID).to(equal(parentId));
- expect(testCommand.menuParams.position).to(equal(position));
- expect(testCommand.cmdIcon).toNot(beNil());
- #pragma clang diagnostic pop
- });
-
- it(@"should initialize without an image", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testCommand = [[SDLAddCommand alloc] initWithId:commandId vrCommands:vrCommands menuName:menuName parentId:parentId position:position iconValue:nil iconType:nil handler:nil];
-
- expect(testCommand.cmdID).to(equal(commandId));
- expect(testCommand.vrCommands).to(equal(vrCommands));
- expect(testCommand.menuParams.menuName).toNot(beNil());
- expect(testCommand.menuParams.parentID).to(equal(parentId));
- expect(testCommand.menuParams.position).to(equal(position));
- expect(testCommand.cmdIcon).to(beNil());
- #pragma clang diagnostic pop
- });
- });
-
context(@"initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:iconIsTemplate:handler:", ^{
__block UInt32 parentId = 12345;
__block UInt16 position = 0;
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m
index 5c5e98547..3dffd0961 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m
@@ -21,102 +21,83 @@ describe(@"Getter/Setter Tests", ^ {
__block NSString *menuName = @"Welcome to the menu";
__block SDLImage *image = nil;
__block SDLMenuLayout testLayout = SDLMenuLayoutList;
+ __block NSNumber *parentID = @44;
beforeEach(^{
image = [[SDLImage alloc] initWithName:@"Test" isTemplate:false];
});
- it(@"should correctly initialize with initWithId:menuName:", ^{
- SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] initWithId:menuId menuName:menuName];
+ it(@"should correctly initialize with initWithMenuID:menuName:", ^{
+ SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] initWithMenuID:menuId menuName:menuName];
expect(testRequest.menuID).to(equal(@(menuId)));
expect(testRequest.position).to(beNil());
expect(testRequest.menuName).to(equal(menuName));
expect(testRequest.menuIcon).to(beNil());
+ expect(testRequest.parentID).to(beNil());
});
- it(@"should correctly initialize with initWithId:menuName:position:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] initWithId:menuId menuName:menuName position:position];
-
- expect(testRequest.menuID).to(equal(@(menuId)));
- expect(testRequest.position).to(equal(@(position)));
- expect(testRequest.menuName).to(equal(menuName));
- expect(testRequest.menuIcon).to(beNil());
- #pragma clang diagnostic pop
- });
-
- it(@"should correctly initialize with initWithId:menuName:menuIcon:position:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] initWithId:menuId menuName:menuName menuIcon:image position:position];
-
- expect(testRequest.menuID).to(equal(@(menuId)));
- expect(testRequest.position).to(equal(@(position)));
- expect(testRequest.menuName).to(equal(menuName));
- expect(testRequest.menuIcon).to(equal(image));
-#pragma clang diagnostic pop
- });
-
- it(@"should correctly initialize with initWithId:menuName:menuLayout:menuIcon:position:", ^{
- SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] initWithId:menuId menuName:menuName menuLayout:testLayout menuIcon:image position:position];
+ it(@"should correctly initialize with initWithMenuID:menuName:menuLayout:menuIcon:position:parentID:", ^{
+ SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] initWithMenuID:menuId menuName:menuName position:@(position) menuIcon:image menuLayout:testLayout parentID:parentID];
expect(testRequest.menuID).to(equal(@(menuId)));
expect(testRequest.position).to(equal(@(position)));
expect(testRequest.menuName).to(equal(menuName));
expect(testRequest.menuIcon).to(equal(image));
expect(testRequest.menuLayout).to(equal(testLayout));
+ expect(testRequest.parentID).to(equal(parentID));
});
it(@"Should set and get correctly", ^ {
- SDLAddSubMenu* testRequest = [[SDLAddSubMenu alloc] init];
+ SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] init];
testRequest.menuID = @4345645;
testRequest.position = @27;
testRequest.menuName = @"Welcome to the menu";
testRequest.menuIcon = image;
testRequest.menuLayout = testLayout;
+ testRequest.parentID = parentID;
expect(testRequest.menuID).to(equal(@(menuId)));
expect(testRequest.position).to(equal(@(position)));
expect(testRequest.menuName).to(equal(menuName));
expect(testRequest.menuIcon).to(equal(image));
expect(testRequest.menuLayout).to(equal(testLayout));
+ expect(testRequest.parentID).to(equal(parentID));
});
it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameRequest:
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameMenuId:@4345645,
- SDLRPCParameterNamePosition:@27,
- SDLRPCParameterNameMenuName:@"Welcome to the menu",
+ @{SDLRPCParameterNameMenuID: @(menuId),
+ SDLRPCParameterNamePosition: @(position),
+ SDLRPCParameterNameMenuName: menuName,
SDLRPCParameterNameMenuIcon: @{
- SDLRPCParameterNameValue: @"Test"
- },
- SDLRPCParameterNameMenuLayout: testLayout
+ SDLRPCParameterNameValue: image.value
+ },
+ SDLRPCParameterNameMenuLayout: testLayout,
+ SDLRPCParameterNameParentID: parentID
},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameAddSubMenu}} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAddSubMenu* testRequest = [[SDLAddSubMenu alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameAddSubMenu}};
+ SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] initWithDictionary:dict];
expect(testRequest.menuID).to(equal(@(menuId)));
expect(testRequest.position).to(equal(@(position)));
expect(testRequest.menuName).to(equal(menuName));
expect(testRequest.menuIcon.value).to(equal(@"Test"));
expect(testRequest.menuLayout).to(equal(testLayout));
+ expect(testRequest.parentID).to(equal(parentID));
});
it(@"Should return nil if not set", ^ {
- SDLAddSubMenu* testRequest = [[SDLAddSubMenu alloc] init];
+ SDLAddSubMenu *testRequest = [[SDLAddSubMenu alloc] init];
expect(testRequest.menuID).to(beNil());
expect(testRequest.position).to(beNil());
expect(testRequest.menuName).to(beNil());
expect(testRequest.menuIcon).to(beNil());
expect(testRequest.menuLayout).to(beNil());
+ expect(testRequest.parentID).to(beNil());
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m
index ec30bbbd9..1ae635343 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m
@@ -14,8 +14,6 @@
QuickSpecBegin(SDLAlertSpec)
-static UInt16 const SDLDefaultDuration = 5000;
-
describe(@"Getter/Setter Tests", ^ {
__block SDLAlert *testRequest = nil;
__block NSString *testAlertText1 = @"alert#1";
@@ -86,23 +84,20 @@ describe(@"Getter/Setter Tests", ^ {
describe(@"Initializing", ^{
it(@"Should initialize correctly with a dictionary", ^{
- NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameAlertText1:testAlertText1,
- SDLRPCParameterNameAlertText2:testAlertText2,
- SDLRPCParameterNameAlertText3:testAlertText3,
- SDLRPCParameterNameTTSChunks:testTTSChunks,
- SDLRPCParameterNameDuration:@(testDuration),
- SDLRPCParameterNamePlayTone:@(testPlayTone),
- SDLRPCParameterNameProgressIndicator:@(testProgressIndicator),
- SDLRPCParameterNameSoftButtons:testSoftButtons,
- SDLRPCParameterNameAlertIcon:testImage,
- SDLRPCParameterNameCancelID:@(testCancelID)},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameAlert}};
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameAlertText1:testAlertText1,
+ SDLRPCParameterNameAlertText2:testAlertText2,
+ SDLRPCParameterNameAlertText3:testAlertText3,
+ SDLRPCParameterNameTTSChunks:testTTSChunks,
+ SDLRPCParameterNameDuration:@(testDuration),
+ SDLRPCParameterNamePlayTone:@(testPlayTone),
+ SDLRPCParameterNameProgressIndicator:@(testProgressIndicator),
+ SDLRPCParameterNameSoftButtons:testSoftButtons,
+ SDLRPCParameterNameAlertIcon:testImage,
+ SDLRPCParameterNameCancelID:@(testCancelID)},
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameAlert}};
testRequest = [[SDLAlert alloc] initWithDictionary:dict];
- #pragma clang diagnostic pop
expect(testRequest.alertText1).to(equal(testAlertText1));
expect(testRequest.alertText2).to(equal(testAlertText2));
@@ -148,137 +143,8 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.cancelID).to(equal(testCancelID));
});
- it(@"Should initialize correctly with initWithAlertText1:alertText2:duration:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithAlertText1:testAlertText1 alertText2:testAlertText2 duration:testDuration];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(beNil());
- expect(testRequest.ttsChunks).to(beNil());
- expect(testRequest.duration).to(equal(testDuration));
- expect(testRequest.playTone).to(beFalse());
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(beNil());
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithAlertText1:alertText2:alertText3:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithAlertText1:testAlertText1 alertText2:testAlertText2 alertText3:testAlertText3];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(equal(testAlertText3));
- expect(testRequest.ttsChunks).to(beNil());
- expect(testRequest.duration).to(equal(SDLDefaultDuration));
- expect(testRequest.playTone).to(beFalse());
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(beNil());
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithAlertText1:alertText2:alertText3:duration", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithAlertText1:testAlertText1 alertText2:testAlertText2 alertText3:testAlertText3 duration:testDuration];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(equal(testAlertText3));
- expect(testRequest.ttsChunks).to(beNil());
- expect(testRequest.duration).to(equal(testDuration));
- expect(testRequest.playTone).to(beFalse());
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(beNil());
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithAlertText1:alertText2:alertText3:duration:softButtons:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithAlertText1:testAlertText1 alertText2:testAlertText2 alertText3:testAlertText3 duration:testDuration softButtons:testSoftButtons];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(equal(testAlertText3));
- expect(testRequest.ttsChunks).to(beNil());
- expect(testRequest.duration).to(equal(testDuration));
- expect(testRequest.playTone).to(beFalse());
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(equal(testSoftButtons));
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithTTS:playTone:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithTTS:testTTSString playTone:testPlayTone];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(beNil());
- expect(testRequest.alertText2).to(beNil());
- expect(testRequest.alertText3).to(beNil());
- expect(testRequest.ttsChunks).to(equal([SDLTTSChunk textChunksFromString:testTTSString]));
- expect(testRequest.duration).to(equal(SDLDefaultDuration));
- expect(testRequest.playTone).to(equal(testPlayTone));
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(beNil());
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithTTS:alertText1:alertText2:playTone:duration:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithTTS:testTTSString alertText1:testAlertText1 alertText2:testAlertText2 playTone:testPlayTone duration:testDuration];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(beNil());
- expect(testRequest.ttsChunks).to(equal([SDLTTSChunk textChunksFromString:testTTSString]));
- expect(testRequest.duration).to(equal(testDuration));
- expect(testRequest.playTone).to(equal(testPlayTone));
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(beNil());
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithTTS:alertText1:alertText2:alertText3:playTone:duration:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithTTS:testTTSString alertText1:testAlertText1 alertText2:testAlertText2 alertText3:testAlertText3 playTone:testPlayTone duration:testDuration];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(equal(testAlertText3));
- expect(testRequest.ttsChunks).to(equal([SDLTTSChunk textChunksFromString:testTTSString]));
- expect(testRequest.duration).to(equal(testDuration));
- expect(testRequest.playTone).to(equal(testPlayTone));
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(beNil());
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
it(@"Should initialize correctly with initWithTTSChunks:playTone:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
testRequest = [[SDLAlert alloc] initWithTTSChunks:testTTSChunks playTone:testPlayTone];
- #pragma clang diagnostic pop
expect(testRequest.alertText1).to(beNil());
expect(testRequest.alertText2).to(beNil());
@@ -291,42 +157,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.alertIcon).to(beNil());
expect(testRequest.cancelID).to(beNil());
});
-
- it(@"Should initialize correctly with initWithTTSChunks:alertText1:alertText2:alertText3:playTone:softButtons:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithTTSChunks:testTTSChunks alertText1:testAlertText1 alertText2:testAlertText2 alertText3:testAlertText3 playTone:testPlayTone softButtons:testSoftButtons];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(equal(testAlertText3));
- expect(testRequest.ttsChunks).to(equal(testTTSChunks));
- expect(testRequest.duration).to(equal(SDLDefaultDuration));
- expect(testRequest.playTone).to(equal(testPlayTone));
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(equal(testSoftButtons));
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithTTSChunks:alertText1:alertText2:alertText3:playTone:duration:softButtons:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLAlert alloc] initWithTTSChunks:testTTSChunks alertText1:testAlertText1 alertText2:testAlertText2 alertText3:testAlertText3 playTone:testPlayTone duration:testDuration softButtons:testSoftButtons];
- #pragma clang diagnostic pop
-
- expect(testRequest.alertText1).to(equal(testAlertText1));
- expect(testRequest.alertText2).to(equal(testAlertText2));
- expect(testRequest.alertText3).to(equal(testAlertText3));
- expect(testRequest.ttsChunks).to(equal(testTTSChunks));
- expect(testRequest.duration).to(equal(testDuration));
- expect(testRequest.playTone).to(equal(testPlayTone));
- expect(testRequest.progressIndicator).to(beFalse());
- expect(testRequest.softButtons).to(equal(testSoftButtons));
- expect(testRequest.alertIcon).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
});
afterEach(^{
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m
index d9a49d20c..cb411cf76 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m
@@ -30,22 +30,18 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.moduleId).to(equal(@"123"));
expect(testRequest.buttonName).to(equal(SDLButtonNameAC));
expect(testRequest.buttonPressMode).to(equal(SDLButtonPressModeShort));
-
});
it(@"Should get correctly when initialized with a dictionary", ^ {
- NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameModuleType : SDLModuleTypeClimate,
- SDLRPCParameterNameButtonName : SDLButtonNameAC,
- SDLRPCParameterNameButtonPressMode : SDLButtonPressModeShort,
- SDLRPCParameterNameModuleId:@"123"
- },
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameButtonPress}} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLButtonPress* testRequest = [[SDLButtonPress alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameModuleType : SDLModuleTypeClimate,
+ SDLRPCParameterNameButtonName : SDLButtonNameAC,
+ SDLRPCParameterNameButtonPressMode : SDLButtonPressModeShort,
+ SDLRPCParameterNameModuleId:@"123"
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameButtonPress}};
+ SDLButtonPress *testRequest = [[SDLButtonPress alloc] initWithDictionary:dict];
expect(testRequest.moduleType).to(equal(SDLModuleTypeClimate));
expect(testRequest.moduleId).to(equal(@"123"));
@@ -53,25 +49,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.buttonPressMode).to(equal(SDLButtonPressModeShort));
});
- it(@"Should get correctly when initialized with initWithButtonName:moduleType:", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLButtonPress *testRequest = [[SDLButtonPress alloc] initWithButtonName:SDLButtonNameAC moduleType:SDLModuleTypeClimate];
-#pragma clang diagnostic pop
- expect(testRequest.buttonName).to(equal(SDLButtonNameAC));
- expect(testRequest.moduleType).to(equal(SDLModuleTypeClimate));
- });
-
- it(@"Should get correctly when initialized with initWithButtonName:moduleType:moduleId:", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLButtonPress *testRequest = [[SDLButtonPress alloc] initWithButtonName:SDLButtonNameAC moduleType:SDLModuleTypeClimate moduleId:@"123"];
-#pragma clang diagnostic pop
- expect(testRequest.buttonName).to(equal(SDLButtonNameAC));
- expect(testRequest.moduleType).to(equal(SDLModuleTypeClimate));
- expect(testRequest.moduleId).to(equal(@"123"));
- });
-
it(@"Should get correctly when initialized with initWithButtonName:moduleType:moduleId:buttonPressMode:", ^ {
SDLButtonPress *testRequest = [[SDLButtonPress alloc] initWithButtonName:SDLButtonNameAC moduleType:SDLModuleTypeClimate moduleId:@"123" buttonPressMode:SDLButtonPressModeShort];
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCancelInteractionSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCancelInteractionSpec.m
index c36c5de29..f8f1be402 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCancelInteractionSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCancelInteractionSpec.m
@@ -103,6 +103,13 @@ describe(@"Getter/Setter Tests", ^{
expect(testRequest.cancelID).to(equal(testCancelID));
});
+ it(@"Should initialize correctly with initWithSubtleAlertCancelID:", ^{
+ testRequest = [[SDLCancelInteraction alloc] initWithSubtleAlertCancelID:testCancelID];
+
+ expect(testRequest.functionID).to(equal([SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSubtleAlert]));
+ expect(testRequest.cancelID).to(equal(testCancelID));
+ });
+
it(@"Should initialize correctly with alert:", ^{
testRequest = [SDLCancelInteraction alert];
@@ -130,6 +137,13 @@ describe(@"Getter/Setter Tests", ^{
expect(testRequest.functionID).to(equal([SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNamePerformInteraction]));
expect(testRequest.cancelID).to(beNil());
});
+
+ it(@"Should initialize correctly with subtleAlert:", ^{
+ testRequest = [SDLCancelInteraction subtleAlert];
+
+ expect(testRequest.functionID).to(equal([SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameSubtleAlert]));
+ expect(testRequest.cancelID).to(beNil());
+ });
});
afterEach(^{
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m
index 1a71c63f8..494988a7b 100755
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m
@@ -26,7 +26,7 @@ describe(@"Getter/Setter Tests", ^ {
it(@"Should get correctly when initialized", ^ {
NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameMenuId:@25614},
+ @{SDLRPCParameterNameMenuID:@25614},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameDeleteSubMenu}} mutableCopy];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m
index ba594e259..9f795546c 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m
@@ -47,7 +47,7 @@ describe(@"Getter/Setter Tests", ^{
it(@"Should initialize correctly with a dictionary", ^{
NSDictionary *dict = @{SDLRPCParameterNameRequest:@{
SDLRPCParameterNameParameters:@{
- SDLRPCParameterNameFilename:testFileName,
+ SDLRPCParameterNameFileName:testFileName,
SDLRPCParameterNameAppServiceId:testAppServiceId,
SDLRPCParameterNameFileType:testFileType,
SDLRPCParameterNameOffset:@(testOffset),
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m
index 3a4d63f4f..55e6ead8a 100755
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m
@@ -28,16 +28,13 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should get correctly when initialized with a dictionary", ^ {
- NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameModuleType : SDLModuleTypeRadio,
- SDLRPCParameterNameModuleId: @"123",
- SDLRPCParameterNameSubscribe : @YES},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetInteriorVehicleData}} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameModuleType : SDLModuleTypeRadio,
+ SDLRPCParameterNameModuleId: @"123",
+ SDLRPCParameterNameSubscribe : @YES},
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetInteriorVehicleData}};
+ SDLGetInteriorVehicleData *testRequest = [[SDLGetInteriorVehicleData alloc] initWithDictionary:dict];
expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio));
expect(testRequest.subscribe).to(equal(@YES));
@@ -45,16 +42,6 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should get correctly when initialized with module type", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initWithModuleType:SDLModuleTypeRadio];
-#pragma clang diagnostic pop
-
- expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio));
- expect(testRequest.moduleId).to(beNil());
- });
-
- it(@"Should get correctly when initialized with module type", ^ {
SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initWithModuleType:SDLModuleTypeRadio moduleId:@"123"];
expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio));
@@ -62,17 +49,6 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should get correctly when initialized with module type and subscribe", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initAndSubscribeToModuleType:SDLModuleTypeRadio];
-#pragma clang diagnostic pop
-
- expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio));
- expect(testRequest.subscribe).to(equal(@YES));
- expect(testRequest.moduleId).to(beNil());
- });
-
- it(@"Should get correctly when initialized with module type and subscribe", ^ {
SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initAndSubscribeToModuleType:SDLModuleTypeRadio moduleId:@"123"];
expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio));
@@ -80,17 +56,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.moduleId).to(equal(@"123"));
});
- it(@"Should get correctly when initialized with module type and unsubscribe", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initAndUnsubscribeToModuleType:SDLModuleTypeRadio];
-#pragma clang diagnostic pop
-
- expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio));
- expect(testRequest.subscribe).to(equal(@NO));
- expect(testRequest.moduleId).to(beNil());
- });
-
it(@"Should get correctly when initialized with module type and unsubscribe", ^ {
SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initAndUnsubscribeToModuleType:SDLModuleTypeRadio moduleId:@"123"];
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
index bcf32d76c..84d1806df 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
@@ -14,294 +14,336 @@
QuickSpecBegin(SDLGetVehicleDataSpec)
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] init];
-
testRequest.accPedalPosition = @YES;
- testRequest.airbagStatus = @NO;
- testRequest.beltStatus = @NO;
+ testRequest.airbagStatus = @YES;
+ testRequest.beltStatus = @YES;
testRequest.bodyInformation = @YES;
testRequest.cloudAppVehicleID = @YES;
- testRequest.clusterModeStatus = @NO;
- testRequest.deviceStatus = @NO;
+ testRequest.clusterModeStatus = @YES;
+ testRequest.deviceStatus = @YES;
testRequest.driverBraking = @YES;
testRequest.eCallInfo = @YES;
testRequest.electronicParkBrakeStatus = @YES;
testRequest.emergencyEvent = @YES;
testRequest.engineOilLife = @YES;
- testRequest.engineTorque = @NO;
+ testRequest.engineTorque = @YES;
testRequest.externalTemperature = @YES;
- testRequest.fuelLevel = @NO;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testRequest.fuelLevel = @YES;
testRequest.fuelLevel_State = @YES;
+#pragma clang diagnostic pop
testRequest.fuelRange = @YES;
- testRequest.gps = @NO;
+ testRequest.gearStatus = @YES;
+ testRequest.gps = @YES;
+ testRequest.handsOffSteering = @YES;
testRequest.headLampStatus = @YES;
- testRequest.instantFuelConsumption = @NO;
+ testRequest.instantFuelConsumption = @YES;
testRequest.myKey = @YES;
testRequest.odometer = @YES;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testRequest.prndl = @YES;
+#pragma clang diagnostic pop
testRequest.rpm = @YES;
- testRequest.speed = @NO;
- testRequest.steeringWheelAngle = @NO;
- testRequest.tirePressure = @NO;
+ testRequest.speed = @YES;
+ testRequest.stabilityControlsStatus = @YES;
+ testRequest.steeringWheelAngle = @YES;
+ testRequest.tirePressure = @YES;
testRequest.turnSignal = @YES;
- testRequest.wiperStatus = @NO;
+ testRequest.windowStatus = @YES;
+ testRequest.wiperStatus = @YES;
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@NO));
- expect(testRequest.beltStatus).to(equal(@NO));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@NO));
- expect(testRequest.deviceStatus).to(equal(@NO));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@NO));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@NO));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@NO));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@NO));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@NO));
- expect(testRequest.steeringWheelAngle).to(equal(@NO));
- expect(testRequest.tirePressure).to(equal(@NO));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@NO));
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
- it(@"Should get correctly when initialized", ^ {
+ context(@"initWithDictionary:", ^{
NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameAccelerationPedalPosition:@YES,
- SDLRPCParameterNameAirbagStatus:@YES,
- SDLRPCParameterNameBeltStatus:@YES,
- SDLRPCParameterNameBodyInformation:@YES,
- SDLRPCParameterNameCloudAppVehicleID:@YES,
- SDLRPCParameterNameClusterModeStatus:@YES,
- SDLRPCParameterNameDeviceStatus:@YES,
- SDLRPCParameterNameDriverBraking:@YES,
- SDLRPCParameterNameECallInfo:@YES,
- SDLRPCParameterNameElectronicParkBrakeStatus:@YES,
- SDLRPCParameterNameEmergencyEvent:@NO,
- SDLRPCParameterNameEngineOilLife:@YES,
- SDLRPCParameterNameEngineTorque:@YES,
- SDLRPCParameterNameExternalTemperature:@NO,
- SDLRPCParameterNameFuelLevel:@YES,
- SDLRPCParameterNameFuelLevelState:@YES,
- SDLRPCParameterNameFuelRange:@YES,
- SDLRPCParameterNameGPS:@YES,
- SDLRPCParameterNameHeadLampStatus:@YES,
- SDLRPCParameterNameInstantFuelConsumption:@YES,
- SDLRPCParameterNameMyKey:@YES,
- SDLRPCParameterNameOdometer:@YES,
- SDLRPCParameterNamePRNDL:@YES,
- SDLRPCParameterNameRPM:@YES,
- SDLRPCParameterNameSpeed:@YES,
- SDLRPCParameterNameSteeringWheelAngle:@NO,
- SDLRPCParameterNameTirePressure:@YES,
- SDLRPCParameterNameTurnSignal:@NO,
- SDLRPCParameterNameWiperStatus:@YES},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}};
+ @{SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAccelerationPedalPosition:@YES,
+ SDLRPCParameterNameAirbagStatus:@YES,
+ SDLRPCParameterNameBeltStatus:@YES,
+ SDLRPCParameterNameBodyInformation:@YES,
+ SDLRPCParameterNameCloudAppVehicleID:@YES,
+ SDLRPCParameterNameClusterModeStatus:@YES,
+ SDLRPCParameterNameDeviceStatus:@YES,
+ SDLRPCParameterNameDriverBraking:@YES,
+ SDLRPCParameterNameECallInfo:@YES,
+ SDLRPCParameterNameElectronicParkBrakeStatus:@YES,
+ SDLRPCParameterNameEmergencyEvent:@YES,
+ SDLRPCParameterNameEngineOilLife:@YES,
+ SDLRPCParameterNameEngineTorque:@YES,
+ SDLRPCParameterNameExternalTemperature:@YES,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNameFuelLevel:@YES,
+ SDLRPCParameterNameFuelLevelState:@YES,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameFuelRange:@YES,
+ SDLRPCParameterNameGPS:@YES,
+ SDLRPCParameterNameGearStatus:@YES,
+ SDLRPCParameterNameHandsOffSteering:@YES,
+ SDLRPCParameterNameHeadLampStatus:@YES,
+ SDLRPCParameterNameInstantFuelConsumption:@YES,
+ SDLRPCParameterNameMyKey:@YES,
+ SDLRPCParameterNameOdometer:@YES,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNamePRNDL:@YES,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameRPM:@YES,
+ SDLRPCParameterNameSpeed:@YES,
+ SDLRPCParameterNameStabilityControlsStatus:@YES,
+ SDLRPCParameterNameSteeringWheelAngle:@YES,
+ SDLRPCParameterNameTirePressure:@YES,
+ SDLRPCParameterNameTurnSignal:@YES,
+ SDLRPCParameterNameWindowStatus:@YES,
+ SDLRPCParameterNameWiperStatus:@YES,
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
-
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@NO));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@NO));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@NO));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@NO));
- expect(testRequest.wiperStatus).to(equal(@YES));
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
});
describe(@"initializers", ^{
context(@"init", ^{
SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] init];
-
- expect(testRequest.accPedalPosition).to(beNil());
- expect(testRequest.airbagStatus).to(beNil());
- expect(testRequest.beltStatus).to(beNil());
- expect(testRequest.bodyInformation).to(beNil());
- expect(testRequest.cloudAppVehicleID).to(beNil());
- expect(testRequest.clusterModeStatus).to(beNil());
- expect(testRequest.deviceStatus).to(beNil());
- expect(testRequest.driverBraking).to(beNil());
- expect(testRequest.eCallInfo).to(beNil());
- expect(testRequest.electronicParkBrakeStatus).to(beNil());
- expect(testRequest.emergencyEvent).to(beNil());
- expect(testRequest.engineOilLife).to(beNil());
- expect(testRequest.engineTorque).to(beNil());
- expect(testRequest.externalTemperature).to(beNil());
- expect(testRequest.fuelLevel).to(beNil());
- expect(testRequest.fuelLevel_State).to(beNil());
- expect(testRequest.fuelRange).to(beNil());
- expect(testRequest.gps).to(beNil());
- expect(testRequest.headLampStatus).to(beNil());
- expect(testRequest.instantFuelConsumption).to(beNil());
- expect(testRequest.myKey).to(beNil());
- expect(testRequest.odometer).to(beNil());
- expect(testRequest.prndl).to(beNil());
- expect(testRequest.rpm).to(beNil());
- expect(testRequest.speed).to(beNil());
- expect(testRequest.steeringWheelAngle).to(beNil());
- expect(testRequest.tirePressure).to(beNil());
- expect(testRequest.turnSignal).to(beNil());
- expect(testRequest.wiperStatus).to(beNil());
- });
-
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:NO beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES emergencyEvent:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES vin:YES wiperStatus:YES];
-
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@NO));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@NO));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@NO));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@NO));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@NO));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@NO));
- expect(testRequest.wiperStatus).to(equal(@YES));
- #pragma clang diagnostic pop
+ it(@"expect all properties to be nil", ^{
+ expect(testRequest.accPedalPosition).to(beNil());
+ expect(testRequest.airbagStatus).to(beNil());
+ expect(testRequest.beltStatus).to(beNil());
+ expect(testRequest.bodyInformation).to(beNil());
+ expect(testRequest.cloudAppVehicleID).to(beNil());
+ expect(testRequest.clusterModeStatus).to(beNil());
+ expect(testRequest.deviceStatus).to(beNil());
+ expect(testRequest.driverBraking).to(beNil());
+ expect(testRequest.eCallInfo).to(beNil());
+ expect(testRequest.electronicParkBrakeStatus).to(beNil());
+ expect(testRequest.emergencyEvent).to(beNil());
+ expect(testRequest.engineOilLife).to(beNil());
+ expect(testRequest.engineTorque).to(beNil());
+ expect(testRequest.externalTemperature).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(beNil());
+ expect(testRequest.gearStatus).to(beNil());
+ expect(testRequest.gps).to(beNil());
+ expect(testRequest.handsOffSteering).to(beNil());
+ expect(testRequest.headLampStatus).to(beNil());
+ expect(testRequest.instantFuelConsumption).to(beNil());
+ expect(testRequest.myKey).to(beNil());
+ expect(testRequest.odometer).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(beNil());
+ expect(testRequest.speed).to(beNil());
+ expect(testRequest.stabilityControlsStatus).to(beNil());
+ expect(testRequest.steeringWheelAngle).to(beNil());
+ expect(testRequest.tirePressure).to(beNil());
+ expect(testRequest.turnSignal).to(beNil());
+ expect(testRequest.windowStatus).to(beNil());
+ expect(testRequest.wiperStatus).to(beNil());
+ });
});
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES vin:YES wiperStatus:YES];
-
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@NO));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@YES));
- #pragma clang diagnostic pop
- });
context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES vin:YES wiperStatus:YES];
+#pragma clang diagnostic pop
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@YES));
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(beNil());
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(beNil());
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(beNil());
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(beNil());
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
- context(@"Should set and get Generic Network Signal Data", ^{
- SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] init];
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
+ SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES vin:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
+ });
+ context(@"should set OEM Custom Vehicle Data", ^{
+ SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] init];
[testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData" withVehicleDataState:NO];
[testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData1" withVehicleDataState:YES];
- expect([testRequest getOEMCustomVehicleData:@"OEMCustomVehicleData"]).to(beFalse());
- expect([testRequest getOEMCustomVehicleData:@"OEMCustomVehicleData1"]).to(beTrue());
-
+ it(@"expect OEM Custom Vehicle Data to be set properly", ^{
+ expect([testRequest getOEMCustomVehicleData:@"OEMCustomVehicleData"]).to(equal(@NO));
+ expect([testRequest getOEMCustomVehicleData:@"OEMCustomVehicleData1"]).to(equal(@YES));
+ });
});
-
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m
index aa28359d3..69ee0698f 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m
@@ -25,7 +25,6 @@ describe(@"Getter/Setter Tests", ^ {
__block NSString *testInitialPromptString = nil;
__block SDLInteractionMode testInteractionMode = SDLInteractionModeVoiceRecognitionOnly;
__block NSArray<NSNumber<SDLUInt> *> *testInteractionChoiceSetIDList = nil;
- __block UInt16 testInteractionChoiceSetID = 48212;
__block NSString *testHelpPromptString = nil;
__block NSArray<SDLTTSChunk *> *testHelpPrompt = nil;
__block NSString *testTimeoutPromptString = nil;
@@ -95,23 +94,20 @@ describe(@"Getter/Setter Tests", ^ {
describe(@"Initializing", ^{
it(@"Should initialize correctly with a dictionary", ^ {
- NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameInitialText:testInitialText,
- SDLRPCParameterNameInitialPrompt:testInitialPrompt,
- SDLRPCParameterNameInteractionMode:testInteractionMode,
- SDLRPCParameterNameInteractionChoiceSetIdList:testInteractionChoiceSetIDList,
- SDLRPCParameterNameHelpPrompt:testHelpPrompt,
- SDLRPCParameterNameTimeoutPrompt:testTimeoutPrompt,
- SDLRPCParameterNameTimeout:@(testTimeout),
- SDLRPCParameterNameVRHelp:testVRHelp,
- SDLRPCParameterNameInteractionLayout:testinteractionLayout,
- SDLRPCParameterNameCancelID:@(testCancelID)},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNamePerformInteraction}};
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameInitialText:testInitialText,
+ SDLRPCParameterNameInitialPrompt:testInitialPrompt,
+ SDLRPCParameterNameInteractionMode:testInteractionMode,
+ SDLRPCParameterNameInteractionChoiceSetIdList:testInteractionChoiceSetIDList,
+ SDLRPCParameterNameHelpPrompt:testHelpPrompt,
+ SDLRPCParameterNameTimeoutPrompt:testTimeoutPrompt,
+ SDLRPCParameterNameTimeout:@(testTimeout),
+ SDLRPCParameterNameVRHelp:testVRHelp,
+ SDLRPCParameterNameInteractionLayout:testinteractionLayout,
+ SDLRPCParameterNameCancelID:@(testCancelID)},
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNamePerformInteraction}};
testRequest = [[SDLPerformInteraction alloc] initWithDictionary:dict];
- #pragma clang diagnostic pop
expect(testRequest.initialText).to(equal(testInitialText));
expect(testRequest.initialPrompt).to(equal(testInitialPrompt));
@@ -156,150 +152,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.interactionLayout).to(equal(testinteractionLayout));
expect(testRequest.cancelID).to(equal(testCancelID));
});
-
- it(@"Should initialize correctly with initWithInteractionChoiceSetId:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInteractionChoiceSetId:testInteractionChoiceSetID];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(beNil());
- expect(testRequest.initialPrompt).to(beNil());
- expect(testRequest.interactionMode).to(beNil());
- expect(testRequest.interactionChoiceSetIDList).to(equal(@[@(testInteractionChoiceSetID)]));
- expect(testRequest.helpPrompt).to(beNil());
- expect(testRequest.timeoutPrompt).to(beNil());
- expect(testRequest.timeout).to(beNil());
- expect(testRequest.vrHelp).to(beNil());
- expect(testRequest.interactionLayout).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithInteractionChoiceSetIdList:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInteractionChoiceSetIdList:testInteractionChoiceSetIDList];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(beNil());
- expect(testRequest.initialPrompt).to(beNil());
- expect(testRequest.interactionMode).to(beNil());
- expect(testRequest.interactionChoiceSetIDList).to(equal(testInteractionChoiceSetIDList));
- expect(testRequest.helpPrompt).to(beNil());
- expect(testRequest.timeoutPrompt).to(beNil());
- expect(testRequest.timeout).to(beNil());
- expect(testRequest.vrHelp).to(beNil());
- expect(testRequest.interactionLayout).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithInitialPrompt:initialText:interactionChoiceSetID:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInitialPrompt:testInitialPromptString initialText:testInitialText interactionChoiceSetID:testInteractionChoiceSetID];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(equal(testInitialText));
- expect(testRequest.initialPrompt).to(equal([SDLTTSChunk textChunksFromString:testInitialPromptString]));
- expect(testRequest.interactionMode).to(beNil());
- expect(testRequest.interactionChoiceSetIDList).to(equal(@[@(testInteractionChoiceSetID)]));
- expect(testRequest.helpPrompt).to(beNil());
- expect(testRequest.timeoutPrompt).to(beNil());
- expect(testRequest.timeout).to(beNil());
- expect(testRequest.vrHelp).to(beNil());
- expect(testRequest.interactionLayout).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithInitialPrompt:initialText:interactionChoiceSetID:vrHelp:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInitialPrompt:testInitialPromptString initialText:testInitialText interactionChoiceSetID:testInteractionChoiceSetID vrHelp:testVRHelp];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(equal(testInitialText));
- expect(testRequest.initialPrompt).to(equal([SDLTTSChunk textChunksFromString:testInitialPromptString]));
- expect(testRequest.interactionMode).to(beNil());
- expect(testRequest.interactionChoiceSetIDList).to(equal(@[@(testInteractionChoiceSetID)]));
- expect(testRequest.helpPrompt).to(beNil());
- expect(testRequest.timeoutPrompt).to(beNil());
- expect(testRequest.timeout).to(beNil());
- expect(testRequest.vrHelp).to(equal(testVRHelp));
- expect(testRequest.interactionLayout).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInitialPrompt:testInitialPromptString initialText:testInitialText interactionChoiceSetIDList:testInteractionChoiceSetIDList helpPrompt:testHelpPromptString timeoutPrompt:testTimeoutPromptString interactionMode:testInteractionMode timeout:testTimeout];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(equal(testInitialText));
- expect(testRequest.initialPrompt).to(equal([SDLTTSChunk textChunksFromString:testInitialPromptString]));
- expect(testRequest.interactionMode).to(equal(testInteractionMode));
- expect(testRequest.interactionChoiceSetIDList).to(equal(testInteractionChoiceSetIDList));
- expect(testRequest.helpPrompt).to(equal([SDLTTSChunk textChunksFromString:testHelpPromptString]));
- expect(testRequest.timeoutPrompt).to(equal([SDLTTSChunk textChunksFromString:testTimeoutPromptString]));
- expect(testRequest.timeout).to(equal(testTimeout));
- expect(testRequest.vrHelp).to(beNil());
- expect(testRequest.interactionLayout).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:vrHelp:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInitialPrompt:testInitialPromptString initialText:testInitialText interactionChoiceSetIDList:testInteractionChoiceSetIDList helpPrompt:testHelpPromptString timeoutPrompt:testTimeoutPromptString interactionMode:testInteractionMode timeout:testTimeout vrHelp:testVRHelp];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(equal(testInitialText));
- expect(testRequest.initialPrompt).to(equal([SDLTTSChunk textChunksFromString:testInitialPromptString]));
- expect(testRequest.interactionMode).to(equal(testInteractionMode));
- expect(testRequest.interactionChoiceSetIDList).to(equal(testInteractionChoiceSetIDList));
- expect(testRequest.helpPrompt).to(equal([SDLTTSChunk textChunksFromString:testHelpPromptString]));
- expect(testRequest.timeoutPrompt).to(equal([SDLTTSChunk textChunksFromString:testTimeoutPromptString]));
- expect(testRequest.timeout).to(equal(testTimeout));
- expect(testRequest.vrHelp).to(equal(testVRHelp));
- expect(testRequest.interactionLayout).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInitialChunks:testInitialPrompt initialText:testInitialText interactionChoiceSetIDList:testInteractionChoiceSetIDList helpChunks:testHelpPrompt timeoutChunks:testTimeoutPrompt interactionMode:testInteractionMode timeout:testTimeout vrHelp:testVRHelp];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(equal(testInitialText));
- expect(testRequest.initialPrompt).to(equal(testInitialPrompt));
- expect(testRequest.interactionMode).to(equal(testInteractionMode));
- expect(testRequest.interactionChoiceSetIDList).to(equal(testInteractionChoiceSetIDList));
- expect(testRequest.helpPrompt).to(equal(testHelpPrompt));
- expect(testRequest.timeoutPrompt).to(equal(testTimeoutPrompt));
- expect(testRequest.timeout).to(equal(testTimeout));
- expect(testRequest.vrHelp).to(equal(testVRHelp));
- expect(testRequest.interactionLayout).to(beNil());
- expect(testRequest.cancelID).to(beNil());
- });
-
- it(@"Should initialize correctly with initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:interactionLayout:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLPerformInteraction alloc] initWithInitialChunks:testInitialPrompt initialText:testInitialText interactionChoiceSetIDList:testInteractionChoiceSetIDList helpChunks:testHelpPrompt timeoutChunks:testTimeoutPrompt interactionMode:testInteractionMode timeout:testTimeout vrHelp:testVRHelp interactionLayout:testinteractionLayout];
- #pragma clang diagnostic pop
-
- expect(testRequest.initialText).to(equal(testInitialText));
- expect(testRequest.initialPrompt).to(equal(testInitialPrompt));
- expect(testRequest.interactionMode).to(equal(testInteractionMode));
- expect(testRequest.interactionChoiceSetIDList).to(equal(testInteractionChoiceSetIDList));
- expect(testRequest.helpPrompt).to(equal(testHelpPrompt));
- expect(testRequest.timeoutPrompt).to(equal(testTimeoutPrompt));
- expect(testRequest.timeout).to(equal(testTimeout));
- expect(testRequest.vrHelp).to(equal(testVRHelp));
- expect(testRequest.interactionLayout).to(equal(testinteractionLayout));
- expect(testRequest.cancelID).to(beNil());
- });
});
afterEach(^{
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m
index 890cb9ff0..8fbea1f66 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m
@@ -41,29 +41,21 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.offset).to(equal(@987654321));
expect(testRequest.length).to(equal(@123456789));
expect(testRequest.crc).to(equal(0xffffffff));
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(equal(@"fileName"));
-#pragma clang diagnostic pop
});
it(@"Should get and set correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
@{ SDLRPCParameterNameSyncFileName:@"fileName",
- SDLRPCParameterNameFileType:SDLFileTypeJPEG,
- SDLRPCParameterNamePersistentFile:@YES,
- SDLRPCParameterNameSystemFile:@NO,
- SDLRPCParameterNameOffset:@987654321,
- SDLRPCParameterNameLength:@123456789,
+ SDLRPCParameterNameFileType:SDLFileTypeJPEG,
+ SDLRPCParameterNamePersistentFile:@YES,
+ SDLRPCParameterNameSystemFile:@NO,
+ SDLRPCParameterNameOffset:@987654321,
+ SDLRPCParameterNameLength:@123456789,
SDLRPCParameterNameCRC:@0xffffffff},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNamePutFile}} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLPutFile* testRequest = [[SDLPutFile alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNamePutFile}};
+ SDLPutFile *testRequest = [[SDLPutFile alloc] initWithDictionary:dict];
+
expect(testRequest.sdlFileName).to(equal(@"fileName"));
expect(testRequest.fileType).to(equal(SDLFileTypeJPEG));
expect(testRequest.persistentFile).to(equal(@YES));
@@ -71,11 +63,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.offset).to(equal(@987654321));
expect(testRequest.length).to(equal(@123456789));
expect(testRequest.crc).to(equal(@0xffffffff));
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(equal(@"fileName"));
-#pragma clang diagnostic pop
});
});
@@ -114,11 +101,6 @@ describe(@"initializers", ^{
expect(testRequest.length).to(beNil());
expect(testRequest.crc).to(beNil());
expect(testRequest.bulkData).to(beNil());
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(beNil());
-#pragma clang diagnostic pop
});
context(@"initWithFileName:fileType:", ^{
@@ -132,11 +114,6 @@ describe(@"initializers", ^{
expect(testRequest.length).to(beNil());
expect(testRequest.crc).to(beNil());
expect(testRequest.bulkData).to(beNil());
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(equal(@"fileName"));
-#pragma clang diagnostic pop
});
context(@"initWithFileName:fileType:persistentFile:", ^{
@@ -150,32 +127,6 @@ describe(@"initializers", ^{
expect(testRequest.length).to(beNil());
expect(testRequest.crc).to(beNil());
expect(testRequest.bulkData).to(beNil());
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(equal(@"fileName"));
-#pragma clang diagnostic pop
- });
-
- context(@"initWithFileName:fileType:persistentFile:systemFile:offset:length:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLPutFile *testRequest = [[SDLPutFile alloc] initWithFileName:@"fileName" fileType:SDLFileTypeMP3 persistentFile:true systemFile:true offset:45 length:34];
-#pragma clang diagnostic pop
-
- expect(testRequest.sdlFileName).to(equal(@"fileName"));
- expect(testRequest.fileType).to(equal(SDLFileTypeMP3));
- expect(testRequest.persistentFile).to(beTrue());
- expect(testRequest.systemFile).to(beTrue());
- expect(testRequest.offset).to(equal(@45));
- expect(testRequest.length).to(equal(34));
- expect(testRequest.crc).to(beNil());
- expect(testRequest.bulkData).to(beNil());
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(equal(@"fileName"));
-#pragma clang diagnostic pop
});
context(@"initWithFileName:fileType:persistentFile:systemFile:offset:length:crc:", ^{
@@ -189,11 +140,6 @@ describe(@"initializers", ^{
expect(testRequest.length).to(equal(@34));
expect(testRequest.crc).to(equal(0xffffffff));
expect(testRequest.bulkData).to(beNil());
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(equal(@"fileName"));
-#pragma clang diagnostic pop
});
context(@"initWithFileName:fileType:persistentFile:systemFile:offset:length:bulkData:", ^{
@@ -210,11 +156,6 @@ describe(@"initializers", ^{
expect(testRequest.length).to(equal(@4));
expect(testRequest.bulkData).to(equal(testFileData));
expect(testRequest.crc).to(equal(testFileCRC32Checksum));
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRequest.syncFileName).to(equal(@"fileName"));
-#pragma clang diagnostic pop
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
index a867ecef6..ae5adf8ad 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
@@ -17,7 +17,6 @@
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
#import "SDLRegisterAppInterface.h"
-#import "SDLSyncMsgVersion.h"
#import "SDLMsgVersion.h"
#import "SDLTemplateColorScheme.h"
#import "SDLTTSChunk.h"
@@ -29,8 +28,8 @@ describe(@"RegisterAppInterface Tests", ^{
__block SDLRegisterAppInterface *testRegisterAppInterface = nil;
__block NSString *appName = @"app56";
__block NSString *appId = @"123456789";
- __block NSString *fullAppId = @"123-e4567-e89b-12d3-a456-426655440000";
- __block NSString *expectedAppId = @"123e4567e8";
+ __block NSString *fullAppId = @"e5bafdfa-f921-11ea-adc1-0242ac120002";
+ __block NSString *expectedAppId = @"e5bafdfaf9";
__block NSString *shortAppName = @"whatisanngn";
__block NSString *resumeHash = @"gercd35grw2";
__block NSString *vrSynonyms = @"app56";
@@ -38,27 +37,15 @@ describe(@"RegisterAppInterface Tests", ^{
__block NSArray<SDLAppHMIType> *appTypes = @[SDLAppHMITypeMedia, SDLAppHMITypeNavigation, SDLAppHMITypeInformation];
__block SDLLanguage language = SDLLanguageElGr;
__block SDLLanguage hmiDisplayLanguage = SDLLanguageArSa;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLSyncMsgVersion *version = nil;
-#pragma clang diagnostic pop
__block SDLMsgVersion *msgVersion = nil;
__block SDLTTSChunk *chunk = nil;
__block SDLDeviceInfo *info = nil;
__block SDLAppInfo *appInfo = nil;
__block SDLTemplateColorScheme *colorScheme = nil;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLSyncMsgVersion *currentSyncMsgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:6 minorVersion:0 patchVersion:0];
-#pragma clang diagnostic pop
- __block SDLMsgVersion * currentSDLMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:6 minorVersion:0 patchVersion:0];
+ __block SDLMsgVersion * currentSDLMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:7 minorVersion:0 patchVersion:0];
beforeEach(^{
testRegisterAppInterface = nil;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- version = [[SDLSyncMsgVersion alloc] initWithMajorVersion:0 minorVersion:0 patchVersion:0];
-#pragma clang diagnostic pop
msgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:0 minorVersion:0 patchVersion:0];
chunk = [[SDLTTSChunk alloc] init];
info = [[SDLDeviceInfo alloc] init];
@@ -68,10 +55,6 @@ describe(@"RegisterAppInterface Tests", ^{
it(@"Should set and get correctly", ^ {
testRegisterAppInterface = [[SDLRegisterAppInterface alloc] init];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRegisterAppInterface.syncMsgVersion = version;
-#pragma clang diagnostic pop
testRegisterAppInterface.appName = appName;
testRegisterAppInterface.ttsName = @[chunk];
testRegisterAppInterface.ngnMediaScreenAppName = shortAppName;
@@ -87,12 +70,8 @@ describe(@"RegisterAppInterface Tests", ^{
testRegisterAppInterface.appInfo = appInfo;
testRegisterAppInterface.dayColorScheme = colorScheme;
testRegisterAppInterface.nightColorScheme = colorScheme;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(version));
-#pragma clang diagnostic pop
testRegisterAppInterface.sdlMsgVersion = msgVersion;
- expect(testRegisterAppInterface.sdlMsgVersion).to(equal(msgVersion));
+
expect(testRegisterAppInterface.appName).to(equal(appName));
expect(testRegisterAppInterface.ttsName).to(contain(chunk));
expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
@@ -108,15 +87,15 @@ describe(@"RegisterAppInterface Tests", ^{
expect(testRegisterAppInterface.appInfo).to(equal(appInfo));
expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.sdlMsgVersion).to(equal(msgVersion));
});
describe(@"Setting With Dictionary", ^{
- __block NSDictionary *dict = nil;
beforeEach( ^{
- dict = @{SDLRPCParameterNameRequest:
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
@{SDLRPCParameterNameSyncMessageVersion:@{
- SDLRPCParameterNameMajorVersion: @6,
+ SDLRPCParameterNameMajorVersion: @7,
SDLRPCParameterNameMinorVersion: @0,
SDLRPCParameterNamePatchVersion: @0
},
@@ -137,46 +116,9 @@ describe(@"RegisterAppInterface Tests", ^{
SDLRPCParameterNameNightColorScheme: colorScheme,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}};
- });
-
- it(@"Should get correctly when initialized with a dictionary and get syncMsgVersion first", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRegisterAppInterface* testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
-#pragma clang diagnostic pop
- expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
- expect(testRegisterAppInterface.appName).to(match(appName));
- expect(testRegisterAppInterface.ttsName).to(equal([@[chunk] mutableCopy]));
- expect(testRegisterAppInterface.ngnMediaScreenAppName).to(match(shortAppName));
- expect(testRegisterAppInterface.vrSynonyms).to(equal(@[vrSynonyms]));
- expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
- expect(testRegisterAppInterface.languageDesired).to(equal(SDLLanguageNoNo));
- expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(SDLLanguagePtPt));
- expect(testRegisterAppInterface.appHMIType).to(equal(appTypes));
- expect(testRegisterAppInterface.hashID).to(match(resumeHash));
- expect(testRegisterAppInterface.deviceInfo).to(equal(info));
- expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
- expect(testRegisterAppInterface.appID).to(match(appId));
- expect(testRegisterAppInterface.appInfo).to(equal(appInfo));
- expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
- expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
- });
+ SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithDictionary:dict];
- it(@"Should get correctly when initialized with a dictionary and sdlMsgVersion first", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRegisterAppInterface* testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testRegisterAppInterface.appName).to(match(appName));
expect(testRegisterAppInterface.ttsName).to(equal([@[chunk] mutableCopy]));
expect(testRegisterAppInterface.ngnMediaScreenAppName).to(match(shortAppName));
@@ -198,10 +140,7 @@ describe(@"RegisterAppInterface Tests", ^{
describe(@"initializers", ^{
it(@"init", ^{
testRegisterAppInterface = [[SDLRegisterAppInterface alloc] init];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(version));
-#pragma clang diagnostic pop
+
expect(testRegisterAppInterface.sdlMsgVersion).to(beNil());
expect(testRegisterAppInterface.appName).to(beNil());
expect(testRegisterAppInterface.ttsName).to(beNil());
@@ -231,14 +170,10 @@ describe(@"RegisterAppInterface Tests", ^{
testLifecyleConfiguration.voiceRecognitionCommandNames = @[vrSynonyms];
testLifecyleConfiguration.dayColorScheme = colorScheme;
testLifecyleConfiguration.nightColorScheme = colorScheme;
-
SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithLifecycleConfiguration:testLifecyleConfiguration];
+
expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
expect(testRegisterAppInterface.appID).to(match(expectedAppId));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
expect(testRegisterAppInterface.appName).to(equal(appName));
expect(testRegisterAppInterface.ttsName).to(contain(chunk));
@@ -263,10 +198,6 @@ describe(@"RegisterAppInterface Tests", ^{
expect(testRegisterAppInterface.fullAppID).to(beNil());
expect(testRegisterAppInterface.appID).to(match(appId));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
expect(testRegisterAppInterface.appName).to(equal(appName));
expect(testRegisterAppInterface.ttsName).to(beNil());
@@ -283,71 +214,11 @@ describe(@"RegisterAppInterface Tests", ^{
expect(testRegisterAppInterface.nightColorScheme).to(beNil());
});
- it(@"initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName];
-#pragma clang diagnostic pop
- expect(testRegisterAppInterface.fullAppID).to(beNil());
- expect(testRegisterAppInterface.appID).to(match(appId));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
-#pragma clang diagnostic pop
- expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
- expect(testRegisterAppInterface.appName).to(equal(appName));
- expect(testRegisterAppInterface.ttsName).to(beNil());
- expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
- expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeMedia));
- expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeNavigation));
- expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeInformation));
- expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
- expect(testRegisterAppInterface.hashID).to(beNil());
- expect(testRegisterAppInterface.languageDesired).to(equal(language));
- expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(language));
- expect(testRegisterAppInterface.vrSynonyms).to(beNil());
- expect(testRegisterAppInterface.deviceInfo).toNot(beNil());
- expect(testRegisterAppInterface.appInfo).toNot(beNil());
- expect(testRegisterAppInterface.dayColorScheme).to(beNil());
- expect(testRegisterAppInterface.nightColorScheme).to(beNil());
- });
- it(@"initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName ttsName:@[chunk] vrSynonyms:@[vrSynonyms] hmiDisplayLanguageDesired:hmiDisplayLanguage resumeHash:resumeHash];
-#pragma clang diagnostic pop
- expect(testRegisterAppInterface.fullAppID).to(beNil());
- expect(testRegisterAppInterface.appID).to(match(appId));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
-#pragma clang diagnostic pop
- expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
- expect(testRegisterAppInterface.appName).to(equal(appName));
- expect(testRegisterAppInterface.ttsName).to(contain(chunk));
- expect(testRegisterAppInterface.ngnMediaScreenAppName).to(equal(shortAppName));
- expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeMedia));
- expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeNavigation));
- expect(testRegisterAppInterface.appHMIType).to(contain(SDLAppHMITypeInformation));
- expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
- expect(testRegisterAppInterface.hashID).to(match(resumeHash));
- expect(testRegisterAppInterface.languageDesired).to(equal(language));
- expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(hmiDisplayLanguage));
- expect(testRegisterAppInterface.vrSynonyms).to(contain(vrSynonyms));
- expect(testRegisterAppInterface.deviceInfo).toNot(beNil());
- expect(testRegisterAppInterface.appInfo).toNot(beNil());
- expect(testRegisterAppInterface.dayColorScheme).to(beNil());
- expect(testRegisterAppInterface.nightColorScheme).to(beNil());
- });
it(@"initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme:", ^{
SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId fullAppId:fullAppId languageDesired:language isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName ttsName:@[chunk] vrSynonyms:@[vrSynonyms] hmiDisplayLanguageDesired:hmiDisplayLanguage resumeHash:resumeHash dayColorScheme:colorScheme nightColorScheme:colorScheme];
expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
expect(testRegisterAppInterface.appID).to(match(appId));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testRegisterAppInterface.syncMsgVersion).to(equal(currentSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
expect(testRegisterAppInterface.appName).to(equal(appName));
expect(testRegisterAppInterface.ttsName).to(contain(chunk));
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m
index 58a86d751..adfc1a4bb 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m
@@ -55,17 +55,14 @@ describe(@"Getter/Setter Tests", ^ {
describe(@"Initializing", ^{
it(@"Should initialize correctly with a dictionary", ^ {
- NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameScrollableMessageBody:testScrollableMessageBody,
- SDLRPCParameterNameTimeout:@(testTimeout),
- SDLRPCParameterNameSoftButtons:testSoftButtons,
- SDLRPCParameterNameCancelID:@(testCancelID)},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameScrollableMessage}};
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameScrollableMessageBody:testScrollableMessageBody,
+ SDLRPCParameterNameTimeout:@(testTimeout),
+ SDLRPCParameterNameSoftButtons:testSoftButtons,
+ SDLRPCParameterNameCancelID:@(testCancelID)},
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameScrollableMessage}};
testRequest = [[SDLScrollableMessage alloc] initWithDictionary:dict];
- #pragma clang diagnostic pop
expect(testRequest.scrollableMessageBody).to(equal(testScrollableMessageBody));
expect(testRequest.timeout).to(equal(testTimeout));
@@ -91,18 +88,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.softButtons).to(equal(testSoftButtons));
expect(testRequest.cancelID).to(equal(testCancelID));
});
-
- it(@"Should initialize correctly with initWithMessage:timeout:softButtons:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest = [[SDLScrollableMessage alloc] initWithMessage:testScrollableMessageBody timeout:testTimeout softButtons:testSoftButtons];
- #pragma clang diagnostic pop
-
- expect(testRequest.scrollableMessageBody).to(equal(testScrollableMessageBody));
- expect(testRequest.timeout).to(equal(testTimeout));
- expect(testRequest.softButtons).to(equal(testSoftButtons));
- expect(testRequest.cancelID).to(beNil());
- });
});
afterEach(^{
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m
index e875e411c..f8ab52596 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m
@@ -10,75 +10,114 @@
#import "SDLImage.h"
#import "SDLKeyboardProperties.h"
+#import "SDLMenuLayout.h"
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
+#import "SDLSeatLocation.h"
#import "SDLSetGlobalProperties.h"
#import "SDLTTSChunk.h"
#import "SDLVrHelpItem.h"
-#import "SDLSeatLocation.h"
QuickSpecBegin(SDLSetGlobalPropertiesSpec)
-SDLTTSChunk* chunk1 = [[SDLTTSChunk alloc] init];
-SDLTTSChunk* chunk2 = [[SDLTTSChunk alloc] init];
-SDLVRHelpItem* help = [[SDLVRHelpItem alloc] init];
-SDLImage* image = [[SDLImage alloc] init];
-SDLKeyboardProperties* keyboard = [[SDLKeyboardProperties alloc] init];
+NSString *menuTitle = @"TheNewMenu";
+NSString *vrHelpTitle = @"vr";
+NSString *helpTest = @"TheHelpText";
+NSString *timeoutTest = @"timeout Test";
+SDLTTSChunk *chunk1 = [[SDLTTSChunk alloc] initWithText:@"chunk 1" type:SDLSpeechCapabilitiesText];
+SDLTTSChunk *chunk2 = [[SDLTTSChunk alloc] initWithText:@"chunk 2" type:SDLSpeechCapabilitiesText];
+SDLVRHelpItem *help = [[SDLVRHelpItem alloc] init];
+SDLImage *image = [[SDLImage alloc] init];
+SDLKeyboardProperties *keyboard = [[SDLKeyboardProperties alloc] init];
SDLSeatLocation *seatLocation = [[SDLSeatLocation alloc] init];
+SDLMenuLayout menuLayout = SDLMenuLayoutList;
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
- SDLSetGlobalProperties* testRequest = [[SDLSetGlobalProperties alloc] init];
+ SDLSetGlobalProperties *testRequest = [[SDLSetGlobalProperties alloc] init];
- testRequest.helpPrompt = [@[chunk1] mutableCopy];
- testRequest.timeoutPrompt = [@[chunk2] mutableCopy];
- testRequest.vrHelpTitle = @"vr";
- testRequest.vrHelp = [@[help] mutableCopy];
- testRequest.menuTitle = @"TheNewMenu";
+ testRequest.helpPrompt = @[chunk1];
+ testRequest.timeoutPrompt = @[chunk2];
+ testRequest.vrHelpTitle = vrHelpTitle;
+ testRequest.vrHelp = @[help];
+ testRequest.menuTitle = menuTitle;
testRequest.menuIcon = image;
testRequest.keyboardProperties = keyboard;
testRequest.userLocation = seatLocation;
+ testRequest.menuLayout = menuLayout;
- expect(testRequest.helpPrompt).to(equal([@[chunk1] mutableCopy]));
- expect(testRequest.timeoutPrompt).to(equal([@[chunk2] mutableCopy]));
+ expect(testRequest.helpPrompt).to(equal(@[chunk1]));
+ expect(testRequest.timeoutPrompt).to(equal(@[chunk2]));
expect(testRequest.vrHelpTitle).to(equal(@"vr"));
- expect(testRequest.vrHelp).to(equal([@[help] mutableCopy]));
+ expect(testRequest.vrHelp).to(equal(@[help]));
expect(testRequest.menuTitle).to(equal(@"TheNewMenu"));
expect(testRequest.menuIcon).to(equal(image));
expect(testRequest.keyboardProperties).to(equal(keyboard));
expect(testRequest.userLocation).to(equal(seatLocation));
+ expect(testRequest.menuLayout).to(equal(menuLayout));
});
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameHelpPrompt:[@[chunk1] mutableCopy],
- SDLRPCParameterNameTimeoutPrompt:[@[chunk2] mutableCopy],
- SDLRPCParameterNameVRHelpTitle:@"vr",
- SDLRPCParameterNameVRHelp:[@[help] mutableCopy],
- SDLRPCParameterNameMenuTitle:@"TheNewMenu",
- SDLRPCParameterNameUserLocation: seatLocation,
- SDLRPCParameterNameMenuIcon:image,
- SDLRPCParameterNameKeyboardProperties:keyboard},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetGlobalProperties}} mutableCopy];
+ it(@"Should initialize correctly with a dictionary", ^ {
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameHelpPrompt:@[chunk1],
+ SDLRPCParameterNameTimeoutPrompt:@[chunk2],
+ SDLRPCParameterNameVRHelpTitle:@"vr",
+ SDLRPCParameterNameVRHelp:@[help],
+ SDLRPCParameterNameMenuTitle:@"TheNewMenu",
+ SDLRPCParameterNameUserLocation: seatLocation,
+ SDLRPCParameterNameMenuIcon:image,
+ SDLRPCParameterNameKeyboardProperties:keyboard,
+ SDLRPCParameterNameMenuLayout:menuLayout
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetGlobalProperties}};
+ SDLSetGlobalProperties *testRequest = [[SDLSetGlobalProperties alloc] initWithDictionary:dict];
+
+ expect(testRequest.helpPrompt).to(equal(@[chunk1]));
+ expect(testRequest.timeoutPrompt).to(equal(@[chunk2]));
+ expect(testRequest.vrHelpTitle).to(equal(vrHelpTitle));
+ expect(testRequest.vrHelp).to(equal(@[help]));
+ expect(testRequest.menuTitle).to(equal(menuTitle));
+ expect(testRequest.menuIcon).to(equal(image));
+ expect(testRequest.keyboardProperties).to(equal(keyboard));
+ expect(testRequest.userLocation).to(equal(seatLocation));
+ expect(testRequest.menuLayout).to(equal(menuLayout));
+ });
+
+ it(@"Should init correctly with initWithUserLocation:helpPrompt:timeoutPrompt:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:menuLayout:", ^ {
+ SDLSetGlobalProperties *testRequest = [[SDLSetGlobalProperties alloc] initWithUserLocation:seatLocation helpPrompt:[SDLTTSChunk textChunksFromString:helpTest] timeoutPrompt:[SDLTTSChunk textChunksFromString:timeoutTest] vrHelpTitle:vrHelpTitle vrHelp:@[help] menuTitle:menuTitle menuIcon:image keyboardProperties:keyboard menuLayout:menuLayout];
+
+ expect(testRequest.helpPrompt).to(equal([SDLTTSChunk textChunksFromString:helpTest]));
+ expect(testRequest.timeoutPrompt).to(equal([SDLTTSChunk textChunksFromString:timeoutTest]));
+ expect(testRequest.vrHelpTitle).to(equal(vrHelpTitle));
+ expect(testRequest.vrHelp).to(equal(@[help]));
+ expect(testRequest.menuTitle).to(equal(menuTitle));
+ expect(testRequest.menuIcon).to(equal(image));
+ expect(testRequest.keyboardProperties).to(equal(keyboard));
+ expect(testRequest.userLocation).to(equal(seatLocation));
+ expect(testRequest.menuLayout).to(equal(menuLayout));
+ });
+
+ it(@"Should init correctly with initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:menuLayout:", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSetGlobalProperties* testRequest = [[SDLSetGlobalProperties alloc] initWithDictionary:dict];
+ SDLSetGlobalProperties *testRequest = [[SDLSetGlobalProperties alloc] initWithHelpText:helpTest timeoutText:timeoutTest vrHelpTitle:vrHelpTitle vrHelp:@[help] menuTitle:menuTitle menuIcon:image keyboardProperties:keyboard menuLayout:menuLayout];
#pragma clang diagnostic pop
-
- expect(testRequest.helpPrompt).to(equal([@[chunk1] mutableCopy]));
- expect(testRequest.timeoutPrompt).to(equal([@[chunk2] mutableCopy]));
- expect(testRequest.vrHelpTitle).to(equal(@"vr"));
- expect(testRequest.vrHelp).to(equal([@[help] mutableCopy]));
- expect(testRequest.menuTitle).to(equal(@"TheNewMenu"));
+
+ expect(testRequest.helpPrompt).to(equal([SDLTTSChunk textChunksFromString:helpTest]));
+ expect(testRequest.timeoutPrompt).to(equal([SDLTTSChunk textChunksFromString:timeoutTest]));
+ expect(testRequest.vrHelpTitle).to(equal(vrHelpTitle));
+ expect(testRequest.vrHelp).to(equal(@[help]));
+ expect(testRequest.menuTitle).to(equal(menuTitle));
expect(testRequest.menuIcon).to(equal(image));
expect(testRequest.keyboardProperties).to(equal(keyboard));
- expect(testRequest.userLocation).to(equal(seatLocation));
+ expect(testRequest.userLocation).to(beNil());
+ expect(testRequest.menuLayout).to(equal(menuLayout));
});
it(@"Should return nil if not set", ^ {
- SDLSetGlobalProperties* testRequest = [[SDLSetGlobalProperties alloc] init];
+ SDLSetGlobalProperties *testRequest = [[SDLSetGlobalProperties alloc] init];
expect(testRequest.helpPrompt).to(beNil());
expect(testRequest.timeoutPrompt).to(beNil());
@@ -88,6 +127,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.menuIcon).to(beNil());
expect(testRequest.keyboardProperties).to(beNil());
expect(testRequest.userLocation).to(beNil());
+ expect(testRequest.menuLayout).to(beNil());
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m
index 255ce747d..721ba0b86 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m
@@ -27,18 +27,16 @@ describe(@"SetMediaClocktimer Spec", ^ {
describe(@"when initialized", ^{
it(@"should properly initialize with initWithDictionary:", ^{
- NSMutableDictionary* dict = [@{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameStartTime:time1,
- SDLRPCParameterNameEndTime:time2,
- SDLRPCParameterNameUpdateMode:testUpdateMode,
- SDLRPCParameterNameAudioStreamingIndicator:testIndicator
- },
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetMediaClockTimer}} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSetMediaClockTimer* testRequest = [[SDLSetMediaClockTimer alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameStartTime:time1,
+ SDLRPCParameterNameEndTime:time2,
+ SDLRPCParameterNameUpdateMode:testUpdateMode,
+ SDLRPCParameterNameAudioStreamingIndicator:testIndicator
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetMediaClockTimer}
+ };
+ SDLSetMediaClockTimer *testRequest = [[SDLSetMediaClockTimer alloc] initWithDictionary:dict];
expect(testRequest.startTime).to(equal(time1));
expect(testRequest.endTime).to(equal(time2));
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowAppMenuSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowAppMenuSpec.m
index 4557c014a..d88e335a9 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowAppMenuSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowAppMenuSpec.m
@@ -30,7 +30,7 @@ describe(@"Getter/Setter Tests", ^ {
it(@"Should get correctly when initialized with dictonary", ^ {
NSDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameMenuId:@4345645,
+ @{SDLRPCParameterNameMenuID:@4345645,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameShowAppMenu}} mutableCopy];
#pragma clang diagnostic push
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
index b69336d23..d7a6753f1 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
@@ -14,292 +14,287 @@
QuickSpecBegin(SDLSubscribeVehicleDataSpec)
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] init];
-
testRequest.accPedalPosition = @YES;
- testRequest.airbagStatus = @NO;
- testRequest.beltStatus = @NO;
+ testRequest.airbagStatus = @YES;
+ testRequest.beltStatus = @YES;
testRequest.bodyInformation = @YES;
testRequest.cloudAppVehicleID = @YES;
- testRequest.clusterModeStatus = @NO;
- testRequest.deviceStatus = @NO;
+ testRequest.clusterModeStatus = @YES;
+ testRequest.deviceStatus = @YES;
testRequest.driverBraking = @YES;
testRequest.eCallInfo = @YES;
testRequest.electronicParkBrakeStatus = @YES;
testRequest.emergencyEvent = @YES;
testRequest.engineOilLife = @YES;
- testRequest.engineTorque = @NO;
+ testRequest.engineTorque = @YES;
testRequest.externalTemperature = @YES;
- testRequest.fuelLevel = @NO;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testRequest.fuelLevel = @YES;
testRequest.fuelLevel_State = @YES;
+#pragma clang diagnostic pop
testRequest.fuelRange = @YES;
+ testRequest.gearStatus = @YES;
testRequest.gps = @YES;
+ testRequest.handsOffSteering = @YES;
testRequest.headLampStatus = @YES;
- testRequest.instantFuelConsumption = @NO;
+ testRequest.instantFuelConsumption = @YES;
testRequest.myKey = @YES;
testRequest.odometer = @YES;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testRequest.prndl = @YES;
+#pragma clang diagnostic pop
testRequest.rpm = @YES;
- testRequest.speed = @NO;
- testRequest.steeringWheelAngle = @NO;
- testRequest.tirePressure = @NO;
+ testRequest.speed = @YES;
+ testRequest.stabilityControlsStatus = @YES;
+ testRequest.steeringWheelAngle = @YES;
+ testRequest.tirePressure = @YES;
testRequest.turnSignal = @YES;
- testRequest.wiperStatus = @NO;
+ testRequest.windowStatus = @YES;
+ testRequest.wiperStatus = @YES;
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@NO));
- expect(testRequest.beltStatus).to(equal(@NO));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@NO));
- expect(testRequest.deviceStatus).to(equal(@NO));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@NO));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@NO));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@NO));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@NO));
- expect(testRequest.steeringWheelAngle).to(equal(@NO));
- expect(testRequest.tirePressure).to(equal(@NO));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@NO));
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
- it(@"Should get correctly when initialized with a dictionary", ^ {
+ context(@"initWithDictionary:", ^{
NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameAccelerationPedalPosition:@YES,
- SDLRPCParameterNameAirbagStatus:@YES,
- SDLRPCParameterNameBeltStatus:@YES,
- SDLRPCParameterNameBodyInformation:@YES,
- SDLRPCParameterNameCloudAppVehicleID:@YES,
- SDLRPCParameterNameClusterModeStatus:@YES,
- SDLRPCParameterNameDeviceStatus:@YES,
- SDLRPCParameterNameDriverBraking:@YES,
- SDLRPCParameterNameECallInfo:@YES,
- SDLRPCParameterNameElectronicParkBrakeStatus: @YES,
- SDLRPCParameterNameEmergencyEvent:@NO,
- SDLRPCParameterNameEngineOilLife:@YES,
- SDLRPCParameterNameEngineTorque:@YES,
- SDLRPCParameterNameExternalTemperature:@NO,
- SDLRPCParameterNameFuelLevel:@YES,
- SDLRPCParameterNameFuelLevelState:@YES,
- SDLRPCParameterNameFuelRange:@YES,
- SDLRPCParameterNameGPS:@YES,
- SDLRPCParameterNameHeadLampStatus:@YES,
- SDLRPCParameterNameInstantFuelConsumption:@YES,
- SDLRPCParameterNameMyKey:@YES,
- SDLRPCParameterNameOdometer:@YES,
- SDLRPCParameterNamePRNDL:@YES,
- SDLRPCParameterNameRPM:@YES,
- SDLRPCParameterNameSpeed:@YES,
- SDLRPCParameterNameSteeringWheelAngle:@NO,
- SDLRPCParameterNameTirePressure:@YES,
- SDLRPCParameterNameTurnSignal:@NO,
- SDLRPCParameterNameWiperStatus:@NO},
+ @{SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAccelerationPedalPosition:@YES,
+ SDLRPCParameterNameAirbagStatus:@YES,
+ SDLRPCParameterNameBeltStatus:@YES,
+ SDLRPCParameterNameBodyInformation:@YES,
+ SDLRPCParameterNameCloudAppVehicleID:@YES,
+ SDLRPCParameterNameClusterModeStatus:@YES,
+ SDLRPCParameterNameDeviceStatus:@YES,
+ SDLRPCParameterNameDriverBraking:@YES,
+ SDLRPCParameterNameECallInfo:@YES,
+ SDLRPCParameterNameElectronicParkBrakeStatus: @YES,
+ SDLRPCParameterNameEmergencyEvent:@YES,
+ SDLRPCParameterNameEngineOilLife:@YES,
+ SDLRPCParameterNameEngineTorque:@YES,
+ SDLRPCParameterNameExternalTemperature:@YES,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNameFuelLevel:@YES,
+ SDLRPCParameterNameFuelLevelState:@YES,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameFuelRange:@YES,
+ SDLRPCParameterNameGearStatus:@YES,
+ SDLRPCParameterNameGPS:@YES,
+ SDLRPCParameterNameHandsOffSteering:@YES,
+ SDLRPCParameterNameHeadLampStatus:@YES,
+ SDLRPCParameterNameInstantFuelConsumption:@YES,
+ SDLRPCParameterNameMyKey:@YES,
+ SDLRPCParameterNameOdometer:@YES,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNamePRNDL:@YES,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameRPM:@YES,
+ SDLRPCParameterNameSpeed:@YES,
+ SDLRPCParameterNameStabilityControlsStatus:@YES,
+ SDLRPCParameterNameSteeringWheelAngle:@YES,
+ SDLRPCParameterNameTirePressure:@YES,
+ SDLRPCParameterNameTurnSignal:@YES,
+ SDLRPCParameterNameWindowStatus:@YES,
+ SDLRPCParameterNameWiperStatus:@YES,
+ },
SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeVehicleData}};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
-
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@NO));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@NO));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@NO));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@NO));
- expect(testRequest.wiperStatus).to(equal(@NO));
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
});
-describe(@"initializers", ^{
+describe(@"test initializers", ^{
context(@"init", ^{
SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] init];
- expect(testRequest.accPedalPosition).to(beNil());
- expect(testRequest.airbagStatus).to(beNil());
- expect(testRequest.beltStatus).to(beNil());
- expect(testRequest.bodyInformation).to(beNil());
- expect(testRequest.cloudAppVehicleID).to(beNil());
- expect(testRequest.clusterModeStatus).to(beNil());
- expect(testRequest.deviceStatus).to(beNil());
- expect(testRequest.driverBraking).to(beNil());
- expect(testRequest.eCallInfo).to(beNil());
- expect(testRequest.electronicParkBrakeStatus).to(beNil());
- expect(testRequest.emergencyEvent).to(beNil());
- expect(testRequest.engineOilLife).to(beNil());
- expect(testRequest.engineTorque).to(beNil());
- expect(testRequest.externalTemperature).to(beNil());
- expect(testRequest.fuelLevel).to(beNil());
- expect(testRequest.fuelLevel_State).to(beNil());
- expect(testRequest.fuelRange).to(beNil());
- expect(testRequest.gps).to(beNil());
- expect(testRequest.headLampStatus).to(beNil());
- expect(testRequest.instantFuelConsumption).to(beNil());
- expect(testRequest.myKey).to(beNil());
- expect(testRequest.odometer).to(beNil());
- expect(testRequest.prndl).to(beNil());
- expect(testRequest.rpm).to(beNil());
- expect(testRequest.speed).to(beNil());
- expect(testRequest.steeringWheelAngle).to(beNil());
- expect(testRequest.tirePressure).to(beNil());
- expect(testRequest.turnSignal).to(beNil());
- expect(testRequest.wiperStatus).to(beNil());
- });
-
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
- SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
-
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@YES));
- });
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
-
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@NO));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@YES));
- #pragma clang diagnostic pop
+ it(@"expect all properties to be nil", ^{
+ expect(testRequest.accPedalPosition).to(beNil());
+ expect(testRequest.airbagStatus).to(beNil());
+ expect(testRequest.beltStatus).to(beNil());
+ expect(testRequest.bodyInformation).to(beNil());
+ expect(testRequest.cloudAppVehicleID).to(beNil());
+ expect(testRequest.clusterModeStatus).to(beNil());
+ expect(testRequest.deviceStatus).to(beNil());
+ expect(testRequest.driverBraking).to(beNil());
+ expect(testRequest.eCallInfo).to(beNil());
+ expect(testRequest.electronicParkBrakeStatus).to(beNil());
+ expect(testRequest.emergencyEvent).to(beNil());
+ expect(testRequest.engineOilLife).to(beNil());
+ expect(testRequest.engineTorque).to(beNil());
+ expect(testRequest.externalTemperature).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(beNil());
+ expect(testRequest.gearStatus).to(beNil());
+ expect(testRequest.gps).to(beNil());
+ expect(testRequest.handsOffSteering).to(beNil());
+ expect(testRequest.headLampStatus).to(beNil());
+ expect(testRequest.instantFuelConsumption).to(beNil());
+ expect(testRequest.myKey).to(beNil());
+ expect(testRequest.odometer).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(beNil());
+ expect(testRequest.speed).to(beNil());
+ expect(testRequest.stabilityControlsStatus).to(beNil());
+ expect(testRequest.steeringWheelAngle).to(beNil());
+ expect(testRequest.tirePressure).to(beNil());
+ expect(testRequest.turnSignal).to(beNil());
+ expect(testRequest.windowStatus).to(beNil());
+ expect(testRequest.wiperStatus).to(beNil());
+ });
});
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES emergencyEvent:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:NO gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES wiperStatus:YES];
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
+ SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@NO));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@NO));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@NO));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@NO));
- expect(testRequest.fuelRange).to(equal(@NO));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@NO));
- expect(testRequest.wiperStatus).to(equal(@YES));
- #pragma clang diagnostic pop
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
- context(@"Should set and get Generic Network Signal Data", ^{
+ context(@"should set OEM Custom Vehicle Data", ^{
SDLSubscribeVehicleData *testRequest = [[SDLSubscribeVehicleData alloc] init];
-
[testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:NO];
[testRequest setOEMCustomVehicleData:@"customVehicleData1" withVehicleDataState:YES];
- expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(beFalse());
- expect([testRequest getOEMCustomVehicleData:@"customVehicleData1"]).to(beTrue());
-
+ it(@"expect OEM Custom Vehicle Data to be set properly", ^{
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@NO));
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData1"]).to(equal(@YES));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubtleAlertSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubtleAlertSpec.m
new file mode 100644
index 000000000..e91352d48
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubtleAlertSpec.m
@@ -0,0 +1,107 @@
+//
+// SDLSubtleAlertSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 7/28/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLImage.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+#import "SDLSoftButton.h"
+#import "SDLSubtleAlert.h"
+#import "SDLTTSChunk.h"
+
+QuickSpecBegin(SDLSubtleAlertSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ __block SDLSubtleAlert *testSubtleAlert = nil;
+ __block NSString *testAlertText1 = nil;
+ __block NSString *testAlertText2 = nil;
+ __block SDLImage *testAlertIcon = nil;
+ __block NSArray<SDLTTSChunk *> *testTTSChunks = nil;
+ __block int testDuration = 5600;
+ __block NSArray<SDLSoftButton *> *testSoftButtons = nil;
+ __block int testCancelID = 34;
+
+ beforeEach(^{
+ testAlertText1 = @"test alert text 1";
+ testAlertText2 = @"test alert text 2";
+ testAlertIcon = [[SDLImage alloc] initWithStaticIconName:SDLStaticIconNameKey];
+ testTTSChunks = [SDLTTSChunk textChunksFromString:@"alert text"];
+ testSoftButtons = @[[[SDLSoftButton alloc] init]];
+ });
+
+ it(@"Should set and get correctly", ^{
+ testSubtleAlert = [[SDLSubtleAlert alloc] init];
+ testSubtleAlert.alertText1 = testAlertText1;
+ testSubtleAlert.alertText2 = testAlertText2;
+ testSubtleAlert.alertIcon = testAlertIcon;
+ testSubtleAlert.ttsChunks = testTTSChunks;
+ testSubtleAlert.duration = @(testDuration);
+ testSubtleAlert.softButtons = testSoftButtons;
+ testSubtleAlert.cancelID = @(testCancelID);
+
+ expect(testSubtleAlert.alertText1).to(equal(testAlertText1));
+ expect(testSubtleAlert.alertText2).to(equal(testAlertText2));
+ expect(testSubtleAlert.alertIcon).to(equal(testAlertIcon));
+ expect(testSubtleAlert.ttsChunks).to(equal(testTTSChunks));
+ expect(testSubtleAlert.duration).to(equal(testDuration));
+ expect(testSubtleAlert.softButtons).to(equal(testSoftButtons));
+ expect(testSubtleAlert.cancelID).to(equal(testCancelID));
+ });
+
+ it(@"Should initialize correctly with a dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:@{
+ SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAlertText1:testAlertText1,
+ SDLRPCParameterNameAlertText2:testAlertText2,
+ SDLRPCParameterNameAlertIcon:testAlertIcon,
+ SDLRPCParameterNameTTSChunks:testTTSChunks,
+ SDLRPCParameterNameDuration:@(testDuration),
+ SDLRPCParameterNameSoftButtons:testSoftButtons,
+ SDLRPCParameterNameCancelID:@(testCancelID)
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubtleAlert}};
+ testSubtleAlert = [[SDLSubtleAlert alloc] initWithDictionary:dict];
+
+ expect(testSubtleAlert.alertText1).to(equal(testAlertText1));
+ expect(testSubtleAlert.alertText2).to(equal(testAlertText2));
+ expect(testSubtleAlert.alertIcon).to(equal(testAlertIcon));
+ expect(testSubtleAlert.ttsChunks).to(equal(testTTSChunks));
+ expect(testSubtleAlert.duration).to(equal(testDuration));
+ expect(testSubtleAlert.softButtons).to(equal(testSoftButtons));
+ expect(testSubtleAlert.cancelID).to(equal(testCancelID));
+ });
+
+ it(@"Should initialize correctly with initWithAlertText1:alertText2:alertIcon:ttsChunks:duration:softButtons:cancelID:", ^{
+ testSubtleAlert = [[SDLSubtleAlert alloc] initWithAlertText1:testAlertText1 alertText2:testAlertText2 alertIcon:testAlertIcon ttsChunks:testTTSChunks duration:@(testDuration) softButtons:testSoftButtons cancelID:@(testCancelID)];
+
+ expect(testSubtleAlert.alertText1).to(equal(testAlertText1));
+ expect(testSubtleAlert.alertText2).to(equal(testAlertText2));
+ expect(testSubtleAlert.alertIcon).to(equal(testAlertIcon));
+ expect(testSubtleAlert.ttsChunks).to(equal(testTTSChunks));
+ expect(testSubtleAlert.duration).to(equal(testDuration));
+ expect(testSubtleAlert.softButtons).to(equal(testSoftButtons));
+ expect(testSubtleAlert.cancelID).to(equal(testCancelID));
+ });
+
+ it(@"Should return nil if not set", ^{
+ testSubtleAlert = [[SDLSubtleAlert alloc] init];
+
+ expect(testSubtleAlert.alertText1).to(beNil());
+ expect(testSubtleAlert.alertText2).to(beNil());
+ expect(testSubtleAlert.alertIcon).to(beNil());
+ expect(testSubtleAlert.ttsChunks).to(beNil());
+ expect(testSubtleAlert.duration).to(beNil());
+ expect(testSubtleAlert.softButtons).to(beNil());
+ expect(testSubtleAlert.cancelID).to(beNil());
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m
index 19954c463..ea86ebb89 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m
@@ -26,7 +26,7 @@ describe(@"Getter/Setter Tests", ^ {
@{SDLRPCParameterNameParameters:
@{SDLRPCParameterNameRequestType:SDLRequestTypeAuthenticationRequest,
SDLRPCParameterNameRequestSubType: testSubType,
- SDLRPCParameterNameFilename:testFileName},
+ SDLRPCParameterNameFileName:testFileName},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameSystemRequest}} mutableCopy];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
index 9795f6a29..2023224e9 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
@@ -14,10 +14,9 @@
QuickSpecBegin(SDLUnsubscribeVehicleDataSpec)
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
SDLUnsubscribeVehicleData* testRequest = [[SDLUnsubscribeVehicleData alloc] init];
-
testRequest.accPedalPosition = @YES;
testRequest.airbagStatus = @YES;
testRequest.beltStatus = @YES;
@@ -32,272 +31,318 @@ describe(@"Getter/Setter Tests", ^ {
testRequest.engineOilLife = @YES;
testRequest.engineTorque = @YES;
testRequest.externalTemperature = @YES;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testRequest.fuelLevel = @YES;
testRequest.fuelLevel_State = @YES;
+#pragma clang diagnostic pop
testRequest.fuelRange = @YES;
+ testRequest.gearStatus = @YES;
testRequest.gps = @YES;
+ testRequest.handsOffSteering = @YES;
testRequest.headLampStatus = @YES;
testRequest.instantFuelConsumption = @YES;
testRequest.myKey = @YES;
testRequest.odometer = @YES;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testRequest.prndl = @YES;
+#pragma clang diagnostic pop
testRequest.rpm = @YES;
testRequest.speed = @YES;
+ testRequest.stabilityControlsStatus = @YES;
testRequest.steeringWheelAngle = @YES;
testRequest.tirePressure = @YES;
- testRequest.turnSignal = @NO;
+ testRequest.turnSignal = @YES;
+ testRequest.windowStatus = @YES;
testRequest.wiperStatus = @YES;
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@NO));
- expect(testRequest.wiperStatus).to(equal(@YES));
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
- it(@"Should get correctly when initialized with a dictionary", ^ {
+ context(@"initWithDictionary:", ^{
NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameAccelerationPedalPosition:@YES,
- SDLRPCParameterNameAirbagStatus:@YES,
- SDLRPCParameterNameBeltStatus:@YES,
- SDLRPCParameterNameBodyInformation:@YES,
- SDLRPCParameterNameCloudAppVehicleID:@YES,
- SDLRPCParameterNameClusterModeStatus:@YES,
- SDLRPCParameterNameDeviceStatus:@YES,
- SDLRPCParameterNameDriverBraking:@YES,
- SDLRPCParameterNameECallInfo:@YES,
- SDLRPCParameterNameElectronicParkBrakeStatus: @YES,
- SDLRPCParameterNameEmergencyEvent:@YES,
- SDLRPCParameterNameEngineOilLife:@YES,
- SDLRPCParameterNameEngineTorque:@YES,
- SDLRPCParameterNameExternalTemperature:@YES,
- SDLRPCParameterNameFuelLevel:@YES,
- SDLRPCParameterNameFuelLevelState:@YES,
- SDLRPCParameterNameFuelRange:@YES,
- SDLRPCParameterNameGPS:@YES,
- SDLRPCParameterNameHeadLampStatus:@YES,
- SDLRPCParameterNameInstantFuelConsumption:@YES,
- SDLRPCParameterNameMyKey:@YES,
- SDLRPCParameterNameOdometer:@YES,
- SDLRPCParameterNamePRNDL:@YES,
- SDLRPCParameterNameRPM:@YES,
- SDLRPCParameterNameSpeed:@YES,
- SDLRPCParameterNameSteeringWheelAngle:@YES,
- SDLRPCParameterNameTirePressure:@YES,
- SDLRPCParameterNameTurnSignal:@YES,
- SDLRPCParameterNameWiperStatus:@YES},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}};
+ @{SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAccelerationPedalPosition:@YES,
+ SDLRPCParameterNameAirbagStatus:@YES,
+ SDLRPCParameterNameBeltStatus:@YES,
+ SDLRPCParameterNameBodyInformation:@YES,
+ SDLRPCParameterNameCloudAppVehicleID:@YES,
+ SDLRPCParameterNameClusterModeStatus:@YES,
+ SDLRPCParameterNameDeviceStatus:@YES,
+ SDLRPCParameterNameDriverBraking:@YES,
+ SDLRPCParameterNameECallInfo:@YES,
+ SDLRPCParameterNameElectronicParkBrakeStatus: @YES,
+ SDLRPCParameterNameEmergencyEvent:@YES,
+ SDLRPCParameterNameEngineOilLife:@YES,
+ SDLRPCParameterNameEngineTorque:@YES,
+ SDLRPCParameterNameExternalTemperature:@YES,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNameFuelLevel:@YES,
+ SDLRPCParameterNameFuelLevelState:@YES,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameFuelRange:@YES,
+ SDLRPCParameterNameGearStatus:@YES,
+ SDLRPCParameterNameGPS:@YES,
+ SDLRPCParameterNameHandsOffSteering:@YES,
+ SDLRPCParameterNameHeadLampStatus:@YES,
+ SDLRPCParameterNameInstantFuelConsumption:@YES,
+ SDLRPCParameterNameMyKey:@YES,
+ SDLRPCParameterNameOdometer:@YES,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNamePRNDL:@YES,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameRPM:@YES,
+ SDLRPCParameterNameSpeed:@YES,
+ SDLRPCParameterNameStabilityControlsStatus:@YES,
+ SDLRPCParameterNameSteeringWheelAngle:@YES,
+ SDLRPCParameterNameTirePressure:@YES,
+ SDLRPCParameterNameTurnSignal:@YES,
+ SDLRPCParameterNameWindowStatus:@YES,
+ SDLRPCParameterNameWiperStatus:@YES,
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLUnsubscribeVehicleData* testRequest = [[SDLUnsubscribeVehicleData alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
-
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@YES));
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
});
-describe(@"initializers", ^{
+describe(@"test initializers", ^{
context(@"init", ^{
SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] init];
- expect(testRequest.accPedalPosition).to(beNil());
- expect(testRequest.airbagStatus).to(beNil());
- expect(testRequest.beltStatus).to(beNil());
- expect(testRequest.bodyInformation).to(beNil());
- expect(testRequest.cloudAppVehicleID).to(beNil());
- expect(testRequest.clusterModeStatus).to(beNil());
- expect(testRequest.deviceStatus).to(beNil());
- expect(testRequest.driverBraking).to(beNil());
- expect(testRequest.eCallInfo).to(beNil());
- expect(testRequest.electronicParkBrakeStatus).to(beNil());
- expect(testRequest.emergencyEvent).to(beNil());
- expect(testRequest.engineOilLife).to(beNil());
- expect(testRequest.engineTorque).to(beNil());
- expect(testRequest.externalTemperature).to(beNil());
- expect(testRequest.fuelLevel).to(beNil());
- expect(testRequest.fuelLevel_State).to(beNil());
- expect(testRequest.fuelRange).to(beNil());
- expect(testRequest.gps).to(beNil());
- expect(testRequest.headLampStatus).to(beNil());
- expect(testRequest.instantFuelConsumption).to(beNil());
- expect(testRequest.myKey).to(beNil());
- expect(testRequest.odometer).to(beNil());
- expect(testRequest.prndl).to(beNil());
- expect(testRequest.rpm).to(beNil());
- expect(testRequest.speed).to(beNil());
- expect(testRequest.steeringWheelAngle).to(beNil());
- expect(testRequest.tirePressure).to(beNil());
- expect(testRequest.turnSignal).to(beNil());
- expect(testRequest.wiperStatus).to(beNil());
+ it(@"expect all properties to be nil", ^{
+ expect(testRequest.accPedalPosition).to(beNil());
+ expect(testRequest.airbagStatus).to(beNil());
+ expect(testRequest.beltStatus).to(beNil());
+ expect(testRequest.bodyInformation).to(beNil());
+ expect(testRequest.cloudAppVehicleID).to(beNil());
+ expect(testRequest.clusterModeStatus).to(beNil());
+ expect(testRequest.deviceStatus).to(beNil());
+ expect(testRequest.driverBraking).to(beNil());
+ expect(testRequest.eCallInfo).to(beNil());
+ expect(testRequest.electronicParkBrakeStatus).to(beNil());
+ expect(testRequest.emergencyEvent).to(beNil());
+ expect(testRequest.engineOilLife).to(beNil());
+ expect(testRequest.engineTorque).to(beNil());
+ expect(testRequest.externalTemperature).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(beNil());
+ expect(testRequest.gearStatus).to(beNil());
+ expect(testRequest.gps).to(beNil());
+ expect(testRequest.handsOffSteering).to(beNil());
+ expect(testRequest.headLampStatus).to(beNil());
+ expect(testRequest.instantFuelConsumption).to(beNil());
+ expect(testRequest.myKey).to(beNil());
+ expect(testRequest.odometer).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(beNil());
+ expect(testRequest.speed).to(beNil());
+ expect(testRequest.stabilityControlsStatus).to(beNil());
+ expect(testRequest.steeringWheelAngle).to(beNil());
+ expect(testRequest.tirePressure).to(beNil());
+ expect(testRequest.turnSignal).to(beNil());
+ expect(testRequest.windowStatus).to(beNil());
+ expect(testRequest.wiperStatus).to(beNil());
+ });
});
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:", ^{
- SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@YES));
- });
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
+ context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
+#pragma clang diagnostic pop
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.cloudAppVehicleID).to(equal(@NO));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@YES));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@YES));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@YES));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@YES));
- expect(testRequest.wiperStatus).to(equal(@YES));
- #pragma clang diagnostic pop
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic push
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(beNil());
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(beNil());
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(beNil());
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ });
});
- context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES emergencyEvent:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES gps:YES headLampStatus:NO instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES wiperStatus:YES];
+ context (@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
+ SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+ expect(testRequest.externalTemperature).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic push
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
- expect(testRequest.accPedalPosition).to(equal(@YES));
- expect(testRequest.airbagStatus).to(equal(@YES));
- expect(testRequest.beltStatus).to(equal(@YES));
- expect(testRequest.bodyInformation).to(equal(@YES));
- expect(testRequest.clusterModeStatus).to(equal(@YES));
- expect(testRequest.deviceStatus).to(equal(@YES));
- expect(testRequest.driverBraking).to(equal(@YES));
- expect(testRequest.eCallInfo).to(equal(@YES));
- expect(testRequest.electronicParkBrakeStatus).to(equal(@NO));
- expect(testRequest.emergencyEvent).to(equal(@YES));
- expect(testRequest.engineOilLife).to(equal(@NO));
- expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
- expect(testRequest.fuelLevel).to(equal(@YES));
- expect(testRequest.fuelLevel_State).to(equal(@YES));
- expect(testRequest.fuelRange).to(equal(@NO));
- expect(testRequest.gps).to(equal(@YES));
- expect(testRequest.headLampStatus).to(equal(@NO));
- expect(testRequest.instantFuelConsumption).to(equal(@YES));
- expect(testRequest.myKey).to(equal(@YES));
- expect(testRequest.odometer).to(equal(@YES));
- expect(testRequest.prndl).to(equal(@YES));
- expect(testRequest.rpm).to(equal(@YES));
- expect(testRequest.speed).to(equal(@YES));
- expect(testRequest.steeringWheelAngle).to(equal(@YES));
- expect(testRequest.tirePressure).to(equal(@YES));
- expect(testRequest.turnSignal).to(equal(@NO));
- expect(testRequest.wiperStatus).to(equal(@YES));
- #pragma clang diagnostic pop
+ });
});
- context(@"Should set and get Generic Network Signal Data", ^{
+ context(@"should set OEM Custom Vehicle Data", ^{
SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] init];
-
[testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:NO];
[testRequest setOEMCustomVehicleData:@"customVehicleData1" withVehicleDataState:YES];
- expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(beFalse());
- expect([testRequest getOEMCustomVehicleData:@"customVehicleData1"]).to(beTrue());
-
+ it(@"expect OEM Custom Vehicle Data to be set properly", ^{
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@NO));
+ expect([testRequest getOEMCustomVehicleData:@"customVehicleData1"]).to(equal(@YES));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
index 72df4207b..d22045edd 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
@@ -14,219 +14,324 @@
QuickSpecBegin(SDLGetVehicleDataResponseSpec)
+// set up test constants
+SDLGPSData* gps = [[SDLGPSData alloc] init];
+SDLTireStatus* tirePressure = [[SDLTireStatus alloc] init];
+SDLBeltStatus* beltStatus = [[SDLBeltStatus alloc] init];
+SDLBodyInformation* bodyInformation = [[SDLBodyInformation alloc] init];
+SDLDeviceStatus* deviceStatus = [[SDLDeviceStatus alloc] init];
+SDLHeadLampStatus* headLampStatus = [[SDLHeadLampStatus alloc] init];
+SDLECallInfo* eCallInfo = [[SDLECallInfo alloc] init];
+SDLAirbagStatus* airbagStatus = [[SDLAirbagStatus alloc] init];
+SDLEmergencyEvent* emergencyEvent = [[SDLEmergencyEvent alloc] init];
+SDLClusterModeStatus* clusterModeStatus = [[SDLClusterModeStatus alloc] init];
+SDLMyKey* myKey = [[SDLMyKey alloc] init];
+SDLFuelRange* fuelRangeItem = [[SDLFuelRange alloc] init];
+NSArray<SDLFuelRange *>* fuelRangeArray = @[fuelRangeItem, fuelRangeItem];
+NSString *const vin = @"6574839201a";
+NSString *const cloudAppVehicleID = @"cloudAppVehicleID";
+SDLGearStatus* gearStatus = [[SDLGearStatus alloc] init];
+const float accPedalPosition = 99.01;
+SDLVehicleDataEventStatus driverBraking = SDLVehicleDataEventStatusNoEvent;
+const float engineOilLife = 23.34;
+const float engineTorque = 34.45;
+const float externalTemperature = 45.56;
+const float fuelLevel = 56.67;
+SDLComponentVolumeStatus fuelLevel_State = SDLComponentVolumeStatusFault;
+const float instantFuelConsumption = 67.78;
+const NSUInteger odometer = 100500;
+SDLPRNDL prndl = SDLPRNDLPark;
+const NSInteger rpm = 3501;
+const float speed = 120.01;
+const float steeringWheelAngle = -180.5;
+SDLTurnSignal turnSignal = SDLTurnSignalBoth;
+SDLWiperStatus wiperStatus = SDLWiperStatusAutomaticHigh;
+SDLElectronicParkBrakeStatus electronicParkBrakeStatus = SDLElectronicParkBrakeStatusTransition;
+const BOOL handsOffSteering = YES;
+SDLStabilityControlsStatus *stabilityControlsStatus = [[SDLStabilityControlsStatus alloc] init];
+NSArray<SDLWindowStatus *> *windowStatus = @[[[SDLWindowStatus alloc] init], [[SDLWindowStatus alloc] init]];
-describe(@"Getter/Setter Tests", ^ {
- __block SDLGPSData* gps = nil;
- __block SDLTireStatus* tires = nil;
- __block SDLBeltStatus* belt = nil;
- __block SDLBodyInformation* body = nil;
- __block SDLDeviceStatus* device = nil;
- __block SDLHeadLampStatus* headLamp = nil;
- __block SDLECallInfo* eCall = nil;
- __block SDLAirbagStatus* airbag = nil;
- __block SDLEmergencyEvent* event = nil;
- __block SDLClusterModeStatus* clusterMode = nil;
- __block SDLMyKey* myKey = nil;
- __block SDLFuelRange* fuelRange = nil;
- __block NSString* vin = nil;
- __block NSString* cloudAppVehicleID = nil;
-
- beforeEach(^{
- gps = [[SDLGPSData alloc] init];
- tires = [[SDLTireStatus alloc] init];
- belt = [[SDLBeltStatus alloc] init];
- body = [[SDLBodyInformation alloc] init];
- device = [[SDLDeviceStatus alloc] init];
- headLamp = [[SDLHeadLampStatus alloc] init];
- eCall = [[SDLECallInfo alloc] init];
- airbag = [[SDLAirbagStatus alloc] init];
- event = [[SDLEmergencyEvent alloc] init];
- clusterMode = [[SDLClusterModeStatus alloc] init];
- myKey = [[SDLMyKey alloc] init];
- fuelRange = [[SDLFuelRange alloc] init];
- vin = @"6574839201a";
- cloudAppVehicleID = @"cloudAppVehicleID";
- });
-
- it(@"Should set and get correctly", ^ {
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
SDLGetVehicleDataResponse* testResponse = [[SDLGetVehicleDataResponse alloc] init];
-
- testResponse.accPedalPosition = @0;
- testResponse.airbagStatus = airbag;
- testResponse.beltStatus = belt;
- testResponse.bodyInformation = body;
+ testResponse.accPedalPosition = @(accPedalPosition);
+ testResponse.airbagStatus = airbagStatus;
+ testResponse.beltStatus = beltStatus;
+ testResponse.bodyInformation = bodyInformation;
testResponse.cloudAppVehicleID = cloudAppVehicleID;
- testResponse.clusterModeStatus = clusterMode;
- testResponse.deviceStatus = device;
- testResponse.driverBraking = SDLVehicleDataEventStatusNoEvent;
- testResponse.eCallInfo = eCall;
- testResponse.electronicParkBrakeStatus = SDLElectronicParkBrakeStatusDriveActive;
- testResponse.emergencyEvent = event;
- testResponse.engineOilLife = @56.3;
- testResponse.engineTorque = @630.4;
- testResponse.externalTemperature = @0;
- testResponse.fuelLevel = @99.9999;
- testResponse.fuelLevel_State = SDLComponentVolumeStatusFault;
- testResponse.fuelRange = @[fuelRange, fuelRange];
+ testResponse.clusterModeStatus = clusterModeStatus;
+ testResponse.deviceStatus = deviceStatus;
+ testResponse.driverBraking = driverBraking;
+ testResponse.eCallInfo = eCallInfo;
+ testResponse.electronicParkBrakeStatus = electronicParkBrakeStatus;
+ testResponse.emergencyEvent = emergencyEvent;
+ testResponse.engineOilLife = @(engineOilLife);
+ testResponse.engineTorque = @(engineTorque);
+ testResponse.externalTemperature = @(externalTemperature);
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.fuelLevel = @(fuelLevel);
+ testResponse.fuelLevel_State = fuelLevel_State;
+#pragma clang diagnostic pop
+ testResponse.fuelRange = fuelRangeArray;
+ testResponse.gearStatus = gearStatus;
testResponse.gps = gps;
- testResponse.headLampStatus = headLamp;
- testResponse.instantFuelConsumption = @40.7;
+ testResponse.handsOffSteering = @(handsOffSteering);
+ testResponse.headLampStatus = headLampStatus;
+ testResponse.instantFuelConsumption = @(instantFuelConsumption);
testResponse.myKey = myKey;
- testResponse.odometer = @70000;
- testResponse.prndl = SDLPRNDLPark;
- testResponse.rpm = @3;
- testResponse.speed = @100;
- testResponse.steeringWheelAngle = @-1500;
- testResponse.tirePressure = tires;
- testResponse.turnSignal = SDLTurnSignalBoth;
+ testResponse.odometer = @(odometer);
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.prndl = prndl;
+#pragma clang diagnostic pop
+ testResponse.rpm = @(rpm);
+ testResponse.speed = @(speed);
+ testResponse.stabilityControlsStatus = stabilityControlsStatus;
+ testResponse.steeringWheelAngle = @(steeringWheelAngle);
+ testResponse.tirePressure = tirePressure;
+ testResponse.turnSignal = turnSignal;
testResponse.vin = vin;
- testResponse.wiperStatus = SDLWiperStatusAutomaticHigh;
+ testResponse.windowStatus = windowStatus;
+ testResponse.wiperStatus = wiperStatus;
- expect(testResponse.accPedalPosition).to(equal(@0));
- expect(testResponse.airbagStatus).to(equal(airbag));
- expect(testResponse.beltStatus).to(equal(belt));
- expect(testResponse.bodyInformation).to(equal(body));
- expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
- expect(testResponse.clusterModeStatus).to(equal(clusterMode));
- expect(testResponse.deviceStatus).to(equal(device));
- expect(testResponse.driverBraking).to(equal(SDLVehicleDataEventStatusNoEvent));
- expect(testResponse.eCallInfo).to(equal(eCall));
- expect(testResponse.electronicParkBrakeStatus).to(equal(SDLElectronicParkBrakeStatusDriveActive));
- expect(testResponse.emergencyEvent).to(equal(event));
- expect(testResponse.engineOilLife).to(equal(@56.3));
- expect(testResponse.engineTorque).to(equal(@630.4));
- expect(testResponse.externalTemperature).to(equal(@0));
- expect(testResponse.fuelLevel).to(equal(@99.9999));
- expect(testResponse.fuelLevel_State).to(equal(SDLComponentVolumeStatusFault));
- expect(testResponse.fuelRange).to(equal(@[fuelRange, fuelRange]));
- expect(testResponse.gps).to(equal(gps));
- expect(testResponse.headLampStatus).to(equal(headLamp));
- expect(testResponse.instantFuelConsumption).to(equal(@40.7));
- expect(testResponse.myKey).to(equal(myKey));
- expect(testResponse.odometer).to(equal(@70000));
- expect(testResponse.prndl).to(equal(SDLPRNDLPark));
- expect(testResponse.rpm).to(equal(@3));
- expect(testResponse.speed).to(equal(@100));
- expect(testResponse.steeringWheelAngle).to(equal(@-1500));
- expect(testResponse.tirePressure).to(equal(tires));
- expect(testResponse.turnSignal).to(equal(SDLTurnSignalBoth));
- expect(testResponse.vin).to(equal(vin));
- expect(testResponse.wiperStatus).to(equal(SDLWiperStatusAutomaticHigh));
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
+ expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(handsOffSteering));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(equal(prndl));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ });
});
-
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameNotification:
- @{SDLRPCParameterNameParameters:
- @{
- SDLRPCParameterNameAccelerationPedalPosition:@0,
- SDLRPCParameterNameAirbagStatus:airbag,
- SDLRPCParameterNameBeltStatus:belt,
- SDLRPCParameterNameBodyInformation:body,
- SDLRPCParameterNameCloudAppVehicleID:cloudAppVehicleID,
- SDLRPCParameterNameClusterModeStatus:clusterMode,
- SDLRPCParameterNameDeviceStatus:device,
- SDLRPCParameterNameDriverBraking:SDLVehicleDataEventStatusNoEvent,
- SDLRPCParameterNameECallInfo:eCall,
- SDLRPCParameterNameElectronicParkBrakeStatus:SDLElectronicParkBrakeStatusDriveActive,
- SDLRPCParameterNameEmergencyEvent:event,
- SDLRPCParameterNameEngineOilLife:@23.22,
- SDLRPCParameterNameEngineTorque:@630.4,
- SDLRPCParameterNameExternalTemperature:@0,
- SDLRPCParameterNameFuelLevel:@99.9999,
- SDLRPCParameterNameFuelLevelState:SDLComponentVolumeStatusFault,
- SDLRPCParameterNameFuelRange:@[fuelRange],
- SDLRPCParameterNameGPS:gps,
- SDLRPCParameterNameHeadLampStatus:headLamp,
- SDLRPCParameterNameInstantFuelConsumption:@40.7,
- SDLRPCParameterNameMyKey:myKey,
- SDLRPCParameterNameOdometer:@70000,
- SDLRPCParameterNamePRNDL:SDLPRNDLPark,
- SDLRPCParameterNameRPM:@3,
- SDLRPCParameterNameSpeed:@100,
- SDLRPCParameterNameSteeringWheelAngle:@-1500,
- SDLRPCParameterNameTirePressure:tires,
- SDLRPCParameterNameTurnSignal:SDLTurnSignalOff,
- SDLRPCParameterNameVIN:vin,
- SDLRPCParameterNameWiperStatus:SDLWiperStatusAutomaticHigh},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}} mutableCopy];
+
+ context(@"initWithDictionary:", ^{
+ NSDictionary* dict = @{SDLRPCParameterNameNotification:
+ @{SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAccelerationPedalPosition:@(accPedalPosition),
+ SDLRPCParameterNameAirbagStatus:airbagStatus,
+ SDLRPCParameterNameBeltStatus:beltStatus,
+ SDLRPCParameterNameBodyInformation:bodyInformation,
+ SDLRPCParameterNameCloudAppVehicleID:cloudAppVehicleID,
+ SDLRPCParameterNameClusterModeStatus:clusterModeStatus,
+ SDLRPCParameterNameDeviceStatus:deviceStatus,
+ SDLRPCParameterNameDriverBraking:driverBraking,
+ SDLRPCParameterNameECallInfo:eCallInfo,
+ SDLRPCParameterNameElectronicParkBrakeStatus:electronicParkBrakeStatus,
+ SDLRPCParameterNameEmergencyEvent:emergencyEvent,
+ SDLRPCParameterNameEngineOilLife:@(engineOilLife),
+ SDLRPCParameterNameEngineTorque:@(engineTorque),
+ SDLRPCParameterNameExternalTemperature:@(externalTemperature),
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNameFuelLevel:@(fuelLevel),
+ SDLRPCParameterNameFuelLevelState:fuelLevel_State,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameFuelRange:fuelRangeArray,
+ SDLRPCParameterNameGearStatus:gearStatus,
+ SDLRPCParameterNameGPS:gps,
+ SDLRPCParameterNameHandsOffSteering:@(handsOffSteering),
+ SDLRPCParameterNameHeadLampStatus:headLampStatus,
+ SDLRPCParameterNameInstantFuelConsumption:@(instantFuelConsumption),
+ SDLRPCParameterNameMyKey:myKey,
+ SDLRPCParameterNameOdometer:@(odometer),
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNamePRNDL:prndl,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameRPM:@(rpm),
+ SDLRPCParameterNameSpeed:@(speed),
+ SDLRPCParameterNameStabilityControlsStatus:stabilityControlsStatus,
+ SDLRPCParameterNameSteeringWheelAngle:@(steeringWheelAngle),
+ SDLRPCParameterNameTirePressure:tirePressure,
+ SDLRPCParameterNameTurnSignal:turnSignal,
+ SDLRPCParameterNameVIN:vin,
+ SDLRPCParameterNameWindowStatus:windowStatus,
+ SDLRPCParameterNameWiperStatus:wiperStatus,
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLGetVehicleDataResponse* testResponse = [[SDLGetVehicleDataResponse alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
- expect(testResponse.accPedalPosition).to(equal(@0));
- expect(testResponse.airbagStatus).to(equal(airbag));
- expect(testResponse.beltStatus).to(equal(belt));
- expect(testResponse.bodyInformation).to(equal(body));
- expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
- expect(testResponse.clusterModeStatus).to(equal(clusterMode));
- expect(testResponse.deviceStatus).to(equal(device));
- expect(testResponse.driverBraking).to(equal(SDLVehicleDataEventStatusNoEvent));
- expect(testResponse.eCallInfo).to(equal(eCall));
- expect(testResponse.electronicParkBrakeStatus).to(equal(SDLElectronicParkBrakeStatusDriveActive));
- expect(testResponse.emergencyEvent).to(equal(event));
- expect(testResponse.engineOilLife).to(equal(@23.22));
- expect(testResponse.engineTorque).to(equal(@630.4));
- expect(testResponse.externalTemperature).to(equal(@0));
- expect(testResponse.fuelLevel).to(equal(@99.9999));
- expect(testResponse.fuelLevel_State).to(equal(SDLComponentVolumeStatusFault));
- expect(testResponse.fuelRange).to(equal(@[fuelRange]));
- expect(testResponse.gps).to(equal(gps));
- expect(testResponse.headLampStatus).to(equal(headLamp));
- expect(testResponse.instantFuelConsumption).to(equal(@40.7));
- expect(testResponse.myKey).to(equal(myKey));
- expect(testResponse.odometer).to(equal(@70000));
- expect(testResponse.prndl).to(equal(SDLPRNDLPark));
- expect(testResponse.rpm).to(equal(@3));
- expect(testResponse.speed).to(equal(@100));
- expect(testResponse.steeringWheelAngle).to(equal(@-1500));
- expect(testResponse.tirePressure).to(equal(tires));
- expect(testResponse.turnSignal).to(equal(SDLTurnSignalOff));
- expect(testResponse.vin).to(equal(vin));
- expect(testResponse.wiperStatus).to(equal(SDLWiperStatusAutomaticHigh));
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
+ expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(@(handsOffSteering)));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(equal(prndl));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ });
});
-
- it(@"Should return nil if not set", ^ {
+
+ context(@"init", ^{
SDLGetVehicleDataResponse* testResponse = [[SDLGetVehicleDataResponse alloc] init];
-
- expect(testResponse.accPedalPosition).to(beNil());
- expect(testResponse.airbagStatus).to(beNil());
- expect(testResponse.beltStatus).to(beNil());
- expect(testResponse.bodyInformation).to(beNil());
- expect(testResponse.cloudAppVehicleID).to(beNil());
- expect(testResponse.clusterModeStatus).to(beNil());
- expect(testResponse.deviceStatus).to(beNil());
- expect(testResponse.driverBraking).to(beNil());
- expect(testResponse.eCallInfo).to(beNil());
- expect(testResponse.electronicParkBrakeStatus).to(beNil());
- expect(testResponse.emergencyEvent).to(beNil());
- expect(testResponse.engineOilLife).to(beNil());
- expect(testResponse.engineTorque).to(beNil());
- expect(testResponse.externalTemperature).to(beNil());
- expect(testResponse.fuelLevel).to(beNil());
- expect(testResponse.fuelLevel_State).to(beNil());
- expect(testResponse.fuelRange).to(beNil());
- expect(testResponse.gps).to(beNil());
- expect(testResponse.headLampStatus).to(beNil());
- expect(testResponse.instantFuelConsumption).to(beNil());
- expect(testResponse.myKey).to(beNil());
- expect(testResponse.odometer).to(beNil());
- expect(testResponse.prndl).to(beNil());
- expect(testResponse.rpm).to(beNil());
- expect(testResponse.speed).to(beNil());
- expect(testResponse.steeringWheelAngle).to(beNil());
- expect(testResponse.tirePressure).to(beNil());
- expect(testResponse.turnSignal).to(beNil());
- expect(testResponse.vin).to(beNil());
- expect(testResponse.wiperStatus).to(beNil());
+ it(@"expect all properties to be nil", ^{
+ expect(testResponse.accPedalPosition).to(beNil());
+ expect(testResponse.airbagStatus).to(beNil());
+ expect(testResponse.beltStatus).to(beNil());
+ expect(testResponse.bodyInformation).to(beNil());
+ expect(testResponse.cloudAppVehicleID).to(beNil());
+ expect(testResponse.clusterModeStatus).to(beNil());
+ expect(testResponse.deviceStatus).to(beNil());
+ expect(testResponse.driverBraking).to(beNil());
+ expect(testResponse.eCallInfo).to(beNil());
+ expect(testResponse.electronicParkBrakeStatus).to(beNil());
+ expect(testResponse.emergencyEvent).to(beNil());
+ expect(testResponse.engineOilLife).to(beNil());
+ expect(testResponse.engineTorque).to(beNil());
+ expect(testResponse.externalTemperature).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(beNil());
+ expect(testResponse.gearStatus).to(beNil());
+ expect(testResponse.gps).to(beNil());
+ expect(testResponse.handsOffSteering).to(beNil());
+ expect(testResponse.headLampStatus).to(beNil());
+ expect(testResponse.instantFuelConsumption).to(beNil());
+ expect(testResponse.myKey).to(beNil());
+ expect(testResponse.odometer).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic push
+ expect(testResponse.rpm).to(beNil());
+ expect(testResponse.speed).to(beNil());
+ expect(testResponse.stabilityControlsStatus).to(beNil());
+ expect(testResponse.steeringWheelAngle).to(beNil());
+ expect(testResponse.tirePressure).to(beNil());
+ expect(testResponse.turnSignal).to(beNil());
+ expect(testResponse.vin).to(beNil());
+ expect(testResponse.windowStatus).to(beNil());
+ expect(testResponse.wiperStatus).to(beNil());
+ });
+ });
+
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
+ SDLGetVehicleDataResponse *testResponse = [[SDLGetVehicleDataResponse alloc] initWithGps:gps speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:fuelRangeArray externalTemperature:@(externalTemperature) turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:@(odometer) beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:@(engineTorque) accPedalPosition:@(accPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey handsOffSteering:@(handsOffSteering) windowStatus:windowStatus];
+ it(@"should set all properties properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(@(handsOffSteering)));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ });
});
- it(@"Should set and get Generic Network Signal Data", ^{
- SDLGetVehicleDataResponse *testRequest = [[SDLGetVehicleDataResponse alloc] init];
+ context(@"init and set OEM Custom Vehicle Data", ^{
+ SDLGetVehicleDataResponse *testResponse = [[SDLGetVehicleDataResponse alloc] init];
+ [testResponse setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:@"oemVehicleData"];
- [testRequest setOEMCustomVehicleData:@"customVehicleData" withVehicleDataState:@"oemVehicleData"];
-
- expect([testRequest getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@"oemVehicleData"));
+ it(@"expect OEM Custom Vehicle Data to be set properly", ^{
+ expect([testResponse getOEMCustomVehicleData:@"customVehicleData"]).to(equal(@"oemVehicleData"));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m
index 16eb19315..d7e776aab 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m
@@ -15,10 +15,6 @@
QuickSpecBegin(SDLRegisterAppInterfaceResponseSpec)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-__block SDLSyncMsgVersion* version = [[SDLSyncMsgVersion alloc] initWithMajorVersion:0 minorVersion:0 patchVersion:0];
-#pragma clang diagnostic pop
__block SDLMsgVersion *sdlVersion = [[SDLMsgVersion alloc] initWithMajorVersion:0 minorVersion:0 patchVersion:0];
__block SDLDisplayCapabilities* info = [[SDLDisplayCapabilities alloc] init];
__block SDLButtonCapabilities* button = [[SDLButtonCapabilities alloc] init];
@@ -31,10 +27,7 @@ __block SDLHMICapabilities *hmiCapabilities = [[SDLHMICapabilities alloc] init];
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
SDLRegisterAppInterfaceResponse* testResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testResponse.syncMsgVersion = version;
-#pragma clang diagnostic pop
+
testResponse.language = SDLLanguageEsMx;
testResponse.hmiDisplayLanguage = SDLLanguageRuRu;
#pragma clang diagnostic push
@@ -56,11 +49,8 @@ describe(@"Getter/Setter Tests", ^ {
testResponse.sdlVersion = @"sdlVersion";
testResponse.systemSoftwareVersion = @"systemSoftwareVersion";
testResponse.iconResumed = @YES;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testResponse.syncMsgVersion).to(equal(version));
-#pragma clang diagnostic pop
testResponse.sdlMsgVersion = sdlVersion;
+
expect(testResponse.sdlMsgVersion).to(equal(sdlVersion));
expect(testResponse.language).to(equal(SDLLanguageEsMx));
expect(testResponse.hmiDisplayLanguage).to(equal(SDLLanguageRuRu));
@@ -84,11 +74,10 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.systemSoftwareVersion).to(equal(@"systemSoftwareVersion"));
expect(testResponse.iconResumed).to(beTrue());
});
- describe(@"Setting With Dictionary", ^{
- __block NSDictionary *dict = nil;
+ describe(@"Setting With Dictionary", ^{
beforeEach( ^{
- dict = @{SDLRPCParameterNameRequest:
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
@{SDLRPCParameterNameSyncMessageVersion:@{
SDLRPCParameterNameMajorVersion: @6,
@@ -115,26 +104,14 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameIconResumed: @YES,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}};
- });
-
- it(@"Should get correctly when initialized with a dictionary and get syncMsgVersion first", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRegisterAppInterfaceResponse* testResponse = [[SDLRegisterAppInterfaceResponse alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ SDLRegisterAppInterfaceResponse *testResponse = [[SDLRegisterAppInterfaceResponse alloc] initWithDictionary:dict];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testResponse.syncMsgVersion).to(equal([[SDLSyncMsgVersion alloc] initWithMajorVersion:6 minorVersion:0 patchVersion:0]));
-#pragma clang diagnostic pop
expect(testResponse.sdlMsgVersion).to(equal([[SDLMsgVersion alloc] initWithMajorVersion:6 minorVersion:0 patchVersion:0]));
expect(testResponse.language).to(equal(SDLLanguageEsMx));
expect(testResponse.hmiDisplayLanguage).to(equal(SDLLanguageRuRu));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
expect(testResponse.displayCapabilities).to(equal(info));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
expect(testResponse.buttonCapabilities).to(equal(@[button]));
expect(testResponse.softButtonCapabilities).to(equal(@[softButton]));
expect(testResponse.presetBankCapabilities).to(equal(presetBank));
@@ -151,48 +128,13 @@ describe(@"Getter/Setter Tests", ^ {
expect(testResponse.sdlVersion).to(equal(@"sdlVersion"));
expect(testResponse.systemSoftwareVersion).to(equal(@"systemSoftwareVersion"));
expect(testResponse.iconResumed).to(beTrue());
- });
- it(@"Should get correctly when initialized with a dictionary and get sdlMsgVersion first", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRegisterAppInterfaceResponse* testResponse = [[SDLRegisterAppInterfaceResponse alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
- expect(testResponse.sdlMsgVersion).to(equal([[SDLMsgVersion alloc] initWithMajorVersion:6 minorVersion:0 patchVersion:0]));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testResponse.syncMsgVersion).to(equal([[SDLSyncMsgVersion alloc] initWithMajorVersion:6 minorVersion:0 patchVersion:0]));
-#pragma clang diagnostic pop
- expect(testResponse.language).to(equal(SDLLanguageEsMx));
- expect(testResponse.hmiDisplayLanguage).to(equal(SDLLanguageRuRu));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated"
- expect(testResponse.displayCapabilities).to(equal(info));
- expect(testResponse.buttonCapabilities).to(equal(@[button]));
- expect(testResponse.softButtonCapabilities).to(equal(@[softButton]));
- expect(testResponse.presetBankCapabilities).to(equal(presetBank));
-#pragma clang diagnostic pop
- expect(testResponse.hmiZoneCapabilities).to(equal(@[SDLHMIZoneCapabilitiesBack, SDLHMIZoneCapabilitiesFront]));
- expect(testResponse.speechCapabilities).to(equal(@[SDLSpeechCapabilitiesSAPIPhonemes, SDLSpeechCapabilitiesSilence]));
- expect(testResponse.vrCapabilities).to(equal(@[SDLVRCapabilitiesText]));
- expect(testResponse.audioPassThruCapabilities).to(equal(@[audioPassThru]));
- expect(testResponse.pcmStreamCapabilities).to(equal(audioPassThru));
- expect(testResponse.vehicleType).to(equal(vehicle));
- expect(testResponse.prerecordedSpeech).to(equal(@[SDLPrerecordedSpeechListen, SDLPrerecordedSpeechHelp]));
- expect(testResponse.supportedDiagModes).to(equal(@[@67, @99, @111]));
- expect(testResponse.hmiCapabilities).to(equal(hmiCapabilities));
- expect(testResponse.sdlVersion).to(equal(@"sdlVersion"));
- expect(testResponse.systemSoftwareVersion).to(equal(@"systemSoftwareVersion"));
- expect(testResponse.iconResumed).to(beTrue());
});
});
it(@"Should return nil if not set", ^ {
- SDLRegisterAppInterfaceResponse* testResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testResponse.syncMsgVersion).to(beNil());
-#pragma clang diagnostic pop
+ SDLRegisterAppInterfaceResponse *testResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+
expect(testResponse.sdlMsgVersion).to(beNil());
expect(testResponse.language).to(beNil());
expect(testResponse.hmiDisplayLanguage).to(beNil());
@@ -241,15 +183,8 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameIconResumed: NSNull.null,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}};
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRegisterAppInterfaceResponse* testResponse = [[SDLRegisterAppInterfaceResponse alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ SDLRegisterAppInterfaceResponse *testResponse = [[SDLRegisterAppInterfaceResponse alloc] initWithDictionary:dict];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expectAction(^{ [testResponse syncMsgVersion]; }).to(raiseException());
-#pragma clang diagnostic pop
expectAction(^{ [testResponse sdlMsgVersion]; }).to(raiseException());
expectAction(^{ [testResponse language]; }).to(raiseException());
expectAction(^{ [testResponse hmiDisplayLanguage]; }).to(raiseException());
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
index 1b8dc5b6d..a548b09c5 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
@@ -20,11 +20,9 @@ QuickSpecBegin(SDLSubscribeVehicleDataResponseSpec)
SDLVehicleDataResult* vehicleDataResult = [[SDLVehicleDataResult alloc] init];
SDLVehicleDataResult* customOEMvehicleDataResult = [[SDLVehicleDataResult alloc] initWithCustomOEMDataType:@"customOEMVehicleData" resultCode:SDLVehicleDataResultCodeSuccess];
-
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
SDLSubscribeVehicleDataResponse* testResponse = [[SDLSubscribeVehicleDataResponse alloc] init];
-
testResponse.accPedalPosition = vehicleDataResult;
testResponse.airbagStatus = vehicleDataResult;
testResponse.beltStatus = vehicleDataResult;
@@ -39,162 +37,267 @@ describe(@"Getter/Setter Tests", ^ {
testResponse.engineOilLife = vehicleDataResult;
testResponse.engineTorque = vehicleDataResult;
testResponse.externalTemperature = vehicleDataResult;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testResponse.fuelLevel = vehicleDataResult;
testResponse.fuelLevel_State = vehicleDataResult;
+#pragma clang diagnostic pop
testResponse.fuelRange = vehicleDataResult;
+ testResponse.gearStatus = vehicleDataResult;
testResponse.gps = vehicleDataResult;
+ testResponse.handsOffSteering = vehicleDataResult;
testResponse.headLampStatus = vehicleDataResult;
testResponse.instantFuelConsumption = vehicleDataResult;
testResponse.myKey = vehicleDataResult;
testResponse.odometer = vehicleDataResult;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testResponse.prndl = vehicleDataResult;
+#pragma clang diagnostic pop
testResponse.rpm = vehicleDataResult;
testResponse.speed = vehicleDataResult;
+ testResponse.stabilityControlsStatus = vehicleDataResult;
testResponse.steeringWheelAngle = vehicleDataResult;
testResponse.tirePressure = vehicleDataResult;
testResponse.turnSignal = vehicleDataResult;
+ testResponse.windowStatus = vehicleDataResult;
testResponse.wiperStatus = vehicleDataResult;
- expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
- expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
- expect(testResponse.beltStatus).to(equal(vehicleDataResult));
- expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
- expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
- expect(testResponse.clusterModes).to(equal(vehicleDataResult));
- expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
- expect(testResponse.driverBraking).to(equal(vehicleDataResult));
- expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
- expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
- expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
- expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
- expect(testResponse.engineTorque).to(equal(vehicleDataResult));
- expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
- expect(testResponse.fuelRange).to(equal(vehicleDataResult));
- expect(testResponse.gps).to(equal(vehicleDataResult));
- expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
- expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
- expect(testResponse.myKey).to(equal(vehicleDataResult));
- expect(testResponse.odometer).to(equal(vehicleDataResult));
- expect(testResponse.prndl).to(equal(vehicleDataResult));
- expect(testResponse.rpm).to(equal(vehicleDataResult));
- expect(testResponse.speed).to(equal(vehicleDataResult));
- expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
- expect(testResponse.tirePressure).to(equal(vehicleDataResult));
- expect(testResponse.turnSignal).to(equal(vehicleDataResult));
- expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
+ expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
});
- it(@"Should get correctly when initialized", ^ {
+ context(@"initWithDictionary:", ^{
NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameResponse:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameAccelerationPedalPosition:vehicleDataResult,
- SDLRPCParameterNameAirbagStatus:vehicleDataResult,
- SDLRPCParameterNameBeltStatus:vehicleDataResult,
- SDLRPCParameterNameBodyInformation:vehicleDataResult,
- SDLRPCParameterNameCloudAppVehicleID:vehicleDataResult,
- SDLRPCParameterNameClusterModes:vehicleDataResult,
- SDLRPCParameterNameDeviceStatus:vehicleDataResult,
- SDLRPCParameterNameDriverBraking:vehicleDataResult,
- SDLRPCParameterNameECallInfo:vehicleDataResult,
- SDLRPCParameterNameElectronicParkBrakeStatus:vehicleDataResult,
- SDLRPCParameterNameEmergencyEvent:vehicleDataResult,
- SDLRPCParameterNameEngineOilLife:vehicleDataResult,
- SDLRPCParameterNameEngineTorque:vehicleDataResult,
- SDLRPCParameterNameExternalTemperature:vehicleDataResult,
- SDLRPCParameterNameFuelLevel:vehicleDataResult,
- SDLRPCParameterNameFuelLevelState:vehicleDataResult,
- SDLRPCParameterNameFuelRange:vehicleDataResult,
- SDLRPCParameterNameGPS:vehicleDataResult,
- SDLRPCParameterNameHeadLampStatus:vehicleDataResult,
- SDLRPCParameterNameInstantFuelConsumption:vehicleDataResult,
- SDLRPCParameterNameMyKey:vehicleDataResult,
- SDLRPCParameterNameOdometer:vehicleDataResult,
- SDLRPCParameterNamePRNDL:vehicleDataResult,
- SDLRPCParameterNameRPM:vehicleDataResult,
- SDLRPCParameterNameSpeed:vehicleDataResult,
- SDLRPCParameterNameSteeringWheelAngle:vehicleDataResult,
- SDLRPCParameterNameTirePressure:vehicleDataResult,
- SDLRPCParameterNameTurnSignal:vehicleDataResult,
- SDLRPCParameterNameWiperStatus:vehicleDataResult},
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeVehicleData}};
+ @{SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAccelerationPedalPosition:vehicleDataResult,
+ SDLRPCParameterNameAirbagStatus:vehicleDataResult,
+ SDLRPCParameterNameBeltStatus:vehicleDataResult,
+ SDLRPCParameterNameBodyInformation:vehicleDataResult,
+ SDLRPCParameterNameCloudAppVehicleID:vehicleDataResult,
+ SDLRPCParameterNameClusterModes:vehicleDataResult,
+ SDLRPCParameterNameDeviceStatus:vehicleDataResult,
+ SDLRPCParameterNameDriverBraking:vehicleDataResult,
+ SDLRPCParameterNameECallInfo:vehicleDataResult,
+ SDLRPCParameterNameElectronicParkBrakeStatus:vehicleDataResult,
+ SDLRPCParameterNameEmergencyEvent:vehicleDataResult,
+ SDLRPCParameterNameEngineOilLife:vehicleDataResult,
+ SDLRPCParameterNameEngineTorque:vehicleDataResult,
+ SDLRPCParameterNameExternalTemperature:vehicleDataResult,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNameFuelLevel:vehicleDataResult,
+ SDLRPCParameterNameFuelLevelState:vehicleDataResult,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameFuelRange:vehicleDataResult,
+ SDLRPCParameterNameGearStatus:vehicleDataResult,
+ SDLRPCParameterNameGPS:vehicleDataResult,
+ SDLRPCParameterNameHandsOffSteering:vehicleDataResult,
+ SDLRPCParameterNameHeadLampStatus:vehicleDataResult,
+ SDLRPCParameterNameInstantFuelConsumption:vehicleDataResult,
+ SDLRPCParameterNameMyKey:vehicleDataResult,
+ SDLRPCParameterNameOdometer:vehicleDataResult,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNamePRNDL:vehicleDataResult,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameRPM:vehicleDataResult,
+ SDLRPCParameterNameSpeed:vehicleDataResult,
+ SDLRPCParameterNameStabilityControlsStatus:vehicleDataResult,
+ SDLRPCParameterNameSteeringWheelAngle:vehicleDataResult,
+ SDLRPCParameterNameTirePressure:vehicleDataResult,
+ SDLRPCParameterNameTurnSignal:vehicleDataResult,
+ SDLRPCParameterNameWindowStatus:vehicleDataResult,
+ SDLRPCParameterNameWiperStatus:vehicleDataResult,
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeVehicleData}};
+
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSubscribeVehicleDataResponse* testResponse = [[SDLSubscribeVehicleDataResponse alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
-
- expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
- expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
- expect(testResponse.beltStatus).to(equal(vehicleDataResult));
- expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
- expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
- expect(testResponse.clusterModes).to(equal(vehicleDataResult));
- expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
- expect(testResponse.driverBraking).to(equal(vehicleDataResult));
- expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
- expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
- expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
- expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
- expect(testResponse.engineTorque).to(equal(vehicleDataResult));
- expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
- expect(testResponse.fuelRange).to(equal(vehicleDataResult));
- expect(testResponse.gps).to(equal(vehicleDataResult));
- expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
- expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
- expect(testResponse.myKey).to(equal(vehicleDataResult));
- expect(testResponse.odometer).to(equal(vehicleDataResult));
- expect(testResponse.prndl).to(equal(vehicleDataResult));
- expect(testResponse.rpm).to(equal(vehicleDataResult));
- expect(testResponse.speed).to(equal(vehicleDataResult));
- expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
- expect(testResponse.tirePressure).to(equal(vehicleDataResult));
- expect(testResponse.turnSignal).to(equal(vehicleDataResult));
- expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
+ expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
});
- it(@"Should return nil if not set", ^ {
+ context(@"init", ^{
SDLSubscribeVehicleDataResponse* testResponse = [[SDLSubscribeVehicleDataResponse alloc] init];
-
- expect(testResponse.accPedalPosition).to(beNil());
- expect(testResponse.airbagStatus).to(beNil());
- expect(testResponse.beltStatus).to(beNil());
- expect(testResponse.bodyInformation).to(beNil());
- expect(testResponse.cloudAppVehicleID).to(beNil());
- expect(testResponse.clusterModes).to(beNil());
- expect(testResponse.deviceStatus).to(beNil());
- expect(testResponse.driverBraking).to(beNil());
- expect(testResponse.eCallInfo).to(beNil());
- expect(testResponse.electronicParkBrakeStatus).to(beNil());
- expect(testResponse.emergencyEvent).to(beNil());
- expect(testResponse.engineOilLife).to(beNil());
- expect(testResponse.engineTorque).to(beNil());
- expect(testResponse.externalTemperature).to(beNil());
- expect(testResponse.fuelLevel).to(beNil());
- expect(testResponse.fuelLevel_State).to(beNil());
- expect(testResponse.fuelRange).to(beNil());
- expect(testResponse.gps).to(beNil());
- expect(testResponse.headLampStatus).to(beNil());
- expect(testResponse.instantFuelConsumption).to(beNil());
- expect(testResponse.myKey).to(beNil());
- expect(testResponse.odometer).to(beNil());
- expect(testResponse.prndl).to(beNil());
- expect(testResponse.rpm).to(beNil());
- expect(testResponse.speed).to(beNil());
- expect(testResponse.steeringWheelAngle).to(beNil());
- expect(testResponse.tirePressure).to(beNil());
- expect(testResponse.turnSignal).to(beNil());
- expect(testResponse.wiperStatus).to(beNil());
+
+ it(@"expect all properties to be nil", ^{
+ expect(testResponse.accPedalPosition).to(beNil());
+ expect(testResponse.airbagStatus).to(beNil());
+ expect(testResponse.beltStatus).to(beNil());
+ expect(testResponse.bodyInformation).to(beNil());
+ expect(testResponse.cloudAppVehicleID).to(beNil());
+ expect(testResponse.clusterModes).to(beNil());
+ expect(testResponse.deviceStatus).to(beNil());
+ expect(testResponse.driverBraking).to(beNil());
+ expect(testResponse.eCallInfo).to(beNil());
+ expect(testResponse.electronicParkBrakeStatus).to(beNil());
+ expect(testResponse.emergencyEvent).to(beNil());
+ expect(testResponse.engineOilLife).to(beNil());
+ expect(testResponse.engineTorque).to(beNil());
+ expect(testResponse.externalTemperature).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(beNil());
+ expect(testResponse.gearStatus).to(beNil());
+ expect(testResponse.gps).to(beNil());
+ expect(testResponse.handsOffSteering).to(beNil());
+ expect(testResponse.headLampStatus).to(beNil());
+ expect(testResponse.instantFuelConsumption).to(beNil());
+ expect(testResponse.myKey).to(beNil());
+ expect(testResponse.odometer).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(beNil());
+ expect(testResponse.speed).to(beNil());
+ expect(testResponse.stabilityControlsStatus).to(beNil());
+ expect(testResponse.steeringWheelAngle).to(beNil());
+ expect(testResponse.tirePressure).to(beNil());
+ expect(testResponse.turnSignal).to(beNil());
+ expect(testResponse.windowStatus).to(beNil());
+ expect(testResponse.wiperStatus).to(beNil());
+ });
});
- it(@"Should set and get Generic Network Signal Data", ^{
- SDLSubscribeVehicleDataResponse *testRequest = [[SDLSubscribeVehicleDataResponse alloc] init];
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:handsOffSteering:windowStatus:", ^{
+ SDLSubscribeVehicleDataResponse *testResponse = [[SDLSubscribeVehicleDataResponse alloc] initWithGps:vehicleDataResult speed:vehicleDataResult rpm:vehicleDataResult instantFuelConsumption:vehicleDataResult fuelRange:vehicleDataResult externalTemperature:vehicleDataResult turnSignal:vehicleDataResult gearStatus:vehicleDataResult tirePressure:vehicleDataResult odometer:vehicleDataResult beltStatus:vehicleDataResult bodyInformation:vehicleDataResult deviceStatus:vehicleDataResult driverBraking:vehicleDataResult wiperStatus:vehicleDataResult headLampStatus:vehicleDataResult engineTorque:vehicleDataResult accPedalPosition:vehicleDataResult steeringWheelAngle:vehicleDataResult engineOilLife:vehicleDataResult electronicParkBrakeStatus:vehicleDataResult cloudAppVehicleID:vehicleDataResult stabilityControlsStatus:vehicleDataResult eCallInfo:vehicleDataResult airbagStatus:vehicleDataResult emergencyEvent:vehicleDataResult clusterModes:vehicleDataResult myKey:vehicleDataResult handsOffSteering:vehicleDataResult windowStatus:vehicleDataResult];
- [testRequest setOEMCustomVehicleData:@"customOEMVehicleData" withVehicleDataState:customOEMvehicleDataResult];
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic push
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
+ });
+
+ context(@"should set OEM Custom Vehicle Data", ^{
+ SDLSubscribeVehicleDataResponse* testResponse = [[SDLSubscribeVehicleDataResponse alloc] init];
+ [testResponse setOEMCustomVehicleData:@"customOEMVehicleData" withVehicleDataState:customOEMvehicleDataResult];
- expect([testRequest getOEMCustomVehicleData:@"customOEMVehicleData"]).to(equal(customOEMvehicleDataResult));
+ it(@"expect OEM Custom Vehicle Data to be set properly", ^{
+ expect([testResponse getOEMCustomVehicleData:@"customOEMVehicleData"]).to(equal(customOEMvehicleDataResult));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubtleAlertResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubtleAlertResponseSpec.m
new file mode 100644
index 000000000..71cda2959
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubtleAlertResponseSpec.m
@@ -0,0 +1,54 @@
+//
+// SDLSubtleAlertResponseSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 7/28/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCFunctionNames.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLSubtleAlertResponse.h"
+
+QuickSpecBegin(SDLSubtleAlertResponseSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ __block SDLSubtleAlertResponse *testSubtleAlertResponse = nil;
+ __block int testTryAgainTime = 6;
+
+ it(@"Should set and get correctly", ^{
+ testSubtleAlertResponse = [[SDLSubtleAlertResponse alloc] init];
+ testSubtleAlertResponse.tryAgainTime = @(testTryAgainTime);
+
+ expect(testSubtleAlertResponse.tryAgainTime).to(equal(testTryAgainTime));
+ });
+
+ it(@"Should get correctly when initialized with a dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameResponse:@{
+ SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameTryAgainTime:@(testTryAgainTime)
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubtleAlert}};
+ testSubtleAlertResponse = [[SDLSubtleAlertResponse alloc] initWithDictionary:dict];
+
+ expect(testSubtleAlertResponse.tryAgainTime).to(equal(testTryAgainTime));
+ });
+
+ it(@"Should get correctly when initialized with initWithTryAgainTime:", ^{
+ testSubtleAlertResponse = [[SDLSubtleAlertResponse alloc] initWithTryAgainTime:@(testTryAgainTime)];
+
+ expect(testSubtleAlertResponse.tryAgainTime).to(equal(testTryAgainTime));
+ });
+
+ it(@"Should return nil if not set", ^{
+ testSubtleAlertResponse = [[SDLSubtleAlertResponse alloc] init];
+
+ expect(testSubtleAlertResponse.tryAgainTime).to(beNil());
+ });
+});
+
+QuickSpecEnd
+
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
index 3f6302e4b..390e780e3 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
@@ -19,181 +19,282 @@ QuickSpecBegin(SDLUnsubscribeVehicleDataResponseSpec)
SDLVehicleDataResult* vehicleDataResult = [[SDLVehicleDataResult alloc] init];
SDLVehicleDataResult* customOEMvehicleDataResult = [[SDLVehicleDataResult alloc] initWithCustomOEMDataType:@"customOEMVehicleData" resultCode:SDLVehicleDataResultCodeSuccess];
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+describe(@"getter/setter tests", ^{
+ context(@"init", ^{
SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] init];
-
- testResponse.gps = vehicleDataResult;
- testResponse.speed = vehicleDataResult;
- testResponse.rpm = vehicleDataResult;
- testResponse.fuelLevel = vehicleDataResult;
- testResponse.fuelLevel_State = vehicleDataResult;
- testResponse.fuelRange = vehicleDataResult;
- testResponse.instantFuelConsumption = vehicleDataResult;
- testResponse.externalTemperature = vehicleDataResult;
- testResponse.prndl = vehicleDataResult;
- testResponse.tirePressure = vehicleDataResult;
- testResponse.odometer = vehicleDataResult;
+ testResponse.accPedalPosition = vehicleDataResult;
+ testResponse.airbagStatus = vehicleDataResult;
testResponse.beltStatus = vehicleDataResult;
testResponse.bodyInformation = vehicleDataResult;
+ testResponse.cloudAppVehicleID = vehicleDataResult;
+ testResponse.clusterModes = vehicleDataResult;
testResponse.deviceStatus = vehicleDataResult;
testResponse.driverBraking = vehicleDataResult;
- testResponse.wiperStatus = vehicleDataResult;
- testResponse.headLampStatus = vehicleDataResult;
- testResponse.engineOilLife = vehicleDataResult;
- testResponse.engineTorque = vehicleDataResult;
- testResponse.accPedalPosition = vehicleDataResult;
- testResponse.steeringWheelAngle = vehicleDataResult;
testResponse.eCallInfo = vehicleDataResult;
- testResponse.airbagStatus = vehicleDataResult;
+ testResponse.electronicParkBrakeStatus = vehicleDataResult;
testResponse.emergencyEvent = vehicleDataResult;
- testResponse.clusterModes = vehicleDataResult;
+ testResponse.engineOilLife = vehicleDataResult;
+ testResponse.engineTorque = vehicleDataResult;
+ testResponse.externalTemperature = vehicleDataResult;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.fuelLevel = vehicleDataResult;
+ testResponse.fuelLevel_State = vehicleDataResult;
+#pragma clang diagnostic pop
+ testResponse.fuelRange = vehicleDataResult;
+ testResponse.gearStatus = vehicleDataResult;
+ testResponse.gps = vehicleDataResult;
+ testResponse.handsOffSteering = vehicleDataResult;
+ testResponse.headLampStatus = vehicleDataResult;
+ testResponse.instantFuelConsumption = vehicleDataResult;
testResponse.myKey = vehicleDataResult;
- testResponse.electronicParkBrakeStatus = vehicleDataResult;
+ testResponse.odometer = vehicleDataResult;
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+#pragma clang diagnostic push
+ testResponse.prndl = vehicleDataResult;
+#pragma clang diagnostic pop
+ testResponse.rpm = vehicleDataResult;
+ testResponse.speed = vehicleDataResult;
+ testResponse.stabilityControlsStatus = vehicleDataResult;
+ testResponse.steeringWheelAngle = vehicleDataResult;
+ testResponse.tirePressure = vehicleDataResult;
testResponse.turnSignal = vehicleDataResult;
- testResponse.cloudAppVehicleID = vehicleDataResult;
-
- expect(testResponse.gps).to(equal(vehicleDataResult));
- expect(testResponse.speed).to(equal(vehicleDataResult));
- expect(testResponse.rpm).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
- expect(testResponse.fuelRange).to(equal(vehicleDataResult));
- expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
- expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
- expect(testResponse.prndl).to(equal(vehicleDataResult));
- expect(testResponse.tirePressure).to(equal(vehicleDataResult));
- expect(testResponse.odometer).to(equal(vehicleDataResult));
- expect(testResponse.beltStatus).to(equal(vehicleDataResult));
- expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
- expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
- expect(testResponse.driverBraking).to(equal(vehicleDataResult));
- expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
- expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
- expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
- expect(testResponse.engineTorque).to(equal(vehicleDataResult));
- expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
- expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
- expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
- expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
- expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
- expect(testResponse.clusterModes).to(equal(vehicleDataResult));
- expect(testResponse.myKey).to(equal(vehicleDataResult));
- expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
- expect(testResponse.turnSignal).to(equal(vehicleDataResult));
- expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ testResponse.windowStatus = vehicleDataResult;
+ testResponse.wiperStatus = vehicleDataResult;
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
+ expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+#pragma clang diagnostic push
+ expect(testResponse.prndl).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
});
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameResponse:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameGPS:vehicleDataResult,
- SDLRPCParameterNameSpeed:vehicleDataResult,
- SDLRPCParameterNameRPM:vehicleDataResult,
- SDLRPCParameterNameFuelLevel:vehicleDataResult,
- SDLRPCParameterNameFuelLevelState:vehicleDataResult,
- SDLRPCParameterNameFuelRange:vehicleDataResult,
- SDLRPCParameterNameInstantFuelConsumption:vehicleDataResult,
- SDLRPCParameterNameExternalTemperature:vehicleDataResult,
- SDLRPCParameterNamePRNDL:vehicleDataResult,
- SDLRPCParameterNameTirePressure:vehicleDataResult,
- SDLRPCParameterNameOdometer:vehicleDataResult,
- SDLRPCParameterNameBeltStatus:vehicleDataResult,
- SDLRPCParameterNameBodyInformation:vehicleDataResult,
- SDLRPCParameterNameDeviceStatus:vehicleDataResult,
- SDLRPCParameterNameDriverBraking:vehicleDataResult,
- SDLRPCParameterNameWiperStatus:vehicleDataResult,
- SDLRPCParameterNameHeadLampStatus:vehicleDataResult,
- SDLRPCParameterNameEngineOilLife:vehicleDataResult,
- SDLRPCParameterNameEngineTorque:vehicleDataResult,
- SDLRPCParameterNameAccelerationPedalPosition:vehicleDataResult,
- SDLRPCParameterNameSteeringWheelAngle:vehicleDataResult,
- SDLRPCParameterNameECallInfo:vehicleDataResult,
- SDLRPCParameterNameAirbagStatus:vehicleDataResult,
- SDLRPCParameterNameEmergencyEvent:vehicleDataResult,
- SDLRPCParameterNameClusterModes:vehicleDataResult,
- SDLRPCParameterNameMyKey:vehicleDataResult,
- SDLRPCParameterNameElectronicParkBrakeStatus:vehicleDataResult,
- SDLRPCParameterNameTurnSignal:vehicleDataResult,
- SDLRPCParameterNameCloudAppVehicleID:vehicleDataResult
- },
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}} mutableCopy];
+ context(@"initWithDictionary:", ^{
+ NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameResponse:
+ @{SDLRPCParameterNameParameters:@{
+ SDLRPCParameterNameAccelerationPedalPosition:vehicleDataResult,
+ SDLRPCParameterNameAirbagStatus:vehicleDataResult,
+ SDLRPCParameterNameBeltStatus:vehicleDataResult,
+ SDLRPCParameterNameBodyInformation:vehicleDataResult,
+ SDLRPCParameterNameCloudAppVehicleID:vehicleDataResult,
+ SDLRPCParameterNameClusterModes:vehicleDataResult,
+ SDLRPCParameterNameDeviceStatus:vehicleDataResult,
+ SDLRPCParameterNameDriverBraking:vehicleDataResult,
+ SDLRPCParameterNameECallInfo:vehicleDataResult,
+ SDLRPCParameterNameElectronicParkBrakeStatus:vehicleDataResult,
+ SDLRPCParameterNameEmergencyEvent:vehicleDataResult,
+ SDLRPCParameterNameEngineOilLife:vehicleDataResult,
+ SDLRPCParameterNameEngineTorque:vehicleDataResult,
+ SDLRPCParameterNameExternalTemperature:vehicleDataResult,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNameFuelLevel:vehicleDataResult,
+ SDLRPCParameterNameFuelLevelState:vehicleDataResult,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameFuelRange:vehicleDataResult,
+ SDLRPCParameterNameGPS:vehicleDataResult,
+ SDLRPCParameterNameGearStatus:vehicleDataResult,
+ SDLRPCParameterNameHandsOffSteering:vehicleDataResult,
+ SDLRPCParameterNameHeadLampStatus:vehicleDataResult,
+ SDLRPCParameterNameInstantFuelConsumption:vehicleDataResult,
+ SDLRPCParameterNameMyKey:vehicleDataResult,
+ SDLRPCParameterNameOdometer:vehicleDataResult,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNamePRNDL:vehicleDataResult,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameRPM:vehicleDataResult,
+ SDLRPCParameterNameSpeed:vehicleDataResult,
+ SDLRPCParameterNameStabilityControlsStatus:vehicleDataResult,
+ SDLRPCParameterNameSteeringWheelAngle:vehicleDataResult,
+ SDLRPCParameterNameTirePressure:vehicleDataResult,
+ SDLRPCParameterNameTurnSignal:vehicleDataResult,
+ SDLRPCParameterNameWindowStatus:vehicleDataResult,
+ SDLRPCParameterNameWiperStatus:vehicleDataResult,
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
-
- expect(testResponse.gps).to(equal(vehicleDataResult));
- expect(testResponse.speed).to(equal(vehicleDataResult));
- expect(testResponse.rpm).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
- expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
- expect(testResponse.fuelRange).to(equal(vehicleDataResult));
- expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
- expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
- expect(testResponse.prndl).to(equal(vehicleDataResult));
- expect(testResponse.tirePressure).to(equal(vehicleDataResult));
- expect(testResponse.odometer).to(equal(vehicleDataResult));
- expect(testResponse.beltStatus).to(equal(vehicleDataResult));
- expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
- expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
- expect(testResponse.driverBraking).to(equal(vehicleDataResult));
- expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
- expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
- expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
- expect(testResponse.engineTorque).to(equal(vehicleDataResult));
- expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
- expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
- expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
- expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
- expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
- expect(testResponse.clusterModes).to(equal(vehicleDataResult));
- expect(testResponse.myKey).to(equal(vehicleDataResult));
- expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
- expect(testResponse.turnSignal).to(equal(vehicleDataResult));
- expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
+ expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+#pragma clang diagnostic push
+ expect(testResponse.prndl).to(equal(vehicleDataResult));
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
});
- it(@"Should return nil if not set", ^ {
+ context(@"init", ^{
SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] init];
-
- expect(testResponse.gps).to(beNil());
- expect(testResponse.speed).to(beNil());
- expect(testResponse.rpm).to(beNil());
- expect(testResponse.fuelLevel).to(beNil());
- expect(testResponse.fuelLevel_State).to(beNil());
- expect(testResponse.fuelRange).to(beNil());
- expect(testResponse.instantFuelConsumption).to(beNil());
- expect(testResponse.externalTemperature).to(beNil());
- expect(testResponse.prndl).to(beNil());
- expect(testResponse.tirePressure).to(beNil());
- expect(testResponse.odometer).to(beNil());
- expect(testResponse.beltStatus).to(beNil());
- expect(testResponse.bodyInformation).to(beNil());
- expect(testResponse.deviceStatus).to(beNil());
- expect(testResponse.driverBraking).to(beNil());
- expect(testResponse.wiperStatus).to(beNil());
- expect(testResponse.headLampStatus).to(beNil());
- expect(testResponse.engineOilLife).to(beNil());
- expect(testResponse.engineTorque).to(beNil());
- expect(testResponse.accPedalPosition).to(beNil());
- expect(testResponse.steeringWheelAngle).to(beNil());
- expect(testResponse.eCallInfo).to(beNil());
- expect(testResponse.airbagStatus).to(beNil());
- expect(testResponse.emergencyEvent).to(beNil());
- expect(testResponse.clusterModes).to(beNil());
- expect(testResponse.myKey).to(beNil());
- expect(testResponse.electronicParkBrakeStatus).to(beNil());
- expect(testResponse.turnSignal).to(beNil());
- expect(testResponse.cloudAppVehicleID).to(beNil());
+
+ it(@"expect all properties to be nil", ^{
+ expect(testResponse.accPedalPosition).to(beNil());
+ expect(testResponse.airbagStatus).to(beNil());
+ expect(testResponse.beltStatus).to(beNil());
+ expect(testResponse.bodyInformation).to(beNil());
+ expect(testResponse.cloudAppVehicleID).to(beNil());
+ expect(testResponse.clusterModes).to(beNil());
+ expect(testResponse.deviceStatus).to(beNil());
+ expect(testResponse.driverBraking).to(beNil());
+ expect(testResponse.eCallInfo).to(beNil());
+ expect(testResponse.electronicParkBrakeStatus).to(beNil());
+ expect(testResponse.emergencyEvent).to(beNil());
+ expect(testResponse.engineOilLife).to(beNil());
+ expect(testResponse.engineTorque).to(beNil());
+ expect(testResponse.externalTemperature).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(beNil());
+ expect(testResponse.gearStatus).to(beNil());
+ expect(testResponse.gps).to(beNil());
+ expect(testResponse.handsOffSteering).to(beNil());
+ expect(testResponse.headLampStatus).to(beNil());
+ expect(testResponse.instantFuelConsumption).to(beNil());
+ expect(testResponse.myKey).to(beNil());
+ expect(testResponse.odometer).to(beNil());
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+#pragma clang diagnostic push
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(beNil());
+ expect(testResponse.speed).to(beNil());
+ expect(testResponse.stabilityControlsStatus).to(beNil());
+ expect(testResponse.steeringWheelAngle).to(beNil());
+ expect(testResponse.tirePressure).to(beNil());
+ expect(testResponse.turnSignal).to(beNil());
+ expect(testResponse.windowStatus).to(beNil());
+ expect(testResponse.wiperStatus).to(beNil());
+ });
});
- it(@"Should set and get Generic Network Signal Data", ^{
- SDLUnsubscribeVehicleDataResponse *testRequest = [[SDLUnsubscribeVehicleDataResponse alloc] init];
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:handsOffSteering:windowStatus:", ^{
+ SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithGps:vehicleDataResult speed:vehicleDataResult rpm:vehicleDataResult instantFuelConsumption:vehicleDataResult fuelRange:vehicleDataResult externalTemperature:vehicleDataResult turnSignal:vehicleDataResult gearStatus:vehicleDataResult tirePressure:vehicleDataResult odometer:vehicleDataResult beltStatus:vehicleDataResult bodyInformation:vehicleDataResult deviceStatus:vehicleDataResult driverBraking:vehicleDataResult wiperStatus:vehicleDataResult headLampStatus:vehicleDataResult engineTorque:vehicleDataResult accPedalPosition:vehicleDataResult steeringWheelAngle:vehicleDataResult engineOilLife:vehicleDataResult electronicParkBrakeStatus:vehicleDataResult cloudAppVehicleID:vehicleDataResult stabilityControlsStatus:vehicleDataResult eCallInfo:vehicleDataResult airbagStatus:vehicleDataResult emergencyEvent:vehicleDataResult clusterModes:vehicleDataResult myKey:vehicleDataResult handsOffSteering:vehicleDataResult windowStatus:vehicleDataResult];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+#pragma clang diagnostic push
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
+ });
- [testRequest setOEMCustomVehicleData:@"customOEMVehicleData" withVehicleDataState:customOEMvehicleDataResult];
+ context(@"should set OEM Custom Vehicle Data", ^{
+ SDLUnsubscribeVehicleDataResponse *testRequest = [[SDLUnsubscribeVehicleDataResponse alloc] init];
+ [testRequest setOEMCustomVehicleData:@"customOEMVehicleData" withVehicleDataState:customOEMvehicleDataResult];
- expect([testRequest getOEMCustomVehicleData:@"customOEMVehicleData"]).to(equal(customOEMvehicleDataResult));
+ it(@"expect OEM Custom Vehicle Data to be set properly", ^{
+ expect([testRequest getOEMCustomVehicleData:@"customOEMVehicleData"]).to(equal(customOEMvehicleDataResult));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m
index b39ad49b7..413def97b 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m
@@ -20,11 +20,8 @@ describe(@"Getter/Setter Tests", ^{
__block SDLAppServiceRecord *testUpdatedAppServiceRecord = nil;
beforeEach(^{
- testUpdateReason = SDLServiceUpdateActivated;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testUpdateReason = SDLServiceUpdateReasonActivated;
testUpdatedAppServiceRecord = [[SDLAppServiceRecord alloc] initWithDictionary:@{SDLRPCParameterNameServiceID:@"1234", SDLRPCParameterNameServicePublished:@YES}];
-#pragma clang diagnostic pop
});
it(@"Should set and get correctly", ^{
@@ -40,10 +37,8 @@ describe(@"Getter/Setter Tests", ^{
NSDictionary *dict = @{SDLRPCParameterNameUpdateReason:testUpdateReason,
SDLRPCParameterNameUpdatedAppServiceRecord:testUpdatedAppServiceRecord
};
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLAppServiceCapability *testStruct = [[SDLAppServiceCapability alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+
expect(testStruct.updateReason).to(equal(testUpdateReason));
expect(testStruct.updatedAppServiceRecord).to(equal(testUpdatedAppServiceRecord));
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m
index 0bdc9fff4..e1c37c04a 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m
@@ -18,7 +18,6 @@
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
#import "SDLMsgVersion.h"
-#import "SDLSyncMsgVersion.h"
#import "SDLWeatherServiceManifest.h"
QuickSpecBegin(SDLAppServiceManifestSpec)
@@ -29,10 +28,6 @@ describe(@"Getter/Setter Tests", ^ {
__block SDLAppServiceType testAppServiceType = nil;
__block SDLImage *testServiceIcon = nil;
__block NSNumber<SDLBool> *testAllowAppConsumers = nil;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- __block SDLSyncMsgVersion *testSyncMsgVersion = nil;
-#pragma clang diagnostic pop
__block SDLMsgVersion *testSDLMsgVersion = nil;
__block NSArray<NSNumber<SDLInt> *> *testHandledRPCs = nil;
__block SDLWeatherServiceManifest *testWeatherServiceManifest = nil;
@@ -45,10 +40,6 @@ describe(@"Getter/Setter Tests", ^ {
testAppServiceType = SDLAppServiceTypeNavigation;
testServiceIcon = [[SDLImage alloc] initWithName:@"testImage" isTemplate:false];
testAllowAppConsumers = @YES;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testSyncMsgVersion = [[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:2 patchVersion:1];
-#pragma clang diagnostic pop
testSDLMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:5 minorVersion:2 patchVersion:1];
testHandledRPCs = [[NSArray alloc] initWithObjects:[SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameAddCommand], [SDLFunctionID.sharedInstance functionIdForName:SDLRPCFunctionNameCreateInteractionChoiceSet], nil];
testWeatherServiceManifest = [[SDLWeatherServiceManifest alloc] initWithCurrentForecastSupported:true maxMultidayForecastAmount:3 maxHourlyForecastAmount:0 maxMinutelyForecastAmount:0 weatherForLocationSupported:false];
@@ -63,10 +54,6 @@ describe(@"Getter/Setter Tests", ^ {
testStruct.serviceType = testServiceType;
testStruct.serviceIcon = testServiceIcon;
testStruct.allowAppConsumers = testAllowAppConsumers;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testStruct.rpcSpecVersion = testSyncMsgVersion;
-#pragma clang diagnostic pop
testStruct.handledRPCs = testHandledRPCs;
testStruct.weatherServiceManifest = testWeatherServiceManifest;
testStruct.mediaServiceManifest = testMediaServiceManifest;
@@ -76,10 +63,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.serviceType).to(match(testServiceType));
expect(testStruct.serviceIcon).to(equal(testServiceIcon));
expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
testStruct.maxRPCSpecVersion = testSDLMsgVersion;
expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
@@ -105,47 +88,18 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameMediaServiceManifest:testMediaServiceManifest,
SDLRPCParameterNameNavigationServiceManifest:testNavigationServiceManifest
};
- });
- it(@"Should get correctly when initialized with a dictionary and using SycMsgVersion", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
- expect(testStruct.serviceName).to(match(testServiceName));
- expect(testStruct.serviceType).to(equal(testServiceType));
- expect(testStruct.serviceIcon).to(equal(testServiceIcon));
- expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal([[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:1 patchVersion:0]));
-#pragma clang diagnostic pop
- expect(testStruct.maxRPCSpecVersion).to(equal([[SDLMsgVersion alloc] initWithMajorVersion:5 minorVersion:1 patchVersion:0]));
- expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
- expect(testStruct.weatherServiceManifest).to(equal(testWeatherServiceManifest));
- expect(testStruct.mediaServiceManifest).to(equal(testMediaServiceManifest));
- expect(testStruct.navigationServiceManifest).to(equal(testNavigationServiceManifest));
- });
+ SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithDictionary:dict];
- it(@"Should get correctly when initialized with a dictionary and using SDLMsgVersion", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
expect(testStruct.serviceName).to(match(testServiceName));
expect(testStruct.serviceType).to(equal(testServiceType));
expect(testStruct.serviceIcon).to(equal(testServiceIcon));
expect(testStruct.allowAppConsumers).to(beTrue());
expect(testStruct.maxRPCSpecVersion).to(equal([[SDLMsgVersion alloc] initWithMajorVersion:5 minorVersion:1 patchVersion:0]));
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal([[SDLSyncMsgVersion alloc] initWithMajorVersion:5 minorVersion:1 patchVersion:0]));
-#pragma clang diagnostic pop
expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
expect(testStruct.weatherServiceManifest).to(equal(testWeatherServiceManifest));
expect(testStruct.mediaServiceManifest).to(equal(testMediaServiceManifest));
expect(testStruct.navigationServiceManifest).to(equal(testNavigationServiceManifest));
-
});
});
@@ -156,10 +110,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.serviceType).to(equal(testAppServiceType));
expect(testStruct.serviceIcon).to(beNil());
expect(testStruct.allowAppConsumers).to(beNil());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(beNil());
-#pragma clang diagnostic pop
expect(testStruct.maxRPCSpecVersion).to(beNil());
expect(testStruct.handledRPCs).to(beNil());
expect(testStruct.weatherServiceManifest).to(beNil());
@@ -167,26 +117,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.navigationServiceManifest).to(beNil());
});
- it(@"Should init correctly with initWithMediaServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithMediaServiceName:testServiceName serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers rpcSpecVersion:testSyncMsgVersion handledRPCs:testHandledRPCs mediaServiceManifest:testMediaServiceManifest];
-#pragma clang diagnostic pop
- expect(testStruct.serviceName).to(match(testServiceName));
- expect(testStruct.serviceType).to(equal(SDLAppServiceTypeMedia));
- expect(testStruct.serviceIcon).to(equal(testServiceIcon));
- expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
- expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
- expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
- expect(testStruct.weatherServiceManifest).to(beNil());
- expect(testStruct.mediaServiceManifest).to(equal(testMediaServiceManifest));
- expect(testStruct.navigationServiceManifest).to(beNil());
- });
-
it(@"Should init correctly with initWithMediaServiceName:serviceIcon:allowAppConsumers:maxRPCSpecVersion:handledRPCs:mediaServiceManifest:", ^{
SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithMediaServiceName:testServiceName serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers maxRPCSpecVersion:testSDLMsgVersion handledRPCs:testHandledRPCs mediaServiceManifest:testMediaServiceManifest];
@@ -194,10 +124,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.serviceType).to(equal(SDLAppServiceTypeMedia));
expect(testStruct.serviceIcon).to(equal(testServiceIcon));
expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
expect(testStruct.weatherServiceManifest).to(beNil());
@@ -205,26 +131,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.navigationServiceManifest).to(beNil());
});
- it(@"Should init correctly with initWithWeatherServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:weatherServiceManifest:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithWeatherServiceName:testServiceName serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers rpcSpecVersion:testSyncMsgVersion handledRPCs:testHandledRPCs weatherServiceManifest:testWeatherServiceManifest];
-#pragma clang diagnostic pop
- expect(testStruct.serviceName).to(match(testServiceName));
- expect(testStruct.serviceType).to(equal(SDLAppServiceTypeWeather));
- expect(testStruct.serviceIcon).to(equal(testServiceIcon));
- expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
- expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
- expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
- expect(testStruct.weatherServiceManifest).to(equal(testWeatherServiceManifest));
- expect(testStruct.mediaServiceManifest).to(beNil());
- expect(testStruct.navigationServiceManifest).to(beNil());
- });
-
it(@"Should init correctly with initWithWeatherServiceName:serviceIcon:allowAppConsumers:maxRPCSpecVersion:handledRPCs:weatherServiceManifest:", ^{
SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithWeatherServiceName:testServiceName serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers maxRPCSpecVersion:testSDLMsgVersion handledRPCs:testHandledRPCs weatherServiceManifest:testWeatherServiceManifest];
@@ -232,10 +138,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.serviceType).to(equal(SDLAppServiceTypeWeather));
expect(testStruct.serviceIcon).to(equal(testServiceIcon));
expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
expect(testStruct.weatherServiceManifest).to(equal(testWeatherServiceManifest));
@@ -243,27 +145,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.navigationServiceManifest).to(beNil());
});
-
- it(@"Should init correctly with initWithNavigationServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:navigationServiceManifest:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithNavigationServiceName:testServiceName serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers rpcSpecVersion:testSyncMsgVersion handledRPCs:testHandledRPCs navigationServiceManifest:testNavigationServiceManifest];
-#pragma clang diagnostic pop
- expect(testStruct.serviceName).to(match(testServiceName));
- expect(testStruct.serviceType).to(equal(SDLAppServiceTypeNavigation));
- expect(testStruct.serviceIcon).to(equal(testServiceIcon));
- expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
- expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
- expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
- expect(testStruct.weatherServiceManifest).to(beNil());
- expect(testStruct.mediaServiceManifest).to(beNil());
- expect(testStruct.navigationServiceManifest).to(equal(testNavigationServiceManifest));
- });
-
it(@"Should init correctly with initWithNavigationServiceName:serviceIcon:allowAppConsumers:maxRPCSpecVersion:handledRPCs:navigationServiceManifest:", ^{
SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithNavigationServiceName:testServiceName serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers maxRPCSpecVersion:testSDLMsgVersion handledRPCs:testHandledRPCs navigationServiceManifest:testNavigationServiceManifest];
@@ -271,10 +152,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.serviceType).to(equal(SDLAppServiceTypeNavigation));
expect(testStruct.serviceIcon).to(equal(testServiceIcon));
expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
expect(testStruct.weatherServiceManifest).to(beNil());
@@ -282,26 +159,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.navigationServiceManifest).to(equal(testNavigationServiceManifest));
});
- it(@"Should init correctly with initWithServiceName:serviceType:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:weatherServiceManifest:navigationServiceManifest:", ^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithServiceName:testServiceName serviceType:testServiceType serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers rpcSpecVersion:testSyncMsgVersion handledRPCs:testHandledRPCs mediaServiceManifest:testMediaServiceManifest weatherServiceManifest:testWeatherServiceManifest navigationServiceManifest:testNavigationServiceManifest];
-#pragma clang diagnostic pop
- expect(testStruct.serviceName).to(match(testServiceName));
- expect(testStruct.serviceType).to(equal(testServiceType));
- expect(testStruct.serviceIcon).to(equal(testServiceIcon));
- expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
- expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
- expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
- expect(testStruct.weatherServiceManifest).to(equal(testWeatherServiceManifest));
- expect(testStruct.mediaServiceManifest).to(equal(testMediaServiceManifest));
- expect(testStruct.navigationServiceManifest).to(equal(testNavigationServiceManifest));
- });
-
it(@"Should init correctly with initWithServiceName:serviceType:serviceIcon:allowAppConsumers:maxRPCSpecVersion:handledRPCs:mediaServiceManifest:weatherServiceManifest:navigationServiceManifest:", ^{
SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithServiceName:testServiceName serviceType:testServiceType serviceIcon:testServiceIcon allowAppConsumers:testAllowAppConsumers maxRPCSpecVersion:testSDLMsgVersion handledRPCs:testHandledRPCs mediaServiceManifest:testMediaServiceManifest weatherServiceManifest:testWeatherServiceManifest navigationServiceManifest:testNavigationServiceManifest];
@@ -309,10 +166,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.serviceType).to(equal(testServiceType));
expect(testStruct.serviceIcon).to(equal(testServiceIcon));
expect(testStruct.allowAppConsumers).to(beTrue());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(equal(testSyncMsgVersion));
-#pragma clang diagnostic pop
expect(testStruct.maxRPCSpecVersion).to(equal(testSDLMsgVersion));
expect(testStruct.handledRPCs).to(equal(testHandledRPCs));
expect(testStruct.weatherServiceManifest).to(equal(testWeatherServiceManifest));
@@ -327,10 +180,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.serviceType).to(beNil());
expect(testStruct.serviceIcon).to(beNil());
expect(testStruct.allowAppConsumers).to(beNil());
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.rpcSpecVersion).to(beNil());
-#pragma clang diagnostic pop
expect(testStruct.maxRPCSpecVersion).to(beNil());
expect(testStruct.handledRPCs).to(beNil());
expect(testStruct.weatherServiceManifest).to(beNil());
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m
index 14b88578f..f0a673253 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m
@@ -19,10 +19,7 @@ describe(@"Getter/Setter Tests", ^{
__block NSArray<SDLAppServiceCapability *> *testAppServices = nil;
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testAppServices = @[[[SDLAppServiceCapability alloc] initWithDictionary:@{SDLRPCParameterNameUpdateReason:SDLServiceUpdateRemoved}]];
-#pragma clang diagnostic pop
+ testAppServices = @[[[SDLAppServiceCapability alloc] initWithDictionary:@{SDLRPCParameterNameUpdateReason:SDLServiceUpdateReasonRemoved}]];
});
it(@"Should set and get correctly", ^{
@@ -39,12 +36,8 @@ describe(@"Getter/Setter Tests", ^{
});
it(@"Should get correctly when initialized with a dictionary", ^{
- NSDictionary *dict = @{SDLRPCParameterNameAppServices:testAppServices
- };
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ NSDictionary *dict = @{SDLRPCParameterNameAppServices:testAppServices};
SDLAppServicesCapabilities *testStruct = [[SDLAppServicesCapabilities alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
expect(testStruct.appServices).to(equal(testAppServices));
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m
index d23b64eba..5ad2a0d22 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m
@@ -33,7 +33,7 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should set and get correctly", ^ {
- SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] init];
+ SDLAudioControlCapabilities *testStruct = [[SDLAudioControlCapabilities alloc] init];
testStruct.moduleName = @"module";
testStruct.moduleInfo = testModuleInfo;
@@ -52,23 +52,8 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.equalizerMaxChannelId).to(equal(@56));
});
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] initWithModuleName:@"module"];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"module"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.sourceAvailable).to(beNil());
- expect(testStruct.keepContextAvailable).to(beNil());
- expect(testStruct.volumeAvailable).to(beNil());
- expect(testStruct.equalizerAvailable).to(beNil());
- expect(testStruct.equalizerMaxChannelId).to(beNil());
- });
-
- it(@"Should set and get correctly", ^ {
- SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] initWithModuleName:@"module" moduleInfo:testModuleInfo];
+ it(@"Should initialize correctly with initWithModuleName:moduleInfo:", ^ {
+ SDLAudioControlCapabilities *testStruct = [[SDLAudioControlCapabilities alloc] initWithModuleName:@"module" moduleInfo:testModuleInfo];
expect(testStruct.moduleName).to(equal(@"module"));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
@@ -78,28 +63,10 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.equalizerAvailable).to(beNil());
expect(testStruct.equalizerMaxChannelId).to(beNil());
});
-
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] initWithModuleName:@"module" sourceAvailable:@NO keepContextAvailable:@NO volumeAvailable:@YES equalizerAvailable:@NO equalizerMaxChannelID:@34];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"module"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.sourceAvailable).to(equal(@(NO)));
- expect(testStruct.keepContextAvailable).to(equal(@NO));
- expect(testStruct.volumeAvailable).to(equal(@(YES)));
- expect(testStruct.equalizerAvailable).to(equal(@(NO)));
- expect(testStruct.equalizerMaxChannelId).to(equal(@34));
- });
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] initWithModuleName:@"module" moduleInfo:testModuleInfo sourceAvailable:@NO keepContextAvailable:@NO volumeAvailable:@YES equalizerAvailable:@NO equalizerMaxChannelID:@34];
-#pragma clang diagnostic pop
-
+ it(@"Should initialize correctly with initWithModuleName:moduleInfo:sourceAvailable:keepContextAvailable:volumeAvailable:equalizerAvailable:equalizerMaxChannelID:", ^ {
+ SDLAudioControlCapabilities *testStruct = [[SDLAudioControlCapabilities alloc] initWithModuleName:@"module" moduleInfo:testModuleInfo sourceAvailable:@NO keepContextAvailable:@NO volumeAvailable:@YES equalizerAvailable:@NO equalizerMaxChannelID:@34];
+
expect(testStruct.moduleName).to(equal(@"module"));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
expect(testStruct.sourceAvailable).to(equal(@(NO)));
@@ -109,20 +76,16 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.equalizerMaxChannelId).to(equal(@34));
});
-
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameModuleName:@"module",
- SDLRPCParameterNameModuleInfo:testModuleInfo,
- SDLRPCParameterNameSourceAvailable:@(NO),
- SDLRPCParameterNameKeepContextAvailable: @YES,
- SDLRPCParameterNameVolumeAvailable:@(YES),
- SDLRPCParameterNameEqualizerAvailable:@(NO),
- SDLRPCParameterNameEqualizerMaxChannelId:@12
- } mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ it(@"Should initialize correctly with a dictionary", ^ {
+ NSDictionary *dict = @{SDLRPCParameterNameModuleName:@"module",
+ SDLRPCParameterNameModuleInfo:testModuleInfo,
+ SDLRPCParameterNameSourceAvailable:@(NO),
+ SDLRPCParameterNameKeepContextAvailable: @YES,
+ SDLRPCParameterNameVolumeAvailable:@(YES),
+ SDLRPCParameterNameEqualizerAvailable:@(NO),
+ SDLRPCParameterNameEqualizerMaxChannelId:@12
+ };
+ SDLAudioControlCapabilities *testStruct = [[SDLAudioControlCapabilities alloc] initWithDictionary:dict];
expect(testStruct.moduleName).to(equal(@"module"));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
@@ -131,11 +94,10 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.volumeAvailable).to(equal(@(YES)));
expect(testStruct.equalizerAvailable).to(equal(@(NO)));
expect(testStruct.equalizerMaxChannelId).to(equal(@12));
-
});
it(@"Should return nil if not set", ^ {
- SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] init];
+ SDLAudioControlCapabilities *testStruct = [[SDLAudioControlCapabilities alloc] init];
expect(testStruct.moduleName).to(beNil());
expect(testStruct.moduleInfo).to(beNil());
@@ -144,7 +106,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.volumeAvailable).to(beNil());
expect(testStruct.equalizerAvailable).to(beNil());
expect(testStruct.equalizerMaxChannelId).to(beNil());
-
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m
index 0322426fb..7460a85bc 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m
@@ -3,20 +3,19 @@
// SmartDeviceLink-iOS
//
-#import <Foundation/Foundation.h>
-
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
#import "SDLClimateControlCapabilities.h"
#import "SDLDefrostZone.h"
-#import "SDLVentilationMode.h"
#import "SDLRPCParameterNames.h"
+#import "SDLVentilationMode.h"
QuickSpecBegin(SDLClimateControlCapabilitiesSpec)
describe(@"Getter/Setter Tests", ^ {
+ __block NSString *testModuleName = @"Name";
__block SDLModuleInfo *testModuleInfo = nil;
__block SDLGrid *testGird = nil;
@@ -35,9 +34,8 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should set and get correctly", ^ {
-
SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] init];
- testStruct.moduleName = @"Name";
+ testStruct.moduleName = testModuleName;
testStruct.moduleInfo = testModuleInfo;
testStruct.fanSpeedAvailable = @YES;
testStruct.desiredTemperatureAvailable = @NO;
@@ -56,7 +54,7 @@ describe(@"Getter/Setter Tests", ^ {
testStruct.heatedMirrorsAvailable = @(NO);
testStruct.climateEnableAvailable = @(NO);
- expect(testStruct.moduleName).to(equal(@"Name"));
+ expect(testStruct.moduleName).to(equal(testModuleName));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
expect(testStruct.fanSpeedAvailable).to(equal(@YES));
expect(testStruct.desiredTemperatureAvailable).to(equal(@NO));
@@ -77,32 +75,29 @@ describe(@"Getter/Setter Tests", ^ {
});
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameModuleName:@"Name",
- SDLRPCParameterNameModuleInfo:testModuleInfo,
- SDLRPCParameterNameFanSpeedAvailable:@YES,
- SDLRPCParameterNameDesiredTemperatureAvailable:@NO,
- SDLRPCParameterNameACEnableAvailable:@NO,
- SDLRPCParameterNameACMaxEnableAvailable:@NO,
- SDLRPCParameterNameCirculateAirEnableAvailable:@YES,
- SDLRPCParameterNameAutoModeEnableAvailable:@NO,
- SDLRPCParameterNameDualModeEnableAvailable:@NO,
- SDLRPCParameterNameDefrostZoneAvailable:@YES,
- SDLRPCParameterNameDefrostZone:[@[SDLDefrostZoneFront] copy],
- SDLRPCParameterNameVentilationModeAvailable:@NO,
- SDLRPCParameterNameVentilationMode:[@[SDLVentilationModeUpper] copy],
- SDLRPCParameterNameHeatedSteeringWheelAvailable:@YES,
- SDLRPCParameterNameHeatedWindshieldAvailable:@NO,
- SDLRPCParameterNameHeatedRearWindowAvailable:@YES,
- SDLRPCParameterNameHeatedMirrorsAvailable:@NO,
- SDLRPCParameterNameClimateEnableAvailable:@NO,
- } mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"Name"));
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSDictionary *dict = @{SDLRPCParameterNameModuleName:testModuleName,
+ SDLRPCParameterNameModuleInfo:testModuleInfo,
+ SDLRPCParameterNameFanSpeedAvailable:@YES,
+ SDLRPCParameterNameDesiredTemperatureAvailable:@NO,
+ SDLRPCParameterNameACEnableAvailable:@NO,
+ SDLRPCParameterNameACMaxEnableAvailable:@NO,
+ SDLRPCParameterNameCirculateAirEnableAvailable:@YES,
+ SDLRPCParameterNameAutoModeEnableAvailable:@NO,
+ SDLRPCParameterNameDualModeEnableAvailable:@NO,
+ SDLRPCParameterNameDefrostZoneAvailable:@YES,
+ SDLRPCParameterNameDefrostZone:[@[SDLDefrostZoneFront] copy],
+ SDLRPCParameterNameVentilationModeAvailable:@NO,
+ SDLRPCParameterNameVentilationMode:[@[SDLVentilationModeUpper] copy],
+ SDLRPCParameterNameHeatedSteeringWheelAvailable:@YES,
+ SDLRPCParameterNameHeatedWindshieldAvailable:@NO,
+ SDLRPCParameterNameHeatedRearWindowAvailable:@YES,
+ SDLRPCParameterNameHeatedMirrorsAvailable:@NO,
+ SDLRPCParameterNameClimateEnableAvailable:@NO,
+ };
+ SDLClimateControlCapabilities *testStruct = [[SDLClimateControlCapabilities alloc] initWithDictionary:dict];
+
+ expect(testStruct.moduleName).to(equal(testModuleName));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
expect(testStruct.fanSpeedAvailable).to(equal(@YES));
expect(testStruct.desiredTemperatureAvailable).to(equal(@NO));
@@ -122,75 +117,27 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.climateEnableAvailable).to(equal(@NO));
});
- it(@"Should get correctly when initialized with module data and other climate control capabilities parameters", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] initWithModuleName:@"Name" fanSpeedAvailable:YES desiredTemperatureAvailable:NO acEnableAvailable:NO acMaxEnableAvailable:YES circulateAirAvailable:NO autoModeEnableAvailable:NO dualModeEnableAvailable:NO defrostZoneAvailable:YES ventilationModeAvailable:YES];
-
- expect(testStruct.moduleName).to(equal(@"Name"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.fanSpeedAvailable).to(equal(@YES));
- expect(testStruct.desiredTemperatureAvailable).to(equal(@NO));
- expect(testStruct.acEnableAvailable).to(equal(@NO));
- expect(testStruct.acMaxEnableAvailable).to(equal(@YES));
- expect(testStruct.circulateAirEnableAvailable).to(equal(@NO));
- expect(testStruct.autoModeEnableAvailable).to(equal(@NO));
- expect(testStruct.dualModeEnableAvailable).to(equal(@NO));
- expect(testStruct.defrostZoneAvailable).to(equal(@YES));
- expect(testStruct.ventilationModeAvailable).to(equal(@YES));
- expect(testStruct.heatedSteeringWheelAvailable).to(equal(@NO));
- expect(testStruct.heatedWindshieldAvailable).to(equal(@NO));
- expect(testStruct.heatedRearWindowAvailable).to(equal(@NO));
- expect(testStruct.heatedMirrorsAvailable).to(equal(@NO));
- expect(testStruct.climateEnableAvailable).to(equal(@NO));
- #pragma clang diagnostic pop
- });
-
- it(@"Should get correctly when initialized with module data and other climate control capabilities parameters", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] initWithModuleName:@"Name" fanSpeedAvailable:YES desiredTemperatureAvailable:NO acEnableAvailable:NO acMaxEnableAvailable:YES circulateAirAvailable:NO autoModeEnableAvailable:NO dualModeEnableAvailable:NO defrostZoneAvailable:YES ventilationModeAvailable:YES heatedSteeringWheelAvailable:YES heatedWindshieldAvailable:NO heatedRearWindowAvailable:YES heatedMirrorsAvailable:NO];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"Name"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.fanSpeedAvailable).to(equal(@YES));
- expect(testStruct.desiredTemperatureAvailable).to(equal(@NO));
- expect(testStruct.acEnableAvailable).to(equal(@NO));
- expect(testStruct.acMaxEnableAvailable).to(equal(@YES));
- expect(testStruct.circulateAirEnableAvailable).to(equal(@NO));
- expect(testStruct.autoModeEnableAvailable).to(equal(@NO));
- expect(testStruct.dualModeEnableAvailable).to(equal(@NO));
- expect(testStruct.defrostZoneAvailable).to(equal(@YES));
- expect(testStruct.ventilationModeAvailable).to(equal(@YES));
- expect(testStruct.heatedSteeringWheelAvailable).to(equal(@YES));
- expect(testStruct.heatedWindshieldAvailable).to(equal(@NO));
- expect(testStruct.heatedRearWindowAvailable).to(equal(@YES));
- expect(testStruct.heatedMirrorsAvailable).to(equal(@NO));
-#pragma clang diagnostic pop
- });
-
- it(@"Should get correctly when initialized with module data and other climate control capabilities parameters", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] initWithModuleName:@"Name" fanSpeedAvailable:YES desiredTemperatureAvailable:NO acEnableAvailable:NO acMaxEnableAvailable:YES circulateAirAvailable:NO autoModeEnableAvailable:NO dualModeEnableAvailable:NO defrostZoneAvailable:YES ventilationModeAvailable:YES heatedSteeringWheelAvailable:YES heatedWindshieldAvailable:NO heatedRearWindowAvailable:YES heatedMirrorsAvailable:NO climateEnableAvailable:NO];
-#pragma clang diagnostic pop
+ it(@"Should get correctly when initialized with initWithModuleName:moduleInfo:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:heatedSteeringWheelAvailable:heatedWindshieldAvailable:heatedRearWindowAvailable:heatedMirrorsAvailable:climateEnableAvailable:", ^ {
+ SDLClimateControlCapabilities *testStruct = [[SDLClimateControlCapabilities alloc] initWithModuleName:testModuleName moduleInfo:testModuleInfo fanSpeedAvailable:YES desiredTemperatureAvailable:YES acEnableAvailable:YES acMaxEnableAvailable:YES circulateAirAvailable:YES autoModeEnableAvailable:YES dualModeEnableAvailable:YES defrostZoneAvailable:YES ventilationModeAvailable:YES heatedSteeringWheelAvailable:YES heatedWindshieldAvailable:YES heatedRearWindowAvailable:YES heatedMirrorsAvailable:YES climateEnableAvailable:YES];
- expect(testStruct.moduleName).to(equal(@"Name"));
+ expect(testStruct.moduleName).to(equal(testModuleName));
+ expect(testStruct.moduleInfo).to(equal(testModuleInfo));
expect(testStruct.fanSpeedAvailable).to(equal(@YES));
- expect(testStruct.desiredTemperatureAvailable).to(equal(@NO));
- expect(testStruct.acEnableAvailable).to(equal(@NO));
+ expect(testStruct.desiredTemperatureAvailable).to(equal(@YES));
+ expect(testStruct.acEnableAvailable).to(equal(@YES));
expect(testStruct.acMaxEnableAvailable).to(equal(@YES));
- expect(testStruct.circulateAirEnableAvailable).to(equal(@NO));
- expect(testStruct.autoModeEnableAvailable).to(equal(@NO));
- expect(testStruct.dualModeEnableAvailable).to(equal(@NO));
+ expect(testStruct.circulateAirEnableAvailable).to(equal(@YES));
+ expect(testStruct.autoModeEnableAvailable).to(equal(@YES));
+ expect(testStruct.dualModeEnableAvailable).to(equal(@YES));
expect(testStruct.defrostZoneAvailable).to(equal(@YES));
expect(testStruct.ventilationModeAvailable).to(equal(@YES));
expect(testStruct.heatedSteeringWheelAvailable).to(equal(@YES));
- expect(testStruct.heatedWindshieldAvailable).to(equal(@NO));
+ expect(testStruct.heatedWindshieldAvailable).to(equal(@YES));
expect(testStruct.heatedRearWindowAvailable).to(equal(@YES));
- expect(testStruct.heatedMirrorsAvailable).to(equal(@NO));
- expect(testStruct.climateEnableAvailable).to(equal(@NO));
+ expect(testStruct.heatedMirrorsAvailable).to(equal(@YES));
+ expect(testStruct.climateEnableAvailable).to(equal(@YES));
+ expect(testStruct.defrostZone).to(beNil());
+ expect(testStruct.ventilationMode).to(beNil());
});
it(@"Should return nil if not set", ^ {
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m
index 6c4a04c8a..ff4f35fcd 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m
@@ -63,28 +63,6 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should get correctly when initialized with FanSpeed and other climate control parameters", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLClimateControlData* testStruct = [[SDLClimateControlData alloc] initWithFanSpeed:@43 desiredTemperature:desiredTemp acEnable:@YES circulateAirEnable:@YES autoModeEnable:@NO defrostZone:SDLDefrostZoneFront dualModeEnable:@NO acMaxEnable:@YES ventilationMode:SDLVentilationModeBoth];
-
- expect(testStruct.fanSpeed).to(equal(@43));
- expect(testStruct.desiredTemperature).to(equal(desiredTemp));
- expect(testStruct.acEnable).to(equal(YES));
- expect(testStruct.circulateAirEnable).to(equal(YES));
- expect(testStruct.autoModeEnable).to(equal(NO));
- expect(testStruct.defrostZone).to(equal(SDLDefrostZoneFront));
- expect(testStruct.dualModeEnable).to(equal(NO));
- expect(testStruct.acMaxEnable).to(equal(YES));
- expect(testStruct.ventilationMode).to(equal(SDLVentilationModeBoth));
- expect(testStruct.heatedSteeringWheelEnable).to(equal(NO));
- expect(testStruct.heatedWindshieldEnable).to(equal(NO));
- expect(testStruct.heatedRearWindowEnable).to(equal(NO));
- expect(testStruct.heatedMirrorsEnable).to(equal(NO));
- expect(testStruct.climateEnable).to(beNil());
- #pragma clang diagnostic pop
- });
-
- it(@"Should get correctly when initialized with FanSpeed and other climate control parameters", ^ {
SDLClimateControlData* testStruct = [[SDLClimateControlData alloc] initWithFanSpeed:@43 desiredTemperature:desiredTemp acEnable:@YES circulateAirEnable:@YES autoModeEnable:@NO defrostZone:SDLDefrostZoneFront dualModeEnable:@NO acMaxEnable:@YES ventilationMode:SDLVentilationModeBoth heatedSteeringWheelEnable:@NO heatedWindshieldEnable:@YES heatedRearWindowEnable:@NO heatedMirrorsEnable:@YES climateEnable:@YES];
expect(testStruct.fanSpeed).to(equal(@43));
@@ -104,7 +82,7 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should get correctly when initialized with a dictionary", ^ {
- NSMutableDictionary<NSString *, id> *dict = [@{SDLRPCParameterNameFanSpeed : @43,
+ NSDictionary *dict = @{SDLRPCParameterNameFanSpeed : @43,
SDLRPCParameterNameCurrentTemperature : currentTemp,
SDLRPCParameterNameDesiredTemperature : desiredTemp,
SDLRPCParameterNameACEnable : @YES,
@@ -119,13 +97,9 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameHeatedRearWindowEnable:@NO,
SDLRPCParameterNameHeatedMirrorsEnable:@YES,
SDLRPCParameterNameClimateEnable:@YES,
- } mutableCopy];
+ };
+ SDLClimateControlData *testStruct = [[SDLClimateControlData alloc] initWithDictionary:dict];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLClimateControlData* testStruct = [[SDLClimateControlData alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
expect(testStruct.fanSpeed).to(equal(@43));
expect(testStruct.currentTemperature).to(equal(currentTemp));
expect(testStruct.desiredTemperature).to(equal(desiredTemp));
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m
index 1d0aad819..c984f0725 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDisplayCapabilitySpec.m
@@ -5,21 +5,19 @@
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
-#import "SDLRPCParameterNames.h"
-#import "SDLWindowTypeCapabilities.h"
-#import "SDLWindowCapability.h"
+#import "SDLButtonCapabilities.h"
#import "SDLDisplayCapability.h"
-#import "SDLTextField.h"
#import "SDLImageField.h"
#import "SDLImageType.h"
-#import "SDLButtonCapabilities.h"
+#import "SDLRPCParameterNames.h"
#import "SDLSoftButtonCapabilities.h"
+#import "SDLTextField.h"
+#import "SDLWindowCapability.h"
+#import "SDLWindowTypeCapabilities.h"
QuickSpecBegin(SDLDisplayCapabilitySpec)
describe(@"Getter/Setter Tests", ^ {
-
-
__block SDLWindowCapability* testWindowCapability = nil;
__block SDLWindowTypeCapabilities* testWindowTypeCapabilities = nil;
__block SDLTextField *testTextField = nil;
@@ -64,10 +62,9 @@ describe(@"Getter/Setter Tests", ^ {
testWindowCapability.buttonCapabilities = @[testButtonCapabilities];
testWindowCapability.softButtonCapabilities = @[testSoftButtonscapabilities];
});
-
-
+
it(@"Should set and get correctly", ^ {
- SDLDisplayCapability* testStruct = [[SDLDisplayCapability alloc] init];
+ SDLDisplayCapability *testStruct = [[SDLDisplayCapability alloc] init];
testStruct.displayName = testDisplayName;
testStruct.windowCapabilities = @[testWindowCapability];
testStruct.windowTypeSupported = @[testWindowTypeCapabilities];
@@ -84,6 +81,41 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.windowCapabilities.firstObject.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES));
expect(testStruct.windowCapabilities.firstObject.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
});
+
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+ NSDictionary *dict = @{SDLRPCParameterNameDisplayName: testDisplayName,
+ SDLRPCParameterNameWindowCapabilities: @[testWindowCapability],
+ SDLRPCParameterNameWindowTypeSupported: @[testWindowTypeCapabilities]};
+ SDLDisplayCapability *testStruct = [[SDLDisplayCapability alloc] initWithDictionary:dict];
+
+ expect(testStruct.displayName).to(equal(testDisplayName));
+ expect(testStruct.windowCapabilities).to(equal(@[testWindowCapability]));
+ expect(testStruct.windowTypeSupported).to(equal(@[testWindowTypeCapabilities]));
+ });
+
+ it(@"Should initialize correctly with initWithDisplayName:", ^{
+ SDLDisplayCapability *testStruct = [[SDLDisplayCapability alloc] initWithDisplayName:testDisplayName];
+
+ expect(testStruct.displayName).to(equal(testDisplayName));
+ expect(testStruct.windowCapabilities).to(beNil());
+ expect(testStruct.windowTypeSupported).to(beNil());
+ });
+
+ it(@"Should initialize correctly with initWithDisplayName:windowCapabilities:windowTypeSupported:", ^{
+ SDLDisplayCapability *testStruct = [[SDLDisplayCapability alloc] initWithDisplayName:testDisplayName windowCapabilities:@[testWindowCapability] windowTypeSupported:@[testWindowTypeCapabilities]];
+
+ expect(testStruct.displayName).to(equal(testDisplayName));
+ expect(testStruct.windowCapabilities).to(equal(@[testWindowCapability]));
+ expect(testStruct.windowTypeSupported).to(equal(@[testWindowTypeCapabilities]));
+ });
+
+ it(@"Should be nil if not set", ^{
+ SDLDisplayCapability *testStruct = [[SDLDisplayCapability alloc] init];
+
+ expect(testStruct.displayName).to(beNil());
+ expect(testStruct.windowCapabilities).to(beNil());
+ expect(testStruct.windowTypeSupported).to(beNil());
+ });
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDriverDistractionCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDriverDistractionCapabilitySpec.m
new file mode 100644
index 000000000..bd04b06ba
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDriverDistractionCapabilitySpec.m
@@ -0,0 +1,60 @@
+//
+// SDLDriverDistractionCapabilitySpec.m
+// SmartDeviceLinkTests
+//
+// Created by Joel Fischer on 7/27/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDriverDistractionCapability.h"
+#import "SDLRPCParameterNames.h"
+
+QuickSpecBegin(SDLDriverDistractionCapabilitySpec)
+
+describe(@"the driver distraction capability struct", ^{
+ __block SDLDriverDistractionCapability *testCapability = nil;
+ __block NSNumber *testMenuLength = @2;
+ __block NSNumber *testSubmenuDepth = @4;
+
+ beforeEach(^{
+ testCapability = [[SDLDriverDistractionCapability alloc] init];
+ });
+
+ describe(@"Getter/Setter Tests", ^ {
+ it(@"Should set and get correctly", ^ {
+ testCapability.menuLength = testMenuLength;
+ testCapability.subMenuDepth = testSubmenuDepth;
+
+ expect(testCapability.menuLength).to(equal(testMenuLength));
+ expect(testCapability.subMenuDepth).to(equal(testSubmenuDepth));
+ });
+
+ it(@"Should get correctly when initialized", ^ {
+ NSDictionary *dict = @{
+ SDLRPCParameterNameMenuLength: testMenuLength,
+ SDLRPCParameterNameSubMenuDepth: testSubmenuDepth
+ };
+ testCapability = [[SDLDriverDistractionCapability alloc] initWithDictionary:dict];
+
+ expect(testCapability.menuLength).to(equal(testMenuLength));
+ expect(testCapability.subMenuDepth).to(equal(testSubmenuDepth));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ expect(testCapability.menuLength).to(beNil());
+ expect(testCapability.subMenuDepth).to(beNil());
+ });
+
+ it(@"should properly init with initWithMenuLength:subMenuDepth:", ^{
+ testCapability = [[SDLDriverDistractionCapability alloc] initWithMenuLength:testMenuLength subMenuDepth:testSubmenuDepth];
+
+ expect(testCapability.menuLength).to(equal(testMenuLength));
+ expect(testCapability.subMenuDepth).to(equal(testSubmenuDepth));
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDynamicUpdateCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDynamicUpdateCapabilitiesSpec.m
new file mode 100644
index 000000000..7d2f5eb99
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDynamicUpdateCapabilitiesSpec.m
@@ -0,0 +1,75 @@
+//
+// SDLDynamicUpdateCapabilitiesSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Joel Fischer on 7/30/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDynamicUpdateCapabilities.h"
+
+#import "SDLImageFieldName.h"
+#import "SDLRPCParameterNames.h"
+
+QuickSpecBegin(SDLDynamicUpdateCapabilitiesSpec)
+
+__block SDLDynamicUpdateCapabilities *testStruct = nil;
+__block NSArray<SDLImageFieldName> *testImageFields = @[SDLImageFieldNameCommandIcon, SDLImageFieldNameSubMenuIcon];
+__block NSNumber<SDLBool> *testSupportsDynamicSubmenus = @YES;
+
+describe(@"when initializing with init", ^{
+ beforeEach(^{
+ testStruct = [[SDLDynamicUpdateCapabilities alloc] init];
+ });
+
+ it(@"should have no data", ^{
+ expect(testStruct.supportedDynamicImageFieldNames).to(beNil());
+ expect(testStruct.supportsDynamicSubMenus).to(beNil());
+ });
+
+ describe(@"when getting/setting parameters", ^{
+ beforeEach(^{
+ testStruct.supportedDynamicImageFieldNames = @[SDLImageFieldNameCommandIcon, SDLImageFieldNameSubMenuIcon];
+ testStruct.supportsDynamicSubMenus = testSupportsDynamicSubmenus;
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testStruct.supportedDynamicImageFieldNames).to(equal(testImageFields));
+ expect(testStruct.supportsDynamicSubMenus).to(equal(testSupportsDynamicSubmenus));
+ });
+ });
+});
+
+describe(@"when initializing with a dictionary", ^{
+ beforeEach(^{
+ NSDictionary *testDict = @{
+ SDLRPCParameterNameSupportedDynamicImageFieldNames: testImageFields,
+ SDLRPCParameterNameSupportsDynamicSubMenus: testSupportsDynamicSubmenus
+ };
+
+ testStruct = [[SDLDynamicUpdateCapabilities alloc] initWithDictionary:testDict];
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testStruct.supportedDynamicImageFieldNames).to(equal(testImageFields));
+ expect(testStruct.supportsDynamicSubMenus).to(equal(testSupportsDynamicSubmenus));
+ });
+});
+
+describe(@"when initializing with initWithSupportedDynamicImageFieldNames:supportsDynamicSubMenus:", ^{
+ beforeEach(^{
+ testStruct = [[SDLDynamicUpdateCapabilities alloc] initWithSupportedDynamicImageFieldNames:testImageFields supportsDynamicSubMenus:testSupportsDynamicSubmenus];
+ });
+
+ it(@"should properly get/set the data", ^{
+ expect(testStruct.supportedDynamicImageFieldNames).to(equal(testImageFields));
+ expect(testStruct.supportsDynamicSubMenus).to(equal(testSupportsDynamicSubmenus));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m
index faad50b3b..bb4f31e36 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m
@@ -15,36 +15,80 @@
#import "SDLRPCParameterNames.h"
QuickSpecBegin(SDLFuelRangeSpec)
+const float fuelLevel = 123.45f;
+const float fuelCapacity = 34.56f;
+const float range = 23.0f;
+SDLFuelType type = SDLFuelTypeDiesel;
+SDLComponentVolumeStatus levelState = SDLComponentVolumeStatusAlert;
+SDLCapacityUnit capacityUnit = SDLCapacityUnitKilowatthours;
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
SDLFuelRange *testStruct = [[SDLFuelRange alloc] init];
-
- testStruct.type = SDLFuelTypeDiesel;
- testStruct.range = @45;
-
- expect(testStruct.type).to(equal(SDLFuelTypeDiesel));
- expect(testStruct.range).to(equal(@45));
+ testStruct.type = type;
+ testStruct.range = @(range);
+ testStruct.level = @(fuelLevel);
+ testStruct.levelState = levelState;
+ testStruct.capacity = @(fuelCapacity);
+ testStruct.capacityUnit = capacityUnit;
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.type).to(equal(type));
+ expect(testStruct.range).to(equal(@(range)));
+ expect(testStruct.level).to(equal(fuelLevel));
+ expect(testStruct.levelState).to(equal(levelState));
+ expect(testStruct.capacity).to(equal(fuelCapacity));
+ expect(testStruct.capacityUnit).to(equal(capacityUnit));
+ });
});
- it(@"Should get correctly when initialized", ^ {
- NSDictionary *dict = @{SDLRPCParameterNameType:SDLFuelTypeLPG,
- SDLRPCParameterNameRange:@23
+ context(@"should get correctly when initialized with dictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameType:type,
+ SDLRPCParameterNameRange:@(range),
+ SDLRPCParameterNameLevel:@(fuelLevel),
+ SDLRPCParameterNameLevelState:levelState,
+ SDLRPCParameterNameCapacity:@(fuelCapacity),
+ SDLRPCParameterNameCapacityUnit:capacityUnit
};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLFuelRange *testStruct = [[SDLFuelRange alloc] initWithDictionary:dict];
#pragma clang diagnostic pop
- expect(testStruct.type).to(equal(SDLFuelTypeLPG));
- expect(testStruct.range).to(equal(@23));
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.type).to(equal(type));
+ expect(testStruct.range).to(equal(@(range)));
+ expect(testStruct.level).to(equal(fuelLevel));
+ expect(testStruct.levelState).to(equal(levelState));
+ expect(testStruct.capacity).to(equal(fuelCapacity));
+ expect(testStruct.capacityUnit).to(equal(capacityUnit));
+ });
});
- it(@"Should return nil if not set", ^ {
+ context(@"init", ^{
SDLFuelRange *testStruct = [[SDLFuelRange alloc] init];
- expect(testStruct.type).to(beNil());
- expect(testStruct.range).to(beNil());
+ it(@"expect all properties to be nil", ^{
+ expect(testStruct.type).to(beNil());
+ expect(testStruct.range).to(beNil());
+ expect(testStruct.level).to(beNil());
+ expect(testStruct.levelState).to(beNil());
+ expect(testStruct.capacity).to(beNil());
+ expect(testStruct.capacityUnit).to(beNil());
+ });
+ });
+
+ context(@"initWithType:range:level:levelState:capacity:capacityUnit:", ^{
+ SDLFuelRange *testStruct = [[SDLFuelRange alloc] initWithType:type range:range level:fuelLevel levelState:levelState capacity:fuelCapacity capacityUnit:capacityUnit];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.type).to(equal(type));
+ expect(testStruct.range).to(equal(@(range)));
+ expect(testStruct.level).to(equal(fuelLevel));
+ expect(testStruct.levelState).to(equal(levelState));
+ expect(testStruct.capacity).to(equal(fuelCapacity));
+ expect(testStruct.capacityUnit).to(equal(capacityUnit));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGearStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGearStatusSpec.m
new file mode 100644
index 000000000..990185f1e
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGearStatusSpec.m
@@ -0,0 +1,48 @@
+//
+// SDLGearStatusSpec.m
+// SmartDeviceLinkTests
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+#import "SDLGearStatus.h"
+#import "SDLRPCParameterNames.h"
+
+QuickSpecBegin(SDLGearStatusSpec)
+
+describe(@"getter/setter tests", ^{
+ context(@"initWithUserSelectedGear:actualGear:transmissionType:", ^{
+ SDLGearStatus* testStruct = [[SDLGearStatus alloc] initWithUserSelectedGear:SDLPRNDLNinth actualGear:SDLPRNDLTenth transmissionType:SDLTransmissionTypeAutomatic];
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.userSelectedGear).to(equal(SDLPRNDLNinth));
+ expect(testStruct.actualGear).to(equal(SDLPRNDLTenth));
+ expect(testStruct.transmissionType).to(equal(SDLTransmissionTypeAutomatic));
+ });
+ });
+
+ context(@"initWithDictionary", ^{
+ NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameUserSelectedGear:SDLPRNDLNinth,
+ SDLRPCParameterNameActualGear:SDLPRNDLTenth,
+ SDLRPCParameterNameTransmissionType:SDLTransmissionTypeAutomatic};
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLGearStatus* testStruct = [[SDLGearStatus alloc] initWithDictionary:dict];
+#pragma clang diagnostic pop
+ it(@"should get correctly when initialized", ^{
+ expect(testStruct.userSelectedGear).to(equal(SDLPRNDLNinth));
+ expect(testStruct.actualGear).to(equal(SDLPRNDLTenth));
+ expect(testStruct.transmissionType).to(equal(SDLTransmissionTypeAutomatic));
+ });
+ });
+
+ context(@"init", ^{
+ SDLGearStatus* testStruct = [[SDLGearStatus alloc] init];
+ it(@"should return nil if not set", ^{
+ expect(testStruct.userSelectedGear).to(beNil());
+ expect(testStruct.actualGear).to(beNil());
+ expect(testStruct.transmissionType).to(beNil());
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m
index 8ecd92e6c..c5c18cd6a 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m
@@ -19,9 +19,11 @@ describe(@"SDLHMICapabilities struct", ^{
__block NSNumber *someVideoStreamState = @NO;
__block NSNumber *someRemoteControlState = @YES;
__block NSNumber *someAppServicesState = @YES;
-
+ __block NSNumber *someDisplaysState = @YES;
+ __block NSNumber *someSeatLocationState = @NO;
+ __block NSNumber *someDriverDistractionState = @NO;
- context(@"When initialized with properties", ^{
+ context(@"when initialized with properties", ^{
beforeEach(^{
testStruct = [[SDLHMICapabilities alloc] init];
testStruct.phoneCall = somePhoneCallState;
@@ -29,6 +31,9 @@ describe(@"SDLHMICapabilities struct", ^{
testStruct.videoStreaming = someVideoStreamState;
testStruct.remoteControl = someRemoteControlState;
testStruct.appServices = someAppServicesState;
+ testStruct.displays = someDisplaysState;
+ testStruct.seatLocation = someSeatLocationState;
+ testStruct.driverDistraction = someDriverDistractionState;
});
it(@"should properly set properties", ^{
@@ -37,22 +42,26 @@ describe(@"SDLHMICapabilities struct", ^{
expect(testStruct.videoStreaming).to(equal(someVideoStreamState));
expect(testStruct.remoteControl).to(equal(someRemoteControlState));
expect(testStruct.appServices).to(equal(someAppServicesState));
+ expect(testStruct.displays).to(equal(someDisplaysState));
+ expect(testStruct.seatLocation).to(equal(someSeatLocationState));
+ expect(testStruct.driverDistraction).to(equal(someDriverDistractionState));
});
});
- context(@"When initialized with a dictionary", ^{
+ context(@"when initialized with a dictionary", ^{
beforeEach(^{
NSDictionary<NSString *, NSNumber *> *structInitDict = @{
SDLRPCParameterNameNavigation: someNavigationState,
SDLRPCParameterNamePhoneCall: somePhoneCallState,
SDLRPCParameterNameVideoStreaming: someVideoStreamState,
SDLRPCParameterNameRemoteControl: someRemoteControlState,
- SDLRPCParameterNameAppServices: someAppServicesState
+ SDLRPCParameterNameAppServices: someAppServicesState,
+ SDLRPCParameterNameDisplays: someDisplaysState,
+ SDLRPCParameterNameSeatLocation: someSeatLocationState,
+ SDLRPCParameterNameDriverDistraction: someDriverDistractionState
};
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testStruct = [[SDLHMICapabilities alloc] initWithDictionary:[structInitDict mutableCopy]];
-#pragma clang diagnostic pop
+
+ testStruct = [[SDLHMICapabilities alloc] initWithDictionary:structInitDict];
});
it(@"should properly set properties", ^{
@@ -61,20 +70,44 @@ describe(@"SDLHMICapabilities struct", ^{
expect(testStruct.videoStreaming).to(equal(someVideoStreamState));
expect(testStruct.remoteControl).to(equal(someRemoteControlState));
expect(testStruct.appServices).to(equal(someAppServicesState));
+ expect(testStruct.displays).to(equal(someDisplaysState));
+ expect(testStruct.seatLocation).to(equal(someSeatLocationState));
+ expect(testStruct.driverDistraction).to(equal(someDriverDistractionState));
});
});
- context(@"When not initialized", ^{
- beforeEach(^{
- testStruct = nil;
+ context(@"when initialized", ^{
+ context(@"with no parameters", ^{
+ beforeEach(^{
+ testStruct = [[SDLHMICapabilities alloc] init];
+ });
+
+ it(@"properties should be nil", ^{
+ expect(testStruct.phoneCall).to(beNil());
+ expect(testStruct.navigation).to(beNil());
+ expect(testStruct.videoStreaming).to(beNil());
+ expect(testStruct.remoteControl).to(beNil());
+ expect(testStruct.displays).to(beNil());
+ expect(testStruct.seatLocation).to(beNil());
+ expect(testStruct.appServices).to(beNil());
+ });
});
-
- it(@"properties should be nil", ^{
- expect(testStruct.phoneCall).to(beNil());
- expect(testStruct.navigation).to(beNil());
- expect(testStruct.videoStreaming).to(beNil());
- expect(testStruct.remoteControl).to(beNil());
- expect(testStruct.appServices).to(beNil());
+
+ context(@"with initWithNavigation:phoneCall:videoStreaming:remoteControl:appServices:displays:seatLocation:driverDistraction:", ^{
+ beforeEach(^{
+ testStruct = [[SDLHMICapabilities alloc] initWithNavigation:someNavigationState phoneCall:somePhoneCallState videoStreaming:someVideoStreamState remoteControl:someRemoteControlState appServices:someAppServicesState displays:someDisplaysState seatLocation:someSeatLocationState driverDistraction:someDriverDistractionState];
+ });
+
+ it(@"properties should be nil", ^{
+ expect(testStruct.phoneCall).to(equal(somePhoneCallState));
+ expect(testStruct.navigation).to(equal(someNavigationState));
+ expect(testStruct.videoStreaming).to(equal(someVideoStreamState));
+ expect(testStruct.remoteControl).to(equal(someRemoteControlState));
+ expect(testStruct.appServices).to(equal(someAppServicesState));
+ expect(testStruct.displays).to(equal(someDisplaysState));
+ expect(testStruct.seatLocation).to(equal(someSeatLocationState));
+ expect(testStruct.driverDistraction).to(equal(someDriverDistractionState));
+ });
});
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m
index 9906477d4..ee8f72fbc 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m
@@ -47,47 +47,18 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.temperatureUnitAvailable).to(equal(@(NO)));
expect(testStruct.displayModeUnitAvailable).to(equal(@(YES)));
});
-
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLHMISettingsControlCapabilities* testStruct = [[SDLHMISettingsControlCapabilities alloc] initWithModuleName:@"displayMode"];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"displayMode"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.distanceUnitAvailable).to(beNil());
- expect(testStruct.temperatureUnitAvailable).to(beNil());
- expect(testStruct.displayModeUnitAvailable).to(beNil());
- });
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ it(@"Should init correctly with initWithModuleName:moduleInfo:", ^ {
SDLHMISettingsControlCapabilities* testStruct = [[SDLHMISettingsControlCapabilities alloc] initWithModuleName:@"displayMode" moduleInfo:testModuleInfo];
-#pragma clang diagnostic pop
-
+
expect(testStruct.moduleName).to(equal(@"displayMode"));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
expect(testStruct.distanceUnitAvailable).to(beNil());
expect(testStruct.temperatureUnitAvailable).to(beNil());
expect(testStruct.displayModeUnitAvailable).to(beNil());
});
-
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLHMISettingsControlCapabilities* testStruct = [[SDLHMISettingsControlCapabilities alloc] initWithModuleName:@"displayMode" distanceUnitAvailable:NO temperatureUnitAvailable:YES displayModeUnitAvailable:NO];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"displayMode"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.distanceUnitAvailable).to(equal(@(NO)));
- expect(testStruct.temperatureUnitAvailable).to(equal(@(YES)));
- expect(testStruct.displayModeUnitAvailable).to(equal(@(NO)));
- });
- it(@"Should set and get correctly", ^ {
+ it(@"Should init correctly with initWithModuleName:moduleInfo:distanceUnitAvailable:temperatureUnitAvailable:displayModeUnitAvailable:", ^ {
SDLHMISettingsControlCapabilities* testStruct = [[SDLHMISettingsControlCapabilities alloc] initWithModuleName:@"displayMode" moduleInfo:testModuleInfo distanceUnitAvailable:NO temperatureUnitAvailable:YES displayModeUnitAvailable:NO];
expect(testStruct.moduleName).to(equal(@"displayMode"));
@@ -98,23 +69,19 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameModuleName:@"temperatureUnit",
+ NSDictionary *dict = @{SDLRPCParameterNameModuleName:@"temperatureUnit",
SDLRPCParameterNameModuleInfo:testModuleInfo,
SDLRPCParameterNameTemperatureUnitAvailable:@(YES),
SDLRPCParameterNameDistanceUnitAvailable:@(YES),
SDLRPCParameterNameDisplayModeUnitAvailable:@(NO)
- } mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLHMISettingsControlCapabilities* testStruct = [[SDLHMISettingsControlCapabilities alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ };
+ SDLHMISettingsControlCapabilities *testStruct = [[SDLHMISettingsControlCapabilities alloc] initWithDictionary:dict];
expect(testStruct.moduleName).to(equal(@"temperatureUnit"));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
expect(testStruct.distanceUnitAvailable).to(equal(@(YES)));
expect(testStruct.temperatureUnitAvailable).to(equal(@(YES)));
expect(testStruct.displayModeUnitAvailable).to(equal(@(NO)));
-
});
it(@"Should return nil if not set", ^ {
@@ -125,7 +92,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.distanceUnitAvailable).to(beNil());
expect(testStruct.temperatureUnitAvailable).to(beNil());
expect(testStruct.displayModeUnitAvailable).to(beNil());
-
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m
index 85bac3a78..1237c194a 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m
@@ -51,10 +51,7 @@ describe(@"Getter/Setter Tests", ^{
SDLRPCParameterNameImageType:imageType,
SDLRPCParameterNameImageTemplate:@YES
} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testSDLImage = [[SDLImage alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
expectedValue = value;
expectedImageType = imageType;
@@ -95,18 +92,6 @@ describe(@"initializers", ^{
expect(testImage.isTemplate).to(beNil());
});
- context(@"initWithName:ofType:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testImage = [[SDLImage alloc] initWithName:testValue ofType:testImageType];
-
- expect(testImage).toNot(beNil());
- expect(testImage.value).to(equal(testValue));
- expect(testImage.imageType).to(equal(testImageType));
- expect(testImage.isTemplate).to(beFalse());
- #pragma clang diagnostic pop
- });
-
context(@"initWithName:ofType:isTemplate", ^{
testImage = [[SDLImage alloc] initWithName:testValue ofType:testImageType isTemplate:testIsTemplate];
@@ -116,18 +101,6 @@ describe(@"initializers", ^{
expect(testImage.isTemplate).to(equal(testIsTemplate));
});
- context(@"initWithName:", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testImage = [[SDLImage alloc] initWithName:testValue];
-
- expect(testImage).toNot(beNil());
- expect(testImage.value).to(equal(testValue));
- expect(testImage.imageType).to(equal(SDLImageTypeDynamic));
- expect(testImage.isTemplate).to(beFalse());
- #pragma clang diagnostic pop
- });
-
context(@"initWithName:isTemplate", ^{
testImage = [[SDLImage alloc] initWithName:testValue isTemplate:testIsTemplate];
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m
index a4d0d32a3..7b1e28362 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m
@@ -43,7 +43,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.autoCompleteList).to(equal(testAutoCompleteList));
});
- it(@"Should get correctly when initialized", ^ {
+ it(@"Should get correctly when initialized with a dictionary", ^ {
NSDictionary* dict = @{SDLRPCParameterNameLanguage: testLanguage,
SDLRPCParameterNameKeyboardLayout: testLayout,
SDLRPCParameterNameKeypressMode: testMode,
@@ -51,11 +51,19 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameAutoCompleteText: testAutoCompleteText,
SDLRPCParameterNameAutoCompleteList: testAutoCompleteList
};
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLKeyboardProperties* testStruct = [[SDLKeyboardProperties alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
+
+ expect(testStruct.language).to(equal(testLanguage));
+ expect(testStruct.keyboardLayout).to(equal(testLayout));
+ expect(testStruct.keypressMode).to(equal(testMode));
+ expect(testStruct.limitedCharacterList).to(equal(testLimitedCharacterList));
+ expect(testStruct.autoCompleteText).to(equal(testAutoCompleteText));
+ expect(testStruct.autoCompleteList).to(equal(testAutoCompleteList));
+ });
+
+ it(@"Should get correctly when initialized with initWithLanguage:layout:keypressMode:limitedCharacterList:autoCompleteText:autoCompleteList:", ^ {
+ SDLKeyboardProperties *testStruct = [[SDLKeyboardProperties alloc] initWithLanguage:testLanguage layout:testLayout keypressMode:testMode limitedCharacterList:testLimitedCharacterList autoCompleteText:testAutoCompleteText autoCompleteList:testAutoCompleteList];
+
expect(testStruct.language).to(equal(testLanguage));
expect(testStruct.keyboardLayout).to(equal(testLayout));
expect(testStruct.keypressMode).to(equal(testMode));
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m
index 404dc2aeb..82ffd22cf 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m
@@ -48,18 +48,6 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLLightControlCapabilities* testStruct = [[SDLLightControlCapabilities alloc] initWithModuleName:@"moduleName" supportedLights:[@[somelightCapabilities] copy]];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"moduleName"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.supportedLights).to(equal([@[somelightCapabilities] copy]));
-
- });
-
- it(@"Should set and get correctly", ^ {
SDLLightControlCapabilities* testStruct = [[SDLLightControlCapabilities alloc] initWithModuleName:@"moduleName" moduleInfo:testModuleInfo supportedLights:[@[somelightCapabilities] copy]];
expect(testStruct.moduleName).to(equal(@"moduleName"));
@@ -69,14 +57,11 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameModuleName:@"moduleName",
+ NSDictionary *dict = @{SDLRPCParameterNameModuleName:@"moduleName",
SDLRPCParameterNameModuleInfo:testModuleInfo,
SDLRPCParameterNameSupportedLights:[@[somelightCapabilities] copy]
- } mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLLightControlCapabilities* testStruct = [[SDLLightControlCapabilities alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
+ };
+ SDLLightControlCapabilities *testStruct = [[SDLLightControlCapabilities alloc] initWithDictionary:dict];
expect(testStruct.moduleName).to(equal(@"moduleName"));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m
index 24a215b11..37bc5b867 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m
@@ -87,32 +87,9 @@ describe(@"Getter/Setter Tests", ^{
SDLRPCParameterNameQueueCurrentTrackNumber:@(testQueueCurrentTrackNumber),
SDLRPCParameterNameQueueTotalTrackCount:@(testQueueTotalTrackCount)
};
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLMediaServiceData *testStruct = [[SDLMediaServiceData alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
- expect(testStruct.mediaImage).to(equal(testMediaImage));
- expect(testStruct.mediaType).to(equal(testMediaType));
- expect(testStruct.mediaTitle).to(equal(testMediaTitle));
- expect(testStruct.mediaArtist).to(equal(testMediaArtist));
- expect(testStruct.mediaAlbum).to(equal(testMediaAlbum));
- expect(testStruct.playlistName).to(equal(testPlaylistName));
- expect(testStruct.isExplicit).to(equal(testIsExplicit));
- expect(testStruct.trackPlaybackProgress).to(equal(testTrackPlaybackProgress));
- expect(testStruct.trackPlaybackDuration).to(equal(testTrackPlaybackDuration));
- expect(testStruct.queuePlaybackProgress).to(equal(testQueuePlaybackProgress));
- expect(testStruct.queuePlaybackDuration).to(equal(testQueuePlaybackDuration));
- expect(testStruct.queueCurrentTrackNumber).to(equal(testQueueCurrentTrackNumber));
- expect(testStruct.queueTotalTrackCount).to(equal(testQueueTotalTrackCount));
- });
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- it(@"Should get correctly when initialized with initWithMediaType:mediaTitle:mediaArtist:mediaAlbum:playlistName:isExplicit:trackPlaybackProgress:trackPlaybackDuration:queuePlaybackProgress:queuePlaybackDuration:queueCurrentTrackNumber:queueTotalTrackCount:", ^{
- SDLMediaServiceData *testStruct = [[SDLMediaServiceData alloc] initWithMediaType:testMediaType mediaTitle:testMediaTitle mediaArtist:testMediaArtist mediaAlbum:testMediaAlbum playlistName:testPlaylistName isExplicit:testIsExplicit trackPlaybackProgress:testTrackPlaybackProgress trackPlaybackDuration:testTrackPlaybackDuration queuePlaybackProgress:testQueuePlaybackProgress queuePlaybackDuration:testQueuePlaybackDuration queueCurrentTrackNumber:testQueueCurrentTrackNumber queueTotalTrackCount:testQueueTotalTrackCount];
-#pragma clang diagnostic pop
+ expect(testStruct.mediaImage).to(equal(testMediaImage));
expect(testStruct.mediaType).to(equal(testMediaType));
expect(testStruct.mediaTitle).to(equal(testMediaTitle));
expect(testStruct.mediaArtist).to(equal(testMediaArtist));
@@ -125,7 +102,6 @@ describe(@"Getter/Setter Tests", ^{
expect(testStruct.queuePlaybackDuration).to(equal(testQueuePlaybackDuration));
expect(testStruct.queueCurrentTrackNumber).to(equal(testQueueCurrentTrackNumber));
expect(testStruct.queueTotalTrackCount).to(equal(testQueueTotalTrackCount));
- expect(testStruct.mediaImage).to(beNil());
});
it(@"Should get correctly when initialized with initWithMediaType:mediaImage:mediaTitle:mediaArtist:mediaAlbum:playlistName:isExplicit:trackPlaybackProgress:trackPlaybackDuration:queuePlaybackProgress:queuePlaybackDuration:queueCurrentTrackNumber:queueTotalTrackCount:", ^{
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m
index 95af8629e..2736f3500 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m
@@ -27,9 +27,9 @@ describe(@"Initialization tests", ^{
});
it(@"should properly initialize initWithDictionary", ^{
- NSMutableDictionary* dict = [@{SDLRPCParameterNameParentId:@(testParentId),
+ NSDictionary *dict = @{SDLRPCParameterNameParentID:@(testParentId),
SDLRPCParameterNamePosition:@(testPosition),
- SDLRPCParameterNameMenuName:testMenuName} mutableCopy];
+ SDLRPCParameterNameMenuName:testMenuName};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLMenuParams* testStruct = [[SDLMenuParams alloc] initWithDictionary:dict];
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m
index bd7aed6b1..8d3584096 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m
@@ -54,12 +54,11 @@ describe(@"Initialization tests", ^{
expect(testStruct.hdRadioEnableAvailable).to(beNil());
expect(testStruct.siriusXMRadioAvailable).to(beNil());
expect(testStruct.sisDataAvailable).to(beNil());
-
});
it(@"should properly initialize initWithDictionary", ^{
- NSMutableDictionary* dict = [@{SDLRPCParameterNameModuleName : @"someName",
+ NSDictionary *dict = @{SDLRPCParameterNameModuleName : @"someName",
SDLRPCParameterNameModuleInfo: testModuleInfo,
SDLRPCParameterNameRadioEnableAvailable : @YES,
SDLRPCParameterNameRadioBandAvailable : @YES,
@@ -74,12 +73,9 @@ describe(@"Initialization tests", ^{
SDLRPCParameterNameHDRadioEnableAvailable : @YES,
SDLRPCParameterNameSiriusXMRadioAvailable : @NO,
SDLRPCParameterNameSISDataAvailable: @YES
- } mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRadioControlCapabilities* testStruct = [[SDLRadioControlCapabilities alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
+ };
+ SDLRadioControlCapabilities *testStruct = [[SDLRadioControlCapabilities alloc] initWithDictionary:dict];
+
expect(testStruct.moduleName).to(equal(@"someName"));
expect(testStruct.moduleInfo).to(equal(testModuleInfo));
expect(testStruct.radioEnableAvailable).to(equal(@YES));
@@ -100,7 +96,6 @@ describe(@"Initialization tests", ^{
expect(testStruct.hdRadioEnableAvailable).to(equal(@YES));
expect(testStruct.siriusXMRadioAvailable).to(equal(@NO));
expect(testStruct.sisDataAvailable).to(equal(@YES));
-
});
it(@"Should set and get correctly", ^{
@@ -147,7 +142,6 @@ describe(@"Initialization tests", ^{
expect(testStruct.hdRadioEnableAvailable).to(equal(@YES));
expect(testStruct.siriusXMRadioAvailable).to(equal(@YES));
expect(testStruct.sisDataAvailable).to(equal(@YES));
-
});
it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ {
@@ -167,61 +161,7 @@ describe(@"Initialization tests", ^{
expect(testStruct.hdRadioEnableAvailable).to(equal(YES));
expect(testStruct.siriusXMRadioAvailable).to(equal(@YES));
expect(testStruct.sisDataAvailable).to(equal(@YES));
-
- });
-
- it(@"Should get correctly when initialized with Module Name and other radio control capability parameters", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRadioControlCapabilities* testStruct = [[SDLRadioControlCapabilities alloc] initWithModuleName:@"someName" radioEnableAvailable:YES radioBandAvailable:NO radioFrequencyAvailable:YES hdChannelAvailable:NO rdsDataAvailable:NO availableHDsAvailable:NO stateAvailable:YES signalStrengthAvailable:YES signalChangeThresholdAvailable:NO];
-
- expect(testStruct.moduleName).to(equal(@"someName"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.radioEnableAvailable).to(equal(@YES));
- expect(testStruct.radioBandAvailable).to(equal(@NO));
- expect(testStruct.radioFrequencyAvailable).to(equal(@YES));
- expect(testStruct.hdChannelAvailable).to(equal(@NO));
- expect(testStruct.rdsDataAvailable).to(equal(@NO));
- expect(testStruct.availableHDsAvailable).to(equal(@NO));
- expect(testStruct.stateAvailable).to(equal(@YES));
- expect(testStruct.signalStrengthAvailable).to(equal(@YES));
- expect(testStruct.signalChangeThresholdAvailable).to(equal(@NO));
- expect(testStruct.hdRadioEnableAvailable).to(equal(@NO));
- expect(testStruct.siriusXMRadioAvailable).to(equal(@NO));
- #pragma clang diagnostic pop
});
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRadioControlCapabilities* testStruct = [[SDLRadioControlCapabilities alloc] initWithModuleName:@"someName" radioEnableAvailable:YES radioBandAvailable:NO radioFrequencyAvailable:YES hdChannelAvailable:NO rdsDataAvailable:NO availableHDsAvailable:NO stateAvailable:YES signalStrengthAvailable:YES signalChangeThresholdAvailable:NO hdRadioEnableAvailable:YES siriusXMRadioAvailable:YES sisDataAvailable:YES];
-#pragma clang diagnostic pop
-
-
- expect(testStruct.moduleName).to(equal(@"someName"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.radioEnableAvailable).to(equal(@YES));
- expect(testStruct.radioBandAvailable).to(equal(@NO));
- expect(testStruct.radioFrequencyAvailable).to(equal(@YES));
- expect(testStruct.hdChannelAvailable).to(equal(@NO));
- expect(testStruct.rdsDataAvailable).to(equal(@NO));
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- expect(testStruct.availableHDsAvailable).to(equal(@NO));
-#pragma clang diagnostic pop
-
- expect(testStruct.stateAvailable).to(equal(@YES));
- expect(testStruct.signalStrengthAvailable).to(equal(@YES));
- expect(testStruct.signalChangeThresholdAvailable).to(equal(@NO));
- expect(testStruct.hdRadioEnableAvailable).to(equal(YES));
- expect(testStruct.siriusXMRadioAvailable).to(equal(@YES));
- expect(testStruct.sisDataAvailable).to(equal(@YES));
-
- });
-
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m
index a29ff574d..c8fb5b773 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m
@@ -16,7 +16,8 @@
#import "SDLRPCParameterNames.h"
QuickSpecBegin(SDLRadioControlDataSpec)
-__block SDLRDSData* someRdsData = [[SDLRDSData alloc] init];
+__block SDLRDSData *someRdsData = [[SDLRDSData alloc] init];
+__block SDLSISData *testSISData = [[SDLSISData alloc] init];
describe(@"Initialization tests", ^{
@@ -38,10 +39,11 @@ describe(@"Initialization tests", ^{
expect(testStruct.radioEnable).to(beNil());
expect(testStruct.state).to(beNil());
expect(testStruct.hdRadioEnable).to(beNil());
+ expect(testStruct.sisData).to(beNil());
});
it(@"should properly initialize initWithDictionary", ^{
- NSMutableDictionary* dict = [@{SDLRPCParameterNameFrequencyInteger : @101,
+ NSDictionary *dict = @{SDLRPCParameterNameFrequencyInteger : @101,
SDLRPCParameterNameFrequencyFraction : @7,
SDLRPCParameterNameBand : SDLRadioBandAM,
SDLRPCParameterNameRDSData : someRdsData,
@@ -52,13 +54,11 @@ describe(@"Initialization tests", ^{
SDLRPCParameterNameSignalChangeThreshold : @76,
SDLRPCParameterNameRadioEnable : @YES,
SDLRPCParameterNameState : SDLRadioStateNotFound,
- SDLRPCParameterNameHDRadioEnable : @NO
- } mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
+ SDLRPCParameterNameHDRadioEnable : @NO,
+ SDLRPCParameterNameSISData : testSISData
+ };
+ SDLRadioControlData *testStruct = [[SDLRadioControlData alloc] initWithDictionary:dict];
+
expect(testStruct.frequencyInteger).to(equal(@101));
expect(testStruct.frequencyFraction).to(equal(@7));
expect(testStruct.band).to(equal(SDLRadioBandAM));
@@ -73,6 +73,7 @@ describe(@"Initialization tests", ^{
expect(testStruct.radioEnable).to(equal(@YES));
expect(testStruct.state).to(equal(SDLRadioStateNotFound));
expect(testStruct.hdRadioEnable).to(equal(@NO));
+ expect(testStruct.sisData).to(equal(testSISData));
});
it(@"Should set and get correctly", ^{
@@ -89,6 +90,7 @@ describe(@"Initialization tests", ^{
testStruct.radioEnable = @YES;
testStruct.state = SDLRadioStateNotFound;
testStruct.hdRadioEnable = @YES;
+ testStruct.sisData = testSISData;
expect(testStruct.frequencyInteger).to(equal(@101));
expect(testStruct.frequencyFraction).to(equal(@7));
@@ -102,50 +104,11 @@ describe(@"Initialization tests", ^{
expect(testStruct.radioEnable).to(equal(@YES));
expect(testStruct.state).to(equal(SDLRadioStateNotFound));
expect(testStruct.hdRadioEnable).to(equal(@YES));
- });
-
- it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES];
-
- expect(testStruct.frequencyInteger).to(equal(@101));
- expect(testStruct.frequencyFraction).to(equal(@7));
- expect(testStruct.band).to(equal(SDLRadioBandAM));
- expect(testStruct.hdChannel).to(equal(@2));
- expect(testStruct.radioEnable).to(equal(@YES));
- #pragma clang diagnostic pop
+ expect(testStruct.sisData).to(equal(testSISData));
});
it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES];
-
- expect(testStruct.frequencyInteger).to(equal(@101));
- expect(testStruct.frequencyFraction).to(equal(@7));
- expect(testStruct.band).to(equal(SDLRadioBandAM));
- expect(testStruct.hdChannel).to(equal(@2));
- expect(testStruct.radioEnable).to(equal(@YES));
- #pragma clang diagnostic pop
- });
-
- it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES];
-
- expect(testStruct.frequencyInteger).to(equal(@101));
- expect(testStruct.frequencyFraction).to(equal(@7));
- expect(testStruct.band).to(equal(SDLRadioBandAM));
- expect(testStruct.hdChannel).to(equal(@2));
- expect(testStruct.radioEnable).to(equal(@YES));
- expect(testStruct.sisData).to(beNil());
- #pragma clang diagnostic pop
- });
-
- it(@"Should get correctly when initialized with Module Name and other radio control capabilities parameters", ^ {
- SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES hdRadioEnable:@YES];
+ SDLRadioControlData *testStruct = [[SDLRadioControlData alloc] initWithFrequencyInteger:@101 frequencyFraction:@7 band:SDLRadioBandAM hdChannel:@2 radioEnable:@YES hdRadioEnable:@YES];
expect(testStruct.frequencyInteger).to(equal(@101));
expect(testStruct.frequencyFraction).to(equal(@7));
@@ -178,9 +141,6 @@ describe(@"Initialization tests", ^{
expect(testStruct.frequencyInteger).to(equal(@101));
expect(testStruct.band).to(equal(SDLRadioBandXM));
});
-
-
-
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m
index fb914d85c..464d5048c 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m
@@ -87,18 +87,6 @@ describe(@"Initialization tests", ^{
});
it(@"Should get correctly when initialized with climateControlCapabilities and other RemoteControlCapabilities parameters", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRemoteControlCapabilities* testStruct = [[SDLRemoteControlCapabilities alloc] initWithClimateControlCapabilities:[@[someClimateControlCapabilities] copy] radioControlCapabilities:[@[someRadioControlCapabilities] copy] buttonCapabilities:[@[someButtonControlCapabilities] copy]];
-
- expect(testStruct.seatControlCapabilities).to(beNil());
- expect(testStruct.climateControlCapabilities).to(equal(([@[someClimateControlCapabilities] copy])));
- expect(testStruct.radioControlCapabilities).to(equal([@[someRadioControlCapabilities] copy]));
- expect(testStruct.buttonCapabilities).to(equal([@[someButtonControlCapabilities] copy]));
- #pragma clang diagnostic pop
- });
-
- it(@"Should get correctly when initialized with climateControlCapabilities and other RemoteControlCapabilities parameters", ^ {
SDLRemoteControlCapabilities* testStruct = [[SDLRemoteControlCapabilities alloc] initWithClimateControlCapabilities:[@[someClimateControlCapabilities] copy] radioControlCapabilities:[@[someRadioControlCapabilities] copy] buttonCapabilities:[@[someButtonControlCapabilities] copy] seatControlCapabilities:[@[someSeatControlCapabilities] copy] audioControlCapabilities:[@[someAudioControlCapabilities] copy] hmiSettingsControlCapabilities:[@[someHMISettingsControlCapabilities] copy] lightControlCapabilities:[@[someLightControlCapabilities] copy]];
expect(testStruct.climateControlCapabilities).to(equal(([@[someClimateControlCapabilities] copy])));
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m
index 31912578d..f31908ba6 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m
@@ -71,59 +71,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.massageModeAvailable).to(equal(@YES));
expect(testStruct.massageCushionFirmnessAvailable).to(equal(@NO));
expect(testStruct.memoryAvailable).to(equal(@NO));
-
- });
-
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSeatControlCapabilities* testStruct = [[SDLSeatControlCapabilities alloc] initWithName:@"moduleName" heatingEnabledAvailable:YES coolingEnabledAvailable:NO heatingLevelAvailable:YES coolingLevelAvailable:NO horizontalPositionAvailable:NO verticalPositionAvailable:NO frontVerticalPositionAvailable:NO backVerticalPositionAvailable:NO backTiltAngleAvailable:YES headSupportHorizontalPositionAvailable:NO headSupportVerticalPositionAvailable:YES massageEnabledAvailable:NO massageModeAvailable:YES massageCushionFirmnessAvailable:NO memoryAvailable:YES];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"moduleName"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.heatingEnabledAvailable).to(equal(@YES));
- expect(testStruct.coolingEnabledAvailable).to(equal(@NO));
- expect(testStruct.heatingLevelAvailable).to(equal(@YES));
- expect(testStruct.coolingLevelAvailable).to(equal(@NO));
- expect(testStruct.horizontalPositionAvailable).to(equal(@NO));
- expect(testStruct.verticalPositionAvailable).to(equal(@NO));
- expect(testStruct.frontVerticalPositionAvailable).to(equal(@NO));
- expect(testStruct.backVerticalPositionAvailable).to(equal(@NO));
- expect(testStruct.backTiltAngleAvailable).to(equal(@YES));
- expect(testStruct.headSupportHorizontalPositionAvailable).to(equal(@NO));
- expect(testStruct.headSupportVerticalPositionAvailable).to(equal(@YES));
- expect(testStruct.massageEnabledAvailable).to(equal(@NO));
- expect(testStruct.massageModeAvailable).to(equal(@YES));
- expect(testStruct.massageCushionFirmnessAvailable).to(equal(@NO));
- expect(testStruct.memoryAvailable).to(equal(@YES));
-
- });
-
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSeatControlCapabilities* testStruct = [[SDLSeatControlCapabilities alloc] initWithName:@"moduleName"];
-#pragma clang diagnostic pop
-
- expect(testStruct.moduleName).to(equal(@"moduleName"));
- expect(testStruct.moduleInfo).to(beNil());
- expect(testStruct.heatingEnabledAvailable).to(beNil());
- expect(testStruct.heatingEnabledAvailable).to(beNil());
- expect(testStruct.heatingLevelAvailable).to(beNil());
- expect(testStruct.coolingLevelAvailable).to(beNil());
- expect(testStruct.horizontalPositionAvailable).to(beNil());
- expect(testStruct.verticalPositionAvailable).to(beNil());
- expect(testStruct.frontVerticalPositionAvailable).to(beNil());
- expect(testStruct.backVerticalPositionAvailable).to(beNil());
- expect(testStruct.backTiltAngleAvailable).to(beNil());
- expect(testStruct.headSupportHorizontalPositionAvailable).to(beNil());
- expect(testStruct.headSupportVerticalPositionAvailable).to(beNil());
- expect(testStruct.massageEnabledAvailable).to(beNil());
- expect(testStruct.massageModeAvailable).to(beNil());
- expect(testStruct.massageCushionFirmnessAvailable).to(beNil());
- expect(testStruct.memoryAvailable).to(beNil());
-
});
it(@"Should set and get correctly", ^ {
@@ -146,7 +93,6 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.massageModeAvailable).to(beNil());
expect(testStruct.massageCushionFirmnessAvailable).to(beNil());
expect(testStruct.memoryAvailable).to(beNil());
-
});
it(@"Should set and get correctly", ^ {
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m
index ee3a4638e..d6e4f368e 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m
@@ -17,15 +17,19 @@
QuickSpecBegin(SDLSeatControlDataSpec)
-SDLMassageCushionFirmness* massageCushionFirmness = [[SDLMassageCushionFirmness alloc] init];
+SDLMassageCushionFirmness *massageCushionFirmness = [[SDLMassageCushionFirmness alloc] init];
SDLMassageModeData *massageModeData = [[SDLMassageModeData alloc] init];
SDLSeatMemoryAction *seatMemoryAction = [[SDLSeatMemoryAction alloc] init];
describe(@"Getter/Setter Tests", ^ {
it(@"Should set and get correctly", ^ {
- SDLSeatControlData* testStruct = [[SDLSeatControlData alloc] init];
+ SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testStruct.id = SDLSupportedSeatDriver;
+#pragma clang diagnostic pop
+
testStruct.heatingEnabled = @NO;
testStruct.coolingEnabled = @YES;
testStruct.heatingLevel = @25;
@@ -41,11 +45,14 @@ describe(@"Getter/Setter Tests", ^ {
testStruct.headSupportVerticalPosition = @43;
testStruct.massageEnabled = @YES;
- testStruct.massageMode = [@[massageModeData] copy];
- testStruct.massageCushionFirmness = [@[massageCushionFirmness] copy];
+ testStruct.massageMode = @[massageModeData];
+ testStruct.massageCushionFirmness = @[massageCushionFirmness];
testStruct.memory = seatMemoryAction;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testStruct.id).to(equal(SDLSupportedSeatDriver));
+#pragma clang diagnostic pop
expect(testStruct.heatingEnabled).to(equal(@NO));
expect(testStruct.coolingEnabled).to(equal(@YES));
expect(testStruct.heatingLevel).to(equal(@25));
@@ -58,16 +65,45 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.headSupportHorizontalPosition).to(equal(@3));
expect(testStruct.headSupportVerticalPosition).to(equal(@43));
expect(testStruct.massageEnabled).to(equal(@YES));
- expect(testStruct.massageMode).to(equal([@[massageModeData] copy]));
- expect(testStruct.massageCushionFirmness).to(equal([@[massageCushionFirmness] copy]));
+ expect(testStruct.massageMode).to(equal(@[massageModeData]));
+ expect(testStruct.massageCushionFirmness).to(equal(@[massageCushionFirmness]));
expect(testStruct.memory).to(equal(seatMemoryAction));
+ });
+
+ it(@"Should get correctly when initialized with initWithHeatingEnabled:coolingEnabled:heatingLevel:coolingLevel:horizontalPosition:verticalPosition:frontVerticalPosition:backVerticalPosition:backTiltAngle:headSupportHorizontalPosition:headSupportVerticalPosition:massageEnabled:massageMode:massageCushionFirmness:memory:", ^ {
+ SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] initWithHeatingEnabled:@NO coolingEnabled:@YES heatingLevel:@25 coolingLevel:@10 horizontalPosition:@23 verticalPosition:@25 frontVerticalPosition:@12 backVerticalPosition:@25 backTiltAngle:@2 headSupportHorizontalPosition:@3 headSupportVerticalPosition:@43 massageEnabled:@YES massageMode:@[massageModeData] massageCushionFirmness:@[massageCushionFirmness] memory:seatMemoryAction];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testStruct.id).to(beNil());
+#pragma clang diagnostic pop
+ expect(testStruct.heatingEnabled).to(equal(@NO));
+ expect(testStruct.coolingEnabled).to(equal(@YES));
+ expect(testStruct.heatingLevel).to(equal(@25));
+ expect(testStruct.coolingLevel).to(equal(@10));
+ expect(testStruct.horizontalPosition).to(equal(@23));
+ expect(testStruct.verticalPosition).to(equal(@25));
+ expect(testStruct.frontVerticalPosition).to(equal(@12));
+ expect(testStruct.backVerticalPosition).to(equal(@25));
+ expect(testStruct.backTiltAngle).to(equal(@2));
+ expect(testStruct.headSupportHorizontalPosition).to(equal(@3));
+ expect(testStruct.headSupportVerticalPosition).to(equal(@43));
+ expect(testStruct.massageEnabled).to(equal(@YES));
+ expect(testStruct.massageMode).to(equal(@[massageModeData]));
+ expect(testStruct.massageCushionFirmness).to(equal(@[massageCushionFirmness]));
+ expect(testStruct.memory).to(equal(seatMemoryAction));
});
- it(@"Should set and get correctly", ^ {
- SDLSeatControlData* testStruct = [[SDLSeatControlData alloc] initWithId:SDLSupportedSeatDriver heatingEnabled:NO coolingEnable:YES heatingLevel:25 coolingLevel:10 horizontalPostion:23 verticalPostion:25 frontVerticalPostion:12 backVerticalPostion:25 backTiltAngle:2 headSupportedHorizontalPostion:3 headSupportedVerticalPostion:43 massageEnabled:YES massageMode:[@[massageModeData] copy] massageCussionFirmness:[@[massageCushionFirmness] copy] memory:seatMemoryAction];
+ it(@"Should get correctly when initialized with initWithId:heatingEnabled:coolingEnable:heatingLevel:coolingLevel:horizontalPostion:verticalPostion:frontVerticalPostion:backVerticalPostion:backTiltAngle: headSupportedHorizontalPostion:headSupportedVerticalPostion:massageEnabled:massageMode:massageCussionFirmness:memory:", ^ {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] initWithId:SDLSupportedSeatDriver heatingEnabled:NO coolingEnable:YES heatingLevel:25 coolingLevel:10 horizontalPostion:23 verticalPostion:25 frontVerticalPostion:12 backVerticalPostion:25 backTiltAngle:2 headSupportedHorizontalPostion:3 headSupportedVerticalPostion:43 massageEnabled:YES massageMode:@[massageModeData] massageCussionFirmness:@[massageCushionFirmness] memory:seatMemoryAction];
+#pragma clang diagnostic pop
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testStruct.id).to(equal(SDLSupportedSeatDriver));
+#pragma clang diagnostic pop
expect(testStruct.heatingEnabled).to(equal(@NO));
expect(testStruct.coolingEnabled).to(equal(@YES));
expect(testStruct.heatingLevel).to(equal(@25));
@@ -80,16 +116,21 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.headSupportHorizontalPosition).to(equal(@3));
expect(testStruct.headSupportVerticalPosition).to(equal(@43));
expect(testStruct.massageEnabled).to(equal(@YES));
- expect(testStruct.massageMode).to(equal([@[massageModeData] copy]));
- expect(testStruct.massageCushionFirmness).to(equal([@[massageCushionFirmness] copy]));
+ expect(testStruct.massageMode).to(equal(@[massageModeData]));
+ expect(testStruct.massageCushionFirmness).to(equal(@[massageCushionFirmness]));
expect(testStruct.memory).to(equal(seatMemoryAction));
-
});
- it(@"Should set and get correctly", ^ {
- SDLSeatControlData* testStruct = [[SDLSeatControlData alloc] initWithId:SDLSupportedSeatDriver];
+ it(@"Should get correctly when initialized with initWithId:", ^ {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] initWithId:SDLSupportedSeatDriver];
+#pragma clang diagnostic pop
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testStruct.id).to(equal(SDLSupportedSeatDriver));
+#pragma clang diagnostic pop
expect(testStruct.heatingEnabled).to(beNil());
expect(testStruct.coolingEnabled).to(beNil());
expect(testStruct.heatingLevel).to(beNil());
@@ -108,8 +149,10 @@ describe(@"Getter/Setter Tests", ^ {
});
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameId:SDLSupportedSeatDriver,
+ it(@"Should get correctly when initialized with a dictionary", ^ {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ NSDictionary *dict = @{SDLRPCParameterNameId:SDLSupportedSeatDriver,
SDLRPCParameterNameHeatingEnabled:@NO,
SDLRPCParameterNameCoolingEnabled:@YES,
SDLRPCParameterNameHeatingLevel:@25,
@@ -122,16 +165,18 @@ describe(@"Getter/Setter Tests", ^ {
SDLRPCParameterNameHeadSupportHorizontalPosition:@3,
SDLRPCParameterNameHeadSupportVerticalPosition:@43,
SDLRPCParameterNameMassageEnabled:@YES,
- SDLRPCParameterNameMassageMode:[@[massageModeData] mutableCopy],
- SDLRPCParameterNameMassageCushionFirmness:[@[massageCushionFirmness] mutableCopy],
+ SDLRPCParameterNameMassageMode:@[massageModeData],
+ SDLRPCParameterNameMassageCushionFirmness:@[massageCushionFirmness],
SDLRPCParameterNameMemory:seatMemoryAction
- } mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] initWithDictionary:dict];
+ };
#pragma clang diagnostic pop
+ SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] initWithDictionary:dict];
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testStruct.id).to(equal(SDLSupportedSeatDriver));
+#pragma clang diagnostic pop
expect(testStruct.heatingEnabled).to(equal(@NO));
expect(testStruct.coolingEnabled).to(equal(@YES));
expect(testStruct.heatingLevel).to(equal(@25));
@@ -144,15 +189,18 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.headSupportHorizontalPosition).to(equal(@3));
expect(testStruct.headSupportVerticalPosition).to(equal(@43));
expect(testStruct.massageEnabled).to(equal(@YES));
- expect(testStruct.massageMode).to(equal([@[massageModeData] mutableCopy]));
- expect(testStruct.massageCushionFirmness).to(equal([@[massageCushionFirmness] mutableCopy]));
+ expect(testStruct.massageMode).to(equal(@[massageModeData]));
+ expect(testStruct.massageCushionFirmness).to(equal(@[massageCushionFirmness]));
expect(testStruct.memory).to(equal(seatMemoryAction));
});
it(@"Should return nil if not set", ^ {
- SDLSeatControlData* testStruct = [[SDLSeatControlData alloc] init];
+ SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] init];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testStruct.id).to(beNil());
+#pragma clang diagnostic pop
expect(testStruct.heatingEnabled).to(beNil());
expect(testStruct.coolingEnabled).to(beNil());
expect(testStruct.heatingLevel).to(beNil());
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStabilityControlsStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStabilityControlsStatusSpec.m
new file mode 100644
index 000000000..a4fbcaabf
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStabilityControlsStatusSpec.m
@@ -0,0 +1,66 @@
+//
+// SDLStabilityControlsStatusSpec.m
+// SmartDeviceLink
+
+#import <Foundation/Foundation.h>
+#import <Nimble/Nimble.h>
+#import <Quick/Quick.h>
+
+#import "SDLRPCParameterNames.h"
+#import "SDLStabilityControlsStatus.h"
+#import "SDLVehicleDataStatus.h"
+
+QuickSpecBegin(SDLStabilityControlsStatusSpec)
+
+describe(@"getter/setter tests", ^{
+ // set up test constants
+ SDLVehicleDataStatus escSystem = SDLVehicleDataStatusOn;
+ SDLVehicleDataStatus trailerSwayControl = SDLVehicleDataStatusOn;
+
+ context(@"init and assign", ^{
+ SDLStabilityControlsStatus* testStruct = [[SDLStabilityControlsStatus alloc] init];
+ testStruct.escSystem = escSystem;
+ testStruct.trailerSwayControl = trailerSwayControl;
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.escSystem).to(equal(escSystem));
+ expect(testStruct.trailerSwayControl).to(equal(trailerSwayControl));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ NSDictionary* dict = @{
+ SDLRPCParameterNameEscSystem:escSystem,
+ SDLRPCParameterNameTrailerSwayControl:trailerSwayControl,
+ };
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLStabilityControlsStatus* testStruct = [[SDLStabilityControlsStatus alloc] initWithDictionary:dict];
+#pragma clang diagnostic pop
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.escSystem).to(equal(escSystem));
+ expect(testStruct.trailerSwayControl).to(equal(trailerSwayControl));
+ });
+ });
+
+ context(@"init", ^{
+ SDLStabilityControlsStatus* testStruct = [[SDLStabilityControlsStatus alloc] init];
+
+ it(@"expect all properties to be nil", ^{
+ expect(testStruct.escSystem).to(beNil());
+ expect(testStruct.trailerSwayControl).to(beNil());
+ });
+ });
+
+ context(@"initWithEscSystem:trailerSwayControl:", ^{
+ SDLStabilityControlsStatus* testStruct = [[SDLStabilityControlsStatus alloc] initWithEscSystem:escSystem trailerSwayControl:trailerSwayControl];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.escSystem).to(equal(escSystem));
+ expect(testStruct.trailerSwayControl).to(equal(trailerSwayControl));
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m
deleted file mode 100644
index 7e4458fca..000000000
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// SDLSyncMsgVersionSpec.m
-// SmartDeviceLink
-
-
-#import <Foundation/Foundation.h>
-
-#import <Quick/Quick.h>
-#import <Nimble/Nimble.h>
-
-#import "SDLSyncMsgVersion.h"
-#import "SDLRPCParameterNames.h"
-
-QuickSpecBegin(SDLSyncMsgVersionSpec)
-
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSyncMsgVersion* testStruct = [[SDLSyncMsgVersion alloc] init];
-#pragma clang diagnostic pop
-
- testStruct.majorVersion = @4;
- testStruct.minorVersion = @532;
- testStruct.patchVersion = @12;
-
- expect(testStruct.majorVersion).to(equal(@4));
- expect(testStruct.minorVersion).to(equal(@532));
- expect(testStruct.patchVersion).to(equal(@12));
- });
-
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameMajorVersion:@4,
- SDLRPCParameterNameMinorVersion:@532,
- SDLRPCParameterNamePatchVersion:@12} mutableCopy];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSyncMsgVersion* testStruct = [[SDLSyncMsgVersion alloc] initWithDictionary:dict];
-#pragma clang diagnostic pop
-
- expect(testStruct.majorVersion).to(equal(@4));
- expect(testStruct.minorVersion).to(equal(@532));
- expect(testStruct.patchVersion).to(equal(@12));
- });
-
- it(@"Should return nil if not set", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLSyncMsgVersion* testStruct = [[SDLSyncMsgVersion alloc] init];
-#pragma clang diagnostic pop
-
-
- expect(testStruct.majorVersion).to(beNil());
- expect(testStruct.minorVersion).to(beNil());
- expect(testStruct.patchVersion).to(beNil());
- });
-});
-
-QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
index d41f553b6..68bd020f0 100755
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
@@ -6,17 +6,18 @@
#import "SDLSystemCapability.h"
#import "SDLAppServicesCapabilities.h"
+#import "SDLDriverDistractionCapability.h"
#import "SDLImageResolution.h"
#import "SDLNavigationCapability.h"
#import "SDLPhoneCapability.h"
-#import "SDLSystemCapabilityType.h"
#import "SDLRemoteControlCapabilities.h"
#import "SDLRPCParameterNames.h"
+#import "SDLSeatLocationCapability.h"
+#import "SDLSystemCapabilityType.h"
#import "SDLVideoStreamingCapability.h"
#import "SDLVideoStreamingCodec.h"
#import "SDLVideoStreamingFormat.h"
#import "SDLVideoStreamingProtocol.h"
-#import "SDLSeatLocationCapability.h"
#import "SDLRPCParameterNames.h"
@@ -29,6 +30,7 @@ describe(@"Getter/Setter Tests", ^ {
__block SDLRemoteControlCapabilities *testRemoteControlCapabilities = nil;
__block SDLVideoStreamingCapability *testVideoStreamingCapability = nil;
__block SDLSeatLocationCapability *testSeatLocationCapability = nil;
+ __block SDLDriverDistractionCapability *testDriverDistractionCapability = nil;
beforeEach(^{
testAppServicesCapabilities = [[SDLAppServicesCapabilities alloc] initWithAppServices:nil];
@@ -37,6 +39,7 @@ describe(@"Getter/Setter Tests", ^ {
testRemoteControlCapabilities = [[SDLRemoteControlCapabilities alloc] initWithClimateControlCapabilities:nil radioControlCapabilities:nil buttonCapabilities:nil seatControlCapabilities:nil audioControlCapabilities:nil hmiSettingsControlCapabilities:nil lightControlCapabilities:nil];
testVideoStreamingCapability = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:[[SDLImageResolution alloc] initWithWidth:50 height:50] maxBitrate:5 supportedFormats:@[] hapticDataSupported:false diagonalScreenSize:23 pixelPerInch:119 scale:1.4];
testSeatLocationCapability = [[SDLSeatLocationCapability alloc] init];
+ testDriverDistractionCapability = [[SDLDriverDistractionCapability alloc] initWithMenuLength:@2 subMenuDepth:@4];
});
it(@"Should set and get correctly", ^ {
@@ -48,6 +51,7 @@ describe(@"Getter/Setter Tests", ^ {
testStruct.videoStreamingCapability = testVideoStreamingCapability;
testStruct.remoteControlCapability = testRemoteControlCapabilities;
testStruct.seatLocationCapability = testSeatLocationCapability;
+ testStruct.driverDistractionCapability = testDriverDistractionCapability;
expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeNavigation));
expect(testStruct.appServicesCapabilities).to(equal(testAppServicesCapabilities));
@@ -56,17 +60,19 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.videoStreamingCapability).to(equal(testVideoStreamingCapability));
expect(testStruct.remoteControlCapability).to(equal(testRemoteControlCapabilities));
expect(testStruct.seatLocationCapability).to(equal(testSeatLocationCapability));
+ expect(testStruct.driverDistractionCapability).to(equal(testDriverDistractionCapability));
});
it(@"Should get correctly when initialized with a dictionary", ^ {
NSDictionary *dict = @{
- SDLRPCParameterNameSystemCapabilityType:SDLSystemCapabilityTypeNavigation,
- SDLRPCParameterNameAppServicesCapabilities:testAppServicesCapabilities,
- SDLRPCParameterNameNavigationCapability:testNavigationCapability,
- SDLRPCParameterNamePhoneCapability:testPhoneCapability,
- SDLRPCParameterNameRemoteControlCapability:testRemoteControlCapabilities,
- SDLRPCParameterNameVideoStreamingCapability:testVideoStreamingCapability,
- SDLRPCParameterNameSeatLocationCapability:testSeatLocationCapability
+ SDLRPCParameterNameSystemCapabilityType: SDLSystemCapabilityTypeNavigation,
+ SDLRPCParameterNameAppServicesCapabilities: testAppServicesCapabilities,
+ SDLRPCParameterNameNavigationCapability: testNavigationCapability,
+ SDLRPCParameterNamePhoneCapability: testPhoneCapability,
+ SDLRPCParameterNameRemoteControlCapability: testRemoteControlCapabilities,
+ SDLRPCParameterNameVideoStreamingCapability: testVideoStreamingCapability,
+ SDLRPCParameterNameSeatLocationCapability: testSeatLocationCapability,
+ SDLRPCParameterNameDriverDistractionCapability: testDriverDistractionCapability
};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
@@ -80,6 +86,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.remoteControlCapability).to(equal(testRemoteControlCapabilities));
expect(testStruct.videoStreamingCapability).to(equal(testVideoStreamingCapability));
expect(testStruct.seatLocationCapability).to(equal(testSeatLocationCapability));
+ expect(testStruct.driverDistractionCapability).to(equal(testDriverDistractionCapability));
});
it(@"Should return nil if not set", ^ {
@@ -92,6 +99,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.videoStreamingCapability).to(beNil());
expect(testStruct.remoteControlCapability).to(beNil());
expect(testStruct.seatLocationCapability).to(beNil());
+ expect(testStruct.driverDistractionCapability).to(beNil());
});
it(@"should initialize correctly with initWithAppServicesCapabilities:", ^{
@@ -104,6 +112,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.remoteControlCapability).to(beNil());
expect(testStruct.videoStreamingCapability).to(beNil());
expect(testStruct.seatLocationCapability).to(beNil());
+ expect(testStruct.driverDistractionCapability).to(beNil());
});
it(@"should initialize correctly with initWithPhoneCapability:", ^{
@@ -117,6 +126,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.remoteControlCapability).to(beNil());
expect(testStruct.videoStreamingCapability).to(beNil());
expect(testStruct.seatLocationCapability).to(beNil());
+ expect(testStruct.driverDistractionCapability).to(beNil());
});
it(@"should initialize correctly with initWithNavigationCapability:", ^{
@@ -130,6 +140,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.remoteControlCapability).to(beNil());
expect(testStruct.videoStreamingCapability).to(beNil());
expect(testStruct.seatLocationCapability).to(beNil());
+ expect(testStruct.driverDistractionCapability).to(beNil());
});
it(@"should initialize correctly with initWithVideoStreamingCapability:", ^{
@@ -160,6 +171,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.remoteControlCapability).to(beNil());
expect(testStruct.videoStreamingCapability).to(equal(testVidStruct));
expect(testStruct.seatLocationCapability).to(beNil());
+ expect(testStruct.driverDistractionCapability).to(beNil());
});
it(@"should initialize correctly with initWithRemoteControlCapability:", ^{
@@ -172,6 +184,7 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.remoteControlCapability).to(equal(testRemoteControlCapabilities));
expect(testStruct.videoStreamingCapability).to(beNil());
expect(testStruct.seatLocationCapability).to(beNil());
+ expect(testStruct.driverDistractionCapability).to(beNil());
});
it(@"should initialize correctly with initWithSeatLocationCapability:", ^{
@@ -184,6 +197,20 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.remoteControlCapability).to(beNil());
expect(testStruct.videoStreamingCapability).to(beNil());
expect(testStruct.seatLocationCapability).to(equal(testSeatLocationCapability));
+ expect(testStruct.driverDistractionCapability).to(beNil());
+ });
+
+ it(@"should initialize correctly with initWithDriverDistractionCapability:", ^{
+ SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithDriverDistractionCapability:testDriverDistractionCapability];
+
+ expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeDriverDistraction));
+ expect(testStruct.appServicesCapabilities).to(beNil());
+ expect(testStruct.navigationCapability).to(beNil());
+ expect(testStruct.phoneCapability).to(beNil());
+ expect(testStruct.remoteControlCapability).to(beNil());
+ expect(testStruct.videoStreamingCapability).to(beNil());
+ expect(testStruct.seatLocationCapability).to(beNil());
+ expect(testStruct.driverDistractionCapability).to(equal(testDriverDistractionCapability));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m
index fcde49e1e..d8b6e8983 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m
@@ -18,7 +18,7 @@ QuickSpecBegin(SDLTextFieldSpec)
describe(@"Getter/Setter Tests", ^ {
__block SDLTextFieldName testName = SDLTextFieldNameETA;
- __block SDLCharacterSet testCharacterSet = SDLCharacterSetCID1;
+ __block SDLCharacterSet testCharacterSet = SDLCharacterSetUtf8;
__block NSUInteger testWidth = 100;
__block NSUInteger testRows = 4;
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m
index 5cbb03022..857a05d61 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m
@@ -89,21 +89,6 @@ describe(@"Initialization tests", ^{
expect(testStruct.pixelPerInch).to(equal(testPixelPerInch));
expect(testStruct.scale).to(equal(testScale));
});
-
- it(@"Should initialize correctly with deprecated initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported", ^ {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLVideoStreamingCapability *testStruct = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:testPreferredResolution maxBitrate:testMaxBitrate supportedFormats:testVideoStreamingFormats hapticDataSupported:testHapticDataSupported];
- #pragma clang diagnostic pop
-
- expect(testStruct.preferredResolution).to(equal(testPreferredResolution));
- expect(testStruct.maxBitrate).to(equal(testMaxBitrate));
- expect(testStruct.supportedFormats).to(equal(testVideoStreamingFormats));
- expect(testStruct.hapticSpatialDataSupported).to(equal(testHapticDataSupported));
- expect(testStruct.diagonalScreenSize).to(beNil());
- expect(testStruct.pixelPerInch).to(beNil());
- expect(testStruct.scale).to(beNil());
- });
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m
index 94eecde90..e8c2514b4 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowCapabilitySpec.m
@@ -6,25 +6,32 @@
#import <Nimble/Nimble.h>
#import "SDLWindowCapability.h"
-#import "SDLRPCParameterNames.h"
-#import "SDLTextField.h"
-#import "SDLTextFieldName.h"
+
+#import "SDLButtonCapabilities.h"
+#import "SDLDynamicUpdateCapabilities.h"
#import "SDLImageField.h"
#import "SDLImageType.h"
-#import "SDLButtonCapabilities.h"
+#import "SDLRPCParameterNames.h"
#import "SDLSoftButtonCapabilities.h"
+#import "SDLTextField.h"
+#import "SDLTextFieldName.h"
QuickSpecBegin(SDLWindowCapabilitySpec)
+__block SDLWindowCapability *testStruct = nil;
+
+__block SDLTextField* testTextField = nil;
+__block SDLImageField *testImageField = nil;
+__block SDLButtonCapabilities *testButtonCapabilities = nil;
+__block SDLSoftButtonCapabilities *testSoftButtonsCapabilities = nil;
+__block SDLImageType testImageType = nil;
+__block NSString *testTextName = nil;
+__block NSString *testImageName = nil;
+__block NSString *testTemplateAvailable = nil;
+__block SDLMenuLayout testMenuLayout = SDLMenuLayoutTiles;
+__block SDLDynamicUpdateCapabilities *testDynamicUpdates = nil;
+
describe(@"Getter/Setter Tests", ^ {
- __block SDLTextField* testTextField = nil;
- __block SDLImageField *testImageField = nil;
- __block SDLButtonCapabilities *testButtonCapabilities = nil;
- __block SDLSoftButtonCapabilities *testSoftButtonscapabilities = nil;
- __block SDLImageType testImageType = nil;
- __block NSString *testTextName = nil;
- __block NSString *testImageName = nil;
-
beforeEach(^{
testImageType = SDLImageTypeDynamic;
testTextName = @"test Text field";
@@ -41,20 +48,25 @@ describe(@"Getter/Setter Tests", ^ {
testButtonCapabilities.longPressAvailable = @YES;
testButtonCapabilities.upDownAvailable = @YES;
- testSoftButtonscapabilities = [[SDLSoftButtonCapabilities alloc] init];
- testSoftButtonscapabilities.imageSupported = @YES;
+ testSoftButtonsCapabilities = [[SDLSoftButtonCapabilities alloc] init];
+ testSoftButtonsCapabilities.imageSupported = @YES;
+
+ testTemplateAvailable = @"myTemplate";
+ testDynamicUpdates = [[SDLDynamicUpdateCapabilities alloc] initWithSupportedDynamicImageFieldNames:@[SDLImageFieldNameSubMenuIcon] supportsDynamicSubMenus:@YES];
});
it(@"Should set and get correctly", ^ {
- SDLWindowCapability* testStruct = testStruct = [[SDLWindowCapability alloc] init];
+ testStruct = [[SDLWindowCapability alloc] init];
testStruct.windowID = @444;
testStruct.numCustomPresetsAvailable = @10;
testStruct.textFields = @[testTextField];
testStruct.imageFields = @[testImageField];
testStruct.imageTypeSupported = @[testImageType];
testStruct.buttonCapabilities = @[testButtonCapabilities];
- testStruct.softButtonCapabilities = @[testSoftButtonscapabilities];
- testStruct.menuLayoutsAvailable = @[SDLMenuLayoutTiles];
+ testStruct.softButtonCapabilities = @[testSoftButtonsCapabilities];
+ testStruct.menuLayoutsAvailable = @[testMenuLayout];
+ testStruct.templatesAvailable = @[testTemplateAvailable];
+ testStruct.dynamicUpdateCapabilities = testDynamicUpdates;
expect(testStruct.windowID).to(equal(@444));
expect(testStruct.textFields.firstObject.name).to(equal(SDLTextFieldNameTertiaryText));
@@ -65,9 +77,43 @@ describe(@"Getter/Setter Tests", ^ {
expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES));
expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES));
- expect(testStruct.menuLayoutsAvailable).to(equal(@[SDLMenuLayoutTiles]));
+ expect(testStruct.menuLayoutsAvailable).to(equal(@[testMenuLayout]));
+ expect(testStruct.templatesAvailable).to(equal(@[testTemplateAvailable]));
+ expect(testStruct.dynamicUpdateCapabilities).to(equal(testDynamicUpdates));
+ });
+});
+
+describe(@"initializing with ", ^{
+ beforeEach(^{
+ testStruct = [[SDLWindowCapability alloc] initWithWindowID:@444 textFields:@[testTextField] imageFields:@[testImageField] imageTypeSupported:@[testImageType] templatesAvailable:@[testTemplateAvailable] numCustomPresetsAvailable:@10 buttonCapabilities:@[testButtonCapabilities] softButtonCapabilities:@[testSoftButtonsCapabilities] menuLayoutsAvailable:@[testMenuLayout] dynamicUpdateCapabilities:testDynamicUpdates];
+ });
+
+ it(@"Should set and get correctly", ^ {
+ testStruct = [[SDLWindowCapability alloc] init];
+ testStruct.windowID = @444;
+ testStruct.numCustomPresetsAvailable = @10;
+ testStruct.textFields = @[testTextField];
+ testStruct.imageFields = @[testImageField];
+ testStruct.imageTypeSupported = @[testImageType];
+ testStruct.buttonCapabilities = @[testButtonCapabilities];
+ testStruct.softButtonCapabilities = @[testSoftButtonsCapabilities];
+ testStruct.menuLayoutsAvailable = @[testMenuLayout];
+ testStruct.templatesAvailable = @[testTemplateAvailable];
+ testStruct.dynamicUpdateCapabilities = testDynamicUpdates;
+
+ expect(testStruct.windowID).to(equal(@444));
+ expect(testStruct.textFields.firstObject.name).to(equal(SDLTextFieldNameTertiaryText));
+ expect(testStruct.imageFields.firstObject.name).to(equal(testImageName));
+ expect(testStruct.numCustomPresetsAvailable).to(equal(@10));
+ expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
+ expect(testStruct.buttonCapabilities.firstObject.shortPressAvailable).to(equal(@YES));
+ expect(testStruct.buttonCapabilities.firstObject.longPressAvailable).to(equal(@YES));
+ expect(testStruct.buttonCapabilities.firstObject.name).to(equal(SDLButtonNameOk));
+ expect(testStruct.softButtonCapabilities.firstObject.imageSupported).to(equal(@YES));
+ expect(testStruct.menuLayoutsAvailable).to(equal(@[testMenuLayout]));
+ expect(testStruct.templatesAvailable).to(equal(@[testTemplateAvailable]));
+ expect(testStruct.dynamicUpdateCapabilities).to(equal(testDynamicUpdates));
});
-
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStateSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStateSpec.m
new file mode 100644
index 000000000..efed67b35
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStateSpec.m
@@ -0,0 +1,50 @@
+//
+// SDLWindowStateSpec.m
+// SmartDeviceLinkTests
+//
+
+#import <Foundation/Foundation.h>
+#import <Nimble/Nimble.h>
+#import <Quick/Quick.h>
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowState.h"
+
+QuickSpecBegin(SDLWindowStateSpec)
+
+const UInt8 approximatePosition = 13;
+const UInt8 deviation = 42;
+
+describe(@"getter/setter tests", ^{
+ context(@"initWithApproximatePosition:deviation:", ^{
+ SDLWindowState *testStruct = [[SDLWindowState alloc] initWithApproximatePosition:approximatePosition deviation:deviation];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.approximatePosition).to(equal(approximatePosition));
+ expect(testStruct.deviation).to(equal(deviation));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameDeviation:@(deviation), SDLRPCParameterNameApproximatePosition:@(approximatePosition)};
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLWindowState *testStruct = [[SDLWindowState alloc] initWithDictionary:dict];
+#pragma clang diagnostic pop
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.approximatePosition).to(equal(approximatePosition));
+ expect(testStruct.deviation).to(equal(deviation));
+ });
+ });
+
+ context(@"init", ^{
+ SDLWindowState *testStruct = [[SDLWindowState alloc] init];
+
+ it(@"should return nil if not set", ^{
+ expect(testStruct.approximatePosition).to(beNil());
+ expect(testStruct.deviation).to(beNil());
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStatusSpec.m
new file mode 100644
index 000000000..5214de55c
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWindowStatusSpec.m
@@ -0,0 +1,56 @@
+//
+// SDLWindowStatusSpec.m
+// SmartDeviceLinkTests
+//
+
+#import <Foundation/Foundation.h>
+#import <Nimble/Nimble.h>
+#import <Quick/Quick.h>
+#import "SDLGrid.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowState.h"
+#import "SDLWindowStatus.h"
+
+const UInt8 approximatePosition = 13;
+const UInt8 deviation = 42;
+
+QuickSpecBegin(SDLWindowStatusSpec)
+
+describe(@"getter/setter tests", ^{
+ context(@"initWithLocation:state", ^{
+ SDLWindowState *state = [[SDLWindowState alloc] initWithApproximatePosition:approximatePosition deviation:deviation];
+ SDLGrid *location = [[SDLGrid alloc] init];
+ SDLWindowStatus *testStruct = [[SDLWindowStatus alloc] initWithLocation:location state:state];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.state).to(equal(state));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ SDLWindowState *state = [[SDLWindowState alloc] initWithApproximatePosition:approximatePosition deviation:deviation];
+ SDLGrid *location = [[SDLGrid alloc] init];
+ NSDictionary *dict = @{SDLRPCParameterNameLocation:location, SDLRPCParameterNameState:state};
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLWindowStatus *testStruct = [[SDLWindowStatus alloc] initWithDictionary:dict];
+#pragma clang diagnostic pop
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.state).to(equal(state));
+ });
+ });
+
+ context(@"init", ^{
+ SDLWindowStatus *testStruct = [[SDLWindowStatus alloc] init];
+
+ it(@"should return nil if not set", ^{
+ expect(testStruct.location).to(beNil());
+ expect(testStruct.state).to(beNil());
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m
index c6ebbe9dc..f1baa88fc 100644
--- a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m
@@ -13,139 +13,85 @@
QuickSpecBegin(SDLRPCMessageSpec)
-describe(@"Readonly Property Tests", ^ {
- it(@"Should get name correctly when initialized with name", ^ {
+describe(@"Getter/Setter Tests", ^ {
+ __block NSString *testRPCName = @"Test RPC Name";
+ __block NSString *testNameKey = @"firstName";
+ __block NSString *testNameValue = @"George";
+ __block NSString *testAgeKey = @"age";
+ __block NSNumber *testAgeValue = @25;
+ const char *testString = "ImportantData";
+ __block NSData *testBulkData = nil;
+
+ beforeEach(^{
+ testBulkData = [NSData dataWithBytes:testString length:strlen(testString)];;
+ });
+
+ it(@"should get correctly when initialized with initWithName:", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@"Poorly Named"];
+ SDLRPCMessage *testMessage = [[SDLRPCMessage alloc] initWithName:testRPCName];
#pragma clang diagnostic pop
- expect(testMessage.name).to(equal(@"Poorly Named"));
+ expect(testMessage.name).to(equal(testRPCName));
+ expect(testMessage.parameters).to(beEmpty());
+ expect(testMessage.bulkData).to(beNil());
+ expect(testMessage.messageType).to(equal(SDLRPCParameterNameRequest));
});
- it(@"Should get correctly when initialized with dictionary", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameNotification:
- @{SDLRPCParameterNameParameters:
- @{@"name":@"George"},
- SDLRPCParameterNameOperationName:@"Poorly Named"}} mutableCopy]];
-#pragma clang diagnostic pop
-
- expect(testMessage.name).to(equal(@"Poorly Named"));
+ it(@"should get correctly when initialized with a dictionary", ^ {
+ NSDictionary *dict = @{SDLRPCParameterNameNotification:
+ @{SDLRPCParameterNameParameters:
+ @{testNameKey:testNameValue,
+ testAgeKey:testAgeValue,
+ },
+ SDLRPCParameterNameOperationName:testRPCName
+ },
+ SDLRPCParameterNameBulkData:testBulkData,
+ };
+ SDLRPCMessage *testMessage = [[SDLRPCMessage alloc] initWithDictionary:dict];
+
+ expect(testMessage.name).to(equal(testRPCName));
+ expect(testMessage.parameters[testNameKey]).to(equal(testNameValue));
+ expect(testMessage.parameters[testAgeKey]).to(equal(testAgeValue));
+ expect(testMessage.bulkData).to(equal(testBulkData));
+ expect([NSString stringWithUTF8String:testMessage.bulkData.bytes]).to(equal([NSString stringWithUTF8String:testBulkData.bytes]));
expect(testMessage.messageType).to(equal(SDLRPCParameterNameNotification));
});
-});
-describe(@"Parameter Tests", ^ {
- it(@"Should set and get correctly", ^ {
+ it(@"should set and get correctly", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""];
-
- [testMessage setParameters:@"ADogAPanicInAPagoda" value:@"adogaPAnIcinaPAgoDA"];
- expect([testMessage getParameters:@"ADogAPanicInAPagoda"]).to(equal(@"adogaPAnIcinaPAgoDA"));
+ SDLRPCMessage *testMessage = [[SDLRPCMessage alloc] initWithName:testRPCName];
#pragma clang diagnostic pop
- expect(testMessage.parameters[@"ADogAPanicInAPagoda"]).to(equal(@"adogaPAnIcinaPAgoDA"));
- });
-
- it(@"Should get correctly when initialized", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameResponse:
- @{SDLRPCParameterNameParameters:
- @{@"age":@25},
- SDLRPCParameterNameOperationName:@"Nameless"}} mutableCopy]];
-#pragma clang diagnostic pop
-
- expect(testMessage.parameters[@"age"]).to(equal(@25));
- });
-
- it(@"Should be nil if not set", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""];
-
- expect(testMessage.parameters[@"ADogAPanicInAPagoda"]).to(beNil());
-#pragma clang diagnostic pop
- });
-});
+ testMessage.parameters[testAgeKey] = testAgeValue;
+ testMessage.parameters[testNameKey] = testNameValue;
+ testMessage.bulkData = testBulkData;
-describe(@"FunctionName Tests", ^ {
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""];
-
- [testMessage setFunctionName:@"Functioning"];
-#pragma clang diagnostic pop
-
- expect(testMessage.name).to(equal(@"Functioning"));
+ expect(testMessage.name).to(equal(testRPCName));
+ expect(testMessage.parameters[testAgeKey]).to(equal(testAgeValue));
+ expect(testMessage.parameters[testNameKey]).to(equal(testNameValue));
+ expect(testMessage.bulkData).to(equal(testBulkData));
+ expect([NSString stringWithUTF8String:testMessage.bulkData.bytes]).to(equal([NSString stringWithUTF8String:testBulkData.bytes]));
+ expect(testMessage.messageType).to(equal(SDLRPCParameterNameRequest));
});
-
- it(@"Should get correctly when initialized", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{@"age":@25},
- SDLRPCParameterNameOperationName:@"DoNothing"}} mutableCopy]];
-#pragma clang diagnostic pop
-
- expect(testMessage.name).to(equal(@"DoNothing"));
+ it(@"should set and get correctly with setter methods", ^ {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testMessage = [[SDLRPCMessage alloc] initWithName:@"DoSomething"];
+ SDLRPCMessage *testMessage = [[SDLRPCMessage alloc] initWithName:@""];
+ [testMessage setFunctionName:testRPCName];
+ [testMessage setParameters:testAgeKey value:testAgeValue];
+ [testMessage setParameters:testNameKey value:testNameValue];
+ [testMessage setBulkData:testBulkData];
#pragma clang diagnostic pop
-
- expect(testMessage.name).to(equal(@"DoSomething"));
- });
-
- it(@"Should be nil if not set", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameNotification:
- @{SDLRPCParameterNameParameters:
- @{}}} mutableCopy]];
-#pragma clang diagnostic pop
- expect(testMessage.name).to(beNil());
- });
-});
-describe(@"BulkDataTests", ^ {
- it(@"Should set and get correctly", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""];
-#pragma clang diagnostic pop
-
- const char* testString = "ImportantData";
- testMessage.bulkData = [NSData dataWithBytes:testString length:strlen(testString)];
-
- expect([NSString stringWithUTF8String:testMessage.bulkData.bytes]).to(equal(@"ImportantData"));
- });
-
- it(@"Should get correctly when initialized", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameNotification:
- @{SDLRPCParameterNameParameters:
- @{}},
- SDLRPCParameterNameBulkData:[NSData dataWithBytes:"ImageData" length:strlen("ImageData")]} mutableCopy]];
-#pragma clang diagnostic pop
-
- expect(testMessage.bulkData).to(equal([NSData dataWithBytes:"ImageData" length:strlen("ImageData")]));
- });
-
- it(@"Should be nil if not set", ^ {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""];
-#pragma clang diagnostic pop
-
- expect(testMessage.bulkData).to(beNil());
+ expect(testMessage.name).to(equal(testRPCName));
+ expect(testMessage.parameters[testAgeKey]).to(equal(testAgeValue));
+ expect(testMessage.parameters[testNameKey]).to(equal(testNameValue));
+ expect(testMessage.bulkData).to(equal(testBulkData));
+ expect([NSString stringWithUTF8String:testMessage.bulkData.bytes]).to(equal([NSString stringWithUTF8String:testBulkData.bytes]));
+ expect(testMessage.messageType).to(equal(SDLRPCParameterNameRequest));
});
});
diff --git a/SmartDeviceLinkTests/SDLCacheFileManagerSpec.m b/SmartDeviceLinkTests/SDLCacheFileManagerSpec.m
index e320a76ad..836a0391f 100644
--- a/SmartDeviceLinkTests/SDLCacheFileManagerSpec.m
+++ b/SmartDeviceLinkTests/SDLCacheFileManagerSpec.m
@@ -165,8 +165,8 @@ describe(@"a cache file manager", ^{
});
it(@"it should return downloaded image and no error", ^{
- expect(resultImage).to(equal(testImage));
- expect(resultError).to(beNil());
+ expect(resultImage).toEventually(equal(testImage));
+ expect(resultError).toEventually(beNil());
});
});
diff --git a/SmartDeviceLinkTests/SDLOnLockScreenStatusSpec.m b/SmartDeviceLinkTests/SDLOnLockScreenStatusSpec.m
new file mode 100644
index 000000000..d23891f7d
--- /dev/null
+++ b/SmartDeviceLinkTests/SDLOnLockScreenStatusSpec.m
@@ -0,0 +1,53 @@
+//
+// SDLLockScreenStatusInfoSpec.m
+// SmartDeviceLink
+
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLLockScreenStatusInfo.h"
+#import "SDLHMILevel.h"
+#import "SDLRPCParameterNames.h"
+
+QuickSpecBegin(SDLLockScreenStatusInfoSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ __block bool testDriverDistractionStatus = NO;
+ __block int testUserSelected = 3;
+ __block SDLLockScreenStatus testLockScreenStatus = SDLLockScreenStatusOptional;
+ __block SDLHMILevel testHMILevel = SDLHMILevelBackground;
+
+ it(@"Should set and get correctly", ^ {
+ SDLLockScreenStatusInfo *testNotification = [[SDLLockScreenStatusInfo alloc] init];
+ testNotification.driverDistractionStatus = @(testDriverDistractionStatus);
+ testNotification.userSelected = @(testUserSelected);
+ testNotification.lockScreenStatus = testLockScreenStatus;
+ testNotification.hmiLevel = testHMILevel;
+
+ expect(testNotification.driverDistractionStatus).to(beFalse());
+ expect(testNotification.userSelected).to(equal(testUserSelected));
+ expect(@(testNotification.lockScreenStatus)).to(equal(testLockScreenStatus));
+ expect(testNotification.hmiLevel).to(equal(testHMILevel));
+ });
+
+ it(@"Should init correctly with initWithDriverDistractionStatus:serSelected:lockScreenStatus:hmiLevel:", ^ {
+ SDLLockScreenStatusInfo *testNotification = [[SDLLockScreenStatusInfo alloc] initWithDriverDistractionStatus:@(testDriverDistractionStatus) userSelected:@(testUserSelected) lockScreenStatus:testLockScreenStatus hmiLevel:testHMILevel];
+
+ expect(testNotification.driverDistractionStatus).to(beFalse());
+ expect(testNotification.userSelected).to(equal(testUserSelected));
+ expect(@(testNotification.lockScreenStatus)).to(equal(testLockScreenStatus));
+ expect(testNotification.hmiLevel).to(equal(testHMILevel));
+ });
+
+ it(@"Should return the default values if not set", ^ {
+ SDLLockScreenStatusInfo *testNotification = [[SDLLockScreenStatusInfo alloc] init];
+
+ expect(testNotification.driverDistractionStatus).to(beNil());
+ expect(testNotification.userSelected).to(beNil());
+ expect(@(testNotification.lockScreenStatus)).to(equal(SDLLockScreenStatusOff));
+ expect(testNotification.hmiLevel).to(beNil());
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/SDLScreenManagerSpec.m b/SmartDeviceLinkTests/SDLScreenManagerSpec.m
index b3f613256..9f137a5b2 100644
--- a/SmartDeviceLinkTests/SDLScreenManagerSpec.m
+++ b/SmartDeviceLinkTests/SDLScreenManagerSpec.m
@@ -4,18 +4,19 @@
#import "SDLFileManager.h"
#import "SDLHMILevel.h"
+#import "SDLGlobals.h"
+#import "SDLMenuCell.h"
+#import "SDLMenuManager.h"
#import "SDLScreenManager.h"
#import "SDLShow.h"
#import "SDLSoftButtonManager.h"
#import "SDLSoftButtonObject.h"
#import "SDLSoftButtonState.h"
+#import "SDLSystemCapabilityManager.h"
+#import "SDLTemplateConfiguration.h"
#import "SDLTextAndGraphicManager.h"
-#import "TestConnectionManager.h"
#import "SDLVersion.h"
-#import "SDLGlobals.h"
-#import "SDLMenuCell.h"
-#import "SDLMenuManager.h"
-#import "SDLSystemCapabilityManager.h"
+#import "TestConnectionManager.h"
@interface SDLSoftButtonManager()
@@ -30,8 +31,7 @@
@property (weak, nonatomic) id<SDLConnectionManagerType> connectionManager;
@property (weak, nonatomic) SDLFileManager *fileManager;
-
-@property (strong, nonatomic, nullable) SDLShow *inProgressUpdate;
+@property (strong, nonatomic) NSOperationQueue *transactionQueue;
@property (copy, nonatomic, nullable) SDLHMILevel currentLevel;
@end
@@ -56,6 +56,7 @@ describe(@"screen manager", ^{
__block NSString *testString2 = @"test2";
__block NSString *testString3 = @"test3";
__block NSString *testString4 = @"test4";
+ __block NSString *testTitle = @"testTitle";
__block SDLTextAlignment testAlignment = SDLTextAlignmentRight;
__block SDLMetadataType testMetadataType1 = SDLMetadataTypeMediaTitle;
__block SDLMetadataType testMetadataType2 = SDLMetadataTypeMediaAlbum;
@@ -70,6 +71,8 @@ describe(@"screen manager", ^{
__block SDLSoftButtonState *testSBState = [[SDLSoftButtonState alloc] initWithStateName:testSBStateName text:testSBStateText image:nil];
__block SDLSoftButtonObject *testSBObject = [[SDLSoftButtonObject alloc] initWithName:testSBObjectName state:testSBState handler:nil];
+ __block SDLTemplateConfiguration *testTemplateConfig = [[SDLTemplateConfiguration alloc] initWithTemplate:@"Test"];
+
beforeEach(^{
mockConnectionManager = [[TestConnectionManager alloc] init];
mockFileManager = OCMClassMock([SDLFileManager class]);
@@ -78,6 +81,7 @@ describe(@"screen manager", ^{
testScreenManager = [[SDLScreenManager alloc] initWithConnectionManager:mockConnectionManager fileManager:mockFileManager systemCapabilityManager:mockSystemCapabilityManager];
});
+ // should set up the sub-managers correctly
it(@"should set up the sub-managers correctly", ^{
expect(testScreenManager.textAndGraphicManager.connectionManager).to(equal(mockConnectionManager));
expect(testScreenManager.textAndGraphicManager.fileManager).to(equal(mockFileManager));
@@ -85,6 +89,7 @@ describe(@"screen manager", ^{
expect(testScreenManager.softButtonManager.fileManager).to(equal(mockFileManager));
});
+ // batching updates
describe(@"batching updates", ^{
beforeEach(^{
SDLHMILevel hmiLevelFull = SDLHMILevelFull;
@@ -106,7 +111,7 @@ describe(@"screen manager", ^{
});
it(@"should have in progress updates", ^{
- expect(testScreenManager.textAndGraphicManager.inProgressUpdate).toNot(beNil());
+ expect(testScreenManager.textAndGraphicManager.transactionQueue.operationCount).toNot(equal(0));
expect(testScreenManager.softButtonManager.transactionQueue.operationCount).to(equal(1));
expect(testScreenManager.textAndGraphicManager.batchUpdates).to(beFalse());
@@ -115,6 +120,7 @@ describe(@"screen manager", ^{
});
});
+ // setters
describe(@"setters", ^{
beforeEach(^{
[testScreenManager beginUpdates];
@@ -128,6 +134,7 @@ describe(@"screen manager", ^{
testScreenManager.textAlignment = testAlignment;
testScreenManager.primaryGraphic = testArtwork;
testScreenManager.secondaryGraphic = testArtwork;
+ testScreenManager.title = testTitle;
testScreenManager.textField1Type = testMetadataType1;
testScreenManager.textField2Type = testMetadataType2;
testScreenManager.textField3Type = testMetadataType3;
@@ -137,6 +144,7 @@ describe(@"screen manager", ^{
expect(testScreenManager.textAndGraphicManager.textField2).to(equal(testString2));
expect(testScreenManager.textAndGraphicManager.textField3).to(equal(testString3));
expect(testScreenManager.textAndGraphicManager.textField4).to(equal(testString4));
+ expect(testScreenManager.textAndGraphicManager.title).to(equal(testTitle));
expect(testScreenManager.textAndGraphicManager.primaryGraphic.name).to(equal(testArtwork.name));
expect(testScreenManager.textAndGraphicManager.secondaryGraphic.name).to(equal(testArtwork.name));
expect(testScreenManager.textAndGraphicManager.alignment).to(equal(testAlignment));
@@ -153,6 +161,15 @@ describe(@"screen manager", ^{
expect(testScreenManager.softButtonManager.softButtonObjects.firstObject.name).to(equal(testSBObjectName));
});
});
+
+ // changing layout
+ describe(@"changing layout", ^{
+ it(@"should pass the call to the T&G manager", ^{
+ [testScreenManager changeLayout:testTemplateConfig withCompletionHandler:nil];
+
+ expect(testScreenManager.textAndGraphicManager.transactionQueue.operationCount).to(equal(1));
+ });
+ });
});
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
index ad77dea1d..d07586e7e 100644
--- a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
+++ b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
@@ -64,6 +64,7 @@ typedef NSString * SDLServiceID;
@property (nullable, strong, nonatomic, readwrite) SDLVideoStreamingCapability *videoStreamingCapability;
@property (nullable, strong, nonatomic, readwrite) SDLRemoteControlCapabilities *remoteControlCapability;
@property (nullable, strong, nonatomic, readwrite) SDLSeatLocationCapability *seatLocationCapability;
+@property (nullable, strong, nonatomic, readwrite) SDLDriverDistractionCapability *driverDistractionCapability;
@property (nullable, strong, nonatomic) NSMutableDictionary<SDLServiceID, SDLAppServiceCapability *> *appServicesCapabilitiesDictionary;
@@ -104,7 +105,7 @@ describe(@"System capability manager", ^{
#pragma clang diagnostic pop
SDLTextField *textField = [[SDLTextField alloc] init];
textField.name = SDLTextFieldNameMainField1;
- textField.characterSet = SDLCharacterSetCID1;
+ textField.characterSet = SDLCharacterSetUtf8;
textField.width = @(123);
textField.rows = @(1);
testDisplayCapabilities.textFields = @[textField];
@@ -172,6 +173,7 @@ describe(@"System capability manager", ^{
expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
expect(testSystemCapabilityManager.seatLocationCapability).to(beNil());
+ expect(testSystemCapabilityManager.driverDistractionCapability).to(beNil());
expect(testSystemCapabilityManager.currentHMILevel).to(equal(SDLHMILevelNone));
});
@@ -663,14 +665,11 @@ describe(@"System capability manager", ^{
__block TestSystemCapabilityObserver *navigationObserver = nil;
__block TestSystemCapabilityObserver *videoStreamingObserver = nil;
__block TestSystemCapabilityObserver *displaysObserver = nil;
-
- __block NSUInteger observerTriggeredCount = 0;
__block NSUInteger handlerTriggeredCount = 0;
beforeEach(^{
testSystemCapabilityManager.currentHMILevel = SDLHMILevelFull;
- observerTriggeredCount = 0;
handlerTriggeredCount = 0;
[SDLGlobals sharedGlobals].rpcVersion = [SDLVersion versionWithString:@"5.1.0"]; // supports subscriptions
@@ -699,17 +698,9 @@ describe(@"System capability manager", ^{
});
context(@"from a GetSystemCapabilitiesResponse", ^{
- __block id blockObserver = nil;
__block id handlerObserver = nil;
beforeEach(^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- blockObserver = [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withBlock:^(SDLSystemCapability * _Nonnull systemCapability) {
- observerTriggeredCount++;
- }];
-#pragma clang diagnostic pop
-
handlerObserver = [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withUpdateHandler:^(SDLSystemCapability * _Nullable capability, BOOL subscribed, NSError * _Nullable error) {
handlerTriggeredCount++;
}];
@@ -723,7 +714,6 @@ describe(@"System capability manager", ^{
it(@"should not notify subscribers of new data because it was sent outside of the SCM", ^{
expect(handlerTriggeredCount).toEventually(equal(1));
- expect(observerTriggeredCount).toEventually(equal(1));
expect(phoneObserver.selectorCalledCount).toEventually(equal(0));
expect(navigationObserver.selectorCalledCount).toEventually(equal(0));
@@ -741,7 +731,6 @@ describe(@"System capability manager", ^{
beforeEach(^{
[testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:phoneObserver];
[testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:handlerObserver];
- [testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:blockObserver];
SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] init];
testResponse.systemCapability = [[SDLSystemCapability alloc] initWithPhoneCapability:[[SDLPhoneCapability alloc] initWithDialNumber:YES]];
@@ -752,7 +741,6 @@ describe(@"System capability manager", ^{
it(@"should not notify the subscriber of the new data", ^{
expect(handlerTriggeredCount).toEventually(equal(1));
- expect(observerTriggeredCount).toEventually(equal(1));
expect(phoneObserver.selectorCalledCount).toEventually(equal(0)); // No change from above
expect(navigationObserver.selectorCalledCount).toEventually(equal(0));
@@ -764,17 +752,9 @@ describe(@"System capability manager", ^{
});
context(@"from an OnSystemCapabilities notification", ^{
- __block id blockObserver = nil;
__block id handlerObserver = nil;
beforeEach(^{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- blockObserver = [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withBlock:^(SDLSystemCapability * _Nonnull systemCapability) {
- observerTriggeredCount++;
- }];
-#pragma clang diagnostic pop
-
handlerObserver = [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withUpdateHandler:^(SDLSystemCapability * _Nullable capability, BOOL subscribed, NSError * _Nullable error) {
handlerTriggeredCount++;
}];
@@ -787,7 +767,6 @@ describe(@"System capability manager", ^{
it(@"should notify subscribers of the new data", ^{
expect(handlerTriggeredCount).toEventually(equal(2));
- expect(observerTriggeredCount).toEventually(equal(2));
expect(phoneObserver.selectorCalledCount).toEventually(equal(1));
expect(navigationObserver.selectorCalledCount).toEventually(equal(0));
@@ -804,7 +783,6 @@ describe(@"System capability manager", ^{
describe(@"unsubscribing", ^{
beforeEach(^{
[testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:phoneObserver];
- [testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:blockObserver];
SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] init];
testResponse.systemCapability = [[SDLSystemCapability alloc] initWithPhoneCapability:[[SDLPhoneCapability alloc] initWithDialNumber:YES]];
@@ -815,7 +793,6 @@ describe(@"System capability manager", ^{
it(@"should not notify the subscriber of the new data", ^{
expect(phoneObserver.selectorCalledCount).toEventually(equal(1)); // No change from above
- expect(observerTriggeredCount).toEventually(equal(2));
expect(navigationObserver.selectorCalledCount).toEventually(equal(0));
expect(videoStreamingObserver.selectorCalledCount).toEventually(equal(0));
expect(displaysObserver.selectorCalledCount).toEventually(equal(1));
@@ -852,16 +829,16 @@ describe(@"System capability manager", ^{
describe(@"when sending the merge update", ^{
it(@"should correctly merge", ^{
- deleteCapability.updateReason = SDLServiceUpdateRemoved;
+ deleteCapability.updateReason = SDLServiceUpdateReasonRemoved;
deleteCapability.updatedAppServiceRecord.servicePublished = @NO;
deleteCapability.updatedAppServiceRecord.serviceActive = @NO;
- updateCapability.updateReason = SDLServiceUpdateActivated;
+ updateCapability.updateReason = SDLServiceUpdateReasonActivated;
updateCapability.updatedAppServiceRecord.serviceActive = @YES;
SDLAppServiceManifest *newCapabilityManifest = [[SDLAppServiceManifest alloc] initWithMediaServiceName:@"New me" serviceIcon:nil allowAppConsumers:YES maxRPCSpecVersion:nil handledRPCs:nil mediaServiceManifest:[[SDLMediaServiceManifest alloc] init]];
SDLAppServiceRecord *newCapabilityRecord = [[SDLAppServiceRecord alloc] initWithServiceID:@"3456" serviceManifest:newCapabilityManifest servicePublished:YES serviceActive:NO];
- newCapability = [[SDLAppServiceCapability alloc] initWithUpdateReason:SDLServiceUpdatePublished updatedAppServiceRecord:newCapabilityRecord];
+ newCapability = [[SDLAppServiceCapability alloc] initWithUpdateReason:SDLServiceUpdateReasonPublished updatedAppServiceRecord:newCapabilityRecord];
SDLAppServicesCapabilities *appServicesUpdate = [[SDLAppServicesCapabilities alloc] initWithAppServices:@[deleteCapability, updateCapability, newCapability]];
SDLSystemCapability *appServiceCapability = [[SDLSystemCapability alloc] initWithAppServicesCapabilities:appServicesUpdate];
@@ -875,10 +852,10 @@ describe(@"System capability manager", ^{
SDLAppServiceCapability *firstCapability = testSystemCapabilityManager.appServicesCapabilities.appServices.firstObject;
SDLAppServiceCapability *secondCapability = testSystemCapabilityManager.appServicesCapabilities.appServices.lastObject;
- expect(firstCapability.updateReason).to(equal(SDLServiceUpdatePublished));
+ expect(firstCapability.updateReason).to(equal(SDLServiceUpdateReasonPublished));
expect(firstCapability.updatedAppServiceRecord.serviceID).to(equal(@"3456"));
- expect(secondCapability.updateReason).to(equal(SDLServiceUpdateActivated));
+ expect(secondCapability.updateReason).to(equal(SDLServiceUpdateReasonActivated));
expect(secondCapability.updatedAppServiceRecord.serviceID).to(equal(@"2345"));
expect(secondCapability.updatedAppServiceRecord.serviceActive).to(beTrue());
});
@@ -911,6 +888,7 @@ describe(@"System capability manager", ^{
expect(testSystemCapabilityManager.videoStreamingCapability).to(beNil());
expect(testSystemCapabilityManager.remoteControlCapability).to(beNil());
expect(testSystemCapabilityManager.appServicesCapabilities).to(beNil());
+ expect(testSystemCapabilityManager.driverDistractionCapability).to(beNil());
expect(testSystemCapabilityManager.seatLocationCapability).to(beNil());
});
});
diff --git a/SmartDeviceLinkTests/TestHapticRectViewController.h b/SmartDeviceLinkTests/TestHapticRectViewController.h
new file mode 100644
index 000000000..ccb656551
--- /dev/null
+++ b/SmartDeviceLinkTests/TestHapticRectViewController.h
@@ -0,0 +1,18 @@
+//
+// TestHapticRectViewController.h
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 9/1/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Test view controller for testing the SDLFocusableItemLocator's preferredFocusEnvironments
+@interface TestHapticRectViewController : UIViewController
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLinkTests/TestHapticRectViewController.m b/SmartDeviceLinkTests/TestHapticRectViewController.m
new file mode 100644
index 000000000..2dd346429
--- /dev/null
+++ b/SmartDeviceLinkTests/TestHapticRectViewController.m
@@ -0,0 +1,38 @@
+//
+// TestHapticRectViewController.m
+// SmartDeviceLinkTests
+//
+// Created by Nicole on 9/1/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "TestHapticRectViewController.h"
+
+@interface TestHapticRectViewController ()
+
+@end
+
+@implementation TestHapticRectViewController
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-implementations"
+- (UIView *)preferredFocusedView {
+ return (UIView *)self.preferredFocusEnvironments.firstObject;
+}
+#pragma clang diagnostic pop
+
+/// Return the subviews sorted by their tag values in acending order
+- (NSArray<id<UIFocusEnvironment>> *)preferredFocusEnvironments {
+ NSArray<UIView *> *subViews = self.view.subviews;
+
+ NSArray *preferredFocusViews;
+ preferredFocusViews = [subViews sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
+ NSNumber *first = [NSNumber numberWithLong:[(UIView*)a tag]];
+ NSNumber *second = [NSNumber numberWithLong:[(UIView*)b tag]];
+ return [first compare:second];
+ }];
+
+ return preferredFocusViews;
+}
+
+@end
diff --git a/SmartDeviceLink/TestSubscribeButtonObserver.h b/SmartDeviceLinkTests/TestSubscribeButtonObserver.h
index f2cde7318..f2cde7318 100644
--- a/SmartDeviceLink/TestSubscribeButtonObserver.h
+++ b/SmartDeviceLinkTests/TestSubscribeButtonObserver.h
diff --git a/SmartDeviceLink/TestSubscribeButtonObserver.m b/SmartDeviceLinkTests/TestSubscribeButtonObserver.m
index 99f9f44b9..99f9f44b9 100644
--- a/SmartDeviceLink/TestSubscribeButtonObserver.m
+++ b/SmartDeviceLinkTests/TestSubscribeButtonObserver.m
diff --git a/SmartDeviceLinkTests/UtilitiesSpecs/Touches/SDLTouchManagerSpec.m b/SmartDeviceLinkTests/UtilitiesSpecs/Touches/SDLTouchManagerSpec.m
index a138cbd92..42db9c3fc 100644
--- a/SmartDeviceLinkTests/UtilitiesSpecs/Touches/SDLTouchManagerSpec.m
+++ b/SmartDeviceLinkTests/UtilitiesSpecs/Touches/SDLTouchManagerSpec.m
@@ -91,19 +91,6 @@ describe(@"SDLTouchManager Tests", ^{
__block SDLTouchManager *touchManager = nil;
context(@"initializing", ^{
- it(@"Should initialize correctly with initWithHitTester", ^{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLTouchManager *touchManager = [[SDLTouchManager alloc] initWithHitTester:nil];
- #pragma clang diagnostic pop
- expect(touchManager.touchEventDelegate).to(beNil());
- expect(@(touchManager.tapDistanceThreshold)).to(equal(@50));
- expect(@(touchManager.tapTimeThreshold)).to(beCloseTo(@0.4).within(0.0001));
- expect(@(touchManager.isTouchEnabled)).to(beTruthy());
- expect(touchManager.videoScaleManager.scale).to(equal(1.0));
- expect(@(CGRectEqualToRect(touchManager.videoScaleManager.appViewportFrame, CGRectZero))).to(beTrue());
- });
-
it(@"Should initialize correctly with initWithHitTester:videoScaleManager:", ^{
SDLTouchManager *touchManager = [[SDLTouchManager alloc] initWithHitTester:nil videoScaleManager:[[SDLStreamingVideoScaleManager alloc] init]];
expect(touchManager.touchEventDelegate).to(beNil());
diff --git a/SmartDeviceLink_Example/SubscribeButtonManager.m b/SmartDeviceLink_Example/SubscribeButtonManager.m
deleted file mode 100644
index 80512a7b2..000000000
--- a/SmartDeviceLink_Example/SubscribeButtonManager.m
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// SubscribeButtonManager.m
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Nicole on 6/19/20.
-// Copyright © 2020 smartdevicelink. All rights reserved.
-//
-
-#import "SubscribeButtonManager.h"
-
-#import "AlertManager.h"
-#import "SmartDeviceLink.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SubscribeButtonManager()
-
-@property (strong, nonatomic) SDLManager *sdlManager;
-
-@end
-
-@implementation SubscribeButtonManager
-
-- (instancetype)initWithManager:(SDLManager *)manager {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _sdlManager = manager;
-
- return self;
-}
-
-- (void)subscribeToAllPresetButtons {
- if (self.sdlManager.systemCapabilityManager.defaultMainWindowCapability.numCustomPresetsAvailable.intValue == 0) {
- SDLLogW(@"The module does not support preset buttons");
- return;
- }
-
- for (SDLButtonName buttonName in [self.class sdlex_allPresetButtons]) {
- [self.sdlManager.screenManager subscribeButton:buttonName withObserver:self selector:@selector(sdlex_buttonPressEventWithButtonName:error:buttonPress:)];
- }
-}
-
-- (void)sdlex_buttonPressEventWithButtonName:(SDLButtonName)buttonName error:(NSError *)error buttonPress:(SDLOnButtonPress *)buttonPress {
- if (error != nil) {
- SDLLogE(@"There was an error subscribing to the preset button: %@", error.localizedDescription);
- return;
- }
-
- NSString *alertMessage = nil;
- if ([buttonPress.buttonPressMode isEqualToEnum:SDLButtonPressModeShort]) {
- alertMessage = [NSString stringWithFormat:@"%@ short pressed", buttonName];
- } else {
- alertMessage = [NSString stringWithFormat:@"%@ long pressed", buttonName];
- }
-
- SDLAlert *alert = [AlertManager alertWithMessageAndCloseButton:alertMessage textField2:nil iconName:nil];
- [self.sdlManager sendRPC:alert];
-}
-
-+ (NSArray<SDLButtonName> *)sdlex_allPresetButtons {
- return @[SDLButtonNamePreset0, SDLButtonNamePreset1, SDLButtonNamePreset2, SDLButtonNamePreset3, SDLButtonNamePreset4, SDLButtonNamePreset5, SDLButtonNamePreset6, SDLButtonNamePreset7];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink_Example/SubscribeButtonManager.swift b/SmartDeviceLink_Example/SubscribeButtonManager.swift
deleted file mode 100644
index 6567d9e64..000000000
--- a/SmartDeviceLink_Example/SubscribeButtonManager.swift
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// SubscribeButtonManager.swift
-// SmartDeviceLink
-//
-// Created by Nicole on 6/19/20.
-// Copyright © 2020 smartdevicelink. All rights reserved.
-//
-
-import Foundation
-import SmartDeviceLink
-import SmartDeviceLinkSwift
-
-class SubscribeButtonManager: NSObject {
- private let sdlManager: SDLManager!
- private let presetButtons: [SDLButtonName] = [.preset0, .preset1, .preset2, .preset3, .preset4, .preset5, .preset6, .preset7]
-
- init(sdlManager: SDLManager) {
- self.sdlManager = sdlManager
- }
-
- /// Subscribe to all available preset buttons. An alert will be shown when a preset button is short pressed or long pressed.
- func subscribeToPresetButtons() {
- guard (sdlManager.systemCapabilityManager.defaultMainWindowCapability?.numCustomPresetsAvailable?.intValue ?? 0) > 0 else {
- SDLLog.w("The module does not support preset buttons")
- return
- }
-
- presetButtons.forEach { buttonName in
- sdlManager.screenManager.subscribeButton(buttonName, withObserver: self, selector: #selector(buttonPressEvent(buttonName:error:buttonPress:)))
- }
- }
-
- @objc private func buttonPressEvent(buttonName: SDLButtonName, error: Error?, buttonPress: SDLOnButtonPress?) {
- if let error = error {
- SDLLog.e("There was an error subscribing to the preset button: \(error)")
- return
- }
-
- guard let buttonPress = buttonPress else { return }
-
- let alert: SDLAlert
- let buttonNameString = buttonName.rawValue.rawValue
- switch buttonPress.buttonPressMode {
- case .short:
- alert = AlertManager.alertWithMessageAndCloseButton("\(buttonNameString) short pressed")
- case .long:
- alert = AlertManager.alertWithMessageAndCloseButton("\(buttonNameString) long pressed")
- default: fatalError()
- }
-
- sdlManager.send(alert)
- }
-}
diff --git a/generator/templates/base_struct_function.m.jinja2 b/generator/templates/base_struct_function.m.jinja2
index 30bb2e976..4294858d4 100644
--- a/generator/templates/base_struct_function.m.jinja2
+++ b/generator/templates/base_struct_function.m.jinja2
@@ -2,8 +2,6 @@
"templates/functions/template.m" and "templates/structs/template.m". -#}
{% include 'copyright.jinja2' %}
{%- block imports %}
-#import "{{name}}.h"
-#import "NSMutableDictionary+Store.h"
{%- for import in imports %}
#import "{{import}}.h"
{%- endfor %}
@@ -25,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
{%- endif %}
- (instancetype)initWith{{c.init}} {
- self = [{{ 'self' if c.self else 'super' }} init{{ 'With' + c.self if c.self and c.self is string }}];
+ self = [self init{{ 'With' + c.self if c.self and c.self is string }}];
if (!self) {
return nil;
}
diff --git a/generator/templates/description.jinja2 b/generator/templates/description.jinja2
index fb4932270..495c22a65 100644
--- a/generator/templates/description.jinja2
+++ b/generator/templates/description.jinja2
@@ -8,14 +8,17 @@
{%- if description and ( since or history ) %}
*
{%- endif %}
- {%- if deprecated %}
- * @deprecated
+ {%- if deprecated is sameas true %}
+ * @deprecated in SmartDeviceLink {{ since }}
+ {%- elif history %}
+ * @added in SmartDeviceLink {{ history }}
+ {%- elif since is defined %}
+ {%- if since %}
+ * @added in SmartDeviceLink {{ since }}
{%- endif %}
- {%- if history %}
- * @history SDL {{ history }}
{%- endif %}
- {%- if since %}
- * @since SDL {{ since }}
+ {%- if deprecated is sameas true and history %}
+ * @added in SmartDeviceLink {{ history }}
{%- endif %}
*/
{%- endif -%}
diff --git a/generator/templates/description_param.jinja2 b/generator/templates/description_param.jinja2
index cb0cc4244..904ff2858 100644
--- a/generator/templates/description_param.jinja2
+++ b/generator/templates/description_param.jinja2
@@ -8,14 +8,17 @@
{%- if param.description and ( param.since or param.history ) %}
*
{%- endif %}
- {%- if param.deprecated %}
- * @deprecated
+ {%- if param.deprecated is sameas true %}
+ * @deprecated in SmartDeviceLink {{ param.since }}
+ {%- elif param.history %}
+ * @added in SmartDeviceLink {{ param.history[0].since }}
+ {%- elif param.since is defined %}
+ {%- if param.since %}
+ * @added in SmartDeviceLink {{ param.since }}
{%- endif %}
- {%- if param.history %}
- * @history SDL {{ param.history }}
{%- endif %}
- {%- if param.since %}
- * @since SDL {{ param.since }}
+ {%- if param.deprecated is sameas true and param.history %}
+ * @added in SmartDeviceLink {{ param.history[0].since }}
{%- endif %}
*/
{%- endif %}
diff --git a/generator/templates/functions/template.m.jinja2 b/generator/templates/functions/template.m.jinja2
index 9809b8df2..a8871754e 100644
--- a/generator/templates/functions/template.m.jinja2
+++ b/generator/templates/functions/template.m.jinja2
@@ -2,8 +2,6 @@
{% extends "base_struct_function.m.jinja2" %}
{% block imports %}
{{super()}}
-#import "SDLRPCFunctionNames.h"
-#import "SDLRPCParameterNames.h"
{%- endblock %}
{% block constructors %}
#pragma clang diagnostic push
diff --git a/generator/templates/structs/template.m.jinja2 b/generator/templates/structs/template.m.jinja2
index 488b076af..0e538c3ea 100644
--- a/generator/templates/structs/template.m.jinja2
+++ b/generator/templates/structs/template.m.jinja2
@@ -2,6 +2,5 @@
{% extends "base_struct_function.m.jinja2" %}
{% block imports %}
{{super()}}
-#import "SDLRPCParameterNames.h"
{%- endblock %}
{% set parameters_store = 'store' %} \ No newline at end of file
diff --git a/generator/transformers/common_producer.py b/generator/transformers/common_producer.py
index ac7bc6167..63a7134bb 100644
--- a/generator/transformers/common_producer.py
+++ b/generator/transformers/common_producer.py
@@ -30,9 +30,9 @@ class InterfaceProducerCommon(ABC):
self.key_words = key_words
self.param_named = namedtuple('param_named',
'origin constructor_argument constructor_prefix deprecated mandatory since '
- 'method_suffix of_class type_native type_sdl modifier for_name description '
+ 'method_suffix of_class type_native type_sdl modifier for_name description history '
'constructor_argument_override')
- self.constructor_named = namedtuple('constructor', 'init self arguments all deprecated')
+ self.constructor_named = namedtuple('constructor', 'init self arguments all')
self.argument_named = namedtuple('argument', 'origin constructor_argument variable deprecated')
self.names = self.struct_names + tuple(map(lambda e: self._replace_sync(e), enum_names))
@@ -49,6 +49,11 @@ class InterfaceProducerCommon(ABC):
:param render: dictionary with pre filled entries, which going to be filled/changed by reference
:return: dictionary which going to be applied to Jinja2 template
"""
+
+ importsKey = 'imports'
+ enumKey = 'enum'
+ structKey = 'struct'
+
if item.description:
render['description'] = self.extract_description(item.description)
if item.since:
@@ -64,6 +69,28 @@ class InterfaceProducerCommon(ABC):
render['params'][param.name] = self.extract_param(param, item.name)
if isinstance(item, (Struct, Function)):
self.extract_imports(param, render['imports'])
+
+ # Add additional known imports to the import list
+ if isinstance(item, (Struct, Function)):
+ name = 'SDL' + item.name
+ render[importsKey]['.m'].add( "NSMutableDictionary+Store" )
+ render[importsKey]['.m'].add(name)
+ render[importsKey]['.h'][enumKey] = list(render[importsKey]['.h'][enumKey])
+ (render[importsKey]['.h'][enumKey]).sort()
+ render[importsKey]['.h'][structKey] = list(render[importsKey]['.h'][structKey])
+ (render[importsKey]['.h'][structKey]).sort()
+
+ if isinstance(item, Struct):
+ name = 'SDL' + item.name
+ render[importsKey]['.m'].add( "SDLRPCParameterNames" )
+
+ if isinstance(item, Function):
+ render[importsKey]['.m'].add( "SDLRPCFunctionNames" )
+ render[importsKey]['.m'].add( "SDLRPCParameterNames" )
+
+ # Sort the import list to ensure they appear in alphabetical order in the template
+ render[importsKey]['.m'] = list(render[importsKey]['.m'])
+ (render[importsKey]['.m']).sort()
if 'constructors' not in render and isinstance(item, (Struct, Function)):
render['constructors'] = self.extract_constructors(render['params'])
@@ -147,7 +174,7 @@ class InterfaceProducerCommon(ABC):
return name[:1].lower() + name[1:]
@staticmethod
- def extract_description(data, length: int = 113) -> list:
+ def extract_description(data, length: int = 2048) -> list:
"""
Evaluate, align and delete @TODO
:param data: list with description
@@ -158,7 +185,7 @@ class InterfaceProducerCommon(ABC):
return []
if isinstance(data, list):
data = ' '.join(data)
- return textwrap.wrap(re.sub(r'(\s{2,}|\n|\[@TODO.+)', ' ', data).strip(), length)
+ return textwrap.wrap(re.sub(r'(\s{2,}|\n)', ' ', data).strip(), length)
@staticmethod
def nullable(type_native: str, mandatory: bool) -> str:
@@ -168,14 +195,14 @@ class InterfaceProducerCommon(ABC):
:param mandatory: is parameter mandatory
:return: string with modificator
"""
- if mandatory or re.match(r'BOOL|float|double', type_native):
+ if mandatory or re.match(r'BOOL', type_native):
return ''
return 'nullable '
def parentheses(self, item):
"""
Used for wrapping appropriate initiator (constructor) parameter with '@({})'
- :param item: named tup[le with initiator (constructor) parameter
+ :param item: named tuple with initiator (constructor) parameter
:return: wrapped parameter
"""
if re.match(r'\w*Int\d+|BOOL|float|double', item.type_native) or \
@@ -215,8 +242,10 @@ class InterfaceProducerCommon(ABC):
"""
mandatory = []
not_mandatory = []
- deprecated = any([m.deprecated for m in data.values() if getattr(m, 'deprecated', False)])
for param in data.values():
+ if param.deprecated:
+ # Omit deprecated parameters from the constructors
+ continue
if param.mandatory:
mandatory.append(param)
else:
@@ -225,13 +254,11 @@ class InterfaceProducerCommon(ABC):
result = []
if mandatory:
mandatory = self.extract_constructor(mandatory, True)
- mandatory['deprecated'] = deprecated
else:
mandatory = OrderedDict()
if not_mandatory:
not_mandatory = self.extract_constructor(not_mandatory, False)
- not_mandatory['deprecated'] = deprecated
if mandatory:
not_mandatory['init'] = '{} {}'.format(mandatory['init'], self.minimize_first(not_mandatory['init']))
not_mandatory['all'] = mandatory['arguments'] + not_mandatory['arguments']
@@ -307,7 +334,7 @@ class InterfaceProducerCommon(ABC):
else:
data = self.evaluate_type(param.param_type)
- if not param.is_mandatory and re.match(r'\w*Int\d*|BOOL', data['type_native']):
+ if not param.is_mandatory and re.match(r'\w*Int\d*|BOOL|\w*float\d*', data['type_native']):
data['type_native'] = data['type_sdl']
return data
@@ -336,10 +363,59 @@ class InterfaceProducerCommon(ABC):
'since': param.since,
'mandatory': param.is_mandatory,
'deprecated': json.loads(param.deprecated.lower()) if param.deprecated else False,
- 'modifier': 'strong'}
- if isinstance(param.param_type, (Integer, Float, String)):
- data['description'].append(json.dumps(vars(param.param_type), sort_keys=True))
+ 'modifier': 'strong',
+ 'history' : param.history }
+ if isinstance(param.param_type, (Integer, Float, String, Array)):
+ data['description'].append(self.create_param_descriptor(param.param_type, OrderedDict()))
data.update(self.extract_type(param))
data.update(self.param_origin_change(param.name))
return self.param_named(**data)
+
+ def create_param_descriptor(self, param_type, parameterItems):
+ """
+ Recursively creates a documentation string of all the descriptors for a parameter (e.g. {"string_min_length": 1, string_max_length": 500}). The parameters should be returned in the same order they were added to the parameterItems dictionary
+ :param param_type: param_type from the initial Model
+ :param parameterItems: Ordered dictionary that stores each of the parameter's descriptors
+ :return: All the descriptor params from param_type concatenated into one string
+ """
+ # The key is a descriptor (i.e. max_value) and value is the associated value (i.e. 100). Some values will be dictionaries that have to be parsed to get additional descriptors (e.g. the value for an array of strings' data type will be sub-dictionary describing the min_length, max_length, and default value for the strings used in the array)
+ for key, value in param_type.__dict__.items():
+ # If a value contains a dictionary, recurse until all the descriptors have been found. Once a descriptor (i.e. `max_size`) has been found along with its associated value (i.e. 100), add the descriptor/value pair to the parameterItems dictionary
+ if hasattr(value, '__dict__'):
+ if isinstance(value, Enum) or isinstance(value, Struct):
+ # Skip adding documentation for the data type if it is a struct or enum. This is unnecessary as each enum or struct has its own documentation
+ continue
+ else:
+ self.create_param_descriptor(value, parameterItems)
+ else:
+ if key == 'default_value' and value is None:
+ # Do not add the default_value key/value pair unless it has been explicitly set in the RPC Spec
+ continue
+ else:
+ parameterDescriptor = self.update_param_descriptor(key)
+ parameterItems[parameterDescriptor] = value
+
+ return json.dumps(parameterItems, sort_keys=False)
+
+ def update_param_descriptor(self, parameterName):
+ """
+ Updates the parameter's descriptor name for clarity. This is helpful for array documentation as the descriptors can contain both the size of the array and the size of the array's data type
+ :param parameterName: The name of the parameter
+ :return: All the descriptor params from param_type concatenated into one string
+ """
+ if parameterName == 'min_size':
+ return 'array_min_size'
+ elif parameterName == 'max_size':
+ return 'array_max_size'
+ elif parameterName == 'min_length':
+ return 'string_min_length'
+ elif parameterName == 'max_length':
+ return 'string_max_length'
+ elif parameterName == 'max_value':
+ return 'num_max_value'
+ elif parameterName == 'min_value':
+ return 'num_min_value'
+ else:
+ return parameterName
+
diff --git a/generator/transformers/enums_producer.py b/generator/transformers/enums_producer.py
index d41cd739d..748f6cbe6 100644
--- a/generator/transformers/enums_producer.py
+++ b/generator/transformers/enums_producer.py
@@ -21,7 +21,7 @@ class EnumsProducer(InterfaceProducerCommon):
self._container_name = 'elements'
self.enum_class = enum_class
self.logger = logging.getLogger(self.__class__.__name__)
- self.param_named = namedtuple('param_named', 'origin description name since deprecated')
+ self.param_named = namedtuple('param_named', 'origin description name since deprecated history')
self._item_name = None
@property
@@ -45,6 +45,7 @@ class EnumsProducer(InterfaceProducerCommon):
render['origin'] = item.name
render['name'] = name
render['imports'] = imports
+ render['history'] = item.history
super(EnumsProducer, self).transform(item, render)
return render
@@ -58,6 +59,7 @@ class EnumsProducer(InterfaceProducerCommon):
data = {'origin': param.name,
'description': self.extract_description(param.description),
'since': param.since,
+ 'history': param.history,
'deprecated': json.loads(param.deprecated.lower()) if param.deprecated else False}
name = None
if re.match(r'^[A-Z]{1,2}\d|\d[A-Z]{1,2}$', param.name):
diff --git a/generator/transformers/functions_producer.py b/generator/transformers/functions_producer.py
index fcab84a14..73091fe12 100644
--- a/generator/transformers/functions_producer.py
+++ b/generator/transformers/functions_producer.py
@@ -58,6 +58,7 @@ class FunctionsProducer(InterfaceProducerCommon):
render['name'] = name
render['extends_class'] = extends_class
render['imports'] = imports
+ render['history'] = item.history
super(FunctionsProducer, self).transform(item, render)
diff --git a/generator/transformers/structs_producer.py b/generator/transformers/structs_producer.py
index b25d86230..777757d8e 100644
--- a/generator/transformers/structs_producer.py
+++ b/generator/transformers/structs_producer.py
@@ -42,6 +42,7 @@ class StructsProducer(InterfaceProducerCommon):
render['name'] = name
render['extends_class'] = self.struct_class
render['imports'] = imports
+ render['history'] = item.history
super(StructsProducer, self).transform(item, render)