diff options
author | harisheb <ebuser@EBUsers-MacBook-Air.local> | 2017-09-26 16:21:31 -0400 |
---|---|---|
committer | harisheb <ebuser@EBUsers-MacBook-Air.local> | 2017-09-26 16:21:31 -0400 |
commit | d3fdb25fdaf634d07c7cb0f035ae31213851c7e8 (patch) | |
tree | d7513702d44404b4084c271ea4dde43e3d0ecd9c | |
parent | 20f9b8af3884a87c824b4a77c72a76d86ca3b45e (diff) | |
parent | ed12d08ac6b90cfda647e79012ec16a78ea95035 (diff) | |
download | sdl_ios-d3fdb25fdaf634d07c7cb0f035ae31213851c7e8.tar.gz |
Merge branch 'feature/haptic_manager_rebase' of https://github.com/ChrisB-Elektrobit/sdl_ios into feature/haptic_manager_rebase
120 files changed, 3934 insertions, 284 deletions
diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec index a9d4a73d0..f1c022981 100644 --- a/SmartDeviceLink-iOS.podspec +++ b/SmartDeviceLink-iOS.podspec @@ -30,6 +30,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLAlertManeuver.h', 'SmartDeviceLink/SDLAlertManeuverResponse.h', 'SmartDeviceLink/SDLAlertResponse.h', +'SmartDeviceLink/SDLButtonPressResponse.h', 'SmartDeviceLink/SDLAmbientLightStatus.h', 'SmartDeviceLink/SDLAppHMIType.h', 'SmartDeviceLink/SDLAppInfo.h', @@ -50,6 +51,8 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLChangeRegistrationResponse.h', 'SmartDeviceLink/SDLCharacterSet.h', 'SmartDeviceLink/SDLChoice.h', +'SmartDeviceLink/SDLClimateControlCapabilities.h', +'SmartDeviceLink/SDLClimateControlData.h', 'SmartDeviceLink/SDLClusterModeStatus.h', 'SmartDeviceLink/SDLCompassDirection.h', 'SmartDeviceLink/SDLComponentVolumeStatus.h', @@ -57,6 +60,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLCreateInteractionChoiceSet.h', 'SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h', 'SmartDeviceLink/SDLDateTime.h', +'SmartDeviceLink/SDLDefrostZone.h', 'SmartDeviceLink/SDLDeleteCommand.h', 'SmartDeviceLink/SDLDeleteCommandResponse.h', 'SmartDeviceLink/SDLDeleteFile.h', @@ -95,7 +99,9 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLFuelCutoffStatus.h', 'SmartDeviceLink/SDLGenericResponse.h', 'SmartDeviceLink/SDLGetDTCs.h', +'SmartDeviceLink/SDLGetInteriorVehicleData.h', 'SmartDeviceLink/SDLGetDTCsResponse.h', +'SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h', 'SmartDeviceLink/SDLGetSystemCapability.h', 'SmartDeviceLink/SDLGetSystemCapabilityResponse.h', 'SmartDeviceLink/SDLGetVehicleData.h', @@ -149,6 +155,8 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLManager.h', 'SmartDeviceLink/SDLManagerDelegate.h', 'SmartDeviceLink/SDLMediaClockFormat.h', +'SmartDeviceLink/SDLModuleData.h', +'SmartDeviceLink/SDLModuleType.h', 'SmartDeviceLink/SDLMenuParams.h', 'SmartDeviceLink/SDLMetadataTags.h', 'SmartDeviceLink/SDLMetadataType.h', @@ -164,6 +172,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLOnDriverDistraction.h', 'SmartDeviceLink/SDLOnEncodedSyncPData.h', 'SmartDeviceLink/SDLOnHashChange.h', +'SmartDeviceLink/SDLOnInteriorVehicleData.h', 'SmartDeviceLink/SDLOnHMIStatus.h', 'SmartDeviceLink/SDLOnKeyboardInput.h', 'SmartDeviceLink/SDLOnLanguageChange.h', @@ -213,6 +222,12 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLResult.h', 'SmartDeviceLink/SDLRPCMessage.h', 'SmartDeviceLink/SDLRPCMessageType.h', +'SmartDeviceLink/SDLRadioBand.h', +'SmartDeviceLink/SDLRadioControlCapabilities.h', +'SmartDeviceLink/SDLRadioControlData.h', +'SmartDeviceLink/SDLRadioState.h', +'SmartDeviceLink/SDLRDSData.h', +'SmartDeviceLink/SDLRemoteControlCapabilities.h', 'SmartDeviceLink/SDLRPCNotification.h', 'SmartDeviceLink/SDLRPCNotificationNotification.h', 'SmartDeviceLink/SDLRPCRequest.h', @@ -233,7 +248,9 @@ ss.public_header_files = [ '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', @@ -267,6 +284,8 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLSystemCapabilityType.h', 'SmartDeviceLink/SDLSystemContext.h', 'SmartDeviceLink/SDLTBTState.h', +'SmartDeviceLink/SDLTemperature.h', +'SmartDeviceLink/SDLTemperatureUnit.h', 'SmartDeviceLink/SDLTCPTransport.h', 'SmartDeviceLink/SDLTextAlignment.h', 'SmartDeviceLink/SDLTextField.h', @@ -302,6 +321,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLVehicleDataResultCode.h', 'SmartDeviceLink/SDLVehicleDataStatus.h', 'SmartDeviceLink/SDLVehicleDataType.h', +'SmartDeviceLink/SDLVentilationMode.h', 'SmartDeviceLink/SDLVehicleType.h', 'SmartDeviceLink/SDLVideoStreamingCapability.h', 'SmartDeviceLink/SDLVideoStreamingCodec.h', diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj index fb2033451..4e56793ab 100644 --- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj +++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj @@ -236,6 +236,67 @@ 1FF7DABA1F75B2A800B46C30 /* SDLHapticManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF7DAB91F75B2A800B46C30 /* SDLHapticManager.h */; }; 1FF7DABC1F75B2BF00B46C30 /* SDLHapticManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF7DABB1F75B2BF00B46C30 /* SDLHapticManager.m */; }; 1FF7DAC01F75CF6C00B46C30 /* SDLHapticManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF7DABF1F75CF6C00B46C30 /* SDLHapticManagerSpec.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, ); }; }; + 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 */; }; + 1EE8C43E1F347F0500FDC2CF /* SDLVentilationModeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C43D1F347F0500FDC2CF /* SDLVentilationModeSpec.m */; }; + 1EE8C4401F348D3200FDC2CF /* SDLClimateControlCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C43F1F348D3200FDC2CF /* SDLClimateControlCapabilitiesSpec.m */; }; + 1EE8C4441F34A1B900FDC2CF /* SDLClimateControlDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4431F34A1B900FDC2CF /* SDLClimateControlDataSpec.m */; }; + 1EE8C4461F3837D200FDC2CF /* SDLModuleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4451F3837D200FDC2CF /* SDLModuleDataSpec.m */; }; + 1EE8C4481F38430900FDC2CF /* SDLRadioControlCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4471F38430900FDC2CF /* SDLRadioControlCapabilitiesSpec.m */; }; + 1EE8C44A1F3846D300FDC2CF /* SDLRadioControlDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4491F3846D300FDC2CF /* SDLRadioControlDataSpec.m */; }; + 1EE8C44C1F385C7100FDC2CF /* SDLRDSDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C44B1F385C7100FDC2CF /* SDLRDSDataSpec.m */; }; + 1EE8C4501F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C44F1F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m */; }; + 1EE8C4521F38657D00FDC2CF /* SDLTemperatureSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4511F38657D00FDC2CF /* SDLTemperatureSpec.m */; }; + 1EE8C4541F38762E00FDC2CF /* SDLOnInteriorVehicleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4531F38762E00FDC2CF /* SDLOnInteriorVehicleDataSpec.m */; }; + 1EE8C4561F38788A00FDC2CF /* SDLButtonPressSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4551F38788A00FDC2CF /* SDLButtonPressSpec.m */; }; + 1EE8C4581F387ABD00FDC2CF /* SDLButtonPressResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4571F387ABD00FDC2CF /* SDLButtonPressResponseSpec.m */; }; + 1EE8C45A1F387BBB00FDC2CF /* SDLGetInteriorVehicleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE8C4591F387BBB00FDC2CF /* SDLGetInteriorVehicleDataSpec.m */; }; + 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 */; }; 332A914F1CED9CC60043824C /* SDLAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 332A913D1CED87F80043824C /* SDLAppInfo.m */; }; 332A91501CED9CF10043824C /* SDLAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 332A913C1CED87F80043824C /* SDLAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5D00AC671F140F0A004000D9 /* SDLSystemCapabilityType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -1362,6 +1423,67 @@ 1FF7DAB91F75B2A800B46C30 /* SDLHapticManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHapticManager.h; sourceTree = "<group>"; }; 1FF7DABB1F75B2BF00B46C30 /* SDLHapticManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHapticManager.m; sourceTree = "<group>"; }; 1FF7DABF1F75CF6C00B46C30 /* SDLHapticManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLHapticManagerSpec.m; path = ProxySpecs/SDLHapticManagerSpec.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>"; }; + 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>"; }; + 1EE8C43D1F347F0500FDC2CF /* SDLVentilationModeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVentilationModeSpec.m; sourceTree = "<group>"; }; + 1EE8C43F1F348D3200FDC2CF /* SDLClimateControlCapabilitiesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLClimateControlCapabilitiesSpec.m; sourceTree = "<group>"; }; + 1EE8C4431F34A1B900FDC2CF /* SDLClimateControlDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLClimateControlDataSpec.m; sourceTree = "<group>"; }; + 1EE8C4451F3837D200FDC2CF /* SDLModuleDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLModuleDataSpec.m; sourceTree = "<group>"; }; + 1EE8C4471F38430900FDC2CF /* SDLRadioControlCapabilitiesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioControlCapabilitiesSpec.m; sourceTree = "<group>"; }; + 1EE8C4491F3846D300FDC2CF /* SDLRadioControlDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRadioControlDataSpec.m; sourceTree = "<group>"; }; + 1EE8C44B1F385C7100FDC2CF /* SDLRDSDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRDSDataSpec.m; sourceTree = "<group>"; }; + 1EE8C44F1F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRemoteControlCapabilitiesSpec.m; sourceTree = "<group>"; }; + 1EE8C4511F38657D00FDC2CF /* SDLTemperatureSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTemperatureSpec.m; sourceTree = "<group>"; }; + 1EE8C4531F38762E00FDC2CF /* SDLOnInteriorVehicleDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnInteriorVehicleDataSpec.m; sourceTree = "<group>"; }; + 1EE8C4551F38788A00FDC2CF /* SDLButtonPressSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonPressSpec.m; sourceTree = "<group>"; }; + 1EE8C4571F387ABD00FDC2CF /* SDLButtonPressResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonPressResponseSpec.m; sourceTree = "<group>"; }; + 1EE8C4591F387BBB00FDC2CF /* SDLGetInteriorVehicleDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGetInteriorVehicleDataSpec.m; sourceTree = "<group>"; }; + 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>"; }; 332A913C1CED87F80043824C /* SDLAppInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAppInfo.h; sourceTree = "<group>"; }; 332A913D1CED87F80043824C /* SDLAppInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppInfo.m; sourceTree = "<group>"; }; 5D00AC651F140F0A004000D9 /* SDLSystemCapabilityType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityType.h; sourceTree = "<group>"; }; @@ -2334,6 +2456,7 @@ 162E820B1A9BDE8A00906325 /* SDLPrerecordedSpeechSpec.m */, 162E820C1A9BDE8A00906325 /* SDLPrimaryAudioSource.m */, 162E820D1A9BDE8A00906325 /* SDLPRNDLSpec.m */, + 1EE8C4371F347C7300FDC2CF /* SDLRadioBandSpec.m */, 162E820E1A9BDE8A00906325 /* SDLRequestTypeSpec.m */, 162E820F1A9BDE8A00906325 /* SDLResultSpec.m */, 162E82111A9BDE8A00906325 /* SDLSamplingRateSpec.m */, @@ -2361,6 +2484,9 @@ 162E82251A9BDE8A00906325 /* SDLWiperStatusSpec.m */, 8B7B31A81F2FB8BC00BDC38D /* SDLVideoStreamingProtocolSpec.m */, 8B7B31AA1F2FB93500BDC38D /* SDLVideoStreamingCodecSpec.m */, + 1EE8C4391F347D4D00FDC2CF /* SDLRadioStateSpec.m */, + 1EE8C43B1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m */, + 1EE8C43D1F347F0500FDC2CF /* SDLVentilationModeSpec.m */, ); path = EnumSpecs; sourceTree = "<group>"; @@ -2377,6 +2503,7 @@ 162E822F1A9BDE8A00906325 /* SDLOnEncodedSyncPDataSpec.m */, 162E82301A9BDE8A00906325 /* SDLOnHashChangeSpec.m */, 162E82311A9BDE8A00906325 /* SDLOnHMIStatusSpec.m */, + 1EE8C4531F38762E00FDC2CF /* SDLOnInteriorVehicleDataSpec.m */, 162E82321A9BDE8A00906325 /* SDLOnKeyboardInputSpec.m */, 162E82331A9BDE8A00906325 /* SDLOnLanguageChangeSpec.m */, 162E82341A9BDE8A00906325 /* SDLOnLockScreenStatusSpec.m */, @@ -2406,6 +2533,7 @@ 162E823F1A9BDE8A00906325 /* SDLAddSubMenuSpec.m */, 162E82401A9BDE8A00906325 /* SDLAlertManeuverSpec.m */, 162E82411A9BDE8A00906325 /* SDLAlertSpec.m */, + 1EE8C4551F38788A00FDC2CF /* SDLButtonPressSpec.m */, 162E82421A9BDE8A00906325 /* SDLChangeRegistrationSpec.m */, 162E82431A9BDE8A00906325 /* SDLCreateInteractionChoiceSetSpec.m */, 162E82441A9BDE8A00906325 /* SDLDeleteCommandSpec.m */, @@ -2417,6 +2545,7 @@ 162E82491A9BDE8A00906325 /* SDLEncodedSyncPDataSpec.m */, 162E824A1A9BDE8A00906325 /* SDLEndAudioPassThruSpec.m */, 162E824B1A9BDE8A00906325 /* SDLGetDTCsSpec.m */, + 1EE8C4591F387BBB00FDC2CF /* SDLGetInteriorVehicleDataSpec.m */, 5D0A9F991F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m */, 162E824C1A9BDE8A00906325 /* SDLGetVehicleDataSpec.m */, DA9F7EA11DCC05E100ACAE48 /* SDLGetWaypointsSpec.m */, @@ -2447,6 +2576,7 @@ 162E82631A9BDE8A00906325 /* SDLUnsubscribeVehicleDataSpec.m */, DA9F7EA51DCC05F500ACAE48 /* SDLUnsubscribeWaypointsSpec.m */, 162E82641A9BDE8A00906325 /* SDLUpdateTurnListSpec.m */, + 1EE8C45E1F3884FF00FDC2CF /* SDLSetInteriorVehicleDataSpec.m */, 8877F5EA1F34A3BE00DC128A /* SDLSendHapticDataSpec.m */, ); path = RequestSpecs; @@ -2459,6 +2589,7 @@ 162E82671A9BDE8A00906325 /* SDLAddSubMenuResponseSpec.m */, 162E82681A9BDE8A00906325 /* SDLAlertManeuverResponseSpec.m */, 162E82691A9BDE8A00906325 /* SDLAlertResponseSpec.m */, + 1EE8C4571F387ABD00FDC2CF /* SDLButtonPressResponseSpec.m */, 162E826A1A9BDE8A00906325 /* SDLChangeRegistrationResponseSpec.m */, 162E826B1A9BDE8A00906325 /* SDLCreateInteractionChoiceSetResponseSpec.m */, 162E826C1A9BDE8A00906325 /* SDLDeleteCommandResponseSpec.m */, @@ -2471,6 +2602,7 @@ 162E82721A9BDE8A00906325 /* SDLEndAudioPassThruResponseSpec.m */, 162E82731A9BDE8A00906325 /* SDLGenericResponseSpec.m */, 162E82741A9BDE8A00906325 /* SDLGetDTCsResponseSpec.m */, + 1EE8C45C1F387D1C00FDC2CF /* SDLGetInteriorVehicleDataResponseSpec.m */, 5D0A9F9B1F1565EB00CC80DD /* SDLGetSystemCapabilityResponseSpec.m */, 162E82751A9BDE8A00906325 /* SDLGetVehicleDataResponseSpec.m */, DA9F7EA71DCC060B00ACAE48 /* SDLGetWaypointsResponseSpec.m */, @@ -2486,6 +2618,7 @@ 162E827E1A9BDE8A00906325 /* SDLSetAppIconResponseSpec.m */, 162E827F1A9BDE8A00906325 /* SDLSetDisplayLayoutResponseSpec.m */, 162E82801A9BDE8A00906325 /* SDLSetGlobalPropertiesResponseSpec.m */, + 1EE8C4601F38865B00FDC2CF /* SDLSetInteriorVehicleDataResponseSpec.m */, 162E82811A9BDE8A00906325 /* SDLSetMediaClockTimerResponseSpec.m */, 162E82821A9BDE8A00906325 /* SDLShowConstantTBTResponseSpec.m */, 162E82831A9BDE8A00906325 /* SDLShowResponseSpec.m */, @@ -2516,6 +2649,8 @@ 162E82921A9BDE8A00906325 /* SDLBodyInformationSpec.m */, 162E82931A9BDE8A00906325 /* SDLButtonCapabilitiesSpec.m */, 162E82941A9BDE8A00906325 /* SDLChoiceSpec.m */, + 1EE8C43F1F348D3200FDC2CF /* SDLClimateControlCapabilitiesSpec.m */, + 1EE8C4431F34A1B900FDC2CF /* SDLClimateControlDataSpec.m */, 162E82951A9BDE8A00906325 /* SDLClusterModeStatusSpec.m */, DA9F7EB31DCC086400ACAE48 /* SDLDateTimeSpec.m */, 162E82961A9BDE8A00906325 /* SDLDeviceInfoSpec.m */, @@ -2536,6 +2671,7 @@ DA9F7EAD1DCC063400ACAE48 /* SDLLocationCoordinateSpec.m */, DA9F7EAE1DCC063400ACAE48 /* SDLLocationDetailsSpec.m */, 162E82A21A9BDE8A00906325 /* SDLMenuParamsSpec.m */, + 1EE8C4451F3837D200FDC2CF /* SDLModuleDataSpec.m */, 8B9376DA1F33656C009605C4 /* SDLMetadataTagsSpec.m */, 162E82A31A9BDE8A00906325 /* SDLMyKeySpec.m */, 5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */, @@ -2544,6 +2680,10 @@ 162E82A51A9BDE8A00906325 /* SDLPermissionItemSpec.m */, 5D0A9F941F15585B00CC80DD /* SDLPhoneCapabilitySpec.m */, 162E82A61A9BDE8A00906325 /* SDLPresetBankCapabilitiesSpec.m */, + 1EE8C4471F38430900FDC2CF /* SDLRadioControlCapabilitiesSpec.m */, + 1EE8C4491F3846D300FDC2CF /* SDLRadioControlDataSpec.m */, + 1EE8C44B1F385C7100FDC2CF /* SDLRDSDataSpec.m */, + 1EE8C44F1F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m */, 5DADA7771F4E059E0084D17D /* SDLRectangleSpec.m */, 162E82A71A9BDE8A00906325 /* SDLScreenParamsSpec.m */, 162E82A81A9BDE8A00906325 /* SDLSingleTireStatusSpec.m */, @@ -2552,6 +2692,7 @@ 162E82AB1A9BDE8A00906325 /* SDLStartTimeSpec.m */, 162E82AC1A9BDE8A00906325 /* SDLSyncMsgVersionSpec.m */, 5D0A9F961F1559EC00CC80DD /* SDLSystemCapabilitySpec.m */, + 1EE8C4511F38657D00FDC2CF /* SDLTemperatureSpec.m */, 162E82AD1A9BDE8A00906325 /* SDLTextFieldSpec.m */, 162E82AE1A9BDE8A00906325 /* SDLTireStatusSpec.m */, 162E82AF1A9BDE8A00906325 /* SDLTouchCoordSpec.m */, @@ -2943,6 +3084,8 @@ 5D61FA4B1A84238A00846EE7 /* SDLAlert.m */, 5D61FA4C1A84238A00846EE7 /* SDLAlertManeuver.h */, 5D61FA4D1A84238A00846EE7 /* SDLAlertManeuver.m */, + 1E5AD07E1F20B73E0029B8AF /* SDLButtonPress.h */, + 1E5AD07F1F20B73E0029B8AF /* SDLButtonPress.m */, 5D61FA6E1A84238A00846EE7 /* SDLChangeRegistration.h */, 5D61FA6F1A84238A00846EE7 /* SDLChangeRegistration.m */, 5D61FA7E1A84238A00846EE7 /* SDLCreateInteractionChoiceSet.h */, @@ -2965,6 +3108,8 @@ 5D61FAB71A84238A00846EE7 /* SDLEndAudioPassThru.m */, 5D61FAC41A84238A00846EE7 /* SDLGetDTCs.h */, 5D61FAC51A84238A00846EE7 /* SDLGetDTCs.m */, + 1E5AD0861F20B9AA0029B8AF /* SDLGetInteriorVehicleData.h */, + 1E5AD0871F20B9AA0029B8AF /* SDLGetInteriorVehicleData.m */, 5D00AC6D1F1511B9004000D9 /* SDLGetSystemCapability.h */, 5D00AC6E1F1511B9004000D9 /* SDLGetSystemCapability.m */, 5D61FAC81A84238A00846EE7 /* SDLGetVehicleData.h */, @@ -2997,6 +3142,8 @@ 5D61FB971A84238B00846EE7 /* SDLSetDisplayLayout.m */, 5D61FB9A1A84238B00846EE7 /* SDLSetGlobalProperties.h */, 5D61FB9B1A84238B00846EE7 /* SDLSetGlobalProperties.m */, + 1E5AD08E1F20BE820029B8AF /* SDLSetInteriorVehicleData.h */, + 1E5AD08F1F20BE820029B8AF /* SDLSetInteriorVehicleData.m */, 5D61FB9E1A84238B00846EE7 /* SDLSetMediaClockTimer.h */, 5D61FB9F1A84238B00846EE7 /* SDLSetMediaClockTimer.m */, 5D61FBA21A84238B00846EE7 /* SDLShow.h */, @@ -3042,6 +3189,8 @@ 5D61FA4F1A84238A00846EE7 /* SDLAlertManeuverResponse.m */, 5D61FA501A84238A00846EE7 /* SDLAlertResponse.h */, 5D61FA511A84238A00846EE7 /* SDLAlertResponse.m */, + 1E5AD0821F20B9290029B8AF /* SDLButtonPressResponse.h */, + 1E5AD0831F20B9290029B8AF /* SDLButtonPressResponse.m */, 5D61FA701A84238A00846EE7 /* SDLChangeRegistrationResponse.h */, 5D61FA711A84238A00846EE7 /* SDLChangeRegistrationResponse.m */, 5D61FA801A84238A00846EE7 /* SDLCreateInteractionChoiceSetResponse.h */, @@ -3066,6 +3215,8 @@ 5D61FAC31A84238A00846EE7 /* SDLGenericResponse.m */, 5D61FAC61A84238A00846EE7 /* SDLGetDTCsResponse.h */, 5D61FAC71A84238A00846EE7 /* SDLGetDTCsResponse.m */, + 1E5AD08A1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.h */, + 1E5AD08B1F20BC320029B8AF /* SDLGetInteriorVehicleDataResponse.m */, 5D00AC711F151CFE004000D9 /* SDLGetSystemCapabilityResponse.h */, 5D00AC721F151CFE004000D9 /* SDLGetSystemCapabilityResponse.m */, 5D61FACA1A84238A00846EE7 /* SDLGetVehicleDataResponse.h */, @@ -3098,6 +3249,8 @@ 5D61FB991A84238B00846EE7 /* SDLSetDisplayLayoutResponse.m */, 5D61FB9C1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.h */, 5D61FB9D1A84238B00846EE7 /* SDLSetGlobalPropertiesResponse.m */, + 1E5AD0921F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.h */, + 1E5AD0931F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m */, 5D61FBA01A84238B00846EE7 /* SDLSetMediaClockTimerResponse.h */, 5D61FBA11A84238B00846EE7 /* SDLSetMediaClockTimerResponse.m */, 5D61FBA61A84238B00846EE7 /* SDLShowConstantTBTResponse.h */, @@ -3149,6 +3302,10 @@ 5D61FA651A84238A00846EE7 /* SDLButtonCapabilities.m */, 5D61FA741A84238A00846EE7 /* SDLChoice.h */, 5D61FA751A84238A00846EE7 /* SDLChoice.m */, + 1E5AD0361F1F4E390029B8AF /* SDLClimateControlCapabilities.h */, + 1E5AD0371F1F4E390029B8AF /* SDLClimateControlCapabilities.m */, + 1E5AD06A1F208BAB0029B8AF /* SDLClimateControlData.h */, + 1E5AD06B1F208BAB0029B8AF /* SDLClimateControlData.m */, 5D61FA761A84238A00846EE7 /* SDLClusterModeStatus.h */, 5D61FA771A84238A00846EE7 /* SDLClusterModeStatus.m */, DA9F7E611DCBFAC800ACAE48 /* SDLDateTime.h */, @@ -3189,6 +3346,8 @@ DA9F7E981DCC052C00ACAE48 /* SDLLocationDetails.m */, 5D61FB0B1A84238A00846EE7 /* SDLMenuParams.h */, 5D61FB0C1A84238A00846EE7 /* SDLMenuParams.m */, + 1E5AD06E1F209C880029B8AF /* SDLModuleData.h */, + 1E5AD06F1F209C880029B8AF /* SDLModuleData.m */, 8B9376D51F3349FC009605C4 /* SDLMetadataTags.h */, 8B9376D61F3349FC009605C4 /* SDLMetadataTags.m */, 5D61FB0D1A84238A00846EE7 /* SDLMyKey.h */, @@ -3205,6 +3364,14 @@ 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 */, 5D61FB8C1A84238B00846EE7 /* SDLScreenParams.h */, @@ -3221,6 +3388,8 @@ 5D61FBC91A84238B00846EE7 /* SDLSyncMsgVersion.m */, 5D00AC691F141339004000D9 /* SDLSystemCapability.h */, 5D00AC6A1F141339004000D9 /* SDLSystemCapability.m */, + 1E5AD0621F207DD50029B8AF /* SDLTemperature.h */, + 1E5AD0631F207DD50029B8AF /* SDLTemperature.m */, 5D61FBDC1A84238C00846EE7 /* SDLTextField.h */, 5D61FBDD1A84238C00846EE7 /* SDLTextField.m */, 5D61FBE21A84238C00846EE7 /* SDLTireStatus.h */, @@ -3278,6 +3447,8 @@ 5D61FA791A84238A00846EE7 /* SDLCompassDirection.m */, 5D61FA7A1A84238A00846EE7 /* SDLComponentVolumeStatus.h */, 5D61FA7B1A84238A00846EE7 /* SDLComponentVolumeStatus.m */, + 1E5AD04A1F1F79640029B8AF /* SDLDefrostZone.h */, + 1E5AD04B1F1F79640029B8AF /* SDLDefrostZone.m */, DA9F7E691DCBFB0700ACAE48 /* SDLDeliveryMode.h */, DA9F7E6A1DCBFB0700ACAE48 /* SDLDeliveryMode.m */, 5D61FA971A84238A00846EE7 /* SDLDeviceLevelStatus.h */, @@ -3328,6 +3499,8 @@ 5D61FB081A84238A00846EE7 /* SDLMaintenanceModeStatus.m */, 5D61FB091A84238A00846EE7 /* SDLMediaClockFormat.h */, 5D61FB0A1A84238A00846EE7 /* SDLMediaClockFormat.m */, + 1E5AD0461F1F773E0029B8AF /* SDLModuleType.h */, + 1E5AD0471F1F773E0029B8AF /* SDLModuleType.m */, 8BBEA6041F324165003EEA26 /* SDLMetadataType.h */, 8BBEA6051F324165003EEA26 /* SDLMetadataType.m */, 5D61FB421A84238B00846EE7 /* SDLPermissionStatus.h */, @@ -3344,6 +3517,10 @@ 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 */, @@ -3363,6 +3540,8 @@ 5D61FBD11A84238B00846EE7 /* SDLSystemContext.m */, 5D61FBD61A84238B00846EE7 /* SDLTBTState.h */, 5D61FBD71A84238B00846EE7 /* SDLTBTState.m */, + 1EE48E8E1F2F0EE700B98D08 /* SDLTemperatureUnit.h */, + 1EE48E8F1F2F0EE700B98D08 /* SDLTemperatureUnit.m */, 5D61FBDA1A84238B00846EE7 /* SDLTextAlignment.h */, 5D61FBDB1A84238C00846EE7 /* SDLTextAlignment.m */, 5D61FBDE1A84238C00846EE7 /* SDLTextFieldName.h */, @@ -3387,6 +3566,8 @@ 5D61FC1B1A84238C00846EE7 /* SDLVehicleDataStatus.m */, 5D61FC1C1A84238C00846EE7 /* SDLVehicleDataType.h */, 5D61FC1D1A84238C00846EE7 /* SDLVehicleDataType.m */, + 1E5AD03E1F1F58480029B8AF /* SDLVentilationMode.h */, + 1E5AD03F1F1F58480029B8AF /* SDLVentilationMode.m */, 5D61FC201A84238C00846EE7 /* SDLVrCapabilities.h */, 5D61FC211A84238C00846EE7 /* SDLVrCapabilities.m */, 5D61FC241A84238C00846EE7 /* SDLWarningLightStatus.h */, @@ -3464,6 +3645,8 @@ 5D61FB211A84238B00846EE7 /* SDLOnHashChange.m */, 5D61FB221A84238B00846EE7 /* SDLOnHMIStatus.h */, 5D61FB231A84238B00846EE7 /* SDLOnHMIStatus.m */, + 1E5AD0961F20C0FB0029B8AF /* SDLOnInteriorVehicleData.h */, + 1E5AD0971F20C0FB0029B8AF /* SDLOnInteriorVehicleData.m */, 5D61FB241A84238B00846EE7 /* SDLOnKeyboardInput.h */, 5D61FB251A84238B00846EE7 /* SDLOnKeyboardInput.m */, 5D61FB261A84238B00846EE7 /* SDLOnLanguageChange.h */, @@ -4434,6 +4617,7 @@ 5D61FD7F1A84238C00846EE7 /* SDLSetAppIcon.h in Headers */, 5D61FDD11A84238C00846EE7 /* SDLTouchCoord.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 */, @@ -4610,6 +4794,26 @@ 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 */, + 1E5AD0981F20C0FB0029B8AF /* SDLOnInteriorVehicleData.h in Headers */, + 1E5AD0641F207DD50029B8AF /* SDLTemperature.h in Headers */, + 1E5AD0901F20BE820029B8AF /* SDLSetInteriorVehicleData.h in Headers */, + 1E5AD0441F1F5A1F0029B8AF /* SDLRadioControlCapabilities.h in Headers */, + 1E5AD0841F20B9290029B8AF /* SDLButtonPressResponse.h in Headers */, + 1E5AD0681F2080B50029B8AF /* SDLRadioControlData.h in Headers */, + 1E5AD0481F1F773E0029B8AF /* SDLModuleType.h in Headers */, + 1E5AD06C1F208BAB0029B8AF /* SDLClimateControlData.h in Headers */, + 1E5AD0381F1F4E390029B8AF /* SDLClimateControlCapabilities.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 */, + 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 */, @@ -4912,9 +5116,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 1E4920B31F6A6463008F2CC3 /* SDLOnInteriorVehicleData.m in Sources */, + 1E4920B21F6A6455008F2CC3 /* SDLGetInteriorVehicleDataResponse.m in Sources */, + 1E4920B11F6A6443008F2CC3 /* SDLRadioState.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 */, 5D61FC561A84238C00846EE7 /* SDLButtonName.m in Sources */, 5D61FCC21A84238C00846EE7 /* SDLHMILevel.m in Sources */, @@ -4954,6 +5162,7 @@ 5D61FD491A84238C00846EE7 /* SDLProtocolMessage.m in Sources */, 5D61FCCE1A84238C00846EE7 /* SDLImage.m in Sources */, 5D61FD241A84238C00846EE7 /* SDLParameterPermissions.m in Sources */, + 1E5AD0711F209C880029B8AF /* SDLModuleData.m in Sources */, 5D61FDD21A84238C00846EE7 /* SDLTouchCoord.m in Sources */, 5D61FCEF1A84238C00846EE7 /* SDLListFilesResponse.m in Sources */, 5DD67CB11E65DDB7009CD394 /* SDLLogTargetAppleSystemLog.m in Sources */, @@ -4961,11 +5170,13 @@ 5D61FC911A84238C00846EE7 /* SDLDisplayCapabilities.m in Sources */, 5D61FD261A84238C00846EE7 /* SDLPerformAudioPassThru.m in Sources */, 5D61FC971A84238C00846EE7 /* SDLECallConfirmationStatus.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 */, + 1E5AD0691F2080B50029B8AF /* SDLRadioControlData.m in Sources */, 5D61FCC01A84238C00846EE7 /* SDLHexUtility.m in Sources */, 5DB9964F1F26886C002D8795 /* SDLControlFramePayloadEndService.m in Sources */, 5D61FD821A84238C00846EE7 /* SDLSetAppIconResponse.m in Sources */, @@ -4975,9 +5186,11 @@ 5D82042E1BCEC32F00D0A41B /* SDLFile.m in Sources */, 5DA3F3601BC448590026F2D0 /* SDLNotificationConstants.m in Sources */, 5D61FD5A1A84238C00846EE7 /* SDLReadDID.m in Sources */, + 1E5AD0351F1F3AA30029B8AF /* SDLRemoteControlCapabilities.m in Sources */, 5D61FC8F1A84238C00846EE7 /* SDLDimension.m in Sources */, 5D61FC9B1A84238C00846EE7 /* SDLEmergencyEvent.m in Sources */, 5D61FDFE1A84238C00846EE7 /* SDLVehicleDataActiveStatus.m in Sources */, + 1E5AD0411F1F58480029B8AF /* SDLVentilationMode.m in Sources */, 5D61FCD01A84238C00846EE7 /* SDLImageField.m in Sources */, 5D61FC3C1A84238C00846EE7 /* SDLAlertManeuverResponse.m in Sources */, DA9F7E741DCC004C00ACAE48 /* SDLGetWayPointsResponse.m in Sources */, @@ -5005,6 +5218,7 @@ 5DB996581F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.m in Sources */, DAC572621D10C5020004288B /* SDLPinchGesture.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 */, @@ -5054,6 +5268,7 @@ 5D61FC4E1A84238C00846EE7 /* SDLBitsPerSample.m in Sources */, 5D00AC701F1511B9004000D9 /* SDLGetSystemCapability.m in Sources */, 5D61FDEA1A84238C00846EE7 /* SDLUnsubscribeButtonResponse.m in Sources */, + 1E5AD05D1F2064A80029B8AF /* SDLRDSData.m in Sources */, 5D61FCA61A84238C00846EE7 /* SDLEndAudioPassThruResponse.m in Sources */, 5D61FD281A84238C00846EE7 /* SDLPerformAudioPassThruResponse.m in Sources */, 5D61FDCE1A84238C00846EE7 /* SDLTimerMode.m in Sources */, @@ -5110,12 +5325,14 @@ 5D61FC321A84238C00846EE7 /* SDLAddSubMenu.m in Sources */, 5D61FDF61A84238C00846EE7 /* SDLV1ProtocolHeader.m in Sources */, 5D61FDAA1A84238C00846EE7 /* SDLSpeechCapabilities.m in Sources */, + 1E5AD0951F20BEAD0029B8AF /* SDLSetInteriorVehicleDataResponse.m in Sources */, 5D61FDB41A84238C00846EE7 /* SDLSubscribeVehicleDataResponse.m in Sources */, 5D61FD121A84238C00846EE7 /* SDLOnKeyboardInput.m in Sources */, DA9F7E9A1DCC052C00ACAE48 /* SDLLocationCoordinate.m in Sources */, 5D61FCCA1A84238C00846EE7 /* SDLIgnitionStableStatus.m in Sources */, 5D61FCFB1A84238C00846EE7 /* SDLMyKey.m in Sources */, 5D61FCAA1A84238C00846EE7 /* SDLFileType.m in Sources */, + 1E5AD0651F207DD50029B8AF /* SDLTemperature.m in Sources */, DA9F7E901DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.m in Sources */, 5DE372A21ACB2ED300849FAA /* SDLHMICapabilities.m in Sources */, 5D61FDD41A84238C00846EE7 /* SDLTouchEvent.m in Sources */, @@ -5140,6 +5357,7 @@ 5D61FC5C1A84238C00846EE7 /* SDLChangeRegistration.m in Sources */, 5D1665C91CF8CA3D00CC4CA1 /* SDLPermissionFilter.m in Sources */, 5D61FDBA1A84238C00846EE7 /* SDLSyncPDataResponse.m in Sources */, + 1E5AD0511F1F7BF10029B8AF /* SDLRadioBand.m in Sources */, 5D61FDDC1A84238C00846EE7 /* SDLTriggerSource.m in Sources */, 5DADA7761F4DFED60084D17D /* SDLRectangle.m in Sources */, 88EED83F1F33C5A400E6C42E /* SDLSendHapticData.m in Sources */, @@ -5165,10 +5383,12 @@ 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 */, 5D61FD5C1A84238C00846EE7 /* SDLReadDIDResponse.m in Sources */, 5D61FD321A84238C00846EE7 /* SDLPolicyDataParser.m in Sources */, 5D61FC621A84238C00846EE7 /* SDLChoice.m in Sources */, + 1E5AD0811F20B73E0029B8AF /* SDLButtonPress.m in Sources */, DAC5725B1D10B81E0004288B /* SDLTouch.m in Sources */, 5D61FCEB1A84238C00846EE7 /* SDLLayoutMode.m in Sources */, 5D61FC2E1A84238C00846EE7 /* SDLAddCommand.m in Sources */, @@ -5187,6 +5407,7 @@ 5D61FCD21A84238C00846EE7 /* SDLImageFieldName.m in Sources */, 5D61FD761A84238C00846EE7 /* SDLRPCResponse.m in Sources */, 5D3E48761D6F3B330000BFEF /* SDLAsynchronousOperation.m in Sources */, + 1E5AD06D1F208BAB0029B8AF /* SDLClimateControlData.m in Sources */, 5D61FE081A84238C00846EE7 /* SDLVehicleDataStatus.m in Sources */, E9C32B9F1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.m in Sources */, 5D61FDA81A84238C00846EE7 /* SDLSpeakResponse.m in Sources */, @@ -5204,11 +5425,13 @@ 5D7F87EC1CE3C1A1002DD7C4 /* SDLDeleteFileOperation.m in Sources */, 97E26DED1E807AD70074A3C7 /* SDLMutableDataQueue.m in Sources */, 5D61FD641A84238C00846EE7 /* SDLResetGlobalProperties.m in Sources */, + 1E5AD0911F20BE820029B8AF /* SDLSetInteriorVehicleData.m in Sources */, 5D60088B1BE3ED540094A505 /* SDLStateMachine.m in Sources */, 8877F5EF1F34A72200DC128A /* SDLSendHapticDataResponse.m in Sources */, 5D61FD181A84238C00846EE7 /* SDLOnPermissionsChange.m in Sources */, 5D61FD3E1A84238C00846EE7 /* SDLPrimaryAudioSource.m in Sources */, 5D61FC2A1A84238C00846EE7 /* SDLAbstractProtocol.m in Sources */, + 1E5AD0851F20B9290029B8AF /* SDLButtonPressResponse.m in Sources */, 5D82041F1BCD8E6100D0A41B /* SDLConfiguration.m in Sources */, 5D61FD381A84238C00846EE7 /* SDLPredefinedLayout.m in Sources */, 5D3E487C1D6F888E0000BFEF /* SDLRPCResponseNotification.m in Sources */, @@ -5232,6 +5455,7 @@ 5D61FD081A84238C00846EE7 /* SDLOnCommand.m in Sources */, 5D53C46E1B7A99B9003526EA /* SDLStreamingMediaManager.m in Sources */, 5D61FD6A1A84238C00846EE7 /* SDLRPCMessage.m in Sources */, + 1E5AD0391F1F4E390029B8AF /* SDLClimateControlCapabilities.m in Sources */, 5D61FDA21A84238C00846EE7 /* SDLSoftButtonCapabilities.m in Sources */, 5D8204321BD001C700D0A41B /* SDLArtwork.m in Sources */, 5D61FC2C1A84238C00846EE7 /* SDLAbstractTransport.m in Sources */, @@ -5253,6 +5477,7 @@ 5D61FD621A84238C00846EE7 /* SDLRequestType.m in Sources */, 5D61FCBA1A84238C00846EE7 /* SDLGlobalProperty.m in Sources */, 5D61FD4F1A84238C00846EE7 /* SDLProtocolReceivedMessageRouter.m in Sources */, + 1E5AD0451F1F5A1F0029B8AF /* SDLRadioControlCapabilities.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5274,6 +5499,7 @@ 162E83041A9BDE8B00906325 /* SDLUpdateModeSpec.m in Sources */, 162E83801A9BDE8B00906325 /* SDLHMIPermissionsSpec.m in Sources */, 5D1654561D3E754F00554D93 /* SDLLifecycleManagerSpec.m in Sources */, + 1EE8C43A1F347D4D00FDC2CF /* SDLRadioStateSpec.m in Sources */, 162E83021A9BDE8B00906325 /* SDLTouchTypeSpec.m in Sources */, 5DB92D2F1AC59F0000C15BB0 /* SDLObjectWithPrioritySpec.m in Sources */, 162E838A1A9BDE8B00906325 /* SDLSingleTireStatusSpec.m in Sources */, @@ -5291,8 +5517,10 @@ 5DB2022A1F5F38B60061D189 /* SDLFakeStreamingManagerDataSource.m in Sources */, 162E83331A9BDE8B00906325 /* SDLPerformInteractionSpec.m in Sources */, 5D0A9F951F15585B00CC80DD /* SDLPhoneCapabilitySpec.m in Sources */, + 1EE8C4561F38788A00FDC2CF /* SDLButtonPressSpec.m in Sources */, 1680B11A1A9CD7AD00DBD79E /* SDLAbstractProtocolSpec.m in Sources */, 1680B1151A9CD7AD00DBD79E /* SDLV2ProtocolHeaderSpec.m in Sources */, + 1EE8C4541F38762E00FDC2CF /* SDLOnInteriorVehicleDataSpec.m in Sources */, 162E83101A9BDE8B00906325 /* SDLOnAudioPassThruSpec.m in Sources */, DABB62171E4A900C0034C567 /* SDLH264VideoEncoderSpec.m in Sources */, 5DBEFA581F436132009EE295 /* SDLFakeSecurityManager.m in Sources */, @@ -5310,6 +5538,7 @@ 1680B11C1A9CD7AD00DBD79E /* SDLProtocolMessageAssemblerSpec.m in Sources */, 8850DB601F4475D30053A48D /* TestMultipleFilesConnectionManager.m in Sources */, 162E83181A9BDE8B00906325 /* SDLOnKeyboardInputSpec.m in Sources */, + 1EE8C4441F34A1B900FDC2CF /* SDLClimateControlDataSpec.m in Sources */, 162E83701A9BDE8B00906325 /* SDLUpdateTurnListResponseSpec.m in Sources */, 162E833B1A9BDE8B00906325 /* SDLSetGlobalPropertiesSpec.m in Sources */, 162E82F11A9BDE8B00906325 /* SDLPowerModeStatusSpec.m in Sources */, @@ -5321,12 +5550,14 @@ 162E83681A9BDE8B00906325 /* SDLSpeakResponseSpec.m in Sources */, 162E83661A9BDE8B00906325 /* SDLShowResponseSpec.m in Sources */, 5D9F50831BEA5C6100FEF399 /* SDLFileManagerSpec.m in Sources */, + 1EE8C4481F38430900FDC2CF /* SDLRadioControlCapabilitiesSpec.m in Sources */, 162E83221A9BDE8B00906325 /* SDLAddCommandSpec.m in Sources */, 162E83121A9BDE8B00906325 /* SDLOnButtonPressSpec.m in Sources */, 162E838D1A9BDE8B00906325 /* SDLStartTimeSpec.m in Sources */, 162E836E1A9BDE8B00906325 /* SDLUnsubscribeButtonResponseSpec.m in Sources */, 162E835B1A9BDE8B00906325 /* SDLPerformInteractionResponseSpec.m in Sources */, 162E832D1A9BDE8B00906325 /* SDLEncodedSyncPDataSpec.m in Sources */, + 1EE8C44C1F385C7100FDC2CF /* SDLRDSDataSpec.m in Sources */, 5DB92D241AC47B2C00C15BB0 /* SDLHexUtilitySpec.m in Sources */, 162E83281A9BDE8B00906325 /* SDLDeleteCommandSpec.m in Sources */, 162E83531A9BDE8B00906325 /* SDLDiagnosticMessageResponseSpec.m in Sources */, @@ -5341,12 +5572,14 @@ 5D59DD471B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m in Sources */, 5D0A9F9A1F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m in Sources */, 162E82F31A9BDE8B00906325 /* SDLPrerecordedSpeechSpec.m in Sources */, + 1EE8C45A1F387BBB00FDC2CF /* SDLGetInteriorVehicleDataSpec.m in Sources */, 162E83691A9BDE8B00906325 /* SDLSubscribeButtonResponseSpec.m in Sources */, 5DAE06751BDEC6D600F9B498 /* SDLArtworkSpec.m in Sources */, 5DA23FF01F2FA0FF009C0313 /* SDLControlFramePayloadEndServiceSpec.m in Sources */, 162E83591A9BDE8B00906325 /* SDLListFilesResponseSpec.m in Sources */, 162E832A1A9BDE8B00906325 /* SDLDeleteInteractionChoiceSetSpec.m in Sources */, 162E839D1A9BDE8B00906325 /* SDLRPCResponseSpec.m in Sources */, + 1EE8C4521F38657D00FDC2CF /* SDLTemperatureSpec.m in Sources */, 5DB1BCDF1D243DD3002FFC37 /* SDLLockScreenConfigurationSpec.m in Sources */, 162E82E51A9BDE8B00906325 /* SDLImageTypeSpec.m in Sources */, 162E83421A9BDE8B00906325 /* SDLSubscribeVehicleDataSpec.m in Sources */, @@ -5355,6 +5588,7 @@ 88B848C91F462E3600DED768 /* TestProgressResponse.m in Sources */, 162E83231A9BDE8B00906325 /* SDLAddSubMenuSpec.m in Sources */, DA4353E91D2721680099B8C4 /* DispatchTimerSpec.m in Sources */, + 1EE8C45D1F387D1C00FDC2CF /* SDLGetInteriorVehicleDataResponseSpec.m in Sources */, DA8966EF1E5693E300413EAB /* SDLStreamingMediaLifecycleManagerSpec.m in Sources */, 162E82F21A9BDE8B00906325 /* SDLPredefinedLayoutSpec.m in Sources */, 162E83521A9BDE8B00906325 /* SDLDeleteSubMenuResponseSpec.m in Sources */, @@ -5416,6 +5650,7 @@ 162E83761A9BDE8B00906325 /* SDLChoiceSpec.m in Sources */, 162E83571A9BDE8B00906325 /* SDLGetDTCsResponseSpec.m in Sources */, 5D4346471E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m in Sources */, + 1EE8C4581F387ABD00FDC2CF /* SDLButtonPressResponseSpec.m in Sources */, 5DA23FF61F2FAA31009C0313 /* SDLControlFramePayloadRPCStartServiceSpec.m in Sources */, 162E83201A9BDE8B00906325 /* SDLOnVehicleDataSpec.m in Sources */, 162E83141A9BDE8B00906325 /* SDLOnDriverDistractionSpec.m in Sources */, @@ -5445,6 +5680,7 @@ DA9F7EA61DCC05F500ACAE48 /* SDLUnsubscribeWaypointsSpec.m in Sources */, 162E82F01A9BDE8B00906325 /* SDLPowerModeQualificationStatusSpec.m in Sources */, 162E82CD1A9BDE8A00906325 /* SDLAudioStreamingStateSpec.m in Sources */, + 1EE8C4461F3837D200FDC2CF /* SDLModuleDataSpec.m in Sources */, 162E831A1A9BDE8B00906325 /* SDLOnLockScreenStatusSpec.m in Sources */, 162E83431A9BDE8B00906325 /* SDLSyncPDataSpec.m in Sources */, 167ED9461A9BCE5D00797BE5 /* SwiftSpec.swift in Sources */, @@ -5453,8 +5689,10 @@ 1680B11B1A9CD7AD00DBD79E /* SDLFunctionIDSpec.m in Sources */, 5DB1BCDA1D243D85002FFC37 /* SDLStateMachineSpec.m in Sources */, 5D4346731E6F617D00B639C6 /* TestLogTarget.m in Sources */, + 1EE8C43C1F347EAE00FDC2CF /* SDLTemperatureUnitSpec.m in Sources */, 162E83131A9BDE8B00906325 /* SDLOnCommandSpec.m in Sources */, 162E833A1A9BDE8B00906325 /* SDLSetDisplayLayoutSpec.m in Sources */, + 1EE8C4401F348D3200FDC2CF /* SDLClimateControlCapabilitiesSpec.m in Sources */, 162E838F1A9BDE8B00906325 /* SDLTextFieldSpec.m in Sources */, 162E82CA1A9BDE8A00906325 /* SDLAmbientLightStatusSpec.m in Sources */, 162E83091A9BDE8B00906325 /* SDLVehicleDataStatusSpec.m in Sources */, @@ -5471,9 +5709,11 @@ 162E83031A9BDE8B00906325 /* SDLTriggerSource.m in Sources */, 162E82D61A9BDE8A00906325 /* SDLComponentVolumeStatusSpec.m in Sources */, 162E835C1A9BDE8B00906325 /* SDLPutFileResponseSpec.m in Sources */, + 1EE8C43E1F347F0500FDC2CF /* SDLVentilationModeSpec.m in Sources */, 5DB202271F5F2D030061D189 /* SDLImageResolutionSpec.m in Sources */, DA9F7EAA1DCC061A00ACAE48 /* SDLSubscribeWaypointsResponseSpec.m in Sources */, 162E835F1A9BDE8B00906325 /* SDLResetGlobalPropertiesResponseSpec.m in Sources */, + 1EE8C4381F347C7300FDC2CF /* SDLRadioBandSpec.m in Sources */, 162E835E1A9BDE8B00906325 /* SDLRegisterAppInterfaceResponseSpec.m in Sources */, 162E835A1A9BDE8B00906325 /* SDLPerformAudioPassThruResponseSpec.m in Sources */, 162E83501A9BDE8B00906325 /* SDLDeleteFileResponseSpec.m in Sources */, @@ -5482,6 +5722,7 @@ 162E83821A9BDE8B00906325 /* SDLImageSpec.m in Sources */, 162E834A1A9BDE8B00906325 /* SDLAddSubMenuResponseSpec.m in Sources */, 162E830C1A9BDE8B00906325 /* SDLWarningLightStatusSpec.m in Sources */, + 1EE8C45F1F3884FF00FDC2CF /* SDLSetInteriorVehicleDataSpec.m in Sources */, 162E82E71A9BDE8B00906325 /* SDLKeyboardEventSpec.m in Sources */, 162E834E1A9BDE8B00906325 /* SDLCreateInteractionChoiceSetResponseSpec.m in Sources */, DA9F7EB61DCC086A00ACAE48 /* SDLOasisAddressSpec.m in Sources */, @@ -5529,6 +5770,7 @@ 162E83441A9BDE8B00906325 /* SDLSystemRequestSpec.m in Sources */, 162E83001A9BDE8B00906325 /* SDLTextFieldNameSpec.m in Sources */, DA4353EA1D2721680099B8C4 /* SDLTouchManagerSpec.m in Sources */, + 1EE8C4611F38865B00FDC2CF /* SDLSetInteriorVehicleDataResponseSpec.m in Sources */, 162E82FC1A9BDE8B00906325 /* SDLSystemAction.m in Sources */, 162E82CC1A9BDE8A00906325 /* SDLAppInterfaceUnregisteredReasonSpec.m in Sources */, 162E83321A9BDE8B00906325 /* SDLPerformAudioPassThruSpec.m in Sources */, @@ -5553,6 +5795,8 @@ 162E83861A9BDE8B00906325 /* SDLParameterPermissionsSpec.m in Sources */, 162E831B1A9BDE8B00906325 /* SDLOnPermissionsChangeSpec.m in Sources */, 162E83711A9BDE8B00906325 /* SDLAirbagStatusSpec.m in Sources */, + 1EE8C44A1F3846D300FDC2CF /* SDLRadioControlDataSpec.m in Sources */, + 1EE8C4501F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m in Sources */, 162E82CF1A9BDE8A00906325 /* SDLBitsPerSampleSpec.m in Sources */, 162E831E1A9BDE8B00906325 /* SDLOnTBTClientStateSpec.m in Sources */, 162E83351A9BDE8B00906325 /* SDLReadDIDSpec.m in Sources */, diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec index 796fccca2..9ff94545b 100644 --- a/SmartDeviceLink.podspec +++ b/SmartDeviceLink.podspec @@ -28,8 +28,10 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLAirbagStatus.h', 'SmartDeviceLink/SDLAlert.h', 'SmartDeviceLink/SDLAlertManeuver.h', +'SmartDeviceLink/SDLButtonPress.h', 'SmartDeviceLink/SDLAlertManeuverResponse.h', 'SmartDeviceLink/SDLAlertResponse.h', +'SmartDeviceLink/SDLButtonPressResponse.h', 'SmartDeviceLink/SDLAmbientLightStatus.h', 'SmartDeviceLink/SDLAppHMIType.h', 'SmartDeviceLink/SDLAppInfo.h', @@ -50,6 +52,8 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLChangeRegistrationResponse.h', 'SmartDeviceLink/SDLCharacterSet.h', 'SmartDeviceLink/SDLChoice.h', +'SmartDeviceLink/SDLClimateControlCapabilities.h', +'SmartDeviceLink/SDLClimateControlData.h', 'SmartDeviceLink/SDLClusterModeStatus.h', 'SmartDeviceLink/SDLCompassDirection.h', 'SmartDeviceLink/SDLComponentVolumeStatus.h', @@ -57,6 +61,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLCreateInteractionChoiceSet.h', 'SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.h', 'SmartDeviceLink/SDLDateTime.h', +'SmartDeviceLink/SDLDefrostZone.h', 'SmartDeviceLink/SDLDeleteCommand.h', 'SmartDeviceLink/SDLDeleteCommandResponse.h', 'SmartDeviceLink/SDLDeleteFile.h', @@ -95,7 +100,9 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLFuelCutoffStatus.h', 'SmartDeviceLink/SDLGenericResponse.h', 'SmartDeviceLink/SDLGetDTCs.h', +'SmartDeviceLink/SDLGetInteriorVehicleData.h', 'SmartDeviceLink/SDLGetDTCsResponse.h', +'SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h', 'SmartDeviceLink/SDLGetSystemCapability.h', 'SmartDeviceLink/SDLGetSystemCapabilityResponse.h', 'SmartDeviceLink/SDLGetVehicleData.h', @@ -152,6 +159,8 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLMenuParams.h', 'SmartDeviceLink/SDLMetadataTags.h', 'SmartDeviceLink/SDLMetadataType.h', +'SmartDeviceLink/SDLModuleData.h', +'SmartDeviceLink/SDLModuleType.h', 'SmartDeviceLink/SDLMyKey.h', 'SmartDeviceLink/SDLNavigationCapability.h', 'SmartDeviceLink/SDLNotificationConstants.h', @@ -164,6 +173,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLOnDriverDistraction.h', 'SmartDeviceLink/SDLOnEncodedSyncPData.h', 'SmartDeviceLink/SDLOnHashChange.h', +'SmartDeviceLink/SDLOnInteriorVehicleData.h', 'SmartDeviceLink/SDLOnHMIStatus.h', 'SmartDeviceLink/SDLOnKeyboardInput.h', 'SmartDeviceLink/SDLOnLanguageChange.h', @@ -202,16 +212,22 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLProxyListener.h', 'SmartDeviceLink/SDLPutFile.h', 'SmartDeviceLink/SDLPutFileResponse.h', +'SmartDeviceLink/SDLRadioBand.h', +'SmartDeviceLink/SDLRadioControlCapabilities.h', +'SmartDeviceLink/SDLRadioControlData.h', +'SmartDeviceLink/SDLRadioState.h', 'SmartDeviceLink/SDLReadDID.h', 'SmartDeviceLink/SDLRectangle.h', 'SmartDeviceLink/SDLReadDIDResponse.h', 'SmartDeviceLink/SDLRectangle.h', 'SmartDeviceLink/SDLRegisterAppInterface.h', 'SmartDeviceLink/SDLRegisterAppInterfaceResponse.h', +'SmartDeviceLink/SDLRemoteControlCapabilities.h', 'SmartDeviceLink/SDLRequestType.h', 'SmartDeviceLink/SDLResetGlobalProperties.h', 'SmartDeviceLink/SDLResetGlobalPropertiesResponse.h', 'SmartDeviceLink/SDLResult.h', +'SmartDeviceLink/SDLRDSData.h', 'SmartDeviceLink/SDLRPCMessage.h', 'SmartDeviceLink/SDLRPCMessageType.h', 'SmartDeviceLink/SDLRPCNotification.h', @@ -234,7 +250,9 @@ ss.public_header_files = [ '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', @@ -268,6 +286,8 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLSystemCapabilityType.h', 'SmartDeviceLink/SDLSystemContext.h', 'SmartDeviceLink/SDLTBTState.h', +'SmartDeviceLink/SDLTemperature.h', +'SmartDeviceLink/SDLTemperatureUnit.h', 'SmartDeviceLink/SDLTCPTransport.h', 'SmartDeviceLink/SDLTextAlignment.h', 'SmartDeviceLink/SDLTextField.h', @@ -303,6 +323,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLVehicleDataResultCode.h', 'SmartDeviceLink/SDLVehicleDataStatus.h', 'SmartDeviceLink/SDLVehicleDataType.h', +'SmartDeviceLink/SDLVentilationMode.h', 'SmartDeviceLink/SDLVehicleType.h', 'SmartDeviceLink/SDLVideoStreamingCapability.h', 'SmartDeviceLink/SDLVideoStreamingCodec.h', diff --git a/SmartDeviceLink/SDLAbstractProtocol.h b/SmartDeviceLink/SDLAbstractProtocol.h index 9c15260fe..e629e302a 100644 --- a/SmartDeviceLink/SDLAbstractProtocol.h +++ b/SmartDeviceLink/SDLAbstractProtocol.h @@ -20,26 +20,16 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, copy) NSString *appId; // Sending -- (void)sendStartSessionWithType:(SDLServiceType)serviceType __deprecated_msg(("Use startServiceWithType:payload: instead")); -- (void)startServiceWithType:(SDLServiceType)serviceType __deprecated_msg(("Use startServiceWithType:payload: instead")); - (void)startServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload; - -- (void)startSecureServiceWithType:(SDLServiceType)serviceType completionHandler:(void (^)(BOOL success, NSError *error))completionHandler __deprecated_msg(("Use startSecureServiceWithType:payload:completionHandler instead"));; - (void)startSecureServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload completionHandler:(void (^)(BOOL success, NSError *error))completionHandler; - -- (void)sendEndSessionWithType:(SDLServiceType)serviceType __deprecated_msg(("Use endServiceWithType: instead")); - (void)endServiceWithType:(SDLServiceType)serviceType; -- (void)sendRPCRequest:(SDLRPCRequest *)rpcRequest __deprecated_msg(("Use sendRPC: instead")); - (void)sendRPC:(SDLRPCMessage *)message; - (BOOL)sendRPC:(SDLRPCMessage *)message encrypted:(BOOL)encryption error:(NSError **)error; - (void)sendRawData:(NSData *)data withServiceType:(SDLServiceType)serviceType; - (void)sendEncryptedRawData:(NSData *)data onService:(SDLServiceType)serviceType; -- (void)sendRawDataStream:(NSInputStream *)inputStream withServiceType:(SDLServiceType)serviceType __deprecated_msg("This is not implemented and will cause a crash if called"); -- (void)sendHeartbeat __deprecated_msg("This is not implemented and will cause a crash if called"); - // Recieving - (void)handleBytesFromTransport:(NSData *)receivedData; diff --git a/SmartDeviceLink/SDLAbstractProtocol.m b/SmartDeviceLink/SDLAbstractProtocol.m index c38b00902..fa3502799 100644 --- a/SmartDeviceLink/SDLAbstractProtocol.m +++ b/SmartDeviceLink/SDLAbstractProtocol.m @@ -17,30 +17,14 @@ NS_ASSUME_NONNULL_BEGIN } // Implement in subclasses. -- (void)sendStartSessionWithType:(SDLServiceType)serviceType { - [self doesNotRecognizeSelector:_cmd]; -} - -- (void)startServiceWithType:(SDLServiceType)serviceType { - [self doesNotRecognizeSelector:_cmd]; -} - - (void)startServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload { [self doesNotRecognizeSelector:_cmd]; } -- (void)startSecureServiceWithType:(SDLServiceType)serviceType completionHandler:(void (^)(BOOL, NSError *))completionHandler { - [self doesNotRecognizeSelector:_cmd]; -} - - (void)startSecureServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload completionHandler:(void (^)(BOOL, NSError *))completionHandler { [self doesNotRecognizeSelector:_cmd]; } -- (void)sendEndSessionWithType:(SDLServiceType)serviceType { - [self doesNotRecognizeSelector:_cmd]; -} - - (void)endServiceWithType:(SDLServiceType)serviceType { [self doesNotRecognizeSelector:_cmd]; } @@ -54,14 +38,6 @@ NS_ASSUME_NONNULL_BEGIN return NO; } -- (void)sendRPCRequest:(SDLRPCRequest *)rpcRequest { - [self doesNotRecognizeSelector:_cmd]; -} - -- (void)sendHeartbeat { - [self doesNotRecognizeSelector:_cmd]; -} - - (void)handleBytesFromTransport:(NSData *)receivedData { [self doesNotRecognizeSelector:_cmd]; } @@ -70,10 +46,6 @@ NS_ASSUME_NONNULL_BEGIN [self doesNotRecognizeSelector:_cmd]; } -- (void)sendRawDataStream:(NSInputStream *)inputStream withServiceType:(SDLServiceType)serviceType { - [self doesNotRecognizeSelector:_cmd]; -} - - (void)sendEncryptedRawData:(NSData *)data onService:(SDLServiceType)serviceType { [self doesNotRecognizeSelector:_cmd]; } diff --git a/SmartDeviceLink/SDLAppHMIType.h b/SmartDeviceLink/SDLAppHMIType.h index 2c02fe498..021f324e3 100644 --- a/SmartDeviceLink/SDLAppHMIType.h +++ b/SmartDeviceLink/SDLAppHMIType.h @@ -62,3 +62,7 @@ extern SDLAppHMIType const SDLAppHMITypeTesting; * @abstract System App */ extern SDLAppHMIType const SDLAppHMITypeSystem; + +/** + * @abstract Remote control */ +extern SDLAppHMIType const SDLAppHMITypeRemoteControl; diff --git a/SmartDeviceLink/SDLAppHMIType.m b/SmartDeviceLink/SDLAppHMIType.m index 5ce899cf5..070ad089b 100644 --- a/SmartDeviceLink/SDLAppHMIType.m +++ b/SmartDeviceLink/SDLAppHMIType.m @@ -15,3 +15,4 @@ 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/SDLButtonName.h b/SmartDeviceLink/SDLButtonName.h index c86bd4dba..0956c80e3 100644 --- a/SmartDeviceLink/SDLButtonName.h +++ b/SmartDeviceLink/SDLButtonName.h @@ -98,6 +98,116 @@ extern SDLButtonName const SDLButtonNamePreset8; */ extern SDLButtonName const SDLButtonNamePreset9; +/** + * @abstract Represents the Custom button. + * + */ extern SDLButtonName const SDLButtonNameCustomButton; +/** + * @abstract Represents the SEARCH button. + * + */ extern SDLButtonName const SDLButtonNameSearch; + +#pragma mark - Climate Buttons + +/** + * @abstract Represents AC max button * + */ +extern SDLButtonName const SDLButtonNameACMax; + +/** + * @abstract Represents AC button * + */ +extern SDLButtonName const SDLButtonNameAC; + +/** + * @abstract Represents a Recirculate button + */ +extern SDLButtonName const SDLButtonNameRecirculate; + +/** + * @abstract Represents a Fan up button + */ +extern SDLButtonName const SDLButtonNameFanUp; + +/** + * @abstract Represents a fan down button + */ +extern SDLButtonName const SDLButtonNameFanDown; + +/** + * @abstract Represents a temperature up button + */ +extern SDLButtonName const SDLButtonNameTempUp; + +/** + * @abstract Represents a temperature down button + */ +extern SDLButtonName const SDLButtonNameTempDown; + +/** + * @abstract Represents a Defrost max button. + * + */ +extern SDLButtonName const SDLButtonNameDefrostMax; + +/** + * @abstract Represents a Defrost button. + * + */ +extern SDLButtonName const SDLButtonNameDefrost; + +/** + * @abstract Represents a Defrost rear button. + * + */ +extern SDLButtonName const SDLButtonNameDefrostRear; + +/** + * @abstract Represents a Upper Vent button. + * + */ +extern SDLButtonName const SDLButtonNameUpperVent; + +/** + * @abstract Represents a Lower vent button. + * + */ +extern SDLButtonName const SDLButtonNameLowerVent; + +#pragma mark - Radio Buttons +/** + * @abstract Represents a volume up button. + */ +extern SDLButtonName const SDLButtonNameVolumeUp; + +/** + * @abstract Represents a volume down button. + * + */ +extern SDLButtonName const SDLButtonNameVolumeDown; + +/** + * @abstract Represents a Eject Button. + * + */ +extern SDLButtonName const SDLButtonNameEject; + +/** + * @abstract Represents a Source button. + * + */ +extern SDLButtonName const SDLButtonNameSource; + +/** + * @abstract Represents a SHUFFLE button. + * + */ +extern SDLButtonName const SDLButtonNameShuffle; + +/** + * @abstract Represents a Repeat button. + */ +extern SDLButtonName const SDLButtonNameRepeat; diff --git a/SmartDeviceLink/SDLButtonName.m b/SmartDeviceLink/SDLButtonName.m index 23ac32eb9..8283fa5a2 100644 --- a/SmartDeviceLink/SDLButtonName.m +++ b/SmartDeviceLink/SDLButtonName.m @@ -21,3 +21,21 @@ SDLButtonName const SDLButtonNamePreset8 = @"PRESET_8"; SDLButtonName const SDLButtonNamePreset9 = @"PRESET_9"; SDLButtonName const SDLButtonNameCustomButton = @"CUSTOM_BUTTON"; SDLButtonName const SDLButtonNameSearch = @"SEARCH"; +SDLButtonName const SDLButtonNameACMax = @"AC_MAX"; +SDLButtonName const SDLButtonNameAC = @"AC"; +SDLButtonName const SDLButtonNameRecirculate = @"RECIRCULATE"; +SDLButtonName const SDLButtonNameFanUp = @"FAN_UP"; +SDLButtonName const SDLButtonNameFanDown = @"FAN_DOWN"; +SDLButtonName const SDLButtonNameTempUp = @"TEMP_UP"; +SDLButtonName const SDLButtonNameTempDown = @"TEMP_DOWN"; +SDLButtonName const SDLButtonNameDefrostMax = @"DEFROST_MAX"; +SDLButtonName const SDLButtonNameDefrostRear = @"DEFROST_REAR"; +SDLButtonName const SDLButtonNameDefrost = @"DEFROST"; +SDLButtonName const SDLButtonNameUpperVent = @"UPPER_VENT"; +SDLButtonName const SDLButtonNameLowerVent = @"LOWER_VENT"; +SDLButtonName const SDLButtonNameVolumeUp = @"VOLUME_UP"; +SDLButtonName const SDLButtonNameVolumeDown = @"VOLUME_DOWN"; +SDLButtonName const SDLButtonNameEject = @"EJECT"; +SDLButtonName const SDLButtonNameSource = @"SOURCE"; +SDLButtonName const SDLButtonNameShuffle = @"SHUFFLE"; +SDLButtonName const SDLButtonNameRepeat = @"REPEAT"; diff --git a/SmartDeviceLink/SDLButtonPress.h b/SmartDeviceLink/SDLButtonPress.h new file mode 100644 index 000000000..b019b4edd --- /dev/null +++ b/SmartDeviceLink/SDLButtonPress.h @@ -0,0 +1,40 @@ +// +// SDLButtonPress.h +// + +#import "SDLRPCRequest.h" +#import "SDLModuleType.h" +#import "SDLButtonName.h" +#import "SDLButtonPressMode.h" + +/** + * This RPC allows a remote control type mobile application to simulate a hardware button press event. + */ + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLButtonPress : SDLRPCRequest + +- (instancetype)initWithButtonName:(SDLButtonName)buttonName moduleType:(SDLModuleType) moduleType; + +/** + * The module where the button should be pressed. + * + */ +@property (strong, nonatomic) SDLModuleType moduleType; + +/** + * 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 new file mode 100644 index 000000000..3555780fc --- /dev/null +++ b/SmartDeviceLink/SDLButtonPress.m @@ -0,0 +1,56 @@ +// +// SDLButtonPress.m +// + +#import "SDLButtonPress.h" +#import "SDLNames.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLButtonPress + +- (instancetype)init { + if (self = [super initWithName:SDLNameButtonPress]) { + } + return self; +} + +- (instancetype)initWithButtonName:(SDLButtonName) buttonName moduleType:(SDLModuleType) moduleType { + self = [self init]; + if (!self) { + return nil; + } + + self.buttonName = buttonName; + self.moduleType = moduleType; + + return self; +} + +- (void)setModuleType:(SDLModuleType)moduleType { + [parameters sdl_setObject:moduleType forName:SDLNameModuleType]; +} + +- (SDLModuleType)moduleType { + return [parameters sdl_objectForName:SDLNameModuleType]; +} + +- (void)setButtonName:(SDLButtonName)buttonName { + [parameters sdl_setObject:buttonName forName:SDLNameButtonName]; +} + +- (SDLButtonName)buttonName { + return [parameters sdl_objectForName:SDLNameButtonName]; +} + +- (void)setButtonPressMode:(SDLButtonPressMode)buttonPressMode { + [parameters sdl_setObject:buttonPressMode forName:SDLNameButtonPressMode]; +} + +- (SDLButtonPressMode)buttonPressMode { + return [parameters sdl_objectForName:SDLNameButtonPressMode]; +} + +@end +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLButtonPressResponse.h b/SmartDeviceLink/SDLButtonPressResponse.h new file mode 100644 index 000000000..7a717d310 --- /dev/null +++ b/SmartDeviceLink/SDLButtonPressResponse.h @@ -0,0 +1,13 @@ +// +// SDLButtonPressResponse.h +// + +#import "SDLRPCResponse.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLButtonPressResponse : SDLRPCResponse + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLButtonPressResponse.m b/SmartDeviceLink/SDLButtonPressResponse.m new file mode 100644 index 000000000..3e768a872 --- /dev/null +++ b/SmartDeviceLink/SDLButtonPressResponse.m @@ -0,0 +1,20 @@ +// +// SDLButtonPressResponse.m +// + +#import "SDLButtonPressResponse.h" +#import "SDLNames.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLButtonPressResponse + +- (instancetype)init { + if (self = [super initWithName:SDLNameButtonPress]) { + } + return self; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLClimateControlCapabilities.h b/SmartDeviceLink/SDLClimateControlCapabilities.h new file mode 100644 index 000000000..46482057e --- /dev/null +++ b/SmartDeviceLink/SDLClimateControlCapabilities.h @@ -0,0 +1,115 @@ +// +// SDLClimateControlCapabilities.h +// + +#import "SDLRPCMessage.h" +#import "SDLDefrostZone.h" +#import "SDLVentilationMode.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Contains information about a climate control module's capabilities. + */ +@interface SDLClimateControlCapabilities : SDLRPCStruct + +- (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; + +/** + * @abstract 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 + */ +@property (strong, nonatomic) NSString *moduleName; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLClimateControlCapabilities.m b/SmartDeviceLink/SDLClimateControlCapabilities.m new file mode 100644 index 000000000..9ea4143d8 --- /dev/null +++ b/SmartDeviceLink/SDLClimateControlCapabilities.m @@ -0,0 +1,130 @@ +// +// SDLClimateControlCapabilities.m +// + +#import "SDLClimateControlCapabilities.h" +#import "SDLNames.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 { + self = [self init]; + if (!self) { + return nil; + } + + self.moduleName = moduleName; + 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); + return self; +} + +- (void)setModuleName:(NSString *)moduleName { + [store sdl_setObject:moduleName forName:SDLNameModuleName]; +} + +- (NSString *)moduleName { + return [store sdl_objectForName:SDLNameModuleName]; +} + +- (void)setFanSpeedAvailable:(nullable NSNumber<SDLBool> *)fanSpeedAvailable { + [store sdl_setObject:fanSpeedAvailable forName:SDLNameFanSpeedAvailable]; +} + +- (nullable NSNumber<SDLBool> *)fanSpeedAvailable { + return [store sdl_objectForName:SDLNameFanSpeedAvailable]; +} + +- (void)setDesiredTemperatureAvailable:(nullable NSNumber<SDLBool> *)desiredTemperatureAvailable { + [store sdl_setObject:desiredTemperatureAvailable forName:SDLNameDesiredTemperatureAvailable]; +} + +- (nullable NSNumber<SDLBool> *)desiredTemperatureAvailable { + return [store sdl_objectForName:SDLNameDesiredTemperatureAvailable]; +} + +- (void)setAcEnableAvailable:(nullable NSNumber<SDLBool> *)acEnableAvailable { + [store sdl_setObject:acEnableAvailable forName:SDLNameACEnableAvailable]; +} + +- (nullable NSNumber<SDLBool> *)acEnableAvailable { + return [store sdl_objectForName:SDLNameACEnableAvailable]; +} + +- (void)setAcMaxEnableAvailable:(nullable NSNumber<SDLBool> *)acMaxEnableAvailable { + [store sdl_setObject:acMaxEnableAvailable forName:SDLNameACMaxEnableAvailable]; +} + +- (nullable NSNumber<SDLBool> *)acMaxEnableAvailable { + return [store sdl_objectForName:SDLNameACMaxEnableAvailable]; +} + +- (void)setCirculateAirEnableAvailable:(nullable NSNumber<SDLBool> *)circulateAirEnableAvailable { + [store sdl_setObject:circulateAirEnableAvailable forName:SDLNameCirculateAirEnableAvailable]; +} + +- (nullable NSNumber<SDLBool> *)circulateAirEnableAvailable { + return [store sdl_objectForName:SDLNameCirculateAirEnableAvailable]; +} + +- (void)setAutoModeEnableAvailable:(nullable NSNumber<SDLBool> *)autoModeEnableAvailable { + [store sdl_setObject:autoModeEnableAvailable forName:SDLNameAutoModeEnableAvailable]; +} + +- (nullable NSNumber<SDLBool> *)autoModeEnableAvailable { + return [store sdl_objectForName:SDLNameAutoModeEnableAvailable]; +} + +- (void)setDualModeEnableAvailable:(nullable NSNumber<SDLBool> *)dualModeEnableAvailable { + [store sdl_setObject:dualModeEnableAvailable forName:SDLNameDualModeEnableAvailable]; +} + +- (nullable NSNumber<SDLBool> *)dualModeEnableAvailable { + return [store sdl_objectForName:SDLNameDualModeEnableAvailable]; +} + +- (void)setDefrostZoneAvailable:(nullable NSNumber<SDLBool> *)defrostZoneAvailable { + [store sdl_setObject:defrostZoneAvailable forName:SDLNameDefrostZoneAvailable]; +} + +- (nullable NSNumber<SDLBool> *)defrostZoneAvailable { + return [store sdl_objectForName:SDLNameDefrostZoneAvailable]; +} + +- (void)setDefrostZone:(nullable NSArray <SDLDefrostZone>*)defrostZone { + [store sdl_setObject:defrostZone forName:SDLNameDefrostZone]; +} + +- (nullable NSArray<SDLDefrostZone> *)defrostZone { + return [store sdl_objectForName:SDLNameDefrostZone]; +} + +- (void)setVentilationModeAvailable:(nullable NSNumber<SDLBool> *)ventilationModeAvailable { + [store sdl_setObject:ventilationModeAvailable forName:SDLNameVentilationModeAvailable]; +} + +- (nullable NSNumber<SDLBool> *)ventilationModeAvailable { + return [store sdl_objectForName:SDLNameVentilationModeAvailable]; +} + +- (void)setVentilationMode:(nullable NSArray<SDLVentilationMode> *)ventilationMode { + [store sdl_setObject:ventilationMode forName:SDLNameVentilationMode]; +} + +- (nullable NSArray<SDLVentilationMode> *)ventilationMode { + return [store sdl_objectForName:SDLNameVentilationMode]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLClimateControlData.h b/SmartDeviceLink/SDLClimateControlData.h new file mode 100644 index 000000000..722bcd395 --- /dev/null +++ b/SmartDeviceLink/SDLClimateControlData.h @@ -0,0 +1,92 @@ +// +// SDLClimateControlData.h +// + +#import "SDLRPCMessage.h" +#import "SDLDefrostZone.h" +#import "SDLVentilationMode.h" + +NS_ASSUME_NONNULL_BEGIN + +@class SDLTemperature; + + +@interface SDLClimateControlData : SDLRPCStruct + +- (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; + +/** + * @abstract Speed of Fan in integer + * + * Optional, MinValue- 0 MaxValue= 100 + */ +@property (nullable, strong, nonatomic) NSNumber<SDLInt> *fanSpeed; + +/** + * @abstract The Current Temperature in SDLTemperature + * + * @warning This property is readonly and cannot be set on the module. + * + * Optional + */ +@property (nullable, strong, nonatomic) SDLTemperature *currentTemperature; + +/** + * @abstract Desired Temperature in SDLTemperature + * + * Optional + */ +@property (nullable, strong, nonatomic) SDLTemperature *desiredTemperature; + +/** + * @abstract Represents if AC is enabled. + * + * Optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acEnable; + +/** + * @abstract Represents if circulation of air is enabled. + * + * Optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *circulateAirEnable; + +/** + * @abstract Represents if auto mode is enabled. + * + * Optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *autoModeEnable; + +/** + * @abstract Represents the kind of defrost zone + * + * Optional, SDLDefrostZone + */ +@property (nullable, strong, nonatomic) SDLDefrostZone defrostZone; + +/** + * @abstract Represents if dual mode is enabled. + * + * Optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *dualModeEnable; + +/** + * @abstract Represents if ac max is enabled. + * + * Optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *acMaxEnable; + +/** + * @abstract Represents the kind of Ventilation zone + * + * Optional, SDLVentilationMode + */ +@property (nullable, strong, nonatomic) SDLVentilationMode ventilationMode; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLClimateControlData.m b/SmartDeviceLink/SDLClimateControlData.m new file mode 100644 index 000000000..ddb98c102 --- /dev/null +++ b/SmartDeviceLink/SDLClimateControlData.m @@ -0,0 +1,115 @@ +// +// SDLClimateControlData.m +// + +#import "SDLClimateControlData.h" +#import "SDLNames.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 { + 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; + + return self; +} + +- (void)setFanSpeed:(nullable NSNumber<SDLInt> *)fanSpeed { + [store sdl_setObject:fanSpeed forName:SDLNameFanSpeed]; +} + +- (nullable NSNumber<SDLInt> *)fanSpeed { + return [store sdl_objectForName:SDLNameFanSpeed]; +} + +- (void)setCurrentTemperature:(nullable SDLTemperature *)currentTemperature { + [store sdl_setObject:currentTemperature forName:SDLNameCurrentTemperature]; +} + +- (nullable SDLTemperature *)currentTemperature { + return [store sdl_objectForName:SDLNameCurrentTemperature ofClass:SDLTemperature.class]; +} + +- (void)setDesiredTemperature:(nullable SDLTemperature *)desiredTemperature { + [store sdl_setObject:desiredTemperature forName:SDLNameDesiredTemperature]; +} + +- (nullable SDLTemperature *)desiredTemperature { + return [store sdl_objectForName:SDLNameDesiredTemperature ofClass:SDLTemperature.class]; +} + +- (void)setAcEnable:(nullable NSNumber<SDLBool> *)acEnable { + [store sdl_setObject:acEnable forName:SDLNameACEnable]; +} + +- (nullable NSNumber<SDLBool> *)acEnable { + return [store sdl_objectForName:SDLNameACEnable]; +} + +- (void)setCirculateAirEnable:(nullable NSNumber<SDLBool> *)circulateAirEnable { + [store sdl_setObject:circulateAirEnable forName:SDLNameCirculateAirEnable]; +} + +- (nullable NSNumber<SDLBool> *)circulateAirEnable { + return [store sdl_objectForName:SDLNameCirculateAirEnable]; +} + +- (void)setAutoModeEnable:(nullable NSNumber<SDLBool> *)autoModeEnable { + [store sdl_setObject:autoModeEnable forName:SDLNameAutoModeEnable]; +} + +- (nullable NSNumber<SDLBool> *)autoModeEnable { + return [store sdl_objectForName:SDLNameAutoModeEnable]; +} + +- (void)setDefrostZone:(nullable SDLDefrostZone)defrostZone { + [store sdl_setObject:defrostZone forName:SDLNameDefrostZone]; +} + +- (nullable SDLDefrostZone)defrostZone { + return [store sdl_objectForName:SDLNameDefrostZone]; +} + +- (void)setDualModeEnable:(nullable NSNumber<SDLBool> *)dualModeEnable { + [store sdl_setObject:dualModeEnable forName:SDLNameDualModeEnable]; +} + +- (nullable NSNumber<SDLBool> *)dualModeEnable { + return [store sdl_objectForName:SDLNameDualModeEnable]; +} + +- (void)setAcMaxEnable:(nullable NSNumber<SDLBool> *)acMaxEnable { + [store sdl_setObject:acMaxEnable forName:SDLNameACMaxEnable]; +} + +- (nullable NSNumber<SDLBool> *)acMaxEnable { + return [store sdl_objectForName:SDLNameACMaxEnable]; +} + +- (void)setVentilationMode:(nullable SDLVentilationMode)ventilationMode { + [store sdl_setObject:ventilationMode forName:SDLNameVentilationMode]; +} + +- (nullable SDLVentilationMode)ventilationMode { + return [store sdl_objectForName:SDLNameVentilationMode]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLConfiguration.h b/SmartDeviceLink/SDLConfiguration.h index 52706376b..c5a758b59 100644 --- a/SmartDeviceLink/SDLConfiguration.h +++ b/SmartDeviceLink/SDLConfiguration.h @@ -38,42 +38,6 @@ NS_ASSUME_NONNULL_BEGIN @property (copy, nonatomic, readonly) SDLStreamingMediaConfiguration *streamingMediaConfig; /** - Create a new configuration to be passed into SDLManager with a custom lifecycle, lock screen, and a default logging configuration. - - @param lifecycleConfiguration The lifecycle configuration to be used. - @return The configuration - */ -- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfiguration __deprecated_msg(("Use initWithLifecycle:lockScreen:logging: instead")); - -/** - Create a new configuration to be passed into SDLManager with a custom lifecycle, lock screen, and a default logging configuration. - - @param lifecycleConfiguration The lifecycle configuration to be used. - @return The configuration - */ -+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfiguration __deprecated_msg(("Use configurationWithLifecycle:lockScreen:logging: instead")); - -/** - * Create a new configuration to be passed into SDLManager with a custom lifecycle, lock screen, and a default logging configuration. - * - * @param lifecycleConfig The lifecycle configuration to be used. - * @param lockScreenConfig The lockscreen configuration to be used, or `enabledConfiguration` if nil. - * - * @return The configuration - */ -- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig __deprecated_msg(("Use initWithLifecycle:lockScreen:logging: instead")); - -/** - * Create a new configuration to be passed into SDLManager with a custom lifecycle, lock screen, and a default logging configuration. - * - * @param lifecycleConfig The lifecycle configuration to be used. - * @param lockScreenConfig The lockscreen configuration to be used, or `enabledConfiguration` if nil. - * - * @return The configuration - */ -+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig __deprecated_msg(("Use configurationWithLifecycle:lockScreen:logging: instead")); - -/** Create a new configuration to be passed into SDLManager with a custom lifecycle, lock screen, and logging configuration. @param lifecycleConfig The lifecycle configuration to be used. diff --git a/SmartDeviceLink/SDLConfiguration.m b/SmartDeviceLink/SDLConfiguration.m index ebb7477d9..bff1e8aad 100644 --- a/SmartDeviceLink/SDLConfiguration.m +++ b/SmartDeviceLink/SDLConfiguration.m @@ -59,12 +59,15 @@ NS_ASSUME_NONNULL_BEGIN _lifecycleConfig = lifecycleConfig; _lockScreenConfig = lockScreenConfig ?: [SDLLockScreenConfiguration enabledConfiguration]; _loggingConfig = logConfig ?: [SDLLogConfiguration defaultConfiguration]; + _streamingMediaConfig = streamingMediaConfig; if (_streamingMediaConfig != nil) { - NSAssert(!([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection]), @"You should only set a streaming media configuration if your app is a NAVIGATION or PROJECTION HMI type"); + // If we have a streaming config, the apptype MUST be navigation or projection + NSAssert(([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection]), @"You should only set a streaming media configuration if your app is a NAVIGATION or PROJECTION HMI type"); _streamingMediaConfig = streamingMediaConfig; } else { - NSAssert(([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection]), @"If your app is a NAVIGATION or PROJECTION HMI type, you must set a streaming media configuration on SDLConfiguration"); + // If we don't have a streaming config, we MUST NOT be navigation or projection + NSAssert(!([_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeNavigation] || [_lifecycleConfig.appType isEqualToEnum:SDLAppHMITypeProjection]), @"If your app is a NAVIGATION or PROJECTION HMI type, you must set a streaming media configuration on SDLConfiguration"); } return self; diff --git a/SmartDeviceLink/SDLDefrostZone.h b/SmartDeviceLink/SDLDefrostZone.h new file mode 100644 index 000000000..3563b58f3 --- /dev/null +++ b/SmartDeviceLink/SDLDefrostZone.h @@ -0,0 +1,32 @@ +// +// SDLDefrostZone.h +// + +#import "SDLEnum.h" + +/** + * Enumeration listing possible defrost zones. + * + * @since SDL 2.0 + */ +typedef SDLEnum SDLDefrostZone SDL_SWIFT_ENUM; + +/** + * @abstract A SDLDefrostZone with the value of *FRONT* + */ +extern SDLDefrostZone const SDLDefrostZoneFront; + +/** + * @abstract A SDLDefrostZone with the value of *REAR* + */ +extern SDLDefrostZone const SDLDefrostZoneRear; + +/** + * @abstract A SDLDefrostZone with the value of *All* + */ +extern SDLDefrostZone const SDLDefrostZoneAll; + +/** + * @abstract A SDLDefrostZone with the value of *None* + */ +extern SDLDefrostZone const SDLDefrostZoneNone; diff --git a/SmartDeviceLink/SDLDefrostZone.m b/SmartDeviceLink/SDLDefrostZone.m new file mode 100644 index 000000000..f4f2862f2 --- /dev/null +++ b/SmartDeviceLink/SDLDefrostZone.m @@ -0,0 +1,10 @@ +// +// SDLDefrostZone.m +// + +#import "SDLDefrostZone.h" + +SDLDefrostZone const SDLDefrostZoneFront = @"FRONT"; +SDLDefrostZone const SDLDefrostZoneRear = @"REAR"; +SDLDefrostZone const SDLDefrostZoneAll = @"ALL"; +SDLDefrostZone const SDLDefrostZoneNone = @"NONE"; diff --git a/SmartDeviceLink/SDLFunctionID.m b/SmartDeviceLink/SDLFunctionID.m index c18cdc2cb..14742e907 100644 --- a/SmartDeviceLink/SDLFunctionID.m +++ b/SmartDeviceLink/SDLFunctionID.m @@ -71,6 +71,9 @@ NS_ASSUME_NONNULL_BEGIN @38: SDLNameSystemRequest, @39: SDLNameSendLocation, @40: SDLNameDialNumber, + @41: SDLNameButtonPress, + @43: SDLNameGetInteriorVehicleData, + @44: SDLNameSetInteriorVehicleData, @45: SDLNameGetWayPoints, @46: SDLNameSubscribeWayPoints, @47: SDLNameUnsubscribeWayPoints, @@ -91,13 +94,13 @@ NS_ASSUME_NONNULL_BEGIN @32780: SDLNameOnTouchEvent, @32781: SDLNameOnSystemRequest, @32782: SDLNameOnHashChange, + @32783: SDLNameOnInteriorVehicleData, @32784: SDLNameOnWayPointChange, @65536: SDLNameEncodedSyncPData, @65537: SDLNameSyncPData, @98304: SDLNameOnEncodedSyncPData, @98305: SDLNameOnSyncPData }; - return self; } @@ -105,12 +108,10 @@ NS_ASSUME_NONNULL_BEGIN return self.functionIds[@(functionID)]; } - - (nullable NSNumber<SDLInt> *)functionIdForName:(SDLName)functionName { return [[self.functionIds allKeysForObject:functionName] firstObject]; } - @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLGetInteriorVehicleData.h b/SmartDeviceLink/SDLGetInteriorVehicleData.h new file mode 100644 index 000000000..01d208f71 --- /dev/null +++ b/SmartDeviceLink/SDLGetInteriorVehicleData.h @@ -0,0 +1,42 @@ +// +// SDLGetInteriorVehicleData.h +// + +#import "SDLRPCRequest.h" +#import "SDLModuleType.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 + +- (instancetype)initWithModuleType:(SDLModuleType)moduleType; + +- (instancetype)initAndSubscribeToModuleType:(SDLModuleType)moduleType; + +- (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType; + +/** + * The type of a RC module to retrieve module data from the vehicle. + * + */ +@property (strong, nonatomic) SDLModuleType moduleType; + +/** + * If subscribe is true, the head unit will register onInteriorVehicleData notifications for the requested moduelType. + * If subscribe is false, the head unit will unregister onInteriorVehicleData notifications for the requested moduelType. + * + * 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 new file mode 100755 index 000000000..efdf2c3b4 --- /dev/null +++ b/SmartDeviceLink/SDLGetInteriorVehicleData.m @@ -0,0 +1,72 @@ +// +// SDLGetInteriorVehicleData.m +// + +#import "SDLGetInteriorVehicleData.h" +#import "SDLNames.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLGetInteriorVehicleData + +- (instancetype)init { + if (self = [super initWithName:SDLNameGetInteriorVehicleData]) { + } + 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 { + [parameters sdl_setObject:moduleType forName:SDLNameModuleType]; +} + +- (SDLModuleType)moduleType { + return [parameters sdl_objectForName:SDLNameModuleType]; +} + +- (void)setSubscribe:(nullable NSNumber<SDLBool> *)subscribe { + [parameters sdl_setObject:subscribe forName:SDLNameSubscribe]; +} + +- (nullable NSNumber<SDLBool> *)subscribe { + return [parameters sdl_objectForName:SDLNameSubscribe]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h b/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h new file mode 100644 index 000000000..6a5de3e73 --- /dev/null +++ b/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.h @@ -0,0 +1,25 @@ +// +// SDLGetInteriorVehicleDataResponse.h +// + +#import "SDLRPCResponse.h" +@class SDLModuleData; + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLGetInteriorVehicleDataResponse : SDLRPCResponse + +@property (strong, nonatomic) SDLModuleData *moduleData; + +/** + * @abstract It is a conditional-mandatory parameter: must be returned in case "subscribe" parameter was present in the related request. + * if "true" - the "moduleType" from request is successfully subscribed and the head unit will send onInteriorVehicleData notifications for the moduleType. + * if "false" - the "moduleType" from request is either unsubscribed or failed to subscribe. + * + * Optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *isSubscribed; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m b/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m new file mode 100644 index 000000000..43491be57 --- /dev/null +++ b/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m @@ -0,0 +1,40 @@ +// +// SDLGetInteriorVehicleDataResponse.m +// + +#import "SDLGetInteriorVehicleDataResponse.h" +#import "SDLModuleData.h" +#import "SDLNames.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + + +@implementation SDLGetInteriorVehicleDataResponse + +- (instancetype)init { + if (self = [super initWithName:SDLNameGetInteriorVehicleData]) { + } + return self; +} + +- (void)setModuleData:(SDLModuleData *)moduleData { + [parameters sdl_setObject:moduleData forName:SDLNameModuleData]; +} + +- (SDLModuleData *)moduleData { + return [parameters sdl_objectForName:SDLNameModuleData ofClass:SDLModuleData.class]; +} + +- (void)setIsSubscribed:(nullable NSNumber<SDLBool> *)isSubscribed { + [parameters sdl_setObject:isSubscribed forName:SDLNameIsSubscribed]; +} + +- (nullable NSNumber<SDLBool> *)isSubscribed { + return [parameters sdl_objectForName:SDLNameIsSubscribed]; +} + +@end + +NS_ASSUME_NONNULL_END + diff --git a/SmartDeviceLink/SDLH264VideoEncoder.m b/SmartDeviceLink/SDLH264VideoEncoder.m index 26bb813a7..7929c3b11 100644 --- a/SmartDeviceLink/SDLH264VideoEncoder.m +++ b/SmartDeviceLink/SDLH264VideoEncoder.m @@ -38,7 +38,8 @@ static NSDictionary<NSString *, id>* _defaultVideoEncoderSettings; _defaultVideoEncoderSettings = @{ (__bridge NSString *)kVTCompressionPropertyKey_ProfileLevel: (__bridge NSString *)kVTProfileLevel_H264_Baseline_AutoLevel, - (__bridge NSString *)kVTCompressionPropertyKey_RealTime: @YES + (__bridge NSString *)kVTCompressionPropertyKey_RealTime: @YES, + (__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate: @30, }; } @@ -138,7 +139,12 @@ static NSDictionary<NSString *, id>* _defaultVideoEncoderSettings; - (BOOL)encodeFrame:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp { if (!CMTIME_IS_VALID(presentationTimestamp)) { - presentationTimestamp = CMTimeMake(self.currentFrameNumber, 30); + int32_t timeRate = 30; + if (self.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate] != nil) { + timeRate = ((NSNumber *)self.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate]).intValue; + } + + presentationTimestamp = CMTimeMake(self.currentFrameNumber, timeRate); } self.currentFrameNumber++; diff --git a/SmartDeviceLink/SDLModuleData.h b/SmartDeviceLink/SDLModuleData.h new file mode 100644 index 000000000..b777a780c --- /dev/null +++ b/SmartDeviceLink/SDLModuleData.h @@ -0,0 +1,31 @@ +// +// SDLModuleData.h +// + +#import "SDLRPCMessage.h" +#import "SDLModuleType.h" + +@class SDLRadioControlData; +@class SDLClimateControlData; + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLModuleData : SDLRPCStruct + +- (instancetype)initWithRadioControlData:(SDLRadioControlData *)radioControlData; +- (instancetype)initWithClimateControlData:(SDLClimateControlData *)climateControlData; + +/** + * The moduleType indicates which type of data should be changed + * and identifies which data object exists in this struct. + * For example, if the moduleType is CLIMATE then a "climateControlData" should exist + */ +@property (strong, nonatomic) SDLModuleType moduleType; + +@property (nullable, strong, nonatomic) SDLRadioControlData *radioControlData; + +@property (nullable, strong, nonatomic) SDLClimateControlData *climateControlData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLModuleData.m b/SmartDeviceLink/SDLModuleData.m new file mode 100644 index 000000000..3d3789639 --- /dev/null +++ b/SmartDeviceLink/SDLModuleData.m @@ -0,0 +1,65 @@ +// +// SDLModuleData.m +// + +#import "SDLModuleData.h" +#import "SDLNames.h" +#import "SDLClimateControlData.h" +#import "SDLRadioControlData.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLModuleData + +- (instancetype)initWithRadioControlData:(SDLRadioControlData *)radioControlData { + self = [self init]; + if(!self){ + return nil; + } + + self.moduleType = SDLModuleTypeRadio; + self.radioControlData = radioControlData; + + return self; +} + +- (instancetype)initWithClimateControlData:(SDLClimateControlData *)climateControlData { + self = [self init]; + if(!self){ + return nil; + } + + self.moduleType = SDLModuleTypeClimate; + self.climateControlData = climateControlData; + + return self; +} + +- (void)setModuleType:(SDLModuleType)moduleType { + [store sdl_setObject:moduleType forName:SDLNameModuleType]; +} + +- (SDLModuleType)moduleType { + return [store sdl_objectForName:SDLNameModuleType]; +} + +- (void)setRadioControlData:(nullable SDLRadioControlData *)radioControlData { + [store sdl_setObject:radioControlData forName:SDLNameRadioControlData]; +} + +- (nullable SDLRadioControlData *)radioControlData { + return [store sdl_objectForName:SDLNameRadioControlData ofClass:SDLRadioControlData.class]; +} + +- (void)setClimateControlData:(nullable SDLClimateControlData *)climateControlData { + [store sdl_setObject:climateControlData forName:SDLNameClimateControlData]; +} + +- (nullable SDLClimateControlData *)climateControlData { + return [store sdl_objectForName:SDLNameClimateControlData ofClass:SDLClimateControlData.class]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLModuleType.h b/SmartDeviceLink/SDLModuleType.h new file mode 100644 index 000000000..4d52f08fd --- /dev/null +++ b/SmartDeviceLink/SDLModuleType.h @@ -0,0 +1,17 @@ +// +// SDLModuleType.h +// + +#import "SDLEnum.h" + +typedef SDLEnum SDLModuleType SDL_SWIFT_ENUM; + +/** + * @abstract A SDLModuleType with the value of *CLIMATE* + */ +extern SDLModuleType const SDLModuleTypeClimate; + +/** + * @abstract A SDLModuleType with the value of *RADIO* + */ +extern SDLModuleType const SDLModuleTypeRadio; diff --git a/SmartDeviceLink/SDLModuleType.m b/SmartDeviceLink/SDLModuleType.m new file mode 100644 index 000000000..30744e0c2 --- /dev/null +++ b/SmartDeviceLink/SDLModuleType.m @@ -0,0 +1,8 @@ +// +// SDLModuleType.m +// + +#import "SDLModuleType.h" + +SDLModuleType const SDLModuleTypeClimate = @"CLIMATE"; +SDLModuleType const SDLModuleTypeRadio = @"RADIO"; diff --git a/SmartDeviceLink/SDLMyKey.h b/SmartDeviceLink/SDLMyKey.h index 1100d4990..aa395f923 100644 --- a/SmartDeviceLink/SDLMyKey.h +++ b/SmartDeviceLink/SDLMyKey.h @@ -2,7 +2,6 @@ // #import "SDLRPCMessage.h" - #import "SDLVehicleDataStatus.h" NS_ASSUME_NONNULL_BEGIN diff --git a/SmartDeviceLink/SDLNames.h b/SmartDeviceLink/SDLNames.h index 2368cac31..a1790afa0 100644 --- a/SmartDeviceLink/SDLNames.h +++ b/SmartDeviceLink/SDLNames.h @@ -8,6 +8,10 @@ NS_ASSUME_NONNULL_BEGIN typedef NSString* SDLName SDL_SWIFT_ENUM; +extern SDLName const SDLNameACEnable; +extern SDLName const SDLNameACEnableAvailable; +extern SDLName const SDLNameACMaxEnable; +extern SDLName const SDLNameACMaxEnableAvailable; extern SDLName const SDLNameAccelerationPedalPosition; extern SDLName const SDLNameActual; extern SDLName const SDLNameAddCommand; @@ -39,7 +43,12 @@ extern SDLName const SDLNameAudioPassThruDisplayText2; extern SDLName const SDLNameAudioStreamingState; extern SDLName const SDLNameAudioType; extern SDLName const SDLNameAutoCompleteText; +extern SDLName const SDLNameAutoModeEnable; +extern SDLName const SDLNameAutoModeEnableAvailable; extern SDLName const SDLNameAuxECallNotificationStatus; +extern SDLName const SDLNameAvailableHDs; +extern SDLName const SDLNameAvailableHDsAvailable; +extern SDLName const SDLNameBand; extern SDLName const SDLNameBatteryLevelStatus; extern SDLName const SDLNameBeltStatus; extern SDLName const SDLNameBitsPerSample; @@ -49,6 +58,7 @@ extern SDLName const SDLNameBulkData; extern SDLName const SDLNameButtonCapabilities; extern SDLName const SDLNameButtonEventMode; extern SDLName const SDLNameButtonName; +extern SDLName const SDLNameButtonPress; extern SDLName const SDLNameButtonPressMode; extern SDLName const SDLNameCoordinate; extern SDLName const SDLNameCallActive; @@ -58,6 +68,10 @@ extern SDLName const SDLNameChangeRegistration; extern SDLName const SDLNameCharacterSet; extern SDLName const SDLNameChoiceId; extern SDLName const SDLNameChoiceSet; +extern SDLName const SDLNameCirculateAirEnable; +extern SDLName const SDLNameCirculateAirEnableAvailable; +extern SDLName const SDLNameClimateControlData; +extern SDLName const SDLNameClimateControlCapabilities; extern SDLName const SDLNameClusterModes; extern SDLName const SDLNameClusterModeStatus; extern SDLName const SDLNameCommandIcon; @@ -67,17 +81,23 @@ extern SDLName const SDLNameCorrelationId; extern SDLName const SDLNameCountryCode; extern SDLName const SDLNameCountryName; extern SDLName const SDLNameCreateInteractionChoiceSet; +extern SDLName const SDLNameClockText; +extern SDLName const SDLNameCurrentTemperature; extern SDLName const SDLNameCustomButtonId; extern SDLName const SDLNameCustomPresets; extern SDLName const SDLNameData; extern SDLName const SDLNameDataResult; extern SDLName const SDLNameDataType; extern SDLName const SDLNameDay; +extern SDLName const SDLNameDefrostZone; +extern SDLName const SDLNameDefrostZoneAvailable; extern SDLName const SDLNameDeleteCommand; extern SDLName const SDLNameDeleteFile; extern SDLName const SDLNameDeleteInteractionChoiceSet; extern SDLName const SDLNameDeleteSubMenu; extern SDLName const SDLNameDeliveryMode; +extern SDLName const SDLNameDesiredTemperature; +extern SDLName const SDLNameDesiredTemperatureAvailable; extern SDLName const SDLNameDeviceInfo; extern SDLName const SDLNameDeviceStatus; extern SDLName const SDLNameDiagnosticMessage; @@ -104,6 +124,8 @@ extern SDLName const SDLNameDriverKneeAirbagDeployed; extern SDLName const SDLNameDriverSideAirbagDeployed; extern SDLName const SDLNameDTC; extern SDLName const SDLNameDTCMask; +extern SDLName const SDLNameDualModeEnable; +extern SDLName const SDLNameDualModeEnableAvailable; extern SDLName const SDLNameDuration; extern SDLName const SDLNameE911Override; extern SDLName const SDLNameECallConfirmationStatus; @@ -121,16 +143,21 @@ extern SDLName const SDLNameEngineTorque; extern SDLName const SDLNameETA; extern SDLName const SDLNameEvent; extern SDLName const SDLNameExternalTemperature; +extern SDLName const SDLNameFanSpeed; +extern SDLName const SDLNameFanSpeedAvailable; extern SDLName const SDLNameFilename; extern SDLName const SDLNameFilenames; extern SDLName const SDLNameFileType; extern SDLName const SDLNameFirmwareRevision; +extern SDLName const SDLNameFrequencyInteger; +extern SDLName const SDLNameFrequencyFraction; extern SDLName const SDLNameFuelCutoffStatus; extern SDLName const SDLNameFuelLevel; extern SDLName const SDLNameFuelLevelState; extern SDLName const SDLNameFuelMaintenanceMode; extern SDLName const SDLNameGenericResponse; extern SDLName const SDLNameGetDTCs; +extern SDLName const SDLNameGetInteriorVehicleData; extern SDLName const SDLNameGetSystemCapability; extern SDLName const SDLNameGetVehicleData; extern SDLName const SDLNameGetWayPoints; @@ -143,6 +170,8 @@ extern SDLName const SDLNameHapticSpatialDataSupported; extern SDLName const SDLNameHardware; extern SDLName const SDLNameHashId; extern SDLName const SDLNameHDOP; +extern SDLName const SDLNameHDChannel; +extern SDLName const SDLNameHDChannelAvailable; extern SDLName const SDLNameHeading; extern SDLName const SDLNameHeadLampStatus; extern SDLName const SDLNameHeight; @@ -177,6 +206,7 @@ extern SDLName const SDLNameInteractionLayout; extern SDLName const SDLNameInteractionMode; extern SDLName const SDLNameIsHighlighted; extern SDLName const SDLNameIsMediaApplication; +extern SDLName const SDLNameIsSubscribed; extern SDLName const SDLNameKeyboardLayout; extern SDLName const SDLNameKeyboardProperties; extern SDLName const SDLNameKeypressMode; @@ -238,6 +268,9 @@ extern SDLName const SDLNameMinorVersion; extern SDLName const SDLNameMinute; extern SDLName const SDLNameMinutes; extern SDLName const SDLNameModel; +extern SDLName const SDLNameModuleData; +extern SDLName const SDLNameModuleName; +extern SDLName const SDLNameModuleType; extern SDLName const SDLNameModelYear; extern SDLName const SDLNameMonoAudioOutputMuted; extern SDLName const SDLNameMonth; @@ -268,6 +301,7 @@ extern SDLName const SDLNameOnDriverDistraction; extern SDLName const SDLNameOnEncodedSyncPData; extern SDLName const SDLNameOnHashChange; extern SDLName const SDLNameOnHMIStatus; +extern SDLName const SDLNameOnInteriorVehicleData; extern SDLName const SDLNameOnKeyboardInput; extern SDLName const SDLNameOnLanguageChange; extern SDLName const SDLNameOnLockScreenStatus; @@ -305,6 +339,7 @@ extern SDLName const SDLNamePhoneCall; extern SDLName const SDLNamePhoneCapability; extern SDLName const SDLNamePhoneNumber; extern SDLName const SDLNamePhoneRoaming; +extern SDLName const SDLNameProgramIdentification; extern SDLName const SDLNamePlayTone; extern SDLName const SDLNamePosition; extern SDLName const SDLNamePostalCode; @@ -321,13 +356,25 @@ extern SDLName const SDLNamePrimaryAudioSource; extern SDLName const SDLNamePRNDL; extern SDLName const SDLNameProgressIndicator; extern SDLName const SDLNameProperties; +extern SDLName const SDLNameProgramService; +extern SDLName const SDLNameProgramType; extern SDLName const SDLNamePutFile; +extern SDLName const SDLNameRadioBandAvailable; +extern SDLName const SDLNameRadioControlCapabilities; +extern SDLName const SDLNameRadioControlData; +extern SDLName const SDLNameRadioEnable; +extern SDLName const SDLNameRadioEnableAvailable; +extern SDLName const SDLNameRadioFrequencyAvailable; +extern SDLName const SDLNameRDSData; +extern SDLName const SDLNameRDSDataAvailable; extern SDLName const SDLNameReadDID; extern SDLName const SDLNameRearLeftDoorAjar; extern SDLName const SDLNameRearRightDoorAjar; extern SDLName const SDLNameReason; extern SDLName const SDLNameRect; +extern SDLName const SDLNameRegion; extern SDLName const SDLNameRegisterAppInterface; +extern SDLName const SDLNameRemoteControlCapability; extern SDLName const SDLNameRequest; extern SDLName const SDLNameRequestType; extern SDLName const SDLNameReserved; @@ -347,6 +394,7 @@ extern SDLName const SDLNameRolloverEvent; extern SDLName const SDLNameRows; extern SDLName const SDLNameRPCName; extern SDLName const SDLNameRPM; +extern SDLName const SDLNameRadioText; extern SDLName const SDLNameSamplingRate; extern SDLName const SDLNameSatellites; extern SDLName const SDLNameScreenParams; @@ -366,12 +414,17 @@ extern SDLName const SDLNameSendLocationEnabled; extern SDLName const SDLNameSetAppIcon; extern SDLName const SDLNameSetDisplayLayout; extern SDLName const SDLNameSetGlobalProperties; +extern SDLName const SDLNameSetInteriorVehicleData; extern SDLName const SDLNameSetMediaClockTimer; extern SDLName const SDLNameShortPress; extern SDLName const SDLNameShortPressAvailable; extern SDLName const SDLNameShow; extern SDLName const SDLNameShowConstantTBT; extern SDLName const SDLNameSignalLevelStatus; +extern SDLName const SDLNameSignalChangeThreshold; +extern SDLName const SDLNameSignalChangeThresholdAvailable; +extern SDLName const SDLNameSignalStrength; +extern SDLName const SDLNameSignalStrengthAvailable; extern SDLName const SDLNameSlider; extern SDLName const SDLNameSliderFooter; extern SDLName const SDLNameSliderHeader; @@ -385,6 +438,7 @@ extern SDLName const SDLNameSpeechCapabilities; extern SDLName const SDLNameSpeed; extern SDLName const SDLNameStartTime; extern SDLName const SDLNameState; +extern SDLName const SDLNameStateAvailable; extern SDLName const SDLNameStateOfCharge; extern SDLName const SDLNameStatus; extern SDLName const SDLNameStatusBar; @@ -410,6 +464,7 @@ extern SDLName const SDLNameSystemContext; extern SDLName const SDLNameSystemFile; extern SDLName const SDLNameSystemRequest; extern SDLName const SDLNameSystemSoftwareVersion; +extern SDLName const SDLNameTrafficAnnouncementIdentification; extern SDLName const SDLNameTargetId; extern SDLName const SDLNameTemplatesAvailable; extern SDLName const SDLNameTertiaryText; @@ -426,6 +481,7 @@ extern SDLName const SDLNameTimezoneMinuteOffset; extern SDLName const SDLNameTirePressure; extern SDLName const SDLNameTotalDistance; extern SDLName const SDLNameTouchEventAvailable; +extern SDLName const SDLNameTrafficProgramIdentification; extern SDLName const SDLNameTriggerSource; extern SDLName const SDLNameTrim; extern SDLName const SDLNameTryAgainTime; @@ -435,6 +491,7 @@ extern SDLName const SDLNameTTSName; extern SDLName const SDLNameTurnIcon; extern SDLName const SDLNameTurnList; extern SDLName const SDLNameType; +extern SDLName const SDLNameUnit; extern SDLName const SDLNameUnregisterAppInterface; extern SDLName const SDLNameUnsubscribe; extern SDLName const SDLNameUnsubscribeButton; @@ -460,6 +517,8 @@ extern SDLName const SDLNameVideoCodec; extern SDLName const SDLNameVideoProtocol; extern SDLName const SDLNameVideoStreaming; extern SDLName const SDLNameVideoStreamingCapability; +extern SDLName const SDLNameVentilationMode; +extern SDLName const SDLNameVentilationModeAvailable; extern SDLName const SDLNameVIN; extern SDLName const SDLNameVoiceRecognitionOn; extern SDLName const SDLNameVRCapabilities; diff --git a/SmartDeviceLink/SDLNames.m b/SmartDeviceLink/SDLNames.m index 5b3e6cf90..a3cd5c758 100644 --- a/SmartDeviceLink/SDLNames.m +++ b/SmartDeviceLink/SDLNames.m @@ -6,6 +6,10 @@ NS_ASSUME_NONNULL_BEGIN +SDLName const SDLNameACEnable = @"acEnable"; +SDLName const SDLNameACEnableAvailable = @"acEnableAvailable"; +SDLName const SDLNameACMaxEnable = @"acMaxEnable"; +SDLName const SDLNameACMaxEnableAvailable = @"acMaxEnableAvailable"; SDLName const SDLNameAccelerationPedalPosition = @"accPedalPosition"; SDLName const SDLNameActual = @"actual"; SDLName const SDLNameAddCommand = @"AddCommand"; @@ -37,7 +41,12 @@ SDLName const SDLNameAudioPassThruDisplayText2 = @"audioPassThruDisplayText2"; SDLName const SDLNameAudioStreamingState = @"audioStreamingState"; SDLName const SDLNameAudioType = @"audioType"; SDLName const SDLNameAutoCompleteText = @"autoCompleteText"; +SDLName const SDLNameAutoModeEnable = @"autoModeEnable"; +SDLName const SDLNameAutoModeEnableAvailable = @"autoModeEnableAvailable"; SDLName const SDLNameAuxECallNotificationStatus = @"auxECallNotificationStatus"; +SDLName const SDLNameAvailableHDs = @"availableHDs"; +SDLName const SDLNameAvailableHDsAvailable = @"availableHDsAvailable"; +SDLName const SDLNameBand = @"band"; SDLName const SDLNameBatteryLevelStatus = @"battLevelStatus"; SDLName const SDLNameBeltStatus = @"beltStatus"; SDLName const SDLNameBitsPerSample = @"bitsPerSample"; @@ -47,6 +56,7 @@ SDLName const SDLNameBulkData = @"bulkData"; SDLName const SDLNameButtonCapabilities = @"buttonCapabilities"; SDLName const SDLNameButtonEventMode = @"buttonEventMode"; SDLName const SDLNameButtonName = @"buttonName"; +SDLName const SDLNameButtonPress = @"ButtonPress"; SDLName const SDLNameButtonPressMode = @"buttonPressMode"; SDLName const SDLNameCoordinate = @"c"; SDLName const SDLNameCallActive = @"callActive"; @@ -56,6 +66,10 @@ SDLName const SDLNameChangeRegistration = @"ChangeRegistration"; SDLName const SDLNameCharacterSet = @"characterSet"; SDLName const SDLNameChoiceId = @"choiceID"; SDLName const SDLNameChoiceSet = @"choiceSet"; +SDLName const SDLNameCirculateAirEnable = @"circulateAirEnable"; +SDLName const SDLNameCirculateAirEnableAvailable = @"circulateAirEnableAvailable"; +SDLName const SDLNameClimateControlData = @"climateControlData"; +SDLName const SDLNameClimateControlCapabilities = @"climateControlCapabilities"; SDLName const SDLNameClusterModes = @"clusterModes"; SDLName const SDLNameClusterModeStatus = @"clusterModeStatus"; SDLName const SDLNameCommandIcon = @"cmdIcon"; @@ -65,17 +79,23 @@ SDLName const SDLNameCorrelationId = @"correlationID"; SDLName const SDLNameCountryCode = @"countryCode"; SDLName const SDLNameCountryName = @"countryName"; SDLName const SDLNameCreateInteractionChoiceSet = @"CreateInteractionChoiceSet"; +SDLName const SDLNameClockText = @"CT"; +SDLName const SDLNameCurrentTemperature = @"currentTemperature"; SDLName const SDLNameCustomButtonId = @"customButtonID"; SDLName const SDLNameCustomPresets = @"customPresets"; SDLName const SDLNameData = @"data"; SDLName const SDLNameDataResult = @"dataResult"; SDLName const SDLNameDataType = @"dataType"; SDLName const SDLNameDay = @"day"; +SDLName const SDLNameDefrostZone = @"defrostZone"; +SDLName const SDLNameDefrostZoneAvailable = @"defrostZoneAvailable"; SDLName const SDLNameDeleteCommand = @"DeleteCommand"; SDLName const SDLNameDeleteFile = @"DeleteFile"; SDLName const SDLNameDeleteInteractionChoiceSet = @"DeleteInteractionChoiceSet"; SDLName const SDLNameDeleteSubMenu = @"DeleteSubMenu"; SDLName const SDLNameDeliveryMode = @"deliveryMode"; +SDLName const SDLNameDesiredTemperature = @"desiredTemperature"; +SDLName const SDLNameDesiredTemperatureAvailable = @"desiredTemperatureAvailable"; SDLName const SDLNameDeviceInfo = @"deviceInfo"; SDLName const SDLNameDeviceStatus = @"deviceStatus"; SDLName const SDLNameDiagnosticMessage = @"DiagnosticMessage"; @@ -101,6 +121,8 @@ SDLName const SDLNameDriverKneeAirbagDeployed = @"driverKneeAirbagDeployed"; SDLName const SDLNameDriverSideAirbagDeployed = @"driverSideAirbagDeployed"; SDLName const SDLNameDTC = @"dtc"; SDLName const SDLNameDTCMask = @"dtcMask"; +SDLName const SDLNameDualModeEnable = @"dualModeEnable"; +SDLName const SDLNameDualModeEnableAvailable = @"dualModeEnableAvailable"; SDLName const SDLNameDuration = @"duration"; SDLName const SDLNameE911Override = @"e911Override"; SDLName const SDLNameECallConfirmationStatus = @"eCallConfirmationStatus"; @@ -118,16 +140,21 @@ SDLName const SDLNameEngineTorque = @"engineTorque"; SDLName const SDLNameETA = @"eta"; SDLName const SDLNameEvent = @"event"; SDLName const SDLNameExternalTemperature = @"externalTemperature"; +SDLName const SDLNameFanSpeed = @"fanSpeed"; +SDLName const SDLNameFanSpeedAvailable = @"fanSpeedAvailable"; SDLName const SDLNameFilename = @"fileName"; SDLName const SDLNameFilenames = @"filenames"; SDLName const SDLNameFileType = @"fileType"; SDLName const SDLNameFirmwareRevision = @"firmwareRev"; +SDLName const SDLNameFrequencyInteger = @"frequencyInteger"; +SDLName const SDLNameFrequencyFraction = @"frequencyFraction"; SDLName const SDLNameFuelCutoffStatus = @"fuelCutoffStatus"; SDLName const SDLNameFuelLevel = @"fuelLevel"; SDLName const SDLNameFuelLevelState = @"fuelLevel_State"; SDLName const SDLNameFuelMaintenanceMode = @"fuelMaintenanceMode"; SDLName const SDLNameGenericResponse = @"GenericResponse"; SDLName const SDLNameGetDTCs = @"GetDTCs"; +SDLName const SDLNameGetInteriorVehicleData = @"GetInteriorVehicleData"; SDLName const SDLNameGetSystemCapability = @"GetSystemCapability"; SDLName const SDLNameGetVehicleData = @"GetVehicleData"; SDLName const SDLNameGetWayPoints = @"GetWayPoints"; @@ -139,6 +166,8 @@ SDLName const SDLNameHapticRectData = @"hapticRectData"; SDLName const SDLNameHapticSpatialDataSupported = @"hapticSpatialDataSupported"; SDLName const SDLNameHardware = @"hardware"; SDLName const SDLNameHashId = @"hashID"; +SDLName const SDLNameHDChannel = @"hdChannel"; +SDLName const SDLNameHDChannelAvailable = @"hdChannelAvailable"; SDLName const SDLNameHDOP = @"hdop"; SDLName const SDLNameHeading = @"heading"; SDLName const SDLNameHeadLampStatus = @"headLampStatus"; @@ -175,6 +204,7 @@ SDLName const SDLNameInteractionLayout = @"interactionLayout"; SDLName const SDLNameInteractionMode = @"interactionMode"; SDLName const SDLNameIsHighlighted = @"isHighlighted"; SDLName const SDLNameIsMediaApplication = @"isMediaApplication"; +SDLName const SDLNameIsSubscribed = @"isSubscribed"; SDLName const SDLNameKeyboardLayout = @"keyboardLayout"; SDLName const SDLNameKeyboardProperties = @"keyboardProperties"; SDLName const SDLNameKeypressMode = @"keypressMode"; @@ -235,6 +265,9 @@ SDLName const SDLNameModel = @"model"; SDLName const SDLNameModelYear = @"modelYear"; SDLName const SDLNameMonoAudioOutputMuted = @"monoAudioOutputMuted"; SDLName const SDLNameMonth = @"month"; +SDLName const SDLNameModuleData = @"moduleData"; +SDLName const SDLNameModuleName = @"moduleName"; +SDLName const SDLNameModuleType = @"moduleType"; SDLName const SDLNameMultipleEvents = @"multipleEvents"; SDLName const SDLNameMultiTouchAvailable = @"multiTouchAvailable"; SDLName const SDLNameMuteAudio = @"muteAudio"; @@ -262,6 +295,7 @@ SDLName const SDLNameOnDriverDistraction = @"OnDriverDistraction"; SDLName const SDLNameOnEncodedSyncPData = @"OnEncodedSyncPData"; SDLName const SDLNameOnHashChange = @"OnHashChange"; SDLName const SDLNameOnHMIStatus = @"OnHMIStatus"; +SDLName const SDLNameOnInteriorVehicleData = @"OnInteriorVehicleData"; SDLName const SDLNameOnKeyboardInput = @"OnKeyboardInput"; SDLName const SDLNameOnLanguageChange = @"OnLanguageChange"; SDLName const SDLNameOnLockScreenStatus = @"OnLockScreenStatus"; @@ -299,6 +333,7 @@ SDLName const SDLNamePhoneCall = @"phoneCall"; SDLName const SDLNamePhoneCapability = @"phoneCapability"; SDLName const SDLNamePhoneNumber = @"phoneNumber"; SDLName const SDLNamePhoneRoaming = @"phoneRoaming"; +SDLName const SDLNameProgramIdentification = @"PI"; SDLName const SDLNamePlayTone = @"playTone"; SDLName const SDLNamePosition = @"position"; SDLName const SDLNamePostalCode = @"postalCode"; @@ -315,17 +350,30 @@ SDLName const SDLNamePrimaryAudioSource = @"primaryAudioSource"; SDLName const SDLNamePRNDL = @"prndl"; SDLName const SDLNameProgressIndicator = @"progressIndicator"; SDLName const SDLNameProperties = @"properties"; +SDLName const SDLNameProgramService = @"PS"; +SDLName const SDLNameProgramType = @"PTY"; SDLName const SDLNamePutFile = @"PutFile"; +SDLName const SDLNameRadioBandAvailable = @"radioBandAvailable"; +SDLName const SDLNameRadioControlCapabilities = @"radioControlCapabilities"; +SDLName const SDLNameRadioFrequencyAvailable = @"radioFrequencyAvailable"; +SDLName const SDLNameRadioControlData = @"radioControlData"; +SDLName const SDLNameRadioEnable = @"radioEnable"; +SDLName const SDLNameRadioEnableAvailable = @"radioEnableAvailable"; +SDLName const SDLNameRDSData = @"rdsData"; +SDLName const SDLNameRDSDataAvailable = @"rdsDataAvailable"; SDLName const SDLNameReadDID = @"ReadDID"; SDLName const SDLNameRearLeftDoorAjar = @"rearLeftDoorAjar"; SDLName const SDLNameRearRightDoorAjar = @"rearRightDoorAjar"; SDLName const SDLNameReason = @"reason"; SDLName const SDLNameRect = @"rect"; +SDLName const SDLNameRegion = @"REG"; SDLName const SDLNameRegisterAppInterface = @"RegisterAppInterface"; +SDLName const SDLNameRemoteControlCapability = @"remoteControlCapability"; SDLName const SDLNameRequest = @"request"; SDLName const SDLNameRequestType = @"requestType"; SDLName const SDLNameReserved = @"reserved"; SDLName const SDLNameResetGlobalProperties = @"ResetGlobalProperties"; +SDLName const SDLNameSetInteriorVehicleData = @"SetInteriorVehicleData"; SDLName const SDLNameResolution = @"resolution"; SDLName const SDLNameResolutionHeight = @"resolutionHeight"; SDLName const SDLNameResolutionWidth = @"resolutionWidth"; @@ -341,6 +389,7 @@ SDLName const SDLNameRolloverEvent = @"rolloverEvent"; SDLName const SDLNameRows = @"rows"; SDLName const SDLNameRPCName = @"rpcName"; SDLName const SDLNameRPM = @"rpm"; +SDLName const SDLNameRadioText = @"RT"; SDLName const SDLNameSamplingRate = @"samplingRate"; SDLName const SDLNameSatellites = @"satellites"; SDLName const SDLNameScreenParams = @"screenParams"; @@ -366,6 +415,10 @@ SDLName const SDLNameShortPressAvailable = @"shortPressAvailable"; SDLName const SDLNameShow = @"Show"; SDLName const SDLNameShowConstantTBT = @"ShowConstantTBT"; SDLName const SDLNameSignalLevelStatus = @"signalLevelStatus"; +SDLName const SDLNameSignalChangeThreshold = @"signalChangeThreshold"; +SDLName const SDLNameSignalChangeThresholdAvailable = @"signalChangeThresholdAvailable"; +SDLName const SDLNameSignalStrength = @"signalStrength"; +SDLName const SDLNameSignalStrengthAvailable = @"signalStrengthAvailable"; SDLName const SDLNameSlider = @"Slider"; SDLName const SDLNameSliderFooter = @"sliderFooter"; SDLName const SDLNameSliderHeader = @"sliderHeader"; @@ -379,6 +432,7 @@ SDLName const SDLNameSpeechCapabilities = @"speechCapabilities"; SDLName const SDLNameSpeed = @"speed"; SDLName const SDLNameStartTime = @"startTime"; SDLName const SDLNameState = @"state"; +SDLName const SDLNameStateAvailable = @"stateAvailable"; SDLName const SDLNameStateOfCharge = @"stateOfCharge"; SDLName const SDLNameStatus = @"status"; SDLName const SDLNameStatusBar = @"statusBar"; @@ -386,7 +440,7 @@ SDLName const SDLNameSteeringWheelAngle = @"steeringWheelAngle"; SDLName const SDLNameStereoAudioOutputMuted = @"stereoAudioOutputMuted"; SDLName const SDLNameSubAdministrativeArea = @"subAdministrativeArea"; SDLName const SDLNameSubLocality = @"subLocality"; -SDLName const SDLNameSubscribe = @"Subscribe"; +SDLName const SDLNameSubscribe = @"subscribe"; SDLName const SDLNameSubscribeButton = @"SubscribeButton"; SDLName const SDLNameSubscribeVehicleData = @"SubscribeVehicleData"; SDLName const SDLNameSubscribeWayPoints = @"SubscribeWayPoints"; @@ -405,6 +459,7 @@ SDLName const SDLNameSystemFile = @"systemFile"; SDLName const SDLNameSystemRequest = @"SystemRequest"; SDLName const SDLNameSystemSoftwareVersion = @"systemSoftwareVersion"; SDLName const SDLNameDialNumber = @"DialNumber"; +SDLName const SDLNameTrafficAnnouncementIdentification = @"TA"; SDLName const SDLNameTargetId = @"targetID"; SDLName const SDLNameTemplatesAvailable = @"templatesAvailable"; SDLName const SDLNameTertiaryText = @"tertiaryText"; @@ -421,6 +476,7 @@ SDLName const SDLNameTimezoneMinuteOffset = @"tz_minute"; SDLName const SDLNameTirePressure = @"tirePressure"; SDLName const SDLNameTotalDistance = @"totalDistance"; SDLName const SDLNameTouchEventAvailable = @"touchEventAvailable"; +SDLName const SDLNameTrafficProgramIdentification = @"TP"; SDLName const SDLNameTriggerSource = @"triggerSource"; SDLName const SDLNameTrim = @"trim"; SDLName const SDLNameTryAgainTime = @"tryAgainTime"; @@ -430,6 +486,7 @@ SDLName const SDLNameTTSName = @"ttsName"; SDLName const SDLNameTurnIcon = @"turnIcon"; SDLName const SDLNameTurnList = @"turnList"; SDLName const SDLNameType = @"type"; +SDLName const SDLNameUnit = @"unit"; SDLName const SDLNameUnregisterAppInterface = @"UnregisterAppInterface"; SDLName const SDLNameUnsubscribe = @"Unsubscribe"; SDLName const SDLNameUnsubscribeButton = @"UnsubscribeButton"; @@ -455,6 +512,8 @@ SDLName const SDLNameVideoCodec = @"videoCodec"; SDLName const SDLNameVideoProtocol = @"videoProtocol"; SDLName const SDLNameVideoStreaming = @"videoStreaming"; SDLName const SDLNameVideoStreamingCapability = @"videoStreamingCapability"; +SDLName const SDLNameVentilationMode = @"ventilationMode"; +SDLName const SDLNameVentilationModeAvailable = @"ventilationModeAvailable"; SDLName const SDLNameVIN = @"vin"; SDLName const SDLNameVoiceRecognitionOn = @"voiceRecOn"; SDLName const SDLNameVRCapabilities = @"vrCapabilities"; diff --git a/SmartDeviceLink/SDLNotificationConstants.h b/SmartDeviceLink/SDLNotificationConstants.h index afb0e7831..b6a6468f0 100644 --- a/SmartDeviceLink/SDLNotificationConstants.h +++ b/SmartDeviceLink/SDLNotificationConstants.h @@ -50,19 +50,19 @@ typedef void (^SDLResponseHandler)(__kindof SDLRPCRequest *__nullable request, _ /** 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); @@ -92,6 +92,7 @@ extern SDLNotificationName const SDLDidReceiveAddCommandResponse; extern SDLNotificationName const SDLDidReceiveAddSubMenuResponse; extern SDLNotificationName const SDLDidReceiveAlertResponse; extern SDLNotificationName const SDLDidReceiveAlertManeuverResponse; +extern SDLNotificationName const SDLDidReceiveButtonPressResponse; extern SDLNotificationName const SDLDidReceiveChangeRegistrationResponse; extern SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse; extern SDLNotificationName const SDLDidReceiveDeleteCommandResponse; @@ -104,6 +105,7 @@ extern SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse; extern SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse; extern SDLNotificationName const SDLDidReceiveGenericResponse; extern SDLNotificationName const SDLDidReceiveGetDTCsResponse; +extern SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataResponse; extern SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse; extern SDLNotificationName const SDLDidReceiveGetVehicleDataResponse; extern SDLNotificationName const SDLDidReceiveGetWaypointsResponse; @@ -120,6 +122,7 @@ extern SDLNotificationName const SDLDidReceiveSendLocationResponse; extern SDLNotificationName const SDLDidReceiveSetAppIconResponse; extern SDLNotificationName const SDLDidReceiveSetDisplayLayoutResponse; extern SDLNotificationName const SDLDidReceiveSetGlobalPropertiesResponse; +extern SDLNotificationName const SDLDidReceiveSetInteriorVehicleDataResponse; extern SDLNotificationName const SDLDidReceiveSetMediaClockTimerResponse; extern SDLNotificationName const SDLDidReceiveShowConstantTBTResponse; extern SDLNotificationName const SDLDidReceiveShowResponse; @@ -147,6 +150,7 @@ extern SDLNotificationName const SDLDidReceiveButtonEventNotification; extern SDLNotificationName const SDLDidReceiveButtonPressNotification; extern SDLNotificationName const SDLDidReceiveCommandNotification; extern SDLNotificationName const SDLDidReceiveEncodedDataNotification; +extern SDLNotificationName const SDLDidReceiveInteriorVehicleDataNotification; extern SDLNotificationName const SDLDidReceiveKeyboardInputNotification; extern SDLNotificationName const SDLDidChangeLanguageNotification; extern SDLNotificationName const SDLDidChangeLockScreenStatusNotification; diff --git a/SmartDeviceLink/SDLNotificationConstants.m b/SmartDeviceLink/SDLNotificationConstants.m index 612e2d054..1cf3776da 100644 --- a/SmartDeviceLink/SDLNotificationConstants.m +++ b/SmartDeviceLink/SDLNotificationConstants.m @@ -25,6 +25,7 @@ SDLNotificationName const SDLDidReceiveAddCommandResponse = @"com.sdl.response.a 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 SDLDidReceiveChangeRegistrationResponse = @"com.sdl.response.changeRegistration"; SDLNotificationName const SDLDidReceiveCreateInteractionChoiceSetResponse = @"com.sdl.response.createInteractionChoiceSet"; SDLNotificationName const SDLDidReceiveDeleteCommandResponse = @"com.sdl.response.deleteCommand"; @@ -37,6 +38,7 @@ SDLNotificationName const SDLDidReceiveEncodedSyncPDataResponse = @"com.sdl.resp SDLNotificationName const SDLDidReceiveEndAudioPassThruResponse = @"com.sdl.response.endAudioPassThru"; SDLNotificationName const SDLDidReceiveGenericResponse = @"com.sdl.response.generic"; SDLNotificationName const SDLDidReceiveGetDTCsResponse = @"com.sdl.response.getDTCs"; +SDLNotificationName const SDLDidReceiveGetInteriorVehicleDataResponse = @"com.sdl.response.getInteriorVehicleData"; SDLNotificationName const SDLDidReceiveGetSystemCapabilitiesResponse = @"com.sdl.response.getSystemCapabilities"; SDLNotificationName const SDLDidReceiveGetVehicleDataResponse = @"com.sdl.response.getVehicleData"; SDLNotificationName const SDLDidReceiveGetWaypointsResponse = @"com.sdl.response.getWaypoints"; @@ -53,6 +55,7 @@ SDLNotificationName const SDLDidReceiveSendLocationResponse = @"com.sdl.response SDLNotificationName const SDLDidReceiveSetAppIconResponse = @"com.sdl.response.setAppIcon"; 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"; @@ -77,6 +80,7 @@ SDLNotificationName const SDLDidReceiveButtonEventNotification = @"com.sdl.notif SDLNotificationName const SDLDidReceiveButtonPressNotification = @"com.sdl.notification.buttonPress"; SDLNotificationName const SDLDidReceiveCommandNotification = @"com.sdl.notification.command"; SDLNotificationName const SDLDidReceiveEncodedDataNotification = @"com.sdl.notification.encodedData"; +SDLNotificationName const SDLDidReceiveInteriorVehicleDataNotification = @"com.sdl.notification.interiorVehicleData"; SDLNotificationName const SDLDidReceiveKeyboardInputNotification = @"com.sdl.notification.keyboardInput"; SDLNotificationName const SDLDidChangeLanguageNotification = @"com.sdl.notification.changeLanguage"; SDLNotificationName const SDLDidChangeLockScreenStatusNotification = @"com.sdl.notification.lockScreenStatus"; @@ -96,6 +100,7 @@ SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notifica SDLDidReceiveAddSubMenuResponse, SDLDidReceiveAlertResponse, SDLDidReceiveAlertManeuverResponse, + SDLDidReceiveButtonPressResponse, SDLDidReceiveChangeRegistrationResponse, SDLDidReceiveCreateInteractionChoiceSetResponse, SDLDidReceiveDeleteCommandResponse, @@ -108,6 +113,7 @@ SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notifica SDLDidReceiveEndAudioPassThruResponse, SDLDidReceiveGenericResponse, SDLDidReceiveGetDTCsResponse, + SDLDidReceiveGetInteriorVehicleDataResponse, SDLDidReceiveGetSystemCapabilitiesResponse, SDLDidReceiveGetVehicleDataResponse, SDLDidReceiveGetWaypointsResponse, @@ -124,6 +130,7 @@ SDLNotificationName const SDLDidReceiveWaypointNotification = @"com.sdl.notifica SDLDidReceiveSetAppIconResponse, SDLDidReceiveSetDisplayLayoutResponse, SDLDidReceiveSetGlobalPropertiesResponse, + SDLDidReceiveSetInteriorVehicleDataResponse, SDLDidReceiveSetMediaClockTimerResponse, SDLDidReceiveShowConstantTBTResponse, SDLDidReceiveShowResponse, diff --git a/SmartDeviceLink/SDLNotificationDispatcher.m b/SmartDeviceLink/SDLNotificationDispatcher.m index 3da6e790a..142286400 100644 --- a/SmartDeviceLink/SDLNotificationDispatcher.m +++ b/SmartDeviceLink/SDLNotificationDispatcher.m @@ -14,7 +14,6 @@ #import "SDLRPCNotificationNotification.h" #import "SDLRPCResponseNotification.h" - NS_ASSUME_NONNULL_BEGIN @implementation SDLNotificationDispatcher @@ -24,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN if (infoObject != nil) { userInfo = @{SDLNotificationUserInfoObject: infoObject}; } - + dispatch_async(dispatch_get_main_queue(), ^{ [[NSNotificationCenter defaultCenter] postNotificationName:name object:self userInfo:userInfo]; }); @@ -44,7 +43,6 @@ NS_ASSUME_NONNULL_BEGIN }); } - #pragma mark - SDLProxyListener Delegate Methods - (void)onProxyOpened { @@ -66,7 +64,6 @@ NS_ASSUME_NONNULL_BEGIN [self postRPCNotificationNotification:SDLDidChangeDriverDistractionStateNotification notification:notification]; } - #pragma mark Optional Methods - (void)onError:(NSException *)e { @@ -94,6 +91,10 @@ NS_ASSUME_NONNULL_BEGIN [self postRPCResponseNotification:SDLDidReceiveAlertResponse response:response]; } +- (void)onButtonPressResponse:(SDLButtonPressResponse *)response { + [self postRPCResponseNotification:SDLDidReceiveButtonPressResponse response:response]; +} + - (void)onChangeRegistrationResponse:(SDLChangeRegistrationResponse *)response { [self postRPCResponseNotification:SDLDidReceiveChangeRegistrationResponse response:response]; } @@ -142,6 +143,10 @@ NS_ASSUME_NONNULL_BEGIN [self postRPCResponseNotification:SDLDidReceiveGetDTCsResponse response:response]; } +- (void)onGetInteriorVehicleDataResponse:(SDLGetInteriorVehicleDataResponse *)response { + [self postRPCResponseNotification:SDLDidReceiveGetInteriorVehicleDataResponse response:response]; +} + - (void)onGetSystemCapabilityResponse:(SDLGetSystemCapabilityResponse *)response { [self postRPCResponseNotification:SDLDidReceiveGetSystemCapabilitiesResponse response:response]; } @@ -206,6 +211,10 @@ NS_ASSUME_NONNULL_BEGIN [self postRPCResponseNotification:SDLDidReceiveSetGlobalPropertiesResponse response:response]; } +- (void)onSetInteriorVehicleDataResponse:(SDLSetInteriorVehicleDataResponse *)response{ + [self postRPCResponseNotification:SDLDidReceiveSetInteriorVehicleDataResponse response:response]; +} + - (void)onSetMediaClockTimerResponse:(SDLSetMediaClockTimerResponse *)response { [self postRPCResponseNotification:SDLDidReceiveSetMediaClockTimerResponse response:response]; } @@ -290,6 +299,10 @@ NS_ASSUME_NONNULL_BEGIN [self postRPCNotificationNotification:SDLDidReceiveNewHashNotification notification:notification]; } +- (void)onOnInteriorVehicleData:(SDLOnInteriorVehicleData *)notification { + [self postRPCNotificationNotification:SDLDidReceiveInteriorVehicleDataNotification notification:notification]; +} + - (void)onOnKeyboardInput:(SDLOnKeyboardInput *)notification { [self postRPCNotificationNotification:SDLDidReceiveKeyboardInputNotification notification:notification]; } diff --git a/SmartDeviceLink/SDLOnInteriorVehicleData.h b/SmartDeviceLink/SDLOnInteriorVehicleData.h new file mode 100644 index 000000000..196690dad --- /dev/null +++ b/SmartDeviceLink/SDLOnInteriorVehicleData.h @@ -0,0 +1,16 @@ +// +// SDLOnInteriorVehicleData.h +// + +#import "SDLRPCNotification.h" +@class SDLModuleData; + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLOnInteriorVehicleData : SDLRPCNotification + +@property (strong, nonatomic) SDLModuleData *moduleData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLOnInteriorVehicleData.m b/SmartDeviceLink/SDLOnInteriorVehicleData.m new file mode 100644 index 000000000..bb065608c --- /dev/null +++ b/SmartDeviceLink/SDLOnInteriorVehicleData.m @@ -0,0 +1,30 @@ +// +// SDLOnInteriorVehicleData.m +// + +#import "SDLOnInteriorVehicleData.h" +#import "SDLNames.h" +#import "SDLModuleData.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLOnInteriorVehicleData + +- (instancetype)init { + if (self = [super initWithName:SDLNameOnInteriorVehicleData]) { + } + return self; +} + +- (void)setModuleData:(SDLModuleData *)moduleData { + [parameters sdl_setObject:moduleData forName:SDLNameModuleData]; +} + +- (SDLModuleData *)moduleData { + return [parameters sdl_objectForName:SDLNameModuleData ofClass:SDLModuleData.class]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLProtocol.h b/SmartDeviceLink/SDLProtocol.h index ea6df9667..a0a4d1ecd 100644 --- a/SmartDeviceLink/SDLProtocol.h +++ b/SmartDeviceLink/SDLProtocol.h @@ -17,18 +17,11 @@ extern NSString *const SDLProtocolSecurityErrorDomain; @interface SDLProtocol : SDLAbstractProtocol <SDLProtocolListener> // Sending -- (void)sendStartSessionWithType:(SDLServiceType)serviceType __deprecated_msg(("Use startServiceWithType: instead")); -- (void)startServiceWithType:(SDLServiceType)serviceType __deprecated_msg(("Use startServiceWithType:payload: instead")); - (void)startServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload; - -- (void)startSecureServiceWithType:(SDLServiceType)serviceType completionHandler:(void (^)(BOOL success, NSError *error))completionHandler __deprecated_msg(("Use startSecureServiceWithType:payload:completionHandler instead")); - (void)startSecureServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload completionHandler:(void (^)(BOOL success, NSError *error))completionHandler; - -- (void)sendEndSessionWithType:(SDLServiceType)serviceType __deprecated_msg(("Use endServiceWithType: instead")); - (void)endServiceWithType:(SDLServiceType)serviceType; - (void)sendRPC:(SDLRPCMessage *)message; - (BOOL)sendRPC:(SDLRPCMessage *)message encrypted:(BOOL)encryption error:(NSError **)error; -- (void)sendRPCRequest:(SDLRPCRequest *)rpcRequest __deprecated_msg(("Use sendRPC: instead")); - (void)sendRawData:(NSData *)data withServiceType:(SDLServiceType)serviceType; - (void)sendEncryptedRawData:(NSData *)data onService:(SDLServiceType)serviceType; diff --git a/SmartDeviceLink/SDLProtocol.m b/SmartDeviceLink/SDLProtocol.m index 1adef65f0..186226414 100644 --- a/SmartDeviceLink/SDLProtocol.m +++ b/SmartDeviceLink/SDLProtocol.m @@ -82,27 +82,15 @@ NS_ASSUME_NONNULL_BEGIN return header.sessionID; } -- (void)sendStartSessionWithType:(SDLServiceType)serviceType { - [self startServiceWithType:serviceType payload:nil]; -} - #pragma mark - Start Service -- (void)startServiceWithType:(SDLServiceType)serviceType { - [self startServiceWithType:serviceType payload:nil]; -} - - (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]; [self sdl_sendDataToTransport:message.data onService:serviceType]; } -- (void)startSecureServiceWithType:(SDLServiceType)serviceType completionHandler:(void (^)(BOOL success, NSError *error))completionHandler { - [self startSecureServiceWithType:serviceType payload:nil completionHandler:completionHandler]; -} - - (void)startSecureServiceWithType:(SDLServiceType)serviceType payload:(nullable NSData *)payload completionHandler:(void (^)(BOOL success, NSError *error))completionHandler { [self sdl_initializeTLSEncryptionWithCompletionHandler:^(BOOL success, NSError *error) { if (!success) { @@ -177,10 +165,6 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - End Service -- (void)sendEndSessionWithType:(SDLServiceType)serviceType { - [self endServiceWithType:serviceType]; -} - - (void)endServiceWithType:(SDLServiceType)serviceType { SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:[SDLGlobals sharedGlobals].majorProtocolVersion]; header.frameType = SDLFrameTypeControl; @@ -295,11 +279,6 @@ NS_ASSUME_NONNULL_BEGIN return YES; } -// SDLRPCRequest in from app -> SDLProtocolMessage out to transport layer. -- (void)sendRPCRequest:(SDLRPCRequest *)rpcRequest { - [self sendRPC:rpcRequest]; -} - // Use for normal messages - (void)sdl_sendDataToTransport:(NSData *)data onService:(NSInteger)priority { [_prioritizedCollection addObject:data withPriority:priority]; @@ -461,19 +440,6 @@ NS_ASSUME_NONNULL_BEGIN if ([listener respondsToSelector:@selector(handleProtocolStartServiceACKMessage:)]) { [listener handleProtocolStartServiceACKMessage:startServiceACK]; } - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([listener respondsToSelector:@selector(handleProtocolStartSessionACK:)]) { - [listener handleProtocolStartSessionACK:startServiceACK.header]; - } - - if ([listener respondsToSelector:@selector(handleProtocolStartSessionACK:sessionID:version:)]) { - [listener handleProtocolStartSessionACK:startServiceACK.header.serviceType - sessionID:startServiceACK.header.sessionID - version:startServiceACK.header.version]; -#pragma clang diagnostic pop - } } } @@ -484,13 +450,6 @@ NS_ASSUME_NONNULL_BEGIN if ([listener respondsToSelector:@selector(handleProtocolStartServiceNAKMessage:)]) { [listener handleProtocolStartServiceNAKMessage:startServiceNAK]; } - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([listener respondsToSelector:@selector(handleProtocolStartSessionNACK:)]) { - [listener handleProtocolStartSessionNACK:startServiceNAK.header.serviceType]; - } -#pragma clang diagnostic pop } } @@ -502,14 +461,7 @@ NS_ASSUME_NONNULL_BEGIN if ([listener respondsToSelector:@selector(handleProtocolEndServiceACKMessage:)]) { [listener handleProtocolEndServiceACKMessage:endServiceACK]; } - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([listener respondsToSelector:@selector(handleProtocolEndSessionACK:)]) { - [listener handleProtocolEndSessionACK:endServiceACK.header.serviceType]; - } } -#pragma clang diagnostic pop } - (void)handleProtocolEndServiceNAKMessage:(SDLProtocolMessage *)endServiceNAK { @@ -519,14 +471,7 @@ NS_ASSUME_NONNULL_BEGIN if ([listener respondsToSelector:@selector(handleProtocolEndServiceNAKMessage:)]) { [listener handleProtocolEndServiceNAKMessage:endServiceNAK]; } - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([listener respondsToSelector:@selector(handleProtocolEndSessionNACK:)]) { - [listener handleProtocolEndSessionNACK:endServiceNAK.header.serviceType]; - } } -#pragma clang diagnostic pop } - (void)handleHeartbeatForSession:(Byte)session { diff --git a/SmartDeviceLink/SDLProtocolHeader.h b/SmartDeviceLink/SDLProtocolHeader.h index cfef757fe..e28539597 100644 --- a/SmartDeviceLink/SDLProtocolHeader.h +++ b/SmartDeviceLink/SDLProtocolHeader.h @@ -46,7 +46,6 @@ NS_ASSUME_NONNULL_BEGIN @property (assign, nonatomic, readonly) UInt8 version; @property (assign, nonatomic, readonly) NSUInteger size; -@property (assign, nonatomic) BOOL compressed __deprecated_msg("This is a mirror for encrypted"); @property (assign, nonatomic) BOOL encrypted; @property (assign, nonatomic) SDLFrameType frameType; @property (assign, nonatomic) SDLServiceType serviceType; diff --git a/SmartDeviceLink/SDLProtocolHeader.m b/SmartDeviceLink/SDLProtocolHeader.m index 2c193fecb..afe93724d 100644 --- a/SmartDeviceLink/SDLProtocolHeader.m +++ b/SmartDeviceLink/SDLProtocolHeader.m @@ -22,14 +22,6 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (BOOL)compressed { - return _encrypted; -} - -- (void)setCompressed:(BOOL)compressed { - _encrypted = compressed; -} - - (id)copyWithZone:(nullable NSZone *)zone { [self doesNotRecognizeSelector:_cmd]; return 0; diff --git a/SmartDeviceLink/SDLProtocolListener.h b/SmartDeviceLink/SDLProtocolListener.h index 0657fc2c0..7888a9ee3 100644 --- a/SmartDeviceLink/SDLProtocolListener.h +++ b/SmartDeviceLink/SDLProtocolListener.h @@ -17,11 +17,6 @@ NS_ASSUME_NONNULL_BEGIN - (void)handleProtocolEndServiceNAKMessage:(SDLProtocolMessage *)endServiceNAK; // Older protocol handlers -- (void)handleProtocolStartSessionACK:(SDLServiceType)serviceType sessionID:(Byte)sessionID version:(Byte)version __deprecated_msg("use handleProtocolStartSessionACKMessage: instead"); -- (void)handleProtocolStartSessionACK:(SDLProtocolHeader *)header __deprecated_msg("use handleProtocolStartSessionACKMessage: instead"); -- (void)handleProtocolStartSessionNACK:(SDLServiceType)serviceType __deprecated_msg("use handleProtocolStartSessionNAKMessage: instead"); -- (void)handleProtocolEndSessionACK:(SDLServiceType)serviceType __deprecated_msg("use handleProtocolEndSessionACKMessage: instead"); -- (void)handleProtocolEndSessionNACK:(SDLServiceType)serviceType __deprecated_msg("use handleProtocolEndSessionNAKMessage: instead"); - (void)handleHeartbeatForSession:(Byte)session; - (void)handleHeartbeatACK; - (void)onProtocolMessageReceived:(SDLProtocolMessage *)msg; diff --git a/SmartDeviceLink/SDLProtocolMessage.h b/SmartDeviceLink/SDLProtocolMessage.h index 893c6ee09..4028ec497 100644 --- a/SmartDeviceLink/SDLProtocolMessage.h +++ b/SmartDeviceLink/SDLProtocolMessage.h @@ -19,8 +19,6 @@ NS_ASSUME_NONNULL_BEGIN - (NSString *)description; - (nullable NSDictionary<NSString *, id> *)rpcDictionary; // Use for RPC type messages to obtain the data in a dictionary -+ (UInt8)determineVersion:(NSData *)data __deprecated_msg(("Use SDLProtocolHeader determineVersion: instead")); - @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLProtocolMessage.m b/SmartDeviceLink/SDLProtocolMessage.m index b4a5fb5d9..66680e40e 100644 --- a/SmartDeviceLink/SDLProtocolMessage.m +++ b/SmartDeviceLink/SDLProtocolMessage.m @@ -49,10 +49,6 @@ NS_ASSUME_NONNULL_BEGIN return dataOut; } -+ (UInt8)determineVersion:(NSData *)data { - return [SDLProtocolHeader determineVersion:data]; -} - - (NSString *)description { // Print the header data. NSMutableString *description = [[NSMutableString alloc] init]; diff --git a/SmartDeviceLink/SDLProxy.h b/SmartDeviceLink/SDLProxy.h index 80018677c..6beb28d8d 100644 --- a/SmartDeviceLink/SDLProxy.h +++ b/SmartDeviceLink/SDLProxy.h @@ -37,10 +37,8 @@ __deprecated_msg("Use SDLManager instead") - (void)removeDelegate:(NSObject<SDLProxyListener> *)delegate; - (void)sendRPC:(SDLRPCMessage *)message; -- (void)sendRPCRequest:(SDLRPCMessage *)msg __deprecated_msg("use -sendRPC: instead"); - (void)handleRPCDictionary:(NSDictionary<NSString *, id> *)dictionary; -- (void)handleRpcMessage:(NSDictionary *)msg __deprecated_msg("use -handleRPCDictionary: instead"); - (void)handleProtocolMessage:(SDLProtocolMessage *)msgData; diff --git a/SmartDeviceLink/SDLProxy.m b/SmartDeviceLink/SDLProxy.m index 16ed595a1..ef5eb9857 100644 --- a/SmartDeviceLink/SDLProxy.m +++ b/SmartDeviceLink/SDLProxy.m @@ -194,7 +194,8 @@ static float DefaultConnectionTimeout = 45.0; - (void)onProtocolOpened { _isConnected = YES; SDLLogV(@"Proxy RPC protocol opened"); - [self.protocol startServiceWithType:SDLServiceTypeRPC]; + // THe RPC payload will be created by the protocol object...it's weird and confusing, I know. + [self.protocol startServiceWithType:SDLServiceTypeRPC payload:nil]; if (self.startSessionTimer == nil) { self.startSessionTimer = [[SDLTimer alloc] initWithDuration:StartSessionTime repeat:NO]; @@ -215,12 +216,12 @@ static float DefaultConnectionTimeout = 45.0; [self invokeMethodOnDelegates:@selector(onError:) withObject:e]; } -- (void)handleProtocolStartSessionACK:(SDLProtocolHeader *)header { +- (void)handleProtocolStartServiceACKMessage:(SDLProtocolMessage *)startServiceACK { // Turn off the timer, the start session response came back [self.startSessionTimer cancel]; - SDLLogV(@"StartSession (response)\nSessionId: %d for serviceType %d", header.sessionID, header.serviceType); + SDLLogV(@"StartSession (response)\nSessionId: %d for serviceType %d", startServiceACK.header.sessionID, startServiceACK.header.serviceType); - if (header.serviceType == SDLServiceTypeRPC) { + if (startServiceACK.header.serviceType == SDLServiceTypeRPC) { [self invokeMethodOnDelegates:@selector(onProxyOpened) withObject:nil]; } } @@ -243,12 +244,6 @@ static float DefaultConnectionTimeout = 45.0; } } -- (void)sendRPCRequest:(SDLRPCMessage *)msg { - if ([msg isKindOfClass:SDLRPCRequest.class]) { - [self sendRPC:msg]; - } -} - - (void)handleProtocolMessage:(SDLProtocolMessage *)incomingMessage { // Convert protocol message to dictionary NSDictionary<NSString *, id> *rpcMessageAsDictionary = [incomingMessage rpcDictionary]; @@ -312,10 +307,6 @@ static float DefaultConnectionTimeout = 45.0; } } -- (void)handleRpcMessage:(NSDictionary<NSString *, id> *)msg { - [self handleRPCDictionary:msg]; -} - #pragma mark - RPC Handlers diff --git a/SmartDeviceLink/SDLProxyListener.h b/SmartDeviceLink/SDLProxyListener.h index 64c177579..70a02f3f2 100644 --- a/SmartDeviceLink/SDLProxyListener.h +++ b/SmartDeviceLink/SDLProxyListener.h @@ -7,6 +7,7 @@ @class SDLAddSubMenuResponse; @class SDLAlertManeuverResponse; @class SDLAlertResponse; +@class SDLButtonPressResponse; @class SDLChangeRegistrationResponse; @class SDLCreateInteractionChoiceSetResponse; @class SDLDeleteCommandResponse; @@ -19,6 +20,7 @@ @class SDLEndAudioPassThruResponse; @class SDLGenericResponse; @class SDLGetDTCsResponse; +@class SDLGetInteriorVehicleDataResponse; @class SDLGetSystemCapabilityResponse; @class SDLGetVehicleDataResponse; @class SDLGetWaypointsResponse; @@ -32,6 +34,7 @@ @class SDLOnEncodedSyncPData; @class SDLOnHashChange; @class SDLOnHMIStatus; +@class SDLOnInteriorVehicleData; @class SDLOnKeyboardInput; @class SDLOnLanguageChange; @class SDLOnLockScreenStatus; @@ -55,6 +58,7 @@ @class SDLSetAppIconResponse; @class SDLSetDisplayLayoutResponse; @class SDLSetGlobalPropertiesResponse; +@class SDLSetInteriorVehicleDataResponse; @class SDLSetMediaClockTimerResponse; @class SDLShowConstantTBTResponse; @class SDLShowResponse; @@ -85,6 +89,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)onAddSubMenuResponse:(SDLAddSubMenuResponse *)response; - (void)onAlertManeuverResponse:(SDLAlertManeuverResponse *)response; - (void)onAlertResponse:(SDLAlertResponse *)response; +- (void)onButtonPressResponse:(SDLButtonPressResponse *)response; - (void)onChangeRegistrationResponse:(SDLChangeRegistrationResponse *)response; - (void)onCreateInteractionChoiceSetResponse:(SDLCreateInteractionChoiceSetResponse *)response; - (void)onDeleteCommandResponse:(SDLDeleteCommandResponse *)response; @@ -98,6 +103,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)onError:(NSException *)e; - (void)onGenericResponse:(SDLGenericResponse *)response; - (void)onGetDTCsResponse:(SDLGetDTCsResponse *)response; +- (void)onGetInteriorVehicleDataResponse:(SDLGetInteriorVehicleDataResponse *)response; - (void)onGetSystemCapabilityResponse:(SDLGetSystemCapabilityResponse *)response; - (void)onGetVehicleDataResponse:(SDLGetVehicleDataResponse *)response; - (void)onGetWayPointsResponse:(SDLGetWaypointsResponse *)response; @@ -110,6 +116,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)onOnCommand:(SDLOnCommand *)notification; - (void)onOnEncodedSyncPData:(SDLOnEncodedSyncPData *)notification; - (void)onOnHashChange:(SDLOnHashChange *)notification; +- (void)onOnInteriorVehicleData:(SDLOnInteriorVehicleData *)notification; - (void)onOnKeyboardInput:(SDLOnKeyboardInput *)notification; - (void)onOnLanguageChange:(SDLOnLanguageChange *)notification; - (void)onOnLockScreenNotification:(SDLOnLockScreenStatus *)notification; @@ -132,6 +139,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)onSetAppIconResponse:(SDLSetAppIconResponse *)response; - (void)onSetDisplayLayoutResponse:(SDLSetDisplayLayoutResponse *)response; - (void)onSetGlobalPropertiesResponse:(SDLSetGlobalPropertiesResponse *)response; +- (void)onSetInteriorVehicleDataResponse:(SDLSetInteriorVehicleDataResponse *)response; - (void)onSetMediaClockTimerResponse:(SDLSetMediaClockTimerResponse *)response; - (void)onShowConstantTBTResponse:(SDLShowConstantTBTResponse *)response; - (void)onShowResponse:(SDLShowResponse *)response; diff --git a/SmartDeviceLink/SDLRDSData.h b/SmartDeviceLink/SDLRDSData.h new file mode 100755 index 000000000..f734b45e5 --- /dev/null +++ b/SmartDeviceLink/SDLRDSData.h @@ -0,0 +1,78 @@ +// +// SDLRDSData.h +// + +#import "SDLRPCMessage.h" + +/** + * Include the data defined in Radio Data System, + * which is a communications protocol standard for embedding small amounts of digital information + * in conventional FM radio broadcasts. + */ + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLRDSData : SDLRPCStruct + +- (instancetype)initWithProgramService:(nullable NSString *)programService radioText:(nullable NSString *)radioText clockText:(nullable NSString *)clockText programIdentification:(nullable NSString *)programIdentification programType:(nullable NSNumber<SDLInt> *)programType trafficProgramIdentification:(nullable NSNumber<SDLBool> *)trafficProgramIdentification trafficAnnouncementIdentification:(nullable NSNumber<SDLBool> *)trafficAnnouncementIdentification region:(nullable NSString *)region; + +/** + * @abstract Program Service Name + * + * optional, 0-8 + */ +@property (nullable, strong, nonatomic) NSString *programService; + +/** + * @abstract Radio Text + * + * optional, 0-64 + */ +@property (nullable, strong, nonatomic) NSString *radioText; + +/** + * @abstract The clock text in UTC format as YYYY-MM-DDThh:mm:ss.sTZD + * + * optional, 0-24 + */ +@property (nullable, strong, nonatomic) NSString *clockText; + +/** + * @abstract Program Identification - the call sign for the radio station + * + * optional, 0-6 + */ +@property (nullable, strong, nonatomic) NSString *programIdentification; + +/** + * @abstract The program type - The region should be used to differentiate between EU + * and North America program types + * + * optional, 0-31 + */ +@property (nullable, strong, nonatomic) NSNumber<SDLInt> *programType; + +/** + * @abstract Traffic Program Identification - Identifies a station that offers traffic + * + * optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *trafficProgramIdentification; + +/** + * @abstract Traffic Announcement Identification - Indicates an ongoing traffic announcement + * + * optional, Boolean + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *trafficAnnouncementIdentification; + +/** + * @abstract Region + * + * optional, 0-8 + */ +@property (nullable, strong, nonatomic) NSString *region; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLRDSData.m b/SmartDeviceLink/SDLRDSData.m new file mode 100755 index 000000000..9a8f5586f --- /dev/null +++ b/SmartDeviceLink/SDLRDSData.m @@ -0,0 +1,95 @@ +// +// SDLRDSData.m +// + +#import "SDLRDSData.h" +#include "SDLNames.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLRDSData + +- (instancetype)initWithProgramService:(nullable NSString *)programService radioText:(nullable NSString *)radioText clockText:(nullable NSString *)clockText programIdentification:(nullable NSString *)programIdentification programType:(nullable NSNumber<SDLInt> *)programType trafficProgramIdentification:(nullable NSNumber<SDLBool> *)trafficProgramIdentification trafficAnnouncementIdentification:(nullable NSNumber<SDLBool> *)trafficAnnouncementIdentification region:(nullable NSString *)region { + self = [self init]; + if (!self) { + return nil; + } + self.programService = programService; + self.radioText = radioText; + self.clockText = clockText; + self.programIdentification = programIdentification; + self.programType = programType; + self.trafficProgramIdentification = trafficProgramIdentification; + self.trafficAnnouncementIdentification = trafficAnnouncementIdentification; + self.region = region; + return self; +} + +- (void)setProgramService:(nullable NSString *)programService { + [store sdl_setObject:programService forName:SDLNameProgramService]; +} + +- (nullable NSString *)programService { + return [store sdl_objectForName:SDLNameProgramService]; +} + +- (void)setRadioText:(nullable NSString *)radioText { + [store sdl_setObject:radioText forName:SDLNameRadioText]; +} + +- (nullable NSString *)radioText { + return [store sdl_objectForName:SDLNameRadioText]; +} + +- (void)setClockText:(nullable NSString *)clockText { + [store sdl_setObject:clockText forName:SDLNameClockText]; +} + +- (nullable NSString *)clockText { + return [store sdl_objectForName:SDLNameClockText]; +} + +- (void)setProgramIdentification:(nullable NSString *)programIdentification { + [store sdl_setObject:programIdentification forName:SDLNameProgramIdentification]; +} + +- (nullable NSString *)programIdentification { + return [store sdl_objectForName:SDLNameProgramIdentification]; +} + +- (void)setProgramType:(nullable NSNumber<SDLInt> *)programType { + [store sdl_setObject:programType forName:SDLNameProgramType]; +} + +- (nullable NSNumber<SDLInt> *)programType { + return [store sdl_objectForName:SDLNameProgramType]; +} + +- (void)setTrafficProgramIdentification:(nullable NSNumber<SDLBool> *)trafficProgramIdentification { + [store sdl_setObject:trafficProgramIdentification forName:SDLNameTrafficProgramIdentification]; +} + +- (nullable NSNumber<SDLBool> *)trafficProgramIdentification { + return [store sdl_objectForName:SDLNameTrafficProgramIdentification]; +} + +- (void)setTrafficAnnouncementIdentification:(nullable NSNumber<SDLBool> *)trafficAnnouncementIdentification { + [store sdl_setObject:trafficAnnouncementIdentification forName:SDLNameTrafficAnnouncementIdentification]; +} + +- (nullable NSNumber<SDLBool> *)trafficAnnouncementIdentification { + return [store sdl_objectForName:SDLNameTrafficAnnouncementIdentification]; +} + +- (void)setRegion:(nullable NSString *)region { + [store sdl_setObject:region forName:SDLNameRegion]; +} + +- (nullable NSString *)region { + return [store sdl_objectForName:SDLNameRegion]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLRadioBand.h b/SmartDeviceLink/SDLRadioBand.h new file mode 100644 index 000000000..86d2c5b27 --- /dev/null +++ b/SmartDeviceLink/SDLRadioBand.h @@ -0,0 +1,26 @@ +// +// SDLRadioBand.h +// + +#import "SDLEnum.h" + + +typedef SDLEnum SDLRadioBand SDL_SWIFT_ENUM; + +/** + * @abstract Represents AM radio band + * + */ +extern SDLRadioBand const SDLRadioBandAM NS_SWIFT_NAME(am); + +/** + * @abstract Represents FM radio band + * + */ +extern SDLRadioBand const SDLRadioBandFM NS_SWIFT_NAME(fm); + +/** + * @abstract Represents XM radio band + * + */ +extern SDLRadioBand const SDLRadioBandXM NS_SWIFT_NAME(xm); diff --git a/SmartDeviceLink/SDLRadioBand.m b/SmartDeviceLink/SDLRadioBand.m new file mode 100644 index 000000000..1aa03e70f --- /dev/null +++ b/SmartDeviceLink/SDLRadioBand.m @@ -0,0 +1,9 @@ +// +// SDLRadioBand.m +// + +#import "SDLRadioBand.h" + +SDLRadioBand const SDLRadioBandAM = @"AM"; +SDLRadioBand const SDLRadioBandFM = @"FM"; +SDLRadioBand const SDLRadioBandXM = @"XM"; diff --git a/SmartDeviceLink/SDLRadioControlCapabilities.h b/SmartDeviceLink/SDLRadioControlCapabilities.h new file mode 100644 index 000000000..38f347807 --- /dev/null +++ b/SmartDeviceLink/SDLRadioControlCapabilities.h @@ -0,0 +1,98 @@ +// +// SDLRadioControlCapabilities.h +// + +#import "SDLRPCMessage.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Contains information about a radio control module's capabilities. + */ +@interface SDLRadioControlCapabilities : SDLRPCStruct + +- (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; + +/** + * @abstract 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 + */ +@property (strong, nonatomic) NSString *moduleName; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLRadioControlCapabilities.m b/SmartDeviceLink/SDLRadioControlCapabilities.m new file mode 100644 index 000000000..775178a9b --- /dev/null +++ b/SmartDeviceLink/SDLRadioControlCapabilities.m @@ -0,0 +1,116 @@ +// +// SDLRadioControlCapabilities.m +// + +#import "SDLRadioControlCapabilities.h" +#import "SDLNames.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 { + 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); + + return self; +} + +- (void)setModuleName:(NSString *)moduleName { + [store sdl_setObject:moduleName forName:SDLNameModuleName]; +} + +- (NSString *)moduleName { + return [store sdl_objectForName:SDLNameModuleName]; +} + +- (void)setRadioEnableAvailable:(nullable NSNumber<SDLBool> *)radioEnableAvailable { + [store sdl_setObject:radioEnableAvailable forName:SDLNameRadioEnableAvailable]; +} + +- (nullable NSNumber<SDLBool> *)radioEnableAvailable { + return [store sdl_objectForName:SDLNameRadioEnableAvailable]; +} + +- (void)setRadioBandAvailable:(nullable NSNumber<SDLBool> *)radioBandAvailable { + [store sdl_setObject:radioBandAvailable forName:SDLNameRadioBandAvailable]; +} + +- (nullable NSNumber<SDLBool> *)radioBandAvailable { + return [store sdl_objectForName:SDLNameRadioBandAvailable]; +} + +- (void)setRadioFrequencyAvailable:(nullable NSNumber<SDLBool> *)radioFrequencyAvailable { + [store sdl_setObject:radioFrequencyAvailable forName:SDLNameRadioFrequencyAvailable]; +} + +- (nullable NSNumber<SDLBool> *)radioFrequencyAvailable { + return [store sdl_objectForName:SDLNameRadioFrequencyAvailable]; +} + +- (void)setHdChannelAvailable:(nullable NSNumber<SDLBool> *)hdChannelAvailable { + [store sdl_setObject:hdChannelAvailable forName:SDLNameHDChannelAvailable]; +} + +- (nullable NSNumber<SDLBool> *)hdChannelAvailable { + return [store sdl_objectForName:SDLNameHDChannelAvailable]; +} + +- (void)setRdsDataAvailable:(nullable NSNumber<SDLBool> *)rdsDataAvailable { + [store sdl_setObject:rdsDataAvailable forName:SDLNameRDSDataAvailable]; + +} + +- (nullable NSNumber<SDLBool> *)rdsDataAvailable { + return [store sdl_objectForName:SDLNameRDSDataAvailable]; +} + +- (void)setAvailableHDsAvailable:(nullable NSNumber<SDLBool> *)availableHDsAvailable { + [store sdl_setObject:availableHDsAvailable forName:SDLNameAvailableHDsAvailable]; +} + +- (nullable NSNumber<SDLBool> *)availableHDsAvailable { + return [store sdl_objectForName:SDLNameAvailableHDsAvailable]; +} + +- (void)setStateAvailable:(nullable NSNumber<SDLBool> *)stateAvailable { + [store sdl_setObject:stateAvailable forName:SDLNameStateAvailable]; +} + +- (nullable NSNumber<SDLBool> *)stateAvailable { + return [store sdl_objectForName:SDLNameStateAvailable]; +} + +- (void)setSignalStrengthAvailable:(nullable NSNumber<SDLBool> *)signalStrengthAvailable { + [store sdl_setObject:signalStrengthAvailable forName:SDLNameSignalStrengthAvailable]; +} + +- (nullable NSNumber<SDLBool> *)signalStrengthAvailable { + return [store sdl_objectForName:SDLNameSignalStrengthAvailable]; +} + +- (void)setSignalChangeThresholdAvailable:(nullable NSNumber<SDLBool> *)signalChangeThresholdAvailable { + [store sdl_setObject:signalChangeThresholdAvailable forName:SDLNameSignalChangeThresholdAvailable]; +} + +- (nullable NSNumber<SDLBool> *)signalChangeThresholdAvailable { + return [store sdl_objectForName:SDLNameSignalChangeThresholdAvailable]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLRadioControlData.h b/SmartDeviceLink/SDLRadioControlData.h new file mode 100644 index 000000000..693aa4272 --- /dev/null +++ b/SmartDeviceLink/SDLRadioControlData.h @@ -0,0 +1,103 @@ +// +// SDLRadioControlData.h +// + +#import "SDLRPCMessage.h" +#import "SDLRadioBand.h" +#import "SDLRadioState.h" + +@class SDLRDSData; + +/** + * Include information (both read-only and changeable data) about a remote control radio module. + */ + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLRadioControlData : SDLRPCStruct + +- (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; + +/** + * @abstract The integer part of the frequency ie for 101.7 this value should be 101 + * + * Integer + */ +@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frequencyInteger; + +/** + * @abstract The fractional part of the frequency for 101.7 is 7 + * + * Integer + */ +@property (nullable, strong, nonatomic) NSNumber<SDLInt> *frequencyFraction; + +/** + * @abstract Radio band value + * + * SDLRadioBand + */ +@property (nullable, strong, nonatomic) SDLRadioBand band; + +/** + * @abstract 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; + +/** + * @abstract 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 -3 + */ +@property (nullable, strong, nonatomic) NSNumber<SDLInt> *availableHDs; + +/** + * @abstract Current HD sub-channel if available + * + * Integer value Min Value - 1 Max Value -3 + */ +@property (nullable, strong, nonatomic) NSNumber<SDLInt> *hdChannel; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract True if the radio is on, false is the radio is off + * + * 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; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLRadioControlData.m b/SmartDeviceLink/SDLRadioControlData.m new file mode 100644 index 000000000..d996a8c87 --- /dev/null +++ b/SmartDeviceLink/SDLRadioControlData.m @@ -0,0 +1,111 @@ +// +// SDLRadioControlData.m +// + +#import "SDLRadioControlData.h" +#import "SDLNames.h" +#import "SDLRDSData.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; +} + +- (void)setFrequencyInteger:(nullable NSNumber<SDLInt> *)frequencyInteger { + [store sdl_setObject:frequencyInteger forName:SDLNameFrequencyInteger]; +} + +- (nullable NSNumber<SDLInt> *)frequencyInteger { + return [store sdl_objectForName:SDLNameFrequencyInteger]; +} + +- (void)setFrequencyFraction:(nullable NSNumber<SDLInt> *)frequencyFraction { + [store sdl_setObject:frequencyFraction forName:SDLNameFrequencyFraction]; +} + +- (nullable NSNumber<SDLInt> *)frequencyFraction { + return [store sdl_objectForName:SDLNameFrequencyFraction]; +} + +- (void)setBand:(nullable SDLRadioBand)band { + [store sdl_setObject:band forName:SDLNameBand]; +} + +- (nullable SDLRadioBand)band{ + return [store sdl_objectForName:SDLNameBand]; +} + +- (void)setRdsData:(nullable SDLRDSData *)rdsData { + [store sdl_setObject:rdsData forName:SDLNameRDSData]; +} + +- (nullable SDLRDSData *)rdsData { + return [store sdl_objectForName:SDLNameRDSData ofClass:SDLRDSData.class]; +} + +- (void)setAvailableHDs:(nullable NSNumber<SDLInt> *)availableHDs { + [store sdl_setObject:availableHDs forName:SDLNameAvailableHDs]; +} + +- (nullable NSNumber<SDLInt> *)availableHDs { + return [store sdl_objectForName:SDLNameAvailableHDs]; +} + +- (void)setHdChannel:(nullable NSNumber<SDLInt> *)hdChannel { + [store sdl_setObject:hdChannel forName:SDLNameHDChannel]; +} + +- (nullable NSNumber<SDLInt> *)hdChannel { + return [store sdl_objectForName:SDLNameHDChannel]; +} + +- (void)setSignalStrength:(nullable NSNumber<SDLInt> *)signalStrength { + [store sdl_setObject:signalStrength forName:SDLNameSignalStrength]; +} + +- (nullable NSNumber<SDLInt> *)signalStrength { + return [store sdl_objectForName:SDLNameSignalStrength]; +} + +- (void)setSignalChangeThreshold:(nullable NSNumber<SDLInt> *)signalChangeThreshold { + [store sdl_setObject:signalChangeThreshold forName:SDLNameSignalChangeThreshold]; +} + +- (nullable NSNumber<SDLInt> *)signalChangeThreshold { + return [store sdl_objectForName:SDLNameSignalChangeThreshold]; +} + +- (void)setRadioEnable:(nullable NSNumber<SDLBool> *)radioEnable { + [store sdl_setObject:radioEnable forName:SDLNameRadioEnable]; +} + +- (nullable NSNumber<SDLBool> *)radioEnable { + return [store sdl_objectForName:SDLNameRadioEnable]; +} + +- (void)setState:(nullable SDLRadioState)state { + [store sdl_setObject:state forName:SDLNameState]; +} + +- (nullable SDLRadioState)state { + return [store sdl_objectForName:SDLNameState]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLRadioState.h b/SmartDeviceLink/SDLRadioState.h new file mode 100644 index 000000000..ceecab086 --- /dev/null +++ b/SmartDeviceLink/SDLRadioState.h @@ -0,0 +1,35 @@ +// +// SDLRadioState.h +// + +#import "SDLEnum.h" + +/** + * List possible states of a remote control radio module. + */ + +typedef SDLEnum SDLRadioState SDL_SWIFT_ENUM; + +/** + * @abstract Represents Radio state as ACQUIRING + * + */ +extern SDLRadioState const SDLRadioStateAcquiring; + +/** + * @abstract Represents Radio state as ACQUIRED + * + */ +extern SDLRadioState const SDLRadioStateAcquired; + +/** + * @abstract Represents Radio state as MULTICAST + * + */ +extern SDLRadioState const SDLRadioStateMulticast; + +/** + * @abstract Represents Radio state as NOT_FOUND + * + */ +extern SDLRadioState const SDLRadioStateNotFound; diff --git a/SmartDeviceLink/SDLRadioState.m b/SmartDeviceLink/SDLRadioState.m new file mode 100644 index 000000000..e14aebeed --- /dev/null +++ b/SmartDeviceLink/SDLRadioState.m @@ -0,0 +1,10 @@ +// +// SDLRadioState.m +// + +#import "SDLRadioState.h" + +SDLRadioState const SDLRadioStateAcquiring = @"ACQUIRING"; +SDLRadioState const SDLRadioStateAcquired = @"ACQUIRED"; +SDLRadioState const SDLRadioStateMulticast = @"MULTICAST"; +SDLRadioState const SDLRadioStateNotFound = @"NOT_FOUND"; diff --git a/SmartDeviceLink/SDLRemoteControlCapabilities.h b/SmartDeviceLink/SDLRemoteControlCapabilities.h new file mode 100644 index 000000000..6ccda961e --- /dev/null +++ b/SmartDeviceLink/SDLRemoteControlCapabilities.h @@ -0,0 +1,42 @@ +// +// SDLRemoteControlCapabilities.h +// + +#import "SDLRPCMessage.h" + +@class SDLClimateControlCapabilities; +@class SDLRadioControlCapabilities; +@class SDLButtonCapabilities; + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLRemoteControlCapabilities : SDLRPCStruct + +- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities; + +/** + * @abstract 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; + +/** + * @abstract 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; + +/** + * @abstract 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; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLRemoteControlCapabilities.m b/SmartDeviceLink/SDLRemoteControlCapabilities.m new file mode 100644 index 000000000..1a12d7c5c --- /dev/null +++ b/SmartDeviceLink/SDLRemoteControlCapabilities.m @@ -0,0 +1,54 @@ +// +// SDLRemoteControlCapabilities.m +// + +#import "SDLRemoteControlCapabilities.h" +#import "SDLClimateControlCapabilities.h" +#import "SDLRadioControlCapabilities.h" +#import "SDLButtonCapabilities.h" +#import "NSMutableDictionary+Store.h" +#import "SDLNames.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLRemoteControlCapabilities + +- (instancetype)initWithClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities radioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities { + self = [super init]; + if (!self) { + return nil; + } + + self.climateControlCapabilities = climateControlCapabilities; + self.radioControlCapabilities = radioControlCapabilities; + self.buttonCapabilities = buttonCapabilities; + + return self; +} + +- (void)setClimateControlCapabilities:(nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities { + [store sdl_setObject:climateControlCapabilities forName:SDLNameClimateControlCapabilities]; +} + +- (nullable NSArray<SDLClimateControlCapabilities *> *)climateControlCapabilities { + return [store sdl_objectsForName:SDLNameClimateControlCapabilities ofClass:SDLClimateControlCapabilities.class]; +} + +-(void)setRadioControlCapabilities:(nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities { + [store sdl_setObject:radioControlCapabilities forName:SDLNameRadioControlCapabilities ]; +} + +- (nullable NSArray<SDLRadioControlCapabilities *> *)radioControlCapabilities { + return [store sdl_objectsForName:SDLNameRadioControlCapabilities ofClass:SDLRadioControlCapabilities.class]; +} + +- (void)setButtonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities { + [store sdl_setObject:buttonCapabilities forName:SDLNameButtonCapabilities];} + +- (nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities { + return [store sdl_objectsForName:SDLNameButtonCapabilities ofClass:SDLButtonCapabilities.class]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLResult.h b/SmartDeviceLink/SDLResult.h index ee9cd6df0..dadc0bec2 100644 --- a/SmartDeviceLink/SDLResult.h +++ b/SmartDeviceLink/SDLResult.h @@ -185,3 +185,13 @@ 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; diff --git a/SmartDeviceLink/SDLResult.m b/SmartDeviceLink/SDLResult.m index 23b6cdd1c..77c8c5529 100644 --- a/SmartDeviceLink/SDLResult.m +++ b/SmartDeviceLink/SDLResult.m @@ -37,3 +37,6 @@ SDLResult const SDLResultSaved = @"SAVED"; SDLResult const SDLResultInvalidCertificate = @"INVALID_CERT"; SDLResult const SDLResultExpiredCertificate = @"EXPIRED_CERT"; SDLResult const SDLResultResumeFailed = @"RESUME_FAILED"; +SDLResult const SDLResultDataNotAvailable = @"DATA_NOT_AVAILABLE"; +SDLResult const SDLResultReadOnly = @"READ_ONLY"; + diff --git a/SmartDeviceLink/SDLSetInteriorVehicleData.h b/SmartDeviceLink/SDLSetInteriorVehicleData.h new file mode 100644 index 000000000..cf7e876a0 --- /dev/null +++ b/SmartDeviceLink/SDLSetInteriorVehicleData.h @@ -0,0 +1,28 @@ +// +// SDLSetInteriorVehicleData.h +// + +#import "SDLRPCRequest.h" + +@class SDLModuleData; + +/** + * This RPC allows a remote control type mobile application to + * change the settings of a specific remote control module. + */ + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLSetInteriorVehicleData : SDLRPCRequest + +- (instancetype)initWithModuleData:(SDLModuleData *)moduleData; + +/** + * The module data to set for the requested RC module. + * + */ +@property (strong, nonatomic) SDLModuleData *moduleData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSetInteriorVehicleData.m b/SmartDeviceLink/SDLSetInteriorVehicleData.m new file mode 100644 index 000000000..cb0836ec8 --- /dev/null +++ b/SmartDeviceLink/SDLSetInteriorVehicleData.m @@ -0,0 +1,41 @@ +// +// SDLSetInteriorVehicleData.m +// + +#import "SDLSetInteriorVehicleData.h" +#import "SDLNames.h" +#import "NSMutableDictionary+Store.h" +#import "SDLModuleData.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLSetInteriorVehicleData + +- (instancetype)init { + if (self = [super initWithName:SDLNameSetInteriorVehicleData]) { + } + return self; +} + +- (instancetype)initWithModuleData:(SDLModuleData *)moduleData { + self = [self init]; + if (!self) { + return nil; + } + + self.moduleData = moduleData; + + return self; +} + +- (void)setModuleData:(SDLModuleData *)moduleData { + [parameters sdl_setObject:moduleData forName:SDLNameModuleData]; +} + +- (SDLModuleData *)moduleData { + return [parameters sdl_objectForName:SDLNameModuleData ofClass:SDLModuleData.class]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h b/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h new file mode 100644 index 000000000..fd44ce317 --- /dev/null +++ b/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.h @@ -0,0 +1,24 @@ +// +// SDLSetInteriorVehicleDataResponse.h +// + +#import "SDLRPCResponse.h" +@class SDLModuleData; + +NS_ASSUME_NONNULL_BEGIN + +/** + * Used to set the values of one remote control module + * + */ +@interface SDLSetInteriorVehicleDataResponse : SDLRPCResponse + +/** + * The module data to set for the requested remote control module. + * + */ +@property (strong, nonatomic) SDLModuleData *moduleData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m b/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m new file mode 100644 index 000000000..ccb59ff55 --- /dev/null +++ b/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m @@ -0,0 +1,30 @@ +// +// SDLSetInteriorVehicleDataResponse.m +// + +#import "SDLSetInteriorVehicleDataResponse.h" +#import "SDLNames.h" +#import "SDLModuleData.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLSetInteriorVehicleDataResponse + +- (instancetype)init { + if (self = [super initWithName:SDLNameSetInteriorVehicleData]) { + } + return self; +} + +- (void)setModuleData:(SDLModuleData *)moduleData { + [parameters sdl_setObject:moduleData forName:SDLNameModuleData]; +} + +- (SDLModuleData *)moduleData { + return [parameters sdl_objectForName:SDLNameModuleData ofClass:SDLModuleData.class]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLShow.h b/SmartDeviceLink/SDLShow.h index 5c44548ae..8eef691a6 100644 --- a/SmartDeviceLink/SDLShow.h +++ b/SmartDeviceLink/SDLShow.h @@ -48,8 +48,6 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack; -- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets __deprecated_msg(("Use initWithMainField1:(NSString *)mainField1 (NSString *)mainField2 (NSString *)mainField3 (NSString *)mainField4 (SDLTextAlignment *)alignment (NSString *)statusBar (NSString *)mediaClock (NSString *)mediaTrack (SDLImage *)graphic (NSArray<SDLSoftButton *> *)softButtons (NSArray<NSString *> *)customPresets (SDLMetadataStruct *)metadata instead")); - - (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets textFieldMetadata:(nullable SDLMetadataTags *)metadata; /** diff --git a/SmartDeviceLink/SDLShow.m b/SmartDeviceLink/SDLShow.m index 80f4f9d18..388865d24 100644 --- a/SmartDeviceLink/SDLShow.m +++ b/SmartDeviceLink/SDLShow.m @@ -73,27 +73,6 @@ NS_ASSUME_NONNULL_BEGIN return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment statusBar:statusBar mediaClock:mediaClock mediaTrack:mediaTrack graphic:nil softButtons:nil customPresets:nil textFieldMetadata:nil]; } -- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets { - self = [self init]; - if (!self) { - return nil; - } - - self.mainField1 = mainField1; - self.mainField2 = mainField2; - self.mainField3 = mainField3; - self.mainField4 = mainField4; - self.statusBar = statusBar; - self.mediaClock = mediaClock; - self.mediaTrack = mediaTrack; - self.alignment = alignment; - self.graphic = graphic; - self.softButtons = [softButtons mutableCopy]; - self.customPresets = [customPresets mutableCopy]; - - return self; -} - - (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets textFieldMetadata:(nullable SDLMetadataTags *)metadata { self = [self init]; if (!self) { diff --git a/SmartDeviceLink/SDLStateMachine.m b/SmartDeviceLink/SDLStateMachine.m index f86a002b2..cc34d99e2 100644 --- a/SmartDeviceLink/SDLStateMachine.m +++ b/SmartDeviceLink/SDLStateMachine.m @@ -117,10 +117,11 @@ SDLStateMachineTransitionFormat const SDLStateMachineTransitionFormatDidEnter = return; } - if (oldState != nil && shouldCall) { + if (oldState != nil) { self.currentState = oldState; - [self transitionToState:state]; - } else if (shouldCall) { + } + + if (shouldCall) { SEL didEnter = NSSelectorFromString([NSString stringWithFormat:SDLStateMachineTransitionFormatDidEnter, state]); #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" @@ -128,9 +129,9 @@ SDLStateMachineTransitionFormat const SDLStateMachineTransitionFormatDidEnter = [self.target performSelector:didEnter]; #pragma clang diagnostic pop } - } else { - self.currentState = state; } + + self.currentState = state; } /** diff --git a/SmartDeviceLink/SDLStreamingMediaConfiguration.h b/SmartDeviceLink/SDLStreamingMediaConfiguration.h index f427c8e3c..e1bbb881a 100644 --- a/SmartDeviceLink/SDLStreamingMediaConfiguration.h +++ b/SmartDeviceLink/SDLStreamingMediaConfiguration.h @@ -29,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN @property (assign, nonatomic) SDLStreamingEncryptionFlag maximumDesiredEncryption; /** - * Properties to use for applications that utilitze the video encoder for streaming. + * Properties to use for applications that utilitze the video encoder for streaming. See VTCompressionProperties.h for more details. For example, you can set kVTCompressionPropertyKey_ExpectedFrameRate to set your expected framerate. */ @property (copy, nonatomic, nullable) NSDictionary<NSString *, id> *customVideoEncoderSettings; diff --git a/SmartDeviceLink/SDLStreamingMediaLifecycleManager.m b/SmartDeviceLink/SDLStreamingMediaLifecycleManager.m index 6b5baa9db..ecbbf88d8 100644 --- a/SmartDeviceLink/SDLStreamingMediaLifecycleManager.m +++ b/SmartDeviceLink/SDLStreamingMediaLifecycleManager.m @@ -58,7 +58,7 @@ SDLAudioStreamState *const SDLAudioStreamStateStarting = @"AudioStreamStarting"; SDLAudioStreamState *const SDLAudioStreamStateReady = @"AudioStreamReady"; SDLAudioStreamState *const SDLAudioStreamStateShuttingDown = @"AudioStreamShuttingDown"; -static NSUInteger const SDLFramesToSendOnBackground = 30; +static NSUInteger const FramesToSendOnBackground = 30; typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_Nullable capability); @@ -670,8 +670,13 @@ typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_N return; } - const CMTime interval = CMTimeMake(1, 30); - for (int frameCount = 0; frameCount < SDLFramesToSendOnBackground; frameCount++) { + 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]; diff --git a/SmartDeviceLink/SDLSyncMsgVersion.h b/SmartDeviceLink/SDLSyncMsgVersion.h index de5050889..87af0c1d3 100644 --- a/SmartDeviceLink/SDLSyncMsgVersion.h +++ b/SmartDeviceLink/SDLSyncMsgVersion.h @@ -14,10 +14,7 @@ NS_ASSUME_NONNULL_BEGIN @interface SDLSyncMsgVersion : SDLRPCStruct -// TODO: (Alex M.)[2016-12-1] Change from NSInteger to UInt8 -- (instancetype)initWithMajorVersion:(NSInteger)majorVersion minorVersion:(NSInteger)minorVersion __deprecated_msg("Use initWithMajorVersion:minorVersion:patchVersion: instead"); - -- (instancetype)initWithMajorVersion:(NSInteger)majorVersion minorVersion:(NSInteger)minorVersion patchVersion:(NSInteger)patchVersion; +- (instancetype)initWithMajorVersion:(UInt8)majorVersion minorVersion:(UInt8)minorVersion patchVersion:(UInt8)patchVersion; /** * @abstract The major version indicates versions that is not-compatible to previous versions diff --git a/SmartDeviceLink/SDLSyncMsgVersion.m b/SmartDeviceLink/SDLSyncMsgVersion.m index 780edb2fe..7d256ce14 100644 --- a/SmartDeviceLink/SDLSyncMsgVersion.m +++ b/SmartDeviceLink/SDLSyncMsgVersion.m @@ -11,20 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @implementation SDLSyncMsgVersion -- (instancetype)initWithMajorVersion:(NSInteger)majorVersion minorVersion:(NSInteger)minorVersion { - self = [self init]; - if (!self) { - return nil; - } - - self.majorVersion = @(majorVersion); - self.minorVersion = @(minorVersion); - self.patchVersion = @(0); - - return self; -} - -- (instancetype)initWithMajorVersion:(NSInteger)majorVersion minorVersion:(NSInteger)minorVersion patchVersion:(NSInteger)patchVersion { +- (instancetype)initWithMajorVersion:(UInt8)majorVersion minorVersion:(UInt8)minorVersion patchVersion:(UInt8)patchVersion { self = [self init]; if (!self) { return nil; diff --git a/SmartDeviceLink/SDLSystemCapability.h b/SmartDeviceLink/SDLSystemCapability.h index 8d1f8483f..3bcd54418 100644..100755 --- a/SmartDeviceLink/SDLSystemCapability.h +++ b/SmartDeviceLink/SDLSystemCapability.h @@ -14,6 +14,7 @@ @class SDLPhoneCapability; @class SDLNavigationCapability; @class SDLVideoStreamingCapability; +@class SDLRemoteControlCapabilities; NS_ASSUME_NONNULL_BEGIN @@ -29,6 +30,8 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithVideoStreamingCapability:(SDLVideoStreamingCapability *)capability; +- (instancetype)initWithRemoteControlCapability:(SDLRemoteControlCapabilities *)capability; + @property (strong, nonatomic) SDLSystemCapabilityType systemCapabilityType; @property (nullable, strong, nonatomic) SDLNavigationCapability *navigationCapability; @@ -37,6 +40,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nullable, strong, nonatomic) SDLVideoStreamingCapability *videoStreamingCapability; +@property (nullable, strong, nonatomic) SDLRemoteControlCapabilities *remoteControlCapability; + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSystemCapability.m b/SmartDeviceLink/SDLSystemCapability.m index 25f638912..5a469683d 100644..100755 --- a/SmartDeviceLink/SDLSystemCapability.m +++ b/SmartDeviceLink/SDLSystemCapability.m @@ -14,6 +14,7 @@ #import "SDLPhoneCapability.h" #import "SDLSystemCapabilityType.h" #import "SDLVideoStreamingCapability.h" +#import "SDLRemoteControlCapabilities.h" NS_ASSUME_NONNULL_BEGIN @@ -55,6 +56,18 @@ NS_ASSUME_NONNULL_BEGIN return self; } +- (instancetype)initWithRemoteControlCapability:(SDLRemoteControlCapabilities *)capability { + self = [self init]; + if (!self) { + return nil; + } + + self.systemCapabilityType = SDLSystemCapabilityTypeRemoteControl; + self.remoteControlCapability = capability; + + return self; +} + - (void)setSystemCapabilityType:(SDLSystemCapabilityType)type { [store sdl_setObject:type forName:SDLNameSystemCapabilityType]; } @@ -89,6 +102,14 @@ NS_ASSUME_NONNULL_BEGIN return [store sdl_objectForName:SDLNameVideoStreamingCapability ofClass:SDLVideoStreamingCapability.class]; } +- (void)setRemoteControlCapability:(nullable SDLRemoteControlCapabilities *)remoteControlCapability { + [store sdl_setObject:remoteControlCapability forName:SDLNameRemoteControlCapability]; +} + +- (nullable SDLRemoteControlCapabilities *)remoteControlCapability { + return [store sdl_objectForName:SDLNameRemoteControlCapability ofClass:SDLRemoteControlCapabilities.class]; +} + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSystemCapabilityType.h b/SmartDeviceLink/SDLSystemCapabilityType.h index e8a177a41..61f8f836a 100644..100755 --- a/SmartDeviceLink/SDLSystemCapabilityType.h +++ b/SmartDeviceLink/SDLSystemCapabilityType.h @@ -25,5 +25,11 @@ extern SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall; /** @abstract VIDEO_STREAMING + */ extern SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming; + +/** + @abstract REMOTE_CONTROL + */ +extern SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl; diff --git a/SmartDeviceLink/SDLSystemCapabilityType.m b/SmartDeviceLink/SDLSystemCapabilityType.m index 47a425c53..c8a25e755 100644..100755 --- a/SmartDeviceLink/SDLSystemCapabilityType.m +++ b/SmartDeviceLink/SDLSystemCapabilityType.m @@ -12,3 +12,4 @@ SDLSystemCapabilityType const SDLSystemCapabilityTypeNavigation = @"NAVIGATION"; SDLSystemCapabilityType const SDLSystemCapabilityTypePhoneCall = @"PHONE_CALL"; SDLSystemCapabilityType const SDLSystemCapabilityTypeVideoStreaming = @"VIDEO_STREAMING"; +SDLSystemCapabilityType const SDLSystemCapabilityTypeRemoteControl = @"REMOTE_CONTROL"; diff --git a/SmartDeviceLink/SDLTemperature.h b/SmartDeviceLink/SDLTemperature.h new file mode 100644 index 000000000..613c24ca6 --- /dev/null +++ b/SmartDeviceLink/SDLTemperature.h @@ -0,0 +1,29 @@ +// +// SDLTemperature.h +// + +#import "SDLRPCMessage.h" +#import "SDLTemperatureUnit.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLTemperature : SDLRPCStruct + +- (instancetype)initWithUnit:(SDLTemperatureUnit)unit value:(float)value; + +/** + * @abstract Temperature Unit + * + */ +@property (strong, nonatomic) SDLTemperatureUnit unit; + +/** + * @abstract Temperature Value in TemperatureUnit specified unit. Range depends on OEM and is not checked by SDL + * + * FLoat value + */ +@property (strong, nonatomic) NSNumber<SDLFloat> *value; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLTemperature.m b/SmartDeviceLink/SDLTemperature.m new file mode 100644 index 000000000..8d5c5a70f --- /dev/null +++ b/SmartDeviceLink/SDLTemperature.m @@ -0,0 +1,43 @@ +// +// SDLTemperature.m +// + +#import "SDLTemperature.h" +#import "SDLNames.h" +#import "NSMutableDictionary+Store.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLTemperature + +- (instancetype)initWithUnit:(SDLTemperatureUnit)unit value:(float)value { + self = [self init]; + if (!self) { + return nil; + } + + self.unit = unit; + self.value = @(value); + + return self; +} + +- (void)setUnit:(SDLTemperatureUnit)unit { + [store sdl_setObject:unit forName:SDLNameUnit]; +} + +- (SDLTemperatureUnit)unit { + return [store sdl_objectForName:SDLNameUnit]; +} + +- (void)setValue:(NSNumber<SDLFloat> *)value { + [store sdl_setObject:value forName:SDLNameValue]; +} + +- (NSNumber<SDLFloat> *)value { + return [store sdl_objectForName:SDLNameValue]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLTemperatureUnit.h b/SmartDeviceLink/SDLTemperatureUnit.h new file mode 100644 index 000000000..63c1a20d0 --- /dev/null +++ b/SmartDeviceLink/SDLTemperatureUnit.h @@ -0,0 +1,19 @@ +// +// SDLTemperatureUnit.h +// + + +#import "SDLEnum.h" + +typedef SDLEnum SDLTemperatureUnit SDL_SWIFT_ENUM; + +/** + @abstract Reflects the current HMI setting for temperature unit in Celsius + **/ +extern SDLTemperatureUnit const SDLTemperatureUnitCelsius; + + +/** + @abstract Reflects the current HMI setting for temperature unit in Fahrenheit + **/ +extern SDLTemperatureUnit const SDLTemperatureUnitFahrenheit; diff --git a/SmartDeviceLink/SDLTemperatureUnit.m b/SmartDeviceLink/SDLTemperatureUnit.m new file mode 100644 index 000000000..f54fcaaac --- /dev/null +++ b/SmartDeviceLink/SDLTemperatureUnit.m @@ -0,0 +1,8 @@ +// +// SDLTemperatureUnit.m +// + +#import "SDLTemperatureUnit.h" + +SDLTemperatureUnit const SDLTemperatureUnitCelsius = @"CELSIUS"; +SDLTemperatureUnit const SDLTemperatureUnitFahrenheit = @"FAHRENHEIT"; diff --git a/SmartDeviceLink/SDLTimer.h b/SmartDeviceLink/SDLTimer.h index 0382b7f67..cba9efefa 100644 --- a/SmartDeviceLink/SDLTimer.h +++ b/SmartDeviceLink/SDLTimer.h @@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN @property (assign, nonatomic) float duration; - (instancetype)init; -- (instancetype)initWithDuration:(float)duration __deprecated; +- (instancetype)initWithDuration:(float)duration; - (instancetype)initWithDuration:(float)duration repeat:(BOOL)repeat; - (void)start; - (void)cancel; diff --git a/SmartDeviceLink/SDLVentilationMode.h b/SmartDeviceLink/SDLVentilationMode.h new file mode 100644 index 000000000..b36bd2d6a --- /dev/null +++ b/SmartDeviceLink/SDLVentilationMode.h @@ -0,0 +1,28 @@ +// +// SDLVentilationMode.h +// + +#import "SDLEnum.h" + +typedef SDLEnum SDLVentilationMode SDL_SWIFT_ENUM; + +/** + * @abstract A SDLDefrostZone with the value of *UPPER* + */ +extern SDLVentilationMode const SDLVentilationModeUpper; + +/** + * @abstract A SDLDefrostZone with the value of *LOWER* + */ +extern SDLVentilationMode const SDLVentilationModeLower; + +/** + * @abstract A SDLDefrostZone with the value of *BOTH* + */ +extern SDLVentilationMode const SDLVentilationModeBoth; + +/** + * @abstract A SDLDefrostZone with the value of *NONE* + */ +extern SDLVentilationMode const SDLVentilationModeNone; + diff --git a/SmartDeviceLink/SDLVentilationMode.m b/SmartDeviceLink/SDLVentilationMode.m new file mode 100644 index 000000000..b4b26eef1 --- /dev/null +++ b/SmartDeviceLink/SDLVentilationMode.m @@ -0,0 +1,11 @@ +// +// SDLVentilationMode.m +// + +#import "SDLVentilationMode.h" + + +SDLVentilationMode const SDLVentilationModeUpper = @"UPPER"; +SDLVentilationMode const SDLVentilationModeLower = @"LOWER"; +SDLVentilationMode const SDLVentilationModeBoth = @"BOTH"; +SDLVentilationMode const SDLVentilationModeNone = @"NONE"; diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h index 3f72f59ff..81b343567 100644 --- a/SmartDeviceLink/SmartDeviceLink.h +++ b/SmartDeviceLink/SmartDeviceLink.h @@ -50,6 +50,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLAddSubMenu.h" #import "SDLAlert.h" #import "SDLAlertManeuver.h" +#import "SDLButtonPress.h" #import "SDLChangeRegistration.h" #import "SDLCreateInteractionChoiceSet.h" #import "SDLDeleteCommand.h" @@ -61,6 +62,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLEncodedSyncPData.h" #import "SDLEndAudioPassThru.h" #import "SDLGetDTCs.h" +#import "SDLGetInteriorVehicleData.h" #import "SDLGetSystemCapability.h" #import "SDLGetVehicleData.h" #import "SDLGetWayPoints.h" @@ -77,6 +79,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLSetAppIcon.h" #import "SDLSetDisplayLayout.h" #import "SDLSetGlobalProperties.h" +#import "SDLSetInteriorVehicleData.h" #import "SDLSetMediaClockTimer.h" #import "SDLShow.h" #import "SDLShowConstantTBT.h" @@ -97,6 +100,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLAddSubMenuResponse.h" #import "SDLAlertManeuverResponse.h" #import "SDLAlertResponse.h" +#import "SDLButtonPressResponse.h" #import "SDLChangeRegistrationResponse.h" #import "SDLCreateInteractionChoiceSetResponse.h" #import "SDLDeleteCommandResponse.h" @@ -109,6 +113,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLEndAudioPassThruResponse.h" #import "SDLGenericResponse.h" #import "SDLGetDTCsResponse.h" +#import "SDLGetInteriorVehicleDataResponse.h" #import "SDLGetSystemCapabilityResponse.h" #import "SDLGetVehicleDataResponse.h" #import "SDLGetWayPointsResponse.h" @@ -125,6 +130,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLSetAppIconResponse.h" #import "SDLSetDisplayLayoutResponse.h" #import "SDLSetGlobalPropertiesResponse.h" +#import "SDLSetInteriorVehicleDataResponse.h" #import "SDLSetMediaClockTimerResponse.h" #import "SDLShowConstantTBTResponse.h" #import "SDLShowResponse.h" @@ -150,6 +156,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLOnEncodedSyncPData.h" #import "SDLOnHMIStatus.h" #import "SDLOnHashChange.h" +#import "SDLOnInteriorVehicleData.h" #import "SDLOnKeyboardInput.h" #import "SDLOnLanguageChange.h" #import "SDLOnLockScreenStatus.h" @@ -170,6 +177,8 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLButtonCapabilities.h" #import "SDLChoice.h" #import "SDLClusterModeStatus.h" +#import "SDLClimateControlCapabilities.h" +#import "SDLClimateControlData.h" #import "SDLDIDResult.h" #import "SDLDateTime.h" #import "SDLDeviceInfo.h" @@ -190,6 +199,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLLocationDetails.h" #import "SDLMenuParams.h" #import "SDLMetadataTags.h" +#import "SDLModuleData.h" #import "SDLMyKey.h" #import "SDLNavigationCapability.h" #import "SDLOasisAddress.h" @@ -197,7 +207,11 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLPermissionItem.h" #import "SDLPhoneCapability.h" #import "SDLPresetBankCapabilities.h" +#import "SDLRadioControlCapabilities.h" +#import "SDLRadioControlData.h" +#import "SDLRDSData.h" #import "SDLRectangle.h" +#import "SDLRemoteControlCapabilities.h" #import "SDLScreenParams.h" #import "SDLSingleTireStatus.h" #import "SDLSoftButton.h" @@ -206,6 +220,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLSyncMsgVersion.h" #import "SDLSystemCapability.h" #import "SDLTTSChunk.h" +#import "SDLTemperature.h" #import "SDLTextField.h" #import "SDLTireStatus.h" #import "SDLTouchCoord.h" @@ -232,6 +247,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLCharacterSet.h" #import "SDLCompassDirection.h" #import "SDLComponentVolumeStatus.h" +#import "SDLDefrostZone.h" #import "SDLDeliveryMode.h" #import "SDLDeviceLevelStatus.h" #import "SDLDimension.h" @@ -258,6 +274,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLMaintenanceModeStatus.h" #import "SDLMediaClockFormat.h" #import "SDLMetadataType.h" +#import "SDLModuleType.h" #import "SDLPRNDL.h" #import "SDLPermissionStatus.h" #import "SDLPowerModeQualificationStatus.h" @@ -265,6 +282,8 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLPredefinedLayout.h" #import "SDLPrerecordedSpeech.h" #import "SDLPrimaryAudioSource.h" +#import "SDLRadioBand.h" +#import "SDLRadioState.h" #import "SDLRPCMessageType.h" #import "SDLRequestType.h" #import "SDLResult.h" @@ -275,6 +294,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLSystemCapabilityType.h" #import "SDLSystemContext.h" #import "SDLTBTState.h" +#import "SDLTemperatureUnit.h" #import "SDLTextAlignment.h" #import "SDLTextFieldName.h" #import "SDLTimerMode.h" @@ -287,6 +307,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLVehicleDataResultCode.h" #import "SDLVehicleDataStatus.h" #import "SDLVehicleDataType.h" +#import "SDLVentilationMode.h" #import "SDLVideoStreamingCodec.h" #import "SDLVideoStreamingProtocol.h" #import "SDLVrCapabilities.h" diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m index 358e9f816..6afb1f3cf 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLConfigurationSpec.m @@ -5,6 +5,7 @@ #import "SDLLifecycleConfiguration.h" #import "SDLLogConfiguration.h" #import "SDLLockScreenConfiguration.h" +#import "SDLStreamingMediaConfiguration.h" QuickSpecBegin(SDLConfigurationSpec) @@ -15,6 +16,7 @@ describe(@"a configuration", ^{ __block SDLLifecycleConfiguration *someLifecycleConfig = nil; __block SDLLockScreenConfiguration *someLockscreenConfig = nil; __block SDLLogConfiguration *someLogConfig = nil; + __block SDLStreamingMediaConfiguration *someStreamingConfig = nil; __block NSString *someAppName = nil; __block NSString *someAppId = nil; @@ -30,14 +32,43 @@ describe(@"a configuration", ^{ someLifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:someAppName appId:someAppId]; someLockscreenConfig = [SDLLockScreenConfiguration enabledConfigurationWithAppIcon:someImage backgroundColor:someBackgroundColor]; someLogConfig = [SDLLogConfiguration defaultConfiguration]; - - testConfig = [SDLConfiguration configurationWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig]; + someStreamingConfig = [SDLStreamingMediaConfiguration insecureConfiguration]; }); - it(@"should contain the correct configs", ^{ + it(@"should create correctly with initWithLifecycle:lockScreen:logging:", ^{ + 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()); + }); + + it(@"should create correctly with configurationWithLifecycle:lockScreen:logging:", ^{ + 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()); + }); + + it(@"should create correctly with initWithLifecycle:lockScreen:logging:streamingMedia:", ^{ + testConfig = [[SDLConfiguration alloc] initWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig streamingMedia:nil]; + + expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig)); + expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig)); + expect(testConfig.loggingConfig).to(equal(someLogConfig)); + expect(testConfig.streamingMediaConfig).to(beNil()); + }); + + it(@"should create correctly with configurationWithLifecycle:lockScreen:logging:streamingMedia:", ^{ + testConfig = [SDLConfiguration configurationWithLifecycle:someLifecycleConfig lockScreen:someLockscreenConfig logging:someLogConfig streamingMedia:nil]; + expect(testConfig.lifecycleConfig).to(equal(someLifecycleConfig)); expect(testConfig.lockScreenConfig).to(equal(someLockscreenConfig)); expect(testConfig.loggingConfig).to(equal(someLogConfig)); + expect(testConfig.streamingMediaConfig).to(beNil()); }); }); }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m index 48a8e690d..9a10d666a 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m @@ -12,6 +12,7 @@ #import "SDLLifecycleConfiguration.h" #import "SDLLockScreenConfiguration.h" #import "SDLLockScreenManager.h" +#import "SDLLogConfiguration.h" #import "SDLManagerDelegate.h" #import "SDLNotificationDispatcher.h" #import "SDLOnHashChange.h" @@ -58,7 +59,7 @@ QuickConfigurationEnd QuickSpecBegin(SDLLifecycleManagerSpec) -xdescribe(@"a lifecycle manager", ^{ +describe(@"a lifecycle manager", ^{ __block SDLLifecycleManager *testManager = nil; __block SDLConfiguration *testConfig = nil; @@ -79,7 +80,7 @@ xdescribe(@"a lifecycle manager", ^{ testLifecycleConfig.shortAppName = @"Short Name"; testLifecycleConfig.appType = SDLAppHMITypeNavigation; - testConfig = [SDLConfiguration configurationWithLifecycle:testLifecycleConfig lockScreen:[SDLLockScreenConfiguration disabledConfiguration]]; + testConfig = [SDLConfiguration configurationWithLifecycle:testLifecycleConfig lockScreen:[SDLLockScreenConfiguration disabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration]]; testManager = [[SDLLifecycleManager alloc] initWithConfiguration:testConfig delegate:managerDelegateMock]; testManager.lockScreenManager = lockScreenManagerMock; testManager.fileManager = fileManagerMock; @@ -87,7 +88,7 @@ xdescribe(@"a lifecycle manager", ^{ testManager.streamManager = streamingManagerMock; }); - it(@"should initialize properties", ^{ + xit(@"should initialize properties", ^{ expect(testManager.configuration).toNot(equal(testConfig)); // This is copied expect(testManager.delegate).to(equal(managerDelegateMock)); // TODO: Broken on OCMock 3.3.1 & Swift 3 Quick / Nimble expect(testManager.lifecycleState).to(match(SDLLifecycleStateStopped)); @@ -237,13 +238,14 @@ xdescribe(@"a lifecycle manager", ^{ OCMStub([permissionManagerMock startWithCompletionHandler:([OCMArg invokeBlockWithArgs:@(YES), permissionManagerStartError, nil])]); OCMStub([streamingManagerMock startWithProtocol:protocolMock]); - // Send an RAI response to move the lifecycle forward + // Send an RAI response & make sure we have an HMI status to move the lifecycle forward + testManager.hmiLevel = SDLHMILevelFull; [testManager.lifecycleStateMachine transitionToState:SDLLifecycleStateRegistered]; [NSThread sleepForTimeInterval:0.3]; }); it(@"should eventually reach the ready state", ^{ - expect(testManager.lifecycleState).toEventually(match(SDLLifecycleStateReady)); + expect(testManager.lifecycleState).toEventually(equal(SDLLifecycleStateReady)); OCMVerify([(SDLLockScreenManager *)lockScreenManagerMock start]); OCMVerify([fileManagerMock startWithCompletionHandler:[OCMArg any]]); OCMVerify([permissionManagerMock startWithCompletionHandler:[OCMArg any]]); @@ -304,9 +306,10 @@ xdescribe(@"a lifecycle manager", ^{ testHMIStatus.hmiLevel = testHMILevel; [testManager.notificationDispatcher postRPCNotificationNotification:SDLDidChangeHMIStatusNotification notification:testHMIStatus]; - - expect(@(readyHandlerSuccess)).to(equal(@YES)); - expect(readyHandlerError).toNot(beNil()); + + expect(testManager.lifecycleState).toEventually(equal(SDLLifecycleStateReady)); + expect(@(readyHandlerSuccess)).toEventually(equal(@YES)); + expect(readyHandlerError).toEventually(beNil()); }); }); }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m index 7c39d7b46..fa53d0de8 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLNotificationDispatcherSpec.m @@ -25,6 +25,7 @@ describe(@"a notification dispatcher", ^{ expect(@([testDispatcher respondsToSelector:@selector(onAddSubMenuResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onAlertManeuverResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onAlertResponse:)])).to(beTruthy()); + expect(@([testDispatcher respondsToSelector:@selector(onButtonPressResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onChangeRegistrationResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onCreateInteractionChoiceSetResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onDeleteCommandResponse:)])).to(beTruthy()); @@ -37,6 +38,7 @@ describe(@"a notification dispatcher", ^{ expect(@([testDispatcher respondsToSelector:@selector(onError:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onGenericResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onGetDTCsResponse:)])).to(beTruthy()); + expect(@([testDispatcher respondsToSelector:@selector(onGetInteriorVehicleDataResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onGetSystemCapabilityResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onGetVehicleDataResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onGetWayPointsResponse:)])).to(beTruthy()); @@ -68,6 +70,7 @@ describe(@"a notification dispatcher", ^{ expect(@([testDispatcher respondsToSelector:@selector(onSetAppIconResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onSetDisplayLayoutResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onSetGlobalPropertiesResponse:)])).to(beTruthy()); + expect(@([testDispatcher respondsToSelector:@selector(onSetInteriorVehicleDataResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onSetMediaClockTimerResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onShowConstantTBTResponse:)])).to(beTruthy()); expect(@([testDispatcher respondsToSelector:@selector(onShowResponse:)])).to(beTruthy()); diff --git a/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLV2ProtocolHeaderSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLV2ProtocolHeaderSpec.m index f62ddf57d..74969e062 100644 --- a/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLV2ProtocolHeaderSpec.m +++ b/SmartDeviceLinkTests/ProtocolSpecs/HeaderSpecs/SDLV2ProtocolHeaderSpec.m @@ -68,36 +68,6 @@ describe(@"Copy Tests", ^ { }); }); -describe(@"compressed deprecated spec", ^{ - describe(@"setting encrypted", ^{ - __block BOOL value = NO; - beforeEach(^{ - testHeader.encrypted = value; - }); - - it(@"should give the same value for compressed", ^{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - expect(@(testHeader.compressed)).to(equal(@(value))); -#pragma clang diagnostic pop - }); - }); - - describe(@"setting compressed", ^{ - __block BOOL value = YES; - beforeEach(^{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - testHeader.compressed = value; -#pragma clang diagnostic pop - }); - - it(@"should give the same value for compressed", ^{ - expect(@(testHeader.encrypted)).to(equal(@(value))); - }); - }); -}); - describe(@"Data Tests", ^ { it (@"Should convert to byte data correctly", ^ { expect(testHeader.data).to(equal(testData)); diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m index 037c569be..f00bfa300 100644 --- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLAppHMITypeSpec.m @@ -25,6 +25,7 @@ describe(@"Individual Enum Value Tests", ^ { expect(SDLAppHMITypeBackgroundProcess).to(equal(@"BACKGROUND_PROCESS")); expect(SDLAppHMITypeTesting).to(equal(@"TESTING")); expect(SDLAppHMITypeSystem).to(equal(@"SYSTEM")); + expect(SDLAppHMITypeRemoteControl).to(equal(@"REMOTE_CONTROL")); }); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLButtonNameSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLButtonNameSpec.m index aa0d73a37..68f6a851e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLButtonNameSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLButtonNameSpec.m @@ -31,6 +31,24 @@ describe(@"Individual Enum Value Tests", ^ { expect(SDLButtonNamePreset9).to(equal(@"PRESET_9")); expect(SDLButtonNameCustomButton).to(equal(@"CUSTOM_BUTTON")); expect(SDLButtonNameSearch).to(equal(@"SEARCH")); + expect(SDLButtonNameACMax).to(equal(@"AC_MAX")); + expect(SDLButtonNameAC).to(equal(@"AC")); + expect(SDLButtonNameRecirculate).to(equal(@"RECIRCULATE")); + expect(SDLButtonNameFanUp).to(equal(@"FAN_UP")); + expect(SDLButtonNameFanDown).to(equal(@"FAN_DOWN")); + expect(SDLButtonNameTempUp).to(equal(@"TEMP_UP")); + expect(SDLButtonNameTempDown).to(equal(@"TEMP_DOWN")); + expect(SDLButtonNameDefrostMax).to(equal(@"DEFROST_MAX")); + expect(SDLButtonNameDefrostRear).to(equal(@"DEFROST_REAR")); + expect(SDLButtonNameDefrost).to(equal(@"DEFROST")); + expect(SDLButtonNameUpperVent).to(equal(@"UPPER_VENT")); + expect(SDLButtonNameLowerVent).to(equal(@"LOWER_VENT")); + expect(SDLButtonNameVolumeUp).to(equal(@"VOLUME_UP")); + expect(SDLButtonNameVolumeDown).to(equal(@"VOLUME_DOWN")); + expect(SDLButtonNameEject).to(equal(@"EJECT")); + expect(SDLButtonNameSource).to(equal(@"SOURCE")); + expect(SDLButtonNameShuffle).to(equal(@"SHUFFLE")); + expect(SDLButtonNameRepeat).to(equal(@"REPEAT")); }); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRadioBandSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRadioBandSpec.m new file mode 100644 index 000000000..76e591302 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRadioBandSpec.m @@ -0,0 +1,22 @@ +// +// SDLRadioBandSpec.m +// SmartDeviceLink-iOS + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLRadioBand.h" + +QuickSpecBegin(SDLRadioBandSpec) + +describe(@"Individual Enum Value Tests", ^ { + it(@"Should match internal values", ^ { + expect(SDLRadioBandAM).to(equal(@"AM")); + expect(SDLRadioBandFM).to(equal(@"FM")); + expect(SDLRadioBandXM).to(equal(@"XM")); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRadioStateSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRadioStateSpec.m new file mode 100644 index 000000000..c838f41a3 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLRadioStateSpec.m @@ -0,0 +1,24 @@ +// +// SDLRadioStateSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLRadioState.h" + +QuickSpecBegin(SDLRadioStateSpec) + +describe(@"Individual Enum Value Tests", ^ { + it(@"Should match internal values", ^ { + expect(SDLRadioStateAcquiring).to(equal(@"ACQUIRING")); + expect(SDLRadioStateAcquired).to(equal(@"ACQUIRED")); + expect(SDLRadioStateMulticast).to(equal(@"MULTICAST")); + expect(SDLRadioStateNotFound).to(equal(@"NOT_FOUND")); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLResultSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLResultSpec.m index f2682b0b4..239140d19 100644 --- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLResultSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLResultSpec.m @@ -47,6 +47,9 @@ describe(@"Individual Enum Value Tests", ^ { expect(SDLResultInvalidCertificate).to(equal(@"INVALID_CERT")); expect(SDLResultExpiredCertificate).to(equal(@"EXPIRED_CERT")); expect(SDLResultResumeFailed).to(equal(@"RESUME_FAILED")); + expect(SDLResultDataNotAvailable).to(equal(@"DATA_NOT_AVAILABLE")); + expect(SDLResultReadOnly).to(equal(@"READ_ONLY")); + }); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m index cfc5d85f4..0acaa4b6e 100644..100755 --- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSystemCapabilityTypeSpec.m @@ -13,6 +13,7 @@ describe(@"Individual Enum Value Tests", ^ { expect(SDLSystemCapabilityTypeNavigation).to(equal(@"NAVIGATION")); expect(SDLSystemCapabilityTypePhoneCall).to(equal(@"PHONE_CALL")); expect(SDLSystemCapabilityTypeVideoStreaming).to(equal(@"VIDEO_STREAMING")); + expect(SDLSystemCapabilityTypeRemoteControl).to(equal(@"REMOTE_CONTROL")); }); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTemperatureUnitSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTemperatureUnitSpec.m new file mode 100644 index 000000000..434b23414 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTemperatureUnitSpec.m @@ -0,0 +1,22 @@ +// +// SDLTemperatureUnitSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLTemperatureUnit.h" + +QuickSpecBegin(SDLTemperatureUnitSpec) + +describe(@"Individual Enum Value Tests", ^ { + it(@"Should match internal values", ^ { + expect(SDLTemperatureUnitCelsius).to(equal(@"CELSIUS")); + expect(SDLTemperatureUnitFahrenheit).to(equal(@"FAHRENHEIT")); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVentilationModeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVentilationModeSpec.m new file mode 100644 index 000000000..9ee30f4b0 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVentilationModeSpec.m @@ -0,0 +1,24 @@ +// +// SDLVentilationModeSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLVentilationMode.h" + +QuickSpecBegin(SDLVentilationModeSpec) + +describe(@"Individual Enum Value Tests", ^ { + it(@"Should match internal values", ^ { + expect(SDLVentilationModeUpper).to(equal(@"UPPER")); + expect(SDLVentilationModeLower).to(equal(@"LOWER")); + expect(SDLVentilationModeBoth).to(equal(@"BOTH")); + expect(SDLVentilationModeNone).to(equal(@"NONE")); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnInteriorVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnInteriorVehicleDataSpec.m new file mode 100644 index 000000000..0a4badfe2 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnInteriorVehicleDataSpec.m @@ -0,0 +1,49 @@ +// +// SDLOnInteriorVehicleDataSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLOnInteriorVehicleData.h" +#import "SDLNames.h" +#import "SDLModuleData.h" + +QuickSpecBegin(SDLOnInteriorVehicleDataSpec) + +describe(@"Getter/Setter Tests", ^ { + __block SDLModuleData* someModuleData = nil; + + beforeEach(^{ + someModuleData = [[SDLModuleData alloc] init]; + }); + + it(@"Should set and get correctly", ^ { + SDLOnInteriorVehicleData* testNotification = [[SDLOnInteriorVehicleData alloc] init]; + + testNotification.moduleData = someModuleData; + + expect(testNotification.moduleData).to(equal(someModuleData)); + }); + + it(@"Should get correctly when initialized", ^ { + NSMutableDictionary<NSString *, id> *dict = [@{SDLNameNotification: + @{SDLNameParameters: + @{SDLNameModuleData:someModuleData}, + SDLNameOperationName:SDLNameOnInteriorVehicleData}} mutableCopy]; + SDLOnInteriorVehicleData* testNotification = [[SDLOnInteriorVehicleData alloc] initWithDictionary:dict]; + + expect(testNotification.moduleData).to(equal(someModuleData)); + }); + + it(@"Should return nil if not set", ^ { + SDLOnInteriorVehicleData* testNotification = [[SDLOnInteriorVehicleData alloc] init]; + + expect(testNotification.moduleData).to(beNil()); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m new file mode 100644 index 000000000..011c3782f --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m @@ -0,0 +1,63 @@ +// +// SDLButtonPressSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLNames.h" +#import "SDLButtonPress.h" +#import "SDLModuleType.h" +#import "SDLButtonName.h" +#import "SDLButtonPressMode.h" + +QuickSpecBegin(SDLButtonPressSpec) + +describe(@"Getter/Setter Tests", ^ { + it(@"Should set and get correctly", ^ { + SDLButtonPress* testRequest = [[SDLButtonPress alloc] init]; + + testRequest.moduleType = SDLModuleTypeClimate; + testRequest.buttonName = SDLButtonNameAC; + testRequest.buttonPressMode = SDLButtonPressModeShort; + + expect(testRequest.moduleType).to(equal(SDLModuleTypeClimate)); + 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 = [@{SDLNameRequest: + @{SDLNameParameters: + @{SDLNameModuleType : SDLModuleTypeClimate, + SDLNameButtonName : SDLButtonNameAC, + SDLNameButtonPressMode : SDLButtonPressModeShort}, + SDLNameOperationName:SDLNameButtonPress}} mutableCopy]; + SDLButtonPress* testRequest = [[SDLButtonPress alloc] initWithDictionary:dict]; + + expect(testRequest.moduleType).to(equal(SDLModuleTypeClimate)); + expect(testRequest.buttonName).to(equal(SDLButtonNameAC)); + expect(testRequest.buttonPressMode).to(equal(SDLButtonPressModeShort)); + }); + + it(@"Should get correctly when initialized with button name and module type properties", ^ { + SDLButtonPress* testRequest = [[SDLButtonPress alloc] initWithButtonName:SDLButtonNameAC moduleType:SDLModuleTypeClimate]; + + expect(testRequest.buttonName).to(equal(SDLButtonNameAC)); + expect(testRequest.moduleType).to(equal(SDLModuleTypeClimate)); + }); + + it(@"Should return nil if not set", ^ { + SDLButtonPress* testRequest = [[SDLButtonPress alloc] init]; + + expect(testRequest.moduleType).to(beNil()); + expect(testRequest.buttonName).to(beNil()); + expect(testRequest.buttonPressMode).to(beNil()); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m new file mode 100755 index 000000000..12dfceec7 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m @@ -0,0 +1,68 @@ +// +// SDLGetInteriorVehicleDataSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLGetInteriorVehicleData.h" +#import "SDLModuleType.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLGetInteriorVehicleDataSpec) + +describe(@"Getter/Setter Tests", ^ { + it(@"Should set and get correctly", ^ { + SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] init]; + testRequest.moduleType = SDLModuleTypeRadio; + testRequest.subscribe = @YES; + + expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio)); + expect(testRequest.subscribe).to(equal(@YES)); + }); + + it(@"Should get correctly when initialized with a dictionary", ^ { + NSMutableDictionary<NSString *, id> *dict = [@{SDLNameRequest: + @{SDLNameParameters: + @{SDLNameModuleType : SDLModuleTypeRadio, + SDLNameSubscribe : @YES}, + SDLNameOperationName:SDLNameGetInteriorVehicleData}} mutableCopy]; + SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initWithDictionary:dict]; + + expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio)); + expect(testRequest.subscribe).to(equal(@YES)); + }); + + it(@"Should get correctly when initialized with module type", ^ { + SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initWithModuleType:SDLModuleTypeRadio]; + + expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio)); + }); + + it(@"Should get correctly when initialized with module type and subscribe", ^ { + SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initAndSubscribeToModuleType:SDLModuleTypeRadio]; + + expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio)); + expect(testRequest.subscribe).to(equal(@YES)); + }); + + it(@"Should get correctly when initialized with module type and unsubscribe", ^ { + SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initAndUnsubscribeToModuleType:SDLModuleTypeRadio]; + + expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio)); + expect(testRequest.subscribe).to(equal(@NO)); + }); + + + it(@"Should return nil if not set", ^ { + SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] init]; + + expect(testRequest.moduleType).to(beNil()); + expect(testRequest.subscribe).to(beNil()); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m index d37f88bf3..99feed6f3 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m @@ -39,8 +39,8 @@ describe(@"Initialization tests", ^{ expect(testRequest.systemCapabilityType).to(beNil()); }); - it(@"should initialize correctly with initWithType:", ^{ - SDLGetSystemCapability *testRequest = [[SDLGetSystemCapability alloc] initWithType:SDLSystemCapabilityTypePhoneCall]; + it(@"Should get correctly when initialized with systemCapabilityType", ^ { + SDLGetSystemCapability* testRequest = [[SDLGetSystemCapability alloc] initWithType:SDLSystemCapabilityTypePhoneCall]; expect(testRequest.systemCapabilityType).to(equal(SDLSystemCapabilityTypePhoneCall)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetInteriorVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetInteriorVehicleDataSpec.m new file mode 100644 index 000000000..5eb39c8f2 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetInteriorVehicleDataSpec.m @@ -0,0 +1,51 @@ +// +// SDLSetInteriorVehicleDataSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLSetInteriorVehicleData.h" +#import "SDLNames.h" +#import "SDLModuleData.h" + + +QuickSpecBegin(SDLSetInteriorVehicleDataSpec) + +SDLModuleData *someModuleData = [[SDLModuleData alloc] init]; + +describe(@"Getter/Setter Tests", ^ { + it(@"Should set and get correctly", ^ { + SDLSetInteriorVehicleData* testRequest = [[SDLSetInteriorVehicleData alloc] init]; + testRequest.moduleData = someModuleData; + + expect(testRequest.moduleData).to(equal(someModuleData)); + }); + + it(@"Should get correctly when initialized", ^ { + NSMutableDictionary<NSString *, id> *dict = [@{SDLNameRequest: + @{SDLNameParameters: + @{SDLNameModuleData : someModuleData}, + SDLNameOperationName:SDLNameSetInteriorVehicleData}} mutableCopy]; + SDLSetInteriorVehicleData* testRequest = [[SDLSetInteriorVehicleData alloc] initWithDictionary:dict]; + + expect(testRequest.moduleData).to(equal(someModuleData)); + }); + + it(@"Should get correctly when initialized with module data", ^ { + SDLSetInteriorVehicleData* testRequest = [[SDLSetInteriorVehicleData alloc] initWithModuleData:someModuleData]; + + expect(testRequest.moduleData).to(equal(someModuleData)); + }); + + it(@"Should return nil if not set", ^ { + SDLSetInteriorVehicleData* testRequest = [[SDLSetInteriorVehicleData alloc] init]; + + expect(testRequest.moduleData).to(beNil()); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLButtonPressResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLButtonPressResponseSpec.m new file mode 100644 index 000000000..d9fc72fc8 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLButtonPressResponseSpec.m @@ -0,0 +1,16 @@ +// +// SDLButtonPressResponseSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLButtonPressResponse.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLButtonPressResponseSpec) + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataResponseSpec.m new file mode 100644 index 000000000..7878eedce --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataResponseSpec.m @@ -0,0 +1,56 @@ +// +// SDLGetInteriorVehicleDataResponseSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLGetInteriorVehicleDataResponse.h" +#import "SDLModuleData.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLGetInteriorVehicleDataResponseSpec) + +describe(@"Getter/Setter Tests", ^ { + __block SDLModuleData* someModuleData = nil; + + beforeEach(^{ + someModuleData = [[SDLModuleData alloc] init]; + }); + + it(@"Should set and get correctly", ^ { + SDLGetInteriorVehicleDataResponse* testResponse = [[SDLGetInteriorVehicleDataResponse alloc] init]; + + testResponse.moduleData = someModuleData; + testResponse.isSubscribed = @NO; + + expect(testResponse.moduleData).to(equal(someModuleData)); + expect(testResponse.isSubscribed).to(equal(@NO)); + }); + + + + it(@"Should get correctly when initialized", ^ { + NSMutableDictionary<NSString *, id> *dict = [@{SDLNameResponse: + @{SDLNameParameters: + @{SDLNameModuleData:someModuleData, + SDLNameIsSubscribed:@NO}, + SDLNameOperationName:SDLNameGetInteriorVehicleData}} mutableCopy]; + SDLGetInteriorVehicleDataResponse* testResponse = [[SDLGetInteriorVehicleDataResponse alloc] initWithDictionary:dict]; + + expect(testResponse.moduleData).to(equal(someModuleData)); + expect(testResponse.isSubscribed).to(equal(@NO)); + }); + + it(@"Should return nil if not set", ^ { + SDLGetInteriorVehicleDataResponse* testResponse = [[SDLGetInteriorVehicleDataResponse alloc] init]; + + expect(testResponse.moduleData).to(beNil()); + expect(testResponse.isSubscribed).to(beNil()); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetInteriorVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetInteriorVehicleDataResponseSpec.m new file mode 100644 index 000000000..a41210e91 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetInteriorVehicleDataResponseSpec.m @@ -0,0 +1,50 @@ +// +// SDLSetInteriorVehicleDataResponseSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLSetInteriorVehicleDataResponse.h" +#import "SDLModuleData.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLSetInteriorVehicleDataResponseSpec) + +describe(@"Getter/Setter Tests", ^ { + __block SDLModuleData* someModuleData = nil; + + beforeEach(^{ + someModuleData = [[SDLModuleData alloc] init]; + }); + + it(@"Should set and get correctly", ^ { + SDLSetInteriorVehicleDataResponse* testResponse = [[SDLSetInteriorVehicleDataResponse alloc] init]; + testResponse.moduleData = someModuleData; + + expect(testResponse.moduleData).to(equal(someModuleData)); + }); + + + + it(@"Should get correctly when initialized", ^ { + NSMutableDictionary<NSString *, id> *dict = [@{SDLNameResponse: + @{SDLNameParameters: + @{SDLNameModuleData:someModuleData}, + SDLNameOperationName:SDLNameSetInteriorVehicleData}} mutableCopy]; + SDLSetInteriorVehicleDataResponse* testResponse = [[SDLSetInteriorVehicleDataResponse alloc] initWithDictionary:dict]; + + expect(testResponse.moduleData).to(equal(someModuleData)); + }); + + it(@"Should return nil if not set", ^ { + SDLSetInteriorVehicleDataResponse* testResponse = [[SDLSetInteriorVehicleDataResponse alloc] init]; + + expect(testResponse.moduleData).to(beNil()); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m new file mode 100644 index 000000000..d15d63185 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m @@ -0,0 +1,113 @@ +// +// SDLClimateControlCapabilitiesSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLClimateControlCapabilities.h" +#import "SDLDefrostZone.h" +#import "SDLVentilationMode.h" +#import "SDLNames.h" + + +QuickSpecBegin(SDLClimateControlCapabilitiesSpec) + +describe(@"Getter/Setter Tests", ^ { + it(@"Should set and get correctly", ^ { + + SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] init]; + testStruct.moduleName = @"Name"; + testStruct.fanSpeedAvailable = @YES; + testStruct.desiredTemperatureAvailable = @NO; + testStruct.acEnableAvailable = @NO; + testStruct.acMaxEnableAvailable = @NO; + testStruct.circulateAirEnableAvailable = @YES; + testStruct.autoModeEnableAvailable = @NO; + testStruct.dualModeEnableAvailable = @NO; + testStruct.defrostZoneAvailable = @YES; + testStruct.defrostZone = [@[SDLDefrostZoneFront] copy]; + testStruct.ventilationModeAvailable = @NO; + testStruct.ventilationMode = [@[SDLVentilationModeUpper] copy]; + + expect(testStruct.moduleName).to(equal(@"Name")); + expect(testStruct.fanSpeedAvailable).to(equal(@YES)); + expect(testStruct.desiredTemperatureAvailable).to(equal(@NO)); + expect(testStruct.acEnableAvailable).to(equal(@NO)); + expect(testStruct.acMaxEnableAvailable).to(equal(@NO)); + expect(testStruct.circulateAirEnableAvailable).to(equal(@YES)); + expect(testStruct.autoModeEnableAvailable).to(equal(@NO)); + expect(testStruct.dualModeEnableAvailable).to(equal(@NO)); + expect(testStruct.defrostZoneAvailable).to(equal(@YES)); + expect(testStruct.defrostZone).to(equal([@[SDLDefrostZoneFront] copy])); + expect(testStruct.ventilationModeAvailable).to(equal(@NO)); + expect(testStruct.ventilationMode).to(equal([@[SDLVentilationModeUpper] copy])); + }); + + it(@"Should get correctly when initialized", ^ { + NSMutableDictionary<NSString *, id> *dict = [@{SDLNameModuleName:@"Name", + SDLNameFanSpeedAvailable:@YES, + SDLNameDesiredTemperatureAvailable:@NO, + SDLNameACEnableAvailable:@NO, + SDLNameACMaxEnableAvailable:@NO, + SDLNameCirculateAirEnableAvailable:@YES, + SDLNameAutoModeEnableAvailable:@NO, + SDLNameDualModeEnableAvailable:@NO, + SDLNameDefrostZoneAvailable:@YES, + SDLNameDefrostZone:[@[SDLDefrostZoneFront] copy], + SDLNameVentilationModeAvailable:@NO, + SDLNameVentilationMode:[@[SDLVentilationModeUpper] copy]} mutableCopy]; + SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] initWithDictionary:dict]; + + expect(testStruct.moduleName).to(equal(@"Name")); + expect(testStruct.fanSpeedAvailable).to(equal(@YES)); + expect(testStruct.desiredTemperatureAvailable).to(equal(@NO)); + expect(testStruct.acEnableAvailable).to(equal(@NO)); + expect(testStruct.acMaxEnableAvailable).to(equal(@NO)); + expect(testStruct.circulateAirEnableAvailable).to(equal(@YES)); + expect(testStruct.autoModeEnableAvailable).to(equal(@NO)); + expect(testStruct.dualModeEnableAvailable).to(equal(@NO)); + expect(testStruct.defrostZoneAvailable).to(equal(@YES)); + expect(testStruct.defrostZone).to(equal([@[SDLDefrostZoneFront] copy])); + expect(testStruct.ventilationModeAvailable).to(equal(@NO)); + expect(testStruct.ventilationMode).to(equal([@[SDLVentilationModeUpper] copy])); + }); + + it(@"Should get correctly when initialized with module data and other climate control capabilities parameters", ^ { + 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.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)); + }); + + it(@"Should return nil if not set", ^ { + SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] init]; + + expect(testStruct.moduleName).to(beNil()); + expect(testStruct.fanSpeedAvailable).to(beNil()); + expect(testStruct.desiredTemperatureAvailable).to(beNil()); + expect(testStruct.acEnableAvailable).to(beNil()); + expect(testStruct.acMaxEnableAvailable).to(beNil()); + expect(testStruct.circulateAirEnableAvailable).to(beNil()); + expect(testStruct.autoModeEnableAvailable).to(beNil()); + expect(testStruct.dualModeEnableAvailable).to(beNil()); + expect(testStruct.defrostZoneAvailable).to(beNil()); + expect(testStruct.defrostZone).to(beNil()); + expect(testStruct.ventilationModeAvailable).to(beNil()); + expect(testStruct.ventilationMode).to(beNil()); + + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m new file mode 100644 index 000000000..3ff841b8d --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m @@ -0,0 +1,110 @@ +// +// SDLClimateControlDataSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLClimateControlData.h" +#import "SDLTemperature.h" +#import "SDLDefrostZone.h" +#import "SDLVentilationMode.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLClimateControlDataSpec) + +describe(@"Getter/Setter Tests", ^ { + __block SDLTemperature* currentTemp = nil; + __block SDLTemperature* desiredTemp = nil; + + beforeEach(^{ + currentTemp = [[SDLTemperature alloc] init]; + desiredTemp = [[SDLTemperature alloc] init]; + }); + + it(@"Should set and get correctly", ^ { + SDLClimateControlData* testStruct = [[SDLClimateControlData alloc] init]; + + testStruct.fanSpeed = @43; + testStruct.currentTemperature = currentTemp; + testStruct.desiredTemperature = desiredTemp; + testStruct.acEnable = @YES; + testStruct.circulateAirEnable = @YES; + testStruct.autoModeEnable = @NO; + testStruct.defrostZone = SDLDefrostZoneFront; + testStruct.dualModeEnable = @NO; + testStruct.acMaxEnable = @YES; + testStruct.ventilationMode = SDLVentilationModeBoth; + + expect(testStruct.fanSpeed).to(equal(@43)); + expect(testStruct.currentTemperature).to(equal(currentTemp)); + 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)); + }); + + 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]; + + 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)); + }); + + it(@"Should get correctly when initialized with a dictionary", ^ { + NSMutableDictionary<NSString *, id> *dict = [@{SDLNameFanSpeed : @43, + SDLNameCurrentTemperature : currentTemp, + SDLNameDesiredTemperature : desiredTemp, + SDLNameACEnable : @YES, + SDLNameCirculateAirEnable : @YES, + SDLNameAutoModeEnable : @NO, + SDLNameDefrostZone : SDLDefrostZoneFront, + SDLNameDualModeEnable : @NO, + SDLNameACMaxEnable : @YES, + SDLNameVentilationMode :SDLVentilationModeBoth} mutableCopy]; + SDLClimateControlData* testStruct = [[SDLClimateControlData alloc] initWithDictionary:dict]; + + expect(testStruct.fanSpeed).to(equal(@43)); + expect(testStruct.currentTemperature).to(equal(currentTemp)); + 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)); + }); + + it(@"Should return nil if not set", ^ { + SDLClimateControlData* testStruct = [[SDLClimateControlData alloc] init]; + + expect(testStruct.fanSpeed).to(beNil()); + expect(testStruct.currentTemperature).to(beNil()); + expect(testStruct.desiredTemperature).to(beNil()); + expect(testStruct.acEnable).to(beNil()); + expect(testStruct.circulateAirEnable).to(beNil()); + expect(testStruct.autoModeEnable).to(beNil()); + expect(testStruct.defrostZone).to(beNil()); + expect(testStruct.dualModeEnable).to(beNil()); + expect(testStruct.acMaxEnable).to(beNil()); + expect(testStruct.ventilationMode).to(beNil()); + }); + +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLModuleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLModuleDataSpec.m new file mode 100644 index 000000000..ee14ff803 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLModuleDataSpec.m @@ -0,0 +1,71 @@ +// +// SDLModuleDataSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLModuleData.h" +#import "SDLModuleType.h" +#import "SDLClimateControlData.h" +#import "SDLRadioControlData.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLModuleDataSpec) + +describe(@"Initialization tests", ^{ + __block SDLRadioControlData* someRadioData = [[SDLRadioControlData alloc] init]; + __block SDLClimateControlData* someClimateData = [[SDLClimateControlData alloc] init]; + + it(@"should properly initialize init", ^{ + SDLModuleData* testStruct = [[SDLModuleData alloc] init]; + + expect(testStruct.moduleType).to(beNil()); + expect(testStruct.radioControlData).to(beNil()); + expect(testStruct.climateControlData).to(beNil()); + }); + + it(@"should properly initialize initWithDictionary", ^{ + + NSMutableDictionary* dict = [@{SDLNameModuleType:SDLModuleTypeRadio, + SDLNameRadioControlData:someRadioData, + SDLNameClimateControlData:someClimateData} mutableCopy]; + SDLModuleData* testStruct = [[SDLModuleData alloc] initWithDictionary:dict]; + + expect(testStruct.moduleType).to(equal(SDLModuleTypeRadio)); + expect(testStruct.radioControlData).to(equal(someRadioData)); + expect(testStruct.climateControlData).to(equal(someClimateData)); + }); + + it(@"Should set and get correctly", ^{ + SDLModuleData* testStruct = [[SDLModuleData alloc] init]; + testStruct.moduleType = SDLModuleTypeRadio; + testStruct.radioControlData = someRadioData; + testStruct.climateControlData = someClimateData; + + expect(testStruct.moduleType).to(equal(SDLModuleTypeRadio)); + expect(testStruct.radioControlData).to(equal(someRadioData)); + expect(testStruct.climateControlData).to(equal(someClimateData)); + }); + + it(@"Should get correctly when initialized with RadioControlData", ^ { + SDLModuleData* testStruct = [[SDLModuleData alloc] initWithRadioControlData:someRadioData]; + + expect(testStruct.moduleType).to(equal(SDLModuleTypeRadio)); + expect(testStruct.radioControlData).to(equal(someRadioData)); + expect(testStruct.climateControlData).to(beNil()); + }); + + it(@"Should get correctly when initialized with ClimateControlData", ^ { + SDLModuleData* testStruct = [[SDLModuleData alloc] initWithClimateControlData:someClimateData]; + + expect(testStruct.moduleType).to(equal(SDLModuleTypeClimate)); + expect(testStruct.climateControlData).to(equal(someClimateData)); + expect(testStruct.radioControlData).to(beNil()); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRDSDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRDSDataSpec.m new file mode 100644 index 000000000..414aaa22c --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRDSDataSpec.m @@ -0,0 +1,89 @@ +// +// SDLRDSDataSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLRDSData.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLRDSDataSpec) + +describe(@"Initialization tests", ^{ + + it(@"should properly initialize init", ^{ + SDLRDSData* testStruct = [[SDLRDSData alloc] init]; + + expect(testStruct.programService).to(beNil()); + expect(testStruct.radioText).to(beNil()); + expect(testStruct.clockText).to(beNil()); + expect(testStruct.programIdentification).to(beNil()); + expect(testStruct.programType).to(beNil()); + expect(testStruct.trafficProgramIdentification).to(beNil()); + expect(testStruct.trafficAnnouncementIdentification).to(beNil()); + expect(testStruct.region).to(beNil()); + }); + + it(@"should properly initialize initWithDictionary", ^{ + + NSMutableDictionary* dict = [@{SDLNameProgramService : @"ps", + SDLNameRadioText : @"rt", + SDLNameClockText : @"2017-07-25T19:20:30-5:00", + SDLNameProgramIdentification : @"pi", + SDLNameProgramType : @5, + SDLNameTrafficProgramIdentification : @NO, + SDLNameTrafficAnnouncementIdentification : @YES, + SDLNameRegion : @"reg"} mutableCopy]; + SDLRDSData* testStruct = [[SDLRDSData alloc] initWithDictionary:dict]; + + expect(testStruct.programService).to(equal(@"ps")); + expect(testStruct.radioText).to(equal(@"rt")); + expect(testStruct.clockText).to(equal(@"2017-07-25T19:20:30-5:00")); + expect(testStruct.programIdentification).to(equal(@"pi")); + expect(testStruct.programType).to(equal(@5)); + expect(testStruct.trafficProgramIdentification).to(equal(@NO)); + expect(testStruct.trafficAnnouncementIdentification).to(equal(@YES)); + expect(testStruct.region).to(equal(@"reg")); + }); + + it(@"Should set and get correctly", ^{ + SDLRDSData* testStruct = [[SDLRDSData alloc] init]; + + testStruct.programService = @"ps"; + testStruct.radioText = @"rt"; + testStruct.clockText = @"2017-07-25T19:20:30-5:00"; + testStruct.programIdentification = @"pi"; + testStruct.programType = @5; + testStruct.trafficProgramIdentification = @NO; + testStruct.trafficAnnouncementIdentification = @YES; + testStruct.region = @"reg"; + + expect(testStruct.programService).to(equal(@"ps")); + expect(testStruct.radioText).to(equal(@"rt")); + expect(testStruct.clockText).to(equal(@"2017-07-25T19:20:30-5:00")); + expect(testStruct.programIdentification).to(equal(@"pi")); + expect(testStruct.programType).to(equal(@5)); + expect(testStruct.trafficProgramIdentification).to(equal(@NO)); + expect(testStruct.trafficAnnouncementIdentification).to(equal(@YES)); + expect(testStruct.region).to(equal(@"reg")); + }); + + it(@"Should get correctly when initialized with Program serive and other RDS parameters", ^ { + SDLRDSData* testStruct = [[SDLRDSData alloc] initWithProgramService:@"ps" radioText:@"rt" clockText:@"2017-07-25T19:20:30-5:00" programIdentification:@"pi" programType:@5 trafficProgramIdentification:@NO trafficAnnouncementIdentification:@YES region:@"reg"]; + + expect(testStruct.programService).to(equal(@"ps")); + expect(testStruct.radioText).to(equal(@"rt")); + expect(testStruct.clockText).to(equal(@"2017-07-25T19:20:30-5:00")); + expect(testStruct.programIdentification).to(equal(@"pi")); + expect(testStruct.programType).to(equal(@5)); + expect(testStruct.trafficProgramIdentification).to(equal(@NO)); + expect(testStruct.trafficAnnouncementIdentification).to(equal(@YES)); + expect(testStruct.region).to(equal(@"reg")); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m new file mode 100644 index 000000000..d6e07fe11 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m @@ -0,0 +1,101 @@ +// +// SDLRadioControlCapabilitiesSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLRadioControlCapabilities.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLRadioControlCapabilitiesSpec) + +describe(@"Initialization tests", ^{ + + it(@"should properly initialize init", ^{ + SDLRadioControlCapabilities* testStruct = [[SDLRadioControlCapabilities alloc] init]; + + expect(testStruct.moduleName).to(beNil()); + expect(testStruct.radioEnableAvailable).to(beNil()); + expect(testStruct.radioBandAvailable).to(beNil()); + expect(testStruct.radioFrequencyAvailable).to(beNil()); + expect(testStruct.hdChannelAvailable).to(beNil()); + expect(testStruct.rdsDataAvailable).to(beNil()); + expect(testStruct.availableHDsAvailable).to(beNil()); + expect(testStruct.stateAvailable).to(beNil()); + expect(testStruct.signalStrengthAvailable).to(beNil()); + expect(testStruct.signalChangeThresholdAvailable).to(beNil()); + }); + + it(@"should properly initialize initWithDictionary", ^{ + + NSMutableDictionary* dict = [@{SDLNameModuleName : @"someName", + SDLNameRadioEnableAvailable : @YES, + SDLNameRadioBandAvailable : @YES, + SDLNameRadioFrequencyAvailable : @YES, + SDLNameHDChannelAvailable : @NO, + SDLNameRDSDataAvailable : @NO, + SDLNameAvailableHDsAvailable : @NO, + SDLNameStateAvailable : @YES, + SDLNameSignalStrengthAvailable : @YES, + SDLNameSignalChangeThresholdAvailable : @NO} mutableCopy]; + SDLRadioControlCapabilities* testStruct = [[SDLRadioControlCapabilities alloc] initWithDictionary:dict]; + + expect(testStruct.moduleName).to(equal(@"someName")); + expect(testStruct.radioEnableAvailable).to(equal(@YES)); + expect(testStruct.radioBandAvailable).to(equal(@YES)); + 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)); + }); + + it(@"Should set and get correctly", ^{ + SDLRadioControlCapabilities* testStruct = [[SDLRadioControlCapabilities alloc] init]; + + testStruct.moduleName = @"someName"; + testStruct.radioEnableAvailable = @YES; + testStruct.radioBandAvailable = @YES; + testStruct.radioFrequencyAvailable = @YES; + testStruct.hdChannelAvailable = @NO; + testStruct.rdsDataAvailable = @NO; + testStruct.availableHDsAvailable = @NO; + testStruct.stateAvailable = @YES; + testStruct.signalStrengthAvailable = @YES; + testStruct.signalChangeThresholdAvailable = @NO; + + expect(testStruct.moduleName).to(equal(@"someName")); + expect(testStruct.radioEnableAvailable).to(equal(@YES)); + expect(testStruct.radioBandAvailable).to(equal(@YES)); + 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)); + }); + + it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ { + 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.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)); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m new file mode 100644 index 000000000..4a5ebee64 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m @@ -0,0 +1,99 @@ +// +// SDLRadioControlDataSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLRadioControlData.h" +#import "SDLRadioBand.h" +#import "SDLRadioState.h" +#import "SDLRDSData.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLRadioControlDataSpec) +__block SDLRDSData* someRdsData = [[SDLRDSData alloc] init]; + +describe(@"Initialization tests", ^{ + + it(@"should properly initialize init", ^{ + SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] init]; + + expect(testStruct.frequencyInteger).to(beNil()); + expect(testStruct.frequencyFraction).to(beNil()); + expect(testStruct.band).to(beNil()); + expect(testStruct.rdsData).to(beNil()); + expect(testStruct.availableHDs).to(beNil()); + expect(testStruct.hdChannel).to(beNil()); + expect(testStruct.signalStrength).to(beNil()); + expect(testStruct.signalChangeThreshold).to(beNil()); + expect(testStruct.radioEnable).to(beNil()); + expect(testStruct.state).to(beNil()); + }); + + it(@"should properly initialize initWithDictionary", ^{ + + NSMutableDictionary* dict = [@{SDLNameFrequencyInteger : @101, + SDLNameFrequencyFraction : @7, + SDLNameBand : SDLRadioBandAM, + SDLNameRDSData : someRdsData, + SDLNameAvailableHDs : @2, + SDLNameHDChannel : @2, + SDLNameSignalStrength : @54, + SDLNameSignalChangeThreshold : @76, + SDLNameRadioEnable : @YES, + SDLNameState : SDLRadioStateNotFound} mutableCopy]; + SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithDictionary:dict]; + + expect(testStruct.frequencyInteger).to(equal(@101)); + expect(testStruct.frequencyFraction).to(equal(@7)); + expect(testStruct.band).to(equal(SDLRadioBandAM)); + expect(testStruct.rdsData).to(equal(someRdsData)); + expect(testStruct.availableHDs).to(equal(@2)); + expect(testStruct.hdChannel).to(equal(@2)); + expect(testStruct.signalStrength).to(equal(@54)); + expect(testStruct.signalChangeThreshold).to(equal(@76)); + expect(testStruct.radioEnable).to(equal(@YES)); + expect(testStruct.state).to(equal(SDLRadioStateNotFound)); + }); + + it(@"Should set and get correctly", ^{ + SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] init]; + testStruct.frequencyInteger = @101; + testStruct.frequencyFraction = @7; + testStruct.band = SDLRadioBandAM; + testStruct.rdsData = someRdsData; + testStruct.availableHDs = @2; + testStruct.hdChannel = @2; + testStruct.signalStrength = @54; + testStruct.signalChangeThreshold = @76; + testStruct.radioEnable = @YES; + testStruct.state = SDLRadioStateNotFound; + + expect(testStruct.frequencyInteger).to(equal(@101)); + expect(testStruct.frequencyFraction).to(equal(@7)); + expect(testStruct.band).to(equal(SDLRadioBandAM)); + expect(testStruct.rdsData).to(equal(someRdsData)); + expect(testStruct.availableHDs).to(equal(@2)); + expect(testStruct.hdChannel).to(equal(@2)); + expect(testStruct.signalStrength).to(equal(@54)); + expect(testStruct.signalChangeThreshold).to(equal(@76)); + expect(testStruct.radioEnable).to(equal(@YES)); + expect(testStruct.state).to(equal(SDLRadioStateNotFound)); + }); + + it(@"Should get correctly when initialized with Module Name and other radio control capabilite's parameters", ^ { + 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)); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m new file mode 100644 index 000000000..0dc04323a --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m @@ -0,0 +1,66 @@ +// +// SDLRemoteControlCapabilitiesSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLRemoteControlCapabilities.h" +#import "SDLClimateControlCapabilities.h" +#import "SDLRadioControlCapabilities.h" +#import "SDLButtonCapabilities.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLRemoteControlCapabilitiesSpec) + +__block SDLClimateControlCapabilities* someClimateControlCapabilities = [[SDLClimateControlCapabilities alloc] init]; +__block SDLRadioControlCapabilities* someRadioControlCapabilities = [[SDLRadioControlCapabilities alloc] init]; +__block SDLButtonCapabilities* someButtonControlCapabilities = [[SDLButtonCapabilities alloc] init]; + + +describe(@"Initialization tests", ^{ + it(@"should properly initialize init", ^{ + SDLRemoteControlCapabilities* testStruct = [[SDLRemoteControlCapabilities alloc] init]; + + expect(testStruct.climateControlCapabilities).to(beNil()); + expect(testStruct.radioControlCapabilities).to(beNil()); + expect(testStruct.buttonCapabilities).to(beNil()); + }); + + it(@"should properly initialize initWithDictionary", ^{ + + NSMutableDictionary* dict = [@{SDLNameClimateControlCapabilities : [@[someClimateControlCapabilities] copy], + SDLNameRadioControlCapabilities :[@[someRadioControlCapabilities] copy], + SDLNameButtonCapabilities :[@[someButtonControlCapabilities] copy] } mutableCopy]; + SDLRemoteControlCapabilities* testStruct = [[SDLRemoteControlCapabilities alloc] initWithDictionary:dict]; + + expect(testStruct.climateControlCapabilities).to(equal([@[someClimateControlCapabilities] copy])); + expect(testStruct.radioControlCapabilities).to(equal([@[someRadioControlCapabilities] copy])); + expect(testStruct.buttonCapabilities).to(equal([@[someButtonControlCapabilities] copy])); + }); + + it(@"Should set and get correctly", ^{ + SDLRemoteControlCapabilities* testStruct = [[SDLRemoteControlCapabilities alloc] init]; + + testStruct.climateControlCapabilities = ([@[someClimateControlCapabilities] copy]); + testStruct.radioControlCapabilities = [@[someRadioControlCapabilities] copy]; + testStruct.buttonCapabilities = [@[someButtonControlCapabilities] copy]; + + expect(testStruct.climateControlCapabilities).to(equal(([@[someClimateControlCapabilities] copy]))); + expect(testStruct.radioControlCapabilities).to(equal([@[someRadioControlCapabilities] copy])); + expect(testStruct.buttonCapabilities).to(equal([@[someButtonControlCapabilities] copy])); + }); + + 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]]; + + expect(testStruct.climateControlCapabilities).to(equal(([@[someClimateControlCapabilities] copy]))); + expect(testStruct.radioControlCapabilities).to(equal([@[someRadioControlCapabilities] copy])); + expect(testStruct.buttonCapabilities).to(equal([@[someButtonControlCapabilities] copy])); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m index 05e5f4fa5..abfd13afb 100644..100755 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m @@ -9,6 +9,8 @@ #import "SDLNavigationCapability.h" #import "SDLPhoneCapability.h" #import "SDLSystemCapabilityType.h" +#import "SDLRemoteControlCapabilities.h" +#import "SDLNames.h" #import "SDLVideoStreamingCapability.h" #import "SDLVideoStreamingCodec.h" #import "SDLVideoStreamingFormat.h" @@ -18,6 +20,7 @@ QuickSpecBegin(SDLSystemCapabilitySpec) +SDLRemoteControlCapabilities *someRemoteControlCapabilities = [[SDLRemoteControlCapabilities alloc] init]; describe(@"Getter/Setter Tests", ^ { it(@"Should set and get correctly", ^ { SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] init]; @@ -25,6 +28,7 @@ describe(@"Getter/Setter Tests", ^ { testStruct.systemCapabilityType = SDLSystemCapabilityTypeNavigation; testStruct.navigationCapability = [[SDLNavigationCapability alloc] initWithSendLocation:YES waypoints:NO]; testStruct.phoneCapability = [[SDLPhoneCapability alloc] initWithDialNumber:YES]; + testStruct.remoteControlCapability = someRemoteControlCapabilities; expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeNavigation)); expect(testStruct.navigationCapability.sendLocationEnabled).to(equal(YES)); @@ -34,6 +38,8 @@ describe(@"Getter/Setter Tests", ^ { testStruct.systemCapabilityType = SDLSystemCapabilityTypeVideoStreaming; expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeVideoStreaming)); + expect(testStruct.remoteControlCapability).to(equal(someRemoteControlCapabilities)); + }); }); @@ -42,13 +48,15 @@ describe(@"Initialization tests", ^{ NSMutableDictionary* dict = [@{SDLNameSystemCapabilityType: @"NAVIGATION", SDLNameNavigationCapability: @{SDLNameGetWayPointsEnabled: @(NO), SDLNameSendLocationEnabled: @(YES)}, - SDLNamePhoneCapability: @{SDLNameDialNumberEnabled: @(YES)}} mutableCopy]; + SDLNamePhoneCapability: @{SDLNameDialNumberEnabled: @(YES)}, + SDLNameRemoteControlCapability: someRemoteControlCapabilities} mutableCopy]; SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithDictionary:dict]; expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeNavigation)); expect(testStruct.navigationCapability.sendLocationEnabled).to(equal(YES)); expect(testStruct.navigationCapability.getWayPointsEnabled).to(equal(NO)); expect(testStruct.phoneCapability.dialNumberEnabled).to(equal(YES)); + expect(testStruct.remoteControlCapability).to(equal(someRemoteControlCapabilities)); }); it(@"Should return nil if not set", ^ { @@ -58,6 +66,8 @@ describe(@"Initialization tests", ^{ expect(testStruct.navigationCapability).to(beNil()); expect(testStruct.phoneCapability).to(beNil()); expect(testStruct.videoStreamingCapability).to(beNil()); + expect(testStruct.remoteControlCapability).to(beNil()); + }); it(@"should initialize correctly with initWithPhoneCapability:", ^{ @@ -68,6 +78,7 @@ describe(@"Initialization tests", ^{ expect(testStruct.phoneCapability.dialNumberEnabled).to(equal(YES)); expect(testStruct.navigationCapability).to(beNil()); expect(testStruct.videoStreamingCapability).to(beNil()); + expect(testStruct.remoteControlCapability).to(beNil()); }); it(@"should initialize correctly with initWithNavigationCapability:", ^{ @@ -79,6 +90,7 @@ describe(@"Initialization tests", ^{ expect(testStruct.navigationCapability.getWayPointsEnabled).to(equal(YES)); expect(testStruct.phoneCapability).to(beNil()); expect(testStruct.videoStreamingCapability).to(beNil()); + expect(testStruct.remoteControlCapability).to(beNil()); }); it(@"should initialize correctly with initWithVideoStreamingCapability:", ^{ @@ -108,6 +120,15 @@ describe(@"Initialization tests", ^{ expect(testStruct.phoneCapability).to(beNil()); }); + + it(@"should initialize correctly with initWithRemoteControlCapability:", ^{ + SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithRemoteControlCapability:someRemoteControlCapabilities]; + + expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeRemoteControl)); + expect(testStruct.navigationCapability).to(beNil()); + expect(testStruct.phoneCapability).to(beNil()); + expect(testStruct.remoteControlCapability).to(equal(someRemoteControlCapabilities)); + }); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemperatureSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemperatureSpec.m new file mode 100644 index 000000000..9151e0df5 --- /dev/null +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemperatureSpec.m @@ -0,0 +1,54 @@ +// +// SDLTemperatureSpec.m +// SmartDeviceLink-iOS +// + +#import <Foundation/Foundation.h> + +#import <Quick/Quick.h> +#import <Nimble/Nimble.h> + +#import "SDLTemperature.h" +#import "SDLTemperatureUnit.h" +#import "SDLNames.h" + +QuickSpecBegin(SDLTemperatureSpec) + +describe(@"Initialization tests", ^{ + + it(@"should properly initialize init", ^{ + SDLTemperature* testStruct = [[SDLTemperature alloc] init]; + + expect(testStruct.unit).to(beNil()); + expect(testStruct.value).to(beNil()); + }); + + it(@"should properly initialize initWithDictionary", ^{ + + NSMutableDictionary* dict = [@{SDLNameUnit : SDLTemperatureUnitCelsius , + SDLNameValue:@30 } mutableCopy]; + SDLTemperature* testStruct = [[SDLTemperature alloc] initWithDictionary:dict]; + + expect(testStruct.unit).to(equal(SDLTemperatureUnitCelsius)); + expect(testStruct.value).to(equal(@30)); + }); + + it(@"should initialize correctly with Unit and value", ^{ + SDLTemperature *testStruct = [[SDLTemperature alloc] initWithUnit:SDLTemperatureUnitCelsius value:30]; + + expect(testStruct.unit).to(equal(SDLTemperatureUnitCelsius)); + expect(testStruct.value).to(equal(@30)); + }); + + it(@"Should set and get correctly", ^{ + SDLTemperature* testStruct = [[SDLTemperature alloc] init]; + + testStruct.unit = SDLTemperatureUnitCelsius; + testStruct.value = @30; + + expect(testStruct.unit).to(equal(SDLTemperatureUnitCelsius)); + expect(testStruct.value).to(equal(@30)); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testAppAndVehicleIcons@2x.png b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testAppAndVehicleIcons@2x.png Binary files differindex c9180aff7..fb6f87fba 100644 --- a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testAppAndVehicleIcons@2x.png +++ b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testAppAndVehicleIcons@2x.png diff --git a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testLightBackgroundNoAppNoVehicleIcons@2x.png b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testLightBackgroundNoAppNoVehicleIcons@2x.png Binary files differindex 401793f2c..0830ec96c 100644 --- a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testLightBackgroundNoAppNoVehicleIcons@2x.png +++ b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testLightBackgroundNoAppNoVehicleIcons@2x.png diff --git a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testNoAppNoVehicleIcons@2x.png b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testNoAppNoVehicleIcons@2x.png Binary files differindex c5eb09c13..ea74dd949 100644 --- a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testNoAppNoVehicleIcons@2x.png +++ b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testNoAppNoVehicleIcons@2x.png diff --git a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyAppIcon@2x.png b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyAppIcon@2x.png Binary files differindex 7ff7a7ddb..6b242fb84 100644 --- a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyAppIcon@2x.png +++ b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyAppIcon@2x.png diff --git a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyVehicleIcon@2x.png b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyVehicleIcon@2x.png Binary files differindex 24ad51ee3..1e4539141 100644 --- a/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyVehicleIcon@2x.png +++ b/SmartDeviceLinkTests/ReferenceImages_64/SDLLockScreenViewControllerSnapshotTests/testOnlyVehicleIcon@2x.png |