summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicoleYarroch <nicole@livio.io>2021-01-22 08:53:13 -0500
committerGitHub <noreply@github.com>2021-01-22 08:53:13 -0500
commitff81c9bce110f7798520fdfeaed4bbb4d7722911 (patch)
tree0c36f2db5dc9ad4cd785baa446d3731140e97cf9
parent869ffa6f89037f503966c6517dfd3857443e48e6 (diff)
parent8d4e364a0103a73846522cbf6667844a1acc4c33 (diff)
downloadsdl_ios-ff81c9bce110f7798520fdfeaed4bbb4d7722911.tar.gz
Merge pull request #1868 from LuxoftSDL/feature/sdl_0255_enhance_bodyInformation
SDL-0255 Enhance BodyInformation vehicle data
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj48
-rw-r--r--SmartDeviceLink/private/SDLRPCParameterNames.h11
-rw-r--r--SmartDeviceLink/private/SDLRPCParameterNames.m3
-rw-r--r--SmartDeviceLink/public/SDLBodyInformation.h81
-rw-r--r--SmartDeviceLink/public/SDLBodyInformation.m52
-rw-r--r--SmartDeviceLink/public/SDLDoorStatus.h60
-rw-r--r--SmartDeviceLink/public/SDLDoorStatus.m73
-rw-r--r--SmartDeviceLink/public/SDLDoorStatusType.h46
-rw-r--r--SmartDeviceLink/public/SDLDoorStatusType.m39
-rw-r--r--SmartDeviceLink/public/SDLGateStatus.h60
-rw-r--r--SmartDeviceLink/public/SDLGateStatus.m72
-rw-r--r--SmartDeviceLink/public/SDLRoofStatus.h71
-rw-r--r--SmartDeviceLink/public/SDLRoofStatus.m91
-rw-r--r--SmartDeviceLink/public/SmartDeviceLink.h4
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDoorStatusTypeSpec.m24
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m213
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDoorStatusSpec.m92
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGateStatusSpec.m93
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRoofStatusSpec.m114
19 files changed, 1176 insertions, 71 deletions
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index 2773665f2..6c8b2b74a 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -1667,6 +1667,18 @@
9FA0D00C22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00B22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m */; };
9FA0D00F22DF0B90009CF344 /* SDLDeleteWindowSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */; };
9FA0D01222DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA0D01122DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m */; };
+ B3838A01257C47FD00420C11 /* SDLDoorStatusTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A00257C47FD00420C11 /* SDLDoorStatusTypeSpec.m */; };
+ B3838A09257C4EB400420C11 /* SDLDoorStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A08257C4EB300420C11 /* SDLDoorStatusSpec.m */; };
+ B3838A0F257C4EE100420C11 /* SDLGateStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A0E257C4EE100420C11 /* SDLGateStatusSpec.m */; };
+ B3838A15257C4EFD00420C11 /* SDLRoofStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A14257C4EFD00420C11 /* SDLRoofStatusSpec.m */; };
+ B3838A20257C5BB000420C11 /* SDLRoofStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = B3838A1E257C5BAF00420C11 /* SDLRoofStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ B3838A21257C5BB000420C11 /* SDLRoofStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A1F257C5BB000420C11 /* SDLRoofStatus.m */; };
+ B3838A28257C5CE600420C11 /* SDLDoorStatusType.h in Headers */ = {isa = PBXBuildFile; fileRef = B3838A26257C5CE600420C11 /* SDLDoorStatusType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ B3838A29257C5CE600420C11 /* SDLDoorStatusType.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A27257C5CE600420C11 /* SDLDoorStatusType.m */; };
+ B3838A30257C5D1B00420C11 /* SDLGateStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A2E257C5D1A00420C11 /* SDLGateStatus.m */; };
+ B3838A31257C5D1B00420C11 /* SDLGateStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = B3838A2F257C5D1B00420C11 /* SDLGateStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ B3838A3A257C6AB700420C11 /* SDLDoorStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = B3838A38257C6AB600420C11 /* SDLDoorStatus.m */; };
+ B3838A3B257C6AB700420C11 /* SDLDoorStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = B3838A39257C6AB600420C11 /* SDLDoorStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
B38D8E7E24A118BD00B977D0 /* SDLGearStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */; };
B38D8E8024A1E3D000B977D0 /* SDLTransmissionTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E7F24A1E3D000B977D0 /* SDLTransmissionTypeSpec.m */; };
B38D8E8224A1F53500B977D0 /* SDLCapacityUnitSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E8124A1F53500B977D0 /* SDLCapacityUnitSpec.m */; };
@@ -3495,6 +3507,18 @@
9FA0D00B22DF0B65009CF344 /* SDLCreateWindowResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCreateWindowResponseSpec.m; sourceTree = "<group>"; };
9FA0D00E22DF0B90009CF344 /* SDLDeleteWindowSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowSpec.m; sourceTree = "<group>"; };
9FA0D01122DF0BAC009CF344 /* SDLDeleteWindowResponseSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteWindowResponseSpec.m; sourceTree = "<group>"; };
+ B3838A00257C47FD00420C11 /* SDLDoorStatusTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDoorStatusTypeSpec.m; sourceTree = "<group>"; };
+ B3838A08257C4EB300420C11 /* SDLDoorStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDoorStatusSpec.m; path = SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDoorStatusSpec.m; sourceTree = SOURCE_ROOT; };
+ B3838A0E257C4EE100420C11 /* SDLGateStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGateStatusSpec.m; path = SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGateStatusSpec.m; sourceTree = SOURCE_ROOT; };
+ B3838A14257C4EFD00420C11 /* SDLRoofStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRoofStatusSpec.m; path = SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRoofStatusSpec.m; sourceTree = SOURCE_ROOT; };
+ B3838A1E257C5BAF00420C11 /* SDLRoofStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLRoofStatus.h; path = public/SDLRoofStatus.h; sourceTree = "<group>"; };
+ B3838A1F257C5BB000420C11 /* SDLRoofStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLRoofStatus.m; path = public/SDLRoofStatus.m; sourceTree = "<group>"; };
+ B3838A26257C5CE600420C11 /* SDLDoorStatusType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDoorStatusType.h; path = public/SDLDoorStatusType.h; sourceTree = "<group>"; };
+ B3838A27257C5CE600420C11 /* SDLDoorStatusType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDoorStatusType.m; path = public/SDLDoorStatusType.m; sourceTree = "<group>"; };
+ B3838A2E257C5D1A00420C11 /* SDLGateStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLGateStatus.m; path = public/SDLGateStatus.m; sourceTree = "<group>"; };
+ B3838A2F257C5D1B00420C11 /* SDLGateStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLGateStatus.h; path = public/SDLGateStatus.h; sourceTree = "<group>"; };
+ B3838A38257C6AB600420C11 /* SDLDoorStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLDoorStatus.m; path = public/SDLDoorStatus.m; sourceTree = "<group>"; };
+ B3838A39257C6AB600420C11 /* SDLDoorStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLDoorStatus.h; path = public/SDLDoorStatus.h; sourceTree = "<group>"; };
B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGearStatusSpec.m; sourceTree = "<group>"; };
B38D8E7F24A1E3D000B977D0 /* SDLTransmissionTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTransmissionTypeSpec.m; sourceTree = "<group>"; };
B38D8E8124A1F53500B977D0 /* SDLCapacityUnitSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCapacityUnitSpec.m; sourceTree = "<group>"; };
@@ -3690,6 +3714,7 @@
162E81F11A9BDE8A00906325 /* SDLDisplayTypeSpec.m */,
1EAA475D2035B177000FE74B /* SDLDisplayModeSpec.m */,
1EAA47612035B1AE000FE74B /* SDLDistanceUnitSpec.m */,
+ B3838A00257C47FD00420C11 /* SDLDoorStatusTypeSpec.m */,
162E81F21A9BDE8A00906325 /* SDLDriverDistractionStateSpec.m */,
162E81F31A9BDE8A00906325 /* SDLECallConfirmationStatusSpec.m */,
5DD8406420FCE21A0082CE04 /* SDLElectronicParkBrakeStatusSpec.m */,
@@ -3983,11 +4008,13 @@
162E82981A9BDE8A00906325 /* SDLDIDResult.m */,
9FA0D00522DF06D3009CF344 /* SDLDisplayCapabilitySpec.m */,
162E82991A9BDE8A00906325 /* SDLDisplayCapabilitiesSpec.m */,
+ B3838A08257C4EB300420C11 /* SDLDoorStatusSpec.m */,
4A1B036E24CF484E008C6B13 /* SDLDriverDistractionCapabilitySpec.m */,
162E829A1A9BDE8A00906325 /* SDLECallInfoSpec.m */,
162E829B1A9BDE8A00906325 /* SDLEmergencyEventSpec.m */,
88B3BFA120DA911E00943565 /* SDLFuelRangeSpec.m */,
1EAA47752036B847000FE74B /* SDLEqualizerSettingsSpec.m */,
+ B3838A0E257C4EE100420C11 /* SDLGateStatusSpec.m */,
B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */,
162E829C1A9BDE8A00906325 /* SDLGPSDataSpec.m */,
88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */,
@@ -4029,6 +4056,7 @@
1EE8C44F1F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m */,
5DADA7771F4E059E0084D17D /* SDLRectangleSpec.m */,
5D92934F20AF526200FCC775 /* SDLRGBColorSpec.m */,
+ B3838A14257C4EFD00420C11 /* SDLRoofStatusSpec.m */,
162E82A71A9BDE8A00906325 /* SDLScreenParamsSpec.m */,
1E89B0E1203196B800A47992 /* SDLSeatControlCapabilitiesSpec.m */,
1E89B0DD2031636000A47992 /* SDLSeatControlDataSpec.m */,
@@ -5028,6 +5056,8 @@
4ABB2B2524F84EF10061BF55 /* SDLDisplayCapabilities.m */,
4ABB2B3324F84EF30061BF55 /* SDLDisplayCapability.h */,
4ABB2B3824F84EF40061BF55 /* SDLDisplayCapability.m */,
+ B3838A39257C6AB600420C11 /* SDLDoorStatus.h */,
+ B3838A38257C6AB600420C11 /* SDLDoorStatus.m */,
4ABB2B3724F84EF40061BF55 /* SDLDriverDistractionCapability.h */,
4ABB2B2B24F84EF20061BF55 /* SDLDriverDistractionCapability.m */,
4A8BD3B924F98F89000945E3 /* SDLDynamicUpdateCapabilities.h */,
@@ -5040,6 +5070,8 @@
4ABB2B5D24F84FE30061BF55 /* SDLEqualizerSettings.m */,
4ABB2B6424F84FE50061BF55 /* SDLFuelRange.h */,
4ABB2B6524F84FE50061BF55 /* SDLFuelRange.m */,
+ B3838A2F257C5D1B00420C11 /* SDLGateStatus.h */,
+ B3838A2E257C5D1A00420C11 /* SDLGateStatus.m */,
4ABB2B5C24F84FE30061BF55 /* SDLGearStatus.h */,
4ABB2B5F24F84FE40061BF55 /* SDLGearStatus.m */,
4ABB2B5A24F84FE30061BF55 /* SDLGPSData.h */,
@@ -5128,6 +5160,8 @@
4A8BD26C24F9343D000945E3 /* SDLRemoteControlCapabilities.m */,
4A8BD28724F934F2000945E3 /* SDLRGBColor.h */,
4A8BD28A24F934F3000945E3 /* SDLRGBColor.m */,
+ B3838A1E257C5BAF00420C11 /* SDLRoofStatus.h */,
+ B3838A1F257C5BB000420C11 /* SDLRoofStatus.m */,
4A8BD29124F93533000945E3 /* SDLScreenParams.h */,
4A8BD28F24F93533000945E3 /* SDLScreenParams.m */,
4A8BD29024F93533000945E3 /* SDLSeatControlCapabilities.h */,
@@ -5259,6 +5293,8 @@
4ABB272A24F7FD1B0061BF55 /* SDLDistanceUnit.m */,
4ABB272D24F7FD1C0061BF55 /* SDLDisplayType.h */,
4ABB272B24F7FD1B0061BF55 /* SDLDisplayType.m */,
+ B3838A26257C5CE600420C11 /* SDLDoorStatusType.h */,
+ B3838A27257C5CE600420C11 /* SDLDoorStatusType.m */,
4ABB274424F7FD9A0061BF55 /* SDLDriverDistractionState.h */,
4ABB274924F7FD9B0061BF55 /* SDLDriverDistractionState.m */,
4ABB274724F7FD9B0061BF55 /* SDLECallConfirmationStatus.h */,
@@ -6920,6 +6956,7 @@
4ABB269624F7F9400061BF55 /* SDLRPCFunctionNames.h in Headers */,
4ABB2B4024F84EF50061BF55 /* SDLCloudAppProperties.h in Headers */,
4ABB2A5824F847B10061BF55 /* SDLGetInteriorVehicleDataConsentResponse.h in Headers */,
+ B3838A20257C5BB000420C11 /* SDLRoofStatus.h in Headers */,
4ABB271824F7FC4E0061BF55 /* SDLCompassDirection.h in Headers */,
4ABB2B5924F84EF50061BF55 /* SDLDeviceStatus.h in Headers */,
4A8BD2CF24F93803000945E3 /* SDLTouchEvent.h in Headers */,
@@ -7043,6 +7080,7 @@
4ABB280124F823F20061BF55 /* SDLResult.h in Headers */,
4ABB2B8624F8504A0061BF55 /* SDLHMISettingsControlCapabilities.h in Headers */,
4ABB276924F7FE480061BF55 /* SDLHMIZoneCapabilities.h in Headers */,
+ B3838A3B257C6AB700420C11 /* SDLDoorStatus.h in Headers */,
4ABB29DF24F846880061BF55 /* SDLSystemRequest.h in Headers */,
4ABB290224F82BE90061BF55 /* SDLAddCommand.h in Headers */,
4ABB260624F7E9650061BF55 /* SDLStreamingMediaManager.h in Headers */,
@@ -7215,6 +7253,7 @@
4ABB24C924F593090061BF55 /* SDLStreamingProtocolDelegate.h in Headers */,
4ABB275F24F7FE1F0061BF55 /* SDLFuelType.h in Headers */,
4A8BD3A024F9474B000945E3 /* SDLIAPDataSessionDelegate.h in Headers */,
+ B3838A28257C5CE600420C11 /* SDLDoorStatusType.h in Headers */,
4A8BD2F724F93872000945E3 /* SDLVrHelpItem.h in Headers */,
4ABB2A0024F8477F0061BF55 /* SDLAddCommandResponse.h in Headers */,
4ABB291124F842160061BF55 /* SDLChangeRegistration.h in Headers */,
@@ -7389,6 +7428,7 @@
4ABB296524F844020061BF55 /* SDLListFiles.h in Headers */,
4ABB281824F824A50061BF55 /* SDLStaticIconName.h in Headers */,
4ABB290524F82BE90061BF55 /* SDLAlert.h in Headers */,
+ B3838A31257C5D1B00420C11 /* SDLGateStatus.h in Headers */,
4ABB26BA24F7FA1C0061BF55 /* SDLLogConstants.h in Headers */,
4ABB28DB24F82A6A0061BF55 /* SDLOnSystemCapabilityUpdated.h in Headers */,
4ABB269324F7F9060061BF55 /* SDLTimer.h in Headers */,
@@ -7867,6 +7907,7 @@
4ABB28D624F82A6A0061BF55 /* SDLOnAudioPassThru.m in Sources */,
4A8BD25224F93135000945E3 /* SDLKeyboardProperties.m in Sources */,
4ABB2B1324F84D950061BF55 /* SDLAppServiceRecord.m in Sources */,
+ B3838A29257C5CE600420C11 /* SDLDoorStatusType.m in Sources */,
4ABB290424F82BE90061BF55 /* SDLAlertManeuver.m in Sources */,
4ABB27B224F7FFDA0061BF55 /* SDLMassageMode.m in Sources */,
4ABB274F24F7FD9C0061BF55 /* SDLECallConfirmationStatus.m in Sources */,
@@ -8012,6 +8053,7 @@
4A8BD24C24F93135000945E3 /* SDLLocationDetails.m in Sources */,
4ABB275C24F7FE1F0061BF55 /* SDLFuelType.m in Sources */,
4ABB2B4324F84EF50061BF55 /* SDLDisplayCapabilities.m in Sources */,
+ B3838A3A257C6AB700420C11 /* SDLDoorStatus.m in Sources */,
4ABB267724F7F6720061BF55 /* SDLObjectWithPriority.m in Sources */,
4ABB29FE24F8477F0061BF55 /* SDLAddCommandResponse.m in Sources */,
4ABB251324F7E3A30061BF55 /* SDLLifecycleConfiguration.m in Sources */,
@@ -8166,6 +8208,7 @@
4ABB2A5B24F847B10061BF55 /* SDLGetCloudAppPropertiesResponse.m in Sources */,
4ABB25F424F7E7EF0061BF55 /* SDLTouch.m in Sources */,
4ABB2B3E24F84EF50061BF55 /* SDLDeviceStatus.m in Sources */,
+ B3838A21257C5BB000420C11 /* SDLRoofStatus.m in Sources */,
4ABB28BE24F82A6A0061BF55 /* SDLOnSyncPData.m in Sources */,
4ABB275724F7FD9C0061BF55 /* SDLEmergencyEventType.m in Sources */,
4ABB29B824F845DB0061BF55 /* SDLSetMediaClockTimer.m in Sources */,
@@ -8231,6 +8274,7 @@
4ABB2AA224F847F40061BF55 /* SDLSetCloudAppPropertiesResponse.m in Sources */,
4A8BD3A224F9474B000945E3 /* SDLIAPDataSession.m in Sources */,
4A8BD3B624F98F64000945E3 /* SDLOnUpdateSubMenu.m in Sources */,
+ B3838A30257C5D1B00420C11 /* SDLGateStatus.m in Sources */,
4ABB256624F7E5B80061BF55 /* SDLRPCPermissionStatus.m in Sources */,
4ABB299824F845440061BF55 /* SDLReleaseInteriorVehicleDataModule.m in Sources */,
4ABB277724F7FE910061BF55 /* SDLIgnitionStatus.m in Sources */,
@@ -8346,6 +8390,7 @@
162E82E31A9BDE8B00906325 /* SDLIgnitionStatusSpec.m in Sources */,
162E83511A9BDE8B00906325 /* SDLDeleteInteractionChoiceSetResponseSpec.m in Sources */,
DA9F7EB41DCC086400ACAE48 /* SDLDateTimeSpec.m in Sources */,
+ B3838A0F257C4EE100420C11 /* SDLGateStatusSpec.m in Sources */,
162E82E41A9BDE8B00906325 /* SDLImageFieldNameSpec.m in Sources */,
162E82ED1A9BDE8B00906325 /* SDLMaintenanceModeStatusSpec.m in Sources */,
8B9376DB1F33656C009605C4 /* SDLMetadataTagsSpec.m in Sources */,
@@ -8468,6 +8513,7 @@
162E82F71A9BDE8B00906325 /* SDLResultSpec.m in Sources */,
88DDD0F9229ECA57002F9623 /* SDLIAPConstantsSpec.m in Sources */,
1680B1141A9CD7AD00DBD79E /* SDLV1ProtocolHeaderSpec.m in Sources */,
+ B3838A15257C4EFD00420C11 /* SDLRoofStatusSpec.m in Sources */,
880D2680220E038800B3F496 /* SDLWeatherServiceManifestSpec.m in Sources */,
88EEC5BE220A3B8B005AA2F9 /* SDLPublishAppServiceResponseSpec.m in Sources */,
1680B1161A9CD7AD00DBD79E /* SDLProtocolMessageSpec.m in Sources */,
@@ -8533,6 +8579,7 @@
1EAA47762036B847000FE74B /* SDLEqualizerSettingsSpec.m in Sources */,
752ECDB9228C42E100D945F4 /* SDLMenuRunScoreSpec.m in Sources */,
162E83141A9BDE8B00906325 /* SDLOnDriverDistractionSpec.m in Sources */,
+ B3838A09257C4EB400420C11 /* SDLDoorStatusSpec.m in Sources */,
162E83371A9BDE8B00906325 /* SDLResetGlobalPropertiesSpec.m in Sources */,
162E82DF1A9BDE8B00906325 /* SDLGlobalProperySpec.m in Sources */,
88DF998F22035D1700477AC1 /* SDLIAPSessionSpec.m in Sources */,
@@ -8734,6 +8781,7 @@
1EAA47782036BA74000FE74B /* SDLAudioControlCapabilitiesSpec.m in Sources */,
5DB1BCD51D243A8E002FFC37 /* SDLUploadFileOperationSpec.m in Sources */,
162E83401A9BDE8B00906325 /* SDLSpeakSpec.m in Sources */,
+ B3838A01257C47FD00420C11 /* SDLDoorStatusTypeSpec.m in Sources */,
88A5E7F4220B57F900495E8A /* SDLOnSystemCapabilityUpdatedSpec.m in Sources */,
5DCF76FC1ACDDB4200BB647B /* SDLSendLocationSpec.m in Sources */,
5DB1BCD81D243AA6002FFC37 /* SDLPermissionFilterSpec.m in Sources */,
diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.h b/SmartDeviceLink/private/SDLRPCParameterNames.h
index e7e526eee..a90235e16 100644
--- a/SmartDeviceLink/private/SDLRPCParameterNames.h
+++ b/SmartDeviceLink/private/SDLRPCParameterNames.h
@@ -198,6 +198,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameDistanceToEmpty;
extern SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuver;
extern SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuverScale;
extern SDLRPCParameterName const SDLRPCParameterNameDistanceUnitAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameDoorStatuses;
extern SDLRPCParameterName const SDLRPCParameterNameDoublePressAvailable;
extern SDLRPCParameterName const SDLRPCParameterNameDriverAirbagDeployed;
extern SDLRPCParameterName const SDLRPCParameterNameDriverBeltDeployed;
@@ -207,7 +208,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameDriverCurtainAirbagDeployed;
extern SDLRPCParameterName const SDLRPCParameterNameDriverDistraction;
extern SDLRPCParameterName const SDLRPCParameterNameDriverDistractionCapability;
extern SDLRPCParameterName const SDLRPCParameterNameDriverDistractionStatus;
-extern SDLRPCParameterName const SDLRPCParameterNameDriverDoorAjar;
+extern SDLRPCParameterName const SDLRPCParameterNameDriverDoorAjar __deprecated;
extern SDLRPCParameterName const SDLRPCParameterNameDriverKneeAirbagDeployed;
extern SDLRPCParameterName const SDLRPCParameterNameDriverSideAirbagDeployed;
extern SDLRPCParameterName const SDLRPCParameterNameDrivingSide;
@@ -261,6 +262,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameFuelMaintenanceMode;
extern SDLRPCParameterName const SDLRPCParameterNameFuelRange;
extern SDLRPCParameterName const SDLRPCParameterNameFullAppID;
extern SDLRPCParameterName const SDLRPCParameterNameFunctionID;
+extern SDLRPCParameterName const SDLRPCParameterNameGateStatuses;
extern SDLRPCParameterName const SDLRPCParameterNameGetWayPointsEnabled;
extern SDLRPCParameterName const SDLRPCParameterNameGPS;
extern SDLRPCParameterName const SDLRPCParameterNameGearStatus;
@@ -495,7 +497,7 @@ extern SDLRPCParameterName const SDLRPCParameterNamePassengerBeltDeployed;
extern SDLRPCParameterName const SDLRPCParameterNamePassengerBuckleBelted;
extern SDLRPCParameterName const SDLRPCParameterNamePassengerChildDetected;
extern SDLRPCParameterName const SDLRPCParameterNamePassengerCurtainAirbagDeployed;
-extern SDLRPCParameterName const SDLRPCParameterNamePassengerDoorAjar;
+extern SDLRPCParameterName const SDLRPCParameterNamePassengerDoorAjar __deprecated;
extern SDLRPCParameterName const SDLRPCParameterNamePassengerKneeAirbagDeployed;
extern SDLRPCParameterName const SDLRPCParameterNamePassengerSideAirbagDeployed;
extern SDLRPCParameterName const SDLRPCParameterNamePatchVersion;
@@ -547,8 +549,8 @@ extern SDLRPCParameterName const SDLRPCParameterNameRadioFrequencyAvailable;
extern SDLRPCParameterName const SDLRPCParameterNameRange;
extern SDLRPCParameterName const SDLRPCParameterNameRDSData;
extern SDLRPCParameterName const SDLRPCParameterNameRDSDataAvailable;
-extern SDLRPCParameterName const SDLRPCParameterNameRearLeftDoorAjar;
-extern SDLRPCParameterName const SDLRPCParameterNameRearRightDoorAjar;
+extern SDLRPCParameterName const SDLRPCParameterNameRearLeftDoorAjar __deprecated;
+extern SDLRPCParameterName const SDLRPCParameterNameRearRightDoorAjar __deprecated;
extern SDLRPCParameterName const SDLRPCParameterNameReason;
extern SDLRPCParameterName const SDLRPCParameterNameRect;
extern SDLRPCParameterName const SDLRPCParameterNameRed;
@@ -574,6 +576,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameRightRearInflatableBelted;
extern SDLRPCParameterName const SDLRPCParameterNameRightRow2BuckleBelted;
extern SDLRPCParameterName const SDLRPCParameterNameRightRow3BuckleBelted;
extern SDLRPCParameterName const SDLRPCParameterNameRolloverEvent;
+extern SDLRPCParameterName const SDLRPCParameterNameRoofStatuses;
extern SDLRPCParameterName const SDLRPCParameterNameRow;
extern SDLRPCParameterName const SDLRPCParameterNameRows;
extern SDLRPCParameterName const SDLRPCParameterNameRowSpan;
diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.m b/SmartDeviceLink/private/SDLRPCParameterNames.m
index 0761190d7..fb10c669e 100644
--- a/SmartDeviceLink/private/SDLRPCParameterNames.m
+++ b/SmartDeviceLink/private/SDLRPCParameterNames.m
@@ -196,6 +196,7 @@ SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuver = @"distanceToMa
SDLRPCParameterName const SDLRPCParameterNameDistanceToManeuverScale = @"distanceToManeuverScale";
SDLRPCParameterName const SDLRPCParameterNameDistanceUnitAvailable = @"distanceUnitAvailable";
SDLRPCParameterName const SDLRPCParameterNameDistanceUnit = @"distanceUnit";
+SDLRPCParameterName const SDLRPCParameterNameDoorStatuses = @"doorStatuses";
SDLRPCParameterName const SDLRPCParameterNameDoublePressAvailable = @"doublePressAvailable";
SDLRPCParameterName const SDLRPCParameterNameDriverAirbagDeployed = @"driverAirbagDeployed";
SDLRPCParameterName const SDLRPCParameterNameDriverBeltDeployed = @"driverBeltDeployed";
@@ -259,6 +260,7 @@ SDLRPCParameterName const SDLRPCParameterNameFuelMaintenanceMode = @"fuelMainten
SDLRPCParameterName const SDLRPCParameterNameFuelRange = @"fuelRange";
SDLRPCParameterName const SDLRPCParameterNameFunctionID = @"functionID";
SDLRPCParameterName const SDLRPCParameterNameFullAppID = @"fullAppID";
+SDLRPCParameterName const SDLRPCParameterNameGateStatuses = @"gateStatuses";
SDLRPCParameterName const SDLRPCParameterNameGearStatus = @"gearStatus";
SDLRPCParameterName const SDLRPCParameterNameGetWayPointsEnabled = @"getWayPointsEnabled";
SDLRPCParameterName const SDLRPCParameterNameGPS = @"gps";
@@ -571,6 +573,7 @@ SDLRPCParameterName const SDLRPCParameterNameRightRearInflatableBelted = @"right
SDLRPCParameterName const SDLRPCParameterNameRightRow2BuckleBelted = @"rightRow2BuckleBelted";
SDLRPCParameterName const SDLRPCParameterNameRightRow3BuckleBelted = @"rightRow3BuckleBelted";
SDLRPCParameterName const SDLRPCParameterNameRolloverEvent = @"rolloverEvent";
+SDLRPCParameterName const SDLRPCParameterNameRoofStatuses = @"roofStatuses";
SDLRPCParameterName const SDLRPCParameterNameRow = @"row";
SDLRPCParameterName const SDLRPCParameterNameRows = @"rows";
SDLRPCParameterName const SDLRPCParameterNameRowSpan = @"rowspan";
diff --git a/SmartDeviceLink/public/SDLBodyInformation.h b/SmartDeviceLink/public/SDLBodyInformation.h
index bed364503..081033a1d 100644
--- a/SmartDeviceLink/public/SDLBodyInformation.h
+++ b/SmartDeviceLink/public/SDLBodyInformation.h
@@ -5,17 +5,36 @@
#import "SDLIgnitionStableStatus.h"
#import "SDLIgnitionStatus.h"
+#import "SDLRPCStruct.h"
-
-/**
- * The body information including power modes.
- */
+@class SDLDoorStatus;
+@class SDLGateStatus;
+@class SDLRoofStatus;
NS_ASSUME_NONNULL_BEGIN
@interface SDLBodyInformation : SDLRPCStruct
/**
+ * @param parkBrakeActive - @(parkBrakeActive)
+ * @param ignitionStableStatus - ignitionStableStatus
+ * @param ignitionStatus - ignitionStatus
+ * @return A SDLBodyInformation object
+ */
+- (instancetype)initWithParkBrakeActive:(BOOL)parkBrakeActive ignitionStableStatus:(SDLIgnitionStableStatus)ignitionStableStatus ignitionStatus:(SDLIgnitionStatus)ignitionStatus;
+
+/**
+ * @param parkBrakeActive - @(parkBrakeActive)
+ * @param ignitionStableStatus - ignitionStableStatus
+ * @param ignitionStatus - ignitionStatus
+ * @param doorStatuses - doorStatuses
+ * @param gateStatuses - gateStatuses
+ * @param roofStatuses - roofStatuses
+ * @return A SDLBodyInformation object
+ */
+- (instancetype)initWithParkBrakeActive:(BOOL)parkBrakeActive ignitionStableStatus:(SDLIgnitionStableStatus)ignitionStableStatus ignitionStatus:(SDLIgnitionStatus)ignitionStatus doorStatuses:(nullable NSArray<SDLDoorStatus *> *)doorStatuses gateStatuses:(nullable NSArray<SDLGateStatus *> *)gateStatuses roofStatuses:(nullable NSArray<SDLRoofStatus *> *)roofStatuses;
+
+/**
* References signal "PrkBrkActv_B_Actl".
Required
@@ -37,32 +56,60 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic) SDLIgnitionStatus ignitionStatus;
/**
- * References signal "DrStatDrv_B_Actl".
-
- Optional
+ * References signal "DrStatDrv_B_Actl". Deprecated starting with RPC Spec 7.1.0.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *driverDoorAjar;
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *driverDoorAjar __deprecated_msg("use doorStatuses instead");
/**
- * References signal "DrStatPsngr_B_Actl".
+ * References signal "DrStatPsngr_B_Actl". Deprecated starting with RPC Spec 7.1.0.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *passengerDoorAjar __deprecated_msg("use doorStatuses instead");
- Optional
+/**
+ * References signal "DrStatRl_B_Actl". Deprecated starting with RPC Spec 7.1.0.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *passengerDoorAjar;
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rearLeftDoorAjar __deprecated_msg("use doorStatuses instead");
/**
- * References signal "DrStatRl_B_Actl".
+ * References signal "DrStatRr_B_Actl". Deprecated starting with RPC Spec 7.1.0.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rearRightDoorAjar __deprecated_msg("use doorStatuses instead");
- Optional
+/**
+ * Provides status for doors if Ajar/Closed/Locked
+ * {"array_min_size": 0, "array_max_size": 100}
+ *
+ * @added in SmartDeviceLink 7.1.0
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rearLeftDoorAjar;
+@property (nullable, strong, nonatomic) NSArray<SDLDoorStatus *> *doorStatuses;
/**
- * References signal "DrStatRr_B_Actl".
+ * Provides status for trunk/hood/etc. if Ajar/Closed/Locked
+ * {"array_min_size": 0, "array_max_size": 100}
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLGateStatus *> *gateStatuses;
- Optional
+/**
+ * Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removed etc.
+ * {"array_min_size": 0, "array_max_size": 100}
+ *
+ * @added in SmartDeviceLink 7.1.0
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *rearRightDoorAjar;
+@property (nullable, strong, nonatomic) NSArray<SDLRoofStatus *> *roofStatuses;
@end
diff --git a/SmartDeviceLink/public/SDLBodyInformation.m b/SmartDeviceLink/public/SDLBodyInformation.m
index fe8aa8b29..d3d6f917e 100644
--- a/SmartDeviceLink/public/SDLBodyInformation.m
+++ b/SmartDeviceLink/public/SDLBodyInformation.m
@@ -2,17 +2,41 @@
//
-#import "SDLBodyInformation.h"
-
#import "NSMutableDictionary+Store.h"
+#import "SDLBodyInformation.h"
+#import "SDLDoorStatus.h"
+#import "SDLGateStatus.h"
#import "SDLIgnitionStableStatus.h"
#import "SDLIgnitionStatus.h"
#import "SDLRPCParameterNames.h"
+#import "SDLRoofStatus.h"
NS_ASSUME_NONNULL_BEGIN
@implementation SDLBodyInformation
+- (instancetype)initWithParkBrakeActive:(BOOL)parkBrakeActive ignitionStableStatus:(SDLIgnitionStableStatus)ignitionStableStatus ignitionStatus:(SDLIgnitionStatus)ignitionStatus {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.parkBrakeActive = @(parkBrakeActive);
+ self.ignitionStableStatus = ignitionStableStatus;
+ self.ignitionStatus = ignitionStatus;
+ return self;
+}
+
+- (instancetype)initWithParkBrakeActive:(BOOL)parkBrakeActive ignitionStableStatus:(SDLIgnitionStableStatus)ignitionStableStatus ignitionStatus:(SDLIgnitionStatus)ignitionStatus doorStatuses:(nullable NSArray<SDLDoorStatus *> *)doorStatuses gateStatuses:(nullable NSArray<SDLGateStatus *> *)gateStatuses roofStatuses:(nullable NSArray<SDLRoofStatus *> *)roofStatuses {
+ self = [self initWithParkBrakeActive:parkBrakeActive ignitionStableStatus:ignitionStableStatus ignitionStatus:ignitionStatus];
+ if (!self) {
+ return nil;
+ }
+ self.doorStatuses = doorStatuses;
+ self.gateStatuses = gateStatuses;
+ self.roofStatuses = roofStatuses;
+ return self;
+}
+
- (void)setParkBrakeActive:(NSNumber<SDLBool> *)parkBrakeActive {
[self.store sdl_setObject:parkBrakeActive forName:SDLRPCParameterNameParkBrakeActive];
}
@@ -72,6 +96,30 @@ NS_ASSUME_NONNULL_BEGIN
return [self.store sdl_objectForName:SDLRPCParameterNameRearRightDoorAjar ofClass:NSNumber.class error:nil];
}
+- (void)setDoorStatuses:(nullable NSArray<SDLDoorStatus *> *)doorStatuses {
+ [self.store sdl_setObject:doorStatuses forName:SDLRPCParameterNameDoorStatuses];
+}
+
+- (nullable NSArray<SDLDoorStatus *> *)doorStatuses {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameDoorStatuses ofClass:SDLDoorStatus.class error:nil];
+}
+
+- (void)setGateStatuses:(nullable NSArray<SDLGateStatus *> *)gateStatuses {
+ [self.store sdl_setObject:gateStatuses forName:SDLRPCParameterNameGateStatuses];
+}
+
+- (nullable NSArray<SDLGateStatus *> *)gateStatuses {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameGateStatuses ofClass:SDLGateStatus.class error:nil];
+}
+
+- (void)setRoofStatuses:(nullable NSArray<SDLRoofStatus *> *)roofStatuses {
+ [self.store sdl_setObject:roofStatuses forName:SDLRPCParameterNameRoofStatuses];
+}
+
+- (nullable NSArray<SDLRoofStatus *> *)roofStatuses {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameRoofStatuses ofClass:SDLRoofStatus.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLDoorStatus.h b/SmartDeviceLink/public/SDLDoorStatus.h
new file mode 100644
index 000000000..9562a9ebf
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDoorStatus.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLDoorStatusType.h"
+#import "SDLRPCStruct.h"
+
+@class SDLGrid;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Describes the status of a parameter of door.
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@interface SDLDoorStatus : SDLRPCStruct
+
+/**
+ * @param location - location
+ * @param status - status
+ * @return A SDLDoorStatus object
+ */
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status;
+
+@property (strong, nonatomic) SDLGrid *location;
+
+@property (strong, nonatomic) SDLDoorStatusType status;
+
+@end
+
+NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/SmartDeviceLink/public/SDLDoorStatus.m b/SmartDeviceLink/public/SDLDoorStatus.m
new file mode 100644
index 000000000..0c1e6e8ea
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDoorStatus.m
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLDoorStatus.h"
+#import "SDLDoorStatusType.h"
+#import "SDLGrid.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLDoorStatus
+
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.location = location;
+ self.status = status;
+ return self;
+}
+
+- (void)setLocation:(SDLGrid *)location {
+ [self.store sdl_setObject:location forName:SDLRPCParameterNameLocation];
+}
+
+- (SDLGrid *)location {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameLocation ofClass:SDLGrid.class error:&error];
+}
+
+- (void)setStatus:(SDLDoorStatusType)status {
+ [self.store sdl_setObject:status forName:SDLRPCParameterNameStatus];
+}
+
+- (SDLDoorStatusType)status {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameStatus error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLDoorStatusType.h b/SmartDeviceLink/public/SDLDoorStatusType.h
new file mode 100644
index 000000000..b4e399bfc
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDoorStatusType.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLEnum.h"
+
+/**
+ * @added in SmartDeviceLink 7.1.0
+ */
+typedef SDLEnum SDLDoorStatusType NS_TYPED_ENUM;
+
+extern SDLDoorStatusType const SDLDoorStatusTypeClosed;
+
+extern SDLDoorStatusType const SDLDoorStatusTypeLocked;
+
+extern SDLDoorStatusType const SDLDoorStatusTypeAjar;
+
+extern SDLDoorStatusType const SDLDoorStatusTypeRemoved;
diff --git a/SmartDeviceLink/public/SDLDoorStatusType.m b/SmartDeviceLink/public/SDLDoorStatusType.m
new file mode 100644
index 000000000..77e523426
--- /dev/null
+++ b/SmartDeviceLink/public/SDLDoorStatusType.m
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLDoorStatusType.h"
+
+SDLDoorStatusType const SDLDoorStatusTypeClosed = @"CLOSED";
+SDLDoorStatusType const SDLDoorStatusTypeLocked = @"LOCKED";
+SDLDoorStatusType const SDLDoorStatusTypeAjar = @"AJAR";
+SDLDoorStatusType const SDLDoorStatusTypeRemoved = @"REMOVED";
+
diff --git a/SmartDeviceLink/public/SDLGateStatus.h b/SmartDeviceLink/public/SDLGateStatus.h
new file mode 100644
index 000000000..0aa78a810
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGateStatus.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLDoorStatusType.h"
+#import "SDLRPCStruct.h"
+
+@class SDLGrid;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Describes the status of a parameter of trunk/hood/etc.
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@interface SDLGateStatus : SDLRPCStruct
+
+/**
+ * @param location - location
+ * @param status - status
+ * @return A SDLGateStatus object
+ */
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status;
+
+@property (strong, nonatomic) SDLGrid *location;
+
+@property (strong, nonatomic) SDLDoorStatusType status;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGateStatus.m b/SmartDeviceLink/public/SDLGateStatus.m
new file mode 100644
index 000000000..f82885f90
--- /dev/null
+++ b/SmartDeviceLink/public/SDLGateStatus.m
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLDoorStatusType.h"
+#import "SDLGateStatus.h"
+#import "SDLGrid.h"
+#import "SDLRPCParameterNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+@implementation SDLGateStatus
+
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.location = location;
+ self.status = status;
+ return self;
+}
+
+- (void)setLocation:(SDLGrid *)location {
+ [self.store sdl_setObject:location forName:SDLRPCParameterNameLocation];
+}
+
+- (SDLGrid *)location {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameLocation ofClass:SDLGrid.class error:&error];
+}
+
+- (void)setStatus:(SDLDoorStatusType)status {
+ [self.store sdl_setObject:status forName:SDLRPCParameterNameStatus];
+}
+
+- (SDLDoorStatusType)status {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameStatus error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRoofStatus.h b/SmartDeviceLink/public/SDLRoofStatus.h
new file mode 100644
index 000000000..e2ec90b07
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRoofStatus.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLDoorStatusType.h"
+#import "SDLRPCStruct.h"
+
+@class SDLGrid;
+@class SDLWindowState;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Describes the status of a parameter of roof/convertible roof/sunroof/moonroof etc. If roof is open (AJAR), state will determine percentage of roof open.
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@interface SDLRoofStatus : SDLRPCStruct
+
+/**
+ * @param location - location
+ * @param status - status
+ * @return A SDLRoofStatus object
+ */
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status;
+
+/**
+ * @param location - location
+ * @param status - status
+ * @param state - state
+ * @return A SDLRoofStatus object
+ */
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status state:(nullable SDLWindowState *)state;
+
+@property (strong, nonatomic) SDLGrid *location;
+
+@property (strong, nonatomic) SDLDoorStatusType status;
+
+@property (nullable, strong, nonatomic) SDLWindowState *state;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRoofStatus.m b/SmartDeviceLink/public/SDLRoofStatus.m
new file mode 100644
index 000000000..666286575
--- /dev/null
+++ b/SmartDeviceLink/public/SDLRoofStatus.m
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLDoorStatusType.h"
+#import "SDLGrid.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRoofStatus.h"
+#import "SDLWindowState.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLRoofStatus
+
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.location = location;
+ self.status = status;
+ return self;
+}
+
+- (instancetype)initWithLocation:(SDLGrid *)location status:(SDLDoorStatusType)status state:(nullable SDLWindowState *)state {
+ self = [self initWithLocation:location status:status];
+ if (!self) {
+ return nil;
+ }
+ self.state = state;
+ return self;
+}
+
+- (void)setLocation:(SDLGrid *)location {
+ [self.store sdl_setObject:location forName:SDLRPCParameterNameLocation];
+}
+
+- (SDLGrid *)location {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameLocation ofClass:SDLGrid.class error:&error];
+}
+
+- (void)setStatus:(SDLDoorStatusType)status {
+ [self.store sdl_setObject:status forName:SDLRPCParameterNameStatus];
+}
+
+- (SDLDoorStatusType)status {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameStatus error:&error];
+}
+
+- (void)setState:(nullable SDLWindowState *)state {
+ [self.store sdl_setObject:state forName:SDLRPCParameterNameState];
+}
+
+- (nullable SDLWindowState *)state {
+ return [self.store sdl_objectForName:SDLRPCParameterNameState ofClass:SDLWindowState.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SmartDeviceLink.h b/SmartDeviceLink/public/SmartDeviceLink.h
index 197e01b4c..120fa64a4 100644
--- a/SmartDeviceLink/public/SmartDeviceLink.h
+++ b/SmartDeviceLink/public/SmartDeviceLink.h
@@ -203,12 +203,15 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLDeviceStatus.h"
#import "SDLDisplayCapabilities.h"
#import "SDLDisplayCapability.h"
+#import "SDLDoorStatus.h"
+#import "SDLDoorStatusType.h"
#import "SDLDynamicUpdateCapabilities.h"
#import "SDLDriverDistractionCapability.h"
#import "SDLECallInfo.h"
#import "SDLEmergencyEvent.h"
#import "SDLFuelRange.h"
#import "SDLEqualizerSettings.h"
+#import "SDLGateStatus.h"
#import "SDLGearStatus.h"
#import "SDLGPSData.h"
#import "SDLGrid.h"
@@ -252,6 +255,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLRectangle.h"
#import "SDLRemoteControlCapabilities.h"
#import "SDLRGBColor.h"
+#import "SDLRoofStatus.h"
#import "SDLScreenParams.h"
#import "SDLSeatControlCapabilities.h"
#import "SDLSeatControlData.h"
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDoorStatusTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDoorStatusTypeSpec.m
new file mode 100644
index 000000000..04a16c159
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDoorStatusTypeSpec.m
@@ -0,0 +1,24 @@
+//
+// SDLDoorStatusTypeSpec.m
+// SmartDeviceLink
+
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDoorStatusType.h"
+
+QuickSpecBegin(SDLDoorStatusTypeSpec)
+
+describe(@"individual enum value tests", ^{
+ it(@"should match internal values", ^{
+ expect(SDLDoorStatusTypeClosed).to(equal(@"CLOSED"));
+ expect(SDLDoorStatusTypeLocked).to(equal(@"LOCKED"));
+ expect(SDLDoorStatusTypeAjar).to(equal(@"AJAR"));
+ expect(SDLDoorStatusTypeRemoved).to(equal(@"REMOVED"));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m
index 9c8765525..a7fa46263 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m
@@ -9,62 +9,179 @@
#import <Nimble/Nimble.h>
#import "SDLBodyInformation.h"
+#import "SDLDoorStatus.h"
+#import "SDLGateStatus.h"
#import "SDLIgnitionStableStatus.h"
#import "SDLIgnitionStatus.h"
+#import "SDLRoofStatus.h"
#import "SDLRPCParameterNames.h"
QuickSpecBegin(SDLBodyInformationSpec)
-describe(@"Getter/Setter Tests", ^ {
- it(@"Should set and get correctly", ^ {
- SDLBodyInformation* testStruct = [[SDLBodyInformation alloc] init];
-
- testStruct.parkBrakeActive = @YES;
- testStruct.ignitionStableStatus = SDLIgnitionStableStatusStable;
- testStruct.ignitionStatus = SDLIgnitionStatusStart;
- testStruct.driverDoorAjar = @NO;
- testStruct.passengerDoorAjar = @NO;
- testStruct.rearLeftDoorAjar = @NO;
- testStruct.rearRightDoorAjar = @YES;
-
- expect(testStruct.parkBrakeActive).to(equal(@YES));
- expect(testStruct.ignitionStableStatus).to(equal(SDLIgnitionStableStatusStable));
- expect(testStruct.ignitionStatus).to(equal(SDLIgnitionStatusStart));
- expect(testStruct.driverDoorAjar).to(equal(@NO));
- expect(testStruct.passengerDoorAjar).to(equal(@NO));
- expect(testStruct.rearLeftDoorAjar).to(equal(@NO));
- expect(testStruct.rearRightDoorAjar).to(equal(@YES));
+NSArray<SDLDoorStatus *> *doorStatuses = @[[[SDLDoorStatus alloc] init]];
+NSArray<SDLGateStatus *> *gateStatuses = @[[[SDLGateStatus alloc] init]];
+NSArray<SDLRoofStatus *> *roofStatuses = @[[[SDLRoofStatus alloc] init]];
+SDLIgnitionStableStatus ignitionStableStatus = SDLIgnitionStableStatusStable;
+SDLIgnitionStatus ignitionStatus = SDLIgnitionStatusStart;
+__block SDLBodyInformation *testStruct = nil;
+
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
+ beforeEach(^{
+ testStruct = [[SDLBodyInformation alloc] init];
+ testStruct.parkBrakeActive = @YES;
+ testStruct.ignitionStableStatus = SDLIgnitionStableStatusStable;
+ testStruct.ignitionStatus = SDLIgnitionStatusStart;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testStruct.driverDoorAjar = @NO;
+ testStruct.passengerDoorAjar = @NO;
+ testStruct.rearLeftDoorAjar = @NO;
+ testStruct.rearRightDoorAjar = @YES;
+#pragma clang diagnostic pop
+ testStruct.doorStatuses = doorStatuses;
+ testStruct.gateStatuses = gateStatuses;
+ testStruct.roofStatuses = roofStatuses;
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.parkBrakeActive).to(equal(@YES));
+ expect(testStruct.ignitionStableStatus).to(equal(SDLIgnitionStableStatusStable));
+ expect(testStruct.ignitionStatus).to(equal(SDLIgnitionStatusStart));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testStruct.driverDoorAjar).to(equal(@NO));
+ expect(testStruct.passengerDoorAjar).to(equal(@NO));
+ expect(testStruct.rearLeftDoorAjar).to(equal(@NO));
+ expect(testStruct.rearRightDoorAjar).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testStruct.doorStatuses).to(equal(doorStatuses));
+ expect(testStruct.gateStatuses).to(equal(gateStatuses));
+ expect(testStruct.roofStatuses).to(equal(roofStatuses));
+ });
});
-
- it(@"Should get correctly when initialized", ^ {
- NSMutableDictionary* dict = [@{SDLRPCParameterNameParkBrakeActive:@YES,
- SDLRPCParameterNameIgnitionStableStatus:SDLIgnitionStableStatusNotStable,
- SDLRPCParameterNameIgnitionStatus:SDLIgnitionStatusStart,
- SDLRPCParameterNameDriverDoorAjar:@NO,
- SDLRPCParameterNamePassengerDoorAjar:@NO,
- SDLRPCParameterNameRearLeftDoorAjar:@NO,
- SDLRPCParameterNameRearRightDoorAjar:@YES} mutableCopy];
- SDLBodyInformation* testStruct = [[SDLBodyInformation alloc] initWithDictionary:dict];
-
- expect(testStruct.parkBrakeActive).to(equal(@YES));
- expect(testStruct.ignitionStableStatus).to(equal(SDLIgnitionStableStatusNotStable));
- expect(testStruct.ignitionStatus).to(equal(SDLIgnitionStatusStart));
- expect(testStruct.driverDoorAjar).to(equal(@NO));
- expect(testStruct.passengerDoorAjar).to(equal(@NO));
- expect(testStruct.rearLeftDoorAjar).to(equal(@NO));
- expect(testStruct.rearRightDoorAjar).to(equal(@YES));
+
+ context(@"initWithDictionary:", ^{
+ beforeEach(^{
+ NSDictionary *dict = @{
+ SDLRPCParameterNameParkBrakeActive:@YES,
+ SDLRPCParameterNameIgnitionStableStatus:SDLIgnitionStableStatusNotStable,
+ SDLRPCParameterNameIgnitionStatus:SDLIgnitionStatusStart,
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLRPCParameterNameDriverDoorAjar:@NO,
+ SDLRPCParameterNamePassengerDoorAjar:@NO,
+ SDLRPCParameterNameRearLeftDoorAjar:@NO,
+ SDLRPCParameterNameRearRightDoorAjar:@YES,
+#pragma clang diagnostic pop
+ SDLRPCParameterNameDoorStatuses:doorStatuses,
+ SDLRPCParameterNameGateStatuses:gateStatuses,
+ SDLRPCParameterNameRoofStatuses:roofStatuses,
+ };
+ testStruct = [[SDLBodyInformation alloc] initWithDictionary:dict];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.parkBrakeActive).to(equal(@YES));
+ expect(testStruct.ignitionStableStatus).to(equal(SDLIgnitionStableStatusNotStable));
+ expect(testStruct.ignitionStatus).to(equal(SDLIgnitionStatusStart));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testStruct.driverDoorAjar).to(equal(@NO));
+ expect(testStruct.passengerDoorAjar).to(equal(@NO));
+ expect(testStruct.rearLeftDoorAjar).to(equal(@NO));
+ expect(testStruct.rearRightDoorAjar).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testStruct.doorStatuses).to(equal(doorStatuses));
+ expect(testStruct.gateStatuses).to(equal(gateStatuses));
+ expect(testStruct.roofStatuses).to(equal(roofStatuses));
+ });
});
-
- it(@"Should return nil if not set", ^ {
- SDLBodyInformation* testStruct = [[SDLBodyInformation alloc] init];
-
- expect(testStruct.parkBrakeActive).to(beNil());
- expect(testStruct.ignitionStableStatus).to(beNil());
- expect(testStruct.ignitionStatus).to(beNil());
- expect(testStruct.driverDoorAjar).to(beNil());
- expect(testStruct.passengerDoorAjar).to(beNil());
- expect(testStruct.rearLeftDoorAjar).to(beNil());
- expect(testStruct.rearRightDoorAjar).to(beNil());
+
+ context(@"init", ^{
+ beforeEach(^{
+ testStruct = [[SDLBodyInformation alloc] init];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be nil", ^{
+ expect(testStruct.parkBrakeActive).to(beNil());
+ expect(testStruct.ignitionStableStatus).to(beNil());
+ expect(testStruct.ignitionStatus).to(beNil());
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testStruct.driverDoorAjar).to(beNil());
+ expect(testStruct.passengerDoorAjar).to(beNil());
+ expect(testStruct.rearLeftDoorAjar).to(beNil());
+ expect(testStruct.rearRightDoorAjar).to(beNil());
+ #pragma clang diagnostic pop
+ expect(testStruct.doorStatuses).to(beNil());
+ expect(testStruct.gateStatuses).to(beNil());
+ expect(testStruct.roofStatuses).to(beNil());
+ });
+ });
+
+ context(@"initWithParkBrakeActive:ignitionStableStatus:ignitionStatus:", ^{
+ beforeEach(^{
+ testStruct = [[SDLBodyInformation alloc] initWithParkBrakeActive:YES ignitionStableStatus:ignitionStableStatus ignitionStatus:ignitionStatus];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.parkBrakeActive).to(equal(@YES));
+ expect(testStruct.ignitionStableStatus).to(equal(ignitionStableStatus));
+ expect(testStruct.ignitionStatus).to(equal(ignitionStatus));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testStruct.driverDoorAjar).to(beNil());
+ expect(testStruct.passengerDoorAjar).to(beNil());
+ expect(testStruct.rearLeftDoorAjar).to(beNil());
+ expect(testStruct.rearRightDoorAjar).to(beNil());
+#pragma clang diagnostic pop
+ expect(testStruct.doorStatuses).to(beNil());
+ expect(testStruct.gateStatuses).to(beNil());
+ expect(testStruct.roofStatuses).to(beNil());
+ });
+ });
+
+ context(@"initWithParkBrakeActive:ignitionStableStatus:ignitionStatus:", ^{
+ beforeEach(^{
+ testStruct = [[SDLBodyInformation alloc] initWithParkBrakeActive:YES ignitionStableStatus:ignitionStableStatus ignitionStatus:ignitionStatus doorStatuses:doorStatuses gateStatuses:gateStatuses roofStatuses:roofStatuses];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.parkBrakeActive).to(equal(@YES));
+ expect(testStruct.ignitionStableStatus).to(equal(ignitionStableStatus));
+ expect(testStruct.ignitionStatus).to(equal(ignitionStatus));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testStruct.driverDoorAjar).to(beNil());
+ expect(testStruct.passengerDoorAjar).to(beNil());
+ expect(testStruct.rearLeftDoorAjar).to(beNil());
+ expect(testStruct.rearRightDoorAjar).to(beNil());
+#pragma clang diagnostic pop
+ expect(testStruct.doorStatuses).to(equal(doorStatuses));
+ expect(testStruct.gateStatuses).to(equal(gateStatuses));
+ expect(testStruct.roofStatuses).to(equal(roofStatuses));
+ });
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDoorStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDoorStatusSpec.m
new file mode 100644
index 000000000..17eed73b7
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDoorStatusSpec.m
@@ -0,0 +1,92 @@
+//
+// SDLDoorStatusSpec.m
+// SmartDeviceLink
+
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDoorStatus.h"
+#import "SDLDoorStatusType.h"
+#import "SDLGrid.h"
+#import "SDLRPCParameterNames.h"
+
+QuickSpecBegin(SDLDoorStatusSpec)
+
+SDLGrid *location = [[SDLGrid alloc] init];
+SDLDoorStatusType status = SDLDoorStatusTypeAjar;
+__block SDLDoorStatus *testStruct = nil;
+
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
+ beforeEach(^{
+ testStruct = [[SDLDoorStatus alloc] init];
+ testStruct.location = location;
+ testStruct.status = status;
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ beforeEach(^{
+ NSDictionary *dict = @{
+ SDLRPCParameterNameLocation:location,
+ SDLRPCParameterNameStatus:status,
+ };
+ testStruct = [[SDLDoorStatus alloc] initWithDictionary:dict];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ });
+ });
+
+ context(@"init", ^{
+ beforeEach(^{
+ testStruct = [[SDLDoorStatus alloc] init];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be nil", ^{
+ expect(testStruct.location).to(beNil());
+ expect(testStruct.status).to(beNil());
+ });
+ });
+
+ context(@"initWithLocation:status:", ^{
+ beforeEach(^{
+ testStruct = [[SDLDoorStatus alloc] initWithLocation:location status:status];
+ testStruct.location = location;
+ testStruct.status = status;
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGateStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGateStatusSpec.m
new file mode 100644
index 000000000..d35517cea
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGateStatusSpec.m
@@ -0,0 +1,93 @@
+//
+// SDLGateStatusSpec.m
+// SmartDeviceLink
+
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDoorStatusType.h"
+#import "SDLGateStatus.h"
+#import "SDLGrid.h"
+#import "SDLIgnitionStableStatus.h"
+#import "SDLRPCParameterNames.h"
+
+QuickSpecBegin(SDLGateStatusSpec)
+
+SDLGrid *location = [[SDLGrid alloc] init];
+SDLDoorStatusType status = SDLDoorStatusTypeAjar;
+__block SDLGateStatus *testStruct = nil;
+
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
+ beforeEach(^{
+ testStruct = [[SDLGateStatus alloc] init];
+ testStruct.location = location;
+ testStruct.status = status;
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ beforeEach(^{
+ NSDictionary *dict = @{
+ SDLRPCParameterNameLocation:location,
+ SDLRPCParameterNameStatus:status,
+ };
+ testStruct = [[SDLGateStatus alloc] initWithDictionary:dict];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ });
+ });
+
+ context(@"init", ^{
+ beforeEach(^{
+ testStruct = [[SDLGateStatus alloc] init];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be nil", ^{
+ expect(testStruct.location).to(beNil());
+ expect(testStruct.status).to(beNil());
+ });
+ });
+
+ context(@"initWithLocation:status:", ^{
+ beforeEach(^{
+ testStruct = [[SDLGateStatus alloc] initWithLocation:location status:status];
+ testStruct.location = location;
+ testStruct.status = status;
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRoofStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRoofStatusSpec.m
new file mode 100644
index 000000000..933ad1d0c
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRoofStatusSpec.m
@@ -0,0 +1,114 @@
+//
+// SDLRoofStatusSpec.m
+// SmartDeviceLink
+
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLDoorStatusType.h"
+#import "SDLGrid.h"
+#import "SDLRoofStatus.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLWindowState.h"
+
+QuickSpecBegin(SDLRoofStatusSpec)
+
+SDLGrid *location = [[SDLGrid alloc] init];
+SDLDoorStatusType status = SDLDoorStatusTypeAjar;
+SDLWindowState *state = [[SDLWindowState alloc] init];
+__block SDLRoofStatus *testStruct = nil;
+
+describe(@"getter/setter tests", ^{
+ context(@"init and assign", ^{
+ beforeEach(^{
+ testStruct = [[SDLRoofStatus alloc] init];
+ testStruct.location = location;
+ testStruct.status = status;
+ testStruct.state = state;
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ expect(testStruct.state).to(equal(state));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ beforeEach(^{
+ NSDictionary *dict = @{
+ SDLRPCParameterNameLocation:location,
+ SDLRPCParameterNameStatus:status,
+ SDLRPCParameterNameState:state,
+ };
+ testStruct = [[SDLRoofStatus alloc] initWithDictionary:dict];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ expect(testStruct.state).to(equal(state));
+ });
+ });
+
+ context(@"init", ^{
+ beforeEach(^{
+ testStruct = [[SDLRoofStatus alloc] init];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be nil", ^{
+ expect(testStruct.location).to(beNil());
+ expect(testStruct.status).to(beNil());
+ expect(testStruct.state).to(beNil());
+ });
+ });
+
+ context(@"initWithLocation:status:", ^{
+ beforeEach(^{
+ testStruct = [[SDLRoofStatus alloc] initWithLocation:location status:status];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ expect(testStruct.state).to(beNil());
+ });
+ });
+
+ context(@"initWithLocation:status:state:", ^{
+ beforeEach(^{
+ testStruct = [[SDLRoofStatus alloc] initWithLocation:location status:status state:state];
+ });
+
+ it(@"expect struct is not nil", ^{
+ expect(testStruct).notTo(beNil());
+ });
+
+ it(@"expect all properties to be set correctly", ^{
+ expect(testStruct.location).to(equal(location));
+ expect(testStruct.status).to(equal(status));
+ expect(testStruct.state).to(equal(state));
+ });
+ });
+});
+
+QuickSpecEnd