summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Elias <francois.elias@livio.io>2021-02-09 16:45:43 -0500
committerFrank Elias <francois.elias@livio.io>2021-02-09 16:45:43 -0500
commit2b5d23da1e982ff47117b2c22057fc2c3c7c8765 (patch)
tree1c60f10c5557b8c253cde72480cff7e98f43c201
parented7d050a1258d3e167d893a5a7724fb9c42371f0 (diff)
parent74852b52f2b01cd8131cbc188c826172cbfa49c2 (diff)
downloadsdl_ios-feature/issue-1676-sdl-0305-homogenize-textFieldName.tar.gz
Merge branch 'develop' into feature/issue-1676-sdl-0305-homogenize-textFieldNamefeature/issue-1676-sdl-0305-homogenize-textFieldName
# Conflicts: # SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m
-rw-r--r--.github/CONTRIBUTING.md12
-rw-r--r--.github/workflows/test.yml9
-rw-r--r--Cartfile.private3
-rw-r--r--Cartfile.resolved5
-rw-r--r--Example Apps/Example ObjC/VehicleDataManager.m5
-rw-r--r--Example Apps/Example Swift/VehicleDataManager.swift2
-rw-r--r--README.md16
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj270
-rw-r--r--SmartDeviceLink/private/SDLChoiceSetManager.m1
-rw-r--r--SmartDeviceLink/private/SDLError.h1
-rw-r--r--SmartDeviceLink/private/SDLError.m4
-rw-r--r--SmartDeviceLink/private/SDLGlobals.m6
-rw-r--r--SmartDeviceLink/private/SDLLifecycleManager.m1
-rw-r--r--SmartDeviceLink/private/SDLRPCParameterNames.h23
-rw-r--r--SmartDeviceLink/private/SDLRPCParameterNames.m15
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonManager.m6
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m3
-rw-r--r--SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m3
-rw-r--r--SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m21
-rw-r--r--SmartDeviceLink/private/SDLTextAndGraphicManager.m4
-rw-r--r--SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m3
-rw-r--r--SmartDeviceLink/public/SDLBodyInformation.h81
-rw-r--r--SmartDeviceLink/public/SDLBodyInformation.m52
-rw-r--r--SmartDeviceLink/public/SDLClimateData.h70
-rw-r--r--SmartDeviceLink/public/SDLClimateData.m78
-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/SDLGetVehicleData.h63
-rw-r--r--SmartDeviceLink/public/SDLGetVehicleData.m35
-rw-r--r--SmartDeviceLink/public/SDLGetVehicleDataResponse.h66
-rw-r--r--SmartDeviceLink/public/SDLGetVehicleDataResponse.m35
-rw-r--r--SmartDeviceLink/public/SDLOnVehicleData.h65
-rw-r--r--SmartDeviceLink/public/SDLOnVehicleData.m34
-rw-r--r--SmartDeviceLink/public/SDLRegisterAppInterface.h2
-rw-r--r--SmartDeviceLink/public/SDLRoofStatus.h71
-rw-r--r--SmartDeviceLink/public/SDLRoofStatus.m91
-rw-r--r--SmartDeviceLink/public/SDLSeatOccupancy.h65
-rw-r--r--SmartDeviceLink/public/SDLSeatOccupancy.m70
-rw-r--r--SmartDeviceLink/public/SDLSeatStatus.h59
-rw-r--r--SmartDeviceLink/public/SDLSeatStatus.m72
-rw-r--r--SmartDeviceLink/public/SDLSeekIndicatorType.h41
-rw-r--r--SmartDeviceLink/public/SDLSeekIndicatorType.m36
-rw-r--r--SmartDeviceLink/public/SDLSeekStreamingIndicator.h74
-rw-r--r--SmartDeviceLink/public/SDLSeekStreamingIndicator.m82
-rw-r--r--SmartDeviceLink/public/SDLSetMediaClockTimer.h124
-rw-r--r--SmartDeviceLink/public/SDLSetMediaClockTimer.m87
-rw-r--r--SmartDeviceLink/public/SDLShow.h52
-rw-r--r--SmartDeviceLink/public/SDLShow.m55
-rw-r--r--SmartDeviceLink/public/SDLShowConstantTBT.h8
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleData.h63
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleData.m36
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h62
-rw-r--r--SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m33
-rw-r--r--SmartDeviceLink/public/SDLTextFieldName.h5
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleData.h63
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleData.m37
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h61
-rw-r--r--SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m32
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataType.h16
-rw-r--r--SmartDeviceLink/public/SDLVehicleDataType.m2
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingCapability.h28
-rw-r--r--SmartDeviceLink/public/SDLVideoStreamingCapability.m28
-rw-r--r--SmartDeviceLink/public/SmartDeviceLink.h9
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m6
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleProtocolHandlerSpec.m2
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenViewControllerSnapshotTests.m80
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m3
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m2
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLVoiceCommandManagerSpec.m2
-rw-r--r--SmartDeviceLinkTests/Notifications/SDLResponseDispatcherSpec.m2
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLDoorStatusTypeSpec.m24
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSeekIndicatorTypeSpec.m23
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m3
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m5
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m84
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m183
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m90
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m138
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m273
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m122
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m78
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m70
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatOccupancySpec.m64
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatStatusSpec.m66
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m70
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m71
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m213
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateDataSpec.m73
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDoorStatusSpec.m92
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGateStatusSpec.m93
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRoofStatusSpec.m114
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeekStreamingIndicatorSpec.m79
-rwxr-xr-xSmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m4
-rw-r--r--SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m23
-rwxr-xr-x[-rw-r--r--]carthage-build.sh2
m---------generator/rpc_spec0
-rw-r--r--generator/transformers/common_producer.py37
101 files changed, 4349 insertions, 648 deletions
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index b5d54dff1..189e8a039 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -3,12 +3,12 @@
Third party contributions are essential for making SDL great. However, we do have a few guidelines we need contributors to follow.
### Issues
-If writing a bug report, please make sure <a href="https://your.bugreportneedsmore.info" target="_blank">it has enough info</a>. Include all relevant information.
+If writing a bug report, please make sure [it has enough info](https://your.bugreportneedsmore.info). Include all relevant information.
If requesting a feature, understand that we appreciate the input! However, it may not immediately fit our roadmap, and it may take a while for us to get to your request.
### Gitflow
-We use <a href="http://nvie.com/posts/a-successful-git-branching-model/">Gitflow</a> as our branch management system. Please follow gitflow's guidelines while contributing to any SDL project.
+We use [Gitflow](http://nvie.com/posts/a-successful-git-branching-model/) as our branch management system. Please follow gitflow's guidelines while contributing to any SDL project.
### Pull Requests
* Please follow the repository's for all code and documentation.
@@ -18,11 +18,11 @@ We use <a href="http://nvie.com/posts/a-successful-git-branching-model/">Gitflow
* All commits should separated into logical units, i.e. unrelated changes should be in different commits within a pull request.
* Work in progress pull requests should have "[WIP]" in front of the Pull Request title. When you believe the pull request is ready to merge, remove this tag and @mention the appropriate SDL team to schedule a review.
* All new code *must* include unit tests. Bug fixes should have a test that fails previously and now passes. All new features should be covered. If your code does not have tests, or regresses old tests, it will be rejected.
-* A great example of a <a href="https://github.com/smartdevicelink/SmartDeviceLink-iOS/pull/45" target="_blank">pull request can be found here</a>.
+* Make sure you fill out all sections of the PR template. A great example of a [pull request can be found here](https://github.com/smartdevicelink/sdl_ios/pull/1688).
### Contributor's License Agreement (CLA)
-In order to accept Pull Requests from contributors, you must first sign [the Contributor's License Agreement](https://docs.google.com/forms/d/1VNR8EUd5b46cQ7uNbCq1fJmnu0askNpUp5dudLKRGpU/viewform). If you need to make a change to information that you entered, [please contact us](mailto:justin@livio.io).
+In order to accept Pull Requests from contributors, you must first sign [the Contributor's License Agreement](https://docs.google.com/forms/d/1VNR8EUd5b46cQ7uNbCq1fJmnu0askNpUp5dudLKRGpU/viewform). If you need to make a change to information that you entered, [please contact us](mailto:admin@smartdevicelink.com).
### Repository Specific Guidelines
- * <a href="https://github.com/smartdevicelink/sdl_ios/wiki/Objective-C-Style-Guide" target="blank">iOS Style Guide</a>
- * Please document all code written using [Objective-C style documentation](http://nshipster.com/documentation/) for methods (we use [VVDocumenter](https://github.com/onevcat/VVDocumenter-Xcode) for methods and use inline code comments where it makes sense, i.e. for non-obvious code chunks.
+ * [iOS Style Guide](https://github.com/smartdevicelink/sdl_ios/wiki/Objective-C-Style-Guide)
+ * Please document all public and internally public APIs using Xcode's standard documentation (have the cursor on the API declaration and press `cmd+alt+/`).
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index cf53b5bda..f675f0b41 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -5,7 +5,7 @@ on: [push, pull_request]
env:
PROJECT: 'SmartDeviceLink-iOS.xcodeproj'
- DESTINATION: 'platform=iOS Simulator,name=iPhone 11,OS=14.1'
+ DESTINATION: 'platform=iOS Simulator,name=iPhone 12,OS=14.4'
jobs:
build:
@@ -27,7 +27,7 @@ jobs:
# Select the Xcode version (the platform/simulator/OS available for testing depend on the Xcode version)
- name: Select Xcode version
- run: sudo xcode-select -switch /Applications/Xcode_12.1.app
+ run: sudo xcode-select -switch /Applications/Xcode_12.4.app
- name: Build
run: set -o pipefail && xcodebuild -scheme "${{ matrix.scheme }}" -destination "$DESTINATION" build | xcpretty --color --simple
@@ -46,7 +46,7 @@ jobs:
# Select the Xcode version (the platform/simulator/OS available for testing depend on the Xcode version)
- name: Select Xcode version
- run: sudo xcode-select -switch /Applications/Xcode_12.1.app
+ run: sudo xcode-select -switch /Applications/Xcode_12.4.app
- name: Checkout repository
uses: actions/checkout@v2.3.1
@@ -63,8 +63,7 @@ jobs:
- name: Installing dependencies
if: steps.carthage-cache.outputs.cache-hit != 'true'
- run: bash carthage-build.sh --no-use-binaries --platform iOS --cache-builds
- # run: carthage bootstrap --no-use-binaries --platform iOS --cache-builds
+ run: bash carthage-build.sh bootstrap --no-use-binaries --platform ios --cache-builds
# Split build into build-only and test-only as it is faster than building and running in one step
- name: Building unit tests
diff --git a/Cartfile.private b/Cartfile.private
index 29600768d..cedbbe1a3 100644
--- a/Cartfile.private
+++ b/Cartfile.private
@@ -1,4 +1,3 @@
github "Quick/Quick" ~> 3.0
-github "Quick/Nimble" == 9.0.0-rc.3
+github "Quick/Nimble" ~> 9.0.0
github "erikdoe/ocmock" ~> 3.7
-github "uber/ios-snapshot-test-case" ~> 6.2
diff --git a/Cartfile.resolved b/Cartfile.resolved
index e8652705c..00e581205 100644
--- a/Cartfile.resolved
+++ b/Cartfile.resolved
@@ -1,4 +1,3 @@
-github "Quick/Nimble" "v9.0.0-rc.3"
+github "Quick/Nimble" "v9.0.0"
github "Quick/Quick" "v3.0.0"
-github "erikdoe/ocmock" "v3.7.1"
-github "uber/ios-snapshot-test-case" "6.2.0"
+github "erikdoe/ocmock" "v3.8.1"
diff --git a/Example Apps/Example ObjC/VehicleDataManager.m b/Example Apps/Example ObjC/VehicleDataManager.m
index f6192777a..26384a902 100644
--- a/Example Apps/Example ObjC/VehicleDataManager.m
+++ b/Example Apps/Example ObjC/VehicleDataManager.m
@@ -144,7 +144,7 @@ NS_ASSUME_NONNULL_BEGIN
SDLLogD(@"App has permission to access vehicle data. Requesting vehicle data...");
- SDLGetVehicleData *getAllVehicleData = [[SDLGetVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES vin:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
+ SDLGetVehicleData *getAllVehicleData = [[SDLGetVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES climateData:@YES turnSignal:@YES vin:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES windowStatus:@YES handsOffSteering:@YES seatOccupancy:@YES];
[manager sendRequest:getAllVehicleData withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
if (error || ![response isKindOfClass:SDLGetVehicleDataResponse.class]) {
@@ -214,7 +214,10 @@ NS_ASSUME_NONNULL_BEGIN
} else if ([vehicleDataType isEqualToString:ACEngineTorqueMenuName]) {
vehicleDataDescription = vehicleData.engineTorque.description;
} else if ([vehicleDataType isEqualToString:ACExternalTemperatureMenuName]) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
vehicleDataDescription = vehicleData.externalTemperature.description;
+#pragma clang diagnostic pop
} else if ([vehicleDataType isEqualToString:ACFuelLevelMenuName]) {
vehicleDataDescription = vehicleData.fuelRange.firstObject.level.description;
} else if ([vehicleDataType isEqualToString:ACFuelLevelStateMenuName]) {
diff --git a/Example Apps/Example Swift/VehicleDataManager.swift b/Example Apps/Example Swift/VehicleDataManager.swift
index 87176a883..b9647ceb2 100644
--- a/Example Apps/Example Swift/VehicleDataManager.swift
+++ b/Example Apps/Example Swift/VehicleDataManager.swift
@@ -111,7 +111,7 @@ extension VehicleDataManager {
guard hasPermissionToAccessVehicleData(with: manager) else { return }
SDLLog.d("App has permission to access vehicle data. Requesting all vehicle data...")
- let getAllVehicleData = SDLGetVehicleData(gps: NSNumber(true), speed: NSNumber(true), rpm: NSNumber(true), instantFuelConsumption: NSNumber(true), fuelRange: NSNumber(true), externalTemperature: NSNumber(true), turnSignal: NSNumber(true), vin: NSNumber(true), gearStatus: NSNumber(true), tirePressure: NSNumber(true), odometer: NSNumber(true), beltStatus: NSNumber(true), bodyInformation: NSNumber(true), deviceStatus: NSNumber(true), driverBraking: NSNumber(true), wiperStatus: NSNumber(true), headLampStatus: NSNumber(true), engineTorque: NSNumber(true), accPedalPosition: NSNumber(true), steeringWheelAngle: NSNumber(true), engineOilLife: NSNumber(true), electronicParkBrakeStatus: NSNumber(true), cloudAppVehicleID: NSNumber(true), stabilityControlsStatus: NSNumber(true), eCallInfo: NSNumber(true), airbagStatus: NSNumber(true), emergencyEvent: NSNumber(true), clusterModeStatus: NSNumber(true), myKey: NSNumber(true), handsOffSteering: NSNumber(true), windowStatus: NSNumber(true))
+ let getAllVehicleData = SDLGetVehicleData(gps:NSNumber(true), speed:NSNumber(true), rpm:NSNumber(true), instantFuelConsumption:NSNumber(true), fuelRange:NSNumber(true), climateData:NSNumber(true), turnSignal:NSNumber(true), vin:NSNumber(true), gearStatus:NSNumber(true), tirePressure:NSNumber(true), odometer:NSNumber(true), beltStatus:NSNumber(true), bodyInformation:NSNumber(true), deviceStatus:NSNumber(true), driverBraking:NSNumber(true), wiperStatus:NSNumber(true), headLampStatus:NSNumber(true), engineTorque:NSNumber(true), accPedalPosition:NSNumber(true), steeringWheelAngle:NSNumber(true), engineOilLife:NSNumber(true), electronicParkBrakeStatus:NSNumber(true), cloudAppVehicleID:NSNumber(true), stabilityControlsStatus:NSNumber(true), eCallInfo:NSNumber(true), airbagStatus:NSNumber(true), emergencyEvent:NSNumber(true), clusterModeStatus:NSNumber(true), myKey:NSNumber(true), windowStatus:NSNumber(true), handsOffSteering:NSNumber(true), seatOccupancy:NSNumber(true))
manager.send(request: getAllVehicleData) { (request, response, error) in
guard didAccessVehicleDataSuccessfully(with: manager, response: response, error: error) else { return }
diff --git a/README.md b/README.md
index 0f65cd5a2..ae943a97c 100644
--- a/README.md
+++ b/README.md
@@ -78,19 +78,3 @@ carthage bootstrap --platform ios
```
At this point, you can run tests from Xcode, or, if you wish to run the tests exactly as they will be run on the CI server, see the [YAML document](https://github.com/smartdevicelink/sdl_ios/blob/master/.github/workflows/test.yml) describing those tests. You can also check the [previously run CI tests](https://github.com/smartdevicelink/sdl_ios/actions?query=workflow%3A%22SmartDeviceLink+Tests%22) to see how they're currently being run.
-
-##### Lock Screen Screenshot Tests
-We run some additional tests using [iOSSnapshotTestCase](https://github.com/uber/ios-snapshot-test-case). These tests generate the lock screen view controller and compare it to generated screenshots. By default, the generated screenshots use the iPhone 11 simulator and if you run the unit tests on that simulator, the tests should pass by default.
-
-###### Re-Generating Lock Screen Screenshots
-If you need to change which simulator is used to generate the screenshots, or if you need to re-generate the screenshots for another reason, you can. Go to `SDLLockScreenViewControllerSnapshotTests.m` and take the following steps:
-
-1. Uncomment the following line:
-
-```objc
-// self.recordMode = YES;
-```
-
-2. Run unit tests on the simulator that you want to use to generate the screenshots. Tests should fail because record mode is on.
-3. Re-comment out the line.
-4. Run unit tests again; they should pass this time.
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index 2773665f2..04d451b0e 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -294,7 +294,7 @@
4A402561250134CB0080E159 /* SDLStabilityControlsStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A40255F250134CA0080E159 /* SDLStabilityControlsStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
4A404C66250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A404C65250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m */; };
4A404C68250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A404C67250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m */; };
- 4A41430D255F0A090039C267 /* TestConnectionRequestObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A41430C255F0A090039C267 /* TestConnectionRequestObject.m */; };
+ 4A41430D255F0A090039C267 /* TestConnectionRequestObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A41430C255F0A090039C267 /* TestConnectionRequestObject.m */; };
4A457DC324A2933E00386CBA /* SDLLifecycleRPCAdapterSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A457DC224A2933E00386CBA /* SDLLifecycleRPCAdapterSpec.m */; };
4A457DD324A3886700386CBA /* SDLLifecycleSyncPDataHandlerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A457DD224A3886700386CBA /* SDLLifecycleSyncPDataHandlerSpec.m */; };
4A457DD524A3C16E00386CBA /* SDLLifecycleMobileHMIStateHandlerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A457DD424A3C16E00386CBA /* SDLLifecycleMobileHMIStateHandlerSpec.m */; };
@@ -1384,9 +1384,9 @@
4ABB2BA724F850AE0061BF55 /* SDLImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9924F850AD0061BF55 /* SDLImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
4ABB2BA824F850AE0061BF55 /* SDLLightState.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABB2B9A24F850AD0061BF55 /* SDLLightState.m */; };
4ABB2BA924F850AE0061BF55 /* SDLImageResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABB2B9B24F850AD0061BF55 /* SDLImageResolution.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4ABED25B257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABED259257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m */; };
- 4ABED25C257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABED25A257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h */; };
- 4AD1F1742559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */; };
+ 4ABED25B257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ABED259257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m */; };
+ 4ABED25C257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ABED25A257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h */; };
+ 4AD1F1742559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */; };
4AE8A7022537796E000666C0 /* SmartDeviceLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE8A7012537796E000666C0 /* SmartDeviceLink.h */; settings = {ATTRIBUTES = (Public, ); }; };
5D0A9F911F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */; };
5D0A9F931F15560B00CC80DD /* SDLNavigationCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */; };
@@ -1446,9 +1446,6 @@
5D43466F1E6F55BD00B639C6 /* SDLLogManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D43466E1E6F55BD00B639C6 /* SDLLogManagerSpec.m */; };
5D4346731E6F617D00B639C6 /* TestLogTarget.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4346721E6F617D00B639C6 /* TestLogTarget.m */; };
5D59DD471B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D59DD461B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m */; };
- 5D5DBF081D48E39C00D4F914 /* FBSnapshotTestCase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */; };
- 5D5DBF091D48E3AC00D4F914 /* FBSnapshotTestCase.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 5D5DBF0B1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5DBF0A1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m */; };
5D6035D2202CD46200A429C9 /* SDLSpecUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6035D1202CD46200A429C9 /* SDLSpecUtilities.m */; };
5D6035D5202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6035D4202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m */; };
5D6035D8202CF5C900A429C9 /* TestRequestProgressResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6035D7202CF5C900A429C9 /* TestRequestProgressResponse.m */; };
@@ -1667,10 +1664,37 @@
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 */; };
+ B360F9D0255EFEFD0027CA17 /* SDLClimateData.m in Sources */ = {isa = PBXBuildFile; fileRef = B360F9CE255EFEFD0027CA17 /* SDLClimateData.m */; };
+ B360F9D1255EFEFD0027CA17 /* SDLClimateData.h in Headers */ = {isa = PBXBuildFile; fileRef = B360F9CF255EFEFD0027CA17 /* SDLClimateData.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ B360F9DE255F52A50027CA17 /* SDLSeatStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = B360F9DC255F52A40027CA17 /* SDLSeatStatus.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ B360F9DF255F52A50027CA17 /* SDLSeatStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = B360F9DD255F52A40027CA17 /* SDLSeatStatus.m */; };
+ B360F9E4255F52BA0027CA17 /* SDLSeatOccupancy.m in Sources */ = {isa = PBXBuildFile; fileRef = B360F9E2255F52B90027CA17 /* SDLSeatOccupancy.m */; };
+ B360F9E5255F52BA0027CA17 /* SDLSeatOccupancy.h in Headers */ = {isa = PBXBuildFile; fileRef = B360F9E3255F52B90027CA17 /* SDLSeatOccupancy.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ B38389D6257C187500420C11 /* SDLSeatOccupancySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38389D4257C187400420C11 /* SDLSeatOccupancySpec.m */; };
+ B38389D7257C187500420C11 /* SDLSeatStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38389D5257C187500420C11 /* SDLSeatStatusSpec.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 */; };
+ B3EC9E6E2579AA010039F3AA /* SDLClimateDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B3EC9E6D2579AA010039F3AA /* SDLClimateDataSpec.m */; };
B3F7918324E062C200DB5CAF /* SDLGetVehicleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824C1A9BDE8A00906325 /* SDLGetVehicleDataSpec.m */; };
+ C975877F257AEFDB0066F271 /* SDLSeekIndicatorTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = C975877E257AEFDB0066F271 /* SDLSeekIndicatorTypeSpec.m */; };
+ C9758785257F4C570066F271 /* SDLSeekStreamingIndicatorSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = C9758784257F4C570066F271 /* SDLSeekStreamingIndicatorSpec.m */; };
+ C9DFFE78257ACE0000F7D57A /* SDLSeekStreamingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = C9DFFE76257ACE0000F7D57A /* SDLSeekStreamingIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ C9DFFE79257ACE0000F7D57A /* SDLSeekStreamingIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = C9DFFE77257ACE0000F7D57A /* SDLSeekStreamingIndicator.m */; };
+ C9DFFE7E257AD07E00F7D57A /* SDLSeekIndicatorType.h in Headers */ = {isa = PBXBuildFile; fileRef = C9DFFE7C257AD07E00F7D57A /* SDLSeekIndicatorType.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ C9DFFE7F257AD07E00F7D57A /* SDLSeekIndicatorType.m in Sources */ = {isa = PBXBuildFile; fileRef = C9DFFE7D257AD07E00F7D57A /* SDLSeekIndicatorType.m */; };
DA4353DF1D271FD10099B8C4 /* CGPointUtilSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */; };
DA4353E31D2720A30099B8C4 /* SDLPinchGestureSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353E21D2720A30099B8C4 /* SDLPinchGestureSpec.m */; };
DA4353EA1D2721680099B8C4 /* SDLTouchManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353E71D2721680099B8C4 /* SDLTouchManagerSpec.m */; };
@@ -1766,7 +1790,6 @@
5DA22CBB1D075DE800245F5F /* Nimble.framework in CopyFiles */,
5DA22CBC1D075DE800245F5F /* OCMock.framework in CopyFiles */,
5DA22CBE1D075DE800245F5F /* Quick.framework in CopyFiles */,
- 5D5DBF091D48E3AC00D4F914 /* FBSnapshotTestCase.framework in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2075,8 +2098,8 @@
4A40255F250134CA0080E159 /* SDLStabilityControlsStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLStabilityControlsStatus.h; path = public/SDLStabilityControlsStatus.h; sourceTree = "<group>"; };
4A404C65250BBE11003AB65D /* SDLTextAndGraphicUpdateOperationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicUpdateOperationSpec.m; path = DevAPISpecs/SDLTextAndGraphicUpdateOperationSpec.m; sourceTree = "<group>"; };
4A404C67250BBE2B003AB65D /* SDLTextAndGraphicStateSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLTextAndGraphicStateSpec.m; path = DevAPISpecs/SDLTextAndGraphicStateSpec.m; sourceTree = "<group>"; };
- 4A41430B255F0A090039C267 /* TestConnectionRequestObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestConnectionRequestObject.h; sourceTree = "<group>"; };
- 4A41430C255F0A090039C267 /* TestConnectionRequestObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestConnectionRequestObject.m; sourceTree = "<group>"; };
+ 4A41430B255F0A090039C267 /* TestConnectionRequestObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestConnectionRequestObject.h; sourceTree = "<group>"; };
+ 4A41430C255F0A090039C267 /* TestConnectionRequestObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestConnectionRequestObject.m; sourceTree = "<group>"; };
4A457DC224A2933E00386CBA /* SDLLifecycleRPCAdapterSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleRPCAdapterSpec.m; path = DevAPISpecs/SDLLifecycleRPCAdapterSpec.m; sourceTree = "<group>"; };
4A457DD224A3886700386CBA /* SDLLifecycleSyncPDataHandlerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleSyncPDataHandlerSpec.m; path = DevAPISpecs/SDLLifecycleSyncPDataHandlerSpec.m; sourceTree = "<group>"; };
4A457DD424A3C16E00386CBA /* SDLLifecycleMobileHMIStateHandlerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLLifecycleMobileHMIStateHandlerSpec.m; path = DevAPISpecs/SDLLifecycleMobileHMIStateHandlerSpec.m; sourceTree = "<group>"; };
@@ -3172,9 +3195,9 @@
4ABB2B9924F850AD0061BF55 /* SDLImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLImage.h; path = public/SDLImage.h; sourceTree = "<group>"; };
4ABB2B9A24F850AD0061BF55 /* SDLLightState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLightState.m; path = public/SDLLightState.m; sourceTree = "<group>"; };
4ABB2B9B24F850AD0061BF55 /* SDLImageResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLImageResolution.h; path = public/SDLImageResolution.h; sourceTree = "<group>"; };
- 4ABED259257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandUpdateOperation.m; path = private/SDLVoiceCommandUpdateOperation.m; sourceTree = "<group>"; };
- 4ABED25A257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVoiceCommandUpdateOperation.h; path = private/SDLVoiceCommandUpdateOperation.h; sourceTree = "<group>"; };
- 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandUpdateOperationSpec.m; path = DevAPISpecs/SDLVoiceCommandUpdateOperationSpec.m; sourceTree = "<group>"; };
+ 4ABED259257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandUpdateOperation.m; path = private/SDLVoiceCommandUpdateOperation.m; sourceTree = "<group>"; };
+ 4ABED25A257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLVoiceCommandUpdateOperation.h; path = private/SDLVoiceCommandUpdateOperation.h; sourceTree = "<group>"; };
+ 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandUpdateOperationSpec.m; path = DevAPISpecs/SDLVoiceCommandUpdateOperationSpec.m; sourceTree = "<group>"; };
4AE8A7012537796E000666C0 /* SmartDeviceLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SmartDeviceLink.h; path = public/SmartDeviceLink.h; sourceTree = "<group>"; };
4AE8A707253779F9000666C0 /* EAAccessory+OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "EAAccessory+OCMock.h"; sourceTree = "<group>"; };
5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityTypeSpec.m; sourceTree = "<group>"; };
@@ -3265,8 +3288,6 @@
5D4346721E6F617D00B639C6 /* TestLogTarget.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TestLogTarget.m; path = LoggingSpecs/TestLogTarget.m; sourceTree = "<group>"; };
5D4346851E771B5700B639C6 /* SDLLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SDLLog.swift; sourceTree = "<group>"; };
5D59DD461B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenStatusManagerSpec.m; path = ProxySpecs/SDLLockScreenStatusManagerSpec.m; sourceTree = "<group>"; };
- 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSnapshotTestCase.framework; path = sdl_ios/Carthage/Build/iOS/FBSnapshotTestCase.framework; sourceTree = "<group>"; };
- 5D5DBF0A1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenViewControllerSnapshotTests.m; path = DevAPISpecs/SDLLockScreenViewControllerSnapshotTests.m; sourceTree = "<group>"; };
5D6035D0202CD46200A429C9 /* SDLSpecUtilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SDLSpecUtilities.h; path = TestUtilities/SDLSpecUtilities.h; sourceTree = "<group>"; };
5D6035D1202CD46200A429C9 /* SDLSpecUtilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSpecUtilities.m; path = TestUtilities/SDLSpecUtilities.m; sourceTree = "<group>"; };
5D6035D3202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TestMultipleRequestsConnectionManager.h; path = TestUtilities/TestMultipleRequestsConnectionManager.h; sourceTree = "<group>"; };
@@ -3495,10 +3516,37 @@
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>"; };
+ B360F9CE255EFEFD0027CA17 /* SDLClimateData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLClimateData.m; path = public/SDLClimateData.m; sourceTree = "<group>"; };
+ B360F9CF255EFEFD0027CA17 /* SDLClimateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLClimateData.h; path = public/SDLClimateData.h; sourceTree = "<group>"; };
+ B360F9DC255F52A40027CA17 /* SDLSeatStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatStatus.h; path = public/SDLSeatStatus.h; sourceTree = "<group>"; };
+ B360F9DD255F52A40027CA17 /* SDLSeatStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatStatus.m; path = public/SDLSeatStatus.m; sourceTree = "<group>"; };
+ B360F9E2255F52B90027CA17 /* SDLSeatOccupancy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatOccupancy.m; path = public/SDLSeatOccupancy.m; sourceTree = "<group>"; };
+ B360F9E3255F52B90027CA17 /* SDLSeatOccupancy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLSeatOccupancy.h; path = public/SDLSeatOccupancy.h; sourceTree = "<group>"; };
+ B38389D4257C187400420C11 /* SDLSeatOccupancySpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatOccupancySpec.m; path = SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatOccupancySpec.m; sourceTree = SOURCE_ROOT; };
+ B38389D5257C187500420C11 /* SDLSeatStatusSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLSeatStatusSpec.m; path = SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatStatusSpec.m; sourceTree = SOURCE_ROOT; };
+ 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>"; };
+ B3EC9E6D2579AA010039F3AA /* SDLClimateDataSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLClimateDataSpec.m; sourceTree = "<group>"; };
BB3C600D221AEF37007DD4CA /* NSMutableDictionary+StoreSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "NSMutableDictionary+StoreSpec.m"; path = "DevAPISpecs/NSMutableDictionary+StoreSpec.m"; sourceTree = "<group>"; };
+ C975877E257AEFDB0066F271 /* SDLSeekIndicatorTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeekIndicatorTypeSpec.m; sourceTree = "<group>"; };
+ C9758784257F4C570066F271 /* SDLSeekStreamingIndicatorSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSeekStreamingIndicatorSpec.m; sourceTree = "<group>"; };
+ C9DFFE76257ACE0000F7D57A /* SDLSeekStreamingIndicator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SDLSeekStreamingIndicator.h; path = public/SDLSeekStreamingIndicator.h; sourceTree = "<group>"; };
+ C9DFFE77257ACE0000F7D57A /* SDLSeekStreamingIndicator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSeekStreamingIndicator.m; path = public/SDLSeekStreamingIndicator.m; sourceTree = "<group>"; };
+ C9DFFE7C257AD07E00F7D57A /* SDLSeekIndicatorType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SDLSeekIndicatorType.h; path = public/SDLSeekIndicatorType.h; sourceTree = "<group>"; };
+ C9DFFE7D257AD07E00F7D57A /* SDLSeekIndicatorType.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSeekIndicatorType.m; path = public/SDLSeekIndicatorType.m; sourceTree = "<group>"; };
DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CGPointUtilSpec.m; path = UtilitiesSpecs/Touches/CGPointUtilSpec.m; sourceTree = "<group>"; };
DA4353E21D2720A30099B8C4 /* SDLPinchGestureSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPinchGestureSpec.m; path = UtilitiesSpecs/Touches/SDLPinchGestureSpec.m; sourceTree = "<group>"; };
DA4353E71D2721680099B8C4 /* SDLTouchManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLTouchManagerSpec.m; path = UtilitiesSpecs/Touches/SDLTouchManagerSpec.m; sourceTree = "<group>"; };
@@ -3552,7 +3600,6 @@
167ED93C1A9BCB8A00797BE5 /* SmartDeviceLink.framework in Frameworks */,
5DA22CB81D075CF200245F5F /* OCMock.framework in Frameworks */,
5DA22CBA1D075CF200245F5F /* Quick.framework in Frameworks */,
- 5D5DBF081D48E39C00D4F914 /* FBSnapshotTestCase.framework in Frameworks */,
5DA22CB71D075CF200245F5F /* Nimble.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -3690,6 +3737,7 @@
162E81F11A9BDE8A00906325 /* SDLDisplayTypeSpec.m */,
1EAA475D2035B177000FE74B /* SDLDisplayModeSpec.m */,
1EAA47612035B1AE000FE74B /* SDLDistanceUnitSpec.m */,
+ B3838A00257C47FD00420C11 /* SDLDoorStatusTypeSpec.m */,
162E81F21A9BDE8A00906325 /* SDLDriverDistractionStateSpec.m */,
162E81F31A9BDE8A00906325 /* SDLECallConfirmationStatusSpec.m */,
5DD8406420FCE21A0082CE04 /* SDLElectronicParkBrakeStatusSpec.m */,
@@ -3737,6 +3785,7 @@
162E820F1A9BDE8A00906325 /* SDLResultSpec.m */,
162E82111A9BDE8A00906325 /* SDLSamplingRateSpec.m */,
8831FA3C220207DA00B8FFB7 /* SDLServiceUpdateReasonSpec.m */,
+ C975877E257AEFDB0066F271 /* SDLSeekIndicatorTypeSpec.m */,
162E82121A9BDE8A00906325 /* SDLSoftButtonTypeSpec.m */,
162E82131A9BDE8A00906325 /* SDLSpeechCapabilitiesSpec.m */,
1EB59CCF202DC9F200343A61 /* SDLSupportedSeatSpec.m */,
@@ -3975,6 +4024,7 @@
162E82941A9BDE8A00906325 /* SDLChoiceSpec.m */,
1EE8C43F1F348D3200FDC2CF /* SDLClimateControlCapabilitiesSpec.m */,
1EE8C4431F34A1B900FDC2CF /* SDLClimateControlDataSpec.m */,
+ B3EC9E6D2579AA010039F3AA /* SDLClimateDataSpec.m */,
885468372225CBA400994D8D /* SDLCloudAppPropertiesSpec.m */,
162E82951A9BDE8A00906325 /* SDLClusterModeStatusSpec.m */,
DA9F7EB31DCC086400ACAE48 /* SDLDateTimeSpec.m */,
@@ -3983,11 +4033,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,10 +4081,16 @@
1EE8C44F1F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m */,
5DADA7771F4E059E0084D17D /* SDLRectangleSpec.m */,
5D92934F20AF526200FCC775 /* SDLRGBColorSpec.m */,
+ B3838A14257C4EFD00420C11 /* SDLRoofStatusSpec.m */,
162E82A71A9BDE8A00906325 /* SDLScreenParamsSpec.m */,
+ B38389D4257C187400420C11 /* SDLSeatOccupancySpec.m */,
+ B38389D5257C187500420C11 /* SDLSeatStatusSpec.m */,
1E89B0E1203196B800A47992 /* SDLSeatControlCapabilitiesSpec.m */,
1E89B0DD2031636000A47992 /* SDLSeatControlDataSpec.m */,
+ 000DD56B22EEF8E4005AB7A7 /* SDLSeatLocationCapabilitySpec.m */,
+ 000DD56D22EF01FC005AB7A7 /* SDLSeatLocationSpec.m */,
1EB59CD9202DCEEC00343A61 /* SDLSeatMemoryActionSpec.m */,
+ C9758784257F4C570066F271 /* SDLSeekStreamingIndicatorSpec.m */,
162E82A81A9BDE8A00906325 /* SDLSingleTireStatusSpec.m */,
1EAA47792036BD46000FE74B /* SDLSISDataSpec.m */,
162E82A91A9BDE8A00906325 /* SDLSoftButtonCapabilitiesSpec.m */,
@@ -4059,8 +4117,8 @@
8855F9DF220C93B700A5C897 /* SDLWeatherDataSpec.m */,
880D2679220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m */,
880D267F220E038800B3F496 /* SDLWeatherServiceManifestSpec.m */,
- 000DD56B22EEF8E4005AB7A7 /* SDLSeatLocationCapabilitySpec.m */,
- 000DD56D22EF01FC005AB7A7 /* SDLSeatLocationSpec.m */,
+ 000DD56B22EEF8E4005AB7A7 /* SDLSeatLocationCapabilitySpec.m */,
+ 000DD56D22EF01FC005AB7A7 /* SDLSeatLocationSpec.m */,
9FA0CFFF22DF06A0009CF344 /* SDLWindowCapabilitySpec.m */,
9FA0D00222DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m */,
);
@@ -4082,7 +4140,6 @@
167ED9231A9BB86300797BE5 /* Libraries */ = {
isa = PBXGroup;
children = (
- 5D5DBF071D48E39C00D4F914 /* FBSnapshotTestCase.framework */,
5DA22CB31D075CF200245F5F /* Nimble.framework */,
5DA22CB41D075CF200245F5F /* OCMock.framework */,
5DA22CB61D075CF200245F5F /* Quick.framework */,
@@ -4127,47 +4184,47 @@
path = MessageSpecs;
sourceTree = "<group>";
};
- 4A32B3E425559D93001FFA26 /* Voice Cammands */ = {
- isa = PBXGroup;
- children = (
- 4A32B3E525559DA4001FFA26 /* Cells */,
- 4A32B3E625559DAC001FFA26 /* Operations */,
- 4ABB25A824F7E6E10061BF55 /* SDLVoiceCommandManager.h */,
- 4ABB25A724F7E6E10061BF55 /* SDLVoiceCommandManager.m */,
- );
- name = "Voice Cammands";
- sourceTree = "<group>";
- };
- 4A32B3E525559DA4001FFA26 /* Cells */ = {
- isa = PBXGroup;
- children = (
- 4ABB259124F7E6820061BF55 /* SDLVoiceCommand.h */,
- 4ABB259024F7E6820061BF55 /* SDLVoiceCommand.m */,
- );
- name = Cells;
- sourceTree = "<group>";
- };
- 4A32B3E625559DAC001FFA26 /* Operations */ = {
- isa = PBXGroup;
- children = (
- 4ABED25A257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h */,
- 4ABED259257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m */,
- );
- name = Operations;
- sourceTree = "<group>";
- };
- 4A32B3F325559F37001FFA26 /* Menu */ = {
- isa = PBXGroup;
- children = (
- 5D76751022D907F500E8D71A /* Configuration */,
- 755F175E229F14F70041B9CB /* Dynamic Menu Update Utilities */,
- 5D339CEC207C08AB000CC364 /* Cells */,
- 4ABB25A924F7E6E10061BF55 /* SDLMenuManager.h */,
- 4ABB25A624F7E6E10061BF55 /* SDLMenuManager.m */,
- );
- name = Menu;
- sourceTree = "<group>";
- };
+ 4A32B3E425559D93001FFA26 /* Voice Cammands */ = {
+ isa = PBXGroup;
+ children = (
+ 4A32B3E525559DA4001FFA26 /* Cells */,
+ 4A32B3E625559DAC001FFA26 /* Operations */,
+ 4ABB25A824F7E6E10061BF55 /* SDLVoiceCommandManager.h */,
+ 4ABB25A724F7E6E10061BF55 /* SDLVoiceCommandManager.m */,
+ );
+ name = "Voice Cammands";
+ sourceTree = "<group>";
+ };
+ 4A32B3E525559DA4001FFA26 /* Cells */ = {
+ isa = PBXGroup;
+ children = (
+ 4ABB259124F7E6820061BF55 /* SDLVoiceCommand.h */,
+ 4ABB259024F7E6820061BF55 /* SDLVoiceCommand.m */,
+ );
+ name = Cells;
+ sourceTree = "<group>";
+ };
+ 4A32B3E625559DAC001FFA26 /* Operations */ = {
+ isa = PBXGroup;
+ children = (
+ 4ABED25A257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h */,
+ 4ABED259257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m */,
+ );
+ name = Operations;
+ sourceTree = "<group>";
+ };
+ 4A32B3F325559F37001FFA26 /* Menu */ = {
+ isa = PBXGroup;
+ children = (
+ 5D76751022D907F500E8D71A /* Configuration */,
+ 755F175E229F14F70041B9CB /* Dynamic Menu Update Utilities */,
+ 5D339CEC207C08AB000CC364 /* Cells */,
+ 4ABB25A924F7E6E10061BF55 /* SDLMenuManager.h */,
+ 4ABB25A624F7E6E10061BF55 /* SDLMenuManager.m */,
+ );
+ name = Menu;
+ sourceTree = "<group>";
+ };
4A3BA4D9248E8EBB003E56B8 /* SystemRequest Handler */ = {
isa = PBXGroup;
children = (
@@ -4261,16 +4318,16 @@
name = "Status Manager";
sourceTree = "<group>";
};
- 4AD1F16A2559952D00637FE1 /* Voice Command */ = {
- isa = PBXGroup;
- children = (
- 5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */,
- 5DAB5F5220989A8300A020C8 /* SDLVoiceCommandSpec.m */,
- 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */,
- );
- name = "Voice Command";
- sourceTree = "<group>";
- };
+ 4AD1F16A2559952D00637FE1 /* Voice Command */ = {
+ isa = PBXGroup;
+ children = (
+ 5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */,
+ 5DAB5F5220989A8300A020C8 /* SDLVoiceCommandSpec.m */,
+ 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */,
+ );
+ name = "Voice Command";
+ sourceTree = "<group>";
+ };
5D0218EB1A8E795700D1BF62 /* UI */ = {
isa = PBXGroup;
children = (
@@ -4442,9 +4499,9 @@
5D339CE5207C0651000CC364 /* Menu */ = {
isa = PBXGroup;
children = (
- 4A32B3F325559F37001FFA26 /* Menu */,
- 4A32B3E425559D93001FFA26 /* Voice Cammands */,
- );
+ 4A32B3F325559F37001FFA26 /* Menu */,
+ 4A32B3E425559D93001FFA26 /* Voice Cammands */,
+ );
name = Menu;
sourceTree = "<group>";
};
@@ -4493,7 +4550,7 @@
children = (
5D4019B11A76EC350006B0C2 /* Examples */,
5D61FA1D1A84237100846EE7 /* SmartDeviceLink */,
- 5D4346621E6F38E600B639C6 /* SmartDeviceLinkSwift */,
+ 5D4346621E6F38E600B639C6 /* SmartDeviceLinkSwift */,
5D61FA2C1A84237100846EE7 /* SmartDeviceLinkTests */,
5D4019B01A76EC350006B0C2 /* Products */,
);
@@ -5012,6 +5069,8 @@
4ABB2B3524F84EF40061BF55 /* SDLClimateControlCapabilities.m */,
4ABB2B3624F84EF40061BF55 /* SDLClimateControlData.h */,
4ABB2B3124F84EF30061BF55 /* SDLClimateControlData.m */,
+ B360F9CF255EFEFD0027CA17 /* SDLClimateData.h */,
+ B360F9CE255EFEFD0027CA17 /* SDLClimateData.m */,
4ABB2B2224F84EF00061BF55 /* SDLCloudAppProperties.h */,
4ABB2B2124F84EF00061BF55 /* SDLCloudAppProperties.m */,
4ABB2B3224F84EF30061BF55 /* SDLClusterModeStatus.h */,
@@ -5028,6 +5087,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 +5101,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 +5191,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 */,
@@ -5140,6 +5205,12 @@
4A8BD31C24F93964000945E3 /* SDLSeatLocationCapability.m */,
4A8BD29724F93534000945E3 /* SDLSeatMemoryAction.h */,
4A8BD29524F93534000945E3 /* SDLSeatMemoryAction.m */,
+ B360F9E3255F52B90027CA17 /* SDLSeatOccupancy.h */,
+ B360F9E2255F52B90027CA17 /* SDLSeatOccupancy.m */,
+ B360F9DC255F52A40027CA17 /* SDLSeatStatus.h */,
+ B360F9DD255F52A40027CA17 /* SDLSeatStatus.m */,
+ C9DFFE76257ACE0000F7D57A /* SDLSeekStreamingIndicator.h */,
+ C9DFFE77257ACE0000F7D57A /* SDLSeekStreamingIndicator.m */,
4A8BD29224F93533000945E3 /* SDLSingleTireStatus.h */,
4A8BD29624F93534000945E3 /* SDLSingleTireStatus.m */,
4A8BD2A624F935BB000945E3 /* SDLSISData.h */,
@@ -5259,6 +5330,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 */,
@@ -5356,6 +5429,8 @@
4ABB27F624F823F20061BF55 /* SDLSamplingRate.m */,
4ABB280524F824600061BF55 /* SDLSeatMemoryActionType.h */,
4ABB280224F8245F0061BF55 /* SDLSeatMemoryActionType.m */,
+ C9DFFE7C257AD07E00F7D57A /* SDLSeekIndicatorType.h */,
+ C9DFFE7D257AD07E00F7D57A /* SDLSeekIndicatorType.m */,
4ABB280424F824600061BF55 /* SDLServiceUpdateReason.h */,
4ABB280724F824600061BF55 /* SDLServiceUpdateReason.m */,
4ABB280624F824600061BF55 /* SDLSoftButtonType.h */,
@@ -6136,7 +6211,7 @@
5DAD5F8220507DED0025624C /* Soft Button */,
88D0E5D42478656B009469AB /* Subscribe Button */,
5DAD5F8320507DF30025624C /* Text and Graphic */,
- 4AD1F16A2559952D00637FE1 /* Voice Command */,
+ 4AD1F16A2559952D00637FE1 /* Voice Command */,
5DAD5F8420507E1F0025624C /* SDLScreenManagerSpec.m */,
);
name = Screen;
@@ -6207,8 +6282,8 @@
8850DB5F1F4475D30053A48D /* TestMultipleFilesConnectionManager.m */,
5D6035D3202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.h */,
5D6035D4202CE4A500A429C9 /* TestMultipleRequestsConnectionManager.m */,
- 4A41430B255F0A090039C267 /* TestConnectionRequestObject.h */,
- 4A41430C255F0A090039C267 /* TestConnectionRequestObject.m */,
+ 4A41430B255F0A090039C267 /* TestConnectionRequestObject.h */,
+ 4A41430C255F0A090039C267 /* TestConnectionRequestObject.m */,
);
name = "Connection Manager";
sourceTree = "<group>";
@@ -6325,7 +6400,6 @@
5DAD5F8120507DE40025624C /* Screen */,
DA8966ED1E5693D100413EAB /* Streaming */,
880E35B62088F77C00181259 /* System Capabilities */,
- 5D5DBF0A1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m */,
);
name = Managers;
sourceTree = "<group>";
@@ -6898,6 +6972,7 @@
files = (
4ABB255124F7E52B0061BF55 /* SDLLockScreenConfiguration.h in Headers */,
4ABB26B124F7F9DF0061BF55 /* SDLLogTargetOSLog.h in Headers */,
+ B360F9D1255EFEFD0027CA17 /* SDLClimateData.h in Headers */,
4ABB259624F7E6880061BF55 /* SDLMenuCell.h in Headers */,
4ABB292E24F842A00061BF55 /* SDLDiagnosticMessage.h in Headers */,
4ABB272424F7FCAE0061BF55 /* SDLComponentVolumeStatus.h in Headers */,
@@ -6910,6 +6985,7 @@
4ABB27E124F800CA0061BF55 /* SDLPowerModeQualificationStatus.h in Headers */,
4A8BD2D124F93803000945E3 /* SDLTemperature.h in Headers */,
4ABB282624F824E70061BF55 /* SDLTemperatureUnit.h in Headers */,
+ C9DFFE7E257AD07E00F7D57A /* SDLSeekIndicatorType.h in Headers */,
4ABB262424F7F3A30061BF55 /* CVPixelBufferRef+SDLUtil.h in Headers */,
4A8BD24424F93135000945E3 /* SDLMediaServiceManifest.h in Headers */,
4ABB279B24F7FF0B0061BF55 /* SDLKeyboardLayout.h in Headers */,
@@ -6920,6 +6996,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 */,
@@ -6990,6 +7067,7 @@
4ABB273A24F7FD1D0061BF55 /* SDLDirection.h in Headers */,
4ABB25A224F7E6CE0061BF55 /* SDLDynamicMenuUpdateRunScore.h in Headers */,
4A8BD3B024F98ACE000945E3 /* SDLLogManager.h in Headers */,
+ B360F9E5255F52BA0027CA17 /* SDLSeatOccupancy.h in Headers */,
4ABB26DE24F7FAFD0061BF55 /* SDLRPCRequest.h in Headers */,
4ABB25D824F7E7630061BF55 /* SDLTextField+ScreenManagerExtensions.h in Headers */,
4A8BD25124F93135000945E3 /* SDLModuleData.h in Headers */,
@@ -7017,6 +7095,7 @@
4ABB24E924F594CD0061BF55 /* SDLEncryptionManagerConstants.h in Headers */,
4ABB2AA724F847F40061BF55 /* SDLShowConstantTBTResponse.h in Headers */,
4ABB28ED24F82A6A0061BF55 /* SDLOnKeyboardInput.h in Headers */,
+ B360F9DE255F52A50027CA17 /* SDLSeatStatus.h in Headers */,
5D9FDA991F2A7D3F00A495C8 /* emhashmap.h in Headers */,
4ABB255F24F7E59E0061BF55 /* SDLPermissionConstants.h in Headers */,
4ABB270324F7FB8F0061BF55 /* SDLButtonName.h in Headers */,
@@ -7027,6 +7106,7 @@
4ABB263024F7F4230061BF55 /* SDLRAWH264Packetizer.h in Headers */,
4ABB26F824F7FB8F0061BF55 /* SDLAudioType.h in Headers */,
4ABB24CC24F5931B0061BF55 /* SDLStateMachine.h in Headers */,
+ C9DFFE78257ACE0000F7D57A /* SDLSeekStreamingIndicator.h in Headers */,
4ABB28DD24F82A6A0061BF55 /* SDLOnButtonPress.h in Headers */,
4A8BD34524F945CC000945E3 /* SDLControlFramePayloadTransportEventUpdate.h in Headers */,
4ABB291D24F842560061BF55 /* SDLCreateWindow.h in Headers */,
@@ -7043,6 +7123,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 +7296,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,10 +7471,11 @@
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 */,
- 4ABED25C257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h in Headers */,
+ 4ABED25C257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.h in Headers */,
4A8BD2F924F93872000945E3 /* SDLVehicleDataType.h in Headers */,
4ABB279924F7FF0B0061BF55 /* SDLLanguage.h in Headers */,
4ABB285F24F828E00061BF55 /* SDLVehicleDataActiveStatus.h in Headers */,
@@ -7598,7 +7681,7 @@
};
5D61FA1B1A84237100846EE7 = {
CreatedOnToolsVersion = 6.1.1;
- LastSwiftMigration = 1210;
+ LastSwiftMigration = 1210;
};
5D61FA251A84237100846EE7 = {
CreatedOnToolsVersion = 6.1.1;
@@ -7755,7 +7838,7 @@
4ABB264524F7F5340061BF55 /* SDLSystemCapabilityManager.m in Sources */,
4A8BD2B124F935BC000945E3 /* SDLSoftButtonCapabilities.m in Sources */,
4ABB2A5524F847B10061BF55 /* SDLGetInteriorVehicleDataConsentResponse.m in Sources */,
- 4ABED25B257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m in Sources */,
+ 4ABED25B257681ED005BDF61 /* SDLVoiceCommandUpdateOperation.m in Sources */,
4ABB2AA924F847F40061BF55 /* SDLSetAppIconResponse.m in Sources */,
4A8BD2D224F93803000945E3 /* SDLTemplateColorScheme.m in Sources */,
4A8BD3C124F994D5000945E3 /* SDLFileManager.m in Sources */,
@@ -7781,6 +7864,7 @@
4ABB26F724F7FB8F0061BF55 /* SDLAudioStreamingState.m in Sources */,
4ABB265A24F7F5C10061BF55 /* SDLRPCResponseNotification.m in Sources */,
4ABB2AB724F847F40061BF55 /* SDLSetGlobalPropertiesResponse.m in Sources */,
+ C9DFFE79257ACE0000F7D57A /* SDLSeekStreamingIndicator.m in Sources */,
4ABB2B0B24F84D950061BF55 /* SDLAppServiceData.m in Sources */,
4ABB282C24F824E70061BF55 /* SDLTBTState.m in Sources */,
4ABB27DF24F800CA0061BF55 /* SDLPowerModeQualificationStatus.m in Sources */,
@@ -7867,6 +7951,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 +8097,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 */,
@@ -8110,6 +8196,7 @@
4ABB2AEB24F848270061BF55 /* SDLUpdateTurnListResponse.m in Sources */,
4ABB263124F7F4230061BF55 /* SDLRAWH264Packetizer.m in Sources */,
4ABB2B5724F84EF50061BF55 /* SDLDIDResult.m in Sources */,
+ B360F9E4255F52BA0027CA17 /* SDLSeatOccupancy.m in Sources */,
5D9FDA981F2A7D3F00A495C8 /* emhashmap.c in Sources */,
4ABB260C24F7F3400061BF55 /* SDLAudioFile.m in Sources */,
4A8BD2F524F93872000945E3 /* SDLTTSChunk.m in Sources */,
@@ -8123,6 +8210,7 @@
4ABB268324F7F8D60061BF55 /* SDLBackgroundTaskManager.m in Sources */,
4ABB2ACC24F848130061BF55 /* SDLSyncPDataResponse.m in Sources */,
4ABB26DF24F7FAFD0061BF55 /* SDLRPCNotification.m in Sources */,
+ C9DFFE7F257AD07E00F7D57A /* SDLSeekIndicatorType.m in Sources */,
4ABB254C24F7E4C60061BF55 /* SDLLockScreenViewController.m in Sources */,
4ABB270024F7FB8F0061BF55 /* SDLAmbientLightStatus.m in Sources */,
4ABB299224F845440061BF55 /* SDLScrollableMessage.m in Sources */,
@@ -8166,6 +8254,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 */,
@@ -8188,6 +8277,7 @@
4A8BD39424F94731000945E3 /* SDLIAPSession.m in Sources */,
4ABB2A3924F847980061BF55 /* SDLDiagnosticMessageResponse.m in Sources */,
4A8BD29924F93534000945E3 /* SDLScreenParams.m in Sources */,
+ B360F9D0255EFEFD0027CA17 /* SDLClimateData.m in Sources */,
4ABB28C324F82A6A0061BF55 /* SDLOnAppInterfaceUnregistered.m in Sources */,
4ABB2A3224F847980061BF55 /* SDLCancelInteractionResponse.m in Sources */,
4ABB259C24F7E6B90061BF55 /* SDLMenuConfiguration.m in Sources */,
@@ -8231,10 +8321,12 @@
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 */,
4ABB2B5624F84EF50061BF55 /* SDLDisplayCapability.m in Sources */,
+ B360F9DF255F52A50027CA17 /* SDLSeatStatus.m in Sources */,
4ABB267F24F7F68F0061BF55 /* SDLCacheFileManager.m in Sources */,
4A8BD24124F93135000945E3 /* SDLMenuParams.m in Sources */,
4ABB28FC24F82BE90061BF55 /* SDLAddCommand.m in Sources */,
@@ -8309,6 +8401,7 @@
162E838A1A9BDE8B00906325 /* SDLSingleTireStatusSpec.m in Sources */,
5D6EB4CC1BF28DC600693731 /* NSMapTable+SubscriptingSpec.m in Sources */,
B3F7918324E062C200DB5CAF /* SDLGetVehicleDataSpec.m in Sources */,
+ C975877F257AEFDB0066F271 /* SDLSeekIndicatorTypeSpec.m in Sources */,
88F37A4D226F84BE00DF119B /* SDLIAPDataSessionSpec.m in Sources */,
9FA0D00322DF06B9009CF344 /* SDLWindowTypeCapabilitiesSpec.m in Sources */,
162E83051A9BDE8B00906325 /* SDLVehicleDataActiveStatusSpec.m in Sources */,
@@ -8346,6 +8439,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 */,
@@ -8358,7 +8452,7 @@
162E83181A9BDE8B00906325 /* SDLOnKeyboardInputSpec.m in Sources */,
1EE8C4441F34A1B900FDC2CF /* SDLClimateControlDataSpec.m in Sources */,
162E83701A9BDE8B00906325 /* SDLUpdateTurnListResponseSpec.m in Sources */,
- 4A41430D255F0A090039C267 /* TestConnectionRequestObject.m in Sources */,
+ 4A41430D255F0A090039C267 /* TestConnectionRequestObject.m in Sources */,
88C23E8822297C6000EA171F /* SDLRPCResponseNotificationSpec.m in Sources */,
162E833B1A9BDE8B00906325 /* SDLSetGlobalPropertiesSpec.m in Sources */,
884AF94C220B3FCC00E22928 /* SDLGetSystemCapabilitySpec.m in Sources */,
@@ -8411,6 +8505,7 @@
162E83911A9BDE8B00906325 /* SDLTouchCoordSpec.m in Sources */,
162E832B1A9BDE8B00906325 /* SDLDeleteSubMenuSpec.m in Sources */,
162E83411A9BDE8B00906325 /* SDLSubscribeButtonSpec.m in Sources */,
+ B3EC9E6E2579AA010039F3AA /* SDLClimateDataSpec.m in Sources */,
5D59DD471B14FDEE00BE744D /* SDLLockScreenStatusManagerSpec.m in Sources */,
5D0A9F9A1F15636800CC80DD /* SDLGetSystemCapabilitiesSpec.m in Sources */,
162E82F31A9BDE8B00906325 /* SDLPrerecordedSpeechSpec.m in Sources */,
@@ -8468,6 +8563,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 +8629,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 */,
@@ -8559,7 +8656,6 @@
162E83161A9BDE8B00906325 /* SDLOnHashChangeSpec.m in Sources */,
8886EB982111F4FA008294A5 /* SDLFileManagerConfigurationSpec.m in Sources */,
162E82FE1A9BDE8B00906325 /* SDLTBTStateSpec.m in Sources */,
- 5D5DBF0B1D48E5E600D4F914 /* SDLLockScreenViewControllerSnapshotTests.m in Sources */,
5DB1BCD41D243A8E002FFC37 /* SDLListFilesOperationSpec.m in Sources */,
8863747E22D650DE00D2671F /* SDLCloseApplicationSpec.m in Sources */,
162E834B1A9BDE8B00906325 /* SDLAlertManeuverResponseSpec.m in Sources */,
@@ -8690,6 +8786,7 @@
162E835D1A9BDE8B00906325 /* SDLReadDIDResponseSpec.m in Sources */,
5DAD5F87205087430025624C /* SDLTextAndGraphicManagerSpec.m in Sources */,
162E82D41A9BDE8A00906325 /* SDLCharacterSetSpec.m in Sources */,
+ B38389D7257C187500420C11 /* SDLSeatStatusSpec.m in Sources */,
162E830F1A9BDE8B00906325 /* SDLOnAppInterfaceUnregisteredSpec.m in Sources */,
162E83971A9BDE8B00906325 /* SDLVehicleTypeSpec.m in Sources */,
887BE4D422272B2200B397C2 /* SDLControlFramePayloadConstantsSpec.m in Sources */,
@@ -8722,6 +8819,7 @@
162E83081A9BDE8B00906325 /* SDLVehicleDataResultCodeSpec.m in Sources */,
5DE35E4C20CB1C1C0034BE5A /* SDLCheckChoiceVROptionalOperationSpec.m in Sources */,
8877F5EB1F34A3BE00DC128A /* SDLSendHapticDataSpec.m in Sources */,
+ C9758785257F4C570066F271 /* SDLSeekStreamingIndicatorSpec.m in Sources */,
162E83621A9BDE8B00906325 /* SDLSetDisplayLayoutResponseSpec.m in Sources */,
162E832E1A9BDE8B00906325 /* SDLEndAudioPassThruSpec.m in Sources */,
1680B1191A9CD7AD00DBD79E /* SDLV2ProtocolMessageSpec.m in Sources */,
@@ -8734,6 +8832,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 */,
@@ -8749,11 +8848,12 @@
1EE8C4501F38629200FDC2CF /* SDLRemoteControlCapabilitiesSpec.m in Sources */,
1EAA47662035B8D3000FE74B /* SDLLightControlDataSpec.m in Sources */,
162E82CF1A9BDE8A00906325 /* SDLBitsPerSampleSpec.m in Sources */,
+ B38389D6257C187500420C11 /* SDLSeatOccupancySpec.m in Sources */,
883581B022D659BE00405C42 /* SDLCloseApplicationResponseSpec.m in Sources */,
162E831E1A9BDE8B00906325 /* SDLOnTBTClientStateSpec.m in Sources */,
162E83351A9BDE8B00906325 /* SDLReadDIDSpec.m in Sources */,
5DF40B28208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m in Sources */,
- 4AD1F1742559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m in Sources */,
+ 4AD1F1742559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m in Sources */,
88B3BFA020DA8FD000943565 /* SDLFuelTypeSpec.m in Sources */,
162E836F1A9BDE8B00906325 /* SDLUnsubscribeVehicleDataResponseSpec.m in Sources */,
162E82DB1A9BDE8B00906325 /* SDLECallConfirmationStatusSpec.m in Sources */,
@@ -9167,6 +9267,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
+ VALIDATE_WORKSPACE = NO;
};
name = Debug;
};
@@ -9199,6 +9300,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.smartdevicelink.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
+ VALIDATE_WORKSPACE = NO;
};
name = Release;
};
diff --git a/SmartDeviceLink/private/SDLChoiceSetManager.m b/SmartDeviceLink/private/SDLChoiceSetManager.m
index a8a0de0e7..51dd32b9e 100644
--- a/SmartDeviceLink/private/SDLChoiceSetManager.m
+++ b/SmartDeviceLink/private/SDLChoiceSetManager.m
@@ -147,6 +147,7 @@ UInt16 const ChoiceCellCancelIdMin = 1;
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.name = @"com.sdl.screenManager.choiceSetManager.transactionQueue";
queue.maxConcurrentOperationCount = 1;
+ queue.qualityOfService = NSQualityOfServiceUserInteractive;
queue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
queue.suspended = YES;
diff --git a/SmartDeviceLink/private/SDLError.h b/SmartDeviceLink/private/SDLError.h
index fae799fe9..4b3099a84 100644
--- a/SmartDeviceLink/private/SDLError.h
+++ b/SmartDeviceLink/private/SDLError.h
@@ -95,6 +95,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface NSException (SDLExceptions)
++ (NSException *)sdl_duplicateSoftButtonsNameException;
+ (NSException *)sdl_missingHandlerException;
+ (NSException *)sdl_missingIdException;
+ (NSException *)sdl_missingFilesException;
diff --git a/SmartDeviceLink/private/SDLError.m b/SmartDeviceLink/private/SDLError.m
index a54cee83e..0874e0674 100644
--- a/SmartDeviceLink/private/SDLError.m
+++ b/SmartDeviceLink/private/SDLError.m
@@ -407,6 +407,10 @@ NS_ASSUME_NONNULL_BEGIN
@implementation NSException (SDLExceptions)
++ (NSException *)sdl_duplicateSoftButtonsNameException {
+ return [NSException exceptionWithName:@"InvalidSoftButtonsInitialization" reason:@"Attempting to create soft buttons with the same name" userInfo:nil];
+}
+
+ (NSException *)sdl_missingHandlerException {
return [NSException
exceptionWithName:@"MissingHandlerException"
diff --git a/SmartDeviceLink/private/SDLGlobals.m b/SmartDeviceLink/private/SDLGlobals.m
index d99f6230e..5bfa5796a 100644
--- a/SmartDeviceLink/private/SDLGlobals.m
+++ b/SmartDeviceLink/private/SDLGlobals.m
@@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN
// VERSION DEPENDENT CODE
NSString *const SDLMaxProxyProtocolVersion = @"5.3.0";
-NSString *const SDLMaxProxyRPCVersion = @"7.0.0";
+NSString *const SDLMaxProxyRPCVersion = @"7.1.0";
NSUInteger const SDLDefaultMTUSize = UINT32_MAX;
NSUInteger const SDLV1MTUSize = 1024;
@@ -60,8 +60,8 @@ typedef NSNumber *MTUBox;
_rpcVersion = [[SDLVersion alloc] initWithString:@"1.0.0"];
_dynamicMTUDict = [NSMutableDictionary dictionary];
- dispatch_queue_attr_t qosSerial = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, 0);
- dispatch_queue_attr_t qosConcurrent = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INITIATED, 0);
+ dispatch_queue_attr_t qosSerial = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0);
+ dispatch_queue_attr_t qosConcurrent = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_CONCURRENT, QOS_CLASS_USER_INTERACTIVE, 0);
_sdlProcessingQueue = dispatch_queue_create(SDLProcessingQueueName, qosSerial);
dispatch_queue_set_specific(_sdlProcessingQueue, SDLProcessingQueueName, SDLProcessingQueueName, NULL);
diff --git a/SmartDeviceLink/private/SDLLifecycleManager.m b/SmartDeviceLink/private/SDLLifecycleManager.m
index b08cb8758..c81dc6dd0 100644
--- a/SmartDeviceLink/private/SDLLifecycleManager.m
+++ b/SmartDeviceLink/private/SDLLifecycleManager.m
@@ -157,6 +157,7 @@ NSString *const BackgroundTaskTransportName = @"com.sdl.transport.backgroundTask
_rpcOperationQueue = [[NSOperationQueue alloc] init];
_rpcOperationQueue.name = @"com.sdl.lifecycle.rpcOperation.concurrent";
+ _rpcOperationQueue.qualityOfService = NSQualityOfServiceUserInteractive;
_rpcOperationQueue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
_lifecycleQueue = dispatch_queue_create_with_target("com.sdl.lifecycle", DISPATCH_QUEUE_SERIAL, [SDLGlobals sharedGlobals].sdlProcessingQueue);
diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.h b/SmartDeviceLink/private/SDLRPCParameterNames.h
index 7222039de..cd34d66e9 100644
--- a/SmartDeviceLink/private/SDLRPCParameterNames.h
+++ b/SmartDeviceLink/private/SDLRPCParameterNames.h
@@ -81,6 +81,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameAppServices;
extern SDLRPCParameterName const SDLRPCParameterNameAppServicesCapabilities;
extern SDLRPCParameterName const SDLRPCParameterNameAppVersion;
extern SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType;
+extern SDLRPCParameterName const SDLRPCParameterNameAtmosphericPressure;
extern SDLRPCParameterName const SDLRPCParameterNameAutoCompleteList;
extern SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities;
extern SDLRPCParameterName const SDLRPCParameterNameAudioControlData;
@@ -104,6 +105,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameBackTiltAngle;
extern SDLRPCParameterName const SDLRPCParameterNameBackTiltAngleAvailable;
extern SDLRPCParameterName const SDLRPCParameterNameBackVerticalPosition;
extern SDLRPCParameterName const SDLRPCParameterNameBackVerticalPositionAvailable;
+extern SDLRPCParameterName const SDLRPCParameterNameBackSeekIndicator;
extern SDLRPCParameterName const SDLRPCParameterNameBand;
extern SDLRPCParameterName const SDLRPCParameterNameBatteryLevelStatus;
extern SDLRPCParameterName const SDLRPCParameterNameBearing;
@@ -117,6 +119,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameButtonCapabilities;
extern SDLRPCParameterName const SDLRPCParameterNameButtonEventMode;
extern SDLRPCParameterName const SDLRPCParameterNameButtonName;
extern SDLRPCParameterName const SDLRPCParameterNameButtonPressMode;
+extern SDLRPCParameterName const SDLRPCParameterNameCabinTemperature;
extern SDLRPCParameterName const SDLRPCParameterNameCancelID;
extern SDLRPCParameterName const SDLRPCParameterNameCapacity;
extern SDLRPCParameterName const SDLRPCParameterNameCapacityUnit;
@@ -141,6 +144,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameChoiceSet;
extern SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnable;
extern SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnableAvailable;
extern SDLRPCParameterName const SDLRPCParameterNameClimateControlData;
+extern SDLRPCParameterName const SDLRPCParameterNameClimateData;
extern SDLRPCParameterName const SDLRPCParameterNameClimateControlCapabilities;
extern SDLRPCParameterName const SDLRPCParameterNameCloudCover;
extern SDLRPCParameterName const SDLRPCParameterNameClusterModes;
@@ -148,7 +152,9 @@ extern SDLRPCParameterName const SDLRPCParameterNameClusterModeStatus;
extern SDLRPCParameterName const SDLRPCParameterNameCommandIcon;
extern SDLRPCParameterName const SDLRPCParameterNameCommandId;
extern SDLRPCParameterName const SDLRPCParameterNameCompassDirection;
+extern SDLRPCParameterName const SDLRPCParameterNameConditionActive;
extern SDLRPCParameterName const SDLRPCParameterNameCorrelationId;
+extern SDLRPCParameterName const SDLRPCParameterNameCountRate;
extern SDLRPCParameterName const SDLRPCParameterNameCountryCode;
extern SDLRPCParameterName const SDLRPCParameterNameCountryName;
extern SDLRPCParameterName const SDLRPCParameterNameCRC;
@@ -197,6 +203,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;
@@ -206,7 +213,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;
@@ -248,6 +255,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameFilenames;
extern SDLRPCParameterName const SDLRPCParameterNameFileType;
extern SDLRPCParameterName const SDLRPCParameterNameFirmness;
extern SDLRPCParameterName const SDLRPCParameterNameFirmwareRevision;
+extern SDLRPCParameterName const SDLRPCParameterNameForwardSeekIndicator;
extern SDLRPCParameterName const SDLRPCParameterNameFreeModules;
extern SDLRPCParameterName const SDLRPCParameterNameFrequencyInteger;
extern SDLRPCParameterName const SDLRPCParameterNameFrequencyFraction;
@@ -260,6 +268,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;
@@ -494,7 +503,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;
@@ -518,6 +527,7 @@ extern SDLRPCParameterName const SDLRPCParameterNamePrecipAccumulation;
extern SDLRPCParameterName const SDLRPCParameterNamePrecipIntensity;
extern SDLRPCParameterName const SDLRPCParameterNamePrecipProbability;
extern SDLRPCParameterName const SDLRPCParameterNamePrecipType;
+extern SDLRPCParameterName const SDLRPCParameterNamePreferredFPS;
extern SDLRPCParameterName const SDLRPCParameterNamePreferredResolution;
extern SDLRPCParameterName const SDLRPCParameterNamePrerecordedSpeech;
extern SDLRPCParameterName const SDLRPCParameterNamePresetBankCapabilities;
@@ -546,8 +556,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;
@@ -573,6 +583,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;
@@ -591,13 +602,17 @@ extern SDLRPCParameterName const SDLRPCParameterNameSeatControlData;
extern SDLRPCParameterName const SDLRPCParameterNameSeatControlCapabilities;
extern SDLRPCParameterName const SDLRPCParameterNameSeatLocation;
extern SDLRPCParameterName const SDLRPCParameterNameSeatLocationCapability;
+extern SDLRPCParameterName const SDLRPCParameterNameSeatOccupancy;
extern SDLRPCParameterName const SDLRPCParameterNameSeats;
+extern SDLRPCParameterName const SDLRPCParameterNameSeatsBelted;
+extern SDLRPCParameterName const SDLRPCParameterNameSeatsOccupied;
extern SDLRPCParameterName const SDLRPCParameterNameSecondaryColor;
extern SDLRPCParameterName const SDLRPCParameterNameSecondaryGraphic;
extern SDLRPCParameterName const SDLRPCParameterNameSecondaryImage;
extern SDLRPCParameterName const SDLRPCParameterNameSecondaryText;
extern SDLRPCParameterName const SDLRPCParameterNameSecond;
extern SDLRPCParameterName const SDLRPCParameterNameSeconds;
+extern SDLRPCParameterName const SDLRPCParameterNameSeekTime;
extern SDLRPCParameterName const SDLRPCParameterNameSendLocationEnabled;
extern SDLRPCParameterName const SDLRPCParameterNameServiceActive;
extern SDLRPCParameterName const SDLRPCParameterNameServiceArea;
diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.m b/SmartDeviceLink/private/SDLRPCParameterNames.m
index 353b4d779..d95d6af05 100644
--- a/SmartDeviceLink/private/SDLRPCParameterNames.m
+++ b/SmartDeviceLink/private/SDLRPCParameterNames.m
@@ -82,6 +82,7 @@ SDLRPCParameterName const SDLRPCParameterNameAppVersion = @"appVersion";
SDLRPCParameterName const SDLRPCParameterNameAudioControlCapabilities = @"audioControlCapabilities";
SDLRPCParameterName const SDLRPCParameterNameAudioControlData = @"audioControlData";
SDLRPCParameterName const SDLRPCParameterNameAssociatedServiceType = @"associatedServiceType";
+SDLRPCParameterName const SDLRPCParameterNameAtmosphericPressure = @"atmosphericPressure";
SDLRPCParameterName const SDLRPCParameterNameAudioPassThruCapabilities = @"audioPassThruCapabilities";
SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText1 = @"audioPassThruDisplayText1";
SDLRPCParameterName const SDLRPCParameterNameAudioPassThruDisplayText2 = @"audioPassThruDisplayText2";
@@ -103,6 +104,7 @@ SDLRPCParameterName const SDLRPCParameterNameBackTiltAngle = @"backTiltAngle";
SDLRPCParameterName const SDLRPCParameterNameBackTiltAngleAvailable = @"backTiltAngleAvailable";
SDLRPCParameterName const SDLRPCParameterNameBackVerticalPosition = @"backVerticalPosition";
SDLRPCParameterName const SDLRPCParameterNameBackVerticalPositionAvailable = @"backVerticalPositionAvailable";
+SDLRPCParameterName const SDLRPCParameterNameBackSeekIndicator = @"backSeekIndicator";
SDLRPCParameterName const SDLRPCParameterNameBand = @"band";
SDLRPCParameterName const SDLRPCParameterNameBatteryLevelStatus = @"battLevelStatus";
SDLRPCParameterName const SDLRPCParameterNameBearing = @"bearing";
@@ -116,6 +118,7 @@ SDLRPCParameterName const SDLRPCParameterNameButtonCapabilities = @"buttonCapabi
SDLRPCParameterName const SDLRPCParameterNameButtonEventMode = @"buttonEventMode";
SDLRPCParameterName const SDLRPCParameterNameButtonName = @"buttonName";
SDLRPCParameterName const SDLRPCParameterNameButtonPressMode = @"buttonPressMode";
+SDLRPCParameterName const SDLRPCParameterNameCabinTemperature = @"cabinTemperature";
SDLRPCParameterName const SDLRPCParameterNameCancelID = @"cancelID";
SDLRPCParameterName const SDLRPCParameterNameCapacity = @"capacity";
SDLRPCParameterName const SDLRPCParameterNameCapacityUnit = @"capacityUnit";
@@ -136,6 +139,7 @@ SDLRPCParameterName const SDLRPCParameterNameChoiceSet = @"choiceSet";
SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnable = @"circulateAirEnable";
SDLRPCParameterName const SDLRPCParameterNameCirculateAirEnableAvailable = @"circulateAirEnableAvailable";
SDLRPCParameterName const SDLRPCParameterNameClimateControlData = @"climateControlData";
+SDLRPCParameterName const SDLRPCParameterNameClimateData = @"climateData";
SDLRPCParameterName const SDLRPCParameterNameClimateControlCapabilities = @"climateControlCapabilities";
SDLRPCParameterName const SDLRPCParameterNameCloudCover = @"cloudCover";
SDLRPCParameterName const SDLRPCParameterNameClusterModes = @"clusterModes";
@@ -147,7 +151,9 @@ SDLRPCParameterName const SDLRPCParameterNameColumns = @"columns";
SDLRPCParameterName const SDLRPCParameterNameCommandIcon = @"cmdIcon";
SDLRPCParameterName const SDLRPCParameterNameCommandId = @"cmdID";
SDLRPCParameterName const SDLRPCParameterNameCompassDirection = @"compassDirection";
+SDLRPCParameterName const SDLRPCParameterNameConditionActive = @"conditionActive";
SDLRPCParameterName const SDLRPCParameterNameCorrelationId = @"correlationID";
+SDLRPCParameterName const SDLRPCParameterNameCountRate = @"countRate";
SDLRPCParameterName const SDLRPCParameterNameCountryCode = @"countryCode";
SDLRPCParameterName const SDLRPCParameterNameCountryName = @"countryName";
SDLRPCParameterName const SDLRPCParameterNameCRC = @"crc";
@@ -195,6 +201,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";
@@ -246,6 +253,7 @@ SDLRPCParameterName const SDLRPCParameterNameFilenames = @"filenames";
SDLRPCParameterName const SDLRPCParameterNameFileType = @"fileType";
SDLRPCParameterName const SDLRPCParameterNameFirmness = @"firmness";
SDLRPCParameterName const SDLRPCParameterNameFirmwareRevision = @"firmwareRev";
+SDLRPCParameterName const SDLRPCParameterNameForwardSeekIndicator = @"forwardSeekIndicator";
SDLRPCParameterName const SDLRPCParameterNameFreeModules = @"freeModules";
SDLRPCParameterName const SDLRPCParameterNameFrequencyInteger = @"frequencyInteger";
SDLRPCParameterName const SDLRPCParameterNameFrequencyFraction = @"frequencyFraction";
@@ -258,6 +266,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";
@@ -515,6 +524,7 @@ SDLRPCParameterName const SDLRPCParameterNamePrecipType = @"precipType";
SDLRPCParameterName const SDLRPCParameterNamePowerModeActive = @"powerModeActive";
SDLRPCParameterName const SDLRPCParameterNamePowerModeQualificationStatus = @"powerModeQualificationStatus";
SDLRPCParameterName const SDLRPCParameterNamePowerModeStatus = @"powerModeStatus";
+SDLRPCParameterName const SDLRPCParameterNamePreferredFPS = @"preferredFPS";
SDLRPCParameterName const SDLRPCParameterNamePreferredResolution = @"preferredResolution";
SDLRPCParameterName const SDLRPCParameterNamePrerecordedSpeech = @"prerecordedSpeech";
SDLRPCParameterName const SDLRPCParameterNamePresetBankCapabilities = @"presetBankCapabilities";
@@ -570,6 +580,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";
@@ -588,12 +599,16 @@ SDLRPCParameterName const SDLRPCParameterNameSeatControlData = @"seatControlData
SDLRPCParameterName const SDLRPCParameterNameSeatControlCapabilities = @"seatControlCapabilities";
SDLRPCParameterName const SDLRPCParameterNameSeatLocation = @"seatLocation";
SDLRPCParameterName const SDLRPCParameterNameSeatLocationCapability = @"seatLocationCapability";
+SDLRPCParameterName const SDLRPCParameterNameSeatOccupancy = @"seatOccupancy";
SDLRPCParameterName const SDLRPCParameterNameSeats = @"seats";
+SDLRPCParameterName const SDLRPCParameterNameSeatsBelted = @"seatsBelted";
+SDLRPCParameterName const SDLRPCParameterNameSeatsOccupied = @"seatsOccupied";
SDLRPCParameterName const SDLRPCParameterNameSecondaryGraphic = @"secondaryGraphic";
SDLRPCParameterName const SDLRPCParameterNameSecondaryImage = @"secondaryImage";
SDLRPCParameterName const SDLRPCParameterNameSecondaryText = @"secondaryText";
SDLRPCParameterName const SDLRPCParameterNameSecond = @"second";
SDLRPCParameterName const SDLRPCParameterNameSeconds = @"seconds";
+SDLRPCParameterName const SDLRPCParameterNameSeekTime = @"seekTime";
SDLRPCParameterName const SDLRPCParameterNameSendLocationEnabled = @"sendLocationEnabled";
SDLRPCParameterName const SDLRPCParameterNameServiceActive = @"serviceActive";
SDLRPCParameterName const SDLRPCParameterNameServiceArea = @"serviceArea";
diff --git a/SmartDeviceLink/private/SDLSoftButtonManager.m b/SmartDeviceLink/private/SDLSoftButtonManager.m
index 97b233aa6..2a637f831 100644
--- a/SmartDeviceLink/private/SDLSoftButtonManager.m
+++ b/SmartDeviceLink/private/SDLSoftButtonManager.m
@@ -11,6 +11,7 @@
#import "SDLConnectionManagerType.h"
#import "SDLError.h"
#import "SDLFileManager.h"
+#import "SDLGlobals.h"
#import "SDLLogMacros.h"
#import "SDLOnHMIStatus.h"
#import "SDLPredefinedWindows.h"
@@ -94,7 +95,8 @@ NS_ASSUME_NONNULL_BEGIN
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.name = @"SDLSoftButtonManager Transaction Queue";
queue.maxConcurrentOperationCount = 1;
- queue.qualityOfService = NSQualityOfServiceUserInitiated;
+ queue.qualityOfService = NSQualityOfServiceUserInteractive;
+ queue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
queue.suspended = YES;
return queue;
@@ -131,7 +133,7 @@ NS_ASSUME_NONNULL_BEGIN
if ([softButtonObjects[j].name isEqualToString:buttonName]) {
_softButtonObjects = @[];
SDLLogE(@"Attempted to set soft button objects, but two buttons had the same name: %@", softButtonObjects);
- return;
+ @throw [NSException sdl_duplicateSoftButtonsNameException];
}
}
}
diff --git a/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m b/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m
index 65285f830..8897f4b10 100644
--- a/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m
+++ b/SmartDeviceLink/private/SDLSoftButtonReplaceOperation.m
@@ -174,8 +174,9 @@ NS_ASSUME_NONNULL_BEGIN
[softButtons addObject:buttonObject.currentStateSoftButton];
}
+ // HAX: Work around a bug in Sync where not sending a main field when sending soft buttons will lock up the head unit for 10-15 seconds.
SDLShow *show = [[SDLShow alloc] init];
- show.mainField1 = self.mainField1;
+ show.mainField1 = self.mainField1 ?: @"";
show.softButtons = [softButtons copy];
[self.connectionManager sendConnectionRequest:show withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
diff --git a/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m b/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m
index add03489c..23265319f 100644
--- a/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m
+++ b/SmartDeviceLink/private/SDLSoftButtonTransitionOperation.m
@@ -50,8 +50,9 @@ NS_ASSUME_NONNULL_BEGIN
}
- (void)sdl_sendNewSoftButtons {
+ // HAX: Work around a bug in Sync where not sending a main field when sending soft buttons will lock up the head unit for 10-15 seconds.
SDLShow *newShow = [[SDLShow alloc] init];
- newShow.mainField1 = self.mainField1;
+ newShow.mainField1 = self.mainField1 ?: @"";
newShow.softButtons = [self sdl_currentStateSoftButtonsForObjects:self.softButtons];
[self.connectionManager sendConnectionRequest:newShow withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
diff --git a/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m b/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m
index 5d1236a98..d2b5490ee 100644
--- a/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m
+++ b/SmartDeviceLink/private/SDLStreamingVideoLifecycleManager.m
@@ -387,6 +387,9 @@ typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_N
if (capability.maxBitrate != nil) {
weakSelf.videoEncoderSettings[(__bridge NSString *) kVTCompressionPropertyKey_AverageBitRate] = [[NSNumber alloc] initWithUnsignedLongLong:(capability.maxBitrate.unsignedLongLongValue * 1000)];
}
+ if (capability.preferredFPS != nil) {
+ weakSelf.videoEncoderSettings[(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate] = capability.preferredFPS;
+ }
if (weakSelf.dataSource != nil) {
SDLLogV(@"Calling data source for modified preferred formats");
@@ -397,7 +400,7 @@ typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_N
weakSelf.focusableItemManager.enableHapticDataRequests = capability.hapticSpatialDataSupported.boolValue;
}
- SDLLogD(@"Got specialized video capabilites, preferred formats: %@, haptics enabled %@", weakSelf.preferredFormats, (capability.hapticSpatialDataSupported.boolValue ? @"YES" : @"NO"));
+ SDLLogD(@"Got specialized video capabilites, preferred formats: %@, haptics enabled %@, videoEncoderSettings: %@", weakSelf.preferredFormats, (capability.hapticSpatialDataSupported.boolValue ? @"YES" : @"NO"), weakSelf.videoEncoderSettings);
} else {
// If no response, assume that the format is H264 RAW and get the screen resolution from the RAI response's display capabilities.
SDLVideoStreamingFormat *format = [[SDLVideoStreamingFormat alloc] initWithCodec:SDLVideoStreamingCodecH264 protocol:SDLVideoStreamingProtocolRAW];
@@ -412,9 +415,21 @@ typedef void(^SDLVideoCapabilityResponseHandler)(SDLVideoStreamingCapability *_N
SDLLogD(@"Using generic video capabilites, preferred formats: %@, resolutions: %@, haptics disabled", weakSelf.preferredFormats, weakSelf.preferredResolutions);
}
- // Apply customEncoderSettings here. Note that value from HMI (such as maxBitrate) will be overwritten by custom settings.
+ // Apply customEncoderSettings here. Note that value from HMI (such as maxBitrate) will be overwritten by custom settings
+ // (Exception: ExpectedFrameRate, AverageBitRate)
for (id key in self.customEncoderSettings.keyEnumerator) {
- self.videoEncoderSettings[key] = [self.customEncoderSettings valueForKey:key];
+ // do NOT override framerate or average bitreate if custom setting is higher than current setting.
+ // See SDL 0323 (https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0323-align-VideoStreamingParameter-with-capability.md) for details.
+ if ([(NSString *)key isEqualToString:(__bridge NSString *)kVTCompressionPropertyKey_ExpectedFrameRate] ||
+ [(NSString *)key isEqualToString:(__bridge NSString *)kVTCompressionPropertyKey_AverageBitRate]) {
+ NSNumber *customEncoderSettings = (NSNumber *)[self.customEncoderSettings valueForKey:key];
+ NSNumber *videoEncoderSettings = (NSNumber *)[self.videoEncoderSettings valueForKey:key];
+ if (customEncoderSettings < videoEncoderSettings) {
+ self.videoEncoderSettings[key] = customEncoderSettings;
+ }
+ } else {
+ self.videoEncoderSettings[key] = [self.customEncoderSettings valueForKey:key];
+ }
}
if (weakSelf.dataSource != nil) {
diff --git a/SmartDeviceLink/private/SDLTextAndGraphicManager.m b/SmartDeviceLink/private/SDLTextAndGraphicManager.m
index de8e87111..6f416b2f1 100644
--- a/SmartDeviceLink/private/SDLTextAndGraphicManager.m
+++ b/SmartDeviceLink/private/SDLTextAndGraphicManager.m
@@ -13,6 +13,7 @@
#import "SDLDisplayCapability.h"
#import "SDLError.h"
#import "SDLFileManager.h"
+#import "SDLGlobals.h"
#import "SDLImage.h"
#import "SDLLogMacros.h"
#import "SDLMetadataTags.h"
@@ -127,7 +128,8 @@ NS_ASSUME_NONNULL_BEGIN
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.name = @"SDLTextAndGraphicManager Transaction Queue";
queue.maxConcurrentOperationCount = 1;
- queue.qualityOfService = NSQualityOfServiceUserInitiated;
+ queue.qualityOfService = NSQualityOfServiceUserInteractive;
+ queue.underlyingQueue = [SDLGlobals sharedGlobals].sdlConcurrentQueue;
queue.suspended = YES;
return queue;
diff --git a/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m b/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m
index e878f17e4..3086e67e9 100644
--- a/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m
+++ b/SmartDeviceLink/private/SDLTextField+ScreenManagerExtensions.m
@@ -11,8 +11,11 @@
@implementation SDLTextField (ScreenManagerExtensions)
+ (NSArray<SDLTextFieldName> *)sdl_allTextFieldNames {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
return @[SDLTextFieldNameETA, SDLTextFieldNameMenuName, SDLTextFieldNameMenuTitle, SDLTextFieldNameStatusBar, SDLTextFieldNameAlertText1, SDLTextFieldNameAlertText2, SDLTextFieldNameAlertText3, SDLTextFieldNameMainField1, SDLTextFieldNameMainField2, SDLTextFieldNameMainField3, SDLTextFieldNameMainField4, SDLTextFieldNameMediaClock, SDLTextFieldNameMediaTrack, SDLTextFieldNamePhoneNumber, SDLTextFieldNameAddressLines, SDLTextFieldNameLocationName, SDLTextFieldNameSliderFooter, SDLTextFieldNameSliderHeader, SDLTextFieldNameTertiaryText, SDLTextFieldNameSecondaryText, SDLTextFieldNameTemplateTitle, SDLTextFieldNameTotalDistance, SDLTextFieldNameNavigationText1, SDLTextFieldNameNavigationText2, SDLTextFieldNameLocationDescription, SDLTextFieldNameScrollableMessageBody, SDLTextFieldNameInitialInteractionText, SDLTextFieldNameAudioPassThruDisplayText1, SDLTextFieldNameAudioPassThruDisplayText2, SDLTextFieldNameTimeToDestination, SDLTextFieldNameTurnText];
}
+#pragma clang diagnostic pop
+ (NSArray<SDLTextField *> *)allTextFields {
NSMutableArray<SDLTextField *> *tempTextFields = [NSMutableArray array];
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/SDLClimateData.h b/SmartDeviceLink/public/SDLClimateData.h
new file mode 100644
index 000000000..bb060e65e
--- /dev/null
+++ b/SmartDeviceLink/public/SDLClimateData.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+
+@class SDLTemperature;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @added in SmartDeviceLink 7.1.0
+ */
+@interface SDLClimateData : SDLRPCStruct
+
+/**
+ * @param externalTemperature - externalTemperature
+ * @param cabinTemperature - cabinTemperature
+ * @param atmosphericPressure - atmosphericPressure
+ * @return A SDLClimateData object
+ */
+- (instancetype)initWithExternalTemperature:(nullable SDLTemperature *)externalTemperature cabinTemperature:(nullable SDLTemperature *)cabinTemperature atmosphericPressure:(nullable NSNumber<SDLFloat> *)atmosphericPressure;
+
+/**
+ * The external temperature in degrees celsius
+ */
+@property (nullable, strong, nonatomic) SDLTemperature *externalTemperature;
+
+/**
+ * Internal ambient cabin temperature in degrees celsius
+ */
+@property (nullable, strong, nonatomic) SDLTemperature *cabinTemperature;
+
+/**
+ * Current atmospheric pressure in mBar
+ * {"num_min_value": 0.0, "num_max_value": 2000.0}
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *atmosphericPressure;
+
+@end
+
+NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/SmartDeviceLink/public/SDLClimateData.m b/SmartDeviceLink/public/SDLClimateData.m
new file mode 100644
index 000000000..990370333
--- /dev/null
+++ b/SmartDeviceLink/public/SDLClimateData.m
@@ -0,0 +1,78 @@
+/*
+ * 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 "SDLClimateData.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLTemperature.h"
+
+NS_ASSUME_NONNULL_BEGIN
+@implementation SDLClimateData
+
+- (instancetype)initWithExternalTemperature:(nullable SDLTemperature *)externalTemperature cabinTemperature:(nullable SDLTemperature *)cabinTemperature atmosphericPressure:(nullable NSNumber<SDLFloat> *)atmosphericPressure {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.externalTemperature = externalTemperature;
+ self.cabinTemperature = cabinTemperature;
+ self.atmosphericPressure = atmosphericPressure;
+ return self;
+}
+
+- (void)setExternalTemperature:(nullable SDLTemperature *)externalTemperature {
+ [self.store sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
+}
+
+- (nullable SDLTemperature *)externalTemperature {
+ return [self.store sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLTemperature.class error:nil];
+}
+
+- (void)setCabinTemperature:(nullable SDLTemperature *)cabinTemperature {
+ [self.store sdl_setObject:cabinTemperature forName:SDLRPCParameterNameCabinTemperature];
+}
+
+- (nullable SDLTemperature *)cabinTemperature {
+ return [self.store sdl_objectForName:SDLRPCParameterNameCabinTemperature ofClass:SDLTemperature.class error:nil];
+}
+
+- (void)setAtmosphericPressure:(nullable NSNumber<SDLFloat> *)atmosphericPressure {
+ [self.store sdl_setObject:atmosphericPressure forName:SDLRPCParameterNameAtmosphericPressure];
+}
+
+- (nullable NSNumber<SDLFloat> *)atmosphericPressure {
+ return [self.store sdl_objectForName:SDLRPCParameterNameAtmosphericPressure ofClass:NSNumber.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/SDLGetVehicleData.h b/SmartDeviceLink/public/SDLGetVehicleData.h
index e8c30889c..470cf8ee8 100644
--- a/SmartDeviceLink/public/SDLGetVehicleData.h
+++ b/SmartDeviceLink/public/SDLGetVehicleData.h
@@ -52,7 +52,7 @@ NS_ASSUME_NONNULL_BEGIN
* @param wiperStatus Get wiperStatus data
* @return A SDLGetVehicleData object
*/
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus: instead");
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
/**
* Convenience init for getting data for all possible vehicle data items.
@@ -90,7 +90,45 @@ NS_ASSUME_NONNULL_BEGIN
* @param windowStatus - windowStatus
* @return A SDLGetVehicleData object
*/
-- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal vin:(nullable NSNumber<SDLBool> *)vin gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus;
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal vin:(nullable NSNumber<SDLBool> *)vin gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
+
+/**
+ * Convenience init for getting data for all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param climateData - climateData
+ * @param turnSignal - turnSignal
+ * @param vin - vin
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param handsOffSteering - handsOffSteering
+ * @param windowStatus - windowStatus
+ * @param seatOccupancy - seatOccupancy
+ */
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange climateData:(nullable NSNumber<SDLBool> *)climateData turnSignal:(nullable NSNumber<SDLBool> *)turnSignal vin:(nullable NSNumber<SDLBool> *)vin gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey windowStatus:(nullable NSNumber<SDLBool> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy;
/**
* See GearStatus
@@ -135,9 +173,19 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *instantFuelConsumption;
/**
- * A boolean value. If true, requests External Temperature data.
+ * See ClimateData
+ *
+ * @added in SmartDeviceLink 7.1.0
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLBool> *externalTemperature;
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *climateData;
+
+/**
+ * The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *externalTemperature __deprecated_msg("Use climateData instead on 7.1+ RPC version connections");
/**
* A boolean value. If true, requests the Vehicle Identification Number.
@@ -289,6 +337,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+/**
+ * See SeatOccupancy
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *seatOccupancy;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGetVehicleData.m b/SmartDeviceLink/public/SDLGetVehicleData.m
index abae28008..30d1728c0 100644
--- a/SmartDeviceLink/public/SDLGetVehicleData.m
+++ b/SmartDeviceLink/public/SDLGetVehicleData.m
@@ -24,19 +24,31 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic pop
- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus {
- self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) externalTemperature:@(externalTemperature) turnSignal:@(turnSignal) vin:@(vin) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accelerationPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) handsOffSteering:nil windowStatus:nil];
+ self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) climateData:nil turnSignal:@(turnSignal) vin:@(vin) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accelerationPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) windowStatus:nil handsOffSteering:nil seatOccupancy:nil];
if (self) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
self.fuelLevel = @(fuelLevel);
self.fuelLevel_State = @(fuelLevelState);
self.prndl = @(prndl);
+ self.externalTemperature = @(externalTemperature);
#pragma clang diagnostic pop
}
return self;
}
- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal vin:(nullable NSNumber<SDLBool> *)vin gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ self = [self initWithGps:gps speed:speed rpm:rpm instantFuelConsumption:instantFuelConsumption fuelRange:fuelRange climateData:nil turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:odometer beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:engineTorque accPedalPosition:accPedalPosition steeringWheelAngle:steeringWheelAngle engineOilLife:engineOilLife electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey windowStatus:windowStatus handsOffSteering:handsOffSteering seatOccupancy:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.externalTemperature = externalTemperature;
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange climateData:(nullable NSNumber<SDLBool> *)climateData turnSignal:(nullable NSNumber<SDLBool> *)turnSignal vin:(nullable NSNumber<SDLBool> *)vin gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey windowStatus:(nullable NSNumber<SDLBool> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy {
self = [self init];
if (!self) {
return nil;
@@ -46,7 +58,7 @@ NS_ASSUME_NONNULL_BEGIN
self.rpm = rpm;
self.instantFuelConsumption = instantFuelConsumption;
self.fuelRange = fuelRange;
- self.externalTemperature = externalTemperature;
+ self.climateData = climateData;
self.turnSignal = turnSignal;
self.vin = vin;
self.gearStatus = gearStatus;
@@ -70,8 +82,9 @@ NS_ASSUME_NONNULL_BEGIN
self.emergencyEvent = emergencyEvent;
self.clusterModeStatus = clusterModeStatus;
self.myKey = myKey;
- self.handsOffSteering = handsOffSteering;
self.windowStatus = windowStatus;
+ self.handsOffSteering = handsOffSteering;
+ self.seatOccupancy = seatOccupancy;
return self;
}
@@ -131,6 +144,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
}
+- (void)setClimateData:(nullable NSNumber<SDLBool> *)climateData {
+ [self.parameters sdl_setObject:climateData forName:SDLRPCParameterNameClimateData];
+}
+
+- (nullable NSNumber<SDLBool> *)climateData {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClimateData ofClass:NSNumber.class error:nil];
+}
+
- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
[self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
}
@@ -356,6 +377,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameHandsOffSteering ofClass:NSNumber.class error:nil];
}
+- (void)setSeatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy {
+ [self.parameters sdl_setObject:seatOccupancy forName:SDLRPCParameterNameSeatOccupancy];
+}
+
+- (nullable NSNumber<SDLBool> *)seatOccupancy {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSeatOccupancy ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGetVehicleDataResponse.h b/SmartDeviceLink/public/SDLGetVehicleDataResponse.h
index 6f24221b4..79d72199f 100644
--- a/SmartDeviceLink/public/SDLGetVehicleDataResponse.h
+++ b/SmartDeviceLink/public/SDLGetVehicleDataResponse.h
@@ -13,6 +13,7 @@
@class SDLAirbagStatus;
@class SDLBeltStatus;
@class SDLBodyInformation;
+@class SDLClimateData;
@class SDLClusterModeStatus;
@class SDLDeviceStatus;
@class SDLECallInfo;
@@ -22,11 +23,11 @@
@class SDLGPSData;
@class SDLHeadLampStatus;
@class SDLMyKey;
+@class SDLSeatOccupancy;
@class SDLStabilityControlsStatus;
@class SDLTireStatus;
@class SDLWindowStatus;
-
/**
* Response to SDLGetVehicleData
*
@@ -73,7 +74,46 @@ NS_ASSUME_NONNULL_BEGIN
* @param windowStatus - windowStatus
* @return A SDLGetVehicleDataResponse object
*/
-- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus;
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
+
+/**
+ * Convenience init for initializing data for all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param climateData - climateData
+ * @param turnSignal - turnSignal
+ * @param vin - vin
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param windowStatus - windowStatus
+ * @param handsOffSteering - handsOffSteering
+ * @param seatOccupancy - seatOccupancy
+ * @return A SDLGetVehicleDataResponse object
+ */
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange climateData:(nullable SDLClimateData *)climateData turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable SDLSeatOccupancy *)seatOccupancy;
/**
* See GearStatus
@@ -120,9 +160,20 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *instantFuelConsumption;
/**
- The external temperature in degrees celsius.
+ * See ClimateData
+ *
+ * @added in SmartDeviceLink 7.1.0
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature;
+@property (nullable, strong, nonatomic) SDLClimateData *climateData;
+
+/**
+ * The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.
+ * {"num_min_value": -40.0, "num_max_value": 100.0}
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature __deprecated_msg("Use climateData instead on 7.1+ RPC version connections");
/**
The Vehicle Identification Number
@@ -275,6 +326,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+/**
+ * See SeatOccupancy
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLSeatOccupancy *seatOccupancy;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLGetVehicleDataResponse.m b/SmartDeviceLink/public/SDLGetVehicleDataResponse.m
index 47f5a66eb..b5fc22261 100644
--- a/SmartDeviceLink/public/SDLGetVehicleDataResponse.m
+++ b/SmartDeviceLink/public/SDLGetVehicleDataResponse.m
@@ -8,6 +8,7 @@
#import "SDLAirbagStatus.h"
#import "SDLBeltStatus.h"
#import "SDLBodyInformation.h"
+#import "SDLClimateData.h"
#import "SDLClusterModeStatus.h"
#import "SDLDeviceStatus.h"
#import "SDLECallInfo.h"
@@ -19,6 +20,7 @@
#import "SDLMyKey.h"
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
+#import "SDLSeatOccupancy.h"
#import "SDLStabilityControlsStatus.h"
#import "SDLTireStatus.h"
#import "SDLWindowStatus.h"
@@ -39,6 +41,18 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic pop
- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus {
+
+ self = [self initWithGps:gps speed:speed rpm:rpm instantFuelConsumption:instantFuelConsumption fuelRange:fuelRange climateData:nil turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:odometer beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:engineTorque accPedalPosition:accPedalPosition steeringWheelAngle:steeringWheelAngle engineOilLife:engineOilLife electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey windowStatus:windowStatus handsOffSteering:handsOffSteering seatOccupancy:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.externalTemperature = externalTemperature;
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange climateData:(nullable SDLClimateData *)climateData turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable SDLSeatOccupancy *)seatOccupancy {
self = [self init];
if (!self) {
return nil;
@@ -48,7 +62,7 @@ NS_ASSUME_NONNULL_BEGIN
self.rpm = rpm;
self.instantFuelConsumption = instantFuelConsumption;
self.fuelRange = fuelRange;
- self.externalTemperature = externalTemperature;
+ self.climateData = climateData;
self.turnSignal = turnSignal;
self.vin = vin;
self.gearStatus = gearStatus;
@@ -72,8 +86,9 @@ NS_ASSUME_NONNULL_BEGIN
self.emergencyEvent = emergencyEvent;
self.clusterModeStatus = clusterModeStatus;
self.myKey = myKey;
- self.handsOffSteering = handsOffSteering;
self.windowStatus = windowStatus;
+ self.handsOffSteering = handsOffSteering;
+ self.seatOccupancy = seatOccupancy;
return self;
}
@@ -142,6 +157,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
}
+- (void)setClimateData:(nullable SDLClimateData *)climateData {
+ [self.parameters sdl_setObject:climateData forName:SDLRPCParameterNameClimateData];
+}
+
+- (nullable SDLClimateData *)climateData {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClimateData ofClass:SDLClimateData.class error:nil];
+}
+
- (void)setExternalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature {
[self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
}
@@ -360,6 +383,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
}
+- (void)setSeatOccupancy:(nullable SDLSeatOccupancy *)seatOccupancy {
+ [self.parameters sdl_setObject:seatOccupancy forName:SDLRPCParameterNameSeatOccupancy];
+}
+
+- (nullable SDLSeatOccupancy *)seatOccupancy {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSeatOccupancy ofClass:SDLSeatOccupancy.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnVehicleData.h b/SmartDeviceLink/public/SDLOnVehicleData.h
index 66108cf47..a85d8610f 100644
--- a/SmartDeviceLink/public/SDLOnVehicleData.h
+++ b/SmartDeviceLink/public/SDLOnVehicleData.h
@@ -13,6 +13,7 @@
@class SDLAirbagStatus;
@class SDLBeltStatus;
@class SDLBodyInformation;
+@class SDLClimateData;
@class SDLClusterModeStatus;
@class SDLDeviceStatus;
@class SDLECallInfo;
@@ -22,6 +23,7 @@
@class SDLGPSData;
@class SDLHeadLampStatus;
@class SDLMyKey;
+@class SDLSeatOccupancy;
@class SDLStabilityControlsStatus;
@class SDLTireStatus;
@class SDLWindowStatus;
@@ -73,7 +75,46 @@ NS_ASSUME_NONNULL_BEGIN
* @param windowStatus - windowStatus
* @return A SDLOnVehicleData object
*/
-- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus;
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
+
+/**
+ * Convenience init for setting all possible values on vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param climateData - climateData
+ * @param turnSignal - turnSignal
+ * @param vin - vin
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param windowStatus - windowStatus
+ * @param handsOffSteering - handsOffSteering
+ * @param seatOccupancy - seatOccupancy
+ * @return A SDLOnVehicleData object
+ */
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange climateData:(nullable SDLClimateData *)climateData turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable SDLSeatOccupancy *)seatOccupancy;
/**
* See GearStatus
@@ -120,9 +161,20 @@ NS_ASSUME_NONNULL_BEGIN
@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *instantFuelConsumption;
/**
- The external temperature in degrees celsius.
+ * See ClimateData
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLClimateData *climateData;
+
+/**
+ * The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.
+ * {"num_min_value": -40.0, "num_max_value": 100.0}
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
*/
-@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature;
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *externalTemperature __deprecated_msg("Use climateData instead on 7.1+ RPC version connections");
/**
The Vehicle Identification Number
@@ -275,6 +327,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (nullable NSObject *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+/**
+ * See SeatOccupancy
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLSeatOccupancy *seatOccupancy;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLOnVehicleData.m b/SmartDeviceLink/public/SDLOnVehicleData.m
index 9e8ebc13b..1df77371e 100644
--- a/SmartDeviceLink/public/SDLOnVehicleData.m
+++ b/SmartDeviceLink/public/SDLOnVehicleData.m
@@ -7,6 +7,7 @@
#import "SDLAirbagStatus.h"
#import "SDLBeltStatus.h"
#import "SDLBodyInformation.h"
+#import "SDLClimateData.h"
#import "SDLClusterModeStatus.h"
#import "SDLDeviceStatus.h"
#import "SDLECallInfo.h"
@@ -18,6 +19,7 @@
#import "SDLMyKey.h"
#import "SDLRPCParameterNames.h"
#import "SDLRPCFunctionNames.h"
+#import "SDLSeatOccupancy.h"
#import "SDLStabilityControlsStatus.h"
#import "SDLTireStatus.h"
#import "SDLWindowStatus.h"
@@ -38,6 +40,17 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic pop
- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange externalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus {
+ self = [self initWithGps:gps speed:speed rpm:rpm instantFuelConsumption:instantFuelConsumption fuelRange:fuelRange climateData:nil turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:odometer beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:engineTorque accPedalPosition:accPedalPosition steeringWheelAngle:steeringWheelAngle engineOilLife:engineOilLife electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey windowStatus:windowStatus handsOffSteering:handsOffSteering seatOccupancy:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.externalTemperature = externalTemperature;
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable SDLGPSData *)gps speed:(nullable NSNumber<SDLFloat> *)speed rpm:(nullable NSNumber<SDLUInt> *)rpm instantFuelConsumption:(nullable NSNumber<SDLFloat> *)instantFuelConsumption fuelRange:(nullable NSArray<SDLFuelRange *> *)fuelRange climateData:(nullable SDLClimateData *)climateData turnSignal:(nullable SDLTurnSignal)turnSignal vin:(nullable NSString *)vin gearStatus:(nullable SDLGearStatus *)gearStatus tirePressure:(nullable SDLTireStatus *)tirePressure odometer:(nullable NSNumber<SDLUInt> *)odometer beltStatus:(nullable SDLBeltStatus *)beltStatus bodyInformation:(nullable SDLBodyInformation *)bodyInformation deviceStatus:(nullable SDLDeviceStatus *)deviceStatus driverBraking:(nullable SDLVehicleDataEventStatus)driverBraking wiperStatus:(nullable SDLWiperStatus)wiperStatus headLampStatus:(nullable SDLHeadLampStatus *)headLampStatus engineTorque:(nullable NSNumber<SDLFloat> *)engineTorque accPedalPosition:(nullable NSNumber<SDLFloat> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLFloat> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLFloat> *)engineOilLife electronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSString *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLStabilityControlsStatus *)stabilityControlsStatus eCallInfo:(nullable SDLECallInfo *)eCallInfo airbagStatus:(nullable SDLAirbagStatus *)airbagStatus emergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent clusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus myKey:(nullable SDLMyKey *)myKey windowStatus:(nullable NSArray<SDLWindowStatus *> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable SDLSeatOccupancy *)seatOccupancy {
self = [self init];
if (!self) {
return nil;
@@ -47,7 +60,7 @@ NS_ASSUME_NONNULL_BEGIN
self.rpm = rpm;
self.instantFuelConsumption = instantFuelConsumption;
self.fuelRange = fuelRange;
- self.externalTemperature = externalTemperature;
+ self.climateData = climateData;
self.turnSignal = turnSignal;
self.vin = vin;
self.gearStatus = gearStatus;
@@ -71,8 +84,9 @@ NS_ASSUME_NONNULL_BEGIN
self.emergencyEvent = emergencyEvent;
self.clusterModeStatus = clusterModeStatus;
self.myKey = myKey;
- self.handsOffSteering = handsOffSteering;
self.windowStatus = windowStatus;
+ self.handsOffSteering = handsOffSteering;
+ self.seatOccupancy = seatOccupancy;
return self;
}
@@ -141,6 +155,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
}
+- (void)setClimateData:(nullable SDLClimateData *)climateData {
+ [self.parameters sdl_setObject:climateData forName:SDLRPCParameterNameClimateData];
+}
+
+- (nullable SDLClimateData *)climateData {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClimateData ofClass:SDLClimateData.class error:nil];
+}
+
- (void)setExternalTemperature:(nullable NSNumber<SDLFloat> *)externalTemperature {
[self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
}
@@ -358,6 +380,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSObject.class error:nil];
}
+- (void)setSeatOccupancy:(nullable SDLSeatOccupancy *)seatOccupancy {
+ [self.parameters sdl_setObject:seatOccupancy forName:SDLRPCParameterNameSeatOccupancy];
+}
+
+- (nullable SDLSeatOccupancy *)seatOccupancy {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSeatOccupancy ofClass:SDLSeatOccupancy.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLRegisterAppInterface.h b/SmartDeviceLink/public/SDLRegisterAppInterface.h
index 805411b9a..10cf41dac 100644
--- a/SmartDeviceLink/public/SDLRegisterAppInterface.h
+++ b/SmartDeviceLink/public/SDLRegisterAppInterface.h
@@ -209,7 +209,7 @@ NS_ASSUME_NONNULL_BEGIN
*
* SDLAppInfo, Optional
*
- * @since SDL 2.0
+ * @since SDL 4.2
*/
@property (nullable, strong, nonatomic) SDLAppInfo *appInfo;
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/SDLSeatOccupancy.h b/SmartDeviceLink/public/SDLSeatOccupancy.h
new file mode 100644
index 000000000..e453a97e1
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatOccupancy.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+
+@class SDLSeatStatus;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @added in SmartDeviceLink 7.1.0
+ */
+@interface SDLSeatOccupancy : SDLRPCStruct
+
+/**
+ * @param seatsOccupied - seatsOccupied
+ * @param seatsBelted - seatsBelted
+ * @return A SDLSeatOccupancy object
+ */
+- (instancetype)initWithSeatsOccupied:(nullable NSArray<SDLSeatStatus *> *)seatsOccupied seatsBelted:(nullable NSArray<SDLSeatStatus *> *)seatsBelted;
+
+/**
+ * Seat status array containing location and whether the seats are occupied.
+ * {"array_min_size": 0, "array_max_size": 100}
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSeatStatus *> *seatsOccupied;
+
+/**
+ * Seat status array containing location and whether the seats are belted.
+ * {"array_min_size": 0, "array_max_size": 100}
+ */
+@property (nullable, strong, nonatomic) NSArray<SDLSeatStatus *> *seatsBelted;
+
+@end
+
+NS_ASSUME_NONNULL_END \ No newline at end of file
diff --git a/SmartDeviceLink/public/SDLSeatOccupancy.m b/SmartDeviceLink/public/SDLSeatOccupancy.m
new file mode 100644
index 000000000..67d6f17f4
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatOccupancy.m
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLSeatOccupancy.h"
+#import "SDLSeatStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSeatOccupancy
+
+- (instancetype)initWithSeatsOccupied:(nullable NSArray<SDLSeatStatus *> *)seatsOccupied seatsBelted:(nullable NSArray<SDLSeatStatus *> *)seatsBelted {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.seatsOccupied = seatsOccupied;
+ self.seatsBelted = seatsBelted;
+ return self;
+}
+
+- (void)setSeatsOccupied:(nullable NSArray<SDLSeatStatus *> *)seatsOccupied {
+ [self.store sdl_setObject:seatsOccupied forName:SDLRPCParameterNameSeatsOccupied];
+}
+
+- (nullable NSArray<SDLSeatStatus *> *)seatsOccupied {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameSeatsOccupied ofClass:SDLSeatStatus.class error:nil];
+}
+
+- (void)setSeatsBelted:(nullable NSArray<SDLSeatStatus *> *)seatsBelted {
+ [self.store sdl_setObject:seatsBelted forName:SDLRPCParameterNameSeatsBelted];
+}
+
+- (nullable NSArray<SDLSeatStatus *> *)seatsBelted {
+ return [self.store sdl_objectsForName:SDLRPCParameterNameSeatsBelted ofClass:SDLSeatStatus.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSeatStatus.h b/SmartDeviceLink/public/SDLSeatStatus.h
new file mode 100644
index 000000000..29d62c263
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatStatus.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+
+@class SDLSeatLocation;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Describes the status of a parameter of seat.
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@interface SDLSeatStatus : SDLRPCStruct
+
+/**
+ * @param seatLocation - seatLocation
+ * @param conditionActive - @(conditionActive)
+ * @return A SDLSeatStatus object
+ */
+- (instancetype)initWithSeatLocation:(SDLSeatLocation *)seatLocation conditionActive:(BOOL)conditionActive;
+
+@property (strong, nonatomic) SDLSeatLocation *seatLocation;
+
+@property (strong, nonatomic) NSNumber<SDLBool> *conditionActive;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSeatStatus.m b/SmartDeviceLink/public/SDLSeatStatus.m
new file mode 100644
index 000000000..ec2d70d78
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeatStatus.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 "SDLRPCParameterNames.h"
+#import "SDLSeatLocation.h"
+#import "SDLSeatStatus.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@implementation SDLSeatStatus
+
+- (instancetype)initWithSeatLocation:(SDLSeatLocation *)seatLocation conditionActive:(BOOL)conditionActive {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.seatLocation = seatLocation;
+ self.conditionActive = @(conditionActive);
+ return self;
+}
+
+- (void)setSeatLocation:(SDLSeatLocation *)seatLocation {
+ [self.store sdl_setObject:seatLocation forName:SDLRPCParameterNameSeatLocation];
+}
+
+- (SDLSeatLocation *)seatLocation {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameSeatLocation ofClass:SDLSeatLocation.class error:&error];
+}
+
+- (void)setConditionActive:(NSNumber<SDLBool> *)conditionActive {
+ [self.store sdl_setObject:conditionActive forName:SDLRPCParameterNameConditionActive];
+}
+
+- (NSNumber<SDLBool> *)conditionActive {
+ NSError *error = nil;
+ return [self.store sdl_objectForName:SDLRPCParameterNameConditionActive ofClass:NSNumber.class error:&error];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSeekIndicatorType.h b/SmartDeviceLink/public/SDLSeekIndicatorType.h
new file mode 100644
index 000000000..77bc15de2
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeekIndicatorType.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLEnum.h"
+
+/**
+ * @added in SmartDeviceLink 7.1.0
+ */
+typedef SDLEnum SDLSeekIndicatorType NS_TYPED_ENUM;
+
+extern SDLSeekIndicatorType const SDLSeekIndicatorTypeTrack;
+extern SDLSeekIndicatorType const SDLSeekIndicatorTypeTime;
diff --git a/SmartDeviceLink/public/SDLSeekIndicatorType.m b/SmartDeviceLink/public/SDLSeekIndicatorType.m
new file mode 100644
index 000000000..a2392cc17
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeekIndicatorType.m
@@ -0,0 +1,36 @@
+/*
+ * 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 "SDLSeekIndicatorType.h"
+
+SDLSeekIndicatorType const SDLSeekIndicatorTypeTrack = @"TRACK";
+SDLSeekIndicatorType const SDLSeekIndicatorTypeTime = @"TIME";
diff --git a/SmartDeviceLink/public/SDLSeekStreamingIndicator.h b/SmartDeviceLink/public/SDLSeekStreamingIndicator.h
new file mode 100644
index 000000000..0cee5aeac
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeekStreamingIndicator.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SDLRPCStruct.h"
+#import "SDLSeekIndicatorType.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * The seek next / skip previous subscription buttons' content
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@interface SDLSeekStreamingIndicator : SDLRPCStruct
+
+/**
+ * @param type - type
+ * @return A SDLSeekStreamingIndicator object
+ */
+- (instancetype)initWithType:(SDLSeekIndicatorType)type;
+
+/**
+ * @param type - type
+ * @param seekTime - seekTime
+ * @return A SDLSeekStreamingIndicator object
+ */
+- (instancetype)initWithType:(SDLSeekIndicatorType)type seekTime:(nullable NSNumber<SDLUInt> *)seekTime;
+
+/**
+ * @param seekTime - seekTime
+ * @return A SDLSeekStreamingIndicator object
+ */
++ (instancetype)seekIndicatorWithSeekTime:(nullable NSNumber<SDLUInt> *)seekTime;
+
+@property (strong, nonatomic) SDLSeekIndicatorType type;
+
+/**
+ * If the type is TIME, this number of seconds may be present alongside the skip indicator. It will indicate the number of seconds that the currently playing media will skip forward or backward.
+ * {"num_min_value": 1, "num_max_value": 99}
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *seekTime;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSeekStreamingIndicator.m b/SmartDeviceLink/public/SDLSeekStreamingIndicator.m
new file mode 100644
index 000000000..a651cc6bf
--- /dev/null
+++ b/SmartDeviceLink/public/SDLSeekStreamingIndicator.m
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2020, SmartDeviceLink Consortium, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSMutableDictionary+Store.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLSeekIndicatorType.h"
+#import "SDLSeekStreamingIndicator.h"
+
+NS_ASSUME_NONNULL_BEGIN
+@implementation SDLSeekStreamingIndicator
+
+- (instancetype)initWithType:(SDLSeekIndicatorType)type {
+ self = [self init];
+ if (!self) {
+ return nil;
+ }
+ self.type = type;
+ return self;
+}
+
+- (instancetype)initWithType:(SDLSeekIndicatorType)type seekTime:(nullable NSNumber<SDLUInt> *)seekTime {
+ self = [self initWithType:type];
+ if (!self) {
+ return nil;
+ }
+ self.seekTime = seekTime;
+ return self;
+}
+
++ (instancetype)seekIndicatorWithSeekTime:(nullable NSNumber<SDLUInt> *)seekTime {
+ return [[self alloc] initWithType:SDLSeekIndicatorTypeTime seekTime:seekTime];
+}
+
+- (void)setType:(SDLSeekIndicatorType)type {
+ [self.store sdl_setObject:type forName:SDLRPCParameterNameType];
+}
+
+- (SDLSeekIndicatorType)type {
+ NSError *error = nil;
+ return [self.store sdl_enumForName:SDLRPCParameterNameType error:&error];
+}
+
+- (void)setSeekTime:(nullable NSNumber<SDLUInt> *)seekTime {
+ [self.store sdl_setObject:seekTime forName:SDLRPCParameterNameSeekTime];
+}
+
+- (nullable NSNumber<SDLUInt> *)seekTime {
+ return [self.store sdl_objectForName:SDLRPCParameterNameSeekTime ofClass:NSNumber.class error:nil];
+}
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSetMediaClockTimer.h b/SmartDeviceLink/public/SDLSetMediaClockTimer.h
index 4c8ccdd89..b79bda1f5 100644
--- a/SmartDeviceLink/public/SDLSetMediaClockTimer.h
+++ b/SmartDeviceLink/public/SDLSetMediaClockTimer.h
@@ -5,6 +5,7 @@
#import "SDLUpdateMode.h"
#import "SDLAudioStreamingIndicator.h"
+#import "SDLSeekStreamingIndicator.h"
@class SDLStartTime;
@@ -33,7 +34,34 @@ NS_ASSUME_NONNULL_BEGIN
@param playPauseIndicator An optional audio indicator to change the play/pause button
@return An object of SetMediaClockTimer
*/
-+ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:));
++ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:)) __deprecated_msg("Use countUpFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate: instead");
+
+/**
+ Create a media clock timer that counts up, e.g from 0:00 to 4:18.
+
+ This will fail if startTime is greater than endTime
+
+ @param startTime The start time interval, e.g. (0) 0:00
+ @param endTime The end time interval, e.g. (258) 4:18
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @param countRate set the media playback timer, if `nil`, will default to 1.0
+ @param forwardSeekIndicator - forwardSeekIndicator
+ @param backSeekIndicator - backSeekIndicator
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:));
+
+/**
+ Create a media clock timer that counts up, e.g from 0:00 to 4:18.
+
+ This will fail if startTime is greater than endTime
+
+ @param startTime The start time interval, e.g. 0:00
+ @param endTime The end time interval, e.g. 4:18
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:)) __deprecated_msg("Use countUpFromStartTime:toEndTime:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate: instead");
/**
Create a media clock timer that counts up, e.g from 0:00 to 4:18.
@@ -43,9 +71,12 @@ NS_ASSUME_NONNULL_BEGIN
@param startTime The start time interval, e.g. 0:00
@param endTime The end time interval, e.g. 4:18
@param playPauseIndicator An optional audio indicator to change the play/pause button
+ @param forwardSeekIndicator - forwardSeekIndicator
+ @param backSeekIndicator - backSeekIndicator
+ @param countRate set the media playback timer, if `nil`, will default to 1.0
@return An object of SetMediaClockTimer
*/
-+ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:));
++ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate NS_SWIFT_NAME(countUp(from:to:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:));
/**
Create a media clock timer that counts down, e.g. from 4:18 to 0:00
@@ -57,7 +88,34 @@ NS_ASSUME_NONNULL_BEGIN
@param playPauseIndicator An optional audio indicator to change the play/pause button
@return An object of SetMediaClockTimer
*/
-+ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:));
++ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:)) __deprecated_msg("Use countDownFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate: instead");
+
+/**
+ Create a media clock timer that counts down, e.g. from 4:18 to 0:00
+
+ This will fail if endTime is greater than startTime
+
+ @param startTime The start time interval, e.g. (258) 4:18
+ @param endTime The end time interval, e.g. (0) 0:00
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @param forwardSeekIndicator - forwardSeekIndicator
+ @param backSeekIndicator - backSeekIndicator
+ @param countRate set the media playback timer, if `nil`, will default to 1.0
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:));
+
+/**
+ Create a media clock timer that counts down, e.g. from 4:18 to 0:00
+
+ This will fail if endTime is greater than startTime
+
+ @param startTime The start time interval, e.g. 4:18
+ @param endTime The end time interval, e.g. 0:00
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @return An object of SetMediaClockTimer
+ */
++ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:)) __deprecated_msg("Use countDownFromStartTime:toEndTime:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate: instead");
/**
Create a media clock timer that counts down, e.g. from 4:18 to 0:00
@@ -67,9 +125,12 @@ NS_ASSUME_NONNULL_BEGIN
@param startTime The start time interval, e.g. 4:18
@param endTime The end time interval, e.g. 0:00
@param playPauseIndicator An optional audio indicator to change the play/pause button
+ @param forwardSeekIndicator - forwardSeekIndicator
+ @param backSeekIndicator - backSeekIndicator
+ @param countRate set the media playback timer, if `nil`, will default to 1.0
@return An object of SetMediaClockTimer
*/
-+ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:));
++ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate NS_SWIFT_NAME(countDown(from:to:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:));
/**
Pause an existing (counting up / down) media clock timer
@@ -105,7 +166,18 @@ NS_ASSUME_NONNULL_BEGIN
@param playPauseIndicator An optional audio indicator to change the play/pause button
@return An object of SetMediaClockTimer
*/
-+ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(resume(playPauseIndicator:));
++ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(resume(playPauseIndicator:)) __deprecated_msg("Use resumeWithPlayPauseIndicator:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:");
+
+/**
+ Resume a paused media clock timer. It resumes at the same time at which it was paused.
+
+ @param playPauseIndicator An optional audio indicator to change the play/pause button
+ @param forwardSeekIndicator - forwardSeekIndicator
+ @param backSeekIndicator - backSeekIndicator
+ @param countRate set the media playback timer
+ @return An object of SetMediaClockTimer, if `nil`, will default to 1.0
+ */
++ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate NS_SWIFT_NAME(resume(playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:));
/**
Remove a media clock timer from the screen
@@ -116,6 +188,12 @@ NS_ASSUME_NONNULL_BEGIN
+ (instancetype)clearWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(clear(playPauseIndicator:));
/**
+ * @param updateMode - updateMode
+ * @return A SDLSetMediaClockTimer object
+ */
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode;
+
+/**
Create a SetMediaClockTimer RPC with all available parameters. It's recommended to use the specific initializers above.
@param updateMode The type of SetMediaClockTimer RPC
@@ -124,7 +202,19 @@ NS_ASSUME_NONNULL_BEGIN
@param playPauseIndicator The display of the play/pause button
@return An object of SetMediaClockTimer
*/
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(init(updateMode:startTime:endTime:playPauseIndicator:));
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator NS_SWIFT_NAME(init(updateMode:startTime:endTime:playPauseIndicator:)) __deprecated_msg("Use initWithUpdateMode:startTime:endTime:audioStreamingIndicator:forwardSeekIndicator:backSeekIndicator:countRate: instead");
+
+/**
+ * @param updateMode - updateMode
+ * @param startTime - startTime
+ * @param endTime - endTime
+ * @param audioStreamingIndicator - audioStreamingIndicator
+ * @param forwardSeekIndicator - forwardSeekIndicator
+ * @param backSeekIndicator - backSeekIndicator
+ * @param countRate - countRate
+ * @return A SDLSetMediaClockTimer object
+ */
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime audioStreamingIndicator:(nullable SDLAudioStreamingIndicator)audioStreamingIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate;
/**
* A Start Time with specifying hour, minute, second values
@@ -169,6 +259,28 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (strong, nonatomic, nullable) SDLAudioStreamingIndicator audioStreamingIndicator;
+/**
+ * Used to control the forward seek button to either skip forward a set amount of time or to the next track.
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLSeekStreamingIndicator *forwardSeekIndicator;
+
+/**
+ * Used to control the back seek button to either skip back a set amount of time or to the previous track.
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLSeekStreamingIndicator *backSeekIndicator;
+
+/**
+ * The value of this parameter is the amount that the media clock timer will advance per 1.0 seconds of real time. Values less than 1.0 will therefore advance the timer slower than real-time, while values greater than 1.0 will advance the timer faster than real-time. e.g. If this parameter is set to `0.5`, the timer will advance one second per two seconds real-time, or at 50% speed. If this parameter is set to `2.0`, the timer will advance two seconds per one second real-time, or at 200% speed.
+ * {"num_min_value": 0.1, "num_max_value": 100.0, "default_value": 1.0}
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *countRate;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSetMediaClockTimer.m b/SmartDeviceLink/public/SDLSetMediaClockTimer.m
index bfbf77ec1..c50647782 100644
--- a/SmartDeviceLink/public/SDLSetMediaClockTimer.m
+++ b/SmartDeviceLink/public/SDLSetMediaClockTimer.m
@@ -22,61 +22,96 @@ NS_ASSUME_NONNULL_BEGIN
}
#pragma clang diagnostic pop
-- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode {
self = [self init];
- if (!self) { return nil; }
-
+ if (!self) {
+ return nil;
+ }
self.updateMode = updateMode;
+ return self;
+}
+
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [self initWithUpdateMode:updateMode startTime:startTime endTime:endTime audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
+}
+
+- (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime audioStreamingIndicator:(nullable SDLAudioStreamingIndicator)audioStreamingIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate {
+ self = [self initWithUpdateMode:updateMode];
+ if (!self) {
+ return nil;
+ }
self.startTime = startTime;
self.endTime = endTime;
- self.audioStreamingIndicator = playPauseIndicator;
-
+ self.audioStreamingIndicator = audioStreamingIndicator;
+ self.forwardSeekIndicator = forwardSeekIndicator;
+ self.backSeekIndicator = backSeekIndicator;
+ self.countRate = countRate;
return self;
}
+ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [self countUpFromStartTimeInterval:startTime toEndTimeInterval:endTime playPauseIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
+}
+
++ (instancetype)countUpFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate {
SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTimeRPC endTime:endTimeRPC audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:forwardSeekIndicator backSeekIndicator:backSeekIndicator countRate:countRate];
}
+ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
+ return [self countUpFromStartTime:startTime toEndTime:endTime playPauseIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
+}
+
++ (instancetype)countUpFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountUp startTime:startTime endTime:endTime audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:forwardSeekIndicator backSeekIndicator:backSeekIndicator countRate:countRate];
}
+ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
+ return [self countDownFromStartTimeInterval:startTime toEndTimeInterval:endTime playPauseIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
+}
+
++ (instancetype)countDownFromStartTimeInterval:(NSTimeInterval)startTime toEndTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate {
SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTimeRPC endTime:endTimeRPC audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:forwardSeekIndicator backSeekIndicator:backSeekIndicator countRate:countRate];
}
+ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
+ return [self countDownFromStartTime:startTime toEndTime:endTime playPauseIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
+}
+
++ (instancetype)countDownFromStartTime:(SDLStartTime *)startTime toEndTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeCountDown startTime:startTime endTime:endTime audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:forwardSeekIndicator backSeekIndicator:backSeekIndicator countRate:countRate];
}
+ (instancetype)pauseWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
+ return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:nil endTime:nil audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
}
+ (instancetype)updatePauseWithNewStartTimeInterval:(NSTimeInterval)startTime endTimeInterval:(NSTimeInterval)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
SDLStartTime *startTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:startTime];
SDLStartTime *endTimeRPC = [[SDLStartTime alloc] initWithTimeInterval:endTime];
- return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTimeRPC endTime:endTimeRPC playPauseIndicator:playPauseIndicator];
+ return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTimeRPC endTime:endTimeRPC audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
}
+ (instancetype)updatePauseWithNewStartTime:(SDLStartTime *)startTime endTime:(SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTime endTime:endTime playPauseIndicator:playPauseIndicator];
+ return [[self alloc] initWithUpdateMode:SDLUpdateModePause startTime:startTime endTime:endTime audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
}
+ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeResume startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
+ return [self resumeWithPlayPauseIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
+}
+
++ (instancetype)resumeWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator forwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator backSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator countRate:(nullable NSNumber<SDLFloat> *)countRate {
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeResume startTime:nil endTime:nil audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:forwardSeekIndicator backSeekIndicator:backSeekIndicator countRate:countRate];
}
+ (instancetype)clearWithPlayPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator {
- return [[self alloc] initWithUpdateMode:SDLUpdateModeClear startTime:nil endTime:nil playPauseIndicator:playPauseIndicator];
+ return [[self alloc] initWithUpdateMode:SDLUpdateModeClear startTime:nil endTime:nil audioStreamingIndicator:playPauseIndicator forwardSeekIndicator:nil backSeekIndicator:nil countRate:nil];
}
- (void)setStartTime:(nullable SDLStartTime *)startTime {
@@ -112,6 +147,30 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_enumForName:SDLRPCParameterNameAudioStreamingIndicator error:nil];
}
+- (void)setForwardSeekIndicator:(nullable SDLSeekStreamingIndicator *)forwardSeekIndicator {
+ [self.parameters sdl_setObject:forwardSeekIndicator forName:SDLRPCParameterNameForwardSeekIndicator];
+}
+
+- (nullable SDLSeekStreamingIndicator *)forwardSeekIndicator {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameForwardSeekIndicator ofClass:SDLSeekStreamingIndicator.class error:nil];
+}
+
+- (void)setBackSeekIndicator:(nullable SDLSeekStreamingIndicator *)backSeekIndicator {
+ [self.parameters sdl_setObject:backSeekIndicator forName:SDLRPCParameterNameBackSeekIndicator];
+}
+
+- (nullable SDLSeekStreamingIndicator *)backSeekIndicator {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameBackSeekIndicator ofClass:SDLSeekStreamingIndicator.class error:nil];
+}
+
+- (void)setCountRate:(nullable NSNumber<SDLFloat> *)countRate {
+ [self.parameters sdl_setObject:countRate forName:SDLRPCParameterNameCountRate];
+}
+
+- (nullable NSNumber<SDLFloat> *)countRate {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameCountRate ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLShow.h b/SmartDeviceLink/public/SDLShow.h
index 723e5fd83..9b0706ee9 100644
--- a/SmartDeviceLink/public/SDLShow.h
+++ b/SmartDeviceLink/public/SDLShow.h
@@ -45,7 +45,7 @@ NS_ASSUME_NONNULL_BEGIN
/// @param mainField2 The text displayed on the second display line
/// @param alignment The alignment that specifies how the text should be aligned on display
/// @return An SDLShow object
-- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment;
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment __deprecated_msg("Use initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaTrack:graphic:secondaryGraphic:softButtons:customPresets:metadataTags:templateTitle:windowID:templateConfiguration: instead");
/// Convenience init to set template elements with the following parameters
///
@@ -55,7 +55,7 @@ NS_ASSUME_NONNULL_BEGIN
/// @param mainField2Type Text field metadata types
/// @param alignment The alignment that specifies how the text should be aligned on display
/// @return An SDLShow object
-- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type alignment:(nullable SDLTextAlignment)alignment;
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type alignment:(nullable SDLTextAlignment)alignment __deprecated_msg("Use initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaTrack:graphic:secondaryGraphic:softButtons:customPresets:metadataTags:templateTitle:windowID:templateConfiguration: instead");
/// Convenience init to set template elements with the following parameters
///
@@ -65,7 +65,7 @@ NS_ASSUME_NONNULL_BEGIN
/// @param mainField4 The text displayed on the fourth display line
/// @param alignment The alignment that specifies how the text should be aligned on display
/// @return An SDLShow object
-- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment;
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment __deprecated_msg("Use initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaTrack:graphic:secondaryGraphic:softButtons:customPresets:metadataTags:templateTitle:windowID:templateConfiguration: instead");
/// Convenience init to set template elements with the following parameters
///
@@ -79,7 +79,7 @@ NS_ASSUME_NONNULL_BEGIN
/// @param mainField4Type Text field metadata types
/// @param alignment The alignment that specifies how the text should be aligned on display
/// @return An SDLShow object
-- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type mainField3:(nullable NSString *)mainField3 mainField3Type:(nullable SDLMetadataType)mainField3Type mainField4:(nullable NSString *)mainField4 mainField4Type:(nullable SDLMetadataType)mainField4Type alignment:(nullable SDLTextAlignment)alignment;
+- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type mainField3:(nullable NSString *)mainField3 mainField3Type:(nullable SDLMetadataType)mainField3Type mainField4:(nullable NSString *)mainField4 mainField4Type:(nullable SDLMetadataType)mainField4Type alignment:(nullable SDLTextAlignment)alignment __deprecated_msg("Use initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaTrack:graphic:secondaryGraphic:softButtons:customPresets:metadataTags:templateTitle:windowID:templateConfiguration: instead");
/// Convenience init to set template elements with the following parameters
///
@@ -90,7 +90,7 @@ NS_ASSUME_NONNULL_BEGIN
/// @param mediaClock The value for the mediaClock field
/// @param mediaTrack The text in the track field
/// @return An SDLShow object
-- (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 alignment:(nullable SDLTextAlignment)alignment statusBar:(nullable NSString *)statusBar mediaClock:(nullable NSString *)mediaClock mediaTrack:(nullable NSString *)mediaTrack __deprecated_msg("Use initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaTrack:graphic:secondaryGraphic:softButtons:customPresets:metadataTags:templateTitle:windowID:templateConfiguration: instead");
/// Convenience init to set template elements with the following parameters
///
@@ -107,7 +107,27 @@ NS_ASSUME_NONNULL_BEGIN
/// @param customPresets The custom presets defined by the App
/// @param metadata Text field metadata
/// @return An SDLShow object
-- (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;
+- (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 __deprecated_msg("Use initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaTrack:graphic:secondaryGraphic:softButtons:customPresets:metadataTags:templateTitle:windowID:templateConfiguration: instead");
+
+/**
+ * @param mainField1 - mainField1
+ * @param mainField2 - mainField2
+ * @param mainField3 - mainField3
+ * @param mainField4 - mainField4
+ * @param alignment - alignment
+ * @param statusBar - statusBar
+ * @param mediaTrack - mediaTrack
+ * @param graphic - graphic
+ * @param secondaryGraphic - secondaryGraphic
+ * @param softButtons - softButtons
+ * @param customPresets - customPresets
+ * @param metadataTags - metadataTags
+ * @param templateTitle - templateTitle
+ * @param windowID - windowID
+ * @param templateConfiguration - templateConfiguration
+ * @return A SDLShow object
+ */
+- (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 mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic secondaryGraphic:(nullable SDLImage *)secondaryGraphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets metadataTags:(nullable SDLMetadataTags *)metadataTags templateTitle:(nullable NSString *)templateTitle windowID:(nullable NSNumber<SDLInt> *)windowID templateConfiguration:(nullable SDLTemplateConfiguration *)templateConfiguration;
/**
* The text displayed in a single-line display, or in the upper display
@@ -215,23 +235,15 @@ NS_ASSUME_NONNULL_BEGIN
* </ul>
*/
@property (strong, nonatomic, nullable) NSString *statusBar;
+
/**
- * This property is deprecated use SetMediaClockTimer instead.
- * <p> The value for the MediaClock field using a format described in the
- * MediaClockFormat enumeration
+ * Text value for MediaClock field. Has to be properly formatted by Mobile App according to the module's capabilities. If this text is set, any automatic media clock updates previously set with SetMediaClockTimer will be stopped.
+ * {"string_min_length": 0, "string_max_length": 500}
*
- * @discussion A String value for the MediaClock
- * <p>
- * <b>Notes: </b><br/>
- * <ul>
- * <li>Must be properly formatted as described in the
- * MediaClockFormat enumeration</li>
- * <li>If a value of five spaces is provided, this will clear
- * that field on the display (i.e. the media clock timer field
- * will not display anything)</li>
- * </ul>
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 1.0.0
*/
-@property (strong, nonatomic, nullable) NSString *mediaClock;
+@property (strong, nonatomic, nullable) NSString *mediaClock __deprecated;
/**
* The text in the track field
*
diff --git a/SmartDeviceLink/public/SDLShow.m b/SmartDeviceLink/public/SDLShow.m
index c42295dd1..e6234546f 100644
--- a/SmartDeviceLink/public/SDLShow.m
+++ b/SmartDeviceLink/public/SDLShow.m
@@ -27,51 +27,29 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic pop
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment {
- return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment];
+ return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:nil templateTitle:nil windowID:nil templateConfiguration:nil];;
}
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type alignment:(nullable SDLTextAlignment)alignment {
- self = [self init];
- if (!self) {
- return nil;
- }
-
NSArray<SDLMetadataType> *field1Array = mainField1Type ? @[mainField1Type] : nil;
NSArray<SDLMetadataType> *field2Array = mainField2Type ? @[mainField2Type] : nil;
SDLMetadataTags* metadataTags = (field1Array != nil || field2Array != nil) ? [[SDLMetadataTags alloc] initWithTextFieldTypes:field1Array mainField2:field2Array] : nil;
- self.mainField1 = mainField1;
- self.mainField2 = mainField2;
- self.alignment = alignment;
- self.metadataTags = metadataTags;
-
- return self;
+ return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:metadataTags templateTitle:nil windowID:nil templateConfiguration:nil];
}
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 mainField3:(nullable NSString *)mainField3 mainField4:(nullable NSString *)mainField4 alignment:(nullable SDLTextAlignment)alignment {
- return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:mainField3 mainField4:mainField4 alignment:alignment statusBar:nil mediaClock:nil mediaTrack:nil graphic:nil softButtons:nil customPresets:nil textFieldMetadata:nil];
+ return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:mainField3 mainField4:mainField4 alignment:alignment statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:nil templateTitle:nil windowID:nil templateConfiguration:nil];;
}
- (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField1Type:(nullable SDLMetadataType)mainField1Type mainField2:(nullable NSString *)mainField2 mainField2Type:(nullable SDLMetadataType)mainField2Type mainField3:(nullable NSString *)mainField3 mainField3Type:(nullable SDLMetadataType)mainField3Type mainField4:(nullable NSString *)mainField4 mainField4Type:(nullable SDLMetadataType)mainField4Type alignment:(nullable SDLTextAlignment)alignment {
- self = [self init];
- if (!self) {
- return nil;
- }
-
NSArray<SDLMetadataType> *field1Array = mainField1Type ? @[mainField1Type] : nil;
NSArray<SDLMetadataType> *field2Array = mainField2Type ? @[mainField2Type] : nil;
NSArray<SDLMetadataType> *field3Array = mainField3Type ? @[mainField3Type] : nil;
NSArray<SDLMetadataType> *field4Array = mainField4Type ? @[mainField4Type] : nil;
SDLMetadataTags* metadataTags = (field1Array != nil || field2Array != nil || field3Array != nil || field4Array != nil) ? [[SDLMetadataTags alloc] initWithTextFieldTypes:field1Array mainField2:field2Array mainField3:field3Array mainField4:field4Array] : nil;
- self.mainField1 = mainField1;
- self.mainField2 = mainField2;
- self.mainField3 = mainField3;
- self.mainField4 = mainField4;
- self.alignment = alignment;
- self.metadataTags = metadataTags;
-
- return self;
+ return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:mainField3 mainField4:mainField4 alignment:alignment statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:metadataTags templateTitle:nil windowID:nil templateConfiguration:nil];
}
- (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 {
@@ -79,6 +57,17 @@ NS_ASSUME_NONNULL_BEGIN
}
- (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 initWithMainField1:mainField1 mainField2:mainField2 mainField3:mainField3 mainField4:mainField4 alignment:alignment statusBar:statusBar mediaTrack:mediaTrack graphic:graphic secondaryGraphic:nil softButtons:softButtons customPresets:customPresets metadataTags:metadata templateTitle:nil windowID:nil templateConfiguration:nil];
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.mediaClock = mediaClock;
+#pragma clang diagnostic pop
+
+ 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 mediaTrack:(nullable NSString *)mediaTrack graphic:(nullable SDLImage *)graphic secondaryGraphic:(nullable SDLImage *)secondaryGraphic softButtons:(nullable NSArray<SDLSoftButton *> *)softButtons customPresets:(nullable NSArray<NSString *> *)customPresets metadataTags:(nullable SDLMetadataTags *)metadataTags templateTitle:(nullable NSString *)templateTitle windowID:(nullable NSNumber<SDLInt> *)windowID templateConfiguration:(nullable SDLTemplateConfiguration *)templateConfiguration {
self = [self init];
if (!self) {
return nil;
@@ -88,17 +77,19 @@ NS_ASSUME_NONNULL_BEGIN
self.mainField2 = mainField2;
self.mainField3 = mainField3;
self.mainField4 = mainField4;
+ self.alignment = alignment;
self.statusBar = statusBar;
- self.mediaClock = mediaClock;
self.mediaTrack = mediaTrack;
- self.alignment = alignment;
self.graphic = graphic;
- self.softButtons = [softButtons mutableCopy];
- self.customPresets = [customPresets mutableCopy];
- self.metadataTags = metadata;
+ self.secondaryGraphic = secondaryGraphic;
+ self.softButtons = softButtons;
+ self.customPresets = customPresets;
+ self.metadataTags = metadataTags;
+ self.templateTitle = templateTitle;
+ self.windowID = windowID;
+ self.templateConfiguration = templateConfiguration;
return self;
-
}
- (void)setMainField1:(nullable NSString *)mainField1 {
diff --git a/SmartDeviceLink/public/SDLShowConstantTBT.h b/SmartDeviceLink/public/SDLShowConstantTBT.h
index 3ac01780d..b45774838 100644
--- a/SmartDeviceLink/public/SDLShowConstantTBT.h
+++ b/SmartDeviceLink/public/SDLShowConstantTBT.h
@@ -25,8 +25,8 @@ NS_ASSUME_NONNULL_BEGIN
/// @param totalDistance The distance to the final destination
/// @param turnIcon An icon to show with the turn description
/// @param nextTurnIcon An icon to show with the next turn description
-/// @param distanceToManeuver Fraction of distance till next maneuver
-/// @param distanceToManeuverScale Distance till next maneuver
+/// @param distanceToManeuver Distance (in meters) until next maneuver.
+/// @param distanceToManeuverScale Distance (in meters) from previous maneuver to next maneuver.
/// @param maneuverComplete If and when a maneuver has completed while an AlertManeuver is active, the app must send this value set to TRUE in order to clear the AlertManeuver overlay. If omitted the value will be assumed as FALSE
/// @param softButtons Three dynamic SoftButtons available (first SoftButton is fixed to "Turns")
/// @return An SDLShowConstantTBT object
@@ -86,14 +86,14 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic, nullable) SDLImage *nextTurnIcon;
/**
- * Fraction of distance till next maneuver (starting from when AlertManeuver is triggered). Used to calculate progress bar.
+ * Distance (in meters) until next maneuver. May be used to calculate progress bar.
*
* Optional, Float, 0 - 1,000,000,000
*/
@property (strong, nonatomic, nullable) NSNumber<SDLFloat> *distanceToManeuver;
/**
- * Distance till next maneuver (starting from) from previous maneuver. Used to calculate progress bar.
+ * Distance (in meters) from previous maneuver to next maneuver. May be used to calculate progress bar.
*
* Optional, Float, 0 - 1,000,000,000
*/
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleData.h b/SmartDeviceLink/public/SDLSubscribeVehicleData.h
index 27c830199..053c8c68c 100644
--- a/SmartDeviceLink/public/SDLSubscribeVehicleData.h
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleData.h
@@ -53,7 +53,7 @@ NS_ASSUME_NONNULL_BEGIN
* @param wiperStatus Subscribe to wiperStatus
* @return A SDLSubscribeVehicleData object
*/
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus: instead");
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
/**
* Convenience init for subscribing to all possible vehicle data items.
@@ -90,7 +90,45 @@ NS_ASSUME_NONNULL_BEGIN
* @param windowStatus - windowStatus
* @return A SDLSubscribeVehicleData object
*/
-- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus;
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
+
+/**
+ * Convenience init for subscribing to all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param climateData - climateData
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param windowStatus - windowStatus
+ * @param handsOffSteering - handsOffSteering
+ * @param seatOccupancy - seatOccupancy
+ * @return A SDLSubscribeVehicleData object
+ */
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange climateData:(nullable NSNumber<SDLBool> *)climateData turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey windowStatus:(nullable NSNumber<SDLBool> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy;
/**
* See GearStatus
@@ -135,9 +173,19 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic, nullable) NSNumber<SDLBool> *instantFuelConsumption;
/**
- * A boolean value. If true, subscribes External Temperature data.
+ * See ClimateData
+ *
+ * @added in SmartDeviceLink 7.1.0
*/
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *externalTemperature;
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *climateData;
+
+/**
+ * The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *externalTemperature __deprecated_msg("Use climateData instead on 7.1+ RPC version connections");
/**
* See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
@@ -284,6 +332,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+/**
+ * See SeatOccupancy
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *seatOccupancy;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleData.m b/SmartDeviceLink/public/SDLSubscribeVehicleData.m
index 0e8b39c53..d63fe65e6 100644
--- a/SmartDeviceLink/public/SDLSubscribeVehicleData.m
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleData.m
@@ -24,19 +24,32 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic pop
- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
- self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) externalTemperature:@(externalTemperature) turnSignal:@(turnSignal) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accelerationPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) handsOffSteering:nil windowStatus:nil];
+ self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) climateData:nil turnSignal:@(turnSignal) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:nil steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) windowStatus:nil handsOffSteering:nil seatOccupancy:nil];
if (self) {
+ self.accPedalPosition = @(accelerationPedalPosition);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
self.fuelLevel = @(fuelLevel);
self.fuelLevel_State = @(fuelLevelState);
self.prndl = @(prndl);
+ self.externalTemperature = @(externalTemperature);
#pragma clang diagnostic pop
}
return self;
}
- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ self = [self initWithGps:gps speed:speed rpm:rpm instantFuelConsumption:instantFuelConsumption fuelRange:fuelRange climateData:nil turnSignal:turnSignal gearStatus:gearStatus tirePressure:tirePressure odometer:odometer beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:engineTorque accPedalPosition:accPedalPosition steeringWheelAngle:steeringWheelAngle engineOilLife:engineOilLife electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey windowStatus:windowStatus handsOffSteering:handsOffSteering seatOccupancy:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.externalTemperature = externalTemperature;
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange climateData:(nullable NSNumber<SDLBool> *)climateData turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey windowStatus:(nullable NSNumber<SDLBool> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy {
self = [self init];
if (!self) {
return nil;
@@ -46,7 +59,7 @@ NS_ASSUME_NONNULL_BEGIN
self.rpm = rpm;
self.instantFuelConsumption = instantFuelConsumption;
self.fuelRange = fuelRange;
- self.externalTemperature = externalTemperature;
+ self.climateData = climateData;
self.turnSignal = turnSignal;
self.gearStatus = gearStatus;
self.tirePressure = tirePressure;
@@ -69,8 +82,9 @@ NS_ASSUME_NONNULL_BEGIN
self.emergencyEvent = emergencyEvent;
self.clusterModeStatus = clusterModeStatus;
self.myKey = myKey;
- self.handsOffSteering = handsOffSteering;
self.windowStatus = windowStatus;
+ self.handsOffSteering = handsOffSteering;
+ self.seatOccupancy = seatOccupancy;
return self;
}
@@ -138,6 +152,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
}
+- (void)setClimateData:(nullable NSNumber<SDLBool> *)climateData {
+ [self.parameters sdl_setObject:climateData forName:SDLRPCParameterNameClimateData];
+}
+
+- (nullable NSNumber<SDLBool> *)climateData {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClimateData ofClass:NSNumber.class error:nil];
+}
+
- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
[self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
}
@@ -348,6 +370,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
}
+- (void)setSeatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy {
+ [self.parameters sdl_setObject:seatOccupancy forName:SDLRPCParameterNameSeatOccupancy];
+}
+
+- (nullable NSNumber<SDLBool> *)seatOccupancy {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSeatOccupancy ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h
index 5e37053d8..de02ed1ef 100644
--- a/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.h
@@ -51,7 +51,46 @@ NS_ASSUME_NONNULL_BEGIN
* @param windowStatus - windowStatus
* @return A SDLSubscribeVehicleDataResponse object
*/
-- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus;
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
+
+
+/**
+ * Convenience init for setting all possible values on vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param climateData - climateData
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModes - clusterModes
+ * @param myKey - myKey
+ * @param windowStatus - windowStatus
+ * @param handsOffSteering - handsOffSteering
+ * @param seatOccupancy - seatOccupancy
+ * @return A SDLSubscribeVehicleDataResponse object
+ */
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange climateData:(nullable SDLVehicleDataResult *)climateData turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey windowStatus:(nullable SDLVehicleDataResult *)windowStatus handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering seatOccupancy:(nullable SDLVehicleDataResult *)seatOccupancy;
/**
* See GearStatus
@@ -110,11 +149,19 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic, nullable) SDLVehicleDataResult *instantFuelConsumption;
/**
- The result of requesting to subscribe to the external temperature in degrees celsius.
+ * See ClimateData
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLVehicleDataResult *climateData;
- Optional
+/**
+ * The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
*/
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *externalTemperature;
+@property (nullable, strong, nonatomic) SDLVehicleDataResult *externalTemperature __deprecated_msg("Use climateData instead on 7.1+ RPC version connections");
/**
* See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
@@ -301,6 +348,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+/**
+ * See SeatOccupancy
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLVehicleDataResult *seatOccupancy;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m
index 332847ed6..3ee8eab91 100644
--- a/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m
+++ b/SmartDeviceLink/public/SDLSubscribeVehicleDataResponse.m
@@ -25,6 +25,18 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic pop
- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus {
+
+ self = [self initWithGps:gps speed:speed rpm:rpm instantFuelConsumption:instantFuelConsumption fuelRange:fuelRange climateData:nil turnSignal:turnSignal gearStatus:gearStatus tirePressure:tirePressure odometer:odometer beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:engineTorque accPedalPosition:accPedalPosition steeringWheelAngle:steeringWheelAngle engineOilLife:engineOilLife electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModes:clusterModes myKey:myKey windowStatus:windowStatus handsOffSteering:handsOffSteering seatOccupancy:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.externalTemperature = externalTemperature;
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange climateData:(nullable SDLVehicleDataResult *)climateData turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey windowStatus:(nullable SDLVehicleDataResult *)windowStatus handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering seatOccupancy:(nullable SDLVehicleDataResult *)seatOccupancy {
self = [self init];
if (!self) {
return nil;
@@ -34,7 +46,7 @@ NS_ASSUME_NONNULL_BEGIN
self.rpm = rpm;
self.instantFuelConsumption = instantFuelConsumption;
self.fuelRange = fuelRange;
- self.externalTemperature = externalTemperature;
+ self.climateData = climateData;
self.turnSignal = turnSignal;
self.gearStatus = gearStatus;
self.tirePressure = tirePressure;
@@ -57,8 +69,9 @@ NS_ASSUME_NONNULL_BEGIN
self.emergencyEvent = emergencyEvent;
self.clusterModes = clusterModes;
self.myKey = myKey;
- self.handsOffSteering = handsOffSteering;
self.windowStatus = windowStatus;
+ self.handsOffSteering = handsOffSteering;
+ self.seatOccupancy = seatOccupancy;
return self;
}
@@ -126,6 +139,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil];
}
+- (void)setClimateData:(nullable SDLVehicleDataResult *)climateData {
+ [self.parameters sdl_setObject:climateData forName:SDLRPCParameterNameClimateData];
+}
+
+- (nullable SDLVehicleDataResult *)climateData {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClimateData ofClass:SDLVehicleDataResult.class error:nil];
+}
+
- (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature {
[self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
}
@@ -336,6 +357,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
}
+- (void)setSeatOccupancy:(nullable SDLVehicleDataResult *)seatOccupancy {
+ [self.parameters sdl_setObject:seatOccupancy forName:SDLRPCParameterNameSeatOccupancy];
+}
+
+- (nullable SDLVehicleDataResult *)seatOccupancy {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSeatOccupancy ofClass:SDLVehicleDataResult.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLTextFieldName.h b/SmartDeviceLink/public/SDLTextFieldName.h
index 3b0b1da6a..b0193021d 100644
--- a/SmartDeviceLink/public/SDLTextFieldName.h
+++ b/SmartDeviceLink/public/SDLTextFieldName.h
@@ -81,8 +81,11 @@ extern SDLTextFieldName const SDLTextFieldNameStatusBar;
* Text value for MediaClock field. Must be properly formatted according to MediaClockFormat. Applies to SDLShow.
*
* @discussion This field is commonly used to show elapsed or remaining time in an audio track or audio capture.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 1.0.0
*/
-extern SDLTextFieldName const SDLTextFieldNameMediaClock;
+extern SDLTextFieldName const SDLTextFieldNameMediaClock __deprecated;
/**
* The track field of NGN type ACMs. This field is only available for media applications on a NGN display. Applies to SDLShow.
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleData.h b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.h
index 57acba53d..04b08cf29 100644
--- a/SmartDeviceLink/public/SDLUnsubscribeVehicleData.h
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.h
@@ -55,7 +55,7 @@ NS_ASSUME_NONNULL_BEGIN
* @param wiperStatus Unsubscribe to wiperStatus
* @return A SDLUnsubscribeVehicleData object
*/
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus: instead");
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
/**
* Convenience init for unsubscribing from all possible vehicle data items.
@@ -92,7 +92,45 @@ NS_ASSUME_NONNULL_BEGIN
* @param windowStatus - windowStatus
* @return A SDLUnsubscribeVehicleData object
*/
-- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus;
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
+
+/**
+ * Convenience init for unsubscribing from all possible vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param climateData - climateData
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModeStatus - clusterModeStatus
+ * @param myKey - myKey
+ * @param windowStatus - windowStatus
+ * @param handsOffSteering - handsOffSteering
+ * @param seatOccupancy - seatOccupancy
+ * @return A SDLUnsubscribeVehicleData object
+ */
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange climateData:(nullable NSNumber<SDLBool> *)climateData turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey windowStatus:(nullable NSNumber<SDLBool> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy;
/**
* See GearStatus
@@ -137,9 +175,19 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic, nullable) NSNumber<SDLBool> *instantFuelConsumption;
/**
- * If true, unsubscribes from External Temperature
+ * See ClimateData
+ *
+ * @added in SmartDeviceLink 7.1.0
*/
-@property (strong, nonatomic, nullable) NSNumber<SDLBool> *externalTemperature;
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *climateData;
+
+/**
+ * The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *externalTemperature __deprecated_msg("Use climateData instead on 7.1+ RPC version connections");
/**
* See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
@@ -286,6 +334,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (nullable NSNumber<SDLBool> *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+/**
+ * See SeatOccupancy
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLBool> *seatOccupancy;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleData.m b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.m
index 217c23ce5..569d5bcfb 100644
--- a/SmartDeviceLink/public/SDLUnsubscribeVehicleData.m
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleData.m
@@ -23,20 +23,32 @@ NS_ASSUME_NONNULL_BEGIN
}
#pragma clang diagnostic pop
-- (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
- self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) externalTemperature:@(externalTemperature) turnSignal:@(turnSignal) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accelerationPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) handsOffSteering:nil windowStatus:nil];
+- (instancetype)initWithAccelerationPedalPosition:(BOOL)accPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation cloudAppVehicleID:(BOOL)cloudAppVehicleID clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo electronicParkBrakeStatus:(BOOL)electronicParkBrakeStatus emergencyEvent:(BOOL)emergencyEvent engineOilLife:(BOOL)engineOilLife engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState fuelRange:(BOOL)fuelRange gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure turnSignal:(BOOL)turnSignal wiperStatus:(BOOL)wiperStatus {
+ self = [self initWithGps:@(gps) speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:@(fuelRange) climateData:nil turnSignal:@(turnSignal) gearStatus:nil tirePressure:@(tirePressure) odometer:@(odometer) beltStatus:@(beltStatus) bodyInformation:@(bodyInformation) deviceStatus:@(deviceStatus) driverBraking:@(driverBraking) wiperStatus:@(wiperStatus) headLampStatus:@(headLampStatus) engineTorque:@(engineTorque) accPedalPosition:@(accPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:@(electronicParkBrakeStatus) cloudAppVehicleID:@(cloudAppVehicleID) stabilityControlsStatus:nil eCallInfo:@(eCallInfo) airbagStatus:@(airbagStatus) emergencyEvent:@(emergencyEvent) clusterModeStatus:@(clusterModeStatus) myKey:@(myKey) windowStatus:nil handsOffSteering:nil seatOccupancy:nil];
if (self) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
self.fuelLevel = @(fuelLevel);
self.fuelLevel_State = @(fuelLevelState);
self.prndl = @(prndl);
+ self.externalTemperature = @(externalTemperature);
#pragma clang diagnostic pop
}
return self;
}
- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange externalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering windowStatus:(nullable NSNumber<SDLBool> *)windowStatus {
+ self = [self initWithGps:gps speed:speed rpm:rpm instantFuelConsumption:instantFuelConsumption fuelRange:fuelRange climateData:nil turnSignal:turnSignal gearStatus:gearStatus tirePressure:tirePressure odometer:odometer beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:engineTorque accPedalPosition:accPedalPosition steeringWheelAngle:steeringWheelAngle engineOilLife:engineOilLife electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey windowStatus:windowStatus handsOffSteering:handsOffSteering seatOccupancy:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.externalTemperature = externalTemperature;
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable NSNumber<SDLBool> *)gps speed:(nullable NSNumber<SDLBool> *)speed rpm:(nullable NSNumber<SDLBool> *)rpm instantFuelConsumption:(nullable NSNumber<SDLBool> *)instantFuelConsumption fuelRange:(nullable NSNumber<SDLBool> *)fuelRange climateData:(nullable NSNumber<SDLBool> *)climateData turnSignal:(nullable NSNumber<SDLBool> *)turnSignal gearStatus:(nullable NSNumber<SDLBool> *)gearStatus tirePressure:(nullable NSNumber<SDLBool> *)tirePressure odometer:(nullable NSNumber<SDLBool> *)odometer beltStatus:(nullable NSNumber<SDLBool> *)beltStatus bodyInformation:(nullable NSNumber<SDLBool> *)bodyInformation deviceStatus:(nullable NSNumber<SDLBool> *)deviceStatus driverBraking:(nullable NSNumber<SDLBool> *)driverBraking wiperStatus:(nullable NSNumber<SDLBool> *)wiperStatus headLampStatus:(nullable NSNumber<SDLBool> *)headLampStatus engineTorque:(nullable NSNumber<SDLBool> *)engineTorque accPedalPosition:(nullable NSNumber<SDLBool> *)accPedalPosition steeringWheelAngle:(nullable NSNumber<SDLBool> *)steeringWheelAngle engineOilLife:(nullable NSNumber<SDLBool> *)engineOilLife electronicParkBrakeStatus:(nullable NSNumber<SDLBool> *)electronicParkBrakeStatus cloudAppVehicleID:(nullable NSNumber<SDLBool> *)cloudAppVehicleID stabilityControlsStatus:(nullable NSNumber<SDLBool> *)stabilityControlsStatus eCallInfo:(nullable NSNumber<SDLBool> *)eCallInfo airbagStatus:(nullable NSNumber<SDLBool> *)airbagStatus emergencyEvent:(nullable NSNumber<SDLBool> *)emergencyEvent clusterModeStatus:(nullable NSNumber<SDLBool> *)clusterModeStatus myKey:(nullable NSNumber<SDLBool> *)myKey windowStatus:(nullable NSNumber<SDLBool> *)windowStatus handsOffSteering:(nullable NSNumber<SDLBool> *)handsOffSteering seatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy {
self = [self init];
if (!self) {
return nil;
@@ -46,7 +58,7 @@ NS_ASSUME_NONNULL_BEGIN
self.rpm = rpm;
self.instantFuelConsumption = instantFuelConsumption;
self.fuelRange = fuelRange;
- self.externalTemperature = externalTemperature;
+ self.climateData = climateData;
self.turnSignal = turnSignal;
self.gearStatus = gearStatus;
self.tirePressure = tirePressure;
@@ -69,8 +81,9 @@ NS_ASSUME_NONNULL_BEGIN
self.emergencyEvent = emergencyEvent;
self.clusterModeStatus = clusterModeStatus;
self.myKey = myKey;
- self.handsOffSteering = handsOffSteering;
self.windowStatus = windowStatus;
+ self.handsOffSteering = handsOffSteering;
+ self.seatOccupancy = seatOccupancy;
return self;
}
@@ -138,6 +151,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil];
}
+- (void)setClimateData:(nullable NSNumber<SDLBool> *)climateData {
+ [self.parameters sdl_setObject:climateData forName:SDLRPCParameterNameClimateData];
+}
+
+- (nullable NSNumber<SDLBool> *)climateData {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClimateData ofClass:NSNumber.class error:nil];
+}
+
- (void)setExternalTemperature:(nullable NSNumber<SDLBool> *)externalTemperature {
[self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
}
@@ -348,6 +369,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:vehicleDataName ofClass:NSNumber.class error:nil];
}
+- (void)setSeatOccupancy:(nullable NSNumber<SDLBool> *)seatOccupancy {
+ [self.parameters sdl_setObject:seatOccupancy forName:SDLRPCParameterNameSeatOccupancy];
+}
+
+- (nullable NSNumber<SDLBool> *)seatOccupancy {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSeatOccupancy ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h
index cbc79afc3..1d5c1ae81 100644
--- a/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.h
@@ -50,7 +50,45 @@ NS_ASSUME_NONNULL_BEGIN
* @param windowStatus - windowStatus
* @return A SDLUnsubscribeVehicleDataResponse object
*/
-- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus;
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus __deprecated_msg("Use initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:windowStatus:handsOffSteering:seatOccupancy: instead");
+
+/**
+ * Convenience init for setting all possible values on vehicle data items.
+ *
+ * @param gps - gps
+ * @param speed - speed
+ * @param rpm - rpm
+ * @param instantFuelConsumption - instantFuelConsumption
+ * @param fuelRange - fuelRange
+ * @param climateData - climateData
+ * @param turnSignal - turnSignal
+ * @param gearStatus - gearStatus
+ * @param tirePressure - tirePressure
+ * @param odometer - odometer
+ * @param beltStatus - beltStatus
+ * @param bodyInformation - bodyInformation
+ * @param deviceStatus - deviceStatus
+ * @param driverBraking - driverBraking
+ * @param wiperStatus - wiperStatus
+ * @param headLampStatus - headLampStatus
+ * @param engineTorque - engineTorque
+ * @param accPedalPosition - accPedalPosition
+ * @param steeringWheelAngle - steeringWheelAngle
+ * @param engineOilLife - engineOilLife
+ * @param electronicParkBrakeStatus - electronicParkBrakeStatus
+ * @param cloudAppVehicleID - cloudAppVehicleID
+ * @param stabilityControlsStatus - stabilityControlsStatus
+ * @param eCallInfo - eCallInfo
+ * @param airbagStatus - airbagStatus
+ * @param emergencyEvent - emergencyEvent
+ * @param clusterModes - clusterModes
+ * @param myKey - myKey
+ * @param windowStatus - windowStatus
+ * @param handsOffSteering - handsOffSteering
+ * @param seatOccupancy - seatOccupancy
+ * @return A SDLUnsubscribeVehicleDataResponse object
+ */
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange climateData:(nullable SDLVehicleDataResult *)climateData turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey windowStatus:(nullable SDLVehicleDataResult *)windowStatus handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering seatOccupancy:(nullable SDLVehicleDataResult *)seatOccupancy;
/**
* See GearStatus
@@ -109,11 +147,19 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic, nullable) SDLVehicleDataResult *instantFuelConsumption;
/**
- The result of requesting to unsubscribe to the external temperature in degrees celsius.
+ * See ClimateData
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *climateData;
- Optional
+/**
+ * The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.
+ *
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
*/
-@property (strong, nonatomic, nullable) SDLVehicleDataResult *externalTemperature;
+@property (strong, nonatomic, nullable) SDLVehicleDataResult *externalTemperature __deprecated_msg("use climateData instead on 7.1+ RPC version connections");
/**
* See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`
@@ -300,6 +346,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (nullable SDLVehicleDataResult *)getOEMCustomVehicleData:(NSString *)vehicleDataName;
+/**
+ * See SeatOccupancy
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) SDLVehicleDataResult *seatOccupancy;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m
index 3a44257e1..5fd1af7b5 100644
--- a/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m
+++ b/SmartDeviceLink/public/SDLUnsubscribeVehicleDataResponse.m
@@ -25,6 +25,17 @@ NS_ASSUME_NONNULL_BEGIN
#pragma clang diagnostic pop
- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange externalTemperature:(nullable SDLVehicleDataResult *)externalTemperature turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering windowStatus:(nullable SDLVehicleDataResult *)windowStatus {
+ self = [self initWithGps:gps speed:speed rpm:rpm instantFuelConsumption:instantFuelConsumption fuelRange:fuelRange climateData:nil turnSignal:turnSignal gearStatus:gearStatus tirePressure:tirePressure odometer:odometer beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:engineTorque accPedalPosition:accPedalPosition steeringWheelAngle:steeringWheelAngle engineOilLife:engineOilLife electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModes:clusterModes myKey:myKey windowStatus:windowStatus handsOffSteering:handsOffSteering seatOccupancy:nil];
+ if (self) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ self.externalTemperature = externalTemperature;
+#pragma clang diagnostic pop
+ }
+ return self;
+}
+
+- (instancetype)initWithGps:(nullable SDLVehicleDataResult *)gps speed:(nullable SDLVehicleDataResult *)speed rpm:(nullable SDLVehicleDataResult *)rpm instantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption fuelRange:(nullable SDLVehicleDataResult *)fuelRange climateData:(nullable SDLVehicleDataResult *)climateData turnSignal:(nullable SDLVehicleDataResult *)turnSignal gearStatus:(nullable SDLVehicleDataResult *)gearStatus tirePressure:(nullable SDLVehicleDataResult *)tirePressure odometer:(nullable SDLVehicleDataResult *)odometer beltStatus:(nullable SDLVehicleDataResult *)beltStatus bodyInformation:(nullable SDLVehicleDataResult *)bodyInformation deviceStatus:(nullable SDLVehicleDataResult *)deviceStatus driverBraking:(nullable SDLVehicleDataResult *)driverBraking wiperStatus:(nullable SDLVehicleDataResult *)wiperStatus headLampStatus:(nullable SDLVehicleDataResult *)headLampStatus engineTorque:(nullable SDLVehicleDataResult *)engineTorque accPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition steeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle engineOilLife:(nullable SDLVehicleDataResult *)engineOilLife electronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus cloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID stabilityControlsStatus:(nullable SDLVehicleDataResult *)stabilityControlsStatus eCallInfo:(nullable SDLVehicleDataResult *)eCallInfo airbagStatus:(nullable SDLVehicleDataResult *)airbagStatus emergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent clusterModes:(nullable SDLVehicleDataResult *)clusterModes myKey:(nullable SDLVehicleDataResult *)myKey windowStatus:(nullable SDLVehicleDataResult *)windowStatus handsOffSteering:(nullable SDLVehicleDataResult *)handsOffSteering seatOccupancy:(nullable SDLVehicleDataResult *)seatOccupancy {
self = [self init];
if (!self) {
return nil;
@@ -34,7 +45,7 @@ NS_ASSUME_NONNULL_BEGIN
self.rpm = rpm;
self.instantFuelConsumption = instantFuelConsumption;
self.fuelRange = fuelRange;
- self.externalTemperature = externalTemperature;
+ self.climateData = climateData;
self.turnSignal = turnSignal;
self.gearStatus = gearStatus;
self.tirePressure = tirePressure;
@@ -57,8 +68,9 @@ NS_ASSUME_NONNULL_BEGIN
self.emergencyEvent = emergencyEvent;
self.clusterModes = clusterModes;
self.myKey = myKey;
- self.handsOffSteering = handsOffSteering;
self.windowStatus = windowStatus;
+ self.handsOffSteering = handsOffSteering;
+ self.seatOccupancy = seatOccupancy;
return self;
}
@@ -127,6 +139,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil];
}
+- (void)setClimateData:(nullable SDLVehicleDataResult *)climateData {
+ [self.parameters sdl_setObject:climateData forName:SDLRPCParameterNameClimateData];
+}
+
+- (nullable SDLVehicleDataResult *)climateData {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameClimateData ofClass:SDLVehicleDataResult.class error:nil];
+}
+
- (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature {
[self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature];
}
@@ -337,6 +357,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.parameters sdl_objectForName:vehicleDataName ofClass:SDLVehicleDataResult.class error:nil];
}
+- (void)setSeatOccupancy:(nullable SDLVehicleDataResult *)seatOccupancy {
+ [self.parameters sdl_setObject:seatOccupancy forName:SDLRPCParameterNameSeatOccupancy];
+}
+
+- (nullable SDLVehicleDataResult *)seatOccupancy {
+ return [self.parameters sdl_objectForName:SDLRPCParameterNameSeatOccupancy ofClass:SDLVehicleDataResult.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLVehicleDataType.h b/SmartDeviceLink/public/SDLVehicleDataType.h
index 3426695d0..615ea03c4 100644
--- a/SmartDeviceLink/public/SDLVehicleDataType.h
+++ b/SmartDeviceLink/public/SDLVehicleDataType.h
@@ -51,9 +51,16 @@ extern SDLVehicleDataType const SDLVehicleDataTypeFuelLevelState __deprecated_ms
extern SDLVehicleDataType const SDLVehicleDataTypeFuelConsumption;
/**
- Vehicle external temperature data
+ * Vehicle external temperature data
+ * @deprecated in SmartDeviceLink 7.1.0
+ * @added in SmartDeviceLink 2.0.0
*/
-extern SDLVehicleDataType const SDLVehicleDataTypeExternalTemperature;
+extern SDLVehicleDataType const SDLVehicleDataTypeExternalTemperature __deprecated_msg("Use SDLVehicleDataTypeVehicleDataClimateData instead on 7.1+ RPC version connections");
+
+/**
+ * @added in SmartDeviceLink 7.1.0
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeVehicleDataClimateData;
/**
Vehicle VIN data
@@ -194,3 +201,8 @@ extern SDLVehicleDataType const SDLVehicleDataTypeOEMVehicleDataType;
* @since SDL 7.0
*/
extern SDLVehicleDataType const SDLVehicleDataTypeWindowStatus;
+
+/**
+ * @added in SmartDeviceLink 7.1.0
+ */
+extern SDLVehicleDataType const SDLVehicleDataTypeSeatOccupancy;
diff --git a/SmartDeviceLink/public/SDLVehicleDataType.m b/SmartDeviceLink/public/SDLVehicleDataType.m
index 90bf95888..a78eca1ca 100644
--- a/SmartDeviceLink/public/SDLVehicleDataType.m
+++ b/SmartDeviceLink/public/SDLVehicleDataType.m
@@ -37,6 +37,8 @@ SDLVehicleDataType const SDLVehicleDataTypeStabilityControlsStatus = @"VEHICLEDA
SDLVehicleDataType const SDLVehicleDataTypeSteeringWheel = @"VEHICLEDATA_STEERINGWHEEL";
SDLVehicleDataType const SDLVehicleDataTypeTirePressure = @"VEHICLEDATA_TIREPRESSURE";
SDLVehicleDataType const SDLVehicleDataTypeTurnSignal = @"VEHICLEDATA_TURNSIGNAL";
+SDLVehicleDataType const SDLVehicleDataTypeVehicleDataClimateData = @"VEHICLEDATA_CLIMATEDATA";
SDLVehicleDataType const SDLVehicleDataTypeVIN = @"VEHICLEDATA_VIN";
+SDLVehicleDataType const SDLVehicleDataTypeSeatOccupancy = @"VEHICLEDATA_SEATOCCUPANCY";
SDLVehicleDataType const SDLVehicleDataTypeWindowStatus = @"VEHICLEDATA_WINDOWSTATUS";
SDLVehicleDataType const SDLVehicleDataTypeWiperStatus = @"VEHICLEDATA_WIPERSTATUS";
diff --git a/SmartDeviceLink/public/SDLVideoStreamingCapability.h b/SmartDeviceLink/public/SDLVideoStreamingCapability.h
index 6a28c30bc..c80363c5c 100644
--- a/SmartDeviceLink/public/SDLVideoStreamingCapability.h
+++ b/SmartDeviceLink/public/SDLVideoStreamingCapability.h
@@ -30,7 +30,21 @@ NS_ASSUME_NONNULL_BEGIN
@param scale The scaling factor the app should use to change the size of the projecting view
@return A SDLVideoStreamingCapability object
*/
-- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported diagonalScreenSize:(float)diagonalScreenSize pixelPerInch:(float)pixelPerInch scale:(float)scale;
+- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported diagonalScreenSize:(float)diagonalScreenSize pixelPerInch:(float)pixelPerInch scale:(float)scale __deprecated_msg("Use initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:diagonalScreenSize:pixelPerInch:scale:preferredFPS instead");
+
+/**
+ * Convenience init for creating a video streaming capability with all parameters.
+ * @param preferredResolution - preferredResolution
+ * @param maxBitrate - maxBitrate
+ * @param supportedFormats - supportedFormats
+ * @param hapticSpatialDataSupported - hapticSpatialDataSupported
+ * @param diagonalScreenSize - diagonalScreenSize
+ * @param pixelPerInch - pixelPerInch
+ * @param scale - scale
+ * @param preferredFPS - preferredFPS
+ * @return A SDLVideoStreamingCapability object
+ */
+- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(nullable NSNumber<SDLUInt> *)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticSpatialDataSupported:(nullable NSNumber<SDLBool> *)hapticSpatialDataSupported diagonalScreenSize:(nullable NSNumber<SDLFloat> *)diagonalScreenSize pixelPerInch:(nullable NSNumber<SDLFloat> *)pixelPerInch scale:(nullable NSNumber<SDLFloat> *)scale preferredFPS:(nullable NSNumber<SDLUInt> *)preferredFPS;
/**
The preferred resolution of a video stream for decoding and rendering on HMI
@@ -62,7 +76,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
The diagonal screen size in inches.
-
+
Float, Optional, minvalue="0"
@since SDL 6.0
*/
@@ -78,12 +92,20 @@ NS_ASSUME_NONNULL_BEGIN
/**
The scaling factor the app should use to change the size of the projecting view.
-
+
Float, Optional, minvalue="1" maxvalue="10"
@since SDL 6.0
*/
@property (nullable, strong, nonatomic) NSNumber<SDLFloat> *scale;
+/**
+ * The preferred frame rate per second of the head unit. The mobile application / app library may take other factors into account that constrain the frame rate lower than this value, but it should not perform streaming at a higher frame rate than this value.
+ * {"num_min_value": 0, "num_max_value": 2147483647}
+ *
+ * @added in SmartDeviceLink 7.1.0
+ */
+@property (nullable, strong, nonatomic) NSNumber<SDLUInt> *preferredFPS;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SDLVideoStreamingCapability.m b/SmartDeviceLink/public/SDLVideoStreamingCapability.m
index ec4f2c591..392b102a9 100644
--- a/SmartDeviceLink/public/SDLVideoStreamingCapability.m
+++ b/SmartDeviceLink/public/SDLVideoStreamingCapability.m
@@ -17,20 +17,24 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SDLVideoStreamingCapability
+// deprecated method, and will be removed in the future
- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(int32_t)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticDataSupported:(BOOL)hapticDataSupported diagonalScreenSize:(float)diagonalScreenSize pixelPerInch:(float)pixelPerInch scale:(float)scale {
+ return [self initWithPreferredResolution:preferredResolution maxBitrate:@(maxBitrate) supportedFormats:supportedFormats hapticSpatialDataSupported:@(hapticDataSupported) diagonalScreenSize:@(diagonalScreenSize) pixelPerInch:@(pixelPerInch) scale:@(scale) preferredFPS:nil];
+}
+
+- (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)preferredResolution maxBitrate:(nullable NSNumber<SDLUInt> *)maxBitrate supportedFormats:(nullable NSArray<SDLVideoStreamingFormat *> *)supportedFormats hapticSpatialDataSupported:(nullable NSNumber<SDLBool> *)hapticSpatialDataSupported diagonalScreenSize:(nullable NSNumber<SDLFloat> *)diagonalScreenSize pixelPerInch:(nullable NSNumber<SDLFloat> *)pixelPerInch scale:(nullable NSNumber<SDLFloat> *)scale preferredFPS:(nullable NSNumber<SDLUInt> *)preferredFPS {
self = [self init];
if (!self) {
- return self;
+ return nil;
}
-
- self.maxBitrate = @(maxBitrate);
self.preferredResolution = preferredResolution;
+ self.maxBitrate = maxBitrate;
self.supportedFormats = supportedFormats;
- self.hapticSpatialDataSupported = @(hapticDataSupported);
- self.diagonalScreenSize = @(diagonalScreenSize);
- self.pixelPerInch = @(pixelPerInch);
- self.scale = @(scale);
-
+ self.hapticSpatialDataSupported = hapticSpatialDataSupported;
+ self.diagonalScreenSize = diagonalScreenSize;
+ self.pixelPerInch = pixelPerInch;
+ self.scale = scale;
+ self.preferredFPS = preferredFPS;
return self;
}
@@ -90,6 +94,14 @@ NS_ASSUME_NONNULL_BEGIN
return [self.store sdl_objectForName:SDLRPCParameterNameScale ofClass:NSNumber.class error:nil];
}
+- (void)setPreferredFPS:(nullable NSNumber<SDLUInt> *)preferredFPS {
+ [self.store sdl_setObject:preferredFPS forName:SDLRPCParameterNamePreferredFPS];
+}
+
+- (nullable NSNumber<SDLUInt> *)preferredFPS {
+ return [self.store sdl_objectForName:SDLRPCParameterNamePreferredFPS ofClass:NSNumber.class error:nil];
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/public/SmartDeviceLink.h b/SmartDeviceLink/public/SmartDeviceLink.h
index 197e01b4c..8b8b6f68d 100644
--- a/SmartDeviceLink/public/SmartDeviceLink.h
+++ b/SmartDeviceLink/public/SmartDeviceLink.h
@@ -196,6 +196,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLClusterModeStatus.h"
#import "SDLClimateControlCapabilities.h"
#import "SDLClimateControlData.h"
+#import "SDLClimateData.h"
#import "SDLCloudAppProperties.h"
#import "SDLDIDResult.h"
#import "SDLDateTime.h"
@@ -203,12 +204,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,12 +256,15 @@ 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"
#import "SDLSeatMemoryAction.h"
#import "SDLSeatLocation.h"
#import "SDLSeatLocationCapability.h"
+#import "SDLSeatOccupancy.h"
+#import "SDLSeatStatus.h"
#import "SDLSingleTireStatus.h"
#import "SDLSISData.h"
#import "SDLSoftButton.h"
@@ -366,6 +373,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLResult.h"
#import "SDLSamplingRate.h"
#import "SDLSeatMemoryActionType.h"
+#import "SDLSeekIndicatorType.h"
#import "SDLServiceUpdateReason.h"
#import "SDLSupportedSeat.h"
#import "SDLSoftButtonType.h"
@@ -424,6 +432,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[];
#import "SDLTouchManager.h"
#import "SDLTouchManagerDelegate.h"
#import "SDLSecurityType.h"
+#import "SDLSeekStreamingIndicator.h"
#import "SDLStreamingMediaManagerDataSource.h"
#import "SDLStreamingVideoScaleManager.h"
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
index 32d2cfcbf..8d2cf9dbc 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleManagerSpec.m
@@ -74,8 +74,8 @@ QuickConfigurationBegin(SendingRPCsConfiguration)
sharedExamples(@"unable to send an RPC", ^(QCKDSLSharedExampleContext exampleContext) {
it(@"cannot publicly send RPCs", ^{
SDLLifecycleManager *testManager = exampleContext()[@"manager"];
- SDLShow *testShow = [[SDLShow alloc] initWithMainField1:@"test" mainField2:nil alignment:nil];
-
+ SDLShow *testShow = [[SDLShow alloc] initWithMainField1:@"test" mainField2:nil mainField3:nil mainField4:nil alignment:nil statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:nil templateTitle:nil windowID:nil templateConfiguration:nil];
+
[testManager sendRequest:testShow withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
expect(error).to(equal([NSError sdl_lifecycle_notReadyError]));
}];
@@ -530,7 +530,7 @@ describe(@"a lifecycle manager", ^{
});
it(@"can send an RPC of type Request", ^{
- SDLShow *testShow = [[SDLShow alloc] initWithMainField1:@"test" mainField2:nil alignment:nil];
+ SDLShow *testShow = [[SDLShow alloc] initWithMainField1:@"test" mainField2:nil mainField3:nil mainField4:nil alignment:nil statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:nil templateTitle:nil windowID:nil templateConfiguration:nil];
OCMExpect([protocolMock sendRPC:testShow]);
[testManager sendRPC:testShow];
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleProtocolHandlerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleProtocolHandlerSpec.m
index 681ec9cc5..58e2495e3 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleProtocolHandlerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLLifecycleProtocolHandlerSpec.m
@@ -202,7 +202,7 @@ describe(@"SDLLifecycleProtocolHandler tests", ^{
context(@"of a protocol message", ^{
beforeEach(^{
- SDLShow *showRPC = [[SDLShow alloc] initWithMainField1:@"Test1" mainField2:@"Test2" alignment:SDLTextAlignmentLeft];
+ SDLShow *showRPC = [[SDLShow alloc] initWithMainField1:@"Test1" mainField2:@"Test2" mainField3:nil mainField4:nil alignment:SDLTextAlignmentLeft statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:nil templateTitle:nil windowID:nil templateConfiguration:nil];
SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:4];
header.serviceType = SDLServiceTypeRPC;
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenViewControllerSnapshotTests.m b/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenViewControllerSnapshotTests.m
deleted file mode 100644
index 341e10105..000000000
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLLockScreenViewControllerSnapshotTests.m
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// SDLLockScreenViewControllerSnapshotTests.m
-// SmartDeviceLink-iOS
-//
-// Created by Joel Fischer on 7/27/16.
-// Copyright © 2016 smartdevicelink. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-#import <FBSnapshotTestCase/FBSnapshotTestCase.h>
-
-#import "SDLLockScreenConfiguration.h"
-#import "SDLLockScreenViewController.h"
-
-
-@interface SDLLockScreenViewControllerSnapshotTests : FBSnapshotTestCase
-
-@property (strong, nonatomic) SDLLockScreenViewController *lockScreenViewController;
-
-@end
-
-
-@implementation SDLLockScreenViewControllerSnapshotTests
-
-- (void)setUp {
- [super setUp];
-
- self.lockScreenViewController = [[UIStoryboard storyboardWithName:@"SDLLockScreen" bundle:[NSBundle bundleForClass:[self class]]] instantiateInitialViewController];
- self.lockScreenViewController.view.frame = [[UIScreen mainScreen] bounds];
-
-// self.deviceAgnostic = YES;
-// self.recordMode = YES;
-}
-
-- (void)tearDown {
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- [super tearDown];
-}
-
-- (void)testNoAppNoVehicleIcons {
- self.lockScreenViewController.appIcon = nil;
- self.lockScreenViewController.vehicleIcon = nil;
- self.lockScreenViewController.backgroundColor = [SDLLockScreenConfiguration enabledConfiguration].backgroundColor;
-
- FBSnapshotVerifyView(self.lockScreenViewController.view, nil);
-}
-
-- (void)testOnlyAppIcon {
- self.lockScreenViewController.appIcon = [UIImage imageNamed:@"TestLockScreenAppIcon" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
- self.lockScreenViewController.vehicleIcon = nil;
- self.lockScreenViewController.backgroundColor = [SDLLockScreenConfiguration enabledConfiguration].backgroundColor;
-
- FBSnapshotVerifyView(self.lockScreenViewController.view, nil);
-}
-
-- (void)testOnlyVehicleIcon {
- self.lockScreenViewController.appIcon = nil;
- self.lockScreenViewController.vehicleIcon = [UIImage imageNamed:@"testImagePNG" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
- self.lockScreenViewController.backgroundColor = [SDLLockScreenConfiguration enabledConfiguration].backgroundColor;
-
- FBSnapshotVerifyView(self.lockScreenViewController.view, nil);
-}
-
-- (void)testAppAndVehicleIcons {
- self.lockScreenViewController.appIcon = [UIImage imageNamed:@"TestLockScreenAppIcon" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];;
- self.lockScreenViewController.vehicleIcon = [UIImage imageNamed:@"testImagePNG" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
- self.lockScreenViewController.backgroundColor = [SDLLockScreenConfiguration enabledConfiguration].backgroundColor;
-
- FBSnapshotVerifyView(self.lockScreenViewController.view, nil);
-}
-
-- (void)testLightBackgroundNoAppNoVehicleIcons {
- self.lockScreenViewController.appIcon = nil;
- self.lockScreenViewController.vehicleIcon = nil;
- self.lockScreenViewController.backgroundColor = [UIColor whiteColor];
-
- FBSnapshotVerifyView(self.lockScreenViewController.view, nil);
-}
-
-@end
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m
index 6a5996116..a24c432a7 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m
@@ -153,7 +153,8 @@ describe(@"a soft button manager", ^{
testObject1 = [[SDLSoftButtonObject alloc] initWithName:sameName states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil];
testObject2 = [[SDLSoftButtonObject alloc] initWithName:sameName state:object2State1 handler:nil];
- testManager.softButtonObjects = @[testObject1, testObject2];
+ expectAction((^{ testManager.softButtonObjects = @[testObject1, testObject2];
+ })).to(raiseException().named(@"InvalidSoftButtonsInitialization"));
});
it(@"should fail to set the buttons", ^{
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
index e444ba473..8543f4db0 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLStreamingVideoLifecycleManagerSpec.m
@@ -498,7 +498,7 @@ describe(@"the streaming video manager", ^{
response.systemCapability = [[SDLSystemCapability alloc] init];
response.systemCapability.systemCapabilityType = SDLSystemCapabilityTypeVideoStreaming;
- testVideoStreamingCapability = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:resolution maxBitrate:maxBitrate supportedFormats:testFormats hapticDataSupported:testHapticsSupported diagonalScreenSize:8.5 pixelPerInch:117 scale:1.25];
+ testVideoStreamingCapability = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:resolution maxBitrate:@(maxBitrate) supportedFormats:testFormats hapticSpatialDataSupported:@(testHapticsSupported) diagonalScreenSize:@(8.5) pixelPerInch:@(117) scale:@(1.25) preferredFPS:@(15)];
response.systemCapability.videoStreamingCapability = testVideoStreamingCapability;
[testConnectionManager respondToLastRequestWithResponse:response];
});
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLVoiceCommandManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLVoiceCommandManagerSpec.m
index 8b808273e..58d5ff591 100644
--- a/SmartDeviceLinkTests/DevAPISpecs/SDLVoiceCommandManagerSpec.m
+++ b/SmartDeviceLinkTests/DevAPISpecs/SDLVoiceCommandManagerSpec.m
@@ -151,7 +151,7 @@ describe(@"voice command manager", ^{
it(@"should update the second operation", ^{
SDLVoiceCommandUpdateOperation *secondOp = testManager.transactionQueue.operations[0];
- expect(secondOp.oldVoiceCommands.firstObject).to(equal(testVoiceCommand2));
+ expect(secondOp.oldVoiceCommands.firstObject).toEventually(equal(testVoiceCommand2));
});
});
});
diff --git a/SmartDeviceLinkTests/Notifications/SDLResponseDispatcherSpec.m b/SmartDeviceLinkTests/Notifications/SDLResponseDispatcherSpec.m
index 4a9d452e6..4ff829470 100644
--- a/SmartDeviceLinkTests/Notifications/SDLResponseDispatcherSpec.m
+++ b/SmartDeviceLinkTests/Notifications/SDLResponseDispatcherSpec.m
@@ -125,7 +125,7 @@ describe(@"a response dispatcher", ^{
__block NSUInteger numTimesHandlerCalled = 0;
beforeEach(^{
- testShow = [[SDLShow alloc] initWithMainField1:@"Test Show" mainField2:nil alignment:SDLTextAlignmentCenter];
+ testShow = [[SDLShow alloc] initWithMainField1:@"Test Show" mainField2:nil mainField3:nil mainField4:nil alignment:SDLTextAlignmentCenter statusBar:nil mediaTrack:nil graphic:nil secondaryGraphic:nil softButtons:nil customPresets:nil metadataTags:nil templateTitle:nil windowID:nil templateConfiguration:nil];
testShow.correlationID = @1;
});
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/EnumSpecs/SDLSeekIndicatorTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSeekIndicatorTypeSpec.m
new file mode 100644
index 000000000..fd5d06c25
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLSeekIndicatorTypeSpec.m
@@ -0,0 +1,23 @@
+//
+// SDLSeekIndicatorTypeSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Frank Elias on 12/4/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLSeekIndicatorType.h"
+
+QuickSpecBegin(SDLSeekIndicatorTypeSpec)
+
+describe(@"Individual Enum Value Tests", ^{
+ it(@"Should match internal values", ^{
+ expect(SDLSeekIndicatorTypeTrack).to(equal(@"TRACK"));
+ expect(SDLSeekIndicatorTypeTime).to(equal(@"TIME"));
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m
index 215f0655e..53f1e93d6 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLTextFieldNameSpec.m
@@ -20,7 +20,10 @@ describe(@"Individual Enum Value Tests", ^ {
expect(SDLTextFieldNameMainField4).to(equal(@"mainField4"));
expect(SDLTextFieldNameTemplateTitle).to(equal(@"templateTitle"));
expect(SDLTextFieldNameStatusBar).to(equal(@"statusBar"));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(SDLTextFieldNameMediaClock).to(equal(@"mediaClock"));
+#pragma clang diagnostic pop
expect(SDLTextFieldNameMediaTrack).to(equal(@"mediaTrack"));
expect(SDLTextFieldNameAlertText1).to(equal(@"alertText1"));
expect(SDLTextFieldNameAlertText2).to(equal(@"alertText2"));
diff --git a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
index f897b1d22..e1ff34a0f 100644
--- a/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/EnumSpecs/SDLVehicleDataTypeSpec.m
@@ -26,7 +26,10 @@ describe(@"individual enum value tests", ^{
expect(SDLVehicleDataTypeEmergencyEvent).to(equal(@"VEHICLEDATA_EMERGENCYEVENT"));
expect(SDLVehicleDataTypeEngineOilLife).to(equal(@"VEHICLEDATA_ENGINEOILLIFE"));
expect(SDLVehicleDataTypeEngineTorque).to(equal(@"VEHICLEDATA_ENGINETORQUE"));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(SDLVehicleDataTypeExternalTemperature).to(equal(@"VEHICLEDATA_EXTERNTEMP"));
+#pragma clang diagnostic pop
expect(SDLVehicleDataTypeFuelConsumption).to(equal(@"VEHICLEDATA_FUELCONSUMPTION"));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
@@ -50,6 +53,8 @@ describe(@"individual enum value tests", ^{
expect(SDLVehicleDataTypeSteeringWheel).to(equal(@"VEHICLEDATA_STEERINGWHEEL"));
expect(SDLVehicleDataTypeTirePressure).to(equal(@"VEHICLEDATA_TIREPRESSURE"));
expect(SDLVehicleDataTypeTurnSignal).to(equal(@"VEHICLEDATA_TURNSIGNAL"));
+ expect(SDLVehicleDataTypeVehicleDataClimateData).to(equal(@"VEHICLEDATA_CLIMATEDATA"));
+ expect(SDLVehicleDataTypeSeatOccupancy).to(equal(@"VEHICLEDATA_SEATOCCUPANCY"));
expect(SDLVehicleDataTypeVIN).to(equal(@"VEHICLEDATA_VIN"));
expect(SDLVehicleDataTypeWindowStatus).to(equal(@"VEHICLEDATA_WINDOWSTATUS"));
expect(SDLVehicleDataTypeWiperStatus).to(equal(@"VEHICLEDATA_WIPERSTATUS"));
diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
index b42482828..4b7857312 100644
--- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m
@@ -49,6 +49,8 @@ SDLStabilityControlsStatus *stabilityControlsStatus = [[SDLStabilityControlsStat
NSArray<SDLWindowStatus *> *windowStatus = @[[[SDLWindowStatus alloc] init], [[SDLWindowStatus alloc] init]];
const BOOL handsOffSteering = YES;
SDLGearStatus *gearStatus = [[SDLGearStatus alloc] initWithUserSelectedGear:SDLPRNDLDrive actualGear:SDLPRNDLPark transmissionType:SDLTransmissionTypeAutomatic];
+SDLClimateData *climateData = [[SDLClimateData alloc] init];
+SDLSeatOccupancy *seatOccupancy = [[SDLSeatOccupancy alloc] init];
describe(@"getter/setter tests", ^{
context(@"init and assign", ^{
@@ -66,9 +68,9 @@ describe(@"getter/setter tests", ^{
testResponse.emergencyEvent = emergencyEvent;
testResponse.engineOilLife = @(engineOilLife);
testResponse.engineTorque = @(engineTorque);
- testResponse.externalTemperature = @(externalTemperature);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.externalTemperature = @(externalTemperature);
testResponse.fuelLevel = @(fuelLevel);
testResponse.fuelLevel_State = fuelLevel_State;
#pragma clang diagnostic pop
@@ -85,6 +87,7 @@ describe(@"getter/setter tests", ^{
testResponse.prndl = prndl;
#pragma clang diagnostic pop
testResponse.rpm = @(rpm);
+ testResponse.seatOccupancy = seatOccupancy;
testResponse.speed = @(speed);
testResponse.stabilityControlsStatus = stabilityControlsStatus;
testResponse.steeringWheelAngle = @(steeringWheelAngle);
@@ -93,6 +96,7 @@ describe(@"getter/setter tests", ^{
testResponse.vin = vin;
testResponse.windowStatus = windowStatus;
testResponse.wiperStatus = wiperStatus;
+ testResponse.climateData = climateData;
it(@"expect all properties to be set properly", ^{
expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
@@ -108,9 +112,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
expect(testResponse.engineTorque).to(equal(@(engineTorque)));
- expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
#pragma clang diagnostic pop
@@ -127,6 +131,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(prndl));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.seatOccupancy).to(equal(seatOccupancy));
expect(testResponse.speed).to(equal(@(speed)));
expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
@@ -135,6 +140,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.vin).to(equal(vin));
expect(testResponse.windowStatus).to(equal(windowStatus));
expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ expect(testResponse.climateData).to(equal(climateData));
});
});
@@ -173,6 +179,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNamePRNDL:prndl,
#pragma clang diagnostic pop
SDLRPCParameterNameRPM:@(rpm),
+ SDLRPCParameterNameSeatOccupancy:seatOccupancy,
SDLRPCParameterNameSpeed:@(speed),
SDLRPCParameterNameStabilityControlsStatus:stabilityControlsStatus,
SDLRPCParameterNameSteeringWheelAngle:@(steeringWheelAngle),
@@ -181,6 +188,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNameVIN:vin,
SDLRPCParameterNameWindowStatus:windowStatus,
SDLRPCParameterNameWiperStatus:wiperStatus,
+ SDLRPCParameterNameClimateData:climateData,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnVehicleData}};
SDLOnVehicleData* testResponse = [[SDLOnVehicleData alloc] initWithDictionary:dict];
@@ -199,9 +207,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
expect(testResponse.engineTorque).to(equal(@(engineTorque)));
- expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
#pragma clang diagnostic pop
@@ -218,6 +226,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(prndl));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.seatOccupancy).to(equal(seatOccupancy));
expect(testResponse.speed).to(equal(@(speed)));
expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
@@ -226,6 +235,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.vin).to(equal(vin));
expect(testResponse.windowStatus).to(equal(windowStatus));
expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ expect(testResponse.climateData).to(equal(climateData));
});
});
@@ -245,9 +255,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(beNil());
expect(testResponse.engineOilLife).to(beNil());
expect(testResponse.engineTorque).to(beNil());
- expect(testResponse.externalTemperature).to(beNil());
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(beNil());
expect(testResponse.fuelLevel).to(beNil());
expect(testResponse.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -264,6 +274,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testResponse.rpm).to(beNil());
+ expect(testResponse.seatOccupancy).to(beNil());
expect(testResponse.speed).to(beNil());
expect(testResponse.stabilityControlsStatus).to(beNil());
expect(testResponse.steeringWheelAngle).to(beNil());
@@ -272,10 +283,19 @@ describe(@"getter/setter tests", ^{
expect(testResponse.vin).to(beNil());
expect(testResponse.windowStatus).to(beNil());
expect(testResponse.wiperStatus).to(beNil());
+ expect(testResponse.climateData).to(beNil());
});
});
+
context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
- SDLOnVehicleData* testResponse = [[SDLOnVehicleData alloc] initWithGps:gps speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:fuelRangeArray externalTemperature:@(externalTemperature) turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:@(odometer) beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:@(engineTorque) accPedalPosition:@(accPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey handsOffSteering:@(handsOffSteering) windowStatus:windowStatus];
+ __block SDLOnVehicleData *testResponse = nil;
+
+ beforeEach(^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse = [[SDLOnVehicleData alloc] initWithGps:gps speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:fuelRangeArray externalTemperature:@(externalTemperature) turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:@(odometer) beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:@(engineTorque) accPedalPosition:@(accPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey handsOffSteering:@(handsOffSteering) windowStatus:windowStatus];
+#pragma clang diagnostic pop
+ });
it(@"expect all properties to be set properly", ^{
expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
@@ -291,9 +311,61 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(@(handsOffSteering)));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.seatOccupancy).to(beNil());
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ });
+ });
+
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy:", ^{
+ __block SDLOnVehicleData *testResponse = nil;
+
+ beforeEach(^{
+ testResponse = [[SDLOnVehicleData alloc] initWithGps:gps speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:fuelRangeArray climateData:climateData turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:@(odometer) beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:@(engineTorque) accPedalPosition:@(accPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey windowStatus:windowStatus handsOffSteering:@(handsOffSteering) seatOccupancy:seatOccupancy];
+ });
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(beNil());
expect(testResponse.fuelLevel).to(beNil());
expect(testResponse.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -310,6 +382,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.seatOccupancy).to(equal(seatOccupancy));
expect(testResponse.speed).to(equal(@(speed)));
expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
@@ -318,6 +391,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.vin).to(equal(vin));
expect(testResponse.windowStatus).to(equal(windowStatus));
expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ expect(testResponse.climateData).to(equal(climateData));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
index 2872c6cee..c2b0b3681 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m
@@ -16,46 +16,52 @@ QuickSpecBegin(SDLGetVehicleDataSpec)
describe(@"getter/setter tests", ^{
context(@"init and assign", ^{
- SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] init];
- testRequest.accPedalPosition = @YES;
- testRequest.airbagStatus = @YES;
- testRequest.beltStatus = @YES;
- testRequest.bodyInformation = @YES;
- testRequest.cloudAppVehicleID = @YES;
- testRequest.clusterModeStatus = @YES;
- testRequest.deviceStatus = @YES;
- testRequest.driverBraking = @YES;
- testRequest.eCallInfo = @YES;
- testRequest.electronicParkBrakeStatus = @YES;
- testRequest.emergencyEvent = @YES;
- testRequest.engineOilLife = @YES;
- testRequest.engineTorque = @YES;
- testRequest.externalTemperature = @YES;
+ __block SDLGetVehicleData *testRequest = nil;
+
+ beforeEach(^{
+ testRequest = [[SDLGetVehicleData alloc] init];
+ testRequest.accPedalPosition = @YES;
+ testRequest.airbagStatus = @YES;
+ testRequest.beltStatus = @YES;
+ testRequest.bodyInformation = @YES;
+ testRequest.cloudAppVehicleID = @YES;
+ testRequest.clusterModeStatus = @YES;
+ testRequest.deviceStatus = @YES;
+ testRequest.driverBraking = @YES;
+ testRequest.eCallInfo = @YES;
+ testRequest.electronicParkBrakeStatus = @YES;
+ testRequest.emergencyEvent = @YES;
+ testRequest.engineOilLife = @YES;
+ testRequest.engineTorque = @YES;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest.fuelLevel = @YES;
- testRequest.fuelLevel_State = @YES;
+ testRequest.externalTemperature = @YES;
+ testRequest.fuelLevel = @YES;
+ testRequest.fuelLevel_State = @YES;
#pragma clang diagnostic pop
- testRequest.fuelRange = @YES;
- testRequest.gearStatus = @YES;
- testRequest.gps = @YES;
- testRequest.handsOffSteering = @YES;
- testRequest.headLampStatus = @YES;
- testRequest.instantFuelConsumption = @YES;
- testRequest.myKey = @YES;
- testRequest.odometer = @YES;
+ testRequest.fuelRange = @YES;
+ testRequest.gearStatus = @YES;
+ testRequest.gps = @YES;
+ testRequest.handsOffSteering = @YES;
+ testRequest.headLampStatus = @YES;
+ testRequest.instantFuelConsumption = @YES;
+ testRequest.myKey = @YES;
+ testRequest.odometer = @YES;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- testRequest.prndl = @YES;
+ testRequest.prndl = @YES;
#pragma clang diagnostic pop
- testRequest.rpm = @YES;
- testRequest.speed = @YES;
- testRequest.stabilityControlsStatus = @YES;
- testRequest.steeringWheelAngle = @YES;
- testRequest.tirePressure = @YES;
- testRequest.turnSignal = @YES;
- testRequest.windowStatus = @YES;
- testRequest.wiperStatus = @YES;
+ testRequest.rpm = @YES;
+ testRequest.seatOccupancy = @YES;
+ testRequest.speed = @YES;
+ testRequest.stabilityControlsStatus = @YES;
+ testRequest.steeringWheelAngle = @YES;
+ testRequest.tirePressure = @YES;
+ testRequest.turnSignal = @YES;
+ testRequest.windowStatus = @YES;
+ testRequest.wiperStatus = @YES;
+ testRequest.climateData = @YES;
+ });
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -71,9 +77,9 @@ describe(@"getter/setter tests", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic pop
@@ -90,6 +96,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -97,10 +104,12 @@ describe(@"getter/setter tests", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
context(@"initWithDictionary:", ^{
+ __block SDLGetVehicleData *testRequest = nil;
NSDictionary<NSString *, id> *dict = @{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:@{
SDLRPCParameterNameAccelerationPedalPosition:@YES,
@@ -135,6 +144,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNamePRNDL:@YES,
#pragma clang diagnostic pop
SDLRPCParameterNameRPM:@YES,
+ SDLRPCParameterNameSeatOccupancy:@YES,
SDLRPCParameterNameSpeed:@YES,
SDLRPCParameterNameStabilityControlsStatus:@YES,
SDLRPCParameterNameSteeringWheelAngle:@YES,
@@ -142,9 +152,12 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNameTurnSignal:@YES,
SDLRPCParameterNameWindowStatus:@YES,
SDLRPCParameterNameWiperStatus:@YES,
+ SDLRPCParameterNameClimateData:@YES
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}};
- SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] initWithDictionary:dict];
+ beforeEach(^{
+ testRequest = [[SDLGetVehicleData alloc] initWithDictionary:dict];
+ });
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -160,9 +173,9 @@ describe(@"getter/setter tests", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic pop
@@ -179,6 +192,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -186,13 +200,19 @@ describe(@"getter/setter tests", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
});
describe(@"initializers", ^{
context(@"init", ^{
- SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] init];
+ __block SDLGetVehicleData *testRequest = nil;
+
+ beforeEach(^{
+ testRequest = [[SDLGetVehicleData alloc] init];
+ });
+
it(@"expect all properties to be nil", ^{
expect(testRequest.accPedalPosition).to(beNil());
expect(testRequest.airbagStatus).to(beNil());
@@ -207,9 +227,9 @@ describe(@"initializers", ^{
expect(testRequest.emergencyEvent).to(beNil());
expect(testRequest.engineOilLife).to(beNil());
expect(testRequest.engineTorque).to(beNil());
- expect(testRequest.externalTemperature).to(beNil());
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(beNil());
expect(testRequest.fuelLevel).to(beNil());
expect(testRequest.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -226,6 +246,7 @@ describe(@"initializers", ^{
expect(testRequest.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testRequest.rpm).to(beNil());
+ expect(testRequest.seatOccupancy).to(beNil());
expect(testRequest.speed).to(beNil());
expect(testRequest.stabilityControlsStatus).to(beNil());
expect(testRequest.steeringWheelAngle).to(beNil());
@@ -233,14 +254,19 @@ describe(@"initializers", ^{
expect(testRequest.turnSignal).to(beNil());
expect(testRequest.windowStatus).to(beNil());
expect(testRequest.wiperStatus).to(beNil());
+ expect(testRequest.climateData).to(beNil());
});
});
context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:", ^{
+ __block SDLGetVehicleData *testRequest = nil;
+
+ beforeEach(^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES vin:YES wiperStatus:YES];
+ testRequest = [[SDLGetVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES vin:YES wiperStatus:YES];
#pragma clang diagnostic pop
+ });
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -256,9 +282,9 @@ describe(@"initializers", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic pop
@@ -275,6 +301,7 @@ describe(@"initializers", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(beNil());
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(beNil());
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -282,11 +309,19 @@ describe(@"initializers", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(beNil());
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(beNil());
});
});
context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
- SDLGetVehicleData *testRequest = [[SDLGetVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES vin:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
+ __block SDLGetVehicleData *testRequest = nil;
+
+ beforeEach(^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testRequest = [[SDLGetVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES vin:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
+#pragma clang diagnostic pop
+ });
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -302,9 +337,61 @@ describe(@"initializers", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testRequest.externalTemperature).to(equal(@YES));
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(beNil());
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(beNil());
+ });
+ });
+
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy:", ^{
+ __block SDLGetVehicleData *testRequest = nil;
+
+ beforeEach(^{
+ testRequest = [[SDLGetVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES climateData:@YES turnSignal:@YES vin:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES windowStatus:@YES handsOffSteering:@YES seatOccupancy:@YES];
+ });
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(beNil());
expect(testRequest.fuelLevel).to(beNil());
expect(testRequest.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -321,6 +408,7 @@ describe(@"initializers", ^{
expect(testRequest.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -328,13 +416,18 @@ describe(@"initializers", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
context(@"should set OEM Custom Vehicle Data", ^{
- SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] init];
- [testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData" withVehicleDataState:NO];
- [testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData1" withVehicleDataState:YES];
+ __block SDLGetVehicleData *testRequest = nil;
+
+ beforeEach(^{
+ testRequest = [[SDLGetVehicleData alloc] init];
+ [testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData" withVehicleDataState:NO];
+ [testRequest setOEMCustomVehicleData:@"OEMCustomVehicleData1" withVehicleDataState:YES];
+ });
it(@"expect OEM Custom Vehicle Data to be set properly", ^{
expect([testRequest getOEMCustomVehicleData:@"OEMCustomVehicleData"]).to(equal(@NO));
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
index ae5adf8ad..f939851d1 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m
@@ -42,7 +42,7 @@ describe(@"RegisterAppInterface Tests", ^{
__block SDLDeviceInfo *info = nil;
__block SDLAppInfo *appInfo = nil;
__block SDLTemplateColorScheme *colorScheme = nil;
- __block SDLMsgVersion * currentSDLMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:7 minorVersion:0 patchVersion:0];
+ __block SDLMsgVersion * currentSDLMsgVersion = [[SDLMsgVersion alloc] initWithMajorVersion:7 minorVersion:1 patchVersion:0];
beforeEach(^{
testRegisterAppInterface = nil;
@@ -90,52 +90,48 @@ describe(@"RegisterAppInterface Tests", ^{
expect(testRegisterAppInterface.sdlMsgVersion).to(equal(msgVersion));
});
- describe(@"Setting With Dictionary", ^{
- beforeEach( ^{
- NSDictionary *dict = @{SDLRPCParameterNameRequest:
- @{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameSyncMessageVersion:@{
- SDLRPCParameterNameMajorVersion: @7,
- SDLRPCParameterNameMinorVersion: @0,
- SDLRPCParameterNamePatchVersion: @0
- },
- SDLRPCParameterNameAppName:appName,
- SDLRPCParameterNameTTSName:[@[chunk] mutableCopy],
- SDLRPCParameterNameNGNMediaScreenAppName:shortAppName,
- SDLRPCParameterNameVRSynonyms:@[vrSynonyms],
- SDLRPCParameterNameIsMediaApplication:isMediaApp,
- SDLRPCParameterNameLanguageDesired:SDLLanguageNoNo,
- SDLRPCParameterNameHMIDisplayLanguageDesired:SDLLanguagePtPt,
- SDLRPCParameterNameAppHMIType:appTypes,
- SDLRPCParameterNameHashId:resumeHash,
- SDLRPCParameterNameDeviceInfo:info,
- SDLRPCParameterNameFullAppID:fullAppId,
- SDLRPCParameterNameAppId:appId,
- SDLRPCParameterNameAppInfo:appInfo,
- SDLRPCParameterNameDayColorScheme: colorScheme,
- SDLRPCParameterNameNightColorScheme: colorScheme,
- },
- SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}};
- SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithDictionary:dict];
-
- expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
- expect(testRegisterAppInterface.appName).to(match(appName));
- expect(testRegisterAppInterface.ttsName).to(equal([@[chunk] mutableCopy]));
- expect(testRegisterAppInterface.ngnMediaScreenAppName).to(match(shortAppName));
- expect(testRegisterAppInterface.vrSynonyms).to(equal(@[vrSynonyms]));
- expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
- expect(testRegisterAppInterface.languageDesired).to(equal(SDLLanguageNoNo));
- expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(SDLLanguagePtPt));
- expect(testRegisterAppInterface.appHMIType).to(equal(appTypes));
- expect(testRegisterAppInterface.hashID).to(match(resumeHash));
- expect(testRegisterAppInterface.deviceInfo).to(equal(info));
- expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
- expect(testRegisterAppInterface.appID).to(match(appId));
- expect(testRegisterAppInterface.appInfo).to(equal(appInfo));
- expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
- expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
- });
- });
+ describe(@"Setting With Dictionary", ^{
+ it(@"initWithDictionary", ^{
+ NSDictionary *dict = @{SDLRPCParameterNameRequest:
+ @{SDLRPCParameterNameParameters:
+ @{SDLRPCParameterNameSyncMessageVersion:currentSDLMsgVersion,
+ SDLRPCParameterNameAppName:appName,
+ SDLRPCParameterNameTTSName:[@[chunk] mutableCopy],
+ SDLRPCParameterNameNGNMediaScreenAppName:shortAppName,
+ SDLRPCParameterNameVRSynonyms:@[vrSynonyms],
+ SDLRPCParameterNameIsMediaApplication:isMediaApp,
+ SDLRPCParameterNameLanguageDesired:SDLLanguageNoNo,
+ SDLRPCParameterNameHMIDisplayLanguageDesired:SDLLanguagePtPt,
+ SDLRPCParameterNameAppHMIType:appTypes,
+ SDLRPCParameterNameHashId:resumeHash,
+ SDLRPCParameterNameDeviceInfo:info,
+ SDLRPCParameterNameFullAppID:fullAppId,
+ SDLRPCParameterNameAppId:appId,
+ SDLRPCParameterNameAppInfo:appInfo,
+ SDLRPCParameterNameDayColorScheme: colorScheme,
+ SDLRPCParameterNameNightColorScheme: colorScheme,
+ },
+ SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}};
+ SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithDictionary:dict];
+
+ expect(testRegisterAppInterface.sdlMsgVersion).to(equal(currentSDLMsgVersion));
+ expect(testRegisterAppInterface.appName).to(match(appName));
+ expect(testRegisterAppInterface.ttsName).to(equal([@[chunk] mutableCopy]));
+ expect(testRegisterAppInterface.ngnMediaScreenAppName).to(match(shortAppName));
+ expect(testRegisterAppInterface.vrSynonyms).to(equal(@[vrSynonyms]));
+ expect(testRegisterAppInterface.isMediaApplication).to(equal(isMediaApp));
+ expect(testRegisterAppInterface.languageDesired).to(equal(SDLLanguageNoNo));
+ expect(testRegisterAppInterface.hmiDisplayLanguageDesired).to(equal(SDLLanguagePtPt));
+ expect(testRegisterAppInterface.appHMIType).to(equal(appTypes));
+ expect(testRegisterAppInterface.hashID).to(match(resumeHash));
+ expect(testRegisterAppInterface.deviceInfo).to(equal(info));
+ expect(testRegisterAppInterface.fullAppID).to(match(fullAppId));
+ expect(testRegisterAppInterface.appID).to(match(appId));
+ expect(testRegisterAppInterface.appInfo).to(equal(appInfo));
+ expect(testRegisterAppInterface.dayColorScheme).to(equal(colorScheme));
+ expect(testRegisterAppInterface.nightColorScheme).to(equal(colorScheme));
+ });
+ });
describe(@"initializers", ^{
it(@"init", ^{
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m
index 721ba0b86..d05fd1607 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m
@@ -20,10 +20,18 @@ QuickSpecBegin(SDLSetMediaClockTimerSpec)
describe(@"SetMediaClocktimer Spec", ^ {
__block NSTimeInterval testTime1Interval = 32887;
__block NSTimeInterval testTime2Interval = 3723;
+ __block float testCountRate = 1423.0;
__block SDLStartTime *time1 = [[SDLStartTime alloc] initWithHours:9 minutes:8 seconds:7];
__block SDLStartTime *time2 = [[SDLStartTime alloc] initWithHours:1 minutes:2 seconds:3];
__block SDLUpdateMode testUpdateMode = SDLUpdateModeCountUp;
__block SDLAudioStreamingIndicator testIndicator = SDLAudioStreamingIndicatorPlayPause;
+ __block SDLSeekStreamingIndicator *forwardSeekTest;
+ __block SDLSeekStreamingIndicator *backSeekTest;
+
+ beforeEach(^{
+ forwardSeekTest = [[SDLSeekStreamingIndicator alloc] initWithType:SDLSeekIndicatorTypeTrack];
+ backSeekTest = [[SDLSeekStreamingIndicator alloc] initWithType:SDLSeekIndicatorTypeTrack];
+ });
describe(@"when initialized", ^{
it(@"should properly initialize with initWithDictionary:", ^{
@@ -32,7 +40,9 @@ describe(@"SetMediaClocktimer Spec", ^ {
@{SDLRPCParameterNameStartTime:time1,
SDLRPCParameterNameEndTime:time2,
SDLRPCParameterNameUpdateMode:testUpdateMode,
- SDLRPCParameterNameAudioStreamingIndicator:testIndicator
+ SDLRPCParameterNameAudioStreamingIndicator:testIndicator,
+ SDLRPCParameterNameForwardSeekIndicator:forwardSeekTest,
+ SDLRPCParameterNameBackSeekIndicator:backSeekTest
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetMediaClockTimer}
};
@@ -42,6 +52,8 @@ describe(@"SetMediaClocktimer Spec", ^ {
expect(testRequest.endTime).to(equal(time2));
expect(testRequest.updateMode).to(equal(testUpdateMode));
expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
});
it(@"should properly initialize with init", ^{
@@ -51,45 +63,132 @@ describe(@"SetMediaClocktimer Spec", ^ {
expect(testRequest.endTime).to(beNil());
expect(testRequest.updateMode).to(beNil());
expect(testRequest.audioStreamingIndicator).to(beNil());
+ expect(testRequest.forwardSeekIndicator).to(beNil());
+ expect(testRequest.backSeekIndicator).to(beNil());
+ expect(testRequest.countRate).to(beNil());
});
- it(@"should properly initialize with countUpWithStartTimeInterval:endTimeInterval:playPauseIndicator:", ^{
+ it(@"should properly initialize with initWithUpdateMode:startTime:endTime:audioStreamingIndicator:forwardSeekIndicator:backSeekIndicator:countRate:", ^{
+ SDLSetMediaClockTimer* testRequest = [[SDLSetMediaClockTimer alloc] initWithUpdateMode:testUpdateMode startTime:time1 endTime:time2 audioStreamingIndicator:testIndicator forwardSeekIndicator:forwardSeekTest backSeekIndicator:backSeekTest countRate:@(testCountRate)];
+
+ expect(testRequest.startTime).to(equal(time1));
+ expect(testRequest.endTime).to(equal(time2));
+ expect(testRequest.updateMode).to(equal(SDLUpdateModeCountUp));
+ expect(testRequest.audioStreamingIndicator).to(equal(SDLAudioStreamingIndicatorPlayPause));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.countRate).to(equal(testCountRate));
+ });
+
+ it(@"should properly initialize with countUpFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countUpFromStartTimeInterval:testTime1Interval toEndTimeInterval:testTime2Interval playPauseIndicator:testIndicator];
+#pragma clang diagnostic pop
+
+ expect(testRequest.startTime).to(equal(time1));
+ expect(testRequest.endTime).to(equal(time2));
+ expect(testRequest.updateMode).to(equal(SDLUpdateModeCountUp));
+ expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(beNil());
+ expect(testRequest.backSeekIndicator).to(beNil());
+ expect(testRequest.countRate).to(beNil());
+ });
+
+ it(@"should properly initialize with countUpFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:", ^{
+ SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countUpFromStartTimeInterval:testTime1Interval toEndTimeInterval:testTime2Interval playPauseIndicator:testIndicator forwardSeekIndicator:forwardSeekTest backSeekIndicator:backSeekTest countRate:@(testCountRate)];
expect(testRequest.startTime).to(equal(time1));
expect(testRequest.endTime).to(equal(time2));
expect(testRequest.updateMode).to(equal(SDLUpdateModeCountUp));
expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.countRate).to(equal(testCountRate));
});
- it(@"should properly initialize with countUpWithStartTime:endTime:playPauseIndicator:", ^{
+ it(@"should properly initialize with countUpFromStartTime:toEndTime:playPauseIndicator:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countUpFromStartTime:time1 toEndTime:time2 playPauseIndicator:testIndicator];
+#pragma clang diagnostic pop
+
+ expect(testRequest.startTime).to(equal(time1));
+ expect(testRequest.endTime).to(equal(time2));
+ expect(testRequest.updateMode).to(equal(SDLUpdateModeCountUp));
+ expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(beNil());
+ expect(testRequest.backSeekIndicator).to(beNil());
+ expect(testRequest.countRate).to(beNil());
+ });
+
+ it(@"should properly initialize with countUpFromStartTime:toEndTime:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:", ^{
+ SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countUpFromStartTime:time1 toEndTime:time2 playPauseIndicator:testIndicator forwardSeekIndicator:forwardSeekTest backSeekIndicator:backSeekTest countRate:@(testCountRate)];
expect(testRequest.startTime).to(equal(time1));
expect(testRequest.endTime).to(equal(time2));
expect(testRequest.updateMode).to(equal(SDLUpdateModeCountUp));
expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.countRate).to(equal(testCountRate));
});
- it(@"should properly initialize with countUpWithStartTimeInterval:endTimeInterval:playPauseIndicator:", ^{
+ it(@"should properly initialize with countDownFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countDownFromStartTimeInterval:testTime1Interval toEndTimeInterval:testTime2Interval playPauseIndicator:testIndicator];
+#pragma clang diagnostic pop
expect(testRequest.startTime).to(equal(time1));
expect(testRequest.endTime).to(equal(time2));
expect(testRequest.updateMode).to(equal(SDLUpdateModeCountDown));
expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(beNil());
+ expect(testRequest.backSeekIndicator).to(beNil());
+ expect(testRequest.countRate).to(beNil());
});
- it(@"should properly initialize with countDownWithStartTime:endTime:playPauseIndicator:", ^{
+ it(@"should properly initialize with countDownFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:", ^{
+ SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countDownFromStartTimeInterval:testTime1Interval toEndTimeInterval:testTime2Interval playPauseIndicator:testIndicator forwardSeekIndicator:forwardSeekTest backSeekIndicator:backSeekTest countRate:@(testCountRate)];
+
+ expect(testRequest.startTime).to(equal(time1));
+ expect(testRequest.endTime).to(equal(time2));
+ expect(testRequest.updateMode).to(equal(SDLUpdateModeCountDown));
+ expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.countRate).to(equal(testCountRate));
+ });
+
+ it(@"should properly initialize with countDownFromStartTime:toEndTime:playPauseIndicator:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countDownFromStartTime:time1 toEndTime:time2 playPauseIndicator:testIndicator];
+#pragma clang diagnostic pop
expect(testRequest.startTime).to(equal(time1));
expect(testRequest.endTime).to(equal(time2));
expect(testRequest.updateMode).to(equal(SDLUpdateModeCountDown));
expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(beNil());
+ expect(testRequest.backSeekIndicator).to(beNil());
+ expect(testRequest.countRate).to(beNil());
});
- it(@"should properly initialize with pauseWithPlayPauseIndicator", ^{
+ it(@"should properly initialize with countDownFromStartTime:toEndTime:playPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:", ^{
+ SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer countDownFromStartTime:time1 toEndTime:time2 playPauseIndicator:testIndicator forwardSeekIndicator:forwardSeekTest backSeekIndicator:backSeekTest countRate:@(testCountRate)];
+
+ expect(testRequest.startTime).to(equal(time1));
+ expect(testRequest.endTime).to(equal(time2));
+ expect(testRequest.updateMode).to(equal(SDLUpdateModeCountDown));
+ expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.countRate).to(equal(testCountRate));
+ });
+
+ it(@"should properly initialize with pauseWithPlayPauseIndicator:", ^{
SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer pauseWithPlayPauseIndicator:testIndicator];
expect(testRequest.startTime).to(beNil());
@@ -117,12 +216,30 @@ describe(@"SetMediaClocktimer Spec", ^ {
});
it(@"should properly initialize with resumeWithPlayPauseIndicator:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer resumeWithPlayPauseIndicator:testIndicator];
+#pragma clang diagnostic pop
+
+ expect(testRequest.startTime).to(beNil());
+ expect(testRequest.endTime).to(beNil());
+ expect(testRequest.updateMode).to(equal(SDLUpdateModeResume));
+ expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.countRate).to(beNil());
+ });
+
+ it(@"should properly initialize with resumeWithPlayPauseIndicator:forwardSeekIndicator:backSeekIndicator:countRate:", ^{
+ SDLSetMediaClockTimer *testRequest = [SDLSetMediaClockTimer resumeWithPlayPauseIndicator:testIndicator forwardSeekIndicator:forwardSeekTest backSeekIndicator:backSeekTest countRate:@(testCountRate)];
expect(testRequest.startTime).to(beNil());
expect(testRequest.endTime).to(beNil());
expect(testRequest.updateMode).to(equal(SDLUpdateModeResume));
expect(testRequest.audioStreamingIndicator).to(equal(testIndicator));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.countRate).to(equal(testCountRate));
});
it(@"should properly initialize with clearWithPlayPauseIndicator:", ^{
@@ -135,7 +252,10 @@ describe(@"SetMediaClocktimer Spec", ^ {
});
it(@"should properly initialize with initWithUpdateMode:startTime:endTime:playPauseIndicator:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSetMediaClockTimer *testRequest = [[SDLSetMediaClockTimer alloc] initWithUpdateMode:testUpdateMode startTime:time1 endTime:time2 playPauseIndicator:testIndicator];
+#pragma clang diagnostic pop
expect(testRequest.startTime).to(equal(time1));
expect(testRequest.endTime).to(equal(time2));
@@ -151,11 +271,17 @@ describe(@"SetMediaClocktimer Spec", ^ {
testRequest.endTime = time2;
testRequest.updateMode = SDLUpdateModeCountUp;
testRequest.audioStreamingIndicator = SDLAudioStreamingIndicatorPlayPause;
+ testRequest.forwardSeekIndicator = forwardSeekTest;
+ testRequest.backSeekIndicator = backSeekTest;
+ testRequest.countRate = @(testCountRate);
expect(testRequest.startTime).to(equal(time1));
expect(testRequest.endTime).to(equal(time2));
expect(testRequest.updateMode).to(equal(SDLUpdateModeCountUp));
expect(testRequest.audioStreamingIndicator).to(equal(SDLAudioStreamingIndicatorPlayPause));
+ expect(testRequest.forwardSeekIndicator).to(equal(forwardSeekTest));
+ expect(testRequest.backSeekIndicator).to(equal(backSeekTest));
+ expect(testRequest.countRate).to(equal(testCountRate));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m
index 8cd897977..ddfd6333e 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m
@@ -20,57 +20,81 @@
QuickSpecBegin(SDLShowSpec)
-SDLImage* image1 = [[SDLImage alloc] init];
-SDLImage* image2 = [[SDLImage alloc] init];
-SDLSoftButton* button = [[SDLSoftButton alloc] init];
-
-NSArray<SDLMetadataType> *formatArray = @[SDLMetadataTypeMediaArtist,SDLMetadataTypeMediaTitle];
-SDLMetadataTags* testMetadata = [[SDLMetadataTags alloc] initWithTextFieldTypes:formatArray mainField2:formatArray mainField3:formatArray mainField4:formatArray];
-
describe(@"Getter/Setter Tests", ^ {
- __block SDLTemplateConfiguration *testTemplateConfig = nil;
+ __block NSString *testString1 = @"Test 1";
+ __block NSString *testString2 = @"Test 2";
+ __block NSString *testString3 = @"Test 3";
+ __block NSString *testString4 = @"Test 4";
+ __block NSString *testStatusBarString = @"Test Status";
+ __block NSString *testMediaClockString = @"Test Clock";
+ __block NSString *testMediaTrackString = @"Test Track";
+ __block NSString *testTemplateTitleString = @"Hello World";
+ __block SDLImage *testGraphic = nil;
+ __block SDLImage *testSecondaryGraphic = nil;
+ __block NSArray<NSString *> *testCustomPresets = nil;
+ __block SDLSoftButton *testButton = nil;
+ __block NSArray<SDLSoftButton *> *testSoftButtons = nil;
+ __block SDLMetadataType testType1 = SDLMetadataTypeHumidity;
+ __block SDLMetadataType testType2 = SDLMetadataTypeRating;
+ __block SDLMetadataType testType3 = SDLMetadataTypeMediaYear;
+ __block SDLMetadataType testType4 = SDLMetadataTypeWeatherTerm;
+ __block SDLTextAlignment testAlignment = SDLTextAlignmentCenter;
+ __block SDLMetadataTags *testMetadata = nil;
+ __block SDLTemplateConfiguration *testTemplateConfiguration = nil;
__block int testWindowID = 4;
beforeEach(^{
- testTemplateConfig = [[SDLTemplateConfiguration alloc] initWithPredefinedLayout:SDLPredefinedLayoutMedia];
+ testGraphic = [[SDLImage alloc] initWithName:@"test name" isTemplate:false];
+ testSecondaryGraphic = [[SDLImage alloc] initWithName:@"test name 2" isTemplate:false];
+ testCustomPresets = @[testString1];
+ testButton = [[SDLSoftButton alloc] initWithType:SDLSoftButtonTypeText text:@"Test Button" image:nil highlighted:NO buttonId:0 systemAction:nil handler:nil];
+ testSoftButtons = @[testButton];
+ testMetadata = [[SDLMetadataTags alloc] initWithTextFieldTypes:@[testType1] mainField2:@[testType2] mainField3:@[testType3] mainField4:@[testType4]];
+ testTemplateConfiguration = [[SDLTemplateConfiguration alloc] initWithPredefinedLayout:SDLPredefinedLayoutMedia];
});
it(@"Should set and get correctly", ^ {
SDLShow* testRequest = [[SDLShow alloc] init];
- testRequest.mainField1 = @"field1";
- testRequest.mainField2 = @"field2";
- testRequest.mainField3 = @"field3";
- testRequest.mainField4 = @"field4";
+ testRequest.mainField1 = testString1;
+ testRequest.mainField2 = testString2;
+ testRequest.mainField3 = testString3;
+ testRequest.mainField4 = testString4;
testRequest.alignment = SDLTextAlignmentLeft;
- testRequest.statusBar = @"status";
- testRequest.mediaClock = @"TheTime";
- testRequest.mediaTrack = @"In The Clear";
- testRequest.templateTitle = @"Hello World";
- testRequest.graphic = image1;
- testRequest.secondaryGraphic = image2;
- testRequest.softButtons = [@[button] mutableCopy];
- testRequest.customPresets = [@[@"preset1", @"preset2"] mutableCopy];
+ testRequest.statusBar = testStatusBarString;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testRequest.mediaClock = testMediaClockString;
+#pragma clang diagnostic pop
+ testRequest.mediaTrack = testMediaTrackString;
+ testRequest.templateTitle = testTemplateTitleString;
+ testRequest.graphic = testGraphic;
+ testRequest.secondaryGraphic = testSecondaryGraphic;
+ testRequest.softButtons = testSoftButtons;
+ testRequest.customPresets = testCustomPresets;
testRequest.metadataTags = testMetadata;
testRequest.windowID = @(testWindowID);
- testRequest.templateConfiguration = testTemplateConfig;
+ testRequest.templateConfiguration = testTemplateConfiguration;
- expect(testRequest.mainField1).to(equal(@"field1"));
- expect(testRequest.mainField2).to(equal(@"field2"));
- expect(testRequest.mainField3).to(equal(@"field3"));
- expect(testRequest.mainField4).to(equal(@"field4"));
+ expect(testRequest.mainField1).to(equal(testString1));
+ expect(testRequest.mainField2).to(equal(testString2));
+ expect(testRequest.mainField3).to(equal(testString3));
+ expect(testRequest.mainField4).to(equal(testString4));
expect(testRequest.alignment).to(equal(SDLTextAlignmentLeft));
- expect(testRequest.statusBar).to(equal(@"status"));
- expect(testRequest.mediaClock).to(equal(@"TheTime"));
- expect(testRequest.mediaTrack).to(equal(@"In The Clear"));
- expect(testRequest.templateTitle).to(equal(@"Hello World"));
- expect(testRequest.graphic).to(equal(image1));
- expect(testRequest.secondaryGraphic).to(equal(image2));
- expect(testRequest.softButtons).to(equal([@[button] mutableCopy]));
- expect(testRequest.customPresets).to(equal([@[@"preset1", @"preset2"] mutableCopy]));
+ expect(testRequest.statusBar).to(equal(testStatusBarString));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.mediaClock).to(equal(testMediaClockString));
+#pragma clang diagnostic pop
+ expect(testRequest.mediaTrack).to(equal(testMediaTrackString));
+ expect(testRequest.templateTitle).to(equal(testTemplateTitleString));
+ expect(testRequest.graphic).to(equal(testGraphic));
+ expect(testRequest.secondaryGraphic).to(equal(testSecondaryGraphic));
+ expect(testRequest.softButtons).to(equal(testSoftButtons));
+ expect(testRequest.customPresets).to(equal(testCustomPresets));
expect(testRequest.metadataTags).to(equal(testMetadata));
expect(testRequest.windowID).to(equal(testWindowID));
- expect(testRequest.templateConfiguration).to(equal(testTemplateConfig));
+ expect(testRequest.templateConfiguration).to(equal(testTemplateConfiguration));
});
it(@"Should return nil if not set", ^{
@@ -82,7 +106,10 @@ describe(@"Getter/Setter Tests", ^ {
expect(testRequest.mainField4).to(beNil());
expect(testRequest.alignment).to(beNil());
expect(testRequest.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testRequest.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testRequest.mediaTrack).to(beNil());
expect(testRequest.templateTitle).to(beNil());
expect(testRequest.graphic).to(beNil());
@@ -95,42 +122,21 @@ describe(@"Getter/Setter Tests", ^ {
});
describe(@"initializing", ^{
- __block NSString *testString1 = @"Test 1";
- __block NSString *testString2 = @"Test 2";
- __block NSString *testString3 = @"Test 3";
- __block NSString *testString4 = @"Test 4";
- __block NSString *testStatusBarString = @"Test Status";
- __block NSString *testMediaClockString = @"Test Clock";
- __block NSString *testMediaTrackString = @"Test Track";
- __block NSString *testTemplateTitleString = @"Hello World";
- __block SDLImage *testGraphic = nil;
- __block NSArray<NSString *> *testCustomPresets = nil;
- __block SDLSoftButton *testButton = nil;
- __block NSArray<SDLSoftButton *> *testSoftButtons = nil;
- __block SDLMetadataType testType1 = SDLMetadataTypeHumidity;
- __block SDLMetadataType testType2 = SDLMetadataTypeRating;
- __block SDLMetadataType testType3 = SDLMetadataTypeMediaYear;
- __block SDLMetadataType testType4 = SDLMetadataTypeWeatherTerm;
- __block SDLTextAlignment testAlignment = SDLTextAlignmentCenter;
- __block SDLMetadataTags *testTags = nil;
-
- beforeEach(^{
- testGraphic = [[SDLImage alloc] initWithName:@"test name" isTemplate:false];
- testCustomPresets = @[testString1];
- testButton = [[SDLSoftButton alloc] initWithType:SDLSoftButtonTypeText text:@"Test Button" image:nil highlighted:NO buttonId:0 systemAction:nil handler:nil];
- testSoftButtons = @[testButton];
- testTags = [[SDLMetadataTags alloc] initWithTextFieldTypes:@[testType1] mainField2:@[testType2] mainField3:@[testType3] mainField4:@[testType4]];
- });
-
it(@"should initialize with initWithMainField1:mainField2:alignment:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField2:testString2 alignment:testAlignment];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(equal(testString1));
expect(testShow.mainField2).to(equal(testString2));
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(equal(testAlignment));
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -139,14 +145,20 @@ describe(@"Getter/Setter Tests", ^ {
expect(testShow.customPresets).to(beNil());
expect(testShow.metadataTags).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testShow = [[SDLShow alloc] initWithMainField1:nil mainField2:nil alignment:nil];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(beNil());
expect(testShow.mainField2).to(beNil());
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(beNil());
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -157,14 +169,20 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"should initialize correctly with initWithMainField1:mainField1Type:mainField2:mainField2Type:alignment:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField1Type:testType1 mainField2:testString2 mainField2Type:testType2 alignment:testAlignment];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(equal(testString1));
expect(testShow.mainField2).to(equal(testString2));
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(equal(testAlignment));
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -176,14 +194,20 @@ describe(@"Getter/Setter Tests", ^ {
expect(testShow.metadataTags.mainField3).to(beNil());
expect(testShow.metadataTags.mainField4).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testShow = [[SDLShow alloc] initWithMainField1:nil mainField1Type:nil mainField2:nil mainField2Type:nil alignment:nil];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(beNil());
expect(testShow.mainField2).to(beNil());
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(beNil());
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -194,14 +218,20 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"should initialize correctly with initWithMainField1:mainField2:mainField3:mainField4:alignment:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField2:testString2 mainField3:testString3 mainField4:testString4 alignment:testAlignment];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(equal(testString1));
expect(testShow.mainField2).to(equal(testString2));
expect(testShow.mainField3).to(equal(testString3));
expect(testShow.mainField4).to(equal(testString4));
expect(testShow.alignment).to(equal(testAlignment));
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -213,14 +243,20 @@ describe(@"Getter/Setter Tests", ^ {
expect(testShow.metadataTags.mainField3).to(beNil());
expect(testShow.metadataTags.mainField4).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testShow = [[SDLShow alloc] initWithMainField1:nil mainField2:nil mainField3:nil mainField4:nil alignment:nil];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(beNil());
expect(testShow.mainField2).to(beNil());
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(beNil());
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -231,14 +267,20 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"should initialize correctly with initWithMainField1:mainField1Type:mainField2:mainField2Type:mainField3:mainField3Type:mainField4:mainField4Type:alignment:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField1Type:testType1 mainField2:testString2 mainField2Type:testType2 mainField3:testString3 mainField3Type:testType3 mainField4:testString4 mainField4Type:testType4 alignment:testAlignment];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(equal(testString1));
expect(testShow.mainField2).to(equal(testString2));
expect(testShow.mainField3).to(equal(testString3));
expect(testShow.mainField4).to(equal(testString4));
expect(testShow.alignment).to(equal(testAlignment));
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -250,14 +292,20 @@ describe(@"Getter/Setter Tests", ^ {
expect(testShow.metadataTags.mainField3).to(contain(testType3));
expect(testShow.metadataTags.mainField4).to(contain(testType4));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testShow = [[SDLShow alloc] initWithMainField1:nil mainField1Type:nil mainField2:nil mainField2Type:nil mainField3:nil mainField3Type:nil mainField4:nil mainField4Type:nil alignment:nil];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(beNil());
expect(testShow.mainField2).to(beNil());
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(beNil());
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -268,14 +316,20 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"should initialize correctly with initWithMainField1:mainField2:alignment:statusBar:mediaClock:mediaTrack:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField2:testString2 alignment:testAlignment statusBar:testStatusBarString mediaClock:testMediaClockString mediaTrack:testMediaTrackString];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(equal(testString1));
expect(testShow.mainField2).to(equal(testString2));
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(equal(testAlignment));
expect(testShow.statusBar).to(equal(testStatusBarString));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(equal(testMediaClockString));
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(equal(testMediaTrackString));
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -287,14 +341,20 @@ describe(@"Getter/Setter Tests", ^ {
expect(testShow.metadataTags.mainField3).to(beNil());
expect(testShow.metadataTags.mainField4).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testShow = [[SDLShow alloc] initWithMainField1:nil mainField2:nil alignment:nil statusBar:nil mediaClock:nil mediaTrack:nil];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(beNil());
expect(testShow.mainField2).to(beNil());
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(beNil());
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -305,14 +365,20 @@ describe(@"Getter/Setter Tests", ^ {
});
it(@"should initialize correctly with initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaClock:mediaTrack:graphic:softButtons:customPresets:textFieldMetadata:", ^{
- SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField2:testString2 mainField3:testString3 mainField4:testString4 alignment:testAlignment statusBar:testStatusBarString mediaClock:testMediaClockString mediaTrack:testMediaTrackString graphic:testGraphic softButtons:testSoftButtons customPresets:testCustomPresets textFieldMetadata:testTags];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField2:testString2 mainField3:testString3 mainField4:testString4 alignment:testAlignment statusBar:testStatusBarString mediaClock:testMediaClockString mediaTrack:testMediaTrackString graphic:testGraphic softButtons:testSoftButtons customPresets:testCustomPresets textFieldMetadata:testMetadata];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(equal(testString1));
expect(testShow.mainField2).to(equal(testString2));
expect(testShow.mainField3).to(equal(testString3));
expect(testShow.mainField4).to(equal(testString4));
expect(testShow.alignment).to(equal(testAlignment));
expect(testShow.statusBar).to(equal(testStatusBarString));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(equal(testMediaClockString));
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(equal(testMediaTrackString));
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(equal(testGraphic));
@@ -324,14 +390,20 @@ describe(@"Getter/Setter Tests", ^ {
expect(testShow.metadataTags.mainField3).to(contain(testType3));
expect(testShow.metadataTags.mainField4).to(contain(testType4));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
testShow = [[SDLShow alloc] initWithMainField1:nil mainField2:nil mainField3:nil mainField4:nil alignment:nil statusBar:nil mediaClock:nil mediaTrack:nil graphic:nil softButtons:nil customPresets:nil textFieldMetadata:nil];
+#pragma clang diagnostic pop
expect(testShow.mainField1).to(beNil());
expect(testShow.mainField2).to(beNil());
expect(testShow.mainField3).to(beNil());
expect(testShow.mainField4).to(beNil());
expect(testShow.alignment).to(beNil());
expect(testShow.statusBar).to(beNil());
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testShow.mediaClock).to(beNil());
+#pragma clang diagnostic pop
expect(testShow.mediaTrack).to(beNil());
expect(testShow.templateTitle).to(beNil());
expect(testShow.graphic).to(beNil());
@@ -341,45 +413,70 @@ describe(@"Getter/Setter Tests", ^ {
expect(testShow.metadataTags).to(beNil());
});
+ it(@"should initialize correctly with initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaTrack:graphic:secondaryGraphic:softButtons:customPresets:metadataTags:templateTitle:windowID:templateConfiguration:", ^{
+ SDLShow *testShow = [[SDLShow alloc] initWithMainField1:testString1 mainField2:testString2 mainField3:testString3 mainField4:testString4 alignment:testAlignment statusBar:testStatusBarString mediaTrack:testMediaTrackString graphic:testGraphic secondaryGraphic:testSecondaryGraphic softButtons:testSoftButtons customPresets:testCustomPresets metadataTags:testMetadata templateTitle:testTemplateTitleString windowID:@(testWindowID) templateConfiguration:testTemplateConfiguration];
+ expect(testShow.mainField1).to(equal(testString1));
+ expect(testShow.mainField2).to(equal(testString2));
+ expect(testShow.mainField3).to(equal(testString3));
+ expect(testShow.mainField4).to(equal(testString4));
+ expect(testShow.alignment).to(equal(testAlignment));
+ expect(testShow.statusBar).to(equal(testStatusBarString));
+ expect(testShow.mediaTrack).to(equal(testMediaTrackString));
+ expect(testShow.graphic).to(equal(testGraphic));
+ expect(testShow.secondaryGraphic).to(equal(testSecondaryGraphic));
+ expect(testShow.softButtons).to(contain(testButton));
+ expect(testShow.customPresets).to(contain(testString1));
+ expect(testShow.metadataTags.mainField1).to(contain(testType1));
+ expect(testShow.metadataTags.mainField2).to(contain(testType2));
+ expect(testShow.metadataTags.mainField3).to(contain(testType3));
+ expect(testShow.metadataTags.mainField4).to(contain(testType4));
+ expect(testShow.templateTitle).to(equal(testTemplateTitleString));
+ expect(testShow.windowID).to(equal(@(testWindowID)));
+ expect(testShow.templateConfiguration).to(equal(testTemplateConfiguration));
+ });
+
it(@"Should get correctly when initialized with a dictionary", ^ {
NSMutableDictionary* dict = [@{SDLRPCParameterNameRequest:
@{SDLRPCParameterNameParameters:
- @{SDLRPCParameterNameMainField1:@"field1",
- SDLRPCParameterNameMainField2:@"field2",
- SDLRPCParameterNameMainField3:@"field3",
- SDLRPCParameterNameMainField4:@"field4",
+ @{SDLRPCParameterNameMainField1:testString1,
+ SDLRPCParameterNameMainField2:testString2,
+ SDLRPCParameterNameMainField3:testString3,
+ SDLRPCParameterNameMainField4:testString4,
SDLRPCParameterNameAlignment:SDLTextAlignmentLeft,
- SDLRPCParameterNameStatusBar:@"status",
- SDLRPCParameterNameMediaClock:@"TheTime",
- SDLRPCParameterNameMediaTrack:@"In The Clear",
- SDLRPCParameterNameTemplateTitle: @"Hello World",
- SDLRPCParameterNameGraphic:image1,
- SDLRPCParameterNameSecondaryGraphic:image2,
- SDLRPCParameterNameSoftButtons:[@[button] mutableCopy],
- SDLRPCParameterNameCustomPresets:[@[@"preset1", @"preset2"] mutableCopy],
+ SDLRPCParameterNameStatusBar:testStatusBarString,
+ SDLRPCParameterNameMediaClock:testMediaClockString,
+ SDLRPCParameterNameMediaTrack:testMediaTrackString,
+ SDLRPCParameterNameTemplateTitle: testTemplateTitleString,
+ SDLRPCParameterNameGraphic:testGraphic,
+ SDLRPCParameterNameSecondaryGraphic:testSecondaryGraphic,
+ SDLRPCParameterNameSoftButtons:testSoftButtons,
+ SDLRPCParameterNameCustomPresets:testCustomPresets,
SDLRPCParameterNameMetadataTags:testMetadata,
SDLRPCParameterNameWindowId:@(testWindowID),
- SDLRPCParameterNameTemplateConfiguration:testTemplateConfig
+ SDLRPCParameterNameTemplateConfiguration:testTemplateConfiguration
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameShow}} mutableCopy];
SDLShow* testRequest = [[SDLShow alloc] initWithDictionary:dict];
- expect(testRequest.mainField1).to(equal(@"field1"));
- expect(testRequest.mainField2).to(equal(@"field2"));
- expect(testRequest.mainField3).to(equal(@"field3"));
- expect(testRequest.mainField4).to(equal(@"field4"));
+ expect(testRequest.mainField1).to(equal(testString1));
+ expect(testRequest.mainField2).to(equal(testString2));
+ expect(testRequest.mainField3).to(equal(testString3));
+ expect(testRequest.mainField4).to(equal(testString4));
expect(testRequest.alignment).to(equal(SDLTextAlignmentLeft));
- expect(testRequest.statusBar).to(equal(@"status"));
- expect(testRequest.mediaClock).to(equal(@"TheTime"));
- expect(testRequest.mediaTrack).to(equal(@"In The Clear"));
+ expect(testRequest.statusBar).to(equal(testStatusBarString));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.mediaClock).to(equal(testMediaClockString));
+#pragma clang diagnostic pop
+ expect(testRequest.mediaTrack).to(equal(testMediaTrackString));
expect(testRequest.templateTitle).to(equal(testTemplateTitleString));
- expect(testRequest.graphic).to(equal(image1));
- expect(testRequest.secondaryGraphic).to(equal(image2));
- expect(testRequest.softButtons).to(equal([@[button] mutableCopy]));
- expect(testRequest.customPresets).to(equal([@[@"preset1", @"preset2"] mutableCopy]));
+ expect(testRequest.graphic).to(equal(testGraphic));
+ expect(testRequest.secondaryGraphic).to(equal(testSecondaryGraphic));
+ expect(testRequest.softButtons).to(equal(testSoftButtons));
+ expect(testRequest.customPresets).to(equal(testCustomPresets));
expect(testRequest.metadataTags).to(equal(testMetadata));
expect(testRequest.windowID).to(equal(testWindowID));
- expect(testRequest.templateConfiguration).to(equal(testTemplateConfig));
+ expect(testRequest.templateConfiguration).to(equal(testTemplateConfiguration));
});
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
index 7e3a98f36..558bca573 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m
@@ -30,9 +30,9 @@ describe(@"getter/setter tests", ^{
testRequest.emergencyEvent = @YES;
testRequest.engineOilLife = @YES;
testRequest.engineTorque = @YES;
- testRequest.externalTemperature = @YES;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testRequest.externalTemperature = @YES;
testRequest.fuelLevel = @YES;
testRequest.fuelLevel_State = @YES;
#pragma clang diagnostic pop
@@ -49,6 +49,7 @@ describe(@"getter/setter tests", ^{
testRequest.prndl = @YES;
#pragma clang diagnostic pop
testRequest.rpm = @YES;
+ testRequest.seatOccupancy = @YES;
testRequest.speed = @YES;
testRequest.stabilityControlsStatus = @YES;
testRequest.steeringWheelAngle = @YES;
@@ -56,6 +57,7 @@ describe(@"getter/setter tests", ^{
testRequest.turnSignal = @YES;
testRequest.windowStatus = @YES;
testRequest.wiperStatus = @YES;
+ testRequest.climateData = @YES;
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -71,9 +73,9 @@ describe(@"getter/setter tests", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic pop
@@ -90,6 +92,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -97,6 +100,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
@@ -135,6 +139,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNamePRNDL:@YES,
#pragma clang diagnostic pop
SDLRPCParameterNameRPM:@YES,
+ SDLRPCParameterNameSeatOccupancy:@YES,
SDLRPCParameterNameSpeed:@YES,
SDLRPCParameterNameStabilityControlsStatus:@YES,
SDLRPCParameterNameSteeringWheelAngle:@YES,
@@ -142,6 +147,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNameTurnSignal:@YES,
SDLRPCParameterNameWindowStatus:@YES,
SDLRPCParameterNameWiperStatus:@YES,
+ SDLRPCParameterNameClimateData:@YES,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeVehicleData}};
SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithDictionary:dict];
@@ -160,9 +166,9 @@ describe(@"getter/setter tests", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic pop
@@ -179,6 +185,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -186,6 +193,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
});
@@ -208,9 +216,9 @@ describe(@"test initializers", ^{
expect(testRequest.emergencyEvent).to(beNil());
expect(testRequest.engineOilLife).to(beNil());
expect(testRequest.engineTorque).to(beNil());
- expect(testRequest.externalTemperature).to(beNil());
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(beNil());
expect(testRequest.fuelLevel).to(beNil());
expect(testRequest.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -227,6 +235,7 @@ describe(@"test initializers", ^{
expect(testRequest.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testRequest.rpm).to(beNil());
+ expect(testRequest.seatOccupancy).to(beNil());
expect(testRequest.speed).to(beNil());
expect(testRequest.stabilityControlsStatus).to(beNil());
expect(testRequest.steeringWheelAngle).to(beNil());
@@ -234,11 +243,66 @@ describe(@"test initializers", ^{
expect(testRequest.turnSignal).to(beNil());
expect(testRequest.windowStatus).to(beNil());
expect(testRequest.wiperStatus).to(beNil());
+ expect(testRequest.climateData).to(beNil());
+ });
+ });
+
+ context(@"initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithAccelerationPedalPosition:YES airbagStatus:YES beltStatus:YES bodyInformation:YES cloudAppVehicleID:YES clusterModeStatus:YES deviceStatus:YES driverBraking:YES eCallInfo:YES electronicParkBrakeStatus:YES emergencyEvent:YES engineOilLife:YES engineTorque:YES externalTemperature:YES fuelLevel:YES fuelLevelState:YES fuelRange:YES gps:YES headLampStatus:YES instantFuelConsumption:YES myKey:YES odometer:YES prndl:YES rpm:YES speed:YES steeringWheelAngle:YES tirePressure:YES turnSignal:YES wiperStatus:YES];
+#pragma clang diagnostic pop
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
+ expect(testRequest.fuelLevel).to(equal(@YES));
+ expect(testRequest.fuelLevel_State).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(beNil());
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(beNil());
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(equal(@YES));
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(beNil());
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(beNil());
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(beNil());
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(beNil());
});
});
context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
+#pragma clang diagnostic pop
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -254,9 +318,57 @@ describe(@"test initializers", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testRequest.externalTemperature).to(equal(@YES));
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(beNil());
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(beNil());
+ });
+ });
+
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy:", ^{
+ SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES climateData:@YES turnSignal:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES windowStatus:@YES handsOffSteering:@YES seatOccupancy:@YES];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(beNil());
expect(testRequest.fuelLevel).to(beNil());
expect(testRequest.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -273,6 +385,7 @@ describe(@"test initializers", ^{
expect(testRequest.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -280,6 +393,7 @@ describe(@"test initializers", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
index f71889b5f..b2b52ad5e 100644
--- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m
@@ -30,9 +30,9 @@ describe(@"getter/setter tests", ^{
testRequest.emergencyEvent = @YES;
testRequest.engineOilLife = @YES;
testRequest.engineTorque = @YES;
- testRequest.externalTemperature = @YES;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testRequest.externalTemperature = @YES;
testRequest.fuelLevel = @YES;
testRequest.fuelLevel_State = @YES;
#pragma clang diagnostic pop
@@ -49,6 +49,7 @@ describe(@"getter/setter tests", ^{
testRequest.prndl = @YES;
#pragma clang diagnostic pop
testRequest.rpm = @YES;
+ testRequest.seatOccupancy = @YES;
testRequest.speed = @YES;
testRequest.stabilityControlsStatus = @YES;
testRequest.steeringWheelAngle = @YES;
@@ -56,6 +57,7 @@ describe(@"getter/setter tests", ^{
testRequest.turnSignal = @YES;
testRequest.windowStatus = @YES;
testRequest.wiperStatus = @YES;
+ testRequest.climateData = @YES;
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -71,9 +73,9 @@ describe(@"getter/setter tests", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic pop
@@ -90,12 +92,14 @@ describe(@"getter/setter tests", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
expect(testRequest.tirePressure).to(equal(@YES));
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
@@ -134,6 +138,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNamePRNDL:@YES,
#pragma clang diagnostic pop
SDLRPCParameterNameRPM:@YES,
+ SDLRPCParameterNameSeatOccupancy:@YES,
SDLRPCParameterNameSpeed:@YES,
SDLRPCParameterNameStabilityControlsStatus:@YES,
SDLRPCParameterNameSteeringWheelAngle:@YES,
@@ -141,6 +146,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNameTurnSignal:@YES,
SDLRPCParameterNameWindowStatus:@YES,
SDLRPCParameterNameWiperStatus:@YES,
+ SDLRPCParameterNameClimateData:@YES,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}};
SDLUnsubscribeVehicleData* testRequest = [[SDLUnsubscribeVehicleData alloc] initWithDictionary:dict];
@@ -159,9 +165,9 @@ describe(@"getter/setter tests", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic pop
@@ -178,6 +184,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -185,6 +192,7 @@ describe(@"getter/setter tests", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
});
@@ -207,9 +215,9 @@ describe(@"test initializers", ^{
expect(testRequest.emergencyEvent).to(beNil());
expect(testRequest.engineOilLife).to(beNil());
expect(testRequest.engineTorque).to(beNil());
- expect(testRequest.externalTemperature).to(beNil());
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(beNil());
expect(testRequest.fuelLevel).to(beNil());
expect(testRequest.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -226,6 +234,7 @@ describe(@"test initializers", ^{
expect(testRequest.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testRequest.rpm).to(beNil());
+ expect(testRequest.seatOccupancy).to(beNil());
expect(testRequest.speed).to(beNil());
expect(testRequest.stabilityControlsStatus).to(beNil());
expect(testRequest.steeringWheelAngle).to(beNil());
@@ -233,6 +242,7 @@ describe(@"test initializers", ^{
expect(testRequest.turnSignal).to(beNil());
expect(testRequest.windowStatus).to(beNil());
expect(testRequest.wiperStatus).to(beNil());
+ expect(testRequest.climateData).to(beNil());
});
});
@@ -256,9 +266,9 @@ describe(@"test initializers", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(equal(@YES));
expect(testRequest.fuelLevel_State).to(equal(@YES));
#pragma clang diagnostic push
@@ -275,17 +285,19 @@ describe(@"test initializers", ^{
expect(testRequest.prndl).to(equal(@YES));
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(beNil());
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(beNil());
expect(testRequest.steeringWheelAngle).to(equal(@YES));
expect(testRequest.tirePressure).to(equal(@YES));
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(beNil());
});
});
context (@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:", ^{
- SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
+ SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES externalTemperature:@YES turnSignal:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES handsOffSteering:@YES windowStatus:@YES];
it(@"expect all properties to be set properly", ^{
expect(testRequest.accPedalPosition).to(equal(@YES));
@@ -301,9 +313,9 @@ describe(@"test initializers", ^{
expect(testRequest.emergencyEvent).to(equal(@YES));
expect(testRequest.engineOilLife).to(equal(@YES));
expect(testRequest.engineTorque).to(equal(@YES));
- expect(testRequest.externalTemperature).to(equal(@YES));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(equal(@YES));
expect(testRequest.fuelLevel).to(beNil());
expect(testRequest.fuelLevel_State).to(beNil());
#pragma clang diagnostic push
@@ -320,6 +332,7 @@ describe(@"test initializers", ^{
expect(testRequest.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(beNil());
expect(testRequest.speed).to(equal(@YES));
expect(testRequest.stabilityControlsStatus).to(equal(@YES));
expect(testRequest.steeringWheelAngle).to(equal(@YES));
@@ -327,7 +340,58 @@ describe(@"test initializers", ^{
expect(testRequest.turnSignal).to(equal(@YES));
expect(testRequest.windowStatus).to(equal(@YES));
expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(beNil());
+ });
+ });
+ context (@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:windowStatus:handsOffSteering:seatOccupancy:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLUnsubscribeVehicleData *testRequest = [[SDLUnsubscribeVehicleData alloc] initWithGps:@YES speed:@YES rpm:@YES instantFuelConsumption:@YES fuelRange:@YES climateData:@YES turnSignal:@YES gearStatus:@YES tirePressure:@YES odometer:@YES beltStatus:@YES bodyInformation:@YES deviceStatus:@YES driverBraking:@YES wiperStatus:@YES headLampStatus:@YES engineTorque:@YES accPedalPosition:@YES steeringWheelAngle:@YES engineOilLife:@YES electronicParkBrakeStatus:@YES cloudAppVehicleID:@YES stabilityControlsStatus:@YES eCallInfo:@YES airbagStatus:@YES emergencyEvent:@YES clusterModeStatus:@YES myKey:@YES windowStatus:@YES handsOffSteering:@YES seatOccupancy:@YES];
+#pragma clang diagnostic pop
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testRequest.accPedalPosition).to(equal(@YES));
+ expect(testRequest.airbagStatus).to(equal(@YES));
+ expect(testRequest.beltStatus).to(equal(@YES));
+ expect(testRequest.bodyInformation).to(equal(@YES));
+ expect(testRequest.cloudAppVehicleID).to(equal(@YES));
+ expect(testRequest.clusterModeStatus).to(equal(@YES));
+ expect(testRequest.deviceStatus).to(equal(@YES));
+ expect(testRequest.driverBraking).to(equal(@YES));
+ expect(testRequest.eCallInfo).to(equal(@YES));
+ expect(testRequest.electronicParkBrakeStatus).to(equal(@YES));
+ expect(testRequest.emergencyEvent).to(equal(@YES));
+ expect(testRequest.engineOilLife).to(equal(@YES));
+ expect(testRequest.engineTorque).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.externalTemperature).to(beNil());
+ expect(testRequest.fuelLevel).to(beNil());
+ expect(testRequest.fuelLevel_State).to(beNil());
+#pragma clang diagnostic push
+ expect(testRequest.fuelRange).to(equal(@YES));
+ expect(testRequest.gearStatus).to(equal(@YES));
+ expect(testRequest.gps).to(equal(@YES));
+ expect(testRequest.handsOffSteering).to(equal(@YES));
+ expect(testRequest.headLampStatus).to(equal(@YES));
+ expect(testRequest.instantFuelConsumption).to(equal(@YES));
+ expect(testRequest.myKey).to(equal(@YES));
+ expect(testRequest.odometer).to(equal(@YES));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testRequest.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testRequest.rpm).to(equal(@YES));
+ expect(testRequest.seatOccupancy).to(equal(@YES));
+ expect(testRequest.speed).to(equal(@YES));
+ expect(testRequest.stabilityControlsStatus).to(equal(@YES));
+ expect(testRequest.steeringWheelAngle).to(equal(@YES));
+ expect(testRequest.tirePressure).to(equal(@YES));
+ expect(testRequest.turnSignal).to(equal(@YES));
+ expect(testRequest.windowStatus).to(equal(@YES));
+ expect(testRequest.wiperStatus).to(equal(@YES));
+ expect(testRequest.climateData).to(equal(@YES));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
index 091dd83ba..2c13dcd80 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m
@@ -50,6 +50,8 @@ SDLElectronicParkBrakeStatus electronicParkBrakeStatus = SDLElectronicParkBrakeS
const BOOL handsOffSteering = YES;
SDLStabilityControlsStatus *stabilityControlsStatus = [[SDLStabilityControlsStatus alloc] init];
NSArray<SDLWindowStatus *> *windowStatus = @[[[SDLWindowStatus alloc] init], [[SDLWindowStatus alloc] init]];
+SDLClimateData *climateData = [[SDLClimateData alloc] init];
+SDLSeatOccupancy *seatOccupancy = [[SDLSeatOccupancy alloc] init];
describe(@"getter/setter tests", ^{
context(@"init and assign", ^{
@@ -67,9 +69,9 @@ describe(@"getter/setter tests", ^{
testResponse.emergencyEvent = emergencyEvent;
testResponse.engineOilLife = @(engineOilLife);
testResponse.engineTorque = @(engineTorque);
- testResponse.externalTemperature = @(externalTemperature);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.externalTemperature = @(externalTemperature);
testResponse.fuelLevel = @(fuelLevel);
testResponse.fuelLevel_State = fuelLevel_State;
#pragma clang diagnostic pop
@@ -86,6 +88,7 @@ describe(@"getter/setter tests", ^{
testResponse.prndl = prndl;
#pragma clang diagnostic pop
testResponse.rpm = @(rpm);
+ testResponse.seatOccupancy = seatOccupancy;
testResponse.speed = @(speed);
testResponse.stabilityControlsStatus = stabilityControlsStatus;
testResponse.steeringWheelAngle = @(steeringWheelAngle);
@@ -94,6 +97,7 @@ describe(@"getter/setter tests", ^{
testResponse.vin = vin;
testResponse.windowStatus = windowStatus;
testResponse.wiperStatus = wiperStatus;
+ testResponse.climateData = climateData;
it(@"expect all properties to be set properly", ^{
expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
@@ -109,9 +113,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
expect(testResponse.engineTorque).to(equal(@(engineTorque)));
- expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
#pragma clang diagnostic pop
@@ -128,6 +132,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(prndl));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.seatOccupancy).to(equal(seatOccupancy));
expect(testResponse.speed).to(equal(@(speed)));
expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
@@ -136,6 +141,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.vin).to(equal(vin));
expect(testResponse.windowStatus).to(equal(windowStatus));
expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ expect(testResponse.climateData).to(equal(climateData));
});
});
@@ -174,6 +180,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNamePRNDL:prndl,
#pragma clang diagnostic pop
SDLRPCParameterNameRPM:@(rpm),
+ SDLRPCParameterNameSeatOccupancy:seatOccupancy,
SDLRPCParameterNameSpeed:@(speed),
SDLRPCParameterNameStabilityControlsStatus:stabilityControlsStatus,
SDLRPCParameterNameSteeringWheelAngle:@(steeringWheelAngle),
@@ -182,6 +189,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNameVIN:vin,
SDLRPCParameterNameWindowStatus:windowStatus,
SDLRPCParameterNameWiperStatus:wiperStatus,
+ SDLRPCParameterNameClimateData:climateData,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}};
SDLGetVehicleDataResponse* testResponse = [[SDLGetVehicleDataResponse alloc] initWithDictionary:dict];
@@ -200,9 +208,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
expect(testResponse.engineTorque).to(equal(@(engineTorque)));
- expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
expect(testResponse.fuelLevel).to(equal(@(fuelLevel)));
expect(testResponse.fuelLevel_State).to(equal(fuelLevel_State));
#pragma clang diagnostic pop
@@ -219,6 +227,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(prndl));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.seatOccupancy).to(equal(seatOccupancy));
expect(testResponse.speed).to(equal(@(speed)));
expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
@@ -227,6 +236,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.vin).to(equal(vin));
expect(testResponse.windowStatus).to(equal(windowStatus));
expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ expect(testResponse.climateData).to(equal(climateData));
});
});
@@ -246,9 +256,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(beNil());
expect(testResponse.engineOilLife).to(beNil());
expect(testResponse.engineTorque).to(beNil());
- expect(testResponse.externalTemperature).to(beNil());
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(beNil());
expect(testResponse.fuelLevel).to(beNil());
expect(testResponse.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -265,6 +275,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic push
expect(testResponse.rpm).to(beNil());
+ expect(testResponse.seatOccupancy).to(beNil());
expect(testResponse.speed).to(beNil());
expect(testResponse.stabilityControlsStatus).to(beNil());
expect(testResponse.steeringWheelAngle).to(beNil());
@@ -273,6 +284,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.vin).to(beNil());
expect(testResponse.windowStatus).to(beNil());
expect(testResponse.wiperStatus).to(beNil());
+ expect(testResponse.climateData).to(beNil());
});
});
@@ -292,9 +304,56 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
expect(testResponse.engineTorque).to(equal(@(engineTorque)));
- expect(testResponse.externalTemperature).to(equal(@(externalTemperature)));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(externalTemperature));
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(fuelRangeArray));
+ expect(testResponse.gearStatus).to(equal(gearStatus));
+ expect(testResponse.gps).to(equal(gps));
+ expect(testResponse.handsOffSteering).to(equal(@(handsOffSteering)));
+ expect(testResponse.headLampStatus).to(equal(headLampStatus));
+ expect(testResponse.instantFuelConsumption).to(equal(@(instantFuelConsumption)));
+ expect(testResponse.myKey).to(equal(myKey));
+ expect(testResponse.odometer).to(equal(@(odometer)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.speed).to(equal(@(speed)));
+ expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
+ expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
+ expect(testResponse.tirePressure).to(equal(tirePressure));
+ expect(testResponse.turnSignal).to(equal(turnSignal));
+ expect(testResponse.vin).to(equal(vin));
+ expect(testResponse.windowStatus).to(equal(windowStatus));
+ expect(testResponse.wiperStatus).to(equal(wiperStatus));
+ expect(testResponse.climateData).to(beNil());
+ });
+ });
+
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:vin:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModeStatus:myKey:handsOffSteering:windowStatus:seatOccupancy:", ^{
+ it(@"should set all properties properly", ^{
+ SDLGetVehicleDataResponse *testResponse = [[SDLGetVehicleDataResponse alloc] initWithGps:gps speed:@(speed) rpm:@(rpm) instantFuelConsumption:@(instantFuelConsumption) fuelRange:fuelRangeArray climateData:climateData turnSignal:turnSignal vin:vin gearStatus:gearStatus tirePressure:tirePressure odometer:@(odometer) beltStatus:beltStatus bodyInformation:bodyInformation deviceStatus:deviceStatus driverBraking:driverBraking wiperStatus:wiperStatus headLampStatus:headLampStatus engineTorque:@(engineTorque) accPedalPosition:@(accPedalPosition) steeringWheelAngle:@(steeringWheelAngle) engineOilLife:@(engineOilLife) electronicParkBrakeStatus:electronicParkBrakeStatus cloudAppVehicleID:cloudAppVehicleID stabilityControlsStatus:stabilityControlsStatus eCallInfo:eCallInfo airbagStatus:airbagStatus emergencyEvent:emergencyEvent clusterModeStatus:clusterModeStatus myKey:myKey windowStatus:windowStatus handsOffSteering:@(handsOffSteering) seatOccupancy:seatOccupancy];
+ expect(testResponse.accPedalPosition).to(equal(@(accPedalPosition)));
+ expect(testResponse.airbagStatus).to(equal(airbagStatus));
+ expect(testResponse.beltStatus).to(equal(beltStatus));
+ expect(testResponse.bodyInformation).to(equal(bodyInformation));
+ expect(testResponse.cloudAppVehicleID).to(equal(cloudAppVehicleID));
+ expect(testResponse.clusterModeStatus).to(equal(clusterModeStatus));
+ expect(testResponse.deviceStatus).to(equal(deviceStatus));
+ expect(testResponse.driverBraking).to(equal(driverBraking));
+ expect(testResponse.eCallInfo).to(equal(eCallInfo));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(electronicParkBrakeStatus));
+ expect(testResponse.emergencyEvent).to(equal(emergencyEvent));
+ expect(testResponse.engineOilLife).to(equal(@(engineOilLife)));
+ expect(testResponse.engineTorque).to(equal(@(engineTorque)));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(beNil());
expect(testResponse.fuelLevel).to(beNil());
expect(testResponse.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -311,6 +370,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(@(rpm)));
+ expect(testResponse.seatOccupancy).to(equal(seatOccupancy));
expect(testResponse.speed).to(equal(@(speed)));
expect(testResponse.stabilityControlsStatus).to(equal(stabilityControlsStatus));
expect(testResponse.steeringWheelAngle).to(equal(@(steeringWheelAngle)));
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatOccupancySpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatOccupancySpec.m
new file mode 100644
index 000000000..172af240b
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatOccupancySpec.m
@@ -0,0 +1,64 @@
+//
+// SDLUnsubscribeVehicleDataResponseSpec.m
+// SmartDeviceLink
+
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLSeatOccupancy.h"
+#import "SDLSeatStatus.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+QuickSpecBegin(SDLSeatOccupancySpec)
+
+SDLSeatStatus *seatStatus = [[SDLSeatStatus alloc] init];
+NSArray *seatStatusArr = @[seatStatus];
+
+describe(@"getter/setter tests", ^{
+ context(@"init", ^{
+ it(@"expect all properties to be set properly", ^{
+ SDLSeatOccupancy* testStruct = [[SDLSeatOccupancy alloc] init];
+ testStruct.seatsBelted = seatStatusArr;
+ testStruct.seatsOccupied = seatStatusArr;
+
+ expect(testStruct.seatsBelted).to(equal(seatStatusArr));
+ expect(testStruct.seatsOccupied).to(equal(seatStatusArr));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ it(@"expect all properties to be set properly", ^{
+ NSDictionary *dict = @{
+ SDLRPCParameterNameSeatsBelted:seatStatusArr,
+ SDLRPCParameterNameSeatsOccupied:seatStatusArr,
+ };
+
+ SDLSeatOccupancy* testStruct = [[SDLSeatOccupancy alloc] initWithDictionary:dict];
+
+ expect(testStruct.seatsBelted).to(equal(seatStatusArr));
+ expect(testStruct.seatsOccupied).to(equal(seatStatusArr));
+ });
+ });
+
+ context(@"init", ^{
+ it(@"expect all properties to be nil", ^{
+ SDLSeatOccupancy* testStruct = [[SDLSeatOccupancy alloc] init];
+ expect(testStruct.seatsBelted).to(beNil());
+ expect(testStruct.seatsOccupied).to(beNil());
+ });
+ });
+
+ context(@"initWithSeatsOccupied:seatsBelted:", ^{
+ it(@"expect all properties to be set properly", ^{
+ SDLSeatOccupancy* testStruct = [[SDLSeatOccupancy alloc] initWithSeatsOccupied:seatStatusArr seatsBelted:seatStatusArr];
+ expect(testStruct.seatsBelted).to(equal(seatStatusArr));
+ expect(testStruct.seatsOccupied).to(equal(seatStatusArr));
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatStatusSpec.m
new file mode 100644
index 000000000..fa56d7729
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSeatStatusSpec.m
@@ -0,0 +1,66 @@
+//
+// SDLUnsubscribeVehicleDataResponseSpec.m
+// SmartDeviceLink
+
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLSeatStatus.h"
+#import "SDLSeatLocation.h"
+#import "SDLRPCParameterNames.h"
+#import "SDLRPCFunctionNames.h"
+
+QuickSpecBegin(SDLSeatStatusSpec)
+
+SDLSeatLocation *seatLocation = [[SDLSeatLocation alloc] init];
+NSNumber<SDLBool> *conditionActive = @YES;
+
+describe(@"getter/setter tests", ^{
+ context(@"init", ^{
+ it(@"expect all properties to be set properly", ^{
+ SDLSeatStatus* testStruct = [[SDLSeatStatus alloc] init];
+ testStruct.conditionActive = conditionActive;
+ testStruct.seatLocation = seatLocation;
+
+ expect(testStruct.conditionActive).to(equal(conditionActive));
+ expect(testStruct.seatLocation).to(equal(seatLocation));
+ });
+ });
+
+ context(@"initWithDictionary:", ^{
+ it(@"expect all properties to be set properly", ^{
+ NSDictionary *dict = @{
+ SDLRPCParameterNameConditionActive:conditionActive,
+ SDLRPCParameterNameSeatLocation:seatLocation,
+ };
+
+ SDLSeatStatus* testStruct = [[SDLSeatStatus alloc] initWithDictionary:dict];
+
+ expect(testStruct.conditionActive).to(equal(conditionActive));
+ expect(testStruct.seatLocation).to(equal(seatLocation));
+ });
+ });
+
+ context(@"init", ^{
+ it(@"expect all properties to be nil", ^{
+ SDLSeatStatus* testStruct = [[SDLSeatStatus alloc] init];
+
+ expect(testStruct.conditionActive).to(beNil());
+ expect(testStruct.seatLocation).to(beNil());
+ });
+ });
+
+ context(@"initWithSeatsOccupied:seatsBelted:", ^{
+ it(@"expect all properties to be set properly", ^{
+ SDLSeatStatus* testStruct = [[SDLSeatStatus alloc] initWithSeatLocation:seatLocation conditionActive:conditionActive];
+
+ expect(testStruct.conditionActive).to(equal(conditionActive));
+ expect(testStruct.seatLocation).to(equal(seatLocation));
+ });
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
index 4a240d32c..6b3e7058e 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m
@@ -36,9 +36,9 @@ describe(@"getter/setter tests", ^{
testResponse.emergencyEvent = vehicleDataResult;
testResponse.engineOilLife = vehicleDataResult;
testResponse.engineTorque = vehicleDataResult;
- testResponse.externalTemperature = vehicleDataResult;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.externalTemperature = vehicleDataResult;
testResponse.fuelLevel = vehicleDataResult;
testResponse.fuelLevel_State = vehicleDataResult;
#pragma clang diagnostic pop
@@ -55,6 +55,7 @@ describe(@"getter/setter tests", ^{
testResponse.prndl = vehicleDataResult;
#pragma clang diagnostic pop
testResponse.rpm = vehicleDataResult;
+ testResponse.seatOccupancy = vehicleDataResult;
testResponse.speed = vehicleDataResult;
testResponse.stabilityControlsStatus = vehicleDataResult;
testResponse.steeringWheelAngle = vehicleDataResult;
@@ -62,6 +63,7 @@ describe(@"getter/setter tests", ^{
testResponse.turnSignal = vehicleDataResult;
testResponse.windowStatus = vehicleDataResult;
testResponse.wiperStatus = vehicleDataResult;
+ testResponse.climateData = vehicleDataResult;
it(@"expect all properties to be set properly", ^{
expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
@@ -77,9 +79,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
expect(testResponse.engineTorque).to(equal(vehicleDataResult));
- expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
#pragma clang diagnostic pop
@@ -96,6 +98,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(vehicleDataResult));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(equal(vehicleDataResult));
expect(testResponse.speed).to(equal(vehicleDataResult));
expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
@@ -103,6 +106,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
expect(testResponse.windowStatus).to(equal(vehicleDataResult));
expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ expect(testResponse.climateData).to(equal(vehicleDataResult));
});
});
@@ -141,6 +145,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNamePRNDL:vehicleDataResult,
#pragma clang diagnostic pop
SDLRPCParameterNameRPM:vehicleDataResult,
+ SDLRPCParameterNameSeatOccupancy:vehicleDataResult,
SDLRPCParameterNameSpeed:vehicleDataResult,
SDLRPCParameterNameStabilityControlsStatus:vehicleDataResult,
SDLRPCParameterNameSteeringWheelAngle:vehicleDataResult,
@@ -148,6 +153,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNameTurnSignal:vehicleDataResult,
SDLRPCParameterNameWindowStatus:vehicleDataResult,
SDLRPCParameterNameWiperStatus:vehicleDataResult,
+ SDLRPCParameterNameClimateData:vehicleDataResult,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeVehicleData}};
@@ -167,9 +173,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
expect(testResponse.engineTorque).to(equal(vehicleDataResult));
- expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
#pragma clang diagnostic pop
@@ -186,6 +192,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(vehicleDataResult));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(equal(vehicleDataResult));
expect(testResponse.speed).to(equal(vehicleDataResult));
expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
@@ -193,6 +200,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
expect(testResponse.windowStatus).to(equal(vehicleDataResult));
expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ expect(testResponse.climateData).to(equal(vehicleDataResult));
});
});
@@ -213,9 +221,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(beNil());
expect(testResponse.engineOilLife).to(beNil());
expect(testResponse.engineTorque).to(beNil());
- expect(testResponse.externalTemperature).to(beNil());
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(beNil());
expect(testResponse.fuelLevel).to(beNil());
expect(testResponse.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -232,6 +240,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testResponse.rpm).to(beNil());
+ expect(testResponse.seatOccupancy).to(beNil());
expect(testResponse.speed).to(beNil());
expect(testResponse.stabilityControlsStatus).to(beNil());
expect(testResponse.steeringWheelAngle).to(beNil());
@@ -239,11 +248,15 @@ describe(@"getter/setter tests", ^{
expect(testResponse.turnSignal).to(beNil());
expect(testResponse.windowStatus).to(beNil());
expect(testResponse.wiperStatus).to(beNil());
+ expect(testResponse.climateData).to(beNil());
});
});
context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:handsOffSteering:windowStatus:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLSubscribeVehicleDataResponse *testResponse = [[SDLSubscribeVehicleDataResponse alloc] initWithGps:vehicleDataResult speed:vehicleDataResult rpm:vehicleDataResult instantFuelConsumption:vehicleDataResult fuelRange:vehicleDataResult externalTemperature:vehicleDataResult turnSignal:vehicleDataResult gearStatus:vehicleDataResult tirePressure:vehicleDataResult odometer:vehicleDataResult beltStatus:vehicleDataResult bodyInformation:vehicleDataResult deviceStatus:vehicleDataResult driverBraking:vehicleDataResult wiperStatus:vehicleDataResult headLampStatus:vehicleDataResult engineTorque:vehicleDataResult accPedalPosition:vehicleDataResult steeringWheelAngle:vehicleDataResult engineOilLife:vehicleDataResult electronicParkBrakeStatus:vehicleDataResult cloudAppVehicleID:vehicleDataResult stabilityControlsStatus:vehicleDataResult eCallInfo:vehicleDataResult airbagStatus:vehicleDataResult emergencyEvent:vehicleDataResult clusterModes:vehicleDataResult myKey:vehicleDataResult handsOffSteering:vehicleDataResult windowStatus:vehicleDataResult];
+#pragma clang diagnostic pop
it(@"expect all properties to be set properly", ^{
expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
@@ -259,9 +272,56 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic push
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(beNil());
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
+ });
+
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:windowStatus:handsOffSteering:seatOccupancy:", ^{
+ SDLSubscribeVehicleDataResponse *testResponse = [[SDLSubscribeVehicleDataResponse alloc] initWithGps:vehicleDataResult speed:vehicleDataResult rpm:vehicleDataResult instantFuelConsumption:vehicleDataResult fuelRange:vehicleDataResult climateData:vehicleDataResult turnSignal:vehicleDataResult gearStatus:vehicleDataResult tirePressure:vehicleDataResult odometer:vehicleDataResult beltStatus:vehicleDataResult bodyInformation:vehicleDataResult deviceStatus:vehicleDataResult driverBraking:vehicleDataResult wiperStatus:vehicleDataResult headLampStatus:vehicleDataResult engineTorque:vehicleDataResult accPedalPosition:vehicleDataResult steeringWheelAngle:vehicleDataResult engineOilLife:vehicleDataResult electronicParkBrakeStatus:vehicleDataResult cloudAppVehicleID:vehicleDataResult stabilityControlsStatus:vehicleDataResult eCallInfo:vehicleDataResult airbagStatus:vehicleDataResult emergencyEvent:vehicleDataResult clusterModes:vehicleDataResult myKey:vehicleDataResult windowStatus:vehicleDataResult handsOffSteering:vehicleDataResult seatOccupancy:vehicleDataResult];
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(beNil());
expect(testResponse.fuelLevel).to(beNil());
expect(testResponse.fuelLevel_State).to(beNil());
#pragma clang diagnostic pop
@@ -278,6 +338,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic push
expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(equal(vehicleDataResult));
expect(testResponse.speed).to(equal(vehicleDataResult));
expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
@@ -285,6 +346,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
expect(testResponse.windowStatus).to(equal(vehicleDataResult));
expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ expect(testResponse.climateData).to(equal(vehicleDataResult));
});
});
diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
index d7833ab2d..b2b2561e0 100644
--- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m
@@ -35,9 +35,9 @@ describe(@"getter/setter tests", ^{
testResponse.emergencyEvent = vehicleDataResult;
testResponse.engineOilLife = vehicleDataResult;
testResponse.engineTorque = vehicleDataResult;
- testResponse.externalTemperature = vehicleDataResult;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ testResponse.externalTemperature = vehicleDataResult;
testResponse.fuelLevel = vehicleDataResult;
testResponse.fuelLevel_State = vehicleDataResult;
#pragma clang diagnostic pop
@@ -54,6 +54,7 @@ describe(@"getter/setter tests", ^{
testResponse.prndl = vehicleDataResult;
#pragma clang diagnostic pop
testResponse.rpm = vehicleDataResult;
+ testResponse.seatOccupancy = vehicleDataResult;
testResponse.speed = vehicleDataResult;
testResponse.stabilityControlsStatus = vehicleDataResult;
testResponse.steeringWheelAngle = vehicleDataResult;
@@ -61,6 +62,7 @@ describe(@"getter/setter tests", ^{
testResponse.turnSignal = vehicleDataResult;
testResponse.windowStatus = vehicleDataResult;
testResponse.wiperStatus = vehicleDataResult;
+ testResponse.climateData = vehicleDataResult;
it(@"expect all properties to be set properly", ^{
expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
@@ -76,9 +78,9 @@ describe(@"getter/setter tests", ^{
expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
expect(testResponse.engineTorque).to(equal(vehicleDataResult));
- expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(equal(vehicleDataResult));
expect(testResponse.fuelLevel).to(equal(vehicleDataResult));
expect(testResponse.fuelLevel_State).to(equal(vehicleDataResult));
#pragma clang diagnostic pop
@@ -95,6 +97,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(vehicleDataResult));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(equal(vehicleDataResult));
expect(testResponse.speed).to(equal(vehicleDataResult));
expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
@@ -102,6 +105,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
expect(testResponse.windowStatus).to(equal(vehicleDataResult));
expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ expect(testResponse.climateData).to(equal(vehicleDataResult));
});
});
@@ -140,6 +144,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNamePRNDL:vehicleDataResult,
#pragma clang diagnostic pop
SDLRPCParameterNameRPM:vehicleDataResult,
+ SDLRPCParameterNameSeatOccupancy:vehicleDataResult,
SDLRPCParameterNameSpeed:vehicleDataResult,
SDLRPCParameterNameStabilityControlsStatus:vehicleDataResult,
SDLRPCParameterNameSteeringWheelAngle:vehicleDataResult,
@@ -147,6 +152,7 @@ describe(@"getter/setter tests", ^{
SDLRPCParameterNameTurnSignal:vehicleDataResult,
SDLRPCParameterNameWindowStatus:vehicleDataResult,
SDLRPCParameterNameWiperStatus:vehicleDataResult,
+ SDLRPCParameterNameClimateData:vehicleDataResult,
},
SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}};
SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithDictionary:dict];
@@ -184,6 +190,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(equal(vehicleDataResult));
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(equal(vehicleDataResult));
expect(testResponse.speed).to(equal(vehicleDataResult));
expect(testResponse.stabilityControlsStatus).to(equal(vehicleDataResult));
expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
@@ -191,6 +198,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
expect(testResponse.windowStatus).to(equal(vehicleDataResult));
expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ expect(testResponse.climateData).to(equal(vehicleDataResult));
});
});
@@ -230,6 +238,7 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testResponse.rpm).to(beNil());
+ expect(testResponse.seatOccupancy).to(beNil());
expect(testResponse.speed).to(beNil());
expect(testResponse.stabilityControlsStatus).to(beNil());
expect(testResponse.steeringWheelAngle).to(beNil());
@@ -237,13 +246,18 @@ describe(@"getter/setter tests", ^{
expect(testResponse.turnSignal).to(beNil());
expect(testResponse.windowStatus).to(beNil());
expect(testResponse.wiperStatus).to(beNil());
+ expect(testResponse.climateData).to(beNil());
});
});
context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:externalTemperature:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:handsOffSteering:windowStatus:", ^{
- SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithGps:vehicleDataResult speed:vehicleDataResult rpm:vehicleDataResult instantFuelConsumption:vehicleDataResult fuelRange:vehicleDataResult externalTemperature:vehicleDataResult turnSignal:vehicleDataResult gearStatus:vehicleDataResult tirePressure:vehicleDataResult odometer:vehicleDataResult beltStatus:vehicleDataResult bodyInformation:vehicleDataResult deviceStatus:vehicleDataResult driverBraking:vehicleDataResult wiperStatus:vehicleDataResult headLampStatus:vehicleDataResult engineTorque:vehicleDataResult accPedalPosition:vehicleDataResult steeringWheelAngle:vehicleDataResult engineOilLife:vehicleDataResult electronicParkBrakeStatus:vehicleDataResult cloudAppVehicleID:vehicleDataResult stabilityControlsStatus:vehicleDataResult eCallInfo:vehicleDataResult airbagStatus:vehicleDataResult emergencyEvent:vehicleDataResult clusterModes:vehicleDataResult myKey:vehicleDataResult handsOffSteering:vehicleDataResult windowStatus:vehicleDataResult];
it(@"expect all properties to be set properly", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithGps:vehicleDataResult speed:vehicleDataResult rpm:vehicleDataResult instantFuelConsumption:vehicleDataResult fuelRange:vehicleDataResult externalTemperature:vehicleDataResult turnSignal:vehicleDataResult gearStatus:vehicleDataResult tirePressure:vehicleDataResult odometer:vehicleDataResult beltStatus:vehicleDataResult bodyInformation:vehicleDataResult deviceStatus:vehicleDataResult driverBraking:vehicleDataResult wiperStatus:vehicleDataResult headLampStatus:vehicleDataResult engineTorque:vehicleDataResult accPedalPosition:vehicleDataResult steeringWheelAngle:vehicleDataResult engineOilLife:vehicleDataResult electronicParkBrakeStatus:vehicleDataResult cloudAppVehicleID:vehicleDataResult stabilityControlsStatus:vehicleDataResult eCallInfo:vehicleDataResult airbagStatus:vehicleDataResult emergencyEvent:vehicleDataResult clusterModes:vehicleDataResult myKey:vehicleDataResult handsOffSteering:vehicleDataResult windowStatus:vehicleDataResult];
+#pragma clang diagnostic pop
+
expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
expect(testResponse.beltStatus).to(equal(vehicleDataResult));
@@ -276,12 +290,63 @@ describe(@"getter/setter tests", ^{
expect(testResponse.prndl).to(beNil());
#pragma clang diagnostic pop
expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(beNil());
+ expect(testResponse.speed).to(equal(vehicleDataResult));
+ expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
+ expect(testResponse.tirePressure).to(equal(vehicleDataResult));
+ expect(testResponse.turnSignal).to(equal(vehicleDataResult));
+ expect(testResponse.windowStatus).to(equal(vehicleDataResult));
+ expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ });
+ });
+
+ context(@"initWithGps:speed:rpm:instantFuelConsumption:fuelRange:climateData:turnSignal:gearStatus:tirePressure:odometer:beltStatus:bodyInformation:deviceStatus:driverBraking:wiperStatus:headLampStatus:engineTorque:accPedalPosition:steeringWheelAngle:engineOilLife:electronicParkBrakeStatus:cloudAppVehicleID:stabilityControlsStatus:eCallInfo:airbagStatus:emergencyEvent:clusterModes:myKey:windowStatus:handsOffSteering:seatOccupancy:", ^{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithGps:vehicleDataResult speed:vehicleDataResult rpm:vehicleDataResult instantFuelConsumption:vehicleDataResult fuelRange:vehicleDataResult climateData:vehicleDataResult turnSignal:vehicleDataResult gearStatus:vehicleDataResult tirePressure:vehicleDataResult odometer:vehicleDataResult beltStatus:vehicleDataResult bodyInformation:vehicleDataResult deviceStatus:vehicleDataResult driverBraking:vehicleDataResult wiperStatus:vehicleDataResult headLampStatus:vehicleDataResult engineTorque:vehicleDataResult accPedalPosition:vehicleDataResult steeringWheelAngle:vehicleDataResult engineOilLife:vehicleDataResult electronicParkBrakeStatus:vehicleDataResult cloudAppVehicleID:vehicleDataResult stabilityControlsStatus:vehicleDataResult eCallInfo:vehicleDataResult airbagStatus:vehicleDataResult emergencyEvent:vehicleDataResult clusterModes:vehicleDataResult myKey:vehicleDataResult windowStatus:vehicleDataResult handsOffSteering:vehicleDataResult seatOccupancy:vehicleDataResult];
+#pragma clang diagnostic pop
+
+ it(@"expect all properties to be set properly", ^{
+ expect(testResponse.accPedalPosition).to(equal(vehicleDataResult));
+ expect(testResponse.airbagStatus).to(equal(vehicleDataResult));
+ expect(testResponse.beltStatus).to(equal(vehicleDataResult));
+ expect(testResponse.bodyInformation).to(equal(vehicleDataResult));
+ expect(testResponse.cloudAppVehicleID).to(equal(vehicleDataResult));
+ expect(testResponse.clusterModes).to(equal(vehicleDataResult));
+ expect(testResponse.deviceStatus).to(equal(vehicleDataResult));
+ expect(testResponse.driverBraking).to(equal(vehicleDataResult));
+ expect(testResponse.eCallInfo).to(equal(vehicleDataResult));
+ expect(testResponse.electronicParkBrakeStatus).to(equal(vehicleDataResult));
+ expect(testResponse.emergencyEvent).to(equal(vehicleDataResult));
+ expect(testResponse.engineOilLife).to(equal(vehicleDataResult));
+ expect(testResponse.engineTorque).to(equal(vehicleDataResult));
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ expect(testResponse.externalTemperature).to(beNil());
+ expect(testResponse.fuelLevel).to(beNil());
+ expect(testResponse.fuelLevel_State).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.fuelRange).to(equal(vehicleDataResult));
+ expect(testResponse.gearStatus).to(equal(vehicleDataResult));
+ expect(testResponse.gps).to(equal(vehicleDataResult));
+ expect(testResponse.handsOffSteering).to(equal(vehicleDataResult));
+ expect(testResponse.headLampStatus).to(equal(vehicleDataResult));
+ expect(testResponse.instantFuelConsumption).to(equal(vehicleDataResult));
+ expect(testResponse.myKey).to(equal(vehicleDataResult));
+ expect(testResponse.odometer).to(equal(vehicleDataResult));
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+#pragma clang diagnostic push
+ expect(testResponse.prndl).to(beNil());
+#pragma clang diagnostic pop
+ expect(testResponse.rpm).to(equal(vehicleDataResult));
+ expect(testResponse.seatOccupancy).to(equal(vehicleDataResult));
expect(testResponse.speed).to(equal(vehicleDataResult));
expect(testResponse.steeringWheelAngle).to(equal(vehicleDataResult));
expect(testResponse.tirePressure).to(equal(vehicleDataResult));
expect(testResponse.turnSignal).to(equal(vehicleDataResult));
expect(testResponse.windowStatus).to(equal(vehicleDataResult));
expect(testResponse.wiperStatus).to(equal(vehicleDataResult));
+ expect(testResponse.climateData).to(equal(vehicleDataResult));
});
});
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/SDLClimateDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateDataSpec.m
new file mode 100644
index 000000000..22056d2da
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateDataSpec.m
@@ -0,0 +1,73 @@
+//
+// SDLClimateControlDataSpec.m
+// SmartDeviceLink-iOS
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLClimateData.h"
+#import "SDLTemperature.h"
+#import "SDLDefrostZone.h"
+#import "SDLVentilationMode.h"
+#import "SDLRPCParameterNames.h"
+
+QuickSpecBegin(SDLClimateDataSpec)
+
+describe(@"Getter/Setter Tests", ^{
+ SDLTemperature *externalTemperature = [[SDLTemperature alloc] init];
+ SDLTemperature *cabinTemperature = [[SDLTemperature alloc] init];
+ NSNumber<SDLFloat> *atmosphericPressure = @(123.45);
+
+ context(@"allocate new struct", ^{
+ SDLClimateData* testStruct = [[SDLClimateData alloc] init];
+
+ it(@"expect all values to be nil", ^{
+ expect(testStruct.externalTemperature).to(beNil());
+ expect(testStruct.cabinTemperature).to(beNil());
+ expect(testStruct.atmosphericPressure).to(beNil());
+ });
+ });
+
+ context(@"allocate and init new struct", ^{
+ SDLClimateData* testStruct = [[SDLClimateData alloc] initWithExternalTemperature:externalTemperature cabinTemperature:cabinTemperature atmosphericPressure:atmosphericPressure];
+
+ it(@"expect all properties to be equal to their initial values", ^{
+ expect(testStruct.externalTemperature).to(equal(externalTemperature));
+ expect(testStruct.cabinTemperature).to(equal(cabinTemperature));
+ expect(testStruct.atmosphericPressure).to(equal(atmosphericPressure));
+ });
+ });
+
+ context(@"allocate new struct and set it up", ^{
+ SDLClimateData* testStruct = [[SDLClimateData alloc] init];
+ testStruct.externalTemperature = externalTemperature;
+ testStruct.cabinTemperature = cabinTemperature;
+ testStruct.atmosphericPressure = atmosphericPressure;
+
+ it(@"expect all properties to be equal to their initial values", ^{
+ expect(testStruct.externalTemperature).to(equal(externalTemperature));
+ expect(testStruct.cabinTemperature).to(equal(cabinTemperature));
+ expect(testStruct.atmosphericPressure).to(equal(atmosphericPressure));
+ });
+ });
+
+ context(@"allocate and init new struct with a dictionary", ^{
+ NSDictionary *dict = @{
+ SDLRPCParameterNameExternalTemperature: externalTemperature,
+ SDLRPCParameterNameCabinTemperature: cabinTemperature,
+ SDLRPCParameterNameAtmosphericPressure: atmosphericPressure,
+ };
+ SDLClimateData* testStruct = [[SDLClimateData alloc] initWithDictionary:dict];
+
+ it(@"expect all properties to be equal to their initial values", ^{
+ expect(testStruct.externalTemperature).to(equal(externalTemperature));
+ expect(testStruct.cabinTemperature).to(equal(cabinTemperature));
+ expect(testStruct.atmosphericPressure).to(equal(atmosphericPressure));
+ });
+ });
+});
+
+QuickSpecEnd
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
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeekStreamingIndicatorSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeekStreamingIndicatorSpec.m
new file mode 100644
index 000000000..e47a77392
--- /dev/null
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeekStreamingIndicatorSpec.m
@@ -0,0 +1,79 @@
+//
+// SDLSeekStreamingIndicatorSpec.m
+// SmartDeviceLinkTests
+//
+// Created by Frank Elias on 12/8/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCParameterNames.h"
+#import "SDLSeekIndicatorType.h"
+#import "SDLSeekStreamingIndicator.h"
+
+QuickSpecBegin(SDLSeekStreamingIndicatorSpec)
+
+describe(@"Getter/Setter Tests", ^ {
+ __block NSNumber<SDLUInt> *testSeekTime = nil;
+ __block SDLSeekIndicatorType testSeekIndicatorType = nil;
+
+ beforeEach(^{
+ testSeekTime = [[NSNumber alloc] initWithInt:10.0];
+ testSeekIndicatorType = SDLSeekIndicatorTypeTime;
+ });
+
+ it(@"Should set and get correctly", ^ {
+ SDLSeekStreamingIndicator *testStruct = [[SDLSeekStreamingIndicator alloc] init];
+
+ testStruct.seekTime = testSeekTime;
+ testStruct.type = testSeekIndicatorType;
+
+ expect(testStruct.seekTime).to(equal([[NSNumber alloc] initWithInt:10.0]));
+ expect(testStruct.type).to(equal(SDLSeekIndicatorTypeTime));
+ });
+
+ it(@"Should get correctly when initialized", ^ {
+ NSDictionary *dict = @{
+ SDLRPCParameterNameSeekTime: testSeekTime,
+ SDLRPCParameterNameType: testSeekIndicatorType
+ };
+ SDLSeekStreamingIndicator* testStruct = [[SDLSeekStreamingIndicator alloc] initWithDictionary:dict];
+
+ expect(testStruct.seekTime).to(equal([[NSNumber alloc] initWithInt:10.0]));
+ expect(testStruct.type).to(equal(SDLSeekIndicatorTypeTime));
+ });
+
+ it(@"Should set with initWithType: correctly", ^ {
+ SDLSeekStreamingIndicator *testStruct = [[SDLSeekStreamingIndicator alloc] initWithType:testSeekIndicatorType];
+
+ expect(testStruct.seekTime).to(beNil());
+ expect(testStruct.type).to(equal(SDLSeekIndicatorTypeTime));
+ });
+
+ it(@"Should set with initWithType:seekTime: correctly", ^ {
+ SDLSeekStreamingIndicator *testStruct = [[SDLSeekStreamingIndicator alloc] initWithType:testSeekIndicatorType seekTime:testSeekTime];
+
+ expect(testStruct.seekTime).to(equal([[NSNumber alloc] initWithInt:10.0]));
+ expect(testStruct.type).to(equal(SDLSeekIndicatorTypeTime));
+ });
+
+ it(@"Should set with initWithType:seekTime: correctly", ^ {
+ SDLSeekStreamingIndicator *testStruct = [SDLSeekStreamingIndicator seekIndicatorWithSeekTime:testSeekTime];
+
+ expect(testStruct.seekTime).to(equal([[NSNumber alloc] initWithInt:10.0]));
+ expect(testStruct.type).to(equal(SDLSeekIndicatorTypeTime));
+ });
+
+ it(@"Should return nil if not set", ^ {
+ SDLSeekStreamingIndicator *testStruct = [[SDLSeekStreamingIndicator alloc] init];
+
+ expect(testStruct.seekTime).to(beNil());
+ expect(testStruct.type).to(beNil());
+ });
+});
+
+QuickSpecEnd
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
index 0e3fc67f4..453076aa2 100755
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m
@@ -37,7 +37,7 @@ describe(@"Getter/Setter Tests", ^ {
testNavigationCapability = [[SDLNavigationCapability alloc] initWithSendLocation:YES waypoints:NO];
testPhoneCapability = [[SDLPhoneCapability alloc] initWithDialNumber:YES];
testRemoteControlCapabilities = [[SDLRemoteControlCapabilities alloc] initWithClimateControlCapabilities:nil radioControlCapabilities:nil buttonCapabilities:nil seatControlCapabilities:nil audioControlCapabilities:nil hmiSettingsControlCapabilities:nil lightControlCapabilities:nil];
- testVideoStreamingCapability = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:[[SDLImageResolution alloc] initWithWidth:50 height:50] maxBitrate:5 supportedFormats:@[] hapticDataSupported:false diagonalScreenSize:23 pixelPerInch:119 scale:1.4];
+ testVideoStreamingCapability = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:[[SDLImageResolution alloc] initWithWidth:50 height: 50] maxBitrate:@(5) supportedFormats:@[] hapticSpatialDataSupported:@(false) diagonalScreenSize:@(23) pixelPerInch:@(119) scale:@(1.4) preferredFPS:@(15)];
testSeatLocationCapability = [[SDLSeatLocationCapability alloc] init];
testDriverDistractionCapability = [[SDLDriverDistractionCapability alloc] initWithMenuLength:@2 subMenuDepth:@4];
});
@@ -158,7 +158,7 @@ describe(@"Getter/Setter Tests", ^ {
NSArray<SDLVideoStreamingFormat *> *formatArray = @[format1, format2];
- SDLVideoStreamingCapability *testVidStruct = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:resolution maxBitrate:maxBitrate supportedFormats:formatArray hapticDataSupported:hapticDataSupported diagonalScreenSize:45 pixelPerInch:112 scale:2.1];
+ SDLVideoStreamingCapability *testVidStruct = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:resolution maxBitrate:@(maxBitrate) supportedFormats:formatArray hapticSpatialDataSupported:@(hapticDataSupported) diagonalScreenSize:@(45) pixelPerInch:@(112) scale:@(2.1) preferredFPS:@(15)];
SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithVideoStreamingCapability:testVidStruct];
expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeVideoStreaming));
diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m
index e4d08951c..aefe08ad3 100644
--- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m
+++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m
@@ -28,6 +28,7 @@ describe(@"Initialization tests", ^{
__block float testDiagonalScreenSize = 22.45;
__block float testPixelPerInch = 96.122;
__block float testScale = 2.1;
+ __block uint testPreferredFPS = 15;
beforeEach(^{
testPreferredResolution = [[SDLImageResolution alloc] initWithWidth:600 height:500];
@@ -50,7 +51,8 @@ describe(@"Initialization tests", ^{
SDLRPCParameterNameHapticSpatialDataSupported: @(testHapticDataSupported),
SDLRPCParameterNameDiagonalScreenSize: @(testDiagonalScreenSize),
SDLRPCParameterNamePixelPerInch: @(testPixelPerInch),
- SDLRPCParameterNameScale: @(testScale)};
+ SDLRPCParameterNameScale: @(testScale),
+ SDLRPCParameterNamePreferredFPS: @(testPreferredFPS)};
SDLVideoStreamingCapability* testStruct = [[SDLVideoStreamingCapability alloc] initWithDictionary:dict];
@@ -61,6 +63,7 @@ describe(@"Initialization tests", ^{
expect(testStruct.diagonalScreenSize).to(equal(testDiagonalScreenSize));
expect(testStruct.pixelPerInch).to(equal(testPixelPerInch));
expect(testStruct.scale).to(equal(testScale));
+ expect(testStruct.preferredFPS).to(equal(testPreferredFPS));
});
it(@"Should return nil if not set", ^ {
@@ -73,10 +76,14 @@ describe(@"Initialization tests", ^{
expect(testStruct.diagonalScreenSize).to(beNil());
expect(testStruct.pixelPerInch).to(beNil());
expect(testStruct.scale).to(beNil());
+ expect(testStruct.preferredFPS).to(beNil());
});
it(@"Should initialize correctly with initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:diagonalScreenSize:pixelPerInch:scale", ^ {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
SDLVideoStreamingCapability *testStruct = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:testPreferredResolution maxBitrate:testMaxBitrate supportedFormats:testVideoStreamingFormats hapticDataSupported:testHapticDataSupported diagonalScreenSize:testDiagonalScreenSize pixelPerInch:testPixelPerInch scale:testScale];
+#pragma clang diagnostic pop
expect(testStruct.preferredResolution).to(equal(testPreferredResolution));
expect(testStruct.maxBitrate).to(equal(testMaxBitrate));
@@ -85,6 +92,20 @@ describe(@"Initialization tests", ^{
expect(testStruct.diagonalScreenSize).to(equal(testDiagonalScreenSize));
expect(testStruct.pixelPerInch).to(equal(testPixelPerInch));
expect(testStruct.scale).to(equal(testScale));
+ expect(testStruct.preferredFPS).to(beNil());
+ });
+
+ it(@"Should initialize correctly with initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:diagonalScreenSize:pixelPerInch:scale:preferredFPS", ^ {
+ SDLVideoStreamingCapability *testStruct = [[SDLVideoStreamingCapability alloc] initWithPreferredResolution:testPreferredResolution maxBitrate:@(testMaxBitrate) supportedFormats:testVideoStreamingFormats hapticSpatialDataSupported:@(testHapticDataSupported) diagonalScreenSize:@(testDiagonalScreenSize) pixelPerInch:@(testPixelPerInch) scale:@(testScale) preferredFPS:@(testPreferredFPS)];
+
+ expect(testStruct.preferredResolution).to(equal(testPreferredResolution));
+ expect(testStruct.maxBitrate).to(equal(testMaxBitrate));
+ expect(testStruct.supportedFormats).to(equal(testVideoStreamingFormats));
+ expect(testStruct.hapticSpatialDataSupported).to(equal(testHapticDataSupported));
+ expect(testStruct.diagonalScreenSize).to(equal(testDiagonalScreenSize));
+ expect(testStruct.pixelPerInch).to(equal(testPixelPerInch));
+ expect(testStruct.scale).to(equal(testScale));
+ expect(testStruct.preferredFPS).to(equal(testPreferredFPS));
});
});
diff --git a/carthage-build.sh b/carthage-build.sh
index 0dcdefdee..c50df1cba 100644..100755
--- a/carthage-build.sh
+++ b/carthage-build.sh
@@ -18,4 +18,4 @@ echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x8
echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig
export XCODE_XCCONFIG_FILE="$xcconfig"
-carthage build "$@" \ No newline at end of file
+carthage "$@" \ No newline at end of file
diff --git a/generator/rpc_spec b/generator/rpc_spec
-Subproject 762489ca140f246923e8bb8f54e96364e9d0101
+Subproject 1a8d4a28ebdf4410a63e22ce7a1792d9e5cd7e4
diff --git a/generator/transformers/common_producer.py b/generator/transformers/common_producer.py
index 977cc2232..3a591a05d 100644
--- a/generator/transformers/common_producer.py
+++ b/generator/transformers/common_producer.py
@@ -365,19 +365,27 @@ class InterfaceProducerCommon(ABC):
'deprecated': json.loads(param.deprecated.lower()) if param.deprecated else False,
'modifier': 'strong',
'history': param.history}
+
+ parameterItems = OrderedDict()
if isinstance(param.param_type, (Integer, Float, String, Array)):
- data['description'].append(self.create_param_descriptor(param.param_type, OrderedDict()))
+ self.create_param_type_descriptor(param.param_type, parameterItems)
+
+ if isinstance(param.param_type, (Boolean, Enum)):
+ self.create_param_default_value_descriptor(param, parameterItems)
+
+ if len(parameterItems) > 0:
+ data['description'].append(json.dumps(parameterItems, sort_keys=False))
data.update(self.extract_type(param))
data.update(self.param_origin_change(param.name))
return self.param_named(**data)
- def create_param_descriptor(self, param_type, parameterItems):
+ def create_param_type_descriptor(self, param_type, parameterItems):
"""
- Recursively creates a documentation string of all the descriptors for a parameter (e.g. {"string_min_length": 1, string_max_length": 500}). The parameters should be returned in the same order they were added to the parameterItems dictionary
+ Gets all the descriptors for a parameter to be used in parameter's documentation (e.g. {"string_min_length": 1, string_max_length": 500}). The parameters should be returned in the same order they were added to the parameterItems dictionary
:param param_type: param_type from the initial Model
:param parameterItems: Ordered dictionary that stores each of the parameter's descriptors
- :return: All the descriptor params from param_type concatenated into one string
+ :return: All the descriptor params
"""
# The key is a descriptor (i.e. max_value) and value is the associated value (i.e. 100). Some values will be dictionaries that have to be parsed to get additional descriptors (e.g. the value for an array of strings' data type will be sub-dictionary describing the min_length, max_length, and default value for the strings used in the array)
for key, value in param_type.__dict__.items():
@@ -387,7 +395,7 @@ class InterfaceProducerCommon(ABC):
# Skip adding documentation for the data type if it is a struct or enum. This is unnecessary as each enum or struct has its own documentation
continue
else:
- self.create_param_descriptor(value, parameterItems)
+ self.create_param_type_descriptor(value, parameterItems)
else:
if key == 'default_value' and value is None:
# Do not add the default_value key/value pair unless it has been explicitly set in the RPC Spec
@@ -396,7 +404,24 @@ class InterfaceProducerCommon(ABC):
parameterDescriptor = self.update_param_descriptor(key)
parameterItems[parameterDescriptor] = value
- return json.dumps(parameterItems, sort_keys=False)
+ return parameterItems
+
+ def create_param_default_value_descriptor(self, param, parameterItems):
+ """
+ Extracts the default value for a parameter to be used in parameter's documentation (HAX: The default_value for Ints and Floats is save to both the param and param_type but is only saved to the param_type for Enums and Bools for some reason)
+ :param param: param from the initial Model
+ :param parameterItems: Ordered dictionary that stores each of the parameter's descriptors
+ :return: All the descriptor params
+ """
+ if param.default_value is None:
+ return parameterItems
+
+ if isinstance(param.param_type, Enum):
+ parameterItems['default_value'] = param.default_value.name
+ else:
+ parameterItems['default_value'] = param.default_value
+
+ return parameterItems
def update_param_descriptor(self, parameterName):
"""