summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal <bilal@Bilals-MBP.localdomain>2018-06-26 16:52:46 -0400
committerBilal <bilal@Bilals-MBP.localdomain>2018-06-26 16:52:46 -0400
commitb681ab248b2b78abb55246051cb02356aaf3f030 (patch)
treefa6407fb51104e22a62873b8fcd01c94032b1870
parentb33eb66e719737c9a0531af485b0a1fa09ba0a7c (diff)
parent9d7345d7c724ef82f5cdfe571dc22efb5c634989 (diff)
downloadsdl_android-feature/issue_715.tar.gz
Merge branch 'develop' into feature/issue_715feature/issue_715
# Conflicts: # sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java # sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequestFactory.java # sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java # sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBuilder.java
-rw-r--r--CHANGELOG.md39
-rw-r--r--README.md13
-rw-r--r--build.gradle2
-rw-r--r--sdl_android/bintray.gradle2
-rw-r--r--sdl_android/build.gradle16
-rw-r--r--sdl_android/src/androidTest/assets/xml/MOBILE_API_4.5.0.xml6052
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/protocol/SdlPacketTests.java75
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java12
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCConstructorsTests.java328
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequestFactory.java6
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/RPCResponse.java6
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java867
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBuilder.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommandResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java23
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenuResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java31
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuverResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java22
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java53
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java15
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java24
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPress.java25
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPressResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistrationResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java22
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClimateControlCapabilities.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSetResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java11
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommandResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSetResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenuResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java56
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java20
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java8
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumberResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java24
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java28
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java37
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EndAudioPassThruResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java68
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GenericResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java19
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleData.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleDataResponse.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java9
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java11
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java27
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java19
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ModuleData.java11
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java36
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java20
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnInteriorVehicleData.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java12
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java20
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java10
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java23
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java9
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java19
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java31
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThruResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java27
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java34
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java23
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java22
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RadioControlCapabilities.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java27
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java53
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java21
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalPropertiesResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java15
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java19
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessageResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocationResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIconResponse.java15
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalPropertiesResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleData.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleDataResponse.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java22
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimerResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbtResponse.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java21
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java15
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java32
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java25
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SpeakResponse.java15
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java21
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButtonResponse.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java13
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequestResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java19
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Temperature.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java26
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java52
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java29
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java26
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java21
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterface.java207
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterfaceResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java30
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButtonResponse.java17
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java22
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnListResponse.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java26
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java16
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java27
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java18
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java25
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java78
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java109
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransport.java8
-rw-r--r--sdl_android/src/main/res/values/sdl.xml6
160 files changed, 9560 insertions, 942 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c9ceb6d09..6246b922d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,27 +1,24 @@
-# 4.5.0 Release Notes
+# 4.6.0 Release Notes
### API New Features & Breaking Changes
-- **IMPORTANT:** `SdlRouterService` manifest declarations now require an `intent-filter` and `meta-data` tags. These changes can be found in the documentation.
-- Now targeting version 26 to make use of new Android Oreo features.
- - Most broadcast intents are now sent explicitly instead of implicitly
-- Added methods to send a batch of RPCs. This includes chaining RPC messages or sending them all at once
+- `RPCRequestFactory` has been deprecated. Please use the desired RPC's constructor instead.
+- The Android Annotations Library has been added to the project to better help and inform developers about the SDK.
### Enhancements
-- Added method calls to retrieve `pcmCapabilities` from the `SystemCapbilityManager`
-- `SdlRouterService` had a good deal of refactoring and cleaning up to remove warnings and issues
-- Created a new way to retrieve the library version from apps.
-- Version checking for `SdlRouterService` is now performed before starting an actual router service.
-- General enhancements and stability fixes to the multiplexing transport feature
+- The router service foreground lifecycle is improved. The notification should no longer be seen when connecting to non-SDL devices.
+- The SDL notification now links to a webpage to explain what the notification is and how to hide it.
+- The required `intent-filter` entires for the `SdlBroadcastReceiver` has been reduced. It is now only listening for the SDL custom intent, ACL connect, and USB connection if using AOA.
+- RPC classes now contain constructors with the required parameters for that RPC.
+- Moved project to newer version of Gradle. Updated configurations including from `compile` to `api` and `implementation`.
+- `SdlProxyBuilder` was cleaned up to remove redundant variables between the `SdlProxyBuilder.Builder` object and the `SdlProxyBuilder` class.
### Bug Fixes
-- Fixed a potential deadlock within the `LegacyBluetoothTransport`
-- Fix issue with video streaming not being able to restart after being stopped
-- Fixed issue where `OnHMIStatus` was ignored if the level was the same, but the `AudioStreamingState` had changed
-- Fixed potential NPE in the `SdlProxyBase` class when a packet was malformed
-- Fixed issue that would incorrectly unregister apps from the module through the router service when apps are being force closed and others register
-- Fixed issue in `SdlRouterStatusProvider` class where the handler wasn't able to obtain a looper.
-- Fixed issue in `ServiceFinder` class where the handler was using a looper than was exiting and therefore not posting the expected runnable
-- Fixed an issue that kept the `SdlRouterService` notification icon showing even if there were no current connects
-- Fixed an issue where the `SdlRouterService` would start regardless of what bluetooth device it connected.
-- `UsbTransport` was given a few fixes around incorrect exiting calls
-- Fixed an issue found with some modules where they would return a single `SpeechCapability` instead of a list \ No newline at end of file
+- Fixed touch issues with the video streaming feature. A new module was added to handle touch events much more aligned with Android native views.
+- Fixed JavaDoc issue in `UnregisterAppInterface`.
+- Fixed JavaDoc issue in `AddCommand`.
+- Added tags to the string resource xml file to ignore translation
+- Temporary fix to the TCP transport to catch `NetworkOnTheMainThread` exceptions when the connection is closing.
+- Fix issue where the `SdlBroadcastReceiver` was attempting to send implicit intents to ping the `SdlRouterService`. They are now explicit.
+- Fix a potential NPE in the `SdlBroadcastReceiver` while an app is only using USB and does not include an instance of an `SdlRouterService`.
+- Removed reflection usage in bluetooth transports when operating on systems that are newer than Android Oreo in anticipation of Android P.
+- Fix an issue where the `SdlBroadcastReceiver` would throw a false positive regarding whether or not an app had included the correct `intent-filter` in their `SdlRouterService` manifest declaration. \ No newline at end of file
diff --git a/README.md b/README.md
index fce3142b8..40af30779 100644
--- a/README.md
+++ b/README.md
@@ -30,14 +30,14 @@ You can also find some branches that have yet to be merged into this GitHub proj
#### Dependency Managers
-To compile with the a release of SDL Android, include the following in your app's `build.gradle` file,
+To compile with the latest release of SDL Android, include the following in your app's `build.gradle` file,
```
repositories {
jcenter()
}
dependencies {
- compile 'com.smartdevicelink:sdl_android:4.+'
+ implementation 'com.smartdevicelink:sdl_android:4.+'
}
```
@@ -46,3 +46,12 @@ For Maven or Ivy snippets please look at [Bintray](https://bintray.com/smartdevi
#### Manually
If you prefer not to use any of the aforementioned dependency managers, you can integrate SDL Android into your project manually.
+
+### Proguard Rules
+
+Developers using Proguard to shrink and obfuscate their code should be sure to include the following lines in their proguard-rules.pro file:
+
+```
+-keep class com.smartdevicelink.** { *; }
+-keep class com.livio.** { *; }
+``` \ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 11910be3e..800d3be0e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.0'
+ classpath 'com.android.tools.build:gradle:3.1.3'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/sdl_android/bintray.gradle b/sdl_android/bintray.gradle
index ebbf65599..f4969df2c 100644
--- a/sdl_android/bintray.gradle
+++ b/sdl_android/bintray.gradle
@@ -51,7 +51,7 @@ bintray {
// Authorization
user = props.getProperty("bintray.user")
key = props.getProperty("bintray.key")
-
+ version = props.getProperty("bintray.version")
configurations = ['archives']
pkg {
repo = props.getProperty("bintray.repo")
diff --git a/sdl_android/build.gradle b/sdl_android/build.gradle
index 7904206a9..e4e5a44e1 100644
--- a/sdl_android/build.gradle
+++ b/sdl_android/build.gradle
@@ -5,8 +5,8 @@ android {
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
- versionCode 3
- versionName "4.5.0"
+ versionCode 4
+ versionName "RC_4.6.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
resValue "string", "SDL_LIB_VERSION", '\"' + versionName + '\"'
}
@@ -33,16 +33,14 @@ android {
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation ('com.smartdevicelink:bson_java_port:1.0.0@aar'){
- transitive = true
- }
+ api fileTree(dir: 'libs', include: ['*.jar'])
+ api 'com.smartdevicelink:bson_java_port:1.1.1'
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.9.0'
-
+ api 'com.android.support:support-annotations:27.1.1'
}
buildscript {
@@ -51,8 +49,8 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
- classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+ classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.1'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
}
diff --git a/sdl_android/src/androidTest/assets/xml/MOBILE_API_4.5.0.xml b/sdl_android/src/androidTest/assets/xml/MOBILE_API_4.5.0.xml
new file mode 100644
index 000000000..ffb005ec6
--- /dev/null
+++ b/sdl_android/src/androidTest/assets/xml/MOBILE_API_4.5.0.xml
@@ -0,0 +1,6052 @@
+<?xml version="1.0" standalone="no"?>
+<?xml-stylesheet type="text/xml" href="protocol2html.xsl"?>
+
+<interface name="SmartDeviceLink RAPI" version="4.5.0" date="2017-09-22">
+ <enum name="Result" internal_scope="base">
+ <element name="SUCCESS">
+ <description>The request succeeded</description>
+ </element>
+ <element name="UNSUPPORTED_REQUEST">
+ <description>The request is not supported by the headunit</description>
+ </element>
+ <element name="UNSUPPORTED_RESOURCE">
+ <description>
+ A button that was requested for subscription is not supported under the current system.
+ </description>
+ </element>
+ <element name="DISALLOWED">
+ <description>RPC is not authorized in local policy table.</description>
+ </element>
+ <element name="REJECTED">
+ <description>
+ The requested command was rejected, e.g. because mobile app is in background and cannot perform any HMI commands.
+ Or an HMI command (e.g. Speak) is rejected because a higher priority HMI command (e.g. Alert) is playing.
+ </description>
+ </element>
+ <element name="ABORTED">
+ <description>
+ A command was aborted, for example due to user interaction (e.g. user pressed button).
+ Or an HMI command (e.g. Speak) is aborted because a higher priority HMI command (e.g. Alert) was requested.
+ </description>
+ </element>
+ <element name="IGNORED">
+ <description>
+ A command was ignored, because the intended result is already in effect.
+ For example, SetMediaClockTimer was used to pause the media clock although the clock is paused already.
+ NOTE: potentially replaces SUBSCRIBED_ALREADY
+ </description>
+ </element>
+ <element name="RETRY">
+ <description>The user interrupted the RPC (e.g. PerformAudioPassThru) and indicated to start over. Note, the app must issue the new RPC.</description>
+ </element>
+ <element name="IN_USE">
+ <description>
+ The data may not be changed, because it is currently in use.
+ For example when trying to delete a command set that is currently involved in an interaction.
+ </description>
+ </element>
+ <element name="VEHICLE_DATA_NOT_AVAILABLE">
+ <description>The requested vehicle data is not available on this vehicle or is not published.</description>
+ </element>
+ <element name="TIMED_OUT">
+ <description>Overlay reached the maximum timeout and closed.</description>
+ </element>
+ <element name="INVALID_DATA">
+ <description>
+ The data sent is invalid. For example:
+ Invalid Json syntax
+ Parameters out of bounds (number or enum range)
+ Mandatory parameters not provided
+ Parameter provided with wrong type
+ Invalid characters
+ Empty string
+ </description>
+ </element>
+ <element name="CHAR_LIMIT_EXCEEDED"></element>
+ <element name="INVALID_ID">
+ <description>
+ One of the provided IDs is not valid. For example
+ This applies to CorrelationID, SubscriptionID, CommandID, MenuID, etc.
+ </description>
+ </element>
+ <element name="DUPLICATE_NAME">
+ <description>There was a conflict with an registered name (application or menu item) or vr command</description>
+ </element>
+ <element name="APPLICATION_NOT_REGISTERED">
+ <description>An command can not be executed because no application has been registered with RegisterApplication.</description>
+ </element>
+ <element name="WRONG_LANGUAGE">
+ <description>
+ The requested language is currently not supported.
+ Might be because of a mismatch of the currently active language on the headunit and the requested language
+ </description>
+ </element>
+ <element name="OUT_OF_MEMORY">
+ <description>The system could not process the request because the necessary memory couldn't be allocated</description>
+ </element>
+ <element name="TOO_MANY_PENDING_REQUESTS">
+ <description>There are too many requests pending (means, that the response has not been delivered, yet).There may be a maximum of 1000 pending requests at a time.</description>
+ </element>
+ <element name="TOO_MANY_APPLICATIONS">
+ <description>There are already too many registered applications</description>
+ </element>
+ <element name="APPLICATION_REGISTERED_ALREADY">
+ <description>RegisterApplication has been called again, after a RegisterApplication was successful before.</description>
+ </element>
+ <element name="WARNINGS">
+ <description>The RPC (e.g. SubscribeVehicleData) executed successfully but one or more items have a warning or failure.</description>
+ </element>
+ <element name="GENERIC_ERROR">
+ <description>Provided data is valid but something went wrong in the lower layers.</description>
+ </element>
+ <element name="USER_DISALLOWED">
+ <description>RPC is included in a functional group explicitly blocked by the user.</description>
+ </element>
+ <element name="TRUNCATED_DATA">
+ <description>The RPC (e.g. ReadDID) executed successfully but the data exceeded the platform maximum threshold and thus, only part of the data is available.</description>
+ </element>
+ <element name="UNSUPPORTED_VERSION">
+ <description>Sync doesn't support the protocol that is requested by the mobile application</description>
+ </element>
+ <element name="VEHICLE_DATA_NOT_ALLOWED">
+ <description>The user has turned off access to vehicle data, and it is globally unavailable to mobile applications.</description>
+ </element>
+ <element name="FILE_NOT_FOUND">
+ <description>A specified file could not be found on the headunit.</description>
+ </element>
+ <element name="CANCEL_ROUTE">
+ <description>User selected to Cancel Route.</description>
+ </element>
+ <element name="SAVED">
+ <description>The RPC (e.g. Slider) executed successfully and the user elected to save the current position / value.</description>
+ </element>
+ <element name="INVALID_CERT">
+ <description>The certificate provided during authentication is invalid.</description>
+ </element>
+ <element name="EXPIRED_CERT">
+ <description>The certificate provided during authentication is expired.</description>
+ </element>
+ <element name="RESUME_FAILED">
+ <description>The provided hash ID does not match the hash of the current set of registered data or the core could not resume the previous data.</description>
+ </element>
+ <element name="DATA_NOT_AVAILABLE">
+ <description>The requested information is currently not available. This is different than UNSUPPORTED_RESOURCE because it implies the data is at some point available. </description>
+ </element>
+ <element name="READ_ONLY">
+ <description>The value being set is read only</description>
+ </element>
+ </enum>
+
+ <enum name="ButtonPressMode">
+ <element name="LONG">
+ <description>
+ A button was released, after it was pressed for a long time
+ Actual timing is defined by the headunit and may vary
+ </description>
+ </element>
+ <element name="SHORT">
+ <description>
+ A button was released, after it was pressed for a short time
+ Actual timing is defined by the headunit and may vary
+ </description>
+ </element>
+ </enum>
+
+ <enum name="ButtonEventMode">
+ <element name="BUTTONUP">
+ <description>A button has been released up</description>
+ </element>
+ <element name="BUTTONDOWN">
+ <description>A button has been pressed down</description>
+ </element>
+ </enum>
+
+ <enum name="Language">
+ <element name="EN-US" internal_name="EN_US">
+ <description>English - US</description>
+ </element>
+ <element name="ES-MX" internal_name="ES_MX">
+ <description>Spanish - Mexico</description>
+ </element>
+ <element name="FR-CA" internal_name="FR_CA">
+ <description>French - Canada</description>
+ </element>
+ <element name="DE-DE" internal_name="DE_DE">
+ <description>German - Germany</description>
+ </element>
+ <element name="ES-ES" internal_name="ES_ES">
+ <description>Spanish - Spain</description>
+ </element>
+ <element name="EN-GB" internal_name="EN_GB">
+ <description>English - GB</description>
+ </element>
+ <element name="RU-RU" internal_name="RU_RU">
+ <description>Russian - Russia</description>
+ </element>
+ <element name="TR-TR" internal_name="TR_TR">
+ <description>Turkish - Turkey</description>
+ </element>
+ <element name="PL-PL" internal_name="PL_PL">
+ <description>Polish - Poland</description>
+ </element>
+ <element name="FR-FR" internal_name="FR_FR">
+ <description>French - France</description>
+ </element>
+ <element name="IT-IT" internal_name="IT_IT">
+ <description>Italian - Italy</description>
+ </element>
+ <element name="SV-SE" internal_name="SV_SE">
+ <description>Swedish - Sweden</description>
+ </element>
+ <element name="PT-PT" internal_name="PT_PT">
+ <description>Portuguese - Portugal</description>
+ </element>
+ <element name="NL-NL" internal_name="NL_NL">
+ <description>Dutch (Standard) - Netherlands</description>
+ </element>
+ <element name="EN-AU" internal_name="EN_AU">
+ <description>English - Australia</description>
+ </element>
+ <element name="ZH-CN" internal_name="ZH_CN">
+ <description>Mandarin - China</description>
+ </element>
+ <element name="ZH-TW" internal_name="ZH_TW">
+ <description>Mandarin - Taiwan</description>
+ </element>
+ <element name="JA-JP" internal_name="JA_JP">
+ <description>Japanese - Japan</description>
+ </element>
+ <element name="AR-SA" internal_name="AR_SA">
+ <description>Arabic - Saudi Arabia</description>
+ </element>
+ <element name="KO-KR" internal_name="KO_KR">
+ <description>Korean - South Korea</description>
+ </element>
+ <element name="PT-BR" internal_name="PT_BR">
+ <description>Portuguese - Brazil</description>
+ </element>
+ <element name="CS-CZ" internal_name="CS_CZ">
+ <description>Czech - Czech Republic</description>
+ </element>
+ <element name="DA-DK" internal_name="DA_DK">
+ <description>Danish - Denmark</description>
+ </element>
+ <element name="NO-NO" internal_name="NO_NO">
+ <description>Norwegian - Norway</description>
+ </element>
+ <element name="NL-BE" internal_name="NL_BE">
+ <description>Dutch (Flemish) - Belgium</description>
+ </element>
+ <element name="EL-GR" internal_name="EL_GR">
+ <description>Greek - Greece</description>
+ </element>
+ <element name="HU-HU" internal_name="HU_HU">
+ <description>Hungarian - Hungary</description>
+ </element>
+ <element name="FI-FI" internal_name="FI_FI">
+ <description>Finnish - Finland</description>
+ </element>
+ <element name="SK-SK" internal_name="SK_SK">
+ <description>Slovak - Slovakia</description>
+ </element>
+ <element name="EN-IN" internal_name="EN_IN">
+ <description>English - India</description>
+ </element>
+ <element name="TH-TH" internal_name="TH_TH">
+ <description>Thai - Thailand</description>
+ </element>
+ <element name="EN-SA" internal_name="EN_SA">
+ <description>English - Middle East</description>
+ </element>
+ <element name="HE-IL" internal_name="HE_IL">
+ <description>Hebrew - Israel</description>
+ </element>
+ <element name="RO-RO" internal_name="RO_RO">
+ <description>Romanian - Romania</description>
+ </element>
+ <element name="UK-UA" internal_name="UK_UA">
+ <description>Ukrainian - Ukraine</description>
+ </element>
+ <element name="ID-ID" internal_name="ID_ID">
+ <description>Indonesian - Indonesia</description>
+ </element>
+ <element name="VI-VN" internal_name="VI_VN">
+ <description>Vietnamese - Vietnam</description>
+ </element>
+ <element name="MS-MY" internal_name="MS_MY">
+ <description>Malay - Malaysia</description>
+ </element>
+ <element name="HI-IN" internal_name="HI_IN">
+ <description>Hindi - India</description>
+ </element>
+ </enum>
+
+ <enum name="UpdateMode">
+ <description>Describes how the media clock timer should behave on the platform</description>
+ <element name="COUNTUP" >
+ <description>Starts the media clock timer counting upwards, as in time elapsed.</description>
+ </element>
+ <element name="COUNTDOWN" >
+ <description>Starts the media clock timer counting downwards, as in time remaining.</description>
+ </element>
+ <element name="PAUSE" >
+ <description>Pauses the media clock timer</description>
+ </element>
+ <element name="RESUME" >
+ <description>Resume the media clock timer</description>
+ </element>
+ <element name="CLEAR" >
+ <description>Clears the media clock timer (previously done through Show->mediaClock)</description>
+ </element>
+ </enum>
+
+ <enum name="TimerMode">
+ <element name="UP" >
+ <description>Causes the media clock timer to update from 0:00 to a specified time</description>
+ </element>
+ <element name="DOWN" >
+ <description>Causes the media clock timer to update from a specified time to 0:00</description>
+ </element>
+ <element name="NONE" >
+ <description>Indicates to not use the media clock timer</description>
+ </element>
+ </enum>
+
+ <enum name="InteractionMode">
+ <description>For application-requested interactions, this mode indicates the method in which the user is notified and uses the interaction.</description>
+ <element name="MANUAL_ONLY" >
+ <description>This mode causes the interaction to only occur on the display, meaning the choices are provided only via the display. No Voice Interaction.</description>
+ </element>
+ <element name="VR_ONLY" >
+ <description>This mode causes the interaction to only occur using the headunits VR system. Selections are made by saying the command.</description>
+ </element>
+ <element name="BOTH" >
+ <description>This mode causes both a VR and display selection option for an interaction. The user will first be asked via Voice Interaction (if available). If this is unsuccessful, the system will switch to manual input.</description>
+ </element>
+ </enum>
+
+ <enum name="LayoutMode">
+ <description>For touchscreen interactions, the mode of how the choices are presented.</description>
+ <element name="ICON_ONLY" >
+ <description>This mode causes the interaction to display the previous set of choices as icons.</description>
+ </element>
+ <element name="ICON_WITH_SEARCH" >
+ <description>This mode causes the interaction to display the previous set of choices as icons along with a search field in the HMI.</description>
+ </element>
+ <element name="LIST_ONLY" >
+ <description>This mode causes the interaction to display the previous set of choices as a list.</description>
+ </element>
+ <element name="LIST_WITH_SEARCH" >
+ <description>This mode causes the interaction to display the previous set of choices as a list along with a search field in the HMI.</description>
+ </element>
+ <element name="KEYBOARD" >
+ <description>This mode causes the interaction to immediately display a keyboard entry through the HMI.</description>
+ </element>
+ </enum>
+
+ <enum name="HMILevel">
+ <description>Enumeration that describes current levels of HMI.</description>
+ <element name="FULL" internal_name="HMI_FULL" />
+ <element name="LIMITED" internal_name="HMI_LIMITED" />
+ <element name="BACKGROUND" internal_name="HMI_BACKGROUND" />
+ <element name="NONE" internal_name="HMI_NONE" />
+ </enum>
+
+ <enum name="AudioStreamingState">
+ <description>Enumeration that describes possible states of audio streaming.</description>
+ <element name="AUDIBLE" />
+ <element name="ATTENUATED" />
+ <element name="NOT_AUDIBLE" />
+ </enum>
+
+ <enum name="SystemAction">
+ <description>Enumeration that describes system actions that can be triggered.</description>
+ <element name="DEFAULT_ACTION">
+ <description>Default action occurs. Standard behavior (e.g. SoftButton clears overlay).</description>
+ </element>
+ <element name="STEAL_FOCUS">
+ <description>App is brought into HMI_FULL.</description>
+ </element>
+ <element name="KEEP_CONTEXT">
+ <description>Current system context is maintained. An overlay is persisted even though a SoftButton has been pressed and the notification sent.</description>
+ </element>
+ </enum>
+
+ <enum name="SystemContext">
+ <description>Enumeration that describes possible contexts an app's HMI might be in. Communicated to whichever app is in HMI FULL, except Alert.</description>
+ <element name="MAIN" internal_name="SYSCTXT_MAIN">
+ <description>The app's persistent display (whether media/non-media/navigation) is fully visible onscreen.</description>
+ </element>
+ <element name="VRSESSION" internal_name="SYSCTXT_VRSESSION">
+ <description>The system is currently in a VR session (with whatever dedicated VR screen being overlaid onscreen).</description>
+ </element>
+ <element name="MENU" internal_name="SYSCTXT_MENU">
+ <description>The system is currently displaying an in-App menu onscreen.</description>
+ </element>
+ <element name="HMI_OBSCURED" internal_name="SYSCTXT_HMI_OBSCURED">
+ <description>The app's display HMI is currently being obscured by either a system or other app's overlay.</description>
+ </element>
+ <element name="ALERT" internal_name="SYSCTXT_ALERT">
+ <description>Broadcast only to whichever app has an alert currently being displayed.</description>
+ </element>
+ </enum>
+
+ <enum name="SoftButtonType">
+ <description>Contains information about the SoftButton capabilities.</description>
+ <element name="TEXT" internal_name="SBT_TEXT"/>
+ <element name="IMAGE" internal_name="SBT_IMAGE"/>
+ <element name="BOTH" internal_name="SBT_BOTH"/>
+ </enum>
+
+ <enum name="AppInterfaceUnregisteredReason">
+ <description>Error code, which comes from the module side.</description>
+ <!-- Deprecate
+ <element name="USER_EXIT" />
+ -->
+ <element name="IGNITION_OFF" />
+ <element name="BLUETOOTH_OFF" />
+ <element name="USB_DISCONNECTED" />
+ <element name="REQUEST_WHILE_IN_NONE_HMI_LEVEL" />
+ <element name="TOO_MANY_REQUESTS" />
+ <element name="DRIVER_DISTRACTION_VIOLATION" />
+ <element name="LANGUAGE_CHANGE" />
+ <element name="MASTER_RESET" />
+ <element name="FACTORY_DEFAULTS" />
+ <element name="APP_UNAUTHORIZED" />
+ <element name="PROTOCOL_VIOLATION" />
+ <element name="UNSUPPORTED_HMI_RESOURCE" />
+ </enum>
+
+ <enum name="TriggerSource">
+ <description>Indicates the source from where the command was triggered.</description>
+ <element name="MENU" internal_name="TS_MENU" />
+ <element name="VR" internal_name="TS_VR" />
+ <element name="KEYBOARD" internal_name="TS_KEYBOARD" />
+ </enum>
+
+ <enum name="HmiZoneCapabilities">
+ <description>Contains information about the HMI zone capabilities.</description>
+ <description>For future use.</description>
+ <element name="FRONT" />
+ <element name="BACK" />
+ </enum>
+
+ <enum name="SpeechCapabilities">
+ <description>Contains information about the TTS capabilities.</description>
+ <element name="TEXT" internal_name="SC_TEXT"/>
+ <element name="SAPI_PHONEMES" />
+ <element name="LHPLUS_PHONEMES" />
+ <element name="PRE_RECORDED" />
+ <element name="SILENCE" />
+ </enum>
+
+ <enum name="VrCapabilities">
+ <description>Contains information about the VR capabilities.</description>
+ <element name="TEXT" internal_name="VR_TEXT"/>
+ </enum>
+
+ <enum name="PrerecordedSpeech">
+ <description>Contains a list of prerecorded speech items present on the platform.</description>
+ <element name="HELP_JINGLE" />
+ <element name="INITIAL_JINGLE" />
+ <element name="LISTEN_JINGLE" />
+ <element name="POSITIVE_JINGLE" />
+ <element name="NEGATIVE_JINGLE" />
+ </enum>
+
+ <enum name="SamplingRate">
+ <description>Describes different sampling options for PerformAudioPassThru.</description>
+ <element name="8KHZ" internal_name="SamplingRate_8KHZ"/>
+ <element name="16KHZ" internal_name="SamplingRate_16KHZ"/>
+ <element name="22KHZ" internal_name="SamplingRate_22KHZ"/>
+ <element name="44KHZ" internal_name="SamplingRate_44KHZ"/>
+ </enum>
+
+ <enum name="BitsPerSample">
+ <description>Describes different quality options for PerformAudioPassThru.</description>
+ <element name="8_BIT" internal_name="BitsPerSample_8_BIT"/>
+ <element name="16_BIT" internal_name="BitsPerSample_16_BIT"/>
+ </enum>
+
+ <enum name="AudioType">
+ <description>Describes different audio type options for PerformAudioPassThru.</description>
+ <element name="PCM" />
+ </enum>
+
+ <struct name="AudioPassThruCapabilities">
+ <description>
+ Describes different audio type configurations for PerformAudioPassThru.
+ e.g. {8kHz,8-bit,PCM}
+ </description>
+ <param name="samplingRate" type="SamplingRate" mandatory="true"/>
+ <param name="bitsPerSample" type="BitsPerSample" mandatory="true"/>
+ <param name="audioType" type="AudioType" mandatory="true"/>
+ </struct>
+
+ <enum name="VehicleDataType">
+ <description>Defines the data types that can be published and subscribed to.</description>
+ <element name="VEHICLEDATA_GPS">
+ <description>Notifies GPSData may be subscribed</description>
+ </element>
+ <element name="VEHICLEDATA_SPEED" />
+ <element name="VEHICLEDATA_RPM" />
+ <element name="VEHICLEDATA_FUELLEVEL" />
+ <element name="VEHICLEDATA_FUELLEVEL_STATE" />
+ <element name="VEHICLEDATA_FUELCONSUMPTION" />
+ <element name="VEHICLEDATA_EXTERNTEMP" />
+ <element name="VEHICLEDATA_VIN" />
+ <element name="VEHICLEDATA_PRNDL" />
+ <element name="VEHICLEDATA_TIREPRESSURE" />
+ <element name="VEHICLEDATA_ODOMETER" />
+ <element name="VEHICLEDATA_BELTSTATUS" />
+ <element name="VEHICLEDATA_BODYINFO" />
+ <element name="VEHICLEDATA_DEVICESTATUS" />
+ <element name="VEHICLEDATA_ECALLINFO" />
+ <element name="VEHICLEDATA_AIRBAGSTATUS" />
+ <element name="VEHICLEDATA_EMERGENCYEVENT" />
+ <element name="VEHICLEDATA_CLUSTERMODESTATUS" />
+ <element name="VEHICLEDATA_MYKEY" />
+ <element name="VEHICLEDATA_BRAKING" />
+ <element name="VEHICLEDATA_WIPERSTATUS" />
+ <element name="VEHICLEDATA_HEADLAMPSTATUS" />
+ <element name="VEHICLEDATA_BATTVOLTAGE" />
+ <element name="VEHICLEDATA_ENGINETORQUE" />
+ <element name="VEHICLEDATA_ACCPEDAL" />
+ <element name="VEHICLEDATA_STEERINGWHEEL" />
+ </enum>
+
+ <enum name="ButtonName">
+ <description>Defines the hard (physical) and soft (touchscreen) buttons available from the module</description>
+ <element name="OK" />
+ <element name="SEEKLEFT" />
+ <element name="SEEKRIGHT" />
+ <element name="TUNEUP" />
+ <element name="TUNEDOWN" />
+ <element name="PRESET_0" />
+ <element name="PRESET_1" />
+ <element name="PRESET_2" />
+ <element name="PRESET_3" />
+ <element name="PRESET_4" />
+ <element name="PRESET_5" />
+ <element name="PRESET_6" />
+ <element name="PRESET_7" />
+ <element name="PRESET_8" />
+ <element name="PRESET_9" />
+ <element name="CUSTOM_BUTTON" />
+ <element name="SEARCH" />
+ <!-- Climate Buttons -->
+ <element name="AC_MAX" />
+ <element name="AC" />
+ <element name="RECIRCULATE" />
+ <element name="FAN_UP" />
+ <element name="FAN_DOWN" />
+ <element name="TEMP_UP" />
+ <element name="TEMP_DOWN" />
+ <element name="DEFROST_MAX" />
+ <element name="DEFROST" />
+ <element name="DEFROST_REAR" />
+ <element name="UPPER_VENT" />
+ <element name="LOWER_VENT" />
+ <!-- Radio Buttons -->
+ <element name="VOLUME_UP" />
+ <element name="VOLUME_DOWN" />
+ <element name="EJECT" />
+ <element name="SOURCE" />
+ <element name="SHUFFLE" />
+ <element name="REPEAT" />
+ </enum>
+
+ <enum name="MediaClockFormat">
+ <element name="CLOCK1">
+ <description>
+ minutesFieldWidth = 2;minutesFieldMax = 19;secondsFieldWidth = 2;secondsFieldMax = 99;maxHours = 19;maxMinutes = 59;maxSeconds = 59;
+ used for Type II and CID headunits
+ </description>
+ </element>
+ <element name="CLOCK2">
+ <description>
+ minutesFieldWidth = 3;minutesFieldMax = 199;secondsFieldWidth = 2;secondsFieldMax = 99;maxHours = 59;maxMinutes = 59;maxSeconds = 59;
+ used for Type V headunit
+ </description>
+ </element>
+ <element name="CLOCK3">
+ <description>
+ minutesFieldWidth = 2;minutesFieldMax = 59;secondsFieldWidth = 2;secondsFieldMax = 59;maxHours = 9;maxMinutes = 59;maxSeconds = 59;
+ used for GEN1.1 MFD3/4/5 headunits
+ </description>
+ </element>
+ <element name="CLOCKTEXT1">
+ <description>
+ 5 characters possible
+ Format: 1|sp c :|sp c c
+ 1|sp : digit "1" or space
+ c : character out of following character set: sp|0-9|[letters, see TypeII column in XLS. See [@TODO: create file ref]]
+ :|sp : colon or space
+ used for Type II headunit
+ </description>
+ </element>
+ <element name="CLOCKTEXT2">
+ <description>
+ 5 chars possible
+ Format: 1|sp c :|sp c c
+ 1|sp : digit "1" or space
+ c : character out of following character set: sp|0-9|[letters, see CID column in XLS. See [@TODO: create file ref]]
+ :|sp : colon or space
+ used for CID headunit
+ NOTE: difference between CLOCKTEXT1 and CLOCKTEXT2 is the supported character set
+ </description>
+ </element>
+ <element name="CLOCKTEXT3">
+ <description>
+ 6 chars possible
+ Format: 1|sp c c :|sp c c
+ 1|sp : digit "1" or space
+ c : character out of following character set: sp|0-9|[letters, see Type 5 column in XLS]. See [@TODO: create file ref]
+ :|sp : colon or space
+ used for Type V headunit
+ </description>
+ </element>
+ <element name="CLOCKTEXT4">
+ <description>
+ 6 chars possible
+ Format: c :|sp c c : c c
+ :|sp : colon or space
+ c : character out of following character set: sp|0-9|[letters].
+ used for GEN1.1 MFD3/4/5 headunits
+ </description>
+ </element>
+ </enum>
+
+ <enum name="DisplayType">
+ <description>See DAES for further infos regarding the displays</description>
+ <element name="CID"/>
+ <element name="TYPE2" />
+ <element name="TYPE5" />
+ <element name="NGN" />
+ <element name="GEN2_8_DMA" />
+ <element name="GEN2_6_DMA" />
+ <element name="MFD3" />
+ <element name="MFD4" />
+ <element name="MFD5" />
+ <element name="GEN3_8-INCH" internal_name="GEN3_8_INCH" />
+ <element name="SDL_GENERIC" />
+ </enum>
+
+ <enum name="TextFieldName">
+ <element name="mainField1">
+ <description>The first line of first set of main fields of the persistent display; applies to "Show"</description>
+ </element>
+
+ <element name="mainField2">
+ <description>The second line of first set of main fields of the persistent display; applies to "Show"</description>
+ </element>
+
+ <element name="mainField3">
+ <description>The first line of second set of main fields of persistent display; applies to "Show"</description>
+ </element>
+
+ <element name="mainField4">
+ <description>The second line of second set of main fields of the persistent display; applies to "Show"</description>
+ </element>
+
+ <element name="statusBar">
+ <description>The status bar on NGN; applies to "Show"</description>
+ </element>
+
+ <element name="mediaClock">
+ <description>Text value for MediaClock field; applies to "Show"</description>
+ </element>
+
+ <element name="mediaTrack">
+ <description>The track field of NGN and GEN1.1 MFD displays. This field is only available for media applications; applies to "Show"</description>
+ </element>
+
+ <element name="alertText1">
+ <description>The first line of the alert text field; applies to "Alert"</description>
+ </element>
+
+ <element name="alertText2">
+ <description>The second line of the alert text field; applies to "Alert"</description>
+ </element>
+
+ <element name="alertText3">
+ <description>The third line of the alert text field; applies to "Alert"</description>
+ </element>
+
+ <element name="scrollableMessageBody">
+ <description>Long form body of text that can include newlines and tabs; applies to "ScrollableMessage"</description>
+ </element>
+
+ <element name="initialInteractionText">
+ <description> First line suggestion for a user response (in the case of VR enabled interaction)</description>
+ </element>
+
+ <element name="navigationText1">
+ <description> First line of navigation text</description>
+ </element>
+
+ <element name="navigationText2">
+ <description> Second line of navigation text</description>
+ </element>
+
+ <element name="ETA">
+ <description> Estimated Time of Arrival time for navigation</description>
+ </element>
+
+ <element name="totalDistance">
+ <description> Total distance to destination for navigation</description>
+ </element>
+
+ <element name="audioPassThruDisplayText1">
+ <description> First line of text for audio pass thru</description>
+ </element>
+
+ <element name="audioPassThruDisplayText2">
+ <description> Second line of text for audio pass thru</description>
+ </element>
+
+ <element name="sliderHeader">
+ <description> Header text for slider</description>
+ </element>
+
+ <element name="sliderFooter">
+ <description> Footer text for slider</description>
+ </element>
+
+ <element name="menuName">
+ <description> Primary text for Choice</description>
+ </element>
+
+ <element name="secondaryText">
+ <description> Secondary text for Choice</description>
+ </element>
+
+ <element name="tertiaryText">
+ <description> Tertiary text for Choice</description>
+ </element>
+
+ <element name="menuTitle">
+ <description> Optional text to label an app menu button (for certain touchscreen platforms).</description>
+ </element>
+
+ <element name="locationName">
+ <description> Optional name / title of intended location for SendLocation.</description>
+ </element>
+
+ <element name="locationDescription">
+ <description> Optional description of intended location / establishment (if applicable) for SendLocation.</description>
+ </element>
+
+ <element name="addressLines">
+ <description> Optional location address (if applicable) for SendLocation.</description>
+ </element>
+
+ <element name="phoneNumber">
+ <description> Optional hone number of intended location / establishment (if applicable) for SendLocation.</description>
+ </element>
+
+ </enum>
+
+ <enum name="ImageFieldName">
+ <element name="softButtonImage">
+ <description>The image field for SoftButton</description>
+ </element>
+
+ <element name="choiceImage">
+ <description>The first image field for Choice</description>
+ </element>
+
+ <element name="choiceSecondaryImage">
+ <description>The secondary image field for Choice</description>
+ </element>
+
+ <element name="vrHelpItem">
+ <description>The image field for vrHelpItem</description>
+ </element>
+
+ <element name="turnIcon">
+ <description>The image field for Turn</description>
+ </element>
+
+ <element name="menuIcon">
+ <description>The image field for the menu icon in SetGlobalProperties</description>
+ </element>
+
+ <element name="cmdIcon">
+ <description>The image field for AddCommand</description>
+ </element>
+
+ <element name="appIcon">
+ <description>The image field for the app icon (set by setAppIcon)</description>
+ </element>
+
+ <element name="graphic">
+ <description>The image field for Show</description>
+ </element>
+
+ <element name="showConstantTBTIcon">
+ <description>The primary image field for ShowConstantTBT</description>
+ </element>
+
+ <element name="showConstantTBTNextTurnIcon">
+ <description>The secondary image field for ShowConstantTBT</description>
+ </element>
+
+ <element name="locationImage">
+ <description>The optional image of a destination / location</description>
+ </element>
+
+ </enum>
+
+ <enum name="CharacterSet">
+ <description>The list of potential character sets</description>
+ <element name="TYPE2SET">
+ <description>See [@TODO: create file ref]</description>
+ </element>
+ <element name="TYPE5SET">
+ <description>See [@TODO: create file ref]</description>
+ </element>
+ <element name="CID1SET">
+ <description>See [@TODO: create file ref]</description>
+ </element>
+ <element name="CID2SET">
+ <description>See [@TODO: create file ref]</description>
+ </element>
+ </enum>
+
+ <enum name="TextAlignment">
+ <description>The list of possible alignments, left, right, or centered</description>
+ <element name="LEFT_ALIGNED" />
+ <element name="RIGHT_ALIGNED" />
+ <element name="CENTERED" />
+ </enum>
+
+ <enum name="TBTState">
+ <description>Enumeration that describes possible states of turn-by-turn client or AppLink app.</description>
+ <element name="ROUTE_UPDATE_REQUEST" />
+ <element name="ROUTE_ACCEPTED" />
+ <element name="ROUTE_REFUSED" />
+ <element name="ROUTE_CANCELLED" />
+ <element name="ETA_REQUEST" />
+ <element name="NEXT_TURN_REQUEST" />
+ <element name="ROUTE_STATUS_REQUEST" />
+ <element name="ROUTE_SUMMARY_REQUEST" />
+ <element name="TRIP_STATUS_REQUEST" />
+ <element name="ROUTE_UPDATE_REQUEST_TIMEOUT" />
+ </enum>
+
+ <enum name="DriverDistractionState">
+ <description>Enumeration that describes possible states of driver distraction.</description>
+ <element name="DD_ON" />
+ <element name="DD_OFF" />
+ </enum>
+
+ <enum name="ImageType">
+ <description>Contains information about the type of image.</description>
+ <element name="STATIC" />
+ <element name="DYNAMIC" />
+ </enum>
+
+ <enum name="DeliveryMode">
+ <description>The mode in which the SendLocation request is sent</description>
+ <element name="PROMPT" />
+ <element name="DESTINATION" />
+ <element name="QUEUE" />
+ </enum>
+
+ <enum name="VideoStreamingProtocol">
+ <description>Enum for each type of video streaming protocol type.</description>
+ <element name="RAW">
+ <description>Raw stream bytes that contains no timestamp data and is the lowest supported video streaming</description>
+ </element>
+ <element name="RTP">
+ <description>RTP facilitates the transfer of real-time data. Information provided by this protocol include timestamps (for synchronization), sequence numbers (for packet loss and reordering detection) and the payload format which indicates the encoded format of the data.</description>
+ </element>
+ <element name="RTSP">
+ <description>The transmission of streaming data itself is not a task of RTSP. Most RTSP servers use the Real-time Transport Protocol (RTP) in conjunction with Real-time Control Protocol (RTCP) for media stream delivery. However, some vendors implement proprietary transport protocols. </description>
+ </element>
+ <element name="RTMP">
+ <description> Real-Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server. Macromedia is now owned by Adobe, which has released an incomplete version of the specification of the protocol for public use.</description>
+ </element>
+ <element name="WEBM">
+ <description>The WebM container is based on a profile of Matroska. WebM initially supported VP8 video and Vorbis audio streams. In 2013 it was updated to accommodate VP9 video and Opus audio.</description>
+ </element>
+ </enum>
+
+ <enum name="VideoStreamingCodec">
+ <description>Enum for each type of video streaming codec.</description>
+ <element name="H264">
+ <description>A block-oriented motion-compensation-based video compression standard. As of 2014 it is one of the most commonly used formats for the recording, compression, and distribution of video content.</description>
+ </element>
+ <element name="H265">
+ <description>High Efficiency Video Coding (HEVC), also known as H.265 and MPEG-H Part 2, is a video compression standard, one of several potential successors to the widely used AVC (H.264 or MPEG-4 Part 10). In comparison to AVC, HEVC offers about double the data compression ratio at the same level of video quality, or substantially improved video quality at the same bit rate. It supports resolutions up to 8192x4320, including 8K UHD.</description>
+ </element>
+ <element name="Theora">
+ <description>Theora is derived from the formerly proprietary VP3 codec, released into the public domain by On2 Technologies. It is broadly comparable in design and bitrate efficiency to MPEG-4 Part 2, early versions of Windows Media Video, and RealVideo while lacking some of the features present in some of these other codecs. It is comparable in open standards philosophy to the BBC's Dirac codec.</description>
+ </element>
+ <element name="VP8">
+ <description>VP8 can be multiplexed into the Matroska-based container format WebM along with Vorbis and Opus audio. The image format WebP is based on VP8's intra-frame coding. VP8's direct successor, VP9, and the emerging royalty-free internet video format AV1 from the Alliance for Open Media (AOMedia) are based on VP8.</description>
+ </element>
+ <element name="VP9">
+ <description>Similar to VP8, but VP9 is customized for video resolutions beyond high-definition video (UHD) and also enables lossless compression.</description>
+ </element>
+ </enum>
+
+ <struct name="Image">
+ <param name="value" minlength="0" maxlength="65535" type="String" mandatory="true">
+ <description>Either the static hex icon value or the binary image file name identifier (sent by PutFile).</description>
+ </param>
+ <param name="imageType" type="ImageType" mandatory="true">
+ <description>Describes, whether it is a static or dynamic image.</description>
+ </param>
+ </struct>
+
+ <struct name="SoftButton">
+ <param name="type" type="SoftButtonType" mandatory="true">
+ <description>Describes, whether it is text, highlighted text, icon, or dynamic image. See softButtonType</description>
+ </param>
+ <param name="text" minlength="0" maxlength="500" type="String" mandatory="false">
+ <description>Optional text to display (if defined as TEXT or BOTH)</description>
+ </param>
+ <param name="image" type="Image" mandatory="false">
+ <description>Optional image struct for SoftButton (if defined as IMAGE or BOTH)</description>
+ </param>
+ <param name="isHighlighted" type="Boolean" defvalue="false" mandatory="false">
+ <description>
+ True, if highlighted
+ False, if not highlighted
+ </description>
+ </param>
+ <param name="softButtonID" type="Integer" minvalue="0" maxvalue="65535" mandatory="true">
+ <description>Value which is returned via OnButtonPress / OnButtonEvent</description>
+ </param>
+ <param name="systemAction" type="SystemAction" defvalue="DEFAULT_ACTION" mandatory="false">
+ <description>Parameter indicating whether selecting a SoftButton shall call a specific system action. This is intended to allow Notifications to bring the callee into full / focus; or in the case of persistent overlays, the overlay can persist when a SoftButton is pressed.</description>
+ </param>
+ </struct>
+
+ <struct name="Choice">
+ <description>A choice is an option given to the user, which can be selected either by menu, or through voice recognition system.</description>
+ <param name="choiceID" type="Integer" minvalue="0" maxvalue="65535" mandatory="true"/>
+ <param name="menuName" type="String" maxlength="500" mandatory="true"/>
+ <param name="vrCommands" type="String" minsize="1" maxsize="100" maxlength="99" array="true" mandatory="true"/>
+ <param name="image" type="Image" mandatory="false"/>
+ <param name="secondaryText" maxlength="500" type="String" mandatory="false">
+ <description>Optional secondary text to display; e.g. address of POI in a search result entry</description>
+ </param>
+ <param name="tertiaryText" maxlength="500" type="String" mandatory="false">
+ <description>Optional tertiary text to display; e.g. distance to POI for a search result entry</description>
+ </param>
+ <param name="secondaryImage" type="Image" mandatory="false">
+ <description>Optional secondary image struct for choice</description>
+ </param>
+ </struct>
+
+ <struct name="VrHelpItem">
+ <param name="text" maxlength="500" type="String" mandatory="true">
+ <description>Text to display for VR Help item</description>
+ </param>
+ <param name="image" type="Image" mandatory="false">
+ <description>Image struct for VR Help item</description>
+ </param>
+ <param name="position" type="Integer" minvalue="1" maxvalue="100" mandatory="true">
+ <description>Position to display item in VR Help list</description>
+ </param>
+ </struct>
+
+ <struct name="SyncMsgVersion">
+ <description>Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application</description>
+
+ <param name="majorVersion" type="Integer" minvalue="1" maxvalue="10" mandatory="true">
+ <description>The major version indicates versions that is not-compatible to previous versions.</description>
+ </param>
+ <param name="minorVersion" type="Integer" minvalue="0" maxvalue="1000" mandatory="true">
+ <description>The minor version indicates a change to a previous version that should still allow to be run on an older version (with limited functionality)</description>
+ </param>
+ <param name="patchVersion" type="Integer" minvalue="0" maxvalue="1000" mandatory="false">
+ <description>The patch version indicates a fix to existing functionality in a previous version that should still be able to be run on an older version </description>
+ </param>
+ </struct>
+
+ <enum name="GlobalProperty">
+ <description>The different global properties.</description>
+ <element name="HELPPROMPT">
+ <description>The property helpPrompt of setGlobalProperties</description>
+ </element>
+ <element name="TIMEOUTPROMPT">
+ <description>The property timeoutPrompt of setGlobalProperties</description>
+ </element>
+ <element name="VRHELPTITLE">
+ <description>The property vrHelpTitle of setGlobalProperties</description>
+ </element>
+ <element name="VRHELPITEMS">
+ <description>The property array of vrHelp of setGlobalProperties</description>
+ </element>
+ <element name="MENUNAME">
+ <description>The property in-app menu name of setGlobalProperties</description>
+ </element>
+ <element name="MENUICON">
+ <description>The property in-app menu icon of setGlobalProperties</description>
+ </element>
+ <element name="KEYBOARDPROPERTIES">
+ <description>The on-screen keyboard configuration of setGlobalProperties</description>
+ </element>
+ </enum>
+
+ <enum name="CompassDirection">
+ <description>The list of potential compass directions</description>
+ <element name="NORTH">
+ </element>
+ <element name="NORTHWEST">
+ </element>
+ <element name="WEST">
+ </element>
+ <element name="SOUTHWEST">
+ </element>
+ <element name="SOUTH">
+ </element>
+ <element name="SOUTHEAST">
+ </element>
+ <element name="EAST">
+ </element>
+ <element name="NORTHEAST">
+ </element>
+ </enum>
+
+ <enum name="Dimension">
+ <description>The supported dimensions of the GPS</description>
+ <element name="NO_FIX" internal_name="Dimension_NO_FIX">
+ <description>No GPS at all</description>
+ </element>
+ <element name="2D" internal_name="Dimension_2D">
+ <description>Longitude and latitude</description>
+ </element>
+ <element name="3D" internal_name="Dimension_3D">
+ <description>Longitude and latitude and altitude</description>
+ </element>
+ </enum>
+
+ <enum name="PRNDL">
+ <description>The selected gear.</description>
+ <element name="PARK">
+ <description>Parking</description>
+ </element>
+ <element name="REVERSE">
+ <description>Reverse gear</description>
+ </element>
+ <element name="NEUTRAL">
+ <description>No gear</description>
+ </element>
+ <element name="DRIVE">
+ </element>
+ <element name="SPORT">
+ <description>Drive Sport mode</description>
+ </element>
+ <element name="LOWGEAR">
+ <description>1st gear hold</description>
+ </element>
+ <element name="FIRST">
+ </element>
+ <element name="SECOND">
+ </element>
+ <element name="THIRD">
+ </element>
+ <element name="FOURTH">
+ </element>
+ <element name="FIFTH">
+ </element>
+ <element name="SIXTH">
+ </element>
+ <element name="SEVENTH">
+ </element>
+ <element name="EIGHTH">
+ </element>
+ <element name="UNKNOWN">
+ </element>
+ <element name="FAULT">
+ </element>
+ </enum>
+
+ <enum name="ComponentVolumeStatus">
+ <description>The volume status of a vehicle component.</description>
+ <element name="UNKNOWN" internal_name="CVS_UNKNOWN">
+ </element>
+ <element name="NORMAL" internal_name="CVS_NORMAL">
+ </element>
+ <element name="LOW" internal_name="CVS_LOW">
+ </element>
+ <element name="FAULT" internal_name="CVS_FAULT">
+ </element>
+ <element name="ALERT" internal_name="CVS_ALERT">
+ </element>
+ <element name="NOT_SUPPORTED" internal_name="CVS_NOT_SUPPORTED">
+ </element>
+ </enum>
+
+ <struct name="SingleTireStatus">
+ <param name="status" type="ComponentVolumeStatus" mandatory="true">
+ <description>See ComponentVolumeStatus.</description>
+ </param>
+ </struct>
+
+ <enum name="WarningLightStatus">
+ <description>Reflects the status of a cluster instrument warning light.</description>
+ <element name="OFF" internal_name="WLS_OFF">
+ </element>
+ <element name="ON" internal_name="WLS_ON">
+ </element>
+ <element name="FLASH" internal_name="WLS_FLASH">
+ </element>
+ <element name="NOT_USED" internal_name="WLS_NOT_USED">
+ </element>
+ </enum>
+
+ <enum name="VehicleDataNotificationStatus">
+ <description>Reflects the status of a vehicle data notification.</description>
+ <element name="NOT_SUPPORTED" internal_name="VDNS_NOT_SUPPORTED">
+ </element>
+ <element name="NORMAL" internal_name="VDNS_NORMAL">
+ </element>
+ <element name="ACTIVE" internal_name="VDNS_ACTIVE">
+ </element>
+ <element name="NOT_USED" internal_name="VDNS_NOT_USED">
+ </element>
+ </enum>
+
+ <enum name="IgnitionStableStatus">
+ <description>Reflects the ignition switch stability.</description>
+ <element name="IGNITION_SWITCH_NOT_STABLE">
+ </element>
+ <element name="IGNITION_SWITCH_STABLE">
+ </element>
+ <element name="MISSING_FROM_TRANSMITTER">
+ </element>
+ </enum>
+
+ <enum name="IgnitionStatus">
+ <description>Reflects the status of ignition.</description>
+ <element name="UNKNOWN" internal_name="IS_UNKNOWN">
+ </element>
+ <element name="OFF" internal_name="IS_OFF">
+ </element>
+ <element name="ACCESSORY" internal_name="IS_ACCESSORY">
+ </element>
+ <element name="RUN" internal_name="IS_RUN">
+ </element>
+ <element name="START" internal_name="IS_START">
+ </element>
+ <element name="INVALID" internal_name="IS_INVALID">
+ </element>
+ </enum>
+
+ <enum name="VehicleDataEventStatus">
+ <description>Reflects the status of a vehicle data event; e.g. a seat belt event status.</description>
+ <element name="NO_EVENT" internal_name="VDES_NO_EVENT">
+ </element>
+ <element name="NO" internal_name="VDES_NO">
+ </element>
+ <element name="YES" internal_name="VDES_YES">
+ </element>
+ <element name="NOT_SUPPORTED" internal_name="VDES_NOT_SUPPORTED">
+ </element>
+ <element name="FAULT" internal_name="VDES_FAULT">
+ </element>
+ </enum>
+
+ <enum name="DeviceLevelStatus">
+ <description>Reflects the reported battery status of the connected device, if reported.</description>
+ <element name="ZERO_LEVEL_BARS">
+ </element>
+ <element name="ONE_LEVEL_BARS">
+ </element>
+ <element name="TWO_LEVEL_BARS">
+ </element>
+ <element name="THREE_LEVEL_BARS">
+ </element>
+ <element name="FOUR_LEVEL_BARS">
+ </element>
+ <element name="NOT_PROVIDED">
+ </element>
+ </enum>
+
+ <enum name="PrimaryAudioSource">
+ <description>Reflects the current primary audio source (if selected).</description>
+ <element name="NO_SOURCE_SELECTED">
+ </element>
+ <element name="USB">
+ </element>
+ <element name="USB2">
+ </element>
+ <element name="BLUETOOTH_STEREO_BTST">
+ </element>
+ <element name="LINE_IN">
+ </element>
+ <element name="IPOD">
+ </element>
+ <element name="MOBILE_APP">
+ </element>
+ </enum>
+
+ <enum name="WiperStatus">
+ <description>Reflects the status of the wipers.</description>
+ <element name="OFF" />
+ <element name="AUTO_OFF" />
+ <element name="OFF_MOVING" />
+ <element name="MAN_INT_OFF" />
+ <element name="MAN_INT_ON" />
+ <element name="MAN_LOW" />
+ <element name="MAN_HIGH" />
+ <element name="MAN_FLICK" />
+ <element name="WASH" />
+ <element name="AUTO_LOW" />
+ <element name="AUTO_HIGH" />
+ <element name="COURTESYWIPE" />
+ <element name="AUTO_ADJUST" />
+ <element name="STALLED" />
+ <element name="NO_DATA_EXISTS" />
+ </enum>
+
+ <enum name="VehicleDataStatus">
+ <description>Reflects the status of a binary vehicle data item.</description>
+ <element name="NO_DATA_EXISTS" internal_name="VDS_NO_DATA_EXISTS">
+ </element>
+ <element name="OFF" internal_name="VDS_OFF">
+ </element>
+ <element name="ON" internal_name="VDS_ON">
+ </element>
+ </enum>
+
+ <enum name="MaintenanceModeStatus">
+ <description>Reflects the status of a vehicle maintenance mode.</description>
+ <element name="NORMAL" internal_name="MMS_NORMAL">
+ </element>
+ <element name="NEAR" internal_name="MMS_NEAR">
+ </element>
+ <element name="ACTIVE" internal_name="MMS_ACTIVE">
+ </element>
+ <element name="FEATURE_NOT_PRESENT" internal_name="MMS_FEATURE_NOT_PRESENT">
+ </element>
+ </enum>
+
+ <enum name="VehicleDataActiveStatus">
+ <description>Reflects the status of given vehicle component.</description>
+ <element name="INACTIVE_NOT_CONFIRMED" internal_name="VDAS_INACTIVE_NOT_CONFIRMED">
+ </element>
+ <element name="INACTIVE_CONFIRMED" internal_name="VDAS_INACTIVE_CONFIRMED">
+ </element>
+ <element name="ACTIVE_NOT_CONFIRMED" internal_name="VDAS_ACTIVE_NOT_CONFIRMED">
+ </element>
+ <element name="ACTIVE_CONFIRMED" internal_name="VDAS_ACTIVE_CONFIRMED">
+ </element>
+ <element name="FAULT" internal_name="VDAS_FAULT">
+ </element>
+ </enum>
+
+ <enum name="AmbientLightStatus">
+ <description>Reflects the status of the ambient light sensor.</description>
+ <element name="NIGHT" />
+ <element name="TWILIGHT_1" />
+ <element name="TWILIGHT_2" />
+ <element name="TWILIGHT_3" />
+ <element name="TWILIGHT_4" />
+ <element name="DAY" />
+ <element name="UNKNOWN" internal_name="ALS_UNKNOWN" />
+ <element name="INVALID" />
+ </enum>
+
+ <enum name="ModuleType">
+ <element name="CLIMATE"/>
+ <element name="RADIO"/>
+ </enum>
+
+ <enum name="DefrostZone">
+ <element name="FRONT"/>
+ <element name="REAR"/>
+ <element name="ALL"/>
+ <element name="NONE"/>
+ </enum>
+
+ <enum name="VentilationMode">
+ <element name="UPPER"/>
+ <element name="LOWER"/>
+ <element name="BOTH"/>
+ <element name="NONE"/>
+ </enum>
+
+ <enum name="RadioBand">
+ <element name="AM"/>
+ <element name="FM"/>
+ <element name="XM"/>
+ </enum>
+
+ <enum name="RadioState">
+ <element name="ACQUIRING"/>
+ <element name="ACQUIRED"/>
+ <element name="MULTICAST"/>
+ <element name="NOT_FOUND"/>
+ </enum>
+
+ <enum name="TemperatureUnit">
+ <element name="FAHRENHEIT"/>
+ <element name="CELSIUS"/>
+ </enum>
+
+ <struct name="BeltStatus">
+ <param name="driverBeltDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsDrvBelt_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="passengerBeltDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsPasBelt_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="passengerBuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw1PasBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="driverBuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw1DrvBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="leftRow2BuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw2lBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="passengerChildDetected" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw1PasChld_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="rightRow2BuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw2rBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="middleRow2BuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw2mBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="middleRow3BuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw3mBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="leftRow3BuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw3lBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="rightRow3BuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw3rBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="leftRearInflatableBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw2lRib_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="rightRearInflatableBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw2rRib_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="middleRow1BeltDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw1mBelt_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="middleRow1BuckleBelted" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsRw1mBckl_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ </struct>
+
+ <struct name="BodyInformation">
+ <param name="parkBrakeActive" type="Boolean" mandatory="true">
+ <description>References signal "PrkBrkActv_B_Actl".</description>
+ </param>
+ <param name="ignitionStableStatus" type="IgnitionStableStatus" mandatory="true">
+ <description>References signal "Ignition_Switch_Stable". See IgnitionStableStatus.</description>
+ </param>
+ <param name="ignitionStatus" type="IgnitionStatus" mandatory="true">
+ <description>References signal "Ignition_status". See IgnitionStatus.</description>
+ </param>
+ <param name="driverDoorAjar" type="Boolean" mandatory="false">
+ <description>References signal "DrStatDrv_B_Actl".</description>
+ </param>
+ <param name="passengerDoorAjar" type="Boolean" mandatory="false">
+ <description>References signal "DrStatPsngr_B_Actl".</description>
+ </param>
+ <param name="rearLeftDoorAjar" type="Boolean" mandatory="false">
+ <description>References signal "DrStatRl_B_Actl".</description>
+ </param>
+ <param name="rearRightDoorAjar" type="Boolean" mandatory="false">
+ <description>References signal "DrStatRr_B_Actl".</description>
+ </param>
+ </struct>
+
+ <struct name="DeviceStatus">
+ <param name="voiceRecOn" type="Boolean" mandatory="true">
+ <description>References signal "CPM_VoiceRec_STAT".</description>
+ </param>
+ <param name="btIconOn" type="Boolean" mandatory="true">
+ <description>References signal "BT_ICON".</description>
+ </param>
+ <param name="callActive" type="Boolean" mandatory="true">
+ <description>References signal "CPM_Call_Active_STAT".</description>
+ </param>
+ <param name="phoneRoaming" type="Boolean" mandatory="true">
+ <description>References signal "CPM_Phone_Roaming_STAT".</description>
+ </param>
+ <param name="textMsgAvailable" type="Boolean" mandatory="true">
+ <description>References signal "CPM_TextMsg_AVAL".</description>
+ </param>
+ <param name="battLevelStatus" type="DeviceLevelStatus" mandatory="true">
+ <description>Device battery level status. References signal "CPM_Batt_Level_STAT". See DeviceLevelStatus.</description>
+ </param>
+ <param name="stereoAudioOutputMuted" type="Boolean" mandatory="true">
+ <description>References signal "CPM_Stereo_Audio_Output".</description>
+ </param>
+ <param name="monoAudioOutputMuted" type="Boolean" mandatory="true">
+ <description>References signal "CPM_Mono_Audio_Output".</description>
+ </param>
+ <param name="signalLevelStatus" type="DeviceLevelStatus" mandatory="true">
+ <description>Device signal level status. References signal "CPM_Signal_Strength_STAT". See DeviceLevelStatus.</description>
+ </param>
+ <param name="primaryAudioSource" type="PrimaryAudioSource" mandatory="true">
+ <description>References signal "CPM_Stereo_PAS_Source". See PrimaryAudioSource.</description>
+ </param>
+ <param name="eCallEventActive" type="Boolean" mandatory="true">
+ <description>References signal "eCall_Event".</description>
+ </param>
+ </struct>
+
+ <struct name="HeadLampStatus">
+ <param name="lowBeamsOn" type="Boolean" mandatory="true">
+ <description>Status of the low beam lamps. References signal "HeadLampLoActv_B_Stat".</description>
+ </param>
+ <param name="highBeamsOn" type="Boolean" mandatory="true">
+ <description>Status of the high beam lamps. References signal "HeadLghtHiOn_B_Stat".</description>
+ </param>
+ <param name="ambientLightSensorStatus" type="AmbientLightStatus" mandatory="false">
+ <description>Status of the ambient light sensor.</description>
+ </param>
+ </struct>
+
+ <struct name="AppInfo">
+ <description>Contains detailed information about the registered application.</description>
+
+ <param name="appDisplayName" type="String" maxlength="100" mandatory="true">
+ <description>The name displayed for the mobile application on the mobile device (can differ from the app name set in the initial RAI request).</description>
+ </param>
+
+ <param name="appBundleID" type="String" maxlength="256" mandatory="true">
+ <description>The AppBundleID of an iOS application or package name of the Android application. This supports App Launch strategies for each platform.</description>
+ </param>
+
+ <param name="appVersion" type="String" maxlength="256" mandatory="true">
+ <description>Represents the build version number of this particular mobile app.</description>
+ </param>
+
+ <param name="appIcon" type="String" maxlength="500" mandatory="false">
+ <description>A file reference to the icon utilized by this app (simplifies the process of setting an app icon during app registration).</description>
+ </param>
+ </struct>
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Ford Specific Data Items -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <enum name="FileType">
+ <description>Enumeration listing possible file types.</description>
+ <element name="GRAPHIC_BMP" />
+ <element name="GRAPHIC_JPEG" />
+ <element name="GRAPHIC_PNG" />
+ <element name="AUDIO_WAVE" />
+ <element name="AUDIO_MP3" />
+ <element name="AUDIO_AAC" />
+ <element name="BINARY" />
+ <element name="JSON" />
+ </enum>
+
+ <enum name="FuelCutoffStatus" >
+ <description>Reflects the status of the RCM fuel cutoff.</description>
+ <element name="TERMINATE_FUEL" internal_name="FCS_TERMINATE_FUEL">
+ </element>
+ <element name="NORMAL_OPERATION" internal_name="FCS_NORMAL_OPERATION">
+ </element>
+ <element name="FAULT" internal_name="FCS_FAULT">
+ </element>
+ </enum>
+
+ <enum name="EmergencyEventType">
+ <description>Reflects the emergency event status of the vehicle.</description>
+ <element name="NO_EVENT" internal_name="EET_NO_EVENT">
+ </element>
+ <element name="FRONTAL" internal_name="EET_FRONTAL">
+ </element>
+ <element name="SIDE" internal_name="EET_SIDE">
+ </element>
+ <element name="REAR" internal_name="EET_REAR">
+ </element>
+ <element name="ROLLOVER" internal_name="EET_ROLLOVER">
+ </element>
+ <element name="NOT_SUPPORTED" internal_name="EET_NOT_SUPPORTED">
+ </element>
+ <element name="FAULT" internal_name="EET_FAULT">
+ </element>
+ </enum>
+
+ <enum name="ECallConfirmationStatus">
+ <description>Reflects the status of the eCall Notification.</description>
+ <element name="NORMAL" internal_name="ECCS_NORMAL">
+ </element>
+ <element name="CALL_IN_PROGRESS" internal_name="ECCS_CALL_IN_PROGRESS">
+ </element>
+ <element name="CALL_CANCELLED" internal_name="ECCS_CALL_CANCELLED">
+ </element>
+ <element name="CALL_COMPLETED">
+ </element>
+ <element name="CALL_UNSUCCESSFUL" internal_name="ECCS_CALL_UNSUCCESSFUL">
+ </element>
+ <element name="ECALL_CONFIGURED_OFF" internal_name="ECCS_ECALL_CONFIGURED_OFF">
+ </element>
+ <element name="CALL_COMPLETE_DTMF_TIMEOUT" internal_name="ECCS_CALL_COMPLETE_DTMF_TIMEOUT">
+ </element>
+ </enum>
+
+ <enum name="PowerModeQualificationStatus" >
+ <description>Reflects the status of the current power mode qualification.</description>
+ <element name="POWER_MODE_UNDEFINED">
+ </element>
+ <element name="POWER_MODE_EVALUATION_IN_PROGRESS">
+ </element>
+ <element name="NOT_DEFINED">
+ </element>
+ <element name="POWER_MODE_OK">
+ </element>
+ </enum>
+
+ <enum name="PowerModeStatus">
+ <description>Reflects the status of the current power mode.</description>
+ <element name="KEY_OUT">
+ </element>
+ <element name="KEY_RECENTLY_OUT">
+ </element>
+ <element name="KEY_APPROVED_0">
+ </element>
+ <element name="POST_ACCESORY_0">
+ </element>
+ <element name="ACCESORY_1">
+ </element>
+ <element name="POST_IGNITION_1">
+ </element>
+ <element name="IGNITION_ON_2">
+ </element>
+ <element name="RUNNING_2">
+ </element>
+ <element name="CRANK_3">
+ </element>
+ </enum>
+
+ <enum name="CarModeStatus">
+ <description>Reflects the status of the current car mode.</description>
+ <element name="NORMAL" internal_name="CMS_NORMAL">
+ </element>
+ <element name="FACTORY" internal_name="CMS_FACTORY">
+ </element>
+ <element name="TRANSPORT" internal_name="CMS_TRANSPORT">
+ </element>
+ <element name="CRASH" internal_name="CMS_CRASH">
+ </element>
+ </enum>
+
+ <struct name="ECallInfo">
+ <param name="eCallNotificationStatus" type="VehicleDataNotificationStatus" mandatory="true">
+ <description>References signal "eCallNotification_4A". See VehicleDataNotificationStatus.</description>
+ </param>
+ <param name="auxECallNotificationStatus" type="VehicleDataNotificationStatus" mandatory="true">
+ <description>References signal "eCallNotification". See VehicleDataNotificationStatus.</description>
+ </param>
+ <param name="eCallConfirmationStatus" type="ECallConfirmationStatus" mandatory="true">
+ <description>References signal "eCallConfirmation". See ECallConfirmationStatus.</description>
+ </param>
+ </struct>
+
+ <struct name="AirbagStatus">
+ <param name="driverAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsDrvBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="driverSideAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsDrvSideBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="driverCurtainAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsDrvCrtnBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="passengerAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsPasBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="passengerCurtainAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsPasCrtnBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="driverKneeAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsKneeDrvBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="passengerSideAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsPasSideBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ <param name="passengerKneeAirbagDeployed" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsKneePasBag_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ </struct>
+
+ <struct name="EmergencyEvent">
+ <param name="emergencyEventType" type="EmergencyEventType" mandatory="true">
+ <description>References signal "VedsEvntType_D_Ltchd". See EmergencyEventType.</description>
+ </param>
+ <param name="fuelCutoffStatus" type="FuelCutoffStatus" mandatory="true">
+ <description>References signal "RCM_FuelCutoff". See FuelCutoffStatus.</description>
+ </param>
+ <param name="rolloverEvent" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsEvntRoll_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+
+ <param name="maximumChangeVelocity" type="Integer" minvalue="0" maxvalue="255" mandatory="true">
+ <description>References signal "VedsMaxDeltaV_D_Ltchd". Change in velocity in KPH. Additional reserved values:
+ 0x00 No event
+ 0xFE Not supported
+ 0xFF Fault
+ </description>
+ </param>
+ <param name="multipleEvents" type="VehicleDataEventStatus" mandatory="true">
+ <description>References signal "VedsMultiEvnt_D_Ltchd". See VehicleDataEventStatus.</description>
+ </param>
+ </struct>
+
+ <struct name="ClusterModeStatus">
+ <param name="powerModeActive" type="Boolean" mandatory="true">
+ <description>References signal "PowerMode_UB".</description>
+ </param>
+ <param name="powerModeQualificationStatus" type="PowerModeQualificationStatus" mandatory="true">
+ <description>References signal "PowerModeQF". See PowerModeQualificationStatus.</description>
+ </param>
+ <param name="carModeStatus" type="CarModeStatus" mandatory="true">
+ <description>References signal "CarMode". See CarMode.</description>
+ </param>
+ <param name="powerModeStatus" type="PowerModeStatus" mandatory="true">
+ <description>References signal "PowerMode". See PowerMode.</description>
+ </param>
+ </struct>
+
+ <struct name="MyKey">
+ <param name="e911Override" type="VehicleDataStatus" mandatory="true">
+ <description>Indicates whether e911 override is on. References signal "MyKey_e911Override_St". See VehicleDataStatus.</description>
+ </param>
+ </struct>
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- / Ford Specific Data Items -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <enum name="VehicleDataResultCode">
+ <description>Enumeration that describes possible result codes of a vehicle data entry request.</description>
+ <element name="SUCCESS" internal_name="VDRC_SUCCESS">
+ <description>Individual vehicle data item / DTC / DID request or subscription successful</description>
+ </element>
+ <element name="TRUNCATED_DATA" internal_name="VDRC_TRUNCATED_DATA">
+ <description>DTC / DID request successful, however, not all active DTCs or full contents of DID location available</description>
+ </element>
+ <element name="DISALLOWED" internal_name="VDRC_DISALLOWED">
+ <description>This vehicle data item is not allowed for this app by Ford.</description>
+ </element>
+ <element name="USER_DISALLOWED" internal_name="VDRC_USER_DISALLOWED">
+ <description>The user has not granted access to this type of vehicle data item at this time.</description>
+ </element>
+ <element name="INVALID_ID" internal_name="VDRC_INVALID_ID">
+ <description>The ECU ID referenced is not a valid ID on the bus / system.</description>
+ </element>
+ <element name="VEHICLE_DATA_NOT_AVAILABLE" internal_name="VDRC_DATA_NOT_AVAILABLE">
+ <description>The requested vehicle data item / DTC / DID is not currently available or responding on the bus / system.</description>
+ </element>
+ <element name="DATA_ALREADY_SUBSCRIBED" internal_name="VDRC_DATA_ALREADY_SUBSCRIBED">
+ <description>The vehicle data item is already subscribed.</description>
+ </element>
+ <element name="DATA_NOT_SUBSCRIBED" internal_name="VDRC_DATA_NOT_SUBSCRIBED">
+ <description>The vehicle data item cannot be unsubscribed because it is not currently subscribed.</description>
+ </element>
+ <element name="IGNORED" internal_name="VDRC_IGNORED">
+ <description>The request for this item is ignored because it is already in progress.</description>
+ </element>
+ </enum>
+
+ <struct name="TireStatus">
+ <description>The status and pressure of the tires.</description>
+
+ <param name="pressureTelltale" type="WarningLightStatus" mandatory="true">
+ <description>Status of the Tire Pressure Telltale. See WarningLightStatus.</description>
+ </param>
+ <param name="leftFront" type="SingleTireStatus" mandatory="true">
+ <description>The status of the left front tire.</description>
+ </param>
+ <param name="rightFront" type="SingleTireStatus" mandatory="true">
+ <description>The status of the right front tire.</description>
+ </param>
+ <param name="leftRear" type="SingleTireStatus" mandatory="true">
+ <description>The status of the left rear tire.</description>
+ </param>
+ <param name="rightRear" type="SingleTireStatus" mandatory="true">
+ <description>The status of the right rear tire.</description>
+ </param>
+ <param name="innerLeftRear" type="SingleTireStatus" mandatory="true">
+ <description>The status of the inner left rear.</description>
+ </param>
+ <param name="innerRightRear" type="SingleTireStatus" mandatory="true">
+ <description>The status of the inner right rear.</description>
+ </param>
+ </struct>
+
+ <struct name="GPSData">
+ <description>Struct with the GPS data.</description>
+ <param name="longitudeDegrees" type="Float" minvalue="-180" maxvalue="180" mandatory="true">
+ </param>
+ <param name="latitudeDegrees" type="Float" minvalue="-90" maxvalue="90" mandatory="true">
+ </param>
+ <param name="utcYear" type="Integer" minvalue="2010" maxvalue="2100" mandatory="true">
+ <description>The current UTC year.</description>
+ </param>
+ <param name="utcMonth" type="Integer" minvalue="1" maxvalue="12" mandatory="true">
+ <description>The current UTC month.</description>
+ </param>
+ <param name="utcDay" type="Integer" minvalue="1" maxvalue="31" mandatory="true">
+ <description>The current UTC day.</description>
+ </param>
+ <param name="utcHours" type="Integer" minvalue="0" maxvalue="23" mandatory="true">
+ <description>The current UTC hour.</description>
+ </param>
+ <param name="utcMinutes" type="Integer" minvalue="0" maxvalue="59" mandatory="true">
+ <description>The current UTC minute.</description>
+ </param>
+ <param name="utcSeconds" type="Integer" minvalue="0" maxvalue="59" mandatory="true">
+ <description>The current UTC second.</description>
+ </param>
+ <param name="compassDirection" type="CompassDirection" mandatory="true">
+ <description>See CompassDirection.</description>
+ </param>
+ <param name="pdop" type="Float" minvalue="0" maxvalue="10" defvalue="0" mandatory="true">
+ <description>PDOP. If undefined or unavailable, then value shall be set to 0.</description>
+ </param>
+ <param name="hdop" type="Float" minvalue="0" maxvalue="10" defvalue="0" mandatory="true">
+ <description>HDOP. If value is unknown, value shall be set to 0.</description>
+ </param>
+ <param name="vdop" type="Float" minvalue="0" maxvalue="10" defvalue="0" mandatory="true">
+ <description>VDOP. If value is unknown, value shall be set to 0.</description>
+ </param>
+ <param name="actual" type="Boolean" mandatory="true">
+ <description>
+ True, if actual.
+ False, if inferred.
+ </description>
+ </param>
+ <param name="satellites" type="Integer" minvalue="0" maxvalue="31" mandatory="true">
+ <description>Number of satellites in view</description>
+ </param>
+ <param name="dimension" type="Dimension" mandatory="true">
+ <description>See Dimension</description>
+ </param>
+ <param name="altitude" type="Float" minvalue="-10000" maxvalue="10000" mandatory="true">
+ <description>Altitude in meters</description>
+ </param>
+ <param name="heading" type="Float" minvalue="0" maxvalue="359.99" mandatory="true">
+ <description>The heading. North is 0. Resolution is 0.01</description>
+ </param>
+ <param name="speed" type="Float" minvalue="0" maxvalue="500" mandatory="true">
+ <description>The speed in KPH</description>
+ </param>
+ </struct>
+
+ <struct name="VehicleDataResult">
+ <description>Individual published data request result</description>
+ <param name="dataType" type="VehicleDataType" mandatory="true">
+ <description>Defined published data element type.</description>
+ </param>
+ <param name="resultCode" type="VehicleDataResultCode" mandatory="true">
+ <description>Published data result code.</description>
+ </param>
+ </struct>
+
+ <struct name="DIDResult">
+ <description>Individual requested DID result and data</description>
+ <param name="resultCode" type="VehicleDataResultCode" mandatory="true">
+ <description>Individual DID result code.</description>
+ </param>
+ <param name="didLocation" type="Integer" minvalue="0" maxvalue="65535" mandatory="true">
+ <description>Location of raw data from vehicle data DID</description>
+ </param>
+ <param name="data" type="String" maxlength="5000" mandatory="false">
+ <description>Raw DID-based data returned for requested element.</description>
+ </param>
+ </struct>
+
+ <struct name="StartTime">
+ <param name="hours" type="Integer" minvalue="0" maxvalue="59" mandatory="true">
+ <description>
+ The hour of the media clock.
+ Some radios only support a max of 19 hours. If out of range, it will be rejected.
+ </description>
+ </param>
+ <param name="minutes" type="Integer" minvalue="0" maxvalue="59" mandatory="true"/>
+ <param name="seconds" type="Integer" minvalue="0" maxvalue="59" mandatory="true"/>
+ </struct>
+
+ <struct name="TextField">
+ <param name="name" type="TextFieldName" mandatory="true">
+ <description>The name that identifies the field. See TextFieldName.</description>
+ </param>
+ <param name="characterSet" type="CharacterSet" mandatory="true">
+ <description>The character set that is supported in this field. See CharacterSet.</description>
+ </param>
+ <param name="width" type="Integer" minvalue="1" maxvalue="500" mandatory="true">
+ <description>The number of characters in one row of this field.</description>
+ </param>
+ <param name="rows" type="Integer" minvalue="1" maxvalue="8" mandatory="true">
+ <description>The number of rows of this field.</description>
+ </param>
+ </struct>
+
+ <struct name="ImageResolution">
+ <param name="resolutionWidth" type="Integer" minvalue="1" maxvalue="10000" mandatory="true">
+ <description>The image resolution width.</description>
+ </param>
+ <param name="resolutionHeight" type="Integer" minvalue="1" maxvalue="10000" mandatory="true">
+ <description>The image resolution height.</description>
+ </param>
+ </struct>
+
+ <struct name="ImageField">
+ <param name="name" type="ImageFieldName" mandatory="true">
+ <description>The name that identifies the field. See ImageFieldName.</description>
+ </param>
+ <param name="imageTypeSupported" type="FileType" minsize="1" maxsize="100" array="true" mandatory="true">
+ <description>The image types that are supported in this field. See FileType.</description>
+ </param>
+ <param name="imageResolution" type="ImageResolution" mandatory="false">
+ <description>The image resolution of this field.</description>
+ </param>
+ </struct>
+
+ <struct name="TouchCoord">
+ <param name="x" type="Integer" mandatory="true" minvalue="0" maxvalue="10000">
+ <description>The x coordinate of the touch.</description>
+ </param>
+ <param name="y" type="Integer" mandatory="true" minvalue="0" maxvalue="10000">
+ <description>The y coordinate of the touch.</description>
+ </param>
+ </struct>
+
+ <enum name="TouchType">
+ <element name="BEGIN"/>
+ <element name="MOVE"/>
+ <element name="END"/>
+ <element name="CANCEL"/>
+ </enum>
+
+ <struct name="TouchEvent">
+ <param name="id" type="Integer" mandatory="true" minvalue="0" maxvalue="9">
+ <description>
+ A touch's unique identifier. The application can track the current touch events by id.
+ If a touch event has type begin, the id should be added to the set of touches.
+ If a touch event has type end, the id should be removed from the set of touches.
+ </description>
+ </param>
+ <param name="ts" type="Integer" mandatory="true" array="true" minvalue="0" maxvalue="2000000000" minsize="1" maxsize="1000">
+ <description>
+ The time that the touch was recorded. This number can the time since the beginning of the session or something else as long as the units are in milliseconds.
+ The timestamp is used to determined the rate of change of position of a touch.
+ The application also uses the time to verify whether two touches, with different ids, are part of a single action by the user.
+ If there is only a single timestamp in this array, it is the same for every coordinate in the coordinates array.
+ </description>
+ </param>
+ <param name="c" type="TouchCoord" mandatory="true" array="true" minsize="1" maxsize="1000">
+ </param>
+ </struct>
+
+ <struct name="TouchEventCapabilities">
+ <param name="pressAvailable" type="Boolean" mandatory="true">
+ </param>
+ <param name="multiTouchAvailable" type="Boolean" mandatory="true">
+ </param>
+ <param name="doublePressAvailable" type="Boolean" mandatory="true">
+ </param>
+ </struct>
+
+ <struct name="ScreenParams">
+ <param name="resolution" type="ImageResolution" mandatory="true">
+ <description>The resolution of the prescribed screen area.</description>
+ </param>
+ <param name="touchEventAvailable" type="TouchEventCapabilities" mandatory="false">
+ <description>Types of screen touch events available in screen area.</description>
+ </param>
+ </struct>
+
+ <enum name="PermissionStatus">
+ <description>Enumeration that describes possible permission states of a policy table entry.</description>
+ <element name="ALLOWED" internal_name="PS_ALLOWED"/>
+ <element name="DISALLOWED" internal_name="PS_DISALLOWED"/>
+ <element name="USER_DISALLOWED" internal_name="PS_USER_DISALLOWED"/>
+ <element name="USER_CONSENT_PENDING" internal_name="PS_USER_CONSENT_PENDING"/>
+ </enum>
+
+ <struct name="HMIPermissions">
+ <param name="allowed" type="HMILevel" minsize="0" maxsize="100" array="true" mandatory="true">
+ <description>A set of all HMI levels that are permitted for this given RPC.</description>
+ </param>
+ <param name="userDisallowed" type="HMILevel" minsize="0" maxsize="100" array="true" mandatory="true">
+ <description>A set of all HMI levels that are prohibited for this given RPC.</description>
+ </param>
+ </struct>
+
+ <struct name="ParameterPermissions">
+ <param name="allowed" type="String" minsize="0" maxsize="100" maxlength = "100" array="true" mandatory="true">
+ <description>A set of all parameters that are permitted for this given RPC.</description>
+ </param>
+ <param name="userDisallowed" type="String" minsize="0" maxsize="100" maxlength = "100" array="true" mandatory="true">
+ <description>A set of all parameters that are prohibited for this given RPC.</description>
+ </param>
+ </struct>
+
+ <struct name="PermissionItem">
+ <param name="rpcName" type="String" maxlength="100" mandatory="true">
+ <description>Name of the individual RPC in the policy table.</description>
+ </param>
+ <param name="hmiPermissions" type="HMIPermissions" mandatory="true"/>
+ <param name="parameterPermissions" type="ParameterPermissions" mandatory="true"/>
+ </struct>
+
+ <struct name="DisplayCapabilities">
+ <description>Contains information about the display capabilities.</description>
+ <param name="displayType" type="DisplayType" mandatory="true">
+ <description>The type of the display. See DisplayType</description>
+ </param>
+ <param name="textFields" type="TextField" minsize="1" maxsize="100" array="true" mandatory="true">
+ <description>A set of all fields that support text data. See TextField</description>
+ </param>
+ <param name="imageFields" type="ImageField" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>A set of all fields that support images. See ImageField</description>
+ </param>
+ <param name="mediaClockFormats" type="MediaClockFormat" minsize="0" maxsize="100" array="true" mandatory="true">
+ <description>A set of all supported formats of the media clock. See MediaClockFormat</description>
+ </param>
+ <param name="graphicSupported" type="Boolean" mandatory="true">
+ <description>The display's persistent screen supports referencing a static or dynamic image.</description>
+ </param>
+ <param name="templatesAvailable" type="String" minsize="0" maxsize="100" maxlength="100" array="true" mandatory="false">
+ <description>A set of all predefined persistent display templates available on headunit. To be referenced in SetDisplayLayout.</description>
+ </param>
+ <param name="screenParams" type="ScreenParams" mandatory="false">
+ <description>A set of all parameters related to a prescribed screen area (e.g. for video / touch input).</description>
+ </param>
+ <param name="numCustomPresetsAvailable" type="Integer" minvalue="1" maxvalue="100" mandatory="false">
+ <description>The number of on-screen custom presets available (if any); otherwise omitted.</description>
+ </param>
+
+ <!-- TODO: Add pixel density? -->
+ </struct>
+ <struct name="ButtonCapabilities">
+ <description>Contains information about a button's capabilities.</description>
+ <param name="name" type="ButtonName" mandatory="true">
+ <description>The name of the button. See ButtonName.</description>
+ </param>
+ <param name="shortPressAvailable" type="Boolean" mandatory="true">
+ <description>
+ The button supports a short press.
+ Whenever the button is pressed short, onButtonPressed( SHORT) will be invoked.
+ </description>
+ </param>
+ <param name="longPressAvailable" type="Boolean" mandatory="true">
+ <description>
+ The button supports a LONG press.
+ Whenever the button is pressed long, onButtonPressed( LONG) will be invoked.
+ </description>
+ </param>
+ <param name="upDownAvailable" type="Boolean" mandatory="true">
+ <description>
+ The button supports "button down" and "button up".
+ Whenever the button is pressed, onButtonEvent( DOWN) will be invoked.
+ Whenever the button is released, onButtonEvent( UP) will be invoked.
+ </description>
+ </param>
+ </struct>
+ <struct name="SoftButtonCapabilities">
+ <description>Contains information about a SoftButton's capabilities.</description>
+ <param name="shortPressAvailable" type="Boolean" mandatory="true">
+ <description>
+ The button supports a short press.
+ Whenever the button is pressed short, onButtonPressed( SHORT) will be invoked.
+ </description>
+ </param>
+ <param name="longPressAvailable" type="Boolean" mandatory="true">
+ <description>
+ The button supports a LONG press.
+ Whenever the button is pressed long, onButtonPressed( LONG) will be invoked.
+ </description>
+ </param>
+ <param name="upDownAvailable" type="Boolean" mandatory="true">
+ <description>
+ The button supports "button down" and "button up".
+ Whenever the button is pressed, onButtonEvent( DOWN) will be invoked.
+ Whenever the button is released, onButtonEvent( UP) will be invoked.
+ </description>
+ </param>
+ <param name="imageSupported" type="Boolean" mandatory="true">
+ <description>The button supports referencing a static or dynamic image.</description>
+ </param>
+ </struct>
+ <struct name="PresetBankCapabilities">
+ <description>Contains information about on-screen preset capabilities.</description>
+ <param name="onScreenPresetsAvailable" type="Boolean" mandatory="true">
+ <description>Onscreen custom presets are available.</description>
+ </param>
+ </struct>
+ <struct name="HMICapabilities">
+ <param name="navigation" type="Boolean" mandatory="false">
+ <description>Availability of build in Nav. True: Available, False: Not Available</description>
+ </param>
+ <param name="phoneCall" type="Boolean" mandatory="false">
+ <description>Availability of build in phone. True: Available, False: Not Available </description>
+ </param>
+ <param name="videoStreaming" type="Boolean" mandatory="false">
+ <description>Availability of video streaming. </description>
+ </param>
+ <param name="remoteControl" type="Boolean" mandatory="false">
+ <description>Availability of remote control feature. True: Available, False: Not Available</description>
+ </param>
+ </struct>
+ <struct name="MenuParams">
+ <param name="parentID" type="Integer" minvalue="0" maxvalue="2000000000" defvalue="0" mandatory="false">
+ <description>
+ unique ID of the sub menu, the command will be added to.
+ If not provided, it will be provided to the top level of the in application menu.
+ </description>
+ </param>
+ <param name="position" type="Integer" minvalue="0" maxvalue="1000" mandatory="false">
+ <description>
+ Position within the items that are are at top level of the in application menu.
+ 0 will insert at the front.
+ 1 will insert at the second position.
+ if position is greater or equal than the number of items on top level, the sub menu will be appended to the end.
+ If this param was omitted the entry will be added at the end.
+ </description>
+ </param>
+ <param name="menuName" type="String" maxlength="500" mandatory="true">
+ <description>Text to show in the menu for this sub menu.</description>
+ </param>
+ </struct>
+ <struct name="TTSChunk">
+ <description>A TTS chunk, that consists of the text/phonemes to speak and the type (like text or SAPI)</description>
+ <param name="text" minlength="0" maxlength="500" type="String" mandatory="true">
+ <description>
+ The text or phonemes to speak.
+ May not be empty.
+ </description>
+ </param>
+ <param name="type" type="SpeechCapabilities" mandatory="true">
+ <description>Describes, whether it is text or a specific phoneme set. See SpeechCapabilities</description>
+ </param>
+ </struct>
+ <struct name="Turn">
+ <param name="navigationText" type="String" maxlength="500" mandatory="false">
+ <description>Individual turn text. Must provide at least text or icon for a given turn.</description>
+ </param>
+ <param name="turnIcon" type="Image" mandatory="false">
+ <description>Individual turn icon. Must provide at least text or icon for a given turn.</description>
+ </param>
+ </struct>
+ <struct name="VehicleType">
+ <param name="make" type="String" maxlength="500" mandatory="false">
+ <description>Make of the vehicle, e.g. Ford</description>
+ </param>
+ <param name="model" type="String" maxlength="500" mandatory="false">
+ <description>Model of the vehicle, e.g. Fiesta</description>
+ </param>
+ <param name="modelYear" type="String" maxlength="500" mandatory="false">
+ <description>Model Year of the vehicle, e.g. 2013</description>
+ </param>
+ <param name="trim" type="String" maxlength="500" mandatory="false">
+ <description>Trim of the vehicle, e.g. SE</description>
+ </param>
+ </struct>
+ <enum name="KeyboardLayout">
+ <description>Enumeration listing possible keyboard layouts.</description>
+ <element name="QWERTY" />
+ <element name="QWERTZ" />
+ <element name="AZERTY" />
+ </enum>
+ <enum name="KeyboardEvent" >
+ <description>Enumeration listing possible keyboard events.</description>
+ <element name="KEYPRESS" />
+ <element name="ENTRY_SUBMITTED" />
+ <element name="ENTRY_VOICE" />
+ <element name="ENTRY_CANCELLED" />
+ <element name="ENTRY_ABORTED" />
+ </enum>
+ <enum name="KeypressMode">
+ <description>Enumeration listing possible keyboard events.</description>
+ <element name="SINGLE_KEYPRESS">
+ <description>Each keypress is individually sent as the user presses the keyboard keys.</description>
+ </element>
+ <element name="QUEUE_KEYPRESSES">
+ <description>The keypresses are queued and a string is eventually sent once the user chooses to submit their entry.</description>
+ </element>
+ <element name="RESEND_CURRENT_ENTRY">
+ <description>The keypresses are queue and a string is sent each time the user presses a keyboard key; the string contains the entire current entry.</description>
+ </element>
+ </enum>
+ <struct name="KeyboardProperties">
+ <description>Configuration of on-screen keyboard (if available).</description>
+ <param name="language" type="Language" mandatory="false">
+ <description>The keyboard language.</description>
+ </param>
+ <param name="keyboardLayout" type="KeyboardLayout" mandatory="false" >
+ <description>Desired keyboard layout.</description>
+ </param>
+ <param name="keypressMode" type="KeypressMode" mandatory="false" >
+ <description>
+ Desired keypress mode.
+ If omitted, this value will be set to RESEND_CURRENT_ENTRY.
+ </description>
+ </param>
+ <param name="limitedCharacterList" type="String" maxlength="1" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>Array of keyboard characters to enable.</description>
+ <description>All omitted characters will be greyed out (disabled) on the keyboard.</description>
+ <description>If omitted, the entire keyboard will be enabled.</description>
+ </param>
+ <param name="autoCompleteText" type="String" maxlength="1000" mandatory="false">
+ <description>Allows an app to prepopulate the text field with a suggested or completed entry as the user types</description>
+ </param>
+ </struct>
+ <struct name="DeviceInfo">
+ <description>Various information about connecting device.</description>
+ <param name="hardware" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>Device model</description>
+ </param>
+ <param name="firmwareRev" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>Device firmware revision</description>
+ </param>
+ <param name="os" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>Device OS</description>
+ </param>
+ <param name="osVersion" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>Device OS version</description>
+ </param>
+ <param name="carrier" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>Device mobile carrier (if applicable)</description>
+ </param>
+ <param name="maxNumberRFCOMMPorts" type="Integer" minvalue="0" maxvalue="100" mandatory="false">
+ <description>Omitted if connected not via BT.</description>
+ </param>
+ </struct>
+ <enum name="RequestType">
+ <description>Enumeration listing possible asynchronous requests.</description>
+ <element name="HTTP" />
+ <element name="FILE_RESUME" />
+ <element name="AUTH_REQUEST" />
+ <element name="AUTH_CHALLENGE" />
+ <element name="AUTH_ACK" />
+ <element name="PROPRIETARY" />
+ <element name="QUERY_APPS" />
+ <element name="LAUNCH_APP" />
+ <element name="LOCK_SCREEN_ICON_URL" />
+ <element name="TRAFFIC_MESSAGE_CHANNEL" />
+ <element name="DRIVER_PROFILE" />
+ <element name="VOICE_SEARCH" />
+ <element name="NAVIGATION" />
+ <element name="PHONE" />
+ <element name="CLIMATE" />
+ <element name="SETTINGS" />
+ <element name="VEHICLE_DIAGNOSTICS" />
+ <element name="EMERGENCY" />
+ <element name="MEDIA" />
+ <element name="FOTA" />
+ </enum>
+ <enum name="AppHMIType">
+ <description>Enumeration listing possible app types.</description>
+ <element name="DEFAULT" />
+ <element name="COMMUNICATION" />
+ <element name="MEDIA" />
+ <element name="MESSAGING" />
+ <element name="NAVIGATION" />
+ <element name="INFORMATION" />
+ <element name="SOCIAL" />
+ <element name="BACKGROUND_PROCESS" />
+ <element name="TESTING" />
+ <element name="SYSTEM" />
+ <element name="PROJECTION" />
+ <element name="REMOTE_CONTROL" />
+ </enum>
+ <enum name="PredefinedLayout" platform="documentation">
+ <description>Predefined screen layout.</description>
+ <element name="DEFAULT" rootscreen="true">
+ <description>
+ Default media / non-media screen.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="MEDIA" rootscreen="true">
+ <description>
+ Default Media screen.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="NON-MEDIA" internal_name="NON_MEDIA" rootscreen="true">
+ <description>
+ Default Non-media screen.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="ONSCREEN_PRESETS" rootscreen="true">
+ <description>
+ Custom root media screen containing app-defined onscreen presets.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="NAV_FULLSCREEN_MAP" rootscreen="true" >
+ <description>
+ Custom root template screen containing full screen map with navigation controls.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="NAV_LIST" rootscreen="true" >
+ <description>
+ Custom root template screen containing video represented list.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="NAV_KEYBOARD" rootscreen="true" >
+ <description>
+ Custom root template screen containing video represented keyboard.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="GRAPHIC_WITH_TEXT" rootscreen="true">
+ <description>
+ Custom root template screen containing half-screen graphic with lines of text.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="TEXT_WITH_GRAPHIC" rootscreen="true">
+ <description>
+ Custom root template screen containing lines of text with half-screen graphic.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="TILES_ONLY" rootscreen="true">
+ <description>
+ Custom root template screen containing only tiled SoftButtons.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="TEXTBUTTONS_ONLY" rootscreen="true">
+ <description>
+ Custom root template screen containing only text SoftButtons.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="GRAPHIC_WITH_TILES" rootscreen="true">
+ <description>
+ Custom root template screen containing half-screen graphic with tiled SoftButtons.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="TILES_WITH_GRAPHIC" rootscreen="true">
+ <description>
+ Custom root template screen containing tiled SoftButtons with half-screen graphic.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="GRAPHIC_WITH_TEXT_AND_SOFTBUTTONS" rootscreen="true">
+ <description>
+ Custom root template screen containing half-screen graphic with text and SoftButtons.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="TEXT_AND_SOFTBUTTONS_WITH_GRAPHIC" rootscreen="true">
+ <description>
+ Custom root template screen containing text and SoftButtons with half-screen graphic.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="GRAPHIC_WITH_TEXTBUTTONS" rootscreen="true">
+ <description>
+ Custom root template screen containing half-screen graphic with text only SoftButtons.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="TEXTBUTTONS_WITH_GRAPHIC" rootscreen="true">
+ <description>
+ Custom root template screen containing text only SoftButtons with half-screen graphic.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="LARGE_GRAPHIC_WITH_SOFTBUTTONS" rootscreen="true">
+ <description>
+ Custom root template screen containing a large graphic and SoftButtons.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="DOUBLE_GRAPHIC_WITH_SOFTBUTTONS" rootscreen="true">
+ <description>
+ Custom root template screen containing two graphics and SoftButtons.
+ Can be set as a root screen.
+ </description>
+ </element>
+ <element name="LARGE_GRAPHIC_ONLY" rootscreen="true">
+ <description>
+ Custom root template screen containing only a large graphic.
+ Can be set as a root screen.
+ </description>
+ </element>
+ </enum>
+ <enum name="FunctionID" internal_scope="base">
+ <description>Enumeration linking function names with function IDs in AppLink protocol. Assumes enumeration starts at value 0.</description>
+ <element name="RESERVED" value="0" />
+ <!--
+ Base Request / Response RPCs
+ Range = 0x 0000 0001 - 0x 0000 7FFF
+ -->
+ <element name="RegisterAppInterfaceID" value="1" hexvalue="1" />
+ <element name="UnregisterAppInterfaceID" value="2" hexvalue="2" />
+ <element name="SetGlobalPropertiesID" value="3" hexvalue="3" />
+ <element name="ResetGlobalPropertiesID" value="4" hexvalue="4" />
+ <element name="AddCommandID" value="5" hexvalue="5" />
+ <element name="DeleteCommandID" value="6" hexvalue="6" />
+ <element name="AddSubMenuID" value="7" hexvalue="7" />
+ <element name="DeleteSubMenuID" value="8" hexvalue="8" />
+ <element name="CreateInteractionChoiceSetID" value="9" hexvalue="9" />
+ <element name="PerformInteractionID" value="10" hexvalue="A" />
+ <element name="DeleteInteractionChoiceSetID" value="11" hexvalue="B" />
+ <element name="AlertID" value="12" hexvalue="C" />
+ <element name="ShowID" value="13" hexvalue="D" />
+ <element name="SpeakID" value="14" hexvalue="E" />
+ <element name="SetMediaClockTimerID" value="15" hexvalue="F" />
+ <element name="PerformAudioPassThruID" value="16" hexvalue="10" />
+ <element name="EndAudioPassThruID" value="17" hexvalue="11" />
+ <element name="SubscribeButtonID" value="18" hexvalue="12" />
+ <element name="UnsubscribeButtonID" value="19" hexvalue="13" />
+ <element name="SubscribeVehicleDataID" value="20" hexvalue="14" />
+ <element name="UnsubscribeVehicleDataID" value="21" hexvalue="15" />
+ <element name="GetVehicleDataID" value="22" hexvalue="16" />
+ <element name="ReadDIDID" value="23" hexvalue="17" />
+ <element name="GetDTCsID" value="24" hexvalue="18" />
+ <element name="ScrollableMessageID" value="25" hexvalue="19" />
+ <element name="SliderID" value="26" hexvalue="1A" />
+ <element name="ShowConstantTBTID" value="27" hexvalue="1B" />
+ <element name="AlertManeuverID" value="28" hexvalue="1C" />
+ <element name="UpdateTurnListID" value="29" hexvalue="1D" />
+ <element name="ChangeRegistrationID" value="30" hexvalue="1E" />
+ <element name="GenericResponseID" value="31" hexvalue="1F" />
+ <element name="PutFileID" value="32" hexvalue="20" />
+ <element name="DeleteFileID" value="33" hexvalue="21" />
+ <element name="ListFilesID" value="34" hexvalue="22" />
+ <element name="SetAppIconID" value="35" hexvalue="23" />
+ <element name="SetDisplayLayoutID" value="36" hexvalue="24" />
+ <element name="DiagnosticMessageID" value="37" hexvalue="25" />
+ <element name="SystemRequestID" value="38" hexvalue="26" />
+ <element name="SendLocationID" value="39" hexvalue="27" />
+ <element name="DialNumberID" value="40" hexvalue="28" />
+ <element name="ButtonPressID" value="41" hexvalue="29" />
+ <element name="GetInteriorVehicleDataID" value="43" hexvalue="2B" />
+ <element name="SetInteriorVehicleDataID" value="44" hexvalue="2C" />
+ <element name="GetWayPointsID" value="45" hexvalue="2D" />
+ <element name="SubscribeWayPointsID" value="46" hexvalue="2E" />
+ <element name="UnsubscribeWayPointsID" value="47" hexvalue="2F" />
+ <element name="GetSystemCapabilityID" value="48" hexvalue="30" />
+ <element name="SendHapticDataID" value="49" hexvalue="31" />
+
+ <!--
+ Base Notifications
+ Range = 0x 0000 8000 - 0x 0000 FFFF
+ -->
+
+ <element name="OnHMIStatusID" value="32768" hexvalue="8000" />
+ <element name="OnAppInterfaceUnregisteredID" value="32769" hexvalue="8001" />
+ <element name="OnButtonEventID" value="32770" hexvalue="8002" />
+ <element name="OnButtonPressID" value="32771" hexvalue="8003" />
+ <element name="OnVehicleDataID" value="32772" hexvalue="8004" />
+ <element name="OnCommandID" value="32773" hexvalue="8005" />
+ <element name="OnTBTClientStateID" value="32774" hexvalue="8006" />
+ <element name="OnDriverDistractionID" value="32775" hexvalue="8007" />
+ <element name="OnPermissionsChangeID" value="32776" hexvalue="8008" />
+ <element name="OnAudioPassThruID" value="32777" hexvalue="8009" />
+ <element name="OnLanguageChangeID" value="32778" hexvalue="800A" />
+ <element name="OnKeyboardInputID" value="32779" hexvalue="800B" />
+ <element name="OnTouchEventID" value="32780" hexvalue="800C" />
+ <element name="OnSystemRequestID" value="32781" hexvalue="800D" />
+ <element name="OnHashChangeID" value="32782" hexvalue="800E" />
+ <element name="OnInteriorVehicleDataID" value="32783" hexvalue="800F" />
+ <element name="OnWayPointChangeID" value="32784" hexvalue="8010" />
+
+ <!--
+ Ford Specific Request / Response RPCs
+ Range = 0x 0001 0000 - 0x 0001 7FFF
+ -->
+
+ <element name="EncodedSyncPDataID" value="65536" hexvalue="10000" />
+ <element name="SyncPDataID" value="65537" hexvalue="10001" />
+
+ <!--
+ Ford Specific Notifications
+ Range = 0x 0001 8000 - 0x 0001 FFFF
+ -->
+
+ <element name="OnEncodedSyncPDataID" value="98304" hexvalue="18000" />
+ <element name="OnSyncPDataID" value="98305" hexvalue="18001" />
+ </enum>
+
+ <enum name="messageType">
+ <description>
+ Enumeration linking message types with function types in WiPro protocol.
+ Assumes enumeration starts at value 0.
+ </description>
+ <element name="request" value="0" />
+ <element name="response" value="1" />
+ <element name="notification" value="2" />
+ </enum>
+
+ <struct name="DateTime">
+ <param name="millisecond" type="Integer" minvalue="0" maxvalue="999" mandatory="false">
+ <description>Milliseconds </description>
+ </param>
+ <param name="second" type="Integer" minvalue="0" maxvalue="60" mandatory="false">
+ <description>Seconds part of time</description>
+ </param>
+ <param name="minute" type="Integer" minvalue="0" maxvalue="59" mandatory="false">
+ <description>Minutes part of time</description>
+ </param>
+ <param name="hour" type="Integer" minvalue="0" maxvalue="23" mandatory="false">
+ <description>Hours part of time. Note that this structure accepts time only in 24 Hr format</description>
+ </param>
+ <param name="day" type="Integer" minvalue="1" maxvalue="31" mandatory="false">
+ <description>Day of the month</description>
+ </param>
+ <param name="month" type="Integer" minvalue="1" maxvalue="12" mandatory="false">
+ <description>Month of the year</description>
+ </param>
+ <param name="year" type="Integer" maxvalue="4095" mandatory="false">
+ <description>The year in YYYY format</description>
+ </param>
+ <param name="tz_hour" type="Integer" minvalue="-12" maxvalue="14" defvalue="0" mandatory="false">
+ <description>Time zone offset in Hours wrt UTC.</description>
+ </param>
+ <param name="tz_minute" type="Integer" minvalue="0" maxvalue="59" defvalue="0" mandatory="false">
+ <description>Time zone offset in Min wrt UTC.</description>
+ </param>
+ </struct>
+
+ <enum name="WayPointType">
+ <description>Describes what kind of waypoint is requested/provided.</description>
+ <element name="ALL" />
+ <element name="DESTINATION" />
+ </enum>
+
+ <struct name="Coordinate">
+ <param name="latitudeDegrees" minvalue="-90" maxvalue="90" type="Float" mandatory="true">
+ <description>Latitude of the location.</description>
+ </param>
+ <param name="longitudeDegrees" minvalue="-180" maxvalue="180" type="Float" mandatory="true">
+ <description>Longitude of the location.</description>
+ </param>
+ </struct>
+
+ <struct name="OASISAddress">
+ <param name="countryName" minlength="0" maxlength="200" type="String" mandatory="false">
+ <description>Name of the country (localized)</description>
+ </param>
+ <param name="countryCode" minlength="0" maxlength="50" type="String" mandatory="false">
+ <description>Name of country (ISO 3166-2)</description>
+ </param>
+ <param name="postalCode" minlength="0" maxlength="16" type="String" mandatory="false">
+ <description>(PLZ, ZIP, PIN, CAP etc.)</description>
+ </param>
+ <param name="administrativeArea" minlength="0" maxlength="200" type="String" mandatory="false">
+ <description>Portion of country (e.g. state)</description>
+ </param>
+ <param name="subAdministrativeArea" minlength="0" maxlength="200" type="String" mandatory="false">
+ <description>Portion of e.g. state (e.g. county)</description>
+ </param>
+ <param name="locality" minlength="0" maxlength="200" type="String" mandatory="false">
+ <description>Hypernym for e.g. city/village</description>
+ </param>
+ <param name="subLocality" minlength="0" maxlength="200" type="String" mandatory="false">
+ <description>Hypernym for e.g. district</description>
+ </param>
+ <param name="thoroughfare" minlength="0" maxlength="200" type="String" mandatory="false">
+ <description>Hypernym for street, road etc.</description>
+ </param>
+ <param name="subThoroughfare" minlength="0" maxlength="200" type="String" mandatory="false">
+ <description>Portion of thoroughfare e.g. house number</description>
+ </param>
+ </struct>
+
+ <struct name="LocationDetails">
+ <param name="coordinate" type="Coordinate" mandatory="false">
+ <description>Latitude/Longitude of the location.</description>
+ </param>
+ <param name="locationName" type="String" maxlength="500" mandatory="false">
+ <description>Name of location.</description>
+ </param>
+ <param name="addressLines" type="String" maxlength="500" minsize="0" maxsize="4" array="true" mandatory="false">
+ <description>Location address for display purposes only</description>
+ </param>
+ <param name="locationDescription" type="String" maxlength="500" mandatory="false">
+ <description>Description intended location / establishment (if applicable)</description>
+ </param>
+ <param name="phoneNumber" type="String" maxlength="500" mandatory="false">
+ <description>Phone number of location / establishment.</description>
+ </param>
+ <param name="locationImage" type="Image" mandatory="false">
+ <description>Image / icon of intended location.</description>
+ </param>
+ <param name="searchAddress" type="OASISAddress" mandatory="false">
+ <description>Address to be used by navigation engines for search</description>
+ </param>
+ </struct>
+
+ <enum name="SystemCapabilityType">
+ <description>Enumerations of all available system capability types</description>
+ <element name="NAVIGATION"/>
+ <element name="PHONE_CALL"/>
+ <element name="VIDEO_STREAMING"/>
+ <element name="REMOTE_CONTROL"/>
+ </enum>
+
+ <struct name="NavigationCapability">
+ <description>Extended capabilities for an onboard navigation system</description>
+ <param name="sendLocationEnabled" type="Boolean" mandatory="false">
+ <description>If the module has the ability to add locations to the onboard nav</description>
+ </param>
+ <param name="getWayPointsEnabled" type="Boolean" mandatory="false">
+ <description>If the module has the ability to return way points from onboard nav</description>
+ </param>
+ </struct>
+
+ <struct name="PhoneCapability">
+ <description>Extended capabilities of the module's phone feature</description>
+ <param name="dialNumberEnabled" type="Boolean" mandatory="false">
+ <description>If the module has the ability to perform dial number</description>
+ </param>
+ </struct>
+
+ <struct name="VideoStreamingFormat">
+ <description>Video streaming formats and their specifications.</description>
+ <param name="protocol" type="VideoStreamingProtocol" mandatory="true">
+ <description>Protocol type, see VideoStreamingProtocol</description>
+ </param>
+ <param name="codec" type="VideoStreamingCodec" mandatory="true">
+ <description>Codec type, see VideoStreamingCodec</description>
+ </param>
+ </struct>
+
+ <struct name="VideoStreamingCapability">
+ <description>Contains information about this system's video streaming capabilities.</description>
+ <param name="preferredResolution" type="ImageResolution" mandatory="false">
+ <description>The preferred resolution of a video stream for decoding and rendering on HMI.</description>
+ </param>
+ <param name="maxBitrate" type="Integer" minvalue="0" maxvalue="2147483647" mandatory="false">
+ <description>The maximum bitrate of video stream that is supported, in kbps.</description>
+ </param>
+ <param name="supportedFormats" type="VideoStreamingFormat" array="true" mandatory="false">
+ <description>Detailed information on each format supported by this system, in its preferred order (i.e. the first element in the array is most preferable to the system). Each object will contain a VideoStreamingFormat that describes what can be expected.</description>
+ </param>
+ <param name="hapticSpatialDataSupported" type="Boolean" mandatory="false">
+ <description>True if the system can utilize the haptic spatial data from the source being streamed. If not included, it can be assumed the module doesn't support haptic spatial data'. </description>
+ </param>
+ </struct>
+
+ <!---Remote control -->
+
+ <struct name="Temperature">
+ <param name="unit" type="TemperatureUnit" mandatory="true">
+ <description>Temperature Unit</description>
+ </param>
+ <param name="value" type="Float" mandatory="true">
+ <description>Temperature Value in TemperatureUnit specified unit. Range depends on OEM and is not checked by SDL.</description>
+ </param>
+ </struct>
+
+ <struct name="RdsData">
+ <param name="PS" type="String" minlength="0" maxlength="8" mandatory="false">
+ <description>Program Service Name</description>
+ </param>
+ <param name="RT" type="String" minlength="0" maxlength="64" mandatory="false">
+ <description>Radio Text</description>
+ </param>
+ <param name="CT" type="String" minlength="24" maxlength="24" mandatory="false">
+ <description>The clock text in UTC format as YYYY-MM-DDThh:mm:ss.sTZD</description>
+ </param>
+ <param name="PI" type="String" minlength="0" maxlength="6" mandatory="false">
+ <description>Program Identification - the call sign for the radio station</description>
+ </param>
+ <param name="PTY" type="Integer" minvalue="0" maxvalue="31" mandatory="false">
+ <description>The program type - The region should be used to differentiate between EU and North America program types</description>
+ </param>
+ <param name="TP" type="Boolean" mandatory="false">
+ <description>Traffic Program Identification - Identifies a station that offers traffic</description>
+ </param>
+ <param name="TA" type="Boolean" mandatory="false">
+ <description>Traffic Announcement Identification - Indicates an ongoing traffic announcement</description>
+ </param>
+ <param name="REG" type="String" mandatory="false">
+ <description>Region</description>
+ </param>
+ </struct>
+
+ <struct name="RadioControlData">
+ <param name="frequencyInteger" type="Integer" minvalue="0" maxvalue="1710" mandatory="false">
+ <description>The integer part of the frequency ie for 101.7 this value should be 101</description>
+ </param>
+ <param name="frequencyFraction" type="Integer" minvalue="0" maxvalue="9" mandatory="false">
+ <description>The fractional part of the frequency for 101.7 is 7</description>
+ </param>
+ <param name="band" type="RadioBand" mandatory="false">
+ </param>
+ <param name="rdsData" type="RdsData" mandatory="false">
+ </param>
+ <param name="availableHDs" type="Integer" minvalue="1" maxvalue="3" mandatory="false">
+ <description>number of HD sub-channels if available</description>
+ </param>
+ <param name="hdChannel" type="Integer" minvalue="1" maxvalue="3" mandatory="false">
+ <description>Current HD sub-channel if available</description>
+ </param>
+ <param name="signalStrength" type="Integer" minvalue="0" maxvalue="100" mandatory="false">
+ </param>
+ <param name="signalChangeThreshold" type="Integer" minvalue="0" maxvalue="100" mandatory="false">
+ <description>If the signal strength falls below the set value for this parameter, the radio will tune to an alternative frequency</description>
+ </param>
+ <param name="radioEnable" type="Boolean" mandatory="false">
+ <description> True if the radio is on, false is the radio is off. If set to false, no other data will be included.</description>
+ </param>
+ <param name="state" type="RadioState" mandatory="false">
+ </param>
+ </struct>
+
+ <struct name="ClimateControlData">
+ <param name="fanSpeed" type="Integer" minvalue="0" maxvalue="100" mandatory="false">
+ </param>
+ <param name="currentTemperature" type="Temperature" mandatory="false">
+ </param>
+ <param name="desiredTemperature" type="Temperature" mandatory="false">
+ </param>
+ <param name="acEnable" type="Boolean" mandatory="false">
+ </param>
+ <param name="circulateAirEnable" type="Boolean" mandatory="false">
+ </param>
+ <param name="autoModeEnable" type="Boolean" mandatory="false">
+ </param>
+ <param name="defrostZone" type="DefrostZone" mandatory="false">
+ </param>
+ <param name="dualModeEnable" type="Boolean" mandatory="false">
+ </param>
+ <param name="acMaxEnable" type="Boolean" mandatory="false">
+ </param>
+ <param name="ventilationMode" type="VentilationMode" mandatory="false">
+ </param>
+ </struct>
+
+ <struct name="ModuleData">
+ <description>The moduleType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the moduleType is CLIMATE then a "climateControlData" should exist</description>
+ <param name="moduleType" type="ModuleType" mandatory="true">
+ </param>
+ <param name="radioControlData" type="RadioControlData" mandatory="false">
+ </param>
+ <param name="climateControlData" type="ClimateControlData" mandatory="false">
+ </param>
+ </struct>
+
+ <struct name="RadioControlCapabilities">
+ <description>Contains information about a radio control module's capabilities.</description>
+ <!-- need an ID in the future -->
+ <param name="moduleName" type="String" maxlength="100" mandatory="true">
+ <description>
+ The short friendly name of the climate control module.
+ It should not be used to identify a module by mobile application.
+ </description>
+ </param>
+ <param name="radioEnableAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of enable/disable radio.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="radioBandAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of radio band.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="radioFrequencyAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of radio frequency.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="hdChannelAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of HD radio channel.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="rdsDataAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the getting Radio Data System (RDS) data.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="availableHDsAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the getting the number of available HD channels.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="stateAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the getting the Radio state.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="signalStrengthAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the getting the signal strength.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="signalChangeThresholdAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the getting the signal Change Threshold.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ </struct>
+
+ <struct name="ClimateControlCapabilities">
+ <description>Contains information about a climate control module's capabilities.</description>
+ <!-- need an ID in the future -->
+ <param name="moduleName" type="String" maxlength="100" mandatory="true">
+ <description>The short friendly name of the climate control module.
+ It should not be used to identify a module by mobile application.</description>
+ </param>
+ <param name="fanSpeedAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of fan speed.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="desiredTemperatureAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of desired temperature.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="acEnableAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of turn on/off AC.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="acMaxEnableAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of enable/disable air conditioning is ON on the maximum level.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="circulateAirEnableAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of enable/disable circulate Air mode.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="autoModeEnableAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of enable/disable auto mode.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="dualModeEnableAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of enable/disable dual mode.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="defrostZoneAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of defrost zones.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="defrostZone" type="DefrostZone" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ A set of all defrost zones that are controllable.
+ </description>
+ </param>
+ <param name="ventilationModeAvailable" type="Boolean" mandatory="false">
+ <description>
+ Availability of the control of air ventilation mode.
+ True: Available, False: Not Available, Not present: Not Available.
+ </description>
+ </param>
+ <param name="ventilationMode" type="VentilationMode" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ A set of all ventilation modes that are controllable.
+ </description>
+ </param>
+ </struct>
+
+ <struct name="RemoteControlCapabilities">
+ <param name="climateControlCapabilities" type="ClimateControlCapabilities" mandatory="false" minsize="1" maxsize="100" array="true">
+ <description>If included, the platform supports RC climate controls. For this baseline version, maxsize=1. i.e. only one climate control module is supported.</description >
+ </param>
+ <param name="radioControlCapabilities" type="RadioControlCapabilities" mandatory="false" minsize="1" maxsize="100" array="true">
+ <description>If included, the platform supports RC radio controls.For this baseline version, maxsize=1. i.e. only one radio control module is supported.</description >
+ </param>
+ <param name="buttonCapabilities" type="ButtonCapabilities" mandatory="false" minsize="1" maxsize="100" array="true" >
+ <description>If included, the platform supports RC button controls with the included button names.</description >
+ </param>
+ </struct>
+
+ <!-- End of RC -->
+ <struct name="SystemCapability">
+ <description>The systemCapabilityType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist</description>
+ <param name="systemCapabilityType" type="SystemCapabilityType" mandatory="true">
+ <description>Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other para included.</description>
+ </param>
+ <param name="navigationCapability" type="NavigationCapability" mandatory="false">
+ <description>Describes extended capabilities for onboard navigation system </description>
+ </param>
+ <param name="phoneCapability" type="PhoneCapability" mandatory="false">
+ <description>Describes extended capabilities of the module's phone feature</description>
+ </param>
+ <param name="videoStreamingCapability" type="VideoStreamingCapability" mandatory="false">
+ <description>Describes extended capabilities of the module's phone feature</description>
+ </param>
+ <param name="remoteControlCapability" type="RemoteControlCapabilities" mandatory="false">
+ <description>Describes extended capabilities of the module's phone feature</description>
+ </param>
+ </struct>
+
+ <enum name="MetadataType">
+ <element name="mediaTitle">
+ <description>The data in this field contains the title of the currently playing audio track.</description>
+ </element>
+ <element name="mediaArtist">
+ <description>The data in this field contains the artist or creator of the currently playing audio track.</description>
+ </element>
+ <element name="mediaAlbum">
+ <description>The data in this field contains the album title of the currently playing audio track.</description>
+ </element>
+ <element name="mediaYear">
+ <description>The data in this field contains the creation year of the currently playing audio track.</description>
+ </element>
+ <element name="mediaGenre">
+ <description>The data in this field contains the genre of the currently playing audio track.</description>
+ </element>
+ <element name="mediaStation">
+ <description>The data in this field contains the name of the current source for the media.</description>
+ </element>
+ <element name="rating">
+ <description>The data in this field is a rating.</description>
+ </element>
+ <element name="currentTemperature">
+ <description>The data in this field is the current temperature.</description>
+ </element>
+ <element name="maximumTemperature">
+ <description>The data in this field is the maximum temperature for the day.</description>
+ </element>
+ <element name="minimumTemperature">
+ <description>The data in this field is the minimum temperature for the day.</description>
+ </element>
+ <element name="weatherTerm">
+ <description>The data in this field describes the current weather (ex. cloudy, clear, etc.).</description>
+ </element>
+ <element name="humidity">
+ <description>The data in this field describes the current humidity value.</description>
+ </element>
+ </enum>
+
+ <struct name="MetadataTags">
+ <param name="mainField1" type="MetadataType" minsize="0" maxsize="5" array="true" mandatory="false">
+ <description>The type of data contained in the "mainField1" text field.</description>
+ </param>
+ <param name="mainField2" type="MetadataType" minsize="0" maxsize="5" array="true" mandatory="false">
+ <description>The type of data contained in the "mainField2" text field.</description>
+ </param>
+ <param name="mainField3" type="MetadataType" minsize="0" maxsize="5" array="true" mandatory="false">
+ <description>The type of data contained in the "mainField3" text field.</description>
+ </param>
+ <param name="mainField4" type="MetadataType" minsize="0" maxsize="5" array="true" mandatory="false">
+ <description>The type of data contained in the "mainField4" text field.</description>
+ </param>
+ </struct>
+
+ <struct name="Rectangle">
+ <param name="x" type="Float" mandatory="true">
+ <description>The upper left X-coordinate of the rectangle</description>
+ </param>
+ <param name="y" type="Float" mandatory="true">
+ <description>The upper left Y-coordinate of the rectangle</description>
+ </param>
+ <param name="width" type="Float" mandatory="true">
+ <description>The width of the rectangle</description>
+ </param>
+ <param name="height" type="Float" mandatory="true">
+ <description>The height of the rectangle</description>
+ </param>
+ </struct>
+
+ <struct name="HapticRect">
+ <description>Defines haptic data for each user control object for video streaming application</description>
+ <param name="id" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>A user control spatial identifier</description>
+ </param>
+ <param name="rect" type="Rectangle" mandatory="true">
+ <description>The position of the haptic rectangle to be highlighted. The center of this rectangle will be "touched" when a press occurs.</description>
+ </param>
+ </struct>
+
+ <!-- Requests/Responses -->
+
+ <function name="RegisterAppInterface" functionID="RegisterAppInterfaceID" messagetype="request">
+ <description>
+ Establishes an interface with a mobile application.
+ Before registerAppInterface no other commands will be accepted/executed.
+ </description>
+
+ <param name="syncMsgVersion" type="SyncMsgVersion" mandatory="true">
+ <description>See SyncMsgVersion</description>
+ </param>
+
+ <param name="appName" type="String" maxlength="100" mandatory="true">
+ <description>
+ The mobile application name, e.g. "Ford Drive Green".
+ Needs to be unique over all applications.
+ May not be empty.
+ May not start with a new line character.
+ May not interfere with any name or synonym of previously registered applications and any predefined blacklist of words (global commands)
+ Needs to be unique over all applications. Applications with the same name will be rejected.
+ Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.
+ </description>
+ </param>
+
+ <param name="ttsName" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false" >
+ <description>
+ TTS string for VR recognition of the mobile application name, e.g. "Ford Drive Green".
+ Meant to overcome any failing on speech engine in properly pronouncing / understanding app name.
+ Needs to be unique over all applications.
+ May not be empty.
+ May not start with a new line character.
+ Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.
+ </description>
+ </param>
+
+ <param name="ngnMediaScreenAppName" type="String" maxlength="100" mandatory="false">
+ <description>
+ Provides an abbreviated version of the app name (if needed), that will be displayed on the NGN media screen.
+ If not provided, the appName is used instead (and will be truncated if too long)
+ Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.
+ </description>
+ </param>
+
+ <param name="vrSynonyms" type="String" maxlength="40" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ Defines an additional voice recognition command.
+ May not interfere with any app name of previously registered applications and any predefined blacklist of words (global commands)
+ Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.
+ </description>
+ </param>
+
+ <param name="isMediaApplication" type="Boolean" mandatory="true">
+ <description>
+ Indicates if the application is a media or a non-media application.
+ Only media applications will be able to stream audio to the module that is audible outside of the BT media source.
+ </description>
+ </param>
+ <param name="languageDesired" type="Language" mandatory="true">
+ <description>
+ See Language
+ Current app's expected VR+TTS language
+ If there is a mismatch with the module, the app will be able to change this registration with changeRegistration prior to app being brought into focus.
+ </description>
+ </param>
+ <param name="hmiDisplayLanguageDesired" type="Language" mandatory="true">
+ <description>
+ See Language
+ Current app's expected display language
+ If there is a mismatch with the module, the app will be able to change this registration with changeRegistration prior to app being brought into focus.
+ </description>
+ </param>
+
+ <param name="appHMIType" type="AppHMIType" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ See AppHMIType
+ List of all applicable app HMI types stating which HMI classifications to be given to the app.
+ </description>
+ </param>
+
+ <param name="hashID" type="String" maxlength="100" mandatory="false">
+ <description>
+ ID used to uniquely identify current state of all app data that can persist through connection cycles (e.g. ignition cycles).
+ This registered data (commands, submenus, choice sets, etc.) can be reestablished without needing to explicitly reregister each piece.
+ If omitted, then the previous state of an app's commands, etc. will not be restored.
+ When sending hashID, all RegisterAppInterface parameters should still be provided (e.g. ttsName, etc.).
+ </description>
+ </param>
+ <param name="deviceInfo" type="DeviceInfo" mandatory="false">
+ <description>
+ See DeviceInfo.
+ </description>
+ </param>
+ <param name="appID" type="String" maxlength="100" mandatory="true">
+ <description>ID used to validate app with policy table entries</description>
+ </param>
+ <param name="appInfo" type="AppInfo" mandatory="false">
+ <description>
+ See AppInfo.
+ </description>
+ </param>
+ </function>
+
+ <function name="RegisterAppInterface" functionID="RegisterAppInterfaceID" messagetype="response">
+ <description>The response to registerAppInterface</description>
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="DUPLICATE_NAME"/>
+ <element name="TOO_MANY_APPLICATIONS"/>
+ <element name="APPLICATION_REGISTERED_ALREADY"/>
+ <element name="UNSUPPORTED_VERSION"/>
+ <element name="WRONG_LANGUAGE"/>
+ <element name="DISALLOWED"/>
+ <element name="WARNINGS"/>
+ <element name="RESUME_FAILED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="syncMsgVersion" type="SyncMsgVersion" mandatory="false">
+ <description>See SyncMsgVersion</description>
+ </param>
+
+ <param name="language" type="Language" mandatory="false">
+ <description>The currently active VR+TTS language on the module. See "Language" for options.</description>
+ </param>
+
+ <param name="hmiDisplayLanguage" type="Language" mandatory="false">
+ <description>The currently active display language on the module. See "Language" for options.</description>
+ </param>
+
+ <param name="displayCapabilities" type="DisplayCapabilities" mandatory="false">
+ <description>See DisplayCapabilities</description>
+ </param>
+
+ <param name="buttonCapabilities" type="ButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>See ButtonCapabilities</description >
+ </param>
+
+ <param name="softButtonCapabilities" type="SoftButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>If returned, the platform supports on-screen SoftButtons; see SoftButtonCapabilities.</description >
+ </param>
+
+ <param name="presetBankCapabilities" type="PresetBankCapabilities" mandatory="false">
+ <description>If returned, the platform supports custom on-screen Presets; see PresetBankCapabilities.</description >
+ </param>
+ <param name="hmiZoneCapabilities" type="HmiZoneCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>See HmiZoneCapabilities</description>
+ </param>
+ <param name="speechCapabilities" type="SpeechCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>See SpeechCapabilities</description>
+ </param>
+
+ <param name="prerecordedSpeech" type="PrerecordedSpeech" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>See PrerecordedSpeech</description>
+ </param>
+
+ <param name="vrCapabilities" type="VrCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>See VrCapabilities</description>
+ </param>
+
+ <param name="audioPassThruCapabilities" type="AudioPassThruCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>See AudioPassThruCapability</description>
+ </param>
+
+ <param name="pcmStreamCapabilities" type="AudioPassThruCapabilities" array="false" mandatory="false">
+ <description>See AudioPassThruCapability</description>
+ </param>
+
+ <param name="vehicleType" type="VehicleType" mandatory="false">
+ <description>Specifies the vehicle's type. See VehicleType.</description>
+ </param>
+
+ <param name="supportedDiagModes" type="Integer" minvalue="0" maxvalue="255" array="true" minsize="1" maxsize="100" mandatory="false" >
+ <description>
+ Specifies the white-list of supported diagnostic modes (0x00-0xFF) capable for DiagnosticMessage requests.
+ If a mode outside this list is requested, it will be rejected.
+ </description>
+ </param>
+
+ <param name="hmiCapabilities" type="HMICapabilities" mandatory="false">
+ <description>Specifies the HMI’s capabilities. See HMICapabilities.</description>
+ </param>
+
+ <param name="sdlVersion" type="String" maxlength="100" mandatory="false" platform="documentation">
+ <description>The SmartDeviceLink version.</description>
+ </param>
+
+ <param name="systemSoftwareVersion" type="String" maxlength="100" mandatory="false" platform="documentation">
+ <description>The software version of the system that implements the SmartDeviceLink core.</description>
+ </param>
+ </function>
+
+ <function name="UnregisterAppInterface" functionID="UnregisterAppInterfaceID" messagetype="request">
+ <description>
+ Closes an interface from a mobile application.
+ After unregisterAppInterface, no commands other than registerAppInterface will be accepted/executed.
+ Will fail, if no registerAppInterface was completed successfully before.
+ </description>
+ </function>
+
+ <function name="UnregisterAppInterface" functionID="UnregisterAppInterfaceID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="SetGlobalProperties" functionID="SetGlobalPropertiesID" messagetype="request">
+ <description>Allows setting global properties.</description>
+
+ <param name="helpPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false" >
+ <description>
+ The help prompt.
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ </description>
+ </param>
+
+ <param name="timeoutPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false" >
+ <description>
+ Help text for a wait timeout.
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ </description>
+ </param>
+
+ <param name="vrHelpTitle" type="String" maxlength="500" mandatory="false">
+ <description>
+ VR Help Title text.
+ If omitted on supported displays, the default module help title shall be used.
+ If omitted and one or more vrHelp items are provided, the request will be rejected.
+ </description>
+ </param>
+
+ <param name="vrHelp" type="VrHelpItem" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ VR Help Items.
+ If omitted on supported displays, the default AppLink VR help / What Can I Say? screen shall be used.
+ If the list of VR Help Items contains nonsequential positions (e.g. [1,2,4]), the RPC shall be rejected.
+ If omitted and a vrHelpTitle is provided, the request will be rejected.
+ </description>
+ </param>
+ <param name="menuTitle" maxlength="500" type="String" mandatory="false">
+ <description>Optional text to label an app menu button (for certain touchscreen platforms).</description>
+ </param>
+
+ <param name="menuIcon" type="Image" mandatory="false">
+ <description>>Optional icon to draw on an app menu button (for certain touchscreen platforms).</description>
+ </param>
+
+ <param name="keyboardProperties" type="KeyboardProperties" mandatory="false">
+ <description>On-screen keyboard configuration (if available).</description>
+ </param>
+ </function>
+
+ <function name="SetGlobalProperties" functionID="SetGlobalPropertiesID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="WARNINGS"/>
+ <element name="DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="ResetGlobalProperties" functionID="ResetGlobalPropertiesID" messagetype="request">
+ <description>Allows resetting global properties.</description>
+
+ <param name="properties" type="GlobalProperty" minsize="1" maxsize="100" array="true" mandatory="true">
+ <description>Contains the names of all global properties (like timeoutPrompt) that should be unset. Resetting means, that they have the same value as at start up (default)</description>
+ </param>
+ </function>
+
+ <function name="ResetGlobalProperties" functionID="ResetGlobalPropertiesID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="AddCommand" functionID="AddCommandID" messagetype="request">
+ <description>
+ Adds a command to the in application menu.
+ Either menuParams or vrCommands must be provided.
+ </description>
+
+ <param name="cmdID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>unique ID of the command to add.</description>
+ </param>
+
+ <param name="menuParams" type="MenuParams" mandatory="false">
+ <description>Optional sub value containing menu parameters</description>
+ </param>
+
+ <param name="vrCommands" type="String" minsize="1" maxsize="100" maxlength="99" array="true" mandatory="false">
+ <description>
+ An array of strings to be used as VR synonyms for this command.
+ If this array is provided, it may not be empty.
+ </description>
+ </param>
+
+ <param name="cmdIcon" type="Image" mandatory="false">
+ <description>
+ Image struct determining whether static or dynamic icon.
+ If omitted on supported displays, no (or the default if applicable) icon shall be displayed.
+ </description>
+ </param>
+
+ </function>
+
+ <function name="AddCommand" functionID="AddCommandID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_ID"/>
+ <element name="DUPLICATE_NAME"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="DISALLOWED"/>
+ <element name="WARNINGS"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="DeleteCommand" functionID="DeleteCommandID" messagetype="request">
+ <description>Deletes all commands from the in-application menu with the specified command id.</description>
+
+ <param name="cmdID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>ID of the command(s) to delete.</description>
+ </param>
+
+ </function>
+
+ <function name="DeleteCommand" functionID="DeleteCommandID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_ID"/>
+ <element name="IN_USE"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="AddSubMenu" functionID="AddSubMenuID" messagetype="request">
+ <description>Adds a sub menu to the in-application menu.</description>
+
+ <param name="menuID" type="Integer" minvalue="1" maxvalue="2000000000" mandatory="true">
+ <description>unique ID of the sub menu to add.</description>
+ </param>
+
+ <param name="position" type="Integer" minvalue="0" maxvalue="1000" defvalue="1000" mandatory="false">
+ <description>
+ Position within the items that are are at top level of the in application menu.
+ 0 will insert at the front.
+ 1 will insert at the second position.
+ If position is greater or equal than the number of items on top level, the sub menu will be appended to the end.
+ Position of any submenu will always be located before the return and exit options
+ If this param was omitted the entry will be added at the end.
+ </description>
+ </param>
+
+ <param name="menuName" maxlength="500" type="String" mandatory="true">
+ <description>Text to show in the menu for this sub menu.</description>
+ </param>
+ </function>
+
+ <function name="AddSubMenu" functionID="AddSubMenuID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_ID"/>
+ <element name="DUPLICATE_NAME"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="DeleteSubMenu" functionID="DeleteSubMenuID" messagetype="request">
+ <description>Deletes a submenu from the in-application menu.</description>
+
+ <param name="menuID" type="Integer" minvalue="1" maxvalue="2000000000" mandatory="true">
+ <description>The "menuID" of the submenu to delete. (See addSubMenu.menuID)</description>
+ </param>
+
+ </function>
+
+ <function name="DeleteSubMenu" functionID="DeleteSubMenuID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_ID"/>
+ <element name="IN_USE"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="CreateInteractionChoiceSet" functionID="CreateInteractionChoiceSetID" messagetype="request">
+ <description>creates interaction choice set to be used later by performInteraction</description>
+
+ <param name="interactionChoiceSetID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>Unique ID used for this interaction choice set.</description>
+ </param>
+
+ <param name="choiceSet" type="Choice" minsize="1" maxsize="100" array="true" mandatory="true"/>
+ </function>
+
+ <function name="CreateInteractionChoiceSet" functionID="CreateInteractionChoiceSetID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_ID"/>
+ <element name="DUPLICATE_NAME"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="PerformInteraction" functionID="PerformInteractionID" messagetype="request">
+ <description>Triggers an interaction (e.g. "Permit GPS?" - Yes, no, Always Allow).</description>
+
+ <param name="initialText" type="String" maxlength="500" mandatory="true">
+ <description>
+ Text to be displayed first.
+ </description>
+ </param>
+
+ <param name="initialPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ This is the initial prompt spoken to the user at the start of an interaction.
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ </description>
+ </param>
+
+ <param name="interactionMode" type="InteractionMode" mandatory="true">
+ <description>See InteractionMode.</description>
+ </param>
+
+ <param name="interactionChoiceSetIDList" type="Integer" minsize="0" maxsize="100" minvalue="0" maxvalue="2000000000" array="true" mandatory="true">
+ <description>List of interaction choice set IDs to use with an interaction.</description>
+ </param>
+
+ <param name="helpPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ Help text. This is the spoken string when a user speaks "help" when the interaction is occurring.
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ </description>
+ </param>
+
+ <param name="timeoutPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ Timeout text. This text is spoken when a VR interaction times out.
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ </description>
+ </param>
+
+ <param name="timeout" type="Integer" minvalue="5000" maxvalue="100000" defvalue="10000" mandatory="false">
+ <description>
+ Timeout in milliseconds.
+ If omitted a standard value of 10000 milliseconds is used.
+ Applies only to the menu portion of the interaction. The VR timeout will be handled by the platform.
+ </description>
+ </param>
+
+ <param name="vrHelp" type="VrHelpItem" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ Ability to send suggested VR Help Items to display on-screen during Perform Interaction.
+ If omitted on supported displays, the default generated list of suggested choices shall be displayed.
+ </description>
+ </param>
+
+ <param name="interactionLayout" type="LayoutMode" mandatory="false">
+ <description>See LayoutMode.</description>
+ </param>
+
+ </function>
+
+ <function name="PerformInteraction" functionID="PerformInteractionID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_ID"/>
+ <element name="DUPLICATE_NAME"/>
+ <element name="TIMED_OUT"/>
+ <element name="ABORTED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="WARNINGS"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="choiceID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
+ <description>
+ ID of the choice that was selected in response to PerformInteraction.
+ Only is valid if general result is "success:true".
+ </description>
+ </param>
+
+ <param name="manualTextEntry" type="String" maxlength="500" mandatory="false">
+ <description>
+ Manually entered text selection, e.g. through keyboard
+ Can be returned in lieu of choiceID, depending on trigger source
+ </description>
+ </param>
+
+ <param name="triggerSource" type="TriggerSource" mandatory="false">
+ <description>
+ See TriggerSource
+ Only is valid if resultCode is SUCCESS.
+ </description>
+ </param>
+
+ </function>
+
+ <function name="DeleteInteractionChoiceSet" functionID="DeleteInteractionChoiceSetID" messagetype="request">
+ <description>Deletes interaction choice set that has been created with "CreateInteractionChoiceSet".</description>
+ <description>The interaction may only be deleted when not currently in use by a "performInteraction".</description>
+
+ <param name="interactionChoiceSetID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>ID of the interaction choice set to delete.</description>
+ </param>
+ </function>
+
+ <function name="DeleteInteractionChoiceSet" functionID="DeleteInteractionChoiceSetID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_ID"/>
+ <element name="IN_USE"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="Alert" functionID="AlertID" messagetype="request">
+ <description>Shows an alert which typically consists of text-to-speech message and text on the display. At least either alertText1, alertText2 or TTSChunks need to be provided.</description>
+
+ <param name="alertText1" type="String" maxlength="500" mandatory="false">
+ <description>The first line of the alert text field</description>
+ </param>
+
+ <param name="alertText2" type="String" maxlength="500" mandatory="false">
+ <description>The second line of the alert text field</description>
+ </param>
+
+ <param name="alertText3" type="String" maxlength="500" mandatory="false">
+ <description>The optional third line of the alert text field</description>
+ </param>
+
+ <param name="ttsChunks" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ </description>
+ </param>
+
+ <param name="duration" type="Integer" minvalue="3000" maxvalue="10000" defvalue="5000" mandatory="false">
+ <description>
+ Timeout in milliseconds.
+ Typical timeouts are 3-5 seconds.
+ If omitted, timeout is set to 5s.
+ </description>
+ </param>
+
+ <param name="playTone" type="Boolean" mandatory="false">
+ <description>
+ Defines if tone should be played. Tone is played before TTS.
+ If omitted, no tone is played.
+ </description>
+ </param>
+
+ <param name="progressIndicator" type="Boolean" mandatory="false">
+ <description>
+ If supported on the given platform, the alert GUI will include some sort of animation indicating that loading of a feature is progressing. e.g. a spinning wheel or hourglass, etc.
+ </description>
+ </param>
+
+ <param name="softButtons" type="SoftButton" minsize="0" maxsize="4" array="true" mandatory="false">
+ <description>
+ App defined SoftButtons.
+ If omitted on supported displays, the displayed alert shall not have any SoftButtons.
+ </description>
+ </param>
+
+ </function>
+
+ <function name="Alert" functionID="AlertID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="ABORTED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="WARNINGS"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="tryAgainTime" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
+ <description>
+ Amount of time (in seconds) that an app must wait before resending an alert.
+ If provided, another system event or overlay currently has a higher priority than this alert.
+ An app must not send an alert without waiting at least the amount of time dictated.
+ </description>
+ </param>
+
+ </function>
+
+ <function name="Show" functionID="ShowID" messagetype="request">
+ <description>Updates the persistent display. Supported fields depend on display capabilities.</description>
+
+ <param name="mainField1" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>
+ The text that should be displayed in a single or upper display line.
+ If this text is not set, the text of mainField1 stays unchanged.
+ If this text is empty "", the field will be cleared.
+ </description>
+ </param>
+
+ <param name="mainField2" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>
+ The text that should be displayed on the second display line.
+ If this text is not set, the text of mainField2 stays unchanged.
+ If this text is empty "", the field will be cleared.
+ </description>
+ </param>
+
+ <param name="mainField3" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>
+ The text that should be displayed on the second "page" first display line.
+ If this text is not set, the text of mainField3 stays unchanged.
+ If this text is empty "", the field will be cleared.
+ </description>
+ </param>
+
+ <param name="mainField4" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>
+ The text that should be displayed on the second "page" second display line.
+ If this text is not set, the text of mainField4 stays unchanged.
+ If this text is empty "", the field will be cleared.
+ </description>
+ </param>
+
+ <param name="alignment" type="TextAlignment" mandatory="false">
+ <description>
+ Specifies how mainField1 and mainField2 texts should be aligned on display.
+ If omitted, texts will be centered.
+ </description>
+ </param>
+
+ <param name="statusBar" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>Requires investigation regarding the nav display capabilities. Potentially lower lowerStatusBar, upperStatusBar, titleBar, etc.</description>
+ </param>
+
+ <param name="mediaClock" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>
+ 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.
+ </description>
+ </param>
+
+ <param name="mediaTrack" type="String" minlength="0" maxlength="500" mandatory="false">
+ <description>
+ The text that should be displayed in the track field.
+ If this text is not set, the text of mediaTrack stays unchanged.
+ If this text is empty "", the field will be cleared.
+ </description>
+ </param>
+
+ <param name="graphic" type="Image" mandatory="false">
+ <description>
+ Image struct determining whether static or dynamic image to display in app.
+ If omitted on supported displays, the displayed graphic shall not change.
+ </description>
+ </param>
+
+ <param name="secondaryGraphic" type="Image" mandatory="false">
+ <description>
+ Image struct determining whether static or dynamic secondary image to display in app.
+ If omitted on supported displays, the displayed secondary graphic shall not change.
+ </description>
+ </param>
+
+
+ <param name="softButtons" type="SoftButton" minsize="0" maxsize="8" array="true" mandatory="false">
+ <description>
+ App defined SoftButtons.
+ If omitted on supported displays, the currently displayed SoftButton values will not change.
+ </description>
+ </param>
+
+ <param name="customPresets" type="String" maxlength="500" minsize="0" maxsize="10" array="true" mandatory="false">
+ <description>
+ App labeled on-screen presets (i.e. on-screen media presets or dynamic search suggestions).
+ If omitted on supported displays, the presets will be shown as not defined.
+ </description>
+ </param>
+
+ <param name="metadataTags" type="MetadataTags" mandatory="false">
+ <description>App defined metadata information. See MetadataStruct. Uses mainField1, mainField2, mainField3, mainField4.
+ If omitted on supported displays, the currently set metadata tags will not change.
+ If any text field contains no tags or the none tag, the metadata tag for that textfield should be removed.</description>
+ </param>
+ </function>
+
+ <function name="Show" functionID="ShowID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="WARNINGS"/>
+ <element name="ABORTED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="Speak" functionID="SpeakID" messagetype="request">
+ <description>Speaks a text.</description>
+
+ <param name="ttsChunks" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="true">
+ <description>
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ </description>
+ </param>
+
+ </function>
+
+ <function name="Speak" functionID="SpeakID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="ABORTED"/>
+ <element name="WARNINGS"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="SetMediaClockTimer" functionID="SetMediaClockTimerID" messagetype="request">
+ <description>Sets the initial media clock value and automatic update method.</description>
+
+ <param name="startTime" type="StartTime" mandatory="false">
+ <description>
+ See StartTime.
+ startTime must be provided for "COUNTUP" and "COUNTDOWN".
+ startTime will be ignored for "RESUME", and "CLEAR"
+ startTime can be sent for "PAUSE", in which case it will update the paused startTime
+ </description>
+ </param>
+
+ <param name="endTime" type="StartTime" mandatory="false">
+ <description>
+ See StartTime.
+ endTime can be provided for "COUNTUP" and "COUNTDOWN"; to be used to calculate any visual progress bar (if not provided, this feature is ignored)
+ If endTime is greater then startTime for COUNTDOWN or less than startTime for COUNTUP, then the request will return an INVALID_DATA.
+ endTime will be ignored for "RESUME", and "CLEAR"
+ endTime can be sent for "PAUSE", in which case it will update the paused endTime
+ </description>
+ </param>
+
+ <param name="updateMode" type="UpdateMode" mandatory="true">
+ <description>
+ Enumeration to control the media clock.
+ In case of pause, resume, or clear, the start time value is ignored and shall be left out. For resume, the time continues with the same value as it was when paused.
+ </description>
+ </param>
+ </function>
+
+ <function name="SetMediaClockTimer" functionID="SetMediaClockTimerID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="IGNORED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="PerformAudioPassThru" functionID="PerformAudioPassThruID" messagetype="request">
+ <description>Starts audio pass thru session </description>
+ <param name="initialPrompt" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>
+ The module will speak this prompt before opening the audio pass thru session.
+ An array of text chunks of type TTSChunk. See TTSChunk.
+ The array must have at least one item.
+ If omitted, then no initial prompt is spoken.
+ </description>
+ </param>
+ <param name="audioPassThruDisplayText1" type="String" mandatory="false" maxlength="500">
+ <description>First line of text displayed during audio capture.</description>
+ </param>
+ <param name="audioPassThruDisplayText2" type="String" mandatory="false" maxlength="500">
+ <description>Second line of text displayed during audio capture.</description>
+ </param>
+ <param name="samplingRate" type="SamplingRate" mandatory="true">
+ <description> This value shall be allowed at 8 kHz or 16 or 22 or 44 kHz.</description>
+ </param>
+ <param name="maxDuration" type="Integer" minvalue="1" maxvalue="1000000" mandatory="true">
+ <description>The maximum duration of audio recording in milliseconds. </description>
+ </param>
+ <param name="bitsPerSample" type="BitsPerSample" mandatory="true">
+ <description>Specifies the quality the audio is recorded. Currently 8 bit or 16 bit.</description>
+ </param>
+ <param name="audioType" type="AudioType" mandatory="true">
+ <description>Specifies the type of audio data being requested.</description>
+ </param>
+ <param name="muteAudio" type="Boolean" mandatory="false">
+ <description>
+ Defines if the current audio source should be muted during the APT session. If not, the audio source will play without interruption.
+ If omitted, the value is set to true.
+ </description>
+ </param>
+ </function>
+
+ <function name="PerformAudioPassThru" functionID="PerformAudioPassThruID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="DISALLOWED"/>
+ <element name="REJECTED"/>
+ <element name="ABORTED"/>
+ <element name="RETRY"/>
+ <element name="WARNINGS"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="EndAudioPassThru" functionID="EndAudioPassThruID" messagetype="request">
+ <description>When this request is invoked, the audio capture stops.</description>
+ </function>
+
+ <function name="EndAudioPassThru" functionID="EndAudioPassThruID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="SubscribeButton" functionID="SubscribeButtonID" messagetype="request">
+ <description>
+ Subscribes to built-in HMI buttons.
+ The application will be notified by the OnButtonEvent and OnButtonPress.
+ To unsubscribe the notifications, use unsubscribeButton.
+ </description>
+
+ <param name="buttonName" type="ButtonName" mandatory="true">
+ <description>Name of the button to subscribe.</description>
+ </param>
+ </function>
+
+ <function name="SubscribeButton" functionID="SubscribeButtonID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="UNSUPPORTED_RESOURCE" />
+ <element name="IGNORED" />
+ <element name="REJECTED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="UnsubscribeButton" functionID="UnsubscribeButtonID" messagetype="request">
+ <description>Unsubscribes from built-in HMI buttons.</description>
+
+ <param name="buttonName" type="ButtonName" mandatory="true">
+ <description>Name of the button to unsubscribe.</description>
+ </param>
+ </function>
+
+ <function name="UnsubscribeButton" functionID="UnsubscribeButtonID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="UNSUPPORTED_RESOURCE" />
+ <element name="IGNORED" />
+ <element name="REJECTED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="SubscribeVehicleData" functionID="SubscribeVehicleDataID" messagetype="request">
+ <description>
+ Subscribes for specific published data items.
+ The data will be only sent if it has changed.
+ The application will be notified by the onVehicleData notification whenever new data is available.
+ To unsubscribe the notifications, use unsubscribe with the same subscriptionType.
+ </description>
+
+ <param name="gps" type="Boolean" mandatory="false">
+ <description>See GPSData</description>
+ </param>
+ <param name="speed" type="Boolean" mandatory="false">
+ <description>The vehicle speed in kilometers per hour</description>
+ </param>
+ <param name="rpm" type="Boolean" mandatory="false">
+ <description>The number of revolutions per minute of the engine</description>
+ </param>
+ <param name="fuelLevel" type="Boolean" mandatory="false">
+ <description>The fuel level in the tank (percentage)</description>
+ </param>
+ <param name="fuelLevel_State" type="Boolean" mandatory="false">
+ <description>The fuel level state</description>
+ </param>
+ <param name="instantFuelConsumption" type="Boolean" mandatory="false">
+ <description>The instantaneous fuel consumption in microlitres</description>
+ </param>
+ <param name="externalTemperature" type="Boolean" mandatory="false">
+ <description>The external temperature in degrees celsius</description>
+ </param>
+ <param name="prndl" type="Boolean" mandatory="false">
+ <description>See PRNDL</description>
+ </param>
+ <param name="tirePressure" type="Boolean" mandatory="false">
+ <description>See TireStatus</description>
+ </param>
+ <param name="odometer" type="Boolean" mandatory="false">
+ <description>Odometer in km</description>
+ </param>
+ <param name="beltStatus" type="Boolean" mandatory="false">
+ <description>The status of the seat belts</description>
+ </param>
+ <param name="bodyInformation" type="Boolean" mandatory="false">
+ <description>The body information including power modes</description>
+ </param>
+ <param name="deviceStatus" type="Boolean" mandatory="false">
+ <description>The device status including signal and battery strength</description>
+ </param>
+ <param name="driverBraking" type="Boolean" mandatory="false">
+ <description>The status of the brake pedal</description>
+ </param>
+ <param name="wiperStatus" type="Boolean" mandatory="false">
+ <description>The status of the wipers</description>
+ </param>
+ <param name="headLampStatus" type="Boolean" mandatory="false">
+ <description>Status of the head lamps</description>
+ </param>
+ <param name="engineTorque" type="Boolean" mandatory="false">
+ <description>Torque value for engine (in Nm) on non-diesel variants</description>
+ </param>
+ <param name="accPedalPosition" type="Boolean" mandatory="false">
+ <description>Accelerator pedal position (percentage depressed)</description>
+ </param>
+ <param name="steeringWheelAngle" type="Boolean" mandatory="false">
+ <description>Current angle of the steering wheel (in deg)</description>
+ </param>
+
+ <!-- Ford Specific Data Items -->
+ <param name="eCallInfo" type="Boolean" mandatory="false">
+ <description>Emergency Call notification and confirmation data</description>
+ </param>
+ <param name="airbagStatus" type="Boolean" mandatory="false">
+ <description>The status of the air bags</description>
+ </param>
+ <param name="emergencyEvent" type="Boolean" mandatory="false">
+ <description>Information related to an emergency event (and if it occurred)</description>
+ </param>
+ <param name="clusterModeStatus" type="Boolean" mandatory="false">
+ <description>The status modes of the cluster</description>
+ </param>
+ <param name="myKey" type="Boolean" mandatory="false">
+ <description>Information related to the MyKey feature</description>
+ </param>
+
+ <!-- / Ford Specific Data Items -->
+
+ </function>
+
+ <function name="SubscribeVehicleData" functionID="SubscribeVehicleDataID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="WARNINGS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED" />
+ <element name="IGNORED" />
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="gps" type="VehicleDataResult" mandatory="false">
+ <description>See GPSData</description>
+ </param>
+ <param name="speed" type="VehicleDataResult" mandatory="false">
+ <description>The vehicle speed in kilometers per hour</description>
+ </param>
+ <param name="rpm" type="VehicleDataResult" mandatory="false">
+ <description>The number of revolutions per minute of the engine</description>
+ </param>
+ <param name="fuelLevel" type="VehicleDataResult" mandatory="false">
+ <description>The fuel level in the tank (percentage)</description>
+ </param>
+ <param name="fuelLevel_State" type="VehicleDataResult" mandatory="false">
+ <description>The fuel level state</description>
+ </param>
+ <param name="instantFuelConsumption" type="VehicleDataResult" mandatory="false">
+ <description>The instantaneous fuel consumption in microlitres</description>
+ </param>
+ <param name="externalTemperature" type="VehicleDataResult" mandatory="false">
+ <description>The external temperature in degrees celsius.</description>
+ </param>
+ <param name="prndl" type="VehicleDataResult" mandatory="false">
+ <description>See PRNDL</description>
+ </param>
+ <param name="tirePressure" type="VehicleDataResult" mandatory="false">
+ <description>See TireStatus</description>
+ </param>
+ <param name="odometer" type="VehicleDataResult" mandatory="false">
+ <description>Odometer in km</description>
+ </param>
+ <param name="beltStatus" type="VehicleDataResult" mandatory="false">
+ <description>The status of the seat belts</description>
+ </param>
+ <param name="bodyInformation" type="VehicleDataResult" mandatory="false">
+ <description>The body information including power modes</description>
+ </param>
+ <param name="deviceStatus" type="VehicleDataResult" mandatory="false">
+ <description>The device status including signal and battery strength</description>
+ </param>
+ <param name="driverBraking" type="VehicleDataResult" mandatory="false">
+ <description>The status of the brake pedal</description>
+ </param>
+ <param name="wiperStatus" type="VehicleDataResult" mandatory="false">
+ <description>The status of the wipers</description>
+ </param>
+ <param name="headLampStatus" type="VehicleDataResult" mandatory="false">
+ <description>Status of the head lamps</description>
+ </param>
+ <param name="engineTorque" type="VehicleDataResult" mandatory="false">
+ <description>Torque value for engine (in Nm) on non-diesel variants</description>
+ </param>
+ <param name="accPedalPosition" type="VehicleDataResult" mandatory="false">
+ <description>Accelerator pedal position (percentage depressed)</description>
+ </param>
+ <param name="steeringWheelAngle" type="VehicleDataResult" mandatory="false">
+ <description>Current angle of the steering wheel (in deg)</description>
+ </param>
+
+ <!-- Ford Specific Data Items -->
+ <param name="eCallInfo" type="VehicleDataResult" mandatory="false">
+ <description>Emergency Call notification and confirmation data</description>
+ </param>
+ <param name="airbagStatus" type="VehicleDataResult" mandatory="false">
+ <description>The status of the air bags</description>
+ </param>
+ <param name="emergencyEvent" type="VehicleDataResult" mandatory="false">
+ <description>Information related to an emergency event (and if it occurred)</description>
+ </param>
+ <param name="clusterModes" type="VehicleDataResult" mandatory="false">
+ <description>The status modes of the cluster</description>
+ </param>
+ <param name="myKey" type="VehicleDataResult" mandatory="false">
+ <description>Information related to the MyKey feature</description>
+ </param>
+ <!-- / Ford Specific Data Items -->
+
+ </function>
+
+ <function name="UnsubscribeVehicleData" functionID="UnsubscribeVehicleDataID" messagetype="request">
+ <description>This function is used to unsubscribe the notifications from the subscribeVehicleData function.</description>
+
+ <param name="gps" type="Boolean" mandatory="false">
+ <description>See GPSData</description>
+ </param>
+ <param name="speed" type="Boolean" mandatory="false">
+ <description>The vehicle speed in kilometers per hour</description>
+ </param>
+ <param name="rpm" type="Boolean" mandatory="false">
+ <description>The number of revolutions per minute of the engine</description>
+ </param>
+ <param name="fuelLevel" type="Boolean" mandatory="false">
+ <description>The fuel level in the tank (percentage)</description>
+ </param>
+ <param name="fuelLevel_State" type="Boolean" mandatory="false">
+ <description>The fuel level state</description>
+ </param>
+ <param name="instantFuelConsumption" type="Boolean" mandatory="false">
+ <description>The instantaneous fuel consumption in microlitres</description>
+ </param>
+ <param name="externalTemperature" type="Boolean" mandatory="false">
+ <description>The external temperature in degrees celsius.</description>
+ </param>
+ <param name="prndl" type="Boolean" mandatory="false">
+ <description>See PRNDL</description>
+ </param>
+ <param name="tirePressure" type="Boolean" mandatory="false">
+ <description>See TireStatus</description>
+ </param>
+ <param name="odometer" type="Boolean" mandatory="false">
+ <description>Odometer in km</description>
+ </param>
+ <param name="beltStatus" type="Boolean" mandatory="false">
+ <description>The status of the seat belts</description>
+ </param>
+ <param name="bodyInformation" type="Boolean" mandatory="false">
+ <description>The body information including power modes</description>
+ </param>
+ <param name="deviceStatus" type="Boolean" mandatory="false">
+ <description>The device status including signal and battery strength</description>
+ </param>
+ <param name="driverBraking" type="Boolean" mandatory="false">
+ <description>The status of the brake pedal</description>
+ </param>
+ <param name="wiperStatus" type="Boolean" mandatory="false">
+ <description>The status of the wipers</description>
+ </param>
+ <param name="headLampStatus" type="Boolean" mandatory="false">
+ <description>Status of the head lamps</description>
+ </param>
+ <param name="engineTorque" type="Boolean" mandatory="false">
+ <description>Torque value for engine (in Nm) on non-diesel variants</description>
+ </param>
+ <param name="accPedalPosition" type="Boolean" mandatory="false">
+ <description>Accelerator pedal position (percentage depressed)</description>
+ </param>
+ <param name="steeringWheelAngle" type="Boolean" mandatory="false">
+ <description>Current angle of the steering wheel (in deg)</description>
+ </param>
+
+ <!-- Ford Specific Data Items -->
+ <param name="eCallInfo" type="Boolean" mandatory="false">
+ <description>Emergency Call notification and confirmation data</description>
+ </param>
+ <param name="airbagStatus" type="Boolean" mandatory="false">
+ <description>The status of the air bags</description>
+ </param>
+ <param name="emergencyEvent" type="Boolean" mandatory="false">
+ <description>Information related to an emergency event (and if it occurred)</description>
+ </param>
+ <param name="clusterModeStatus" type="Boolean" mandatory="false">
+ <description>The status modes of the cluster</description>
+ </param>
+ <param name="myKey" type="Boolean" mandatory="false">
+ <description>Information related to the MyKey feature</description>
+ </param>
+ <!-- / Ford Specific Data Items -->
+
+ </function>
+
+ <function name="UnsubscribeVehicleData" functionID="UnsubscribeVehicleDataID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="WARNINGS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED" />
+ <element name="IGNORED" />
+ <element name="DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="gps" type="VehicleDataResult" mandatory="false">
+ <description>See GPSData</description>
+ </param>
+ <param name="speed" type="VehicleDataResult" mandatory="false">
+ <description>The vehicle speed in kilometers per hour</description>
+ </param>
+ <param name="rpm" type="VehicleDataResult" mandatory="false">
+ <description>The number of revolutions per minute of the engine</description>
+ </param>
+ <param name="fuelLevel" type="VehicleDataResult" mandatory="false">
+ <description>The fuel level in the tank (percentage)</description>
+ </param>
+ <param name="fuelLevel_State" type="VehicleDataResult" mandatory="false">
+ <description>The fuel level state</description>
+ </param>
+ <param name="instantFuelConsumption" type="VehicleDataResult" mandatory="false">
+ <description>The instantaneous fuel consumption in microlitres</description>
+ </param>
+ <param name="externalTemperature" type="VehicleDataResult" mandatory="false">
+ <description>The external temperature in degrees celsius</description>
+ </param>
+ <param name="prndl" type="VehicleDataResult" mandatory="false">
+ <description>See PRNDL</description>
+ </param>
+ <param name="tirePressure" type="VehicleDataResult" mandatory="false">
+ <description>See TireStatus</description>
+ </param>
+ <param name="odometer" type="VehicleDataResult" mandatory="false">
+ <description>Odometer in km</description>
+ </param>
+ <param name="beltStatus" type="VehicleDataResult" mandatory="false">
+ <description>The status of the seat belts</description>
+ </param>
+ <param name="bodyInformation" type="VehicleDataResult" mandatory="false">
+ <description>The body information including power modes</description>
+ </param>
+ <param name="deviceStatus" type="VehicleDataResult" mandatory="false">
+ <description>The device status including signal and battery strength</description>
+ </param>
+ <param name="driverBraking" type="VehicleDataResult" mandatory="false">
+ <description>The status of the brake pedal</description>
+ </param>
+ <param name="wiperStatus" type="VehicleDataResult" mandatory="false">
+ <description>The status of the wipers</description>
+ </param>
+ <param name="headLampStatus" type="VehicleDataResult" mandatory="false">
+ <description>Status of the head lamps</description>
+ </param>
+ <param name="engineTorque" type="VehicleDataResult" mandatory="false">
+ <description>Torque value for engine (in Nm) on non-diesel variants</description>
+ </param>
+ <param name="accPedalPosition" type="VehicleDataResult" mandatory="false">
+ <description>Accelerator pedal position (percentage depressed)</description>
+ </param>
+ <param name="steeringWheelAngle" type="VehicleDataResult" mandatory="false">
+ <description>Current angle of the steering wheel (in deg)</description>
+ </param>
+
+ <!-- Ford Specific Data Items -->
+ <param name="eCallInfo" type="VehicleDataResult" mandatory="false">
+ <description>Emergency Call notification and confirmation data</description>
+ </param>
+ <param name="airbagStatus" type="VehicleDataResult" mandatory="false" >
+ <description>The status of the air bags</description>
+ </param>
+ <param name="emergencyEvent" type="VehicleDataResult" mandatory="false">
+ <description>Information related to an emergency event (and if it occurred)</description>
+ </param>
+ <param name="clusterModes" type="VehicleDataResult" mandatory="false">
+ <description>The status modes of the cluster</description>
+ </param>
+ <param name="myKey" type="VehicleDataResult" mandatory="false">
+ <description>Information related to the MyKey feature</description>
+ </param>
+ <!-- / Ford Specific Data Items -->
+
+ </function>
+
+ <function name="GetVehicleData" functionID="GetVehicleDataID" messagetype="request">
+ <description>Non periodic vehicle data read request.</description>
+
+ <param name="gps" type="Boolean" mandatory="false">
+ <description>See GPSData</description>
+ </param>
+ <param name="speed" type="Boolean" mandatory="false">
+ <description>The vehicle speed in kilometers per hour</description>
+ </param>
+ <param name="rpm" type="Boolean" mandatory="false">
+ <description>The number of revolutions per minute of the engine</description>
+ </param>
+ <param name="fuelLevel" type="Boolean" mandatory="false">
+ <description>The fuel level in the tank (percentage)</description>
+ </param>
+ <param name="fuelLevel_State" type="Boolean" mandatory="false">
+ <description>The fuel level state</description>
+ </param>
+ <param name="instantFuelConsumption" type="Boolean" mandatory="false">
+ <description>The instantaneous fuel consumption in microlitres</description>
+ </param>
+ <param name="externalTemperature" type="Boolean" mandatory="false">
+ <description>The external temperature in degrees celsius</description>
+ </param>
+ <param name="vin" type="Boolean" mandatory="false">
+ <description>Vehicle identification number</description>
+ </param>
+ <param name="prndl" type="Boolean" mandatory="false">
+ <description>See PRNDL</description>
+ </param>
+ <param name="tirePressure" type="Boolean" mandatory="false">
+ <description>See TireStatus</description>
+ </param>
+ <param name="odometer" type="Boolean" mandatory="false">
+ <description>Odometer in km</description>
+ </param>
+ <param name="beltStatus" type="Boolean" mandatory="false">
+ <description>The status of the seat belts</description>
+ </param>
+ <param name="bodyInformation" type="Boolean" mandatory="false">
+ <description>The body information including ignition status and internal temp</description>
+ </param>
+ <param name="deviceStatus" type="Boolean" mandatory="false">
+ <description>The device status including signal and battery strength</description>
+ </param>
+ <param name="driverBraking" type="Boolean" mandatory="false">
+ <description>The status of the brake pedal</description>
+ </param>
+ <param name="wiperStatus" type="Boolean" mandatory="false">
+ <description>The status of the wipers</description>
+ </param>
+ <param name="headLampStatus" type="Boolean" mandatory="false">
+ <description>Status of the head lamps</description>
+ </param>
+ <param name="engineTorque" type="Boolean" mandatory="false">
+ <description>Torque value for engine (in Nm) on non-diesel variants</description>
+ </param>
+ <param name="accPedalPosition" type="Boolean" mandatory="false">
+ <description>Accelerator pedal position (percentage depressed)</description>
+ </param>
+ <param name="steeringWheelAngle" type="Boolean" mandatory="false">
+ <description>Current angle of the steering wheel (in deg)</description>
+ </param>
+
+ <!-- Ford Specific Data Items -->
+ <param name="eCallInfo" type="Boolean" mandatory="false">
+ <description>Emergency Call notification and confirmation data</description>
+ </param>
+ <param name="airbagStatus" type="Boolean" mandatory="false">
+ <description>The status of the air bags</description>
+ </param>
+ <param name="emergencyEvent" type="Boolean" mandatory="false">
+ <description>Information related to an emergency event (and if it occurred)</description>
+ </param>
+ <param name="clusterModeStatus" type="Boolean" mandatory="false">
+ <description>The status modes of the cluster</description>
+ </param>
+ <param name="myKey" type="Boolean" mandatory="false">
+ <description>Information related to the MyKey feature</description>
+ </param>
+ <!-- / Ford Specific Data Items -->
+
+ </function>
+
+ <function name="GetVehicleData" functionID="GetVehicleDataID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="VEHICLE_DATA_NOT_ALLOWED"/>
+ <element name="VEHICLE_DATA_NOT_AVAILABLE"/>
+ <element name="USER_DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="gps" type="GPSData" mandatory="false">
+ <description>See GPSData</description>
+ </param>
+ <param name="speed" type="Float" minvalue="0" maxvalue="700" mandatory="false">
+ <description>The vehicle speed in kilometers per hour</description>
+ </param>
+ <param name="rpm" type="Integer" minvalue="0" maxvalue="20000" mandatory="false">
+ <description>The number of revolutions per minute of the engine</description>
+ </param>
+ <param name="fuelLevel" type="Float" minvalue="-6" maxvalue="106" mandatory="false">
+ <description>The fuel level in the tank (percentage)</description>
+ </param>
+ <param name="fuelLevel_State" type="ComponentVolumeStatus" mandatory="false">
+ <description>The fuel level state</description>
+ </param>
+ <param name="instantFuelConsumption" type="Float" minvalue="0" maxvalue="25575" mandatory="false">
+ <description>The instantaneous fuel consumption in microlitres</description>
+ </param>
+ <param name="externalTemperature" type="Float" minvalue="-40" maxvalue="100" mandatory="false">
+ <description>The external temperature in degrees celsius</description>
+ </param>
+ <param name="vin" type="String" maxlength="17" mandatory="false">
+ <description>Vehicle identification number</description>
+ </param>
+ <param name="prndl" type="PRNDL" mandatory="false">
+ <description>See PRNDL</description>
+ </param>
+ <param name="tirePressure" type="TireStatus" mandatory="false">
+ <description>See TireStatus</description>
+ </param>
+ <param name="odometer" type="Integer" minvalue="0" maxvalue="17000000" mandatory="false">
+ <description>Odometer in km</description>
+ </param>
+ <param name="beltStatus" type="BeltStatus" mandatory="false">
+ <description>The status of the seat belts</description>
+ </param>
+ <param name="bodyInformation" type="BodyInformation" mandatory="false">
+ <description>The body information including power modes</description>
+ </param>
+ <param name="deviceStatus" type="DeviceStatus" mandatory="false">
+ <description>The device status including signal and battery strength</description>
+ </param>
+ <param name="driverBraking" type="VehicleDataEventStatus" mandatory="false">
+ <description>The status of the brake pedal</description>
+ </param>
+ <param name="wiperStatus" type="WiperStatus" mandatory="false">
+ <description>The status of the wipers</description>
+ </param>
+ <param name="headLampStatus" type="HeadLampStatus" mandatory="false">
+ <description>Status of the head lamps</description>
+ </param>
+ <param name="engineTorque" type="Float" minvalue="-1000" maxvalue="2000" mandatory="false">
+ <description>Torque value for engine (in Nm) on non-diesel variants</description>
+ </param>
+ <param name="accPedalPosition" type="Float" minvalue="0" maxvalue="100" mandatory="false">
+ <description>Accelerator pedal position (percentage depressed)</description>
+ </param>
+ <param name="steeringWheelAngle" type="Float" minvalue="-2000" maxvalue="2000" mandatory="false">
+ <description>Current angle of the steering wheel (in deg)</description>
+ </param>
+
+ <!-- Ford Specific Data Items -->
+ <param name="eCallInfo" type="ECallInfo" mandatory="false">
+ <description>Emergency Call notification and confirmation data</description>
+ </param>
+ <param name="airbagStatus" type="AirbagStatus" mandatory="false">
+ <description>The status of the air bags</description>
+ </param>
+ <param name="emergencyEvent" type="EmergencyEvent" mandatory="false">
+ <description>Information related to an emergency event (and if it occurred)</description>
+ </param>
+ <param name="clusterModeStatus" type="ClusterModeStatus" mandatory="false">
+ <description>The status modes of the cluster</description>
+ </param>
+ <param name="myKey" type="MyKey" mandatory="false">
+ <description>Information related to the MyKey feature</description>
+ </param>
+ <!-- / Ford Specific Data Items -->
+
+ </function>
+
+ <function name="ReadDID" functionID="ReadDIDID" messagetype="request">
+ <description>Non periodic vehicle data read request</description>
+
+ <param name="ecuName" type="Integer" minvalue="0" maxvalue="65535" mandatory="true">
+ <description>Name of ECU.</description>
+ </param>
+ <param name="didLocation" type="Integer" minvalue="0" maxvalue="65535" minsize="1" maxsize="1000" array="true" mandatory="true">
+ <description>Get raw data from vehicle data DID location(s)</description>
+ </param>
+ </function>
+
+ <function name="ReadDID" functionID="ReadDIDID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="TRUNCATED_DATA"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="didResult" type="DIDResult" minsize="0" maxsize="1000" array="true" mandatory="false">
+ <description>Array of requested DID results (with data if available).</description>
+ </param>
+
+ </function>
+
+ <function name="GetDTCs" functionID="GetDTCsID" messagetype="request">
+ <description>Vehicle module diagnostic trouble code request.</description>
+
+ <param name="ecuName" type="Integer" minvalue="0" maxvalue="65535" mandatory="true">
+ <description>Name of ECU.</description>
+ </param>
+
+ <param name="dtcMask" type="Integer" minvalue="0" maxvalue="255" mandatory="false">
+ <description>DTC Mask Byte to be sent in diagnostic request to module .</description>
+ </param>
+
+ </function>
+
+ <function name="GetDTCs" functionID="GetDTCsID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="TRUNCATED_DATA"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="ecuHeader" type="Integer" minvalue="0" maxvalue="65535" mandatory="true">
+ <description>2 byte ECU Header for DTC response (as defined in VHR_Layout_Specification_DTCs.pdf)</description>
+ </param>
+
+ <param name="dtc" type="String" mandatory="false" minsize="1" maxsize="15" maxlength="10" array="true">
+ <description>
+ Array of all reported DTCs on module (ecuHeader contains information if list is truncated).
+ Each DTC is represented by 4 bytes (3 bytes of data and 1 byte status as defined in VHR_Layout_Specification_DTCs.pdf).
+ </description>
+ </param>
+
+ </function>
+
+ <function name="DiagnosticMessage" functionID="DiagnosticMessageID" messagetype="request">
+ <description>Non periodic vehicle diagnostic request</description>
+
+ <param name="targetID" type="Integer" minvalue="0" maxvalue="65535" mandatory="true">
+ <description>Name of target ECU.</description>
+ </param>
+
+ <param name="messageLength" type="Integer" minvalue="0" maxvalue="65535" mandatory="true">
+ <description>Length of message (in bytes).</description>
+ </param>
+
+ <param name="messageData" type="Integer" minvalue="0" maxvalue="255" minsize="1" maxsize="65535" array="true" mandatory="true">
+ <description>
+ Array of bytes comprising CAN message.
+ </description>
+ </param>
+ </function>
+
+ <function name="DiagnosticMessage" functionID="DiagnosticMessageID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="TRUNCATED_DATA"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="messageDataResult" type="Integer" minvalue="0" maxvalue="255" minsize="1" maxsize="65535" array="true" mandatory="true">
+ <description>
+ Array of bytes comprising CAN message result.
+ </description>
+ </param>
+
+ </function>
+
+ <function name="ScrollableMessage" functionID="ScrollableMessageID" messagetype="request">
+ <description>Creates a full screen overlay containing a large block of formatted text that can be scrolled with up to 8 SoftButtons defined</description>
+ <param name="scrollableMessageBody" type="String" maxlength="500" mandatory="true">
+ <description>Body of text that can include newlines and tabs.</description>
+ </param>
+ <param name="timeout" type="Integer" minvalue="1000" maxvalue="65535" defvalue="30000" mandatory="false">
+ <description>App defined timeout. Indicates how long of a timeout from the last action (i.e. scrolling message resets timeout).</description>
+ </param>
+ <param name="softButtons" type="SoftButton" minsize="0" maxsize="8" array="true" mandatory="false">
+ <description>
+ App defined SoftButtons.
+ If omitted on supported displays, only the system defined "Close" SoftButton will be displayed.
+ </description>
+ </param>
+ </function>
+
+ <function name="ScrollableMessage" functionID="ScrollableMessageID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="CHAR_LIMIT_EXCEEDED"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="DISALLOWED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="REJECTED"/>
+ <element name="ABORTED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="Slider" functionID="SliderID" messagetype="request">
+ <description>Creates a full screen or pop-up overlay (depending on platform) with a single user controlled slider.</description>
+ <param name="numTicks" type="Integer" minvalue="2" maxvalue="26" mandatory="true">
+ <description>Number of selectable items on a horizontal axis</description>
+ </param>
+ <param name="position" type="Integer" minvalue="1" maxvalue="26" mandatory="true">
+ <description>Initial position of slider control (cannot exceed numTicks)</description>
+ </param>
+ <param name="sliderHeader" type="String" maxlength="500" mandatory="true">
+ <description>Text header to display</description>
+ </param>
+ <param name="sliderFooter" type="String" maxlength="500" minsize="1" maxsize="26" array="true" mandatory="false">
+ <description>
+ Text footer to display (meant to display min/max threshold descriptors).
+ For a static text footer, only one footer string shall be provided in the array.
+ For a dynamic text footer, the number of footer text string in the array must match the numTicks value.
+ For a dynamic text footer, text array string should correlate with potential slider position index.
+ If omitted on supported displays, no footer text shall be displayed.
+ </description>
+ </param>
+ <param name="timeout" type="Integer" minvalue="1000" maxvalue="65535" defvalue="10000" mandatory="false">
+ <description>
+ App defined timeout. Indicates how long of a timeout from the last action (i.e. sliding control resets timeout).
+ If omitted, the value is set to 10000.
+ </description>
+ </param>
+ </function>
+
+ <function name="Slider" functionID="SliderID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="SAVED"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="DISALLOWED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="REJECTED"/>
+ <element name="ABORTED"/>
+ <element name="TIMED_OUT"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ <param name="sliderPosition" type="Integer" minvalue="1" maxvalue="26" mandatory="false">
+ <description>
+ Current slider value returned when saved or canceled (aborted)
+ This value is only returned for resultCodes "SAVED" or "ABORTED"
+ </description>
+ </param>
+ </function>
+
+ <function name="ShowConstantTBT" functionID="ShowConstantTBTID" messagetype="request">
+ <param name="navigationText1" type="String" minlength="0" maxlength="500" mandatory="false">
+ </param>
+ <param name="navigationText2" type="String" minlength="0" maxlength="500" mandatory="false">
+ </param>
+ <param name="eta" type="String" minlength="0" maxlength="500" mandatory="false">
+ </param>
+ <param name="timeToDestination" type="String" minlength="0" maxlength="500" mandatory="false">
+ </param>
+ <param name="totalDistance" type="String" minlength="0" maxlength="500" mandatory="false">
+ </param>
+ <param name="turnIcon" type="Image" mandatory="false">
+ </param>
+ <param name="nextTurnIcon" type="Image" mandatory="false">
+ </param>
+ <param name="distanceToManeuver" type="Float" minvalue="0" maxvalue="1000000000" mandatory="false">
+ <description>
+ Fraction of distance till next maneuver (starting from when AlertManeuver is triggered).
+ Used to calculate progress bar.
+ </description>
+ </param>
+ <param name="distanceToManeuverScale" type="Float" minvalue="0" maxvalue="1000000000" mandatory="false">
+ <description>
+ Distance till next maneuver (starting from) from previous maneuver.
+ Used to calculate progress bar.
+ </description>
+ </param>
+ <param name="maneuverComplete" type="Boolean" mandatory="false">
+ <description>
+ 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.
+ </description>
+ </param>
+ <param name="softButtons" type="SoftButton" minsize="0" maxsize="3" array="true" mandatory="false">
+ <description>
+ Three dynamic SoftButtons available (first SoftButton is fixed to "Turns").
+ If omitted on supported displays, the currently displayed SoftButton values will not change.
+ </description>
+ </param>
+ </function>
+
+ <function name="ShowConstantTBT" functionID="ShowConstantTBTID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="AlertManeuver" functionID="AlertManeuverID" messagetype="request">
+ <param name="ttsChunks" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>An array of text chunks of type TTSChunk. See TTSChunk</description>
+ </param>
+ <param name="softButtons" type="SoftButton" minsize="0" maxsize="3" array="true" mandatory="false">
+ <description>If omitted on supported displays, only the system defined "Close" SoftButton shall be displayed.</description>
+ </param>
+ </function>
+
+ <function name="AlertManeuver" functionID="AlertManeuverID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="IGNORED"/>
+ <element name="DISALLOWED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="ABORTED"/>
+ <element name="WARNINGS"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="UpdateTurnList" functionID="UpdateTurnListID" messagetype="request">
+ <param name="turnList" type="Turn" minsize="1" maxsize="100" array="true" mandatory="false">
+ </param>
+ <param name="softButtons" type="SoftButton" minsize="0" maxsize="1" array="true" mandatory="false">
+ <description>If omitted on supported displays, app-defined SoftButton will be left blank.</description>
+ </param>
+ </function>
+
+ <function name="UpdateTurnList" functionID="UpdateTurnListID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="ChangeRegistration" functionID="ChangeRegistrationID" messagetype="request">
+ <param name="language" type="Language" mandatory="true">
+ <description>Requested voice engine (VR+TTS) language registration</description>
+ </param>
+ <param name="hmiDisplayLanguage" type="Language" mandatory="true">
+ <description>Request display language registration</description>
+ </param>
+ <param name="appName" type="String" maxlength="100" mandatory="false">
+ <description>Request new app name registration</description>
+ </param>
+ <param name="ttsName" type="TTSChunk" minsize="1" maxsize="100" array="true" mandatory="false" >
+ <description>Request new ttsName registration</description>
+ </param>
+ <param name="ngnMediaScreenAppName" type="String" maxlength="100" mandatory="false">
+ <description>Request new app short name registration</description>
+ </param>
+ <param name="vrSynonyms" type="String" maxlength="40" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>Request new VR synonyms registration</description>
+ </param>
+
+ </function>
+
+
+
+ <function name="ChangeRegistration" functionID="ChangeRegistrationID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description>
+ true, if successful
+ false, if failed
+ </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="GenericResponse" functionID="GenericResponseID" messagetype="response">
+ <description>
+ Generic Response is sent, when the name of a received msg cannot be retrieved. Only used in case of an error.
+ Currently, only resultCode INVALID_DATA is used.
+ </description>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="INVALID_DATA"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="PutFile" functionID="PutFileID" messagetype="request">
+ <description>
+ Used to push a binary data onto the module from a mobile device, such as icons and album art
+ Not supported on first generation of SDL enabled modules.
+ Binary data is in binary part of hybrid msg.
+ </description>
+
+ <param name="syncFileName" type="String" maxlength="255" mandatory="true">
+ <description>File reference name.</description>
+ </param>
+
+ <param name="fileType" type="FileType" mandatory="true">
+ <description>Selected file type.</description>
+ </param>
+
+ <param name="persistentFile" type="Boolean" defvalue="false" mandatory="false">
+ <description>
+ Indicates if the file is meant to persist between sessions / ignition cycles.
+ If set to TRUE, then the system will aim to persist this file through session / cycles.
+ While files with this designation will have priority over others, they are subject to deletion by the system at any time.
+ In the event of automatic deletion by the system, the app will receive a rejection and have to resend the file.
+ If omitted, the value will be set to false.
+ </description>
+ </param>
+
+ <param name="systemFile" type="Boolean" defvalue="false" mandatory="false" >
+ <description>
+ Indicates if the file is meant to be passed thru core to elsewhere on the system.
+ If set to TRUE, then the system will instead pass the data thru as it arrives to a predetermined area outside of core.
+ If omitted, the value will be set to false.
+ </description>
+ </param>
+
+ <param name="offset" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
+ <description>Optional offset in bytes for resuming partial data chunks</description>
+ </param>
+ <param name="length" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
+ <description>
+ Optional length in bytes for resuming partial data chunks
+ If offset is set to 0, then length is the total length of the file to be downloaded
+ </description>
+ </param>
+ </function>
+
+ <function name="PutFile" functionID="PutFileID" messagetype="response">
+ <description>Response is sent, when the file data was copied (success case). Or when an error occurred.</description>
+ <description>Not supported on first generation SDL enabled vehicles. </description>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ </param>
+
+ <param name="spaceAvailable" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>
+ Provides the total local space available in SDL Core for the registered app.
+ If the transfer has systemFile enabled, then the value will be set to 0 automatically.
+ </description>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="DeleteFile" functionID="DeleteFileID" messagetype="request">
+ <description>
+ Used to delete a file resident on the module in the app's local cache.
+ Not supported on first generation SDL enabled vehicles.
+ </description>
+
+ <param name="syncFileName" type="String" maxlength="500" mandatory="true">
+ <description>File reference name.</description>
+ </param>
+
+ </function>
+
+ <function name="DeleteFile" functionID="DeleteFileID" messagetype="response">
+ <description>
+ Response is sent, when the file data was deleted (success case). Or when an error occurred.
+ Not supported on First generation SDL enabled vehicles.
+ </description>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ </param>
+
+ <param name="spaceAvailable" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>Provides the total local space available on the module for the registered app.</description>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="ListFiles" functionID="ListFilesID" messagetype="request">
+ <description>
+ Requests the current list of resident filenames for the registered app.
+ Not supported on first generation SDL enabled vehicles.
+ </description>
+ </function>
+
+ <function name="ListFiles" functionID="ListFilesID" messagetype="response">
+ <description>
+ Returns the current list of resident filenames for the registered app along with the current space available
+ Not supported on First generation SDL enabled vehicles.
+ </description>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ </param>
+
+ <param name="filenames" type="String" maxlength="500" minsize="0" maxsize="1000" array="true" mandatory="false">
+ <description>
+ An array of all filenames resident on the module for the given registered app.
+ If omitted, then no files currently reside on the system.
+ </description>
+ </param>
+
+ <param name="spaceAvailable" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>Provides the total local space available on the module for the registered app.</description>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="SetAppIcon" functionID="SetAppIconID" messagetype="request">
+ <description>
+ Used to set existing local file on the module as the app's icon
+ Not supported on first generation SDL enabled vehicles.
+ </description>
+
+ <param name="syncFileName" type="String" maxlength="500" mandatory="true">
+ <description>File reference name.</description>
+ </param>
+
+ </function>
+
+ <function name="SetAppIcon" functionID="SetAppIconID" messagetype="response">
+ <description>
+ Response is sent, when the file data was copied (success case). Or when an error occurred.
+ Not supported on First generation SDL enabled vehicles.
+ </description>
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="SetDisplayLayout" functionID="SetDisplayLayoutID" messagetype="request">
+ <description>
+ Used to set an alternate display layout.
+ If not sent, default screen for given platform will be shown
+ </description>
+
+ <param name="displayLayout" type="String" maxlength="500" mandatory="true">
+ <description>
+ Predefined or dynamically created screen layout.
+ Currently only predefined screen layouts are defined.
+ </description>
+ </param>
+
+ </function>
+
+ <function name="SetDisplayLayout" functionID="SetDisplayLayoutID" messagetype="response">
+
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ </param>
+
+ <param name="displayCapabilities" type="DisplayCapabilities" mandatory="false">
+ <description>See DisplayCapabilities</description>
+ </param>
+
+ <param name="buttonCapabilities" type="ButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>See ButtonCapabilities</description >
+ </param>
+
+ <param name="softButtonCapabilities" type="SoftButtonCapabilities" minsize="1" maxsize="100" array="true" mandatory="false">
+ <description>If returned, the platform supports on-screen SoftButtons; see SoftButtonCapabilities.</description >
+ </param>
+
+ <param name="presetBankCapabilities" type="PresetBankCapabilities" mandatory="false">
+ <description>If returned, the platform supports custom on-screen Presets; see PresetBankCapabilities.</description >
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+
+ </function>
+
+ <function name="SystemRequest" functionID="SystemRequestID" messagetype="request" >
+ <description>An asynchronous request from the device; binary data can be included in hybrid part of message for some requests (such as HTTP, Proprietary, or Authentication requests)</description>
+ <param name="requestType" type="RequestType" mandatory="true">
+ <description>
+ The type of system request.
+ Note that Proprietary requests should forward the binary data to the known proprietary module on the system.
+ </description>
+ </param>
+ <param name="fileName" type="String" maxlength="255" mandatory="false">
+ <description>
+ Filename of HTTP data to store in predefined system staging area.
+ Mandatory if requestType is HTTP.
+ PROPRIETARY requestType should ignore this parameter.
+ </description>
+ </param>
+ </function>
+
+ <function name="SystemRequest" functionID="SystemRequestID" messagetype="response" >
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="INVALID_CERT"/>
+ <element name="EXPIRED_CERT"/>
+ <element name="UNSUPPORTED_REQUEST"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="DISALLOWED"/>
+ <element name="ABORTED"/>
+ <element name="WARNINGS"/>
+ <element name="TIMED_OUT"/>
+ <element name="IGNORED"/>
+ </param>
+ </function>
+
+ <function name="SendLocation" functionID="SendLocationID" messagetype="request">
+ <param name="longitudeDegrees" type="Float" minvalue="-180" maxvalue="180" mandatory="false">
+ </param>
+ <param name="latitudeDegrees" type="Float" minvalue="-90" maxvalue="90" mandatory="false">
+ </param>
+ <param name="locationName" type="String" maxlength="500" mandatory="false">
+ <description>
+ Name / title of intended location
+ </description>
+ </param>
+ <param name="locationDescription" type="String" maxlength="500" mandatory="false">
+ <description>
+ Description intended location / establishment (if applicable)
+ </description>
+ </param>
+ <param name="addressLines" type="String" maxlength="500" minsize="0" maxsize="4" array="true" mandatory="false">
+ <description>
+ Location address (if applicable)
+ </description>
+ </param>
+ <param name="phoneNumber" type="String" maxlength="500" mandatory="false">
+ <description>
+ Phone number of intended location / establishment (if applicable)
+ </description>
+ </param>
+ <param name="locationImage" type="Image" mandatory="false">
+ <description>
+ Image / icon of intended location (if applicable and supported)
+ </description>
+ </param>
+
+ <param name="timeStamp" type="DateTime" mandatory="false">
+ <description>
+ timestamp in ISO 8601 format
+ </description>
+ </param>
+
+ <param name="address" type="OASISAddress" mandatory="false">
+ <description>Address to be used for setting destination</description>
+ </param>
+ <param name="deliveryMode" type="DeliveryMode" mandatory="false">
+ <description>Defines the mode of prompt for user</description>
+ </param>
+ </function>
+
+ <function name="SendLocation" functionID="SendLocationID" messagetype="response" >
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="DISALLOWED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="DialNumber" functionID="DialNumberID" messagetype="request">
+ <description>Dials a phone number and switches to phone application.</description>
+
+ <param name="number" type="String" maxlength="40" mandatory="true">
+ <description>
+ Phone number is a string, which can be up to 40 chars.
+ All characters shall be stripped from string except digits 0-9 and * # , ; +
+ </description>
+ </param>
+ </function>
+
+ <function name="DialNumber" functionID="DialNumberID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description>true, if successful</description>
+ <description>false, if failed</description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="ButtonPress" functionID="ButtonPressID" messagetype="request">
+ <param name="moduleType" type="ModuleType" mandatory="true">
+ <description>The module where the button should be pressed</description>
+ </param>
+ <param name="buttonName" type="ButtonName" mandatory="true">
+ <description>The name of supported RC climate or radio button.</description>
+ </param>
+ <param name="buttonPressMode" type="ButtonPressMode" mandatory="true">
+ <description>Indicates whether this is a LONG or SHORT button press event.</description>
+ </param>
+ </function>
+
+ <function name="ButtonPress" functionID="ButtonPressID" messagetype="response">
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="IGNORED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="IN_USE"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false">
+ </param>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+ </function>
+
+ <function name="GetInteriorVehicleData" functionID="GetInteriorVehicleDataID" messagetype="request">
+ <param name="moduleType" type="ModuleType" mandatory="true">
+ <description>
+ The type of a RC module to retrieve module data from the vehicle.
+ In the future, this should be the Identification of a module.
+ </description>
+ </param>
+ <param name="subscribe" type="Boolean" mandatory="false" defvalue="false">
+ <description>
+ If subscribe is true, the head unit will register onInteriorVehicleData notifications for the requested moduelType.
+ If subscribe is false, the head unit will unregister onInteriorVehicleData notifications for the requested moduelType.
+ </description>
+ </param>
+ </function>
+
+ <function name="GetInteriorVehicleData" functionID="GetInteriorVehicleDataID" messagetype="response">
+ <param name="moduleData" type="ModuleData" mandatory="true">
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="IGNORED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false">
+ </param>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+ <param name="isSubscribed" type="Boolean" mandatory="false" >
+ <description>
+ It is a conditional-mandatory parameter: must be returned in case "subscribe" parameter was present in the related request.
+ if "true" - the "moduleType" from request is successfully subscribed and the head unit will send onInteriorVehicleData notifications for the moduleType.
+ if "false" - the "moduleType" from request is either unsubscribed or failed to subscribe.
+ </description>
+ </param>
+ </function>
+
+ <function name="SetInteriorVehicleData" functionID="SetInteriorVehicleDataID" messagetype="request">
+ <param name="moduleData" type="ModuleData" mandatory="true">
+ <description>The module data to set for the requested RC module.</description>
+ </param>
+ </function>
+
+ <function name="SetInteriorVehicleData" functionID="SetInteriorVehicleDataID" messagetype="response">
+ <description>Used to set the values of one remote control module </description>
+ <param name="moduleData" type="ModuleData" mandatory="true">
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="IGNORED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="READ_ONLY"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="IN_USE"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false">
+ </param>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+ </function>
+
+ <function name="SubscribeWayPoints" functionID="SubscribeWayPointsID" messagetype="request">
+ <description>To subscribe in getting changes for Waypoints/destinations</description>
+ </function>
+
+ <function name="SubscribeWayPoints" functionID="SubscribeWayPointsID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="IGNORED"/>
+ <element name="DISALLOWED"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <function name="GetWayPoints" functionID="GetWayPointsID" messagetype="request">
+ <description>Request for getting waypoint/destination data.</description>
+ <param name="wayPointType" type="WayPointType" mandatory="true">
+ <description>To request for either the destination only or for all waypoints including destination</description>
+ </param>
+ </function>
+
+ <function name="GetWayPoints" functionID="GetWayPointsID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="TIMED_OUT"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="IGNORED"/>
+ <element name="IN_USE"/>
+ <element name="DISALLOWED"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ <param name="wayPoints" type="LocationDetails" mandatory="false" array="true" minsize="1" maxsize="10">
+ <description>See LocationDetails</description>
+ </param>
+ </function>
+
+ <function name="UnsubscribeWayPoints" functionID="UnsubscribeWayPointsID" messagetype="request">
+ <description>Request to unsubscribe from WayPoints and Destination</description>
+ </function>
+
+ <function name="UnsubscribeWayPoints" functionID="UnsubscribeWayPointsID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="UNSUPPORTED_RESOURCE"/>
+ <element name="IGNORED"/>
+ <element name="DISALLOWED"/>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ <param name="wayPoints" type="LocationDetails" mandatory="false" array="true" minsize="1" maxsize="10">
+ <description>See LocationDetails</description>
+ </param>
+ </function>
+
+ <function name="GetSystemCapability" functionID="GetSystemCapabilityID" messagetype="request">
+ <description>Request for expanded information about a supported system/HMI capability</description>
+ <param name="systemCapabilityType" type="SystemCapabilityType" mandatory="true">
+ <description>The type of system capability to get more information on</description>
+ </param>
+ </function>
+
+ <function name="GetSystemCapability" functionID="GetSystemCapabilityID" messagetype="response">
+ <param name="systemCapability" type="SystemCapability" mandatory="true">
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ <element name="IGNORED"/>
+ <element name="DISALLOWED"/>
+ <element name="USER_DISALLOWED"/>
+ <element name="UNSUPPORTED_RESOURCE">
+ <description>The capability does not exist on the module</description>
+ </element>
+ <element name="DATA_NOT_AVAILABLE">
+ <description>The capability should exist on the module but there was an error retrieving the data.</description>
+ </element>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false, if failed </description>
+ </param>
+ </function>
+
+ <function name="SendHapticData" functionID="SendHapticDataID" messagetype="request">
+ <description>Send the spatial data gathered from SDLCarWindow or VirtualDisplayEncoder to the HMI. This data will be utilized by the HMI to determine how and when haptic events should occur</description>
+ <param name="hapticRectData" type="HapticRect" minsize="0" maxsize="1000" mandatory="false" array="true">
+ <description>Array of spatial data structures that represent the locations of all user controls present on the HMI. This data should be updated if/when the application presents a new screen. When a request is sent, if successful, it will replace all spatial data previously sent through RPC. If an empty array is sent, the existing spatial data will be cleared</description>
+ </param>
+ </function>
+
+ <function name="SendHapticData" functionID="SendHapticDataID" messagetype="response">
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true if successful; false if failed </description>
+ </param>
+ <param name="info" type="String" maxlength="1000" mandatory="false">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="GENERIC_ERROR"/>
+ </param>
+ </function>
+
+ <!-- Notifications -->
+
+ <function name="OnHMIStatus" functionID="OnHMIStatusID" messagetype="notification">
+ <param name="hmiLevel" type="HMILevel" mandatory="true">
+ <description>See HMILevel</description>
+ </param>
+
+ <param name="audioStreamingState" type="AudioStreamingState" mandatory="true">
+ <description>See AudioStreamingState</description>
+ </param>
+
+ <param name="systemContext" type="SystemContext" mandatory="true">
+ <description>See SystemContext</description>
+ </param>
+ </function>
+
+ <function name="OnAppInterfaceUnregistered" functionID="OnAppInterfaceUnregisteredID" messagetype="notification">
+ <param name="reason" type="AppInterfaceUnregisteredReason" mandatory="true">
+ <description>See AppInterfaceUnregisteredReason</description>
+ </param>
+ </function>
+
+ <function name="OnButtonEvent" functionID="OnButtonEventID" messagetype="notification">
+ <description>Notifies application of UP/DOWN events for buttons to which the application is subscribed.</description>
+ <param name="buttonName" type="ButtonName" mandatory="true"/>
+ <param name="buttonEventMode" type="ButtonEventMode" mandatory="true">
+ <description>Indicates whether this is an UP or DOWN event.</description>
+ </param>
+ <param name="customButtonID" type="Integer" minvalue="0" maxvalue="65536" mandatory="false">
+ <description>If ButtonName is "CUSTOM_BUTTON", this references the integer ID passed by a custom button. (e.g. softButton ID)</description>
+ </param>
+ </function>
+
+ <function name="OnButtonPress" functionID="OnButtonPressID" messagetype="notification">
+ <description>Notifies application of LONG/SHORT press events for buttons to which the application is subscribed.</description>
+ <param name="buttonName" type="ButtonName" mandatory="true"/>
+ <param name="buttonPressMode" type="ButtonPressMode" mandatory="true">
+ <description>Indicates whether this is a LONG or SHORT button press event.</description>
+ </param>
+ <param name="customButtonID" type="Integer" minvalue="0" maxvalue="65536" mandatory="false">
+ <description>If ButtonName is "CUSTOM_BUTTON", this references the integer ID passed by a custom button. (e.g. softButton ID)</description>
+ </param>
+ </function>
+
+ <function name="OnVehicleData" functionID="OnVehicleDataID" messagetype="notification">
+ <description>Callback for the periodic and non periodic vehicle data read function.</description>
+ <param name="gps" type="GPSData" mandatory="false">
+ <description>See GPSData</description>
+ </param>
+ <param name="speed" type="Float" minvalue="0" maxvalue="700" mandatory="false">
+ <description>The vehicle speed in kilometers per hour</description>
+ </param>
+ <param name="rpm" type="Integer" minvalue="0" maxvalue="20000" mandatory="false">
+ <description>The number of revolutions per minute of the engine</description>
+ </param>
+ <param name="fuelLevel" type="Float" minvalue="-6" maxvalue="106" mandatory="false">
+ <description>The fuel level in the tank (percentage)</description>
+ </param>
+ <param name="fuelLevel_State" type="ComponentVolumeStatus" mandatory="false">
+ <description>The fuel level state</description>
+ </param>
+ <param name="instantFuelConsumption" type="Float" minvalue="0" maxvalue="25575" mandatory="false">
+ <description>The instantaneous fuel consumption in microlitres</description>
+ </param>
+ <param name="externalTemperature" type="Float" minvalue="-40" maxvalue="100" mandatory="false">
+ <description>The external temperature in degrees celsius</description>
+ </param>
+ <param name="vin" type="String" maxlength="17" mandatory="false">
+ <description>Vehicle identification number.</description>
+ </param>
+ <param name="prndl" type="PRNDL" mandatory="false">
+ <description>See PRNDL</description>
+ </param>
+ <param name="tirePressure" type="TireStatus" mandatory="false">
+ <description>See TireStatus</description>
+ </param>
+ <param name="odometer" type="Integer" minvalue="0" maxvalue="17000000" mandatory="false">
+ <description>Odometer in km</description>
+ </param>
+ <param name="beltStatus" type="BeltStatus" mandatory="false">
+ <description>The status of the seat belts</description>
+ </param>
+ <param name="bodyInformation" type="BodyInformation" mandatory="false">
+ <description>The body information including power modes</description>
+ </param>
+ <param name="deviceStatus" type="DeviceStatus" mandatory="false">
+ <description>The device status including signal and battery strength</description>
+ </param>
+ <param name="driverBraking" type="VehicleDataEventStatus" mandatory="false">
+ <description>The status of the brake pedal</description>
+ </param>
+ <param name="wiperStatus" type="WiperStatus" mandatory="false">
+ <description>The status of the wipers</description>
+ </param>
+ <param name="headLampStatus" type="HeadLampStatus" mandatory="false">
+ <description>Status of the head lamps</description>
+ </param>
+ <param name="engineTorque" type="Float" minvalue="-1000" maxvalue="2000" mandatory="false">
+ <description>Torque value for engine (in Nm) on non-diesel variants</description>
+ </param>
+ <param name="accPedalPosition" type="Float" minvalue="0" maxvalue="100" mandatory="false">
+ <description>Accelerator pedal position (percentage depressed)</description>
+ </param>
+ <param name="steeringWheelAngle" type="Float" minvalue="-2000" maxvalue="2000" mandatory="false">
+ <description>Current angle of the steering wheel (in deg)</description>
+ </param>
+
+ <!-- Ford Specific Vehicle Data -->
+ <param name="eCallInfo" type="ECallInfo" mandatory="false">
+ <description>Emergency Call notification and confirmation data</description>
+ </param>
+ <param name="airbagStatus" type="AirbagStatus" mandatory="false">
+ <description>The status of the air bags</description>
+ </param>
+ <param name="emergencyEvent" type="EmergencyEvent" mandatory="false">
+ <description>Information related to an emergency event (and if it occurred)</description>
+ </param>
+ <param name="clusterModeStatus" type="ClusterModeStatus" mandatory="false">
+ <description>The status modes of the cluster</description>
+ </param>
+ <param name="myKey" type="MyKey" mandatory="false">
+ <description>Information related to the MyKey feature</description>
+ </param>
+ <!-- / Ford Specific Vehicle Data -->
+
+ </function>
+
+ <function name="OnCommand" functionID="OnCommandID" messagetype="notification">
+ <param name="cmdID" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="true">
+ <description>Command ID, which is related to a specific menu entry</description>
+ </param>
+
+ <param name="triggerSource" type="TriggerSource" mandatory="true">
+ <description>See TriggerSource</description>
+ </param>
+ </function>
+
+ <function name="OnTBTClientState" functionID="OnTBTClientStateID" messagetype="notification" >
+ <description>Provides applications with notifications specific to the current TBT client status on the module</description>
+ <param name="state" type="TBTState" mandatory="true">
+ <description>Current State of TBT client</description>
+ </param>
+ </function>
+
+ <function name="OnDriverDistraction" functionID="OnDriverDistractionID" messagetype="notification" >
+ <description>Provides driver distraction state to mobile applications</description>
+ <param name="state" type="DriverDistractionState" mandatory="true">
+ <description>Current State of Driver Distraction</description>
+ </param>
+ </function>
+
+ <function name="OnPermissionsChange" functionID="OnPermissionsChangeID" messagetype="notification" >
+ <description>Provides update to app of which policy-table-enabled functions are available</description>
+ <param name="permissionItem" type="PermissionItem" minsize="0" maxsize="500" array="true" mandatory="true">
+ <description>Change in permissions for a given set of RPCs</description>
+ </param>
+ </function>
+
+ <function name="OnAudioPassThru" functionID="OnAudioPassThruID" messagetype="notification">
+ <description>Binary data is in binary part of hybrid msg</description>
+ </function>
+
+ <function name="OnLanguageChange" functionID="OnLanguageChangeID" messagetype="notification">
+ <param name="language" type="Language" mandatory="true">
+ <description>Current SDL voice engine (VR+TTS) language</description>
+ </param>
+ <param name="hmiDisplayLanguage" type="Language" mandatory="true">
+ <description>Current display language</description>
+ </param>
+ </function>
+
+ <function name="OnKeyboardInput" functionID="OnKeyboardInputID" messagetype="notification" >
+
+ <description>On-screen keyboard event.</description>
+ <description>Can be full string or individual keypresses depending on keyboard mode.</description>
+
+ <param name="event" type="KeyboardEvent" mandatory="true">
+ <description>On-screen keyboard input data.</description>
+ </param>
+
+ <param name="data" type="String" maxlength="500" mandatory="false">
+ <description>On-screen keyboard input data.</description>
+ <description>For dynamic keypress events, this will be the current compounded string of entry text.</description>
+ <description>For entry submission events, this will be the full text entry (this will always return regardless of the mode).</description>
+ <description>For entry cancelled and entry aborted events, this data param will be omitted.</description>
+ </param>
+
+ </function>
+
+ <function name="OnTouchEvent" functionID="OnTouchEventID" messagetype="notification" >
+ <description>Notifies about touch events on the screen's prescribed area</description>
+ <param name="type" type="TouchType" mandatory="true">
+ <description>The type of touch event.</description>
+ </param>
+ <param name="event" type="TouchEvent" mandatory="true" minsize="1" maxsize="10" array="true">
+ <description>List of all individual touches involved in this event.</description>
+ </param>
+ </function>
+
+ <function name="OnSystemRequest" functionID="OnSystemRequestID" messagetype="notification" >
+ <description>
+ An asynchronous request from the system for specific data from the device or the cloud or response to a request from the device or cloud
+ Binary data can be included in hybrid part of message for some requests (such as Authentication request responses)
+ </description>
+ <param name="requestType" type="RequestType" mandatory="true">
+ <description>The type of system request.</description>
+ </param>
+ <param name="url" type="String" maxlength="1000" mandatory="false">
+ <description>
+ Optional URL for HTTP requests.
+ If blank, the binary data shall be forwarded to the app.
+ If not blank, the binary data shall be forwarded to the url with a provided timeout in seconds.
+ </description>
+ </param>
+ <param name="timeout" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
+ <description>
+ Optional timeout for HTTP requests
+ Required if a URL is provided
+ </description>
+ </param>
+ <param name="fileType" type="FileType" mandatory="false">
+ <description>Optional file type (meant for HTTP file requests).</description>
+ </param>
+ <param name="offset" type="Integer" minvalue="0" maxvalue="100000000000" mandatory="false">
+ <description>Optional offset in bytes for resuming partial data chunks</description>
+ </param>
+ <param name="length" type="Integer" minvalue="0" maxvalue="100000000000" mandatory="false">
+ <description>Optional length in bytes for resuming partial data chunks</description>
+ </param>
+ </function>
+
+ <function name="OnHashChange" functionID="OnHashChangeID" messagetype="notification">
+ <description>
+ Notification containing an updated hashID which can be used over connection cycles (i.e. loss of connection, ignition cycles, etc.).
+ Sent after initial registration and subsequently after any change in the calculated hash of all persisted app data.
+ </description>
+ <param name="hashID" type="String" maxlength="100" mandatory="true">
+ <description>Calculated hash ID to be referenced during RegisterAppInterface.</description>
+ </param>
+ </function>
+
+ <function name="OnWayPointChange" functionID="OnWayPointChangeID" messagetype="notification">
+ <description>Notification which provides the entire LocationDetails when there is a change to any waypoints or destination.</description>
+ <param name="wayPoints" type="LocationDetails" mandatory="true" array="true" minsize="1" maxsize="10">
+ <description>See LocationDetails</description>
+ </param>
+ </function>
+
+ <function name="OnInteriorVehicleData" functionID="OnInteriorVehicleDataID" messagetype="notification">
+ <param name="moduleData" type="ModuleData" mandatory="true">
+ </param>
+ </function>
+
+ <!-- ~~~~~~~~~~~~~~~~~~ -->
+ <!-- Ford Specific APIs -->
+ <!-- ~~~~~~~~~~~~~~~~~~ -->
+
+ <function name="EncodedSyncPData" functionID="EncodedSyncPDataID" messagetype="request" >
+ <description>
+ Allows encoded data in the form of SyncP packets to be sent to the SYNC module.
+ Legacy / v1 Protocol implementation; use SyncPData instead.
+ *** DEPRECATED ***
+ </description>
+
+ <param name="data" type="String" maxlength="1000000" minsize="1" maxsize="100" array="true" mandatory="true">
+ <description>Contains base64 encoded string of SyncP packets.</description>
+ <todo>What is the maxlength?</todo>
+ </param>
+ </function>
+
+ <function name="EncodedSyncPData" functionID="EncodedSyncPDataID" messagetype="response" >
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+
+ <!-- Deprecating - covered by SystemRequest
+ <function name="SyncPData" functionID="SyncPDataID" messagetype="request" >
+ <description>
+ Allows binary data in the form of SyncP packets to be sent to the SYNC module.
+ Binary data is in binary part of hybrid msg.
+ </description>
+ </function>
+
+ <function name="SyncPData" functionID="SyncPDataID" messagetype="response" >
+ <param name="success" type="Boolean" platform="documentation" mandatory="true">
+ <description> true, if successful; false, if failed </description>
+ </param>
+
+ <param name="resultCode" type="Result" platform="documentation" mandatory="true">
+ <description>See Result</description>
+ <element name="SUCCESS"/>
+ <element name="INVALID_DATA"/>
+ <element name="OUT_OF_MEMORY"/>
+ <element name="TOO_MANY_PENDING_REQUESTS"/>
+ <element name="APPLICATION_NOT_REGISTERED"/>
+ <element name="GENERIC_ERROR"/>
+ <element name="REJECTED"/>
+ </param>
+
+ <param name="info" type="String" maxlength="1000" mandatory="false" platform="documentation">
+ <description>Provides additional human readable info regarding the result.</description>
+ </param>
+ </function>
+ -->
+
+ <function name="OnEncodedSyncPData" functionID="OnEncodedSyncPDataID" messagetype="notification" >
+ <description>
+ Callback including encoded data of any SyncP packets that SYNC needs to send back to the mobile device.
+ Legacy / v1 Protocol implementation; responds to EncodedSyncPData.
+ *** DEPRECATED ***
+ </description>
+ <param name="data" type="String" maxlength="1000000" minsize="1" maxsize="100" mandatory="true" array="true">
+ <description>Contains base64 encoded string of SyncP packets.</description>
+ </param>
+ <param name="URL" type="String" maxlength="1000" mandatory="false">
+ <description>
+ If blank, the SyncP data shall be forwarded to the app.
+ If not blank, the SyncP data shall be forwarded to the provided URL.
+ </description>
+ </param>
+ <param name="Timeout" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
+ <description>
+ If blank, the SyncP data shall be forwarded to the app.
+ If not blank, the SyncP data shall be forwarded with the provided timeout in seconds.
+ </description>
+ </param>
+ </function>
+
+
+ <!-- Deprecating - covered by OnSystemRequest
+ <function name="OnSyncPData" functionID="OnSyncPDataID" messagetype="notification" >
+ <description>
+ Callback including binary data of any SyncP packets that SYNC needs to send back to the mobile device.
+ Responds to SyncPData.
+ Binary data is in binary part of hybrid msg.
+ </description>
+
+ <param name="URL" type="String" maxlength="1000" mandatory="false">
+ <description>
+ If blank, the SyncP data shall be forwarded to the app.
+ If not blank, the SyncP data shall be forwarded to the provided URL.
+ </description>
+ </param>
+ <param name="Timeout" type="Integer" minvalue="0" maxvalue="2000000000" mandatory="false">
+ <description>
+ If blank, the SyncP data shall be forwarded to the app.
+ If not blank, the SyncP data shall be forwarded with the provided timeout in seconds.
+ </description>
+ </param>
+
+ </function>
+ -->
+</interface> \ No newline at end of file
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/protocol/SdlPacketTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/protocol/SdlPacketTests.java
new file mode 100644
index 000000000..c3e39ce5a
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/protocol/SdlPacketTests.java
@@ -0,0 +1,75 @@
+package com.smartdevicelink.protocol;
+
+import android.test.AndroidTestCase;
+
+import com.livio.BSON.BsonEncoder;
+import com.smartdevicelink.protocol.enums.ControlFrameTags;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class SdlPacketTests extends AndroidTestCase {
+ //TODO: Add tests to cover other parts of SdlPacket class
+
+ // Test variables
+ private final int TEST_HASH_ID = 65537;
+ private final String TEST_PROTOCOL_VERSION = "5.0.0";
+ private final Long TEST_MTU = (long) 131072;
+
+ // Test payload from core representing hashId and mtu size
+ private byte[] corePayload = hexStringToByteArray("39000000" +
+ "10" +
+ "68617368496400" +
+ "01000100" +
+ "126d747500" +
+ "000002" + "0000000000" + "02" +
+ "70726f746f636f6c56657273" +
+ "696f6e0006000000352e302e300000");
+
+ public void testNull(){
+ byte[] testPayload = hexStringToByteArray(
+ "16000000" +
+ "02" +
+ "68656c6c6f" +"00" + // hello
+ "06000000" + "776f726c64" + "00" + //world
+ "00");
+ String tag = "hello";
+
+ SdlPacket sdlPacket = new SdlPacket();
+ assertNull(sdlPacket.getTag(tag));
+ sdlPacket.setPayload(testPayload);
+ assertEquals(sdlPacket.getTag("hello"),"world");
+ }
+
+ public void testBsonDecoding(){
+ SdlPacket sdlPacket = new SdlPacket();
+ sdlPacket.setPayload(corePayload);
+ assertEquals(sdlPacket.getTag(ControlFrameTags.RPC.StartServiceACK.HASH_ID), TEST_HASH_ID);
+ assertEquals(sdlPacket.getTag(ControlFrameTags.RPC.StartServiceACK.PROTOCOL_VERSION), TEST_PROTOCOL_VERSION);
+ assertEquals(sdlPacket.getTag(ControlFrameTags.RPC.StartServiceACK.MTU), TEST_MTU);
+ }
+
+ public void testBsonEncoding(){
+ HashMap<String, Object> testMap = new HashMap<>();
+ testMap.put(ControlFrameTags.RPC.StartServiceACK.HASH_ID, TEST_HASH_ID);
+ testMap.put(ControlFrameTags.RPC.StartServiceACK.MTU, TEST_MTU);
+ testMap.put(ControlFrameTags.RPC.StartServiceACK.PROTOCOL_VERSION, TEST_PROTOCOL_VERSION);
+
+ byte[] observed = BsonEncoder.encodeToBytes(testMap);
+ assertEquals(observed.length, corePayload.length);
+ for(int i = 0; i < observed.length; i++){
+ assertEquals(observed[i], corePayload[i]);
+ }
+ }
+
+ // Helper method for converting String to Byte Array
+ private static byte[] hexStringToByteArray(String s) {
+ int len = s.length();
+ byte[] data = new byte[len / 2];
+ for (int i = 0; i < len; i += 2) {
+ data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ + Character.digit(s.charAt(i+1), 16));
+ }
+ return data;
+ }
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java
index 8fcf2a3e2..3a4d162ae 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java
@@ -37,6 +37,7 @@ import com.smartdevicelink.proxy.rpc.RemoteControlCapabilities;
import com.smartdevicelink.proxy.rpc.Rectangle;
import com.smartdevicelink.proxy.rpc.ScreenParams;
import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
+import com.smartdevicelink.proxy.rpc.SingleTireStatus;
import com.smartdevicelink.proxy.rpc.SoftButton;
import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
import com.smartdevicelink.proxy.rpc.StartTime;
@@ -71,6 +72,7 @@ import com.smartdevicelink.proxy.rpc.enums.DefrostZone;
import com.smartdevicelink.proxy.rpc.enums.DeviceLevelStatus;
import com.smartdevicelink.proxy.rpc.enums.Dimension;
import com.smartdevicelink.proxy.rpc.enums.DisplayType;
+import com.smartdevicelink.proxy.rpc.enums.DriverDistractionState;
import com.smartdevicelink.proxy.rpc.enums.ECallConfirmationStatus;
import com.smartdevicelink.proxy.rpc.enums.EmergencyEventType;
import com.smartdevicelink.proxy.rpc.enums.FileType;
@@ -98,6 +100,7 @@ import com.smartdevicelink.proxy.rpc.enums.PrimaryAudioSource;
import com.smartdevicelink.proxy.rpc.enums.RadioBand;
import com.smartdevicelink.proxy.rpc.enums.RadioState;
import com.smartdevicelink.proxy.rpc.enums.RequestType;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.SamplingRate;
import com.smartdevicelink.proxy.rpc.enums.SoftButtonType;
import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
@@ -122,6 +125,7 @@ import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
import com.smartdevicelink.proxy.rpc.enums.VrCapabilities;
import com.smartdevicelink.proxy.rpc.enums.WarningLightStatus;
+import com.smartdevicelink.proxy.rpc.enums.WayPointType;
import org.json.JSONArray;
import org.json.JSONException;
@@ -225,6 +229,7 @@ public class Test {
public static final ComponentVolumeStatus GENERAL_COMPONENTVOLUMESTATUS = ComponentVolumeStatus.LOW;
public static final PresetBankCapabilities GENERAL_PRESETBANKCAPABILITIES = new PresetBankCapabilities();
public static final VehicleDataEventStatus GENERAL_VEHCILEDATAEVENTSTATUS = VehicleDataEventStatus.YES;
+ public static final VehicleDataEventStatus GENERAL_VEHICLEDATAEVENTSTATUS = VehicleDataEventStatus.YES;
public static final TouchEventCapabilities GENERAL_TOUCHEVENTCAPABILITIES = new TouchEventCapabilities();
public static final SoftButtonCapabilities GENERAL_SOFTBUTTONCAPABILITIES = new SoftButtonCapabilities();
public static final ECallConfirmationStatus GENERAL_ECALLCONFIRMATIONSTATUS = ECallConfirmationStatus.CALL_IN_PROGRESS;
@@ -244,6 +249,11 @@ public class Test {
public static final RGBColor GENERAL_RGBCOLOR = new RGBColor();
public static final TemplateColorScheme GENERAL_DAYCOLORSCHEME = new TemplateColorScheme();
public static final TemplateColorScheme GENERAL_NIGHTCOLORSCHEME = new TemplateColorScheme();
+ public static final Result GENERAL_RESULT = Result.SUCCESS;
+ public static final WayPointType GENERAL_WAYPOINTTYPE = WayPointType.DESTINATION;
+ public static final SingleTireStatus GENERAL_SINGLETIRESTATUS = new SingleTireStatus();
+ public static final DriverDistractionState GENERAL_DRIVERDISTRACTIONSTATE = DriverDistractionState.DD_ON;
+ public static final List<LocationDetails> GENERAL_LOCATIONDETAILS_LIST = Arrays.asList(new LocationDetails[] { Test.GENERAL_LOCATIONDETAILS, Test.GENERAL_LOCATIONDETAILS});
public static final ModuleType GENERAL_MODULETYPE = ModuleType.CLIMATE;
@@ -855,4 +865,4 @@ public class Test {
Log.e("Test", "Static Json Construction Failed.", e);
}
}
-} \ No newline at end of file
+}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCConstructorsTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCConstructorsTests.java
new file mode 100644
index 000000000..028f5dd30
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCConstructorsTests.java
@@ -0,0 +1,328 @@
+package com.smartdevicelink.test.rpc;
+
+import android.test.AndroidTestCase;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlPullParserFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This is a unit test class for the SmartDeviceLink library project
+ * It makes sure that for each RPC, all mandatory parameters are set in a constructor
+ */
+
+public class RPCConstructorsTests extends AndroidTestCase {
+
+ private final String XML_FILE_NAME = "xml/MOBILE_API_4.5.0.xml";
+ private final String RPC_PACKAGE_PREFIX = "com.smartdevicelink.proxy.rpc.";
+ private Map<String, List<Parameter>> rpcMandatoryParamsMapFromXml;
+
+ private class Parameter {
+ private String name;
+ private String type;
+ private boolean isArray;
+
+ public Parameter(String name, String type, boolean isArray) {
+ this.name = name;
+ this.type = type;
+ this.isArray = isArray;
+ }
+ }
+
+ @Override
+ public void setUp(){
+ try {
+ super.setUp();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ // Map that has keys correspond to the RPC names and values correspond to the
+ // mandatory params for that RPC. All info are loaded from the RPC spec xml file
+ rpcMandatoryParamsMapFromXml = getRPCMandatoryParamsMap(XML_FILE_NAME);
+
+ }
+
+ // This method parses the RPC spec xml file and returns a map that has
+ // keys correspond to the RPC names and values correspond to the mandatory params for that RPC
+ private Map<String, List<Parameter>> getRPCMandatoryParamsMap(String fileName) {
+ Map<String, List<Parameter>> rpcMandatoryParamsMap = new HashMap<>();
+ try {
+ InputStream stream = this.mContext.getAssets().open(fileName);
+ XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
+ XmlPullParser myParser = xmlFactoryObject.newPullParser();
+ myParser.setInput(stream, null);
+ int event = myParser.getEventType();
+ String rpcName = null;
+ boolean ignoreRPC = false;
+ while (event != XmlPullParser.END_DOCUMENT) {
+ String name = myParser.getName();
+ switch (event){
+ case XmlPullParser.START_TAG:
+ // Store the RPC name in the map
+ if(name.equals("function") || name.equals("struct")){
+ rpcName = myParser.getAttributeValue(null,"name");
+ ignoreRPC = false;
+ if (name.equals("function") && myParser.getAttributeValue(null, "messagetype").equals("response") && !rpcName.contains("Response")){
+ rpcName += "Response";
+ }
+
+ // -------------- Exceptional cases because of mismatch between the RPC spec and the Android code --------------
+ if(rpcName.equals("SyncMsgVersion")){
+ rpcName = "SdlMsgVersion";
+ } else if(rpcName.equals("ShowConstantTBTResponse")){
+ rpcName = "ShowConstantTbtResponse";
+ } else if(rpcName.equals("OASISAddress")) {
+ rpcName = "OasisAddress";
+ } else if(rpcName.equals("ShowConstantTBT")) {
+ rpcName = "ShowConstantTbt";
+ } else if (rpcName.equals("EncodedSyncPData") || rpcName.equals("OnEncodedSyncPData") || rpcName.equals("EncodedSyncPDataResponse") || rpcName.equals("AppInfo")){
+ ignoreRPC = true;
+ }
+ // -------------------------------------------------------------------------------------------------------------
+
+ if (!ignoreRPC) {
+ rpcMandatoryParamsMap.put(rpcName, new ArrayList<Parameter>());
+ }
+ }
+ // Store the mandatory params for the current RPC in the map
+ if(name.equals("param") && !ignoreRPC){
+ boolean mandatory = Boolean.valueOf(myParser.getAttributeValue(null,"mandatory"));
+ if (mandatory) {
+ String paramName = myParser.getAttributeValue(null, "name");
+ String paramType = myParser.getAttributeValue(null, "type");
+ boolean paramIsArray = Boolean.valueOf(myParser.getAttributeValue(null, "array"));
+
+ // -------------- Exceptional cases because of mismatch between the RPC spec and the Android code --------------
+ if (paramType.equals("SyncMsgVersion")){
+ paramType = "SdlMsgVersion";
+ } else if (rpcName.equals("GPSData") && paramType.equals("Float")){
+ paramType = "Double";
+ } else if (rpcName.equals("TouchEvent") && paramType.equals("Integer") && paramIsArray){
+ paramType = "Long";
+ }
+
+ if (paramName.equals("syncFileName")){
+ paramName = "sdlFileName";
+ } else if (paramName.equals("syncMsgVersion")){
+ paramName = "sdlMsgVersion";
+ } else if (paramName.equals("hmiPermissions")){
+ paramName = "hMIPermissions";
+ } else if (paramName.equals("resolution")){
+ paramName = "imageResolution";
+ } else if (paramName.equals("pressureTelltale")){
+ paramName = "pressureTellTale";
+ }
+ // -------------------------------------------------------------------------------------------------------------
+
+ Parameter param = new Parameter(paramName, paramType, paramIsArray);
+ rpcMandatoryParamsMap.get(rpcName).add(param);
+ }
+ }
+ break;
+ }
+ event = myParser.next();
+ }
+ stream.close();
+ } catch (IOException | XmlPullParserException e) {
+ e.printStackTrace();
+ }
+ return rpcMandatoryParamsMap;
+ }
+
+ // This method makes sure that for every RPC, there is a constructor that has all the mandatory params
+ // It also checks if there are RPC in the XML file that don't exist in the code
+ public void testMandatoryParamsMatch() {
+ // List of RPC names that don't have a constructor that has all mandatory params
+ List<String> rpcsWithInvalidConstructor = new ArrayList<>();
+
+ // List of the RPC names that couldn't be found in code
+ // potentially because of a mismatch between name in the RPC spec xml file and name in code
+ List<String> rpcsFromXmlNotFoundInCode = new ArrayList<>();
+
+ // Loop through all RPCs that were loaded from RPC spec XML file
+ // and make sure that every RPC has a constructor that has all mandatory params
+ for (String rpcName : rpcMandatoryParamsMapFromXml.keySet()) {
+ Class aClass;
+ try {
+ aClass = Class.forName(RPC_PACKAGE_PREFIX + rpcName);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ rpcsFromXmlNotFoundInCode.add(rpcName);
+ continue;
+ }
+ List<String> mandatoryParamsListFromXML = new ArrayList<>();
+ for (Parameter param : rpcMandatoryParamsMapFromXml.get(rpcName)) {
+ String type = param.type;
+ // If the param is a list of objects, the type should be like "List<Object>"
+ if (param.isArray){
+ type = String.format("List<%s>", type);
+ }
+ mandatoryParamsListFromXML.add(type);
+ }
+ List<String> mandatoryParamsListFromCode = new ArrayList<>();
+ boolean rpcHasValidConstructor = false;
+ for (Constructor constructor : aClass.getConstructors()){
+ mandatoryParamsListFromCode.clear();
+ for (Type paramType : constructor.getGenericParameterTypes()){
+ String paramFullType = paramType.toString();
+ String paramSimpleType;
+
+ // If the param is a list of objects, the type should be like "List<Object>"
+ if (paramFullType.matches("java.util.List<.+>")) {
+ paramSimpleType = String.format("List<%s>", paramFullType.substring(paramFullType.lastIndexOf('.') + 1, paramFullType.length() - 1));
+ }
+ // If the param is a simple object for example "java.lang.String", the type should be the last part "String"
+ else if (!paramFullType.contains(">")){
+ paramSimpleType = paramFullType.substring(paramFullType.lastIndexOf('.') + 1, paramFullType.length());
+ }
+ else {
+ paramSimpleType = paramFullType;
+ }
+ mandatoryParamsListFromCode.add(paramSimpleType);
+ }
+ if (mandatoryParamsListFromCode.containsAll(mandatoryParamsListFromXML) && mandatoryParamsListFromXML.containsAll(mandatoryParamsListFromCode)){
+ rpcHasValidConstructor = true;
+ break;
+ }
+ }
+ if (!rpcHasValidConstructor){
+ rpcsWithInvalidConstructor.add(rpcName);
+ }
+ }
+ assertTrue("The following RPCs were not found in the code: " + rpcsFromXmlNotFoundInCode, rpcsFromXmlNotFoundInCode.isEmpty());
+ assertTrue("The following RPCs don't have a constructor that has all the mandatory params: " + rpcsWithInvalidConstructor, rpcsWithInvalidConstructor.isEmpty());
+ }
+
+ // This method makes sure that for every RPC, the constructor that has the mandatory params is setting the values correctly
+ public void testMandatoryParamsValues() {
+ // List of RPC names that have a constructor which is not settings the values for the mandatory params correctly
+ List<String> rpcsWithInvalidConstructor = new ArrayList<>();
+
+ // List of types that exist in java.lang.*
+ List<String> javaLangBuiltInTypes = Arrays.asList("String", "Integer", "Float", "Double", "Boolean");
+
+ // Loop through all RPCs that were loaded from RPC spec XML file
+ // and make sure that the constructor that has the mandatory params is setting the values correctly
+ for (String rpcName : rpcMandatoryParamsMapFromXml.keySet()) {
+ Class aClass;
+ try {
+ aClass = Class.forName(RPC_PACKAGE_PREFIX + rpcName);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ continue;
+ }
+
+ List<Parameter> parameters = rpcMandatoryParamsMapFromXml.get(rpcName);
+ List<Class<?>> mandatoryParamsTypes = new ArrayList<>();
+ List<Object> mandatoryParamsValues = new ArrayList<>();
+
+ // Loop through all mandatory params for the current RPC
+ // and try to find the full Java type for each param
+ // also assign a value for each param from com.smartdevicelink.test.Test class
+ for (Parameter param : parameters) {
+ String typeString = null;
+ Class<?> type = null;
+ String valueString = null;
+ Object value = null;
+
+ // Find the full Java type for the current param
+ try {
+ if (param.isArray) {
+ type = List.class;
+ } else {
+ if (javaLangBuiltInTypes.contains(param.type)){
+ typeString = "java.lang." + param.type;
+ } else {
+ typeString = RPC_PACKAGE_PREFIX + param.type;
+ }
+ type = Class.forName(typeString);
+ }
+
+ } catch (ClassNotFoundException e) {
+ // If the class was not found in the com.smartdevicelink.proxy.rpc package
+ // try to see if it can be found in com.smartdevicelink.proxy.rpc.enums package
+ typeString = RPC_PACKAGE_PREFIX + "enums." + param.type;
+ try {
+ type = Class.forName(typeString);
+ } catch (ClassNotFoundException e1) {
+ e1.printStackTrace();
+ assertTrue("Type: " + typeString + " cannot be found for RPC: " + rpcName , false);
+ }
+ }
+
+
+ // Assign a value for the current param from com.smartdevicelink.test.Test based of the param type
+ try {
+ // --------------------------------------------- Exceptional cases ---------------------------------------------
+ // This case is exceptional because the setter changes the input if it is not all digits
+ if (rpcName.equals("DialNumber") && param.type.equals("String")){
+ value = "5558675309";
+ }
+ // -------------------------------------------------------------------------------------------------------------
+
+ if (value == null) {
+ valueString = "GENERAL_" + param.type.toUpperCase();
+ if (param.isArray){
+ valueString += "_LIST";
+ }
+ value = Class.forName("com.smartdevicelink.test.Test").getDeclaredField(valueString).get(null);
+ }
+
+ } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) {
+ e.printStackTrace();
+ assertTrue("Value: " + valueString + " cannot be found for RPC: " + rpcName + ". Make sure that you declared that value in com.smartdevicelink.test.Test" , false);
+ }
+
+ mandatoryParamsTypes.add(type);
+ mandatoryParamsValues.add(value);
+ }
+
+
+ // Create an instance of the RPC object using the constructor that has all the mandatory params
+ Object instance = null;
+ try {
+ Constructor constructor = aClass.getConstructor(mandatoryParamsTypes.toArray(new Class<?>[mandatoryParamsTypes.size()]));
+ instance = constructor.newInstance(mandatoryParamsValues.toArray(new Object[mandatoryParamsValues.size()]));
+ } catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
+ e.printStackTrace();
+ assertTrue("Constructor for RPC " + rpcName + " cannot be invoked. Make sure that the constructor parameters order and types are identical to the RPC specs", false);
+ }
+
+
+ // Loop through all getter methods for the instance and make sure that they are returning the expected values
+ if (instance != null) {
+ for (int i = 0; i < parameters.size(); i++) {
+ // Find the getter method name by taking the param name, capitalize the first letter, then add thw word "get" to the beginning
+ // for example if the param name is "buttonName" the method name will be "getButtonName"
+ String getterMethodName = "get" + parameters.get(i).name.substring(0, 1).toUpperCase() + parameters.get(i).name.substring(1);
+ try {
+ Method getterMethod = aClass.getMethod(getterMethodName);
+ Object val = getterMethod.invoke(instance);
+ if (val == null || !val.equals(mandatoryParamsValues.get(i))) {
+ rpcsWithInvalidConstructor.add(rpcName);
+ break;
+ }
+ } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+ e.printStackTrace();
+ assertTrue("Method: " + getterMethodName + " cannot be found for RPC: " + rpcName + ". Make sure that the method exists and that the parameters order and types are identical to the RPC specs", false);
+
+ }
+ }
+ }
+ }
+
+ assertTrue("The following RPCs have a constructor that is not setting the mandatory params correctly: " + rpcsWithInvalidConstructor, rpcsWithInvalidConstructor.isEmpty());
+ }
+}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequestFactory.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequestFactory.java
index 96b866de5..a991322f5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequestFactory.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequestFactory.java
@@ -54,9 +54,11 @@ import com.smartdevicelink.proxy.rpc.enums.RequestType;
import com.smartdevicelink.proxy.rpc.enums.SamplingRate;
import com.smartdevicelink.proxy.rpc.enums.TextAlignment;
import com.smartdevicelink.proxy.rpc.enums.UpdateMode;
-
import java.util.Vector;
-
+/**
+ * @deprecated Use RPC constructors directly instead
+ */
+@Deprecated
public class RPCRequestFactory {
public static final int SDL_MSG_MAJOR_VERSION = 1;
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCResponse.java
index 0a4dc2a70..a7c0ed188 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCResponse.java
@@ -3,6 +3,8 @@
*/
package com.smartdevicelink.proxy;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.rpc.enums.Result;
@@ -121,7 +123,7 @@ public class RPCResponse extends RPCMessage {
* @param success
* whether the request is successfully processed
*/
- public void setSuccess( Boolean success ) {
+ public void setSuccess( @NonNull Boolean success ) {
if (success != null) {
parameters.put(RPCResponse.KEY_SUCCESS, success );
}
@@ -150,7 +152,7 @@ public class RPCResponse extends RPCMessage {
* @param resultCode
* whether the request is successfully processed
*/
- public void setResultCode( Result resultCode ) {
+ public void setResultCode( @NonNull Result resultCode ) {
if (resultCode != null) {
parameters.put(RPCResponse.KEY_RESULT_CODE, resultCode );
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
index dc3359066..6e0e15a68 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
@@ -30,14 +30,18 @@ import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
+import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
+import android.support.annotation.NonNull;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.SparseArray;
+import android.util.SparseIntArray;
import android.view.Display;
+import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.Surface;
@@ -122,6 +126,8 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
private static final int PROX_PROT_VER_ONE = 1;
private static final int RESPONSE_WAIT_TIME = 2000;
+ private static final com.smartdevicelink.util.Version MAX_SUPPORTED_RPC_VERSION = new com.smartdevicelink.util.Version("4.5.0");
+
private SdlSession sdlSession = null;
private proxyListenerType _proxyListener = null;
@@ -1187,12 +1193,21 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
updateBroadcastIntent(sendIntent, "DATA", "Data from cloud response: " + sResponse);
// Send new SystemRequest to SDL
- SystemRequest mySystemRequest;
+ SystemRequest mySystemRequest = null;
if (bLegacy){
- mySystemRequest = RPCRequestFactory.buildSystemRequestLegacy(cloudDataReceived, getPoliciesReservedCorrelationID());
+ if(cloudDataReceived != null) {
+ mySystemRequest = new SystemRequest(true);
+ mySystemRequest.setCorrelationID(getPoliciesReservedCorrelationID());
+ mySystemRequest.setLegacyData(cloudDataReceived);
+ }
}else{
- mySystemRequest = RPCRequestFactory.buildSystemRequest(response.toString(), getPoliciesReservedCorrelationID());
+ if (response != null) {
+ mySystemRequest = new SystemRequest();
+ mySystemRequest.setRequestType(RequestType.PROPRIETARY);
+ mySystemRequest.setCorrelationID(getPoliciesReservedCorrelationID());
+ mySystemRequest.setBulkData(response.toString().getBytes());
+ }
}
if (getIsConnected())
@@ -4588,13 +4603,35 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("SameParameterValue")
- public void addCommand(Integer commandID,
+ public void addCommand(@NonNull Integer commandID,
String menuText, Integer parentID, Integer position,
Vector<String> vrCommands, String IconValue, ImageType IconType, Integer correlationID)
throws SdlException {
-
- AddCommand msg = RPCRequestFactory.buildAddCommand(commandID, menuText, parentID, position,
- vrCommands, IconValue, IconType, correlationID);
+
+
+ AddCommand msg = new AddCommand(commandID);
+ msg.setCorrelationID(correlationID);
+
+ if (vrCommands != null) msg.setVrCommands(vrCommands);
+
+ Image cmdIcon = null;
+
+ if (IconValue != null && IconType != null)
+ {
+ cmdIcon = new Image();
+ cmdIcon.setValue(IconValue);
+ cmdIcon.setImageType(IconType);
+ }
+
+ if (cmdIcon != null) msg.setCmdIcon(cmdIcon);
+
+ if(menuText != null || parentID != null || position != null) {
+ MenuParams menuParams = new MenuParams();
+ menuParams.setMenuName(menuText);
+ menuParams.setPosition(position);
+ menuParams.setParentID(parentID);
+ msg.setMenuParams(menuParams);
+ }
sendRPCRequest(msg);
}
@@ -4709,13 +4746,21 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("SameParameterValue")
- public void addCommand(Integer commandID,
+ public void addCommand(@NonNull Integer commandID,
String menuText, Integer parentID, Integer position,
Vector<String> vrCommands, Integer correlationID)
throws SdlException {
-
- AddCommand msg = RPCRequestFactory.buildAddCommand(commandID, menuText, parentID, position,
- vrCommands, correlationID);
+
+ AddCommand msg = new AddCommand(commandID);
+ msg.setCorrelationID(correlationID);
+ msg.setVrCommands(vrCommands);
+ if(menuText != null || parentID != null || position != null) {
+ MenuParams menuParams = new MenuParams();
+ menuParams.setMenuName(menuText);
+ menuParams.setPosition(position);
+ menuParams.setParentID(parentID);
+ msg.setMenuParams(menuParams);
+ }
sendRPCRequest(msg);
}
@@ -4816,12 +4861,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("SameParameterValue")
- public void addSubMenu(Integer menuID, String menuName,
+ public void addSubMenu(@NonNull Integer menuID, @NonNull String menuName,
Integer position, Integer correlationID)
throws SdlException {
-
- AddSubMenu msg = RPCRequestFactory.buildAddSubMenu(menuID, menuName,
- position, correlationID);
+
+ AddSubMenu msg = new AddSubMenu(menuID, menuName);
+ msg.setCorrelationID(correlationID);
+ msg.setPosition(position);
sendRPCRequest(msg);
}
@@ -4860,7 +4906,16 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
String alertText2, String alertText3, Boolean playTone, Integer duration, Vector<SoftButton> softButtons,
Integer correlationID) throws SdlException {
- Alert msg = RPCRequestFactory.buildAlert(ttsText, alertText1, alertText2, alertText3, playTone, duration, softButtons, correlationID);
+ Vector<TTSChunk> chunks = TTSChunkFactory.createSimpleTTSChunks(ttsText);
+ Alert msg = new Alert();
+ msg.setCorrelationID(correlationID);
+ msg.setAlertText1(alertText1);
+ msg.setAlertText2(alertText2);
+ msg.setAlertText3(alertText3);
+ msg.setDuration(duration);
+ msg.setPlayTone(playTone);
+ msg.setTtsChunks(chunks);
+ msg.setSoftButtons(softButtons);
sendRPCRequest(msg);
}
@@ -4881,8 +4936,16 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void alert(Vector<TTSChunk> ttsChunks,
String alertText1, String alertText2, String alertText3, Boolean playTone,
Integer duration, Vector<SoftButton> softButtons, Integer correlationID) throws SdlException {
-
- Alert msg = RPCRequestFactory.buildAlert(ttsChunks, alertText1, alertText2, alertText3, playTone, duration, softButtons, correlationID);
+
+ Alert msg = new Alert();
+ msg.setCorrelationID(correlationID);
+ msg.setAlertText1(alertText1);
+ msg.setAlertText2(alertText2);
+ msg.setAlertText3(alertText3);
+ msg.setDuration(duration);
+ msg.setPlayTone(playTone);
+ msg.setTtsChunks(ttsChunks);
+ msg.setSoftButtons(softButtons);
sendRPCRequest(msg);
}
@@ -4957,8 +5020,14 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
String alertText2, Boolean playTone, Integer duration,
Integer correlationID) throws SdlException {
- Alert msg = RPCRequestFactory.buildAlert(ttsText, alertText1, alertText2,
- playTone, duration, correlationID);
+ Vector<TTSChunk> chunks = TTSChunkFactory.createSimpleTTSChunks(ttsText);
+ Alert msg = new Alert();
+ msg.setCorrelationID(correlationID);
+ msg.setAlertText1(alertText1);
+ msg.setAlertText2(alertText2);
+ msg.setDuration(duration);
+ msg.setPlayTone(playTone);
+ msg.setTtsChunks(chunks);
sendRPCRequest(msg);
}
@@ -4977,9 +5046,14 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void alert(Vector<TTSChunk> ttsChunks,
String alertText1, String alertText2, Boolean playTone,
Integer duration, Integer correlationID) throws SdlException {
-
- Alert msg = RPCRequestFactory.buildAlert(ttsChunks, alertText1, alertText2, playTone,
- duration, correlationID);
+
+ Alert msg = new Alert();
+ msg.setCorrelationID(correlationID);
+ msg.setAlertText1(alertText1);
+ msg.setAlertText2(alertText2);
+ msg.setDuration(duration);
+ msg.setPlayTone(playTone);
+ msg.setTtsChunks(ttsChunks);
sendRPCRequest(msg);
}
@@ -5042,11 +5116,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void createInteractionChoiceSet(
- Vector<Choice> choiceSet, Integer interactionChoiceSetID,
+ @NonNull Vector<Choice> choiceSet, @NonNull Integer interactionChoiceSetID,
Integer correlationID) throws SdlException {
-
- CreateInteractionChoiceSet msg = RPCRequestFactory.buildCreateInteractionChoiceSet(
- choiceSet, interactionChoiceSetID, correlationID);
+
+ CreateInteractionChoiceSet msg = new CreateInteractionChoiceSet(interactionChoiceSetID, choiceSet);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5059,10 +5133,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void deleteCommand(Integer commandID,
+ public void deleteCommand(@NonNull Integer commandID,
Integer correlationID) throws SdlException {
-
- DeleteCommand msg = RPCRequestFactory.buildDeleteCommand(commandID, correlationID);
+
+ DeleteCommand msg = new DeleteCommand(commandID);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5076,11 +5151,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void deleteInteractionChoiceSet(
- Integer interactionChoiceSetID, Integer correlationID)
+ @NonNull Integer interactionChoiceSetID, Integer correlationID)
throws SdlException {
-
- DeleteInteractionChoiceSet msg = RPCRequestFactory.buildDeleteInteractionChoiceSet(
- interactionChoiceSetID, correlationID);
+
+ DeleteInteractionChoiceSet msg = new DeleteInteractionChoiceSet(interactionChoiceSetID);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5095,8 +5170,9 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
@SuppressWarnings("unused")
public void deleteSubMenu(Integer menuID,
Integer correlationID) throws SdlException {
-
- DeleteSubMenu msg = RPCRequestFactory.buildDeleteSubMenu(menuID, correlationID);
+
+ DeleteSubMenu msg = new DeleteSubMenu(menuID);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5117,11 +5193,16 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(String initPrompt,
- String displayText, Integer interactionChoiceSetID, Vector<VrHelpItem> vrHelp,
+ @NonNull String displayText, @NonNull Integer interactionChoiceSetID, Vector<VrHelpItem> vrHelp,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(initPrompt,
- displayText, interactionChoiceSetID, vrHelp, correlationID);
+
+ Vector<Integer> interactionChoiceSetIDs = new Vector<Integer>();
+ interactionChoiceSetIDs.add(interactionChoiceSetID);
+ Vector<TTSChunk> initChunks = TTSChunkFactory.createSimpleTTSChunks(initPrompt);
+ PerformInteraction msg = new PerformInteraction(displayText, InteractionMode.BOTH, interactionChoiceSetIDs);
+ msg.setInitialPrompt(initChunks);
+ msg.setVrHelp(vrHelp);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5142,15 +5223,23 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(String initPrompt,
- String displayText, Integer interactionChoiceSetID,
+ @NonNull String displayText, @NonNull Integer interactionChoiceSetID,
String helpPrompt, String timeoutPrompt,
- InteractionMode interactionMode, Integer timeout, Vector<VrHelpItem> vrHelp,
+ @NonNull InteractionMode interactionMode, Integer timeout, Vector<VrHelpItem> vrHelp,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(
- initPrompt, displayText, interactionChoiceSetID,
- helpPrompt, timeoutPrompt, interactionMode,
- timeout, vrHelp, correlationID);
+
+ Vector<Integer> interactionChoiceSetIDs = new Vector<Integer>();
+ interactionChoiceSetIDs.add(interactionChoiceSetID);
+ Vector<TTSChunk> initChunks = TTSChunkFactory.createSimpleTTSChunks(initPrompt);
+ Vector<TTSChunk> helpChunks = TTSChunkFactory.createSimpleTTSChunks(helpPrompt);
+ Vector<TTSChunk> timeoutChunks = TTSChunkFactory.createSimpleTTSChunks(timeoutPrompt);
+ PerformInteraction msg = new PerformInteraction(displayText, interactionMode, interactionChoiceSetIDs);
+ msg.setInitialPrompt(initChunks);
+ msg.setTimeout(timeout);
+ msg.setHelpPrompt(helpChunks);
+ msg.setTimeoutPrompt(timeoutChunks);
+ msg.setVrHelp(vrHelp);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5171,15 +5260,21 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(String initPrompt,
- String displayText, Vector<Integer> interactionChoiceSetIDList,
+ @NonNull String displayText, @NonNull Vector<Integer> interactionChoiceSetIDList,
String helpPrompt, String timeoutPrompt,
- InteractionMode interactionMode, Integer timeout, Vector<VrHelpItem> vrHelp,
+ @NonNull InteractionMode interactionMode, Integer timeout, Vector<VrHelpItem> vrHelp,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(initPrompt,
- displayText, interactionChoiceSetIDList,
- helpPrompt, timeoutPrompt, interactionMode, timeout, vrHelp,
- correlationID);
+
+ Vector<TTSChunk> initChunks = TTSChunkFactory.createSimpleTTSChunks(initPrompt);
+ Vector<TTSChunk> helpChunks = TTSChunkFactory.createSimpleTTSChunks(helpPrompt);
+ Vector<TTSChunk> timeoutChunks = TTSChunkFactory.createSimpleTTSChunks(timeoutPrompt);
+ PerformInteraction msg = new PerformInteraction(displayText, interactionMode, interactionChoiceSetIDList);
+ msg.setInitialPrompt(initChunks);
+ msg.setTimeout(timeout);
+ msg.setHelpPrompt(helpChunks);
+ msg.setTimeoutPrompt(timeoutChunks);
+ msg.setVrHelp(vrHelp);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5200,16 +5295,19 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(
- Vector<TTSChunk> initChunks, String displayText,
- Vector<Integer> interactionChoiceSetIDList,
+ Vector<TTSChunk> initChunks, @NonNull String displayText,
+ @NonNull Vector<Integer> interactionChoiceSetIDList,
Vector<TTSChunk> helpChunks, Vector<TTSChunk> timeoutChunks,
- InteractionMode interactionMode, Integer timeout, Vector<VrHelpItem> vrHelp,
+ @NonNull InteractionMode interactionMode, Integer timeout, Vector<VrHelpItem> vrHelp,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(
- initChunks, displayText, interactionChoiceSetIDList,
- helpChunks, timeoutChunks, interactionMode, timeout,vrHelp,
- correlationID);
+
+ PerformInteraction msg = new PerformInteraction(displayText, interactionMode, interactionChoiceSetIDList);
+ msg.setInitialPrompt(initChunks);
+ msg.setTimeout(timeout);
+ msg.setHelpPrompt(helpChunks);
+ msg.setTimeoutPrompt(timeoutChunks);
+ msg.setVrHelp(vrHelp);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5227,11 +5325,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(String initPrompt,
- String displayText, Integer interactionChoiceSetID,
+ @NonNull String displayText, @NonNull Integer interactionChoiceSetID,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(initPrompt,
- displayText, interactionChoiceSetID, correlationID);
+
+ Vector<Integer> interactionChoiceSetIDs = new Vector<Integer>();
+ interactionChoiceSetIDs.add(interactionChoiceSetID);
+ Vector<TTSChunk> initChunks = TTSChunkFactory.createSimpleTTSChunks(initPrompt);
+ PerformInteraction msg = new PerformInteraction(displayText, InteractionMode.BOTH, interactionChoiceSetIDs);
+ msg.setInitialPrompt(initChunks);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5251,16 +5353,23 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(String initPrompt,
- String displayText, Integer interactionChoiceSetID,
+ @NonNull String displayText, @NonNull Integer interactionChoiceSetID,
String helpPrompt, String timeoutPrompt,
- InteractionMode interactionMode, Integer timeout,
+ @NonNull InteractionMode interactionMode, Integer timeout,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(
- initPrompt, displayText, interactionChoiceSetID,
- helpPrompt, timeoutPrompt, interactionMode,
- timeout, correlationID);
-
+
+ Vector<Integer> interactionChoiceSetIDs = new Vector<Integer>();
+ interactionChoiceSetIDs.add(interactionChoiceSetID);
+ Vector<TTSChunk> initChunks = TTSChunkFactory.createSimpleTTSChunks(initPrompt);
+ Vector<TTSChunk> helpChunks = TTSChunkFactory.createSimpleTTSChunks(helpPrompt);
+ Vector<TTSChunk> timeoutChunks = TTSChunkFactory.createSimpleTTSChunks(timeoutPrompt);
+ PerformInteraction msg = new PerformInteraction(displayText, interactionMode, interactionChoiceSetIDs);
+ msg.setInitialPrompt(initChunks);
+ msg.setTimeout(timeout);
+ msg.setHelpPrompt(helpChunks);
+ msg.setTimeoutPrompt(timeoutChunks);
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -5279,15 +5388,20 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(String initPrompt,
- String displayText, Vector<Integer> interactionChoiceSetIDList,
+ @NonNull String displayText, @NonNull Vector<Integer> interactionChoiceSetIDList,
String helpPrompt, String timeoutPrompt,
- InteractionMode interactionMode, Integer timeout,
+ @NonNull InteractionMode interactionMode, Integer timeout,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(initPrompt,
- displayText, interactionChoiceSetIDList,
- helpPrompt, timeoutPrompt, interactionMode, timeout,
- correlationID);
+
+ Vector<TTSChunk> initChunks = TTSChunkFactory.createSimpleTTSChunks(initPrompt);
+ Vector<TTSChunk> helpChunks = TTSChunkFactory.createSimpleTTSChunks(helpPrompt);
+ Vector<TTSChunk> timeoutChunks = TTSChunkFactory.createSimpleTTSChunks(timeoutPrompt);
+ PerformInteraction msg = new PerformInteraction(displayText, interactionMode, interactionChoiceSetIDList);
+ msg.setInitialPrompt(initChunks);
+ msg.setTimeout(timeout);
+ msg.setHelpPrompt(helpChunks);
+ msg.setTimeoutPrompt(timeoutChunks);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5307,37 +5421,80 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performInteraction(
- Vector<TTSChunk> initChunks, String displayText,
- Vector<Integer> interactionChoiceSetIDList,
+ Vector<TTSChunk> initChunks, @NonNull String displayText,
+ @NonNull Vector<Integer> interactionChoiceSetIDList,
Vector<TTSChunk> helpChunks, Vector<TTSChunk> timeoutChunks,
- InteractionMode interactionMode, Integer timeout,
+ @NonNull InteractionMode interactionMode, Integer timeout,
Integer correlationID) throws SdlException {
-
- PerformInteraction msg = RPCRequestFactory.buildPerformInteraction(
- initChunks, displayText, interactionChoiceSetIDList,
- helpChunks, timeoutChunks, interactionMode, timeout,
- correlationID);
+
+ PerformInteraction msg = new PerformInteraction(displayText, interactionMode, interactionChoiceSetIDList);
+ msg.setInitialPrompt(initChunks);
+ msg.setTimeout(timeout);
+ msg.setHelpPrompt(helpChunks);
+ msg.setTimeoutPrompt(timeoutChunks);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
-
+
// Protected registerAppInterface used to ensure only non-ALM applications call
// reqisterAppInterface
protected void registerAppInterfacePrivate(
- SdlMsgVersion sdlMsgVersion, String appName, Vector<TTSChunk> ttsName,
- String ngnMediaScreenAppName, Vector<String> vrSynonyms, Boolean isMediaApp,
- Language languageDesired, Language hmiDisplayLanguageDesired, Vector<AppHMIType> appType,
- String appID, TemplateColorScheme _dayColorScheme, TemplateColorScheme _nightColorScheme, Integer correlationID)
+ @NonNull SdlMsgVersion sdlMsgVersion, @NonNull String appName, Vector<TTSChunk> ttsName,
+ String ngnMediaScreenAppName, Vector<String> vrSynonyms, @NonNull Boolean isMediaApp,
+ @NonNull Language languageDesired, @NonNull Language hmiDisplayLanguageDesired, Vector<AppHMIType> appType,
+ @NonNull String appID, TemplateColorScheme dayColorScheme, TemplateColorScheme nightColorScheme, Integer correlationID)
throws SdlException {
String carrierName = null;
if(telephonyManager != null){
carrierName = telephonyManager.getNetworkOperatorName();
}
- deviceInfo = RPCRequestFactory.BuildDeviceInfo(carrierName);
- RegisterAppInterface msg = RPCRequestFactory.buildRegisterAppInterface(
- sdlMsgVersion, appName, ttsName, ngnMediaScreenAppName, vrSynonyms, isMediaApp,
- languageDesired, hmiDisplayLanguageDesired, appType, appID, _dayColorScheme, _nightColorScheme,correlationID, deviceInfo);
-
+
+ DeviceInfo deviceInfo = new DeviceInfo();
+ deviceInfo.setHardware(android.os.Build.MODEL);
+ deviceInfo.setOs(DeviceInfo.DEVICE_OS);
+ deviceInfo.setOsVersion(Build.VERSION.RELEASE);
+ deviceInfo.setCarrier(carrierName);
+
+ if (sdlMsgVersion == null) {
+ sdlMsgVersion = new SdlMsgVersion();
+ sdlMsgVersion.setMajorVersion(MAX_SUPPORTED_RPC_VERSION.getMajor());
+ sdlMsgVersion.setMinorVersion(MAX_SUPPORTED_RPC_VERSION.getMinor());
+ }
+ if (languageDesired == null) {
+ languageDesired = Language.EN_US;
+ }
+ if (hmiDisplayLanguageDesired == null) {
+ hmiDisplayLanguageDesired = Language.EN_US;
+ }
+
+ RegisterAppInterface msg = new RegisterAppInterface(sdlMsgVersion, appName, isMediaApp, languageDesired, hmiDisplayLanguageDesired, appID);
+
+ if (correlationID != null) {
+ msg.setCorrelationID(correlationID);
+ }
+
+ msg.setDeviceInfo(deviceInfo);
+
+ msg.setTtsName(ttsName);
+
+ if (ngnMediaScreenAppName == null) {
+ ngnMediaScreenAppName = appName;
+ }
+
+ msg.setNgnMediaScreenAppName(ngnMediaScreenAppName);
+
+ if (vrSynonyms == null) {
+ vrSynonyms = new Vector<String>();
+ vrSynonyms.add(appName);
+ }
+ msg.setVrSynonyms(vrSynonyms);
+
+ msg.setAppHMIType(appType);
+
+ msg.setDayColorScheme(dayColorScheme);
+ msg.setNightColorScheme(nightColorScheme);
+
if (_bAppResumeEnabled)
{
if (_lastHashID != null)
@@ -5370,9 +5527,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void setGlobalProperties(
String helpPrompt, String timeoutPrompt, String vrHelpTitle, Vector<VrHelpItem> vrHelp, Integer correlationID)
throws SdlException {
-
- SetGlobalProperties req = RPCRequestFactory.buildSetGlobalProperties(helpPrompt,
- timeoutPrompt, vrHelpTitle, vrHelp, correlationID);
+
+ SetGlobalProperties req = new SetGlobalProperties();
+ req.setCorrelationID(correlationID);
+ req.setHelpPrompt(TTSChunkFactory.createSimpleTTSChunks(helpPrompt));
+ req.setTimeoutPrompt(TTSChunkFactory.createSimpleTTSChunks(timeoutPrompt));
+ req.setVrHelpTitle(vrHelpTitle);
+ req.setVrHelp(vrHelp);
sendRPCRequest(req);
}
@@ -5391,9 +5552,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void setGlobalProperties(
Vector<TTSChunk> helpChunks, Vector<TTSChunk> timeoutChunks, String vrHelpTitle, Vector<VrHelpItem> vrHelp,
Integer correlationID) throws SdlException {
-
- SetGlobalProperties req = RPCRequestFactory.buildSetGlobalProperties(
- helpChunks, timeoutChunks, vrHelpTitle, vrHelp, correlationID);
+
+ SetGlobalProperties req = new SetGlobalProperties();
+ req.setCorrelationID(correlationID);
+ req.setHelpPrompt(helpChunks);
+ req.setTimeoutPrompt(timeoutChunks);
+ req.setVrHelpTitle(vrHelpTitle);
+ req.setVrHelp(vrHelp);
sendRPCRequest(req);
}
@@ -5412,9 +5577,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void setGlobalProperties(
String helpPrompt, String timeoutPrompt, Integer correlationID)
throws SdlException {
-
- SetGlobalProperties req = RPCRequestFactory.buildSetGlobalProperties(helpPrompt,
- timeoutPrompt, correlationID);
+
+ SetGlobalProperties req = new SetGlobalProperties();
+ req.setCorrelationID(correlationID);
+ req.setHelpPrompt(TTSChunkFactory.createSimpleTTSChunks(helpPrompt));
+ req.setTimeoutPrompt(TTSChunkFactory.createSimpleTTSChunks(timeoutPrompt));
sendRPCRequest(req);
}
@@ -5431,9 +5598,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void setGlobalProperties(
Vector<TTSChunk> helpChunks, Vector<TTSChunk> timeoutChunks,
Integer correlationID) throws SdlException {
-
- SetGlobalProperties req = RPCRequestFactory.buildSetGlobalProperties(
- helpChunks, timeoutChunks, correlationID);
+
+ SetGlobalProperties req = new SetGlobalProperties();
+ req.setCorrelationID(correlationID);
+ req.setHelpPrompt(helpChunks);
+ req.setTimeoutPrompt(timeoutChunks);
sendRPCRequest(req);
}
@@ -5463,11 +5632,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void setMediaClockTimer(Integer hours,
- Integer minutes, Integer seconds, UpdateMode updateMode,
+ Integer minutes, Integer seconds, @NonNull UpdateMode updateMode,
Integer correlationID) throws SdlException {
- SetMediaClockTimer msg = RPCRequestFactory.buildSetMediaClockTimer(hours,
- minutes, seconds, updateMode, correlationID);
+ SetMediaClockTimer msg = new SetMediaClockTimer(updateMode);
+ if (hours != null || minutes != null || seconds != null) {
+ StartTime startTime = new StartTime(hours, minutes, seconds);
+ msg.setStartTime(startTime);
+ }
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5482,8 +5655,10 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void pauseMediaClockTimer(Integer correlationID)
throws SdlException {
- SetMediaClockTimer msg = RPCRequestFactory.buildSetMediaClockTimer(0,
- 0, 0, UpdateMode.PAUSE, correlationID);
+ SetMediaClockTimer msg = new SetMediaClockTimer(UpdateMode.PAUSE);
+ StartTime startTime = new StartTime(0, 0, 0);
+ msg.setStartTime(startTime);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5498,8 +5673,10 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void resumeMediaClockTimer(Integer correlationID)
throws SdlException {
- SetMediaClockTimer msg = RPCRequestFactory.buildSetMediaClockTimer(0,
- 0, 0, UpdateMode.RESUME, correlationID);
+ SetMediaClockTimer msg = new SetMediaClockTimer(UpdateMode.RESUME);
+ StartTime startTime = new StartTime(0, 0, 0);
+ msg.setStartTime(startTime);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5514,7 +5691,9 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
public void clearMediaClockTimer(Integer correlationID)
throws SdlException {
- Show msg = RPCRequestFactory.buildShow(null, null, null, " ", null, null, correlationID);
+ Show msg = new Show();
+ msg.setCorrelationID(correlationID);
+ msg.setMediaClock(" ");
sendRPCRequest(msg);
}
@@ -5543,10 +5722,20 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
Image graphic, Vector<SoftButton> softButtons, Vector <String> customPresets,
TextAlignment alignment, Integer correlationID)
throws SdlException {
-
- Show msg = RPCRequestFactory.buildShow(mainText1, mainText2, mainText3, mainText4,
- statusBar, mediaClock, mediaTrack, graphic, softButtons, customPresets,
- alignment, correlationID);
+
+ Show msg = new Show();
+ msg.setCorrelationID(correlationID);
+ msg.setMainField1(mainText1);
+ msg.setMainField2(mainText2);
+ msg.setStatusBar(statusBar);
+ msg.setMediaClock(mediaClock);
+ msg.setMediaTrack(mediaTrack);
+ msg.setAlignment(alignment);
+ msg.setMainField3(mainText3);
+ msg.setMainField4(mainText4);
+ msg.setGraphic(graphic);
+ msg.setSoftButtons(softButtons);
+ msg.setCustomPresets(customPresets);
sendRPCRequest(msg);
}
@@ -5592,10 +5781,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
String statusBar, String mediaClock, String mediaTrack,
TextAlignment alignment, Integer correlationID)
throws SdlException {
-
- Show msg = RPCRequestFactory.buildShow(mainText1, mainText2,
- statusBar, mediaClock, mediaTrack,
- alignment, correlationID);
+
+ Show msg = new Show();
+ msg.setCorrelationID(correlationID);
+ msg.setMainField1(mainText1);
+ msg.setMainField2(mainText2);
+ msg.setStatusBar(statusBar);
+ msg.setMediaClock(mediaClock);
+ msg.setMediaTrack(mediaTrack);
+ msg.setAlignment(alignment);
sendRPCRequest(msg);
}
@@ -5625,11 +5819,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void speak(String ttsText, Integer correlationID)
+ public void speak(@NonNull String ttsText, Integer correlationID)
throws SdlException {
-
- Speak msg = RPCRequestFactory.buildSpeak(TTSChunkFactory.createSimpleTTSChunks(ttsText),
- correlationID);
+
+ Speak msg = new Speak(TTSChunkFactory.createSimpleTTSChunks(ttsText));
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5642,10 +5836,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void speak(Vector<TTSChunk> ttsChunks,
+ public void speak(@NonNull Vector<TTSChunk> ttsChunks,
Integer correlationID) throws SdlException {
- Speak msg = RPCRequestFactory.buildSpeak(ttsChunks, correlationID);
+ Speak msg = new Speak(ttsChunks);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5658,11 +5853,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void subscribeButton(ButtonName buttonName,
+ public void subscribeButton(@NonNull ButtonName buttonName,
Integer correlationID) throws SdlException {
- SubscribeButton msg = RPCRequestFactory.buildSubscribeButton(buttonName,
- correlationID);
+ SubscribeButton msg = new SubscribeButton(buttonName);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5672,8 +5867,9 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
protected void unregisterAppInterfacePrivate(Integer correlationID)
throws SdlException {
- UnregisterAppInterface msg =
- RPCRequestFactory.buildUnregisterAppInterface(correlationID);
+ UnregisterAppInterface msg = new UnregisterAppInterface();
+ msg.setCorrelationID(correlationID);
+
Intent sendIntent = createBroadcastIntent();
updateBroadcastIntent(sendIntent, "RPC_NAME", FunctionID.UNREGISTER_APP_INTERFACE.toString());
@@ -5693,11 +5889,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void unsubscribeButton(ButtonName buttonName,
+ public void unsubscribeButton(@NonNull ButtonName buttonName,
Integer correlationID) throws SdlException {
- UnsubscribeButton msg = RPCRequestFactory.buildUnsubscribeButton(
- buttonName, correlationID);
+ UnsubscribeButton msg = new UnsubscribeButton(buttonName);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5739,11 +5935,16 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
public void performaudiopassthru(String initialPrompt, String audioPassThruDisplayText1, String audioPassThruDisplayText2,
- SamplingRate samplingRate, Integer maxDuration, BitsPerSample bitsPerSample,
- AudioType audioType, Boolean muteAudio, Integer correlationID) throws SdlException {
+ @NonNull SamplingRate samplingRate, @NonNull Integer maxDuration, @NonNull BitsPerSample bitsPerSample,
+ @NonNull AudioType audioType, Boolean muteAudio, Integer correlationID) throws SdlException {
+ Vector<TTSChunk> chunks = TTSChunkFactory.createSimpleTTSChunks(initialPrompt);
+ PerformAudioPassThru msg = new PerformAudioPassThru(samplingRate, maxDuration, bitsPerSample, audioType);
+ msg.setCorrelationID(correlationID);
+ msg.setInitialPrompt(chunks);
+ msg.setAudioPassThruDisplayText1(audioPassThruDisplayText1);
+ msg.setAudioPassThruDisplayText2(audioPassThruDisplayText2);
+ msg.setMuteAudio(muteAudio);
- PerformAudioPassThru msg = RPCRequestFactory.BuildPerformAudioPassThru(initialPrompt, audioPassThruDisplayText1, audioPassThruDisplayText2,
- samplingRate, maxDuration, bitsPerSample, audioType, muteAudio, correlationID);
sendRPCRequest(msg);
}
@@ -5756,7 +5957,9 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
@SuppressWarnings("unused")
public void endaudiopassthru(Integer correlationID) throws SdlException
{
- EndAudioPassThru msg = RPCRequestFactory.BuildEndAudioPassThru(correlationID);
+ EndAudioPassThru msg = new EndAudioPassThru();
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -5787,8 +5990,22 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
boolean odometer, boolean beltStatus, boolean bodyInformation, boolean deviceStatus,
boolean driverBraking, Integer correlationID) throws SdlException
{
- SubscribeVehicleData msg = RPCRequestFactory.BuildSubscribeVehicleData(gps, speed, rpm, fuelLevel, fuelLevel_State, instantFuelConsumption, externalTemperature, prndl, tirePressure,
- odometer, beltStatus, bodyInformation, deviceStatus, driverBraking, correlationID);
+ SubscribeVehicleData msg = new SubscribeVehicleData();
+ msg.setGps(gps);
+ msg.setSpeed(speed);
+ msg.setRpm(rpm);
+ msg.setFuelLevel(fuelLevel);
+ msg.setFuelLevel_State(fuelLevel_State);
+ msg.setInstantFuelConsumption(instantFuelConsumption);
+ msg.setExternalTemperature(externalTemperature);
+ msg.setPrndl(prndl);
+ msg.setTirePressure(tirePressure);
+ msg.setOdometer(odometer);
+ msg.setBeltStatus(beltStatus);
+ msg.setBodyInformation(bodyInformation);
+ msg.setDeviceStatus(deviceStatus);
+ msg.setDriverBraking(driverBraking);
+ msg.setCorrelationID(correlationID);
sendRPCRequest(msg);
}
@@ -5821,8 +6038,23 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
boolean odometer, boolean beltStatus, boolean bodyInformation, boolean deviceStatus,
boolean driverBraking, Integer correlationID) throws SdlException
{
- UnsubscribeVehicleData msg = RPCRequestFactory.BuildUnsubscribeVehicleData(gps, speed, rpm, fuelLevel, fuelLevel_State, instantFuelConsumption, externalTemperature, prndl, tirePressure,
- odometer, beltStatus, bodyInformation, deviceStatus, driverBraking, correlationID);
+ UnsubscribeVehicleData msg = new UnsubscribeVehicleData();
+ msg.setGps(gps);
+ msg.setSpeed(speed);
+ msg.setRpm(rpm);
+ msg.setFuelLevel(fuelLevel);
+ msg.setFuelLevel_State(fuelLevel_State);
+ msg.setInstantFuelConsumption(instantFuelConsumption);
+ msg.setExternalTemperature(externalTemperature);
+ msg.setPrndl(prndl);
+ msg.setTirePressure(tirePressure);
+ msg.setOdometer(odometer);
+ msg.setBeltStatus(beltStatus);
+ msg.setBodyInformation(bodyInformation);
+ msg.setDeviceStatus(deviceStatus);
+ msg.setDriverBraking(driverBraking);
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -5855,9 +6087,24 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
boolean odometer, boolean beltStatus, boolean bodyInformation, boolean deviceStatus,
boolean driverBraking, Integer correlationID) throws SdlException
{
-
- GetVehicleData msg = RPCRequestFactory.BuildGetVehicleData(gps, speed, rpm, fuelLevel, fuelLevel_State, instantFuelConsumption, externalTemperature, vin, prndl, tirePressure, odometer,
- beltStatus, bodyInformation, deviceStatus, driverBraking, correlationID);
+ GetVehicleData msg = new GetVehicleData();
+ msg.setGps(gps);
+ msg.setSpeed(speed);
+ msg.setRpm(rpm);
+ msg.setFuelLevel(fuelLevel);
+ msg.setFuelLevel_State(fuelLevel_State);
+ msg.setInstantFuelConsumption(instantFuelConsumption);
+ msg.setExternalTemperature(externalTemperature);
+ msg.setVin(vin);
+ msg.setPrndl(prndl);
+ msg.setTirePressure(tirePressure);
+ msg.setOdometer(odometer);
+ msg.setBeltStatus(beltStatus);
+ msg.setBodyInformation(bodyInformation);
+ msg.setDeviceStatus(deviceStatus);
+ msg.setDriverBraking(driverBraking);
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -5873,9 +6120,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void scrollablemessage(String scrollableMessageBody, Integer timeout, Vector<SoftButton> softButtons, Integer correlationID) throws SdlException
+ public void scrollablemessage(@NonNull String scrollableMessageBody, Integer timeout, Vector<SoftButton> softButtons, Integer correlationID) throws SdlException
{
- ScrollableMessage msg = RPCRequestFactory.BuildScrollableMessage(scrollableMessageBody, timeout, softButtons, correlationID);
+ ScrollableMessage msg = new ScrollableMessage(scrollableMessageBody);
+ msg.setCorrelationID(correlationID);
+ msg.setTimeout(timeout);
+ msg.setSoftButtons(softButtons);
+
sendRPCRequest(msg);
}
@@ -5893,9 +6144,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void slider(Integer numTicks, Integer position, String sliderHeader, Vector<String> sliderFooter, Integer timeout, Integer correlationID) throws SdlException
+ public void slider(@NonNull Integer numTicks, @NonNull Integer position, @NonNull String sliderHeader, Vector<String> sliderFooter, Integer timeout, Integer correlationID) throws SdlException
{
- Slider msg = RPCRequestFactory.BuildSlider(numTicks, position, sliderHeader, sliderFooter, timeout, correlationID);
+ Slider msg = new Slider(numTicks, position, sliderHeader);
+ msg.setCorrelationID(correlationID);
+ msg.setSliderFooter(sliderFooter);
+ msg.setTimeout(timeout);
+
sendRPCRequest(msg);
}
@@ -5908,9 +6163,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void changeregistration(Language language, Language hmiDisplayLanguage, Integer correlationID) throws SdlException
+ public void changeregistration(@NonNull Language language, @NonNull Language hmiDisplayLanguage, Integer correlationID) throws SdlException
{
- ChangeRegistration msg = RPCRequestFactory.BuildChangeRegistration(language, hmiDisplayLanguage, correlationID);
+ ChangeRegistration msg = new ChangeRegistration(language, hmiDisplayLanguage);
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -5928,9 +6185,14 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
@Deprecated
- public void putFileStream(InputStream is, String sdlFileName, Integer iOffset, Integer iLength) throws SdlException
+ public void putFileStream(InputStream is, @NonNull String sdlFileName, Integer iOffset, Integer iLength) throws SdlException
{
- @SuppressWarnings("deprecation") PutFile msg = RPCRequestFactory.buildPutFile(sdlFileName, iOffset, iLength);
+ PutFile msg = new PutFile(sdlFileName, FileType.BINARY);
+ msg.setCorrelationID(10000);
+ msg.setSystemFile(true);
+ msg.setOffset(iOffset);
+ msg.setLength(iLength);
+
startRPCStream(is, msg);
}
@@ -5947,8 +6209,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void putFileStream(InputStream inputStream, String fileName, Long offset, Long length) throws SdlException {
- PutFile msg = RPCRequestFactory.buildPutFile(fileName, offset, length);
+ public void putFileStream(InputStream inputStream, @NonNull String fileName, Long offset, Long length) throws SdlException {
+ PutFile msg = new PutFile(fileName, FileType.BINARY);
+ msg.setCorrelationID(10000);
+ msg.setSystemFile(true);
+ msg.setOffset(offset);
+ msg.setLength(length);
+
startRPCStream(inputStream, msg);
}
@@ -5967,9 +6234,14 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
@Deprecated
- public OutputStream putFileStream(String sdlFileName, Integer iOffset, Integer iLength) throws SdlException
+ public OutputStream putFileStream(@NonNull String sdlFileName, Integer iOffset, Integer iLength) throws SdlException
{
- @SuppressWarnings("deprecation") PutFile msg = RPCRequestFactory.buildPutFile(sdlFileName, iOffset, iLength);
+ PutFile msg = new PutFile(sdlFileName, FileType.BINARY);
+ msg.setCorrelationID(10000);
+ msg.setSystemFile(true);
+ msg.setOffset(iOffset);
+ msg.setLength(iLength);
+
return startRPCStream(msg);
}
@@ -5985,8 +6257,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public OutputStream putFileStream(String fileName, Long offset, Long length) throws SdlException {
- PutFile msg = RPCRequestFactory.buildPutFile(fileName, offset, length);
+ public OutputStream putFileStream(@NonNull String fileName, Long offset, Long length) throws SdlException {
+ PutFile msg = new PutFile(fileName, FileType.BINARY);
+ msg.setCorrelationID(10000);
+ msg.setSystemFile(true);
+ msg.setOffset(offset);
+ msg.setLength(length);
+
return startRPCStream(msg);
}
@@ -6007,9 +6284,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
@Deprecated
- public void putFileStream(InputStream is, String sdlFileName, Integer iOffset, Integer iLength, FileType fileType, Boolean bPersistentFile, Boolean bSystemFile) throws SdlException
+ public void putFileStream(InputStream is, @NonNull String sdlFileName, Integer iOffset, Integer iLength, @NonNull FileType fileType, Boolean bPersistentFile, Boolean bSystemFile) throws SdlException
{
- @SuppressWarnings("deprecation") PutFile msg = RPCRequestFactory.buildPutFile(sdlFileName, iOffset, iLength, fileType, bPersistentFile, bSystemFile);
+ PutFile msg = new PutFile(sdlFileName, fileType);
+ msg.setCorrelationID(10000);
+ msg.setPersistentFile(bPersistentFile);
+ msg.setSystemFile(bSystemFile);
+ msg.setOffset(iOffset);
+ msg.setLength(iLength);
+
startRPCStream(is, msg);
}
@@ -6032,8 +6315,12 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void putFileStream(InputStream inputStream, String fileName, Long offset, Long length, FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, OnPutFileUpdateListener cb) throws SdlException {
- PutFile msg = RPCRequestFactory.buildPutFile(fileName, offset, length);
+ public void putFileStream(InputStream inputStream, @NonNull String fileName, Long offset, Long length, FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, OnPutFileUpdateListener cb) throws SdlException {
+ PutFile msg = new PutFile(fileName, FileType.BINARY);
+ msg.setCorrelationID(10000);
+ msg.setSystemFile(true);
+ msg.setOffset(offset);
+ msg.setLength(length);
msg.setOnPutFileUpdateListener(cb);
startRPCStream(inputStream, msg);
}
@@ -6055,9 +6342,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
@Deprecated
- public OutputStream putFileStream(String sdlFileName, Integer iOffset, Integer iLength, FileType fileType, Boolean bPersistentFile, Boolean bSystemFile) throws SdlException
+ public OutputStream putFileStream(@NonNull String sdlFileName, Integer iOffset, Integer iLength, @NonNull FileType fileType, Boolean bPersistentFile, Boolean bSystemFile) throws SdlException
{
- @SuppressWarnings("deprecation") PutFile msg = RPCRequestFactory.buildPutFile(sdlFileName, iOffset, iLength, fileType, bPersistentFile, bSystemFile);
+ PutFile msg = new PutFile(sdlFileName, fileType);
+ msg.setCorrelationID(10000);
+ msg.setPersistentFile(bPersistentFile);
+ msg.setSystemFile(bSystemFile);
+ msg.setOffset(iOffset);
+ msg.setLength(iLength);
+
return startRPCStream(msg);
}
@@ -6079,9 +6372,14 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public OutputStream putFileStream(String fileName, Long offset, Long length, FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, OnPutFileUpdateListener cb) throws SdlException {
- PutFile msg = RPCRequestFactory.buildPutFile(fileName, offset, length);
+ public OutputStream putFileStream(@NonNull String fileName, Long offset, Long length, FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, OnPutFileUpdateListener cb) throws SdlException {
+ PutFile msg = new PutFile(fileName, FileType.BINARY);
+ msg.setCorrelationID(10000);
+ msg.setSystemFile(true);
+ msg.setOffset(offset);
+ msg.setLength(length);
msg.setOnPutFileUpdateListener(cb);
+
return startRPCStream(msg);
}
@@ -6103,9 +6401,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
@Deprecated
- public RPCStreamController putFileStream(String sPath, String sdlFileName, Integer iOffset, FileType fileType, Boolean bPersistentFile, Boolean bSystemFile, Integer iCorrelationID) throws SdlException
+ public RPCStreamController putFileStream(String sPath, @NonNull String sdlFileName, Integer iOffset, @NonNull FileType fileType, Boolean bPersistentFile, Boolean bSystemFile, Integer iCorrelationID) throws SdlException
{
- @SuppressWarnings("deprecation") PutFile msg = RPCRequestFactory.buildPutFile(sdlFileName, iOffset, 0, fileType, bPersistentFile, bSystemFile, iCorrelationID);
+ PutFile msg = new PutFile(sdlFileName, fileType);
+ msg.setCorrelationID(iCorrelationID);
+ msg.setPersistentFile(bPersistentFile);
+ msg.setSystemFile(bSystemFile);
+ msg.setOffset(iOffset);
+ msg.setLength(0);
+
return startPutFileStream(sPath, msg);
}
@@ -6132,9 +6436,16 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public RPCStreamController putFileStream(String path, String fileName, Long offset, FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, Boolean isPayloadProtected, Integer correlationId, OnPutFileUpdateListener cb ) throws SdlException {
- PutFile msg = RPCRequestFactory.buildPutFile(fileName, offset, 0L, fileType, isPersistentFile, isSystemFile, isPayloadProtected, correlationId);
+ public RPCStreamController putFileStream(String path, @NonNull String fileName, Long offset, @NonNull FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, Boolean isPayloadProtected, Integer correlationId, OnPutFileUpdateListener cb ) throws SdlException {
+ PutFile msg = new PutFile(fileName, fileType);
+ msg.setCorrelationID(correlationId);
+ msg.setPersistentFile(isPersistentFile);
+ msg.setSystemFile(isSystemFile);
+ msg.setOffset(offset);
+ msg.setLength(0L);
+ msg.setPayloadProtected(isPayloadProtected);
msg.setOnPutFileUpdateListener(cb);
+
return startPutFileStream(path,msg);
}
@@ -6156,9 +6467,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
*/
@SuppressWarnings("unused")
@Deprecated
- public RPCStreamController putFileStream(InputStream is, String sdlFileName, Integer iOffset, Integer iLength, FileType fileType, Boolean bPersistentFile, Boolean bSystemFile, Integer iCorrelationID) throws SdlException
+ public RPCStreamController putFileStream(InputStream is, @NonNull String sdlFileName, Integer iOffset, Integer iLength, @NonNull FileType fileType, Boolean bPersistentFile, Boolean bSystemFile, Integer iCorrelationID) throws SdlException
{
- @SuppressWarnings("deprecation") PutFile msg = RPCRequestFactory.buildPutFile(sdlFileName, iOffset, iLength, fileType, bPersistentFile, bSystemFile, iCorrelationID);
+ PutFile msg = new PutFile(sdlFileName, fileType);
+ msg.setCorrelationID(iCorrelationID);
+ msg.setPersistentFile(bPersistentFile);
+ msg.setSystemFile(bSystemFile);
+ msg.setOffset(iOffset);
+ msg.setLength(iLength);
+
return startPutFileStream(is, msg);
}
@@ -6183,8 +6500,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public RPCStreamController putFileStream(InputStream inputStream, String fileName, Long offset, Long length, FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, Boolean isPayloadProtected, Integer correlationId) throws SdlException {
- PutFile msg = RPCRequestFactory.buildPutFile(fileName, offset, length, fileType, isPersistentFile, isSystemFile, isPayloadProtected, correlationId);
+ public RPCStreamController putFileStream(InputStream inputStream, @NonNull String fileName, Long offset, Long length, @NonNull FileType fileType, Boolean isPersistentFile, Boolean isSystemFile, Boolean isPayloadProtected, Integer correlationId) throws SdlException {
+ PutFile msg = new PutFile(fileName, fileType);
+ msg.setCorrelationID(correlationId);
+ msg.setPersistentFile(isPersistentFile);
+ msg.setSystemFile(isSystemFile);
+ msg.setOffset(offset);
+ msg.setLength(length);
+ msg.setPayloadProtected(isPayloadProtected);
+
return startPutFileStream(inputStream, msg);
}
@@ -6212,9 +6536,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void putfile(String sdlFileName, FileType fileType, Boolean persistentFile, byte[] fileData, Integer correlationID) throws SdlException
+ public void putfile(@NonNull String sdlFileName, @NonNull FileType fileType, Boolean persistentFile, byte[] fileData, Integer correlationID) throws SdlException
{
- PutFile msg = RPCRequestFactory.buildPutFile(sdlFileName, fileType, persistentFile, fileData, correlationID);
+ PutFile msg = new PutFile(sdlFileName, fileType);
+ msg.setCorrelationID(correlationID);
+ msg.setPersistentFile(persistentFile);
+ msg.setBulkData(fileData);
+
sendRPCRequest(msg);
}
@@ -6227,9 +6555,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void deletefile(String sdlFileName, Integer correlationID) throws SdlException
+ public void deletefile(@NonNull String sdlFileName, Integer correlationID) throws SdlException
{
- DeleteFile msg = RPCRequestFactory.buildDeleteFile(sdlFileName, correlationID);
+ DeleteFile msg = new DeleteFile(sdlFileName);
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -6243,7 +6573,9 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
@SuppressWarnings("unused")
public void listfiles(Integer correlationID) throws SdlException
{
- ListFiles msg = RPCRequestFactory.buildListFiles(correlationID);
+ ListFiles msg = new ListFiles();
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -6256,9 +6588,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void setappicon(String sdlFileName, Integer correlationID) throws SdlException
+ public void setappicon(@NonNull String sdlFileName, Integer correlationID) throws SdlException
{
- SetAppIcon msg = RPCRequestFactory.buildSetAppIcon(sdlFileName, correlationID);
+ SetAppIcon msg = new SetAppIcon(sdlFileName);
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -6271,9 +6605,11 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
* @throws SdlException if an unrecoverable error is encountered
*/
@SuppressWarnings("unused")
- public void setdisplaylayout(String displayLayout, Integer correlationID) throws SdlException
+ public void setdisplaylayout(@NonNull String displayLayout, Integer correlationID) throws SdlException
{
- SetDisplayLayout msg = RPCRequestFactory.BuildSetDisplayLayout(displayLayout, correlationID);
+ SetDisplayLayout msg = new SetDisplayLayout(displayLayout);
+ msg.setCorrelationID(correlationID);
+
sendRPCRequest(msg);
}
@@ -6438,6 +6774,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
IVideoStreamListener streamListener;
float[] touchScalar = {1.0f,1.0f}; //x, y
private HapticInterfaceManager hapticManager;
+ SdlMotionEvent sdlMotionEvent = null;
public VideoStreamingManager(Context context,ISdl iSdl){
this.context = context;
@@ -6593,41 +6930,143 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
TouchType touchType = touchEvent.getType();
if (touchType == null){ return null;}
- float x;
- float y;
+ int eventListSize = eventList.size();
+
+ MotionEvent.PointerProperties[] pointerProperties = new MotionEvent.PointerProperties[eventListSize];
+ MotionEvent.PointerCoords[] pointerCoords = new MotionEvent.PointerCoords[eventListSize];
+
+ TouchEvent event;
+ MotionEvent.PointerProperties properties;
+ MotionEvent.PointerCoords coords;
+ TouchCoord touchCoord;
+
+ for(int i = 0; i < eventListSize; i++){
+ event = eventList.get(i);
+ if(event == null || event.getId() == null || event.getTouchCoordinates() == null){
+ continue;
+ }
+
+ properties = new MotionEvent.PointerProperties();
+ properties.id = event.getId();
+ properties.toolType = MotionEvent.TOOL_TYPE_FINGER;
- TouchEvent event = eventList.get(eventList.size() - 1);
- List<TouchCoord> coordList = event.getTouchCoordinates();
- if (coordList == null || coordList.size() == 0){ return null;}
- TouchCoord coord = coordList.get(coordList.size() - 1);
- if (coord == null){ return null;}
+ List<TouchCoord> coordList = event.getTouchCoordinates();
+ if (coordList == null || coordList.size() == 0){ continue; }
- x = (coord.getX() * touchScalar[0]);
- y = (coord.getY() * touchScalar[1]);
+ touchCoord = coordList.get(coordList.size() -1);
+ if(touchCoord == null){ continue; }
- if (x == 0 && y == 0){ return null;}
+ coords = new MotionEvent.PointerCoords();
+ coords.x = touchCoord.getX() * touchScalar[0];
+ coords.y = touchCoord.getY() * touchScalar[1];
+ coords.orientation = 0;
+ coords.pressure = 1.0f;
+ coords.size = 1;
- int eventAction = MotionEvent.ACTION_DOWN;
- long downTime = 0;
+ //Add the info to lists only after we are sure we have all available info
+ pointerProperties[i] = properties;
+ pointerCoords[i] = coords;
- if (touchType == TouchType.BEGIN) {
- downTime = SystemClock.uptimeMillis();
- eventAction = MotionEvent.ACTION_DOWN;
}
- long eventTime = SystemClock.uptimeMillis();
- if (downTime == 0){ downTime = eventTime - 100;}
- if (touchType == TouchType.MOVE) {
- eventAction = MotionEvent.ACTION_MOVE;
+ if(sdlMotionEvent == null) {
+ if (touchType == TouchType.BEGIN) {
+ sdlMotionEvent = new SdlMotionEvent();
+ }else{
+ return null;
+ }
}
- if (touchType == TouchType.END) {
- eventAction = MotionEvent.ACTION_UP;
+ int eventAction = sdlMotionEvent.getMotionEvent(touchType, pointerProperties);
+ long startTime = sdlMotionEvent.startOfEvent;
+
+ //If the motion event should be finished we should clear our reference
+ if(eventAction == MotionEvent.ACTION_UP || eventAction == MotionEvent.ACTION_CANCEL){
+ sdlMotionEvent = null;
+ }
+
+ return MotionEvent.obtain(startTime, SystemClock.uptimeMillis(), eventAction, eventListSize, pointerProperties, pointerCoords, 0, 0,1,1,0,0, InputDevice.SOURCE_TOUCHSCREEN,0);
+
+ }
+
+
+
+ }
+
+ /**
+ * Keeps track of the current motion event for VPM
+ */
+ private static class SdlMotionEvent{
+ long startOfEvent;
+ SparseIntArray pointerStatuses = new SparseIntArray();
+
+ SdlMotionEvent(){
+ startOfEvent = SystemClock.uptimeMillis();
+ }
+
+ /**
+ * Handles the SDL Touch Event to keep track of pointer status and returns the appropirate
+ * Android MotionEvent according to this events status
+ * @param touchType The SDL TouchType that was received from the module
+ * @param pointerProperties the parsed pointer properties built from the OnTouchEvent RPC
+ * @return the correct native Andorid MotionEvent action to dispatch
+ */
+ synchronized int getMotionEvent(TouchType touchType, MotionEvent.PointerProperties[] pointerProperties){
+ int motionEvent = MotionEvent.ACTION_DOWN;
+ switch (touchType){
+ case BEGIN:
+ if(pointerStatuses.size() == 0){
+ //The motion event has just begun
+ motionEvent = MotionEvent.ACTION_DOWN;
+ }else{
+ motionEvent = MotionEvent.ACTION_POINTER_DOWN;
+ }
+ setPointerStatuses(motionEvent, pointerProperties);
+ break;
+ case MOVE:
+ motionEvent = MotionEvent.ACTION_MOVE;
+ setPointerStatuses(motionEvent, pointerProperties);
+
+ break;
+ case END:
+ //Clears out pointers that have ended
+ setPointerStatuses(MotionEvent.ACTION_UP, pointerProperties);
+
+ if(pointerStatuses.size() == 0){
+ //The motion event has just ended
+ motionEvent = MotionEvent.ACTION_UP;
+ }else{
+ motionEvent = MotionEvent.ACTION_POINTER_UP;
+ }
+ break;
+ case CANCEL:
+ //Assuming this cancels the entire event
+ motionEvent = MotionEvent.ACTION_CANCEL;
+ pointerStatuses.clear();
+ break;
+ default:
+ break;
}
+ return motionEvent;
+ }
- return MotionEvent.obtain(downTime, eventTime, eventAction, x, y, 0);
+ private void setPointerStatuses(int motionEvent, MotionEvent.PointerProperties[] pointerProperties){
+
+ for(int i = 0; i < pointerProperties.length; i ++){
+ MotionEvent.PointerProperties properties = pointerProperties[i];
+ if(properties != null){
+ if(motionEvent == MotionEvent.ACTION_UP || motionEvent == MotionEvent.ACTION_POINTER_UP){
+ pointerStatuses.delete(properties.id);
+ }else if(motionEvent == MotionEvent.ACTION_DOWN && properties.id == 0){
+ pointerStatuses.put(properties.id, MotionEvent.ACTION_DOWN);
+ }else{
+ pointerStatuses.put(properties.id, motionEvent);
+ }
+
+ }
+ }
}
}
} // end-class
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBuilder.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBuilder.java
index 9be791482..42e2fbbc2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBuilder.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBuilder.java
@@ -60,8 +60,8 @@ public class SdlProxyBuilder {
sAppResumeHash = null;
sdlSecList = null;
dayColorScheme = null;
- nightColorScheme = null;
- }
+ nightColorScheme = null;
+}
public static class Builder {
SdlProxyBuilder sdlProxyBuilder;
@@ -163,8 +163,7 @@ public class SdlProxyBuilder {
sdlProxyBuilder.sdlSecList = val;
return this;
}
-
- public Builder setDayColorScheme(TemplateColorScheme val) {
+ public Builder setDayColorScheme(TemplateColorScheme val) {
sdlProxyBuilder.dayColorScheme = val;
return this;
}
@@ -187,4 +186,7 @@ public class SdlProxyBuilder {
return proxy;
}
}
-} \ No newline at end of file
+}
+
+
+
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
index c8936edb8..9dec67b7d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -59,7 +61,7 @@ import java.util.List;
* <td>Y</td>
* <td></td>
* <td>SmartDeviceLink 1.0</td>
- * <tr/>
+ * </tr>
* <tr>
* <td>vrCommands</td>
* <td>String</td>
@@ -111,6 +113,14 @@ public class AddCommand extends RPCRequest {
super(hash);
}
/**
+ * Constructs a new AddCommand object
+ * @param cmdID an integer object representing a Command ID <p><b>Notes:</b> Min Value: 0; Max Value: 2000000000</p>
+ */
+ public AddCommand(@NonNull Integer cmdID) {
+ this();
+ setCmdID(cmdID);
+ }
+ /**
* <p>
* Returns an <i>Integer</i> object representing the Command ID that you want to add
* </p>
@@ -131,7 +141,7 @@ public class AddCommand extends RPCRequest {
* <p>
* <b>Notes:</b> Min Value: 0; Max Value: 2000000000</p>
*/
- public void setCmdID(Integer cmdID) {
+ public void setCmdID(@NonNull Integer cmdID) {
setParameters(KEY_CMD_ID, cmdID);
}
/**
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommandResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommandResponse.java
index da908908b..27a19a53e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommandResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddCommandResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Add Command Response is sent, when AddCommand has been called
@@ -21,5 +24,15 @@ public class AddCommandResponse extends RPCResponse {
public AddCommandResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new AddCommandResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public AddCommandResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
index 8c55bbd9a..b61a28772 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -75,17 +77,26 @@ public class AddSubMenu extends RPCRequest {
* Constructs a new AddSubMenu object indicated by the Hashtable parameter
*
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public AddSubMenu(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new AddSubMenu object
+ * @param menuID an integer object representing a Menu ID
+ * <p><b>Notes:</b> Min Value: 0; Max Value: 2000000000</p>
+ * @param menuName String which will be displayed representing this submenu item
+ */
+ public AddSubMenu(@NonNull Integer menuID, @NonNull String menuName) {
+ this();
+ setMenuID(menuID);
+ setMenuName(menuName);
+ }
+ /**
* Returns an <i>Integer</i> object representing the Menu ID that identifies
* a sub menu
- *
- *
+ *
* @return Integer -an integer representing the Menu ID that identifies a sub
* menu
*/
@@ -103,7 +114,7 @@ public class AddSubMenu extends RPCRequest {
*
* <p><b>Notes:</b> Min Value: 0; Max Value: 2000000000</p>
*/
- public void setMenuID( Integer menuID ) {
+ public void setMenuID( @NonNull Integer menuID ) {
setParameters(KEY_MENU_ID, menuID);
}
/**
@@ -152,7 +163,7 @@ public class AddSubMenu extends RPCRequest {
* @param menuName
* String which will be displayed representing this submenu item
*/
- public void setMenuName( String menuName ) {
+ public void setMenuName( @NonNull String menuName ) {
setParameters(KEY_MENU_NAME, menuName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenuResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenuResponse.java
index 6b386eef5..dff7cd091 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenuResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenuResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Add SubMenu Response is sent, when AddSubMenu has been called
@@ -20,4 +23,14 @@ public class AddSubMenuResponse extends RPCResponse {
public AddSubMenuResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new AddSubMenuResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public AddSubMenuResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java
index 1c6fb52bb..a1ef8aa88 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AirbagStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -107,49 +109,62 @@ public class AirbagStatus extends RPCStruct {
super(hash);
}
- public void setDriverAirbagDeployed(VehicleDataEventStatus driverAirbagDeployed) {
+ public AirbagStatus(@NonNull VehicleDataEventStatus driverAirbagDeployed, @NonNull VehicleDataEventStatus driverSideAirbagDeployed, @NonNull VehicleDataEventStatus driverCurtainAirbagDeployed, @NonNull VehicleDataEventStatus driverKneeAirbagDeployed,
+ @NonNull VehicleDataEventStatus passengerCurtainAirbagDeployed, @NonNull VehicleDataEventStatus passengerAirbagDeployed, @NonNull VehicleDataEventStatus passengerSideAirbagDeployed, @NonNull VehicleDataEventStatus passengerKneeAirbagDeployed) {
+ this();
+ setDriverAirbagDeployed(driverAirbagDeployed);
+ setDriverSideAirbagDeployed(driverSideAirbagDeployed);
+ setDriverCurtainAirbagDeployed(driverCurtainAirbagDeployed);
+ setDriverKneeAirbagDeployed(driverKneeAirbagDeployed);
+ setPassengerAirbagDeployed(passengerAirbagDeployed);
+ setPassengerSideAirbagDeployed(passengerSideAirbagDeployed);
+ setPassengerCurtainAirbagDeployed(passengerCurtainAirbagDeployed);
+ setPassengerKneeAirbagDeployed(passengerKneeAirbagDeployed);
+ }
+
+ public void setDriverAirbagDeployed(@NonNull VehicleDataEventStatus driverAirbagDeployed) {
setValue(KEY_DRIVER_AIRBAG_DEPLOYED, driverAirbagDeployed);
}
public VehicleDataEventStatus getDriverAirbagDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_AIRBAG_DEPLOYED);
}
- public void setDriverSideAirbagDeployed(VehicleDataEventStatus driverSideAirbagDeployed) {
+ public void setDriverSideAirbagDeployed(@NonNull VehicleDataEventStatus driverSideAirbagDeployed) {
setValue(KEY_DRIVER_SIDE_AIRBAG_DEPLOYED, driverSideAirbagDeployed);
}
public VehicleDataEventStatus getDriverSideAirbagDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_SIDE_AIRBAG_DEPLOYED);
}
- public void setDriverCurtainAirbagDeployed(VehicleDataEventStatus driverCurtainAirbagDeployed) {
+ public void setDriverCurtainAirbagDeployed(@NonNull VehicleDataEventStatus driverCurtainAirbagDeployed) {
setValue(KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED, driverCurtainAirbagDeployed);
}
public VehicleDataEventStatus getDriverCurtainAirbagDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_CURTAIN_AIRBAG_DEPLOYED);
}
- public void setPassengerAirbagDeployed(VehicleDataEventStatus passengerAirbagDeployed) {
+ public void setPassengerAirbagDeployed(@NonNull VehicleDataEventStatus passengerAirbagDeployed) {
setValue(KEY_PASSENGER_AIRBAG_DEPLOYED, passengerAirbagDeployed);
}
public VehicleDataEventStatus getPassengerAirbagDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_AIRBAG_DEPLOYED);
}
- public void setPassengerCurtainAirbagDeployed(VehicleDataEventStatus passengerCurtainAirbagDeployed) {
+ public void setPassengerCurtainAirbagDeployed(@NonNull VehicleDataEventStatus passengerCurtainAirbagDeployed) {
setValue(KEY_PASSENGER_CURTAIN_AIRBAG_DEPLOYED, passengerCurtainAirbagDeployed);
}
public VehicleDataEventStatus getPassengerCurtainAirbagDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_CURTAIN_AIRBAG_DEPLOYED);
}
- public void setDriverKneeAirbagDeployed(VehicleDataEventStatus driverKneeAirbagDeployed) {
+ public void setDriverKneeAirbagDeployed(@NonNull VehicleDataEventStatus driverKneeAirbagDeployed) {
setValue(KEY_DRIVER_KNEE_AIRBAG_DEPLOYED, driverKneeAirbagDeployed);
}
public VehicleDataEventStatus getDriverKneeAirbagDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_KNEE_AIRBAG_DEPLOYED);
}
- public void setPassengerSideAirbagDeployed(VehicleDataEventStatus passengerSideAirbagDeployed) {
+ public void setPassengerSideAirbagDeployed(@NonNull VehicleDataEventStatus passengerSideAirbagDeployed) {
setValue(KEY_PASSENGER_SIDE_AIRBAG_DEPLOYED, passengerSideAirbagDeployed);
}
public VehicleDataEventStatus getPassengerSideAirbagDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_SIDE_AIRBAG_DEPLOYED);
}
- public void setPassengerKneeAirbagDeployed(VehicleDataEventStatus passengerKneeAirbagDeployed) {
+ public void setPassengerKneeAirbagDeployed(@NonNull VehicleDataEventStatus passengerKneeAirbagDeployed) {
setValue(KEY_PASSENGER_KNEE_AIRBAG_DEPLOYED, passengerKneeAirbagDeployed);
}
public VehicleDataEventStatus getPassengerKneeAirbagDeployed() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuverResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuverResponse.java
index 6ed8ca1a4..f1a71bd66 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuverResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertManeuverResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Alert Maneuver Response is sent, when AlertManeuver has been called
@@ -31,5 +34,14 @@ public class AlertManeuverResponse extends RPCResponse{
public AlertManeuverResponse(Hashtable<String, Object> hash) {
super(hash);
}
-
+ /**
+ * Constructs a new AlertManeuverResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public AlertManeuverResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java
index 0ecf2579a..c95be6e37 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AlertResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -31,6 +34,16 @@ public class AlertResponse extends RPCResponse {
public AlertResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new AlertResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public AlertResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
public Integer getTryAgainTime() {
return getInteger(KEY_TRY_AGAIN_TIME);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java
index 61de1d1f5..7252eeb83 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/AudioPassThruCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.AudioType;
import com.smartdevicelink.proxy.rpc.enums.BitsPerSample;
@@ -65,12 +67,24 @@ public class AudioPassThruCapabilities extends RPCStruct {
public AudioPassThruCapabilities(Hashtable<String, Object> hash) {
super(hash);
}
-
+ /**
+ * Constructs a newly allocated AudioPassThruCapabilities object
+ * @param samplingRate the sampling rate for AudioPassThru
+ * @param bitsPerSample the sample depth in bit for AudioPassThru
+ * @param audioType the audiotype for AudioPassThru
+ */
+ public AudioPassThruCapabilities(@NonNull SamplingRate samplingRate, @NonNull BitsPerSample bitsPerSample, @NonNull AudioType audioType) {
+ this();
+ setSamplingRate(samplingRate);
+ setBitsPerSample(bitsPerSample);
+ setAudioType(audioType);
+ }
+
/**
* set the sampling rate for AudioPassThru
* @param samplingRate the sampling rate for AudioPassThru
*/
- public void setSamplingRate(SamplingRate samplingRate) {
+ public void setSamplingRate(@NonNull SamplingRate samplingRate) {
setValue(KEY_SAMPLING_RATE, samplingRate);
}
@@ -86,7 +100,7 @@ public class AudioPassThruCapabilities extends RPCStruct {
* set the sample depth in bit for AudioPassThru
* @param bitsPerSample the sample depth in bit for AudioPassThru
*/
- public void setBitsPerSample(BitsPerSample bitsPerSample) {
+ public void setBitsPerSample(@NonNull BitsPerSample bitsPerSample) {
setValue(KEY_BITS_PER_SAMPLE, bitsPerSample);
}
@@ -102,7 +116,7 @@ public class AudioPassThruCapabilities extends RPCStruct {
* set the audiotype for AudioPassThru
* @param audioType the audiotype for AudioPassThru
*/
- public void setAudioType(AudioType audioType) {
+ public void setAudioType(@NonNull AudioType audioType) {
setValue(KEY_AUDIO_TYPE, audioType);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java
index 598cf3adf..440343354 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BeltStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -128,6 +130,7 @@ public class BeltStatus extends RPCStruct {
public static final String KEY_MIDDLE_ROW_2_BUCKLE_BELTED = "middleRow2BuckleBelted";
public static final String KEY_MIDDLE_ROW_3_BUCKLE_BELTED = "middleRow3BuckleBelted";
public static final String KEY_LEFT_ROW_3_BUCKLE_BELTED = "leftRow3BuckleBelted";
+
public static final String KEY_RIGHT_ROW_3_BUCKLE_BELTED = "rightRow3BuckleBelted";
public static final String KEY_REAR_INFLATABLE_BELTED = "rearInflatableBelted";
public static final String KEY_RIGHT_REAR_INFLATABLE_BELTED = "rightRearInflatableBelted";
@@ -146,19 +149,43 @@ public class BeltStatus extends RPCStruct {
super(hash);
}
- public void setDriverBeltDeployed(VehicleDataEventStatus driverBeltDeployed) {
+ public BeltStatus(@NonNull VehicleDataEventStatus driverBeltDeployed, @NonNull VehicleDataEventStatus passengerBeltDeployed, @NonNull VehicleDataEventStatus passengerBuckleBelted,
+ @NonNull VehicleDataEventStatus driverBuckleBelted, @NonNull VehicleDataEventStatus leftRow2BuckleBelted, @NonNull VehicleDataEventStatus passengerChildDetected,
+ @NonNull VehicleDataEventStatus rightRow2BuckleBelted, @NonNull VehicleDataEventStatus middleRow2BuckleBelted, @NonNull VehicleDataEventStatus middleRow3BuckleBelted,
+ @NonNull VehicleDataEventStatus leftRow3BuckleBelted, @NonNull VehicleDataEventStatus rightRow3BuckleBelted, @NonNull VehicleDataEventStatus leftRearInflatableBelted,
+ @NonNull VehicleDataEventStatus rightRearInflatableBelted, @NonNull VehicleDataEventStatus middleRow1BeltDeployed, @NonNull VehicleDataEventStatus middleRow1BuckleBelted
+ ) {
+ this();
+ setDriverBeltDeployed(driverBeltDeployed);
+ setPassengerBeltDeployed(passengerBeltDeployed);
+ setPassengerBuckleBelted(passengerBuckleBelted);
+ setDriverBuckleBelted(driverBuckleBelted);
+ setLeftRow2BuckleBelted(leftRow2BuckleBelted);
+ setPassengerChildDetected(passengerChildDetected);
+ setRightRow2BuckleBelted(rightRow2BuckleBelted);
+ setMiddleRow2BuckleBelted(middleRow2BuckleBelted);
+ setMiddleRow3BuckleBelted(middleRow3BuckleBelted);
+ setLeftRow3BuckleBelted(leftRow3BuckleBelted);
+ setRightRow3BuckleBelted(rightRow3BuckleBelted);
+ setLeftRearInflatableBelted(leftRearInflatableBelted);
+ setRightRearInflatableBelted(rightRearInflatableBelted);
+ setMiddleRow1BeltDeployed(middleRow1BeltDeployed);
+ setMiddleRow1BuckleBelted(middleRow1BuckleBelted);
+ }
+
+ public void setDriverBeltDeployed(@NonNull VehicleDataEventStatus driverBeltDeployed) {
setValue(KEY_DRIVER_BELT_DEPLOYED, driverBeltDeployed);
}
public VehicleDataEventStatus getDriverBeltDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_DRIVER_BELT_DEPLOYED);
}
- public void setPassengerBeltDeployed(VehicleDataEventStatus passengerBeltDeployed) {
+ public void setPassengerBeltDeployed(@NonNull VehicleDataEventStatus passengerBeltDeployed) {
setValue(KEY_PASSENGER_BELT_DEPLOYED, passengerBeltDeployed);
}
public VehicleDataEventStatus getPassengerBeltDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_BELT_DEPLOYED);
}
- public void setPassengerBuckleBelted(VehicleDataEventStatus passengerBuckleBelted) {
+ public void setPassengerBuckleBelted(@NonNull VehicleDataEventStatus passengerBuckleBelted) {
setValue(KEY_PASSENGER_BUCKLE_BELTED, passengerBuckleBelted);
}
public VehicleDataEventStatus getPassengerBuckleBelted() {
@@ -176,61 +203,61 @@ public class BeltStatus extends RPCStruct {
public VehicleDataEventStatus getLeftRow2BuckleBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_LEFT_ROW_2_BUCKLE_BELTED);
}
- public void setPassengerChildDetected(VehicleDataEventStatus passengerChildDetected) {
+ public void setPassengerChildDetected(@NonNull VehicleDataEventStatus passengerChildDetected) {
setValue(KEY_PASSENGER_CHILD_DETECTED, passengerChildDetected);
}
public VehicleDataEventStatus getPassengerChildDetected() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_PASSENGER_CHILD_DETECTED);
}
- public void setRightRow2BuckleBelted(VehicleDataEventStatus rightRow2BuckleBelted) {
+ public void setRightRow2BuckleBelted(@NonNull VehicleDataEventStatus rightRow2BuckleBelted) {
setValue(KEY_RIGHT_ROW_2_BUCKLE_BELTED, rightRow2BuckleBelted);
}
public VehicleDataEventStatus getRightRow2BuckleBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_RIGHT_ROW_2_BUCKLE_BELTED);
}
- public void setMiddleRow2BuckleBelted(VehicleDataEventStatus middleRow2BuckleBelted) {
+ public void setMiddleRow2BuckleBelted(@NonNull VehicleDataEventStatus middleRow2BuckleBelted) {
setValue(KEY_MIDDLE_ROW_2_BUCKLE_BELTED, middleRow2BuckleBelted);
}
public VehicleDataEventStatus getMiddleRow2BuckleBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MIDDLE_ROW_2_BUCKLE_BELTED);
}
- public void setMiddleRow3BuckleBelted(VehicleDataEventStatus middleRow3BuckleBelted) {
+ public void setMiddleRow3BuckleBelted(@NonNull VehicleDataEventStatus middleRow3BuckleBelted) {
setValue(KEY_MIDDLE_ROW_3_BUCKLE_BELTED, middleRow3BuckleBelted);
}
public VehicleDataEventStatus getMiddleRow3BuckleBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MIDDLE_ROW_3_BUCKLE_BELTED);
}
- public void setLeftRow3BuckleBelted(VehicleDataEventStatus leftRow3BuckleBelted) {
+ public void setLeftRow3BuckleBelted(@NonNull VehicleDataEventStatus leftRow3BuckleBelted) {
setValue(KEY_LEFT_ROW_3_BUCKLE_BELTED, leftRow3BuckleBelted);
}
public VehicleDataEventStatus getLeftRow3BuckleBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_LEFT_ROW_3_BUCKLE_BELTED);
}
- public void setRightRow3BuckleBelted(VehicleDataEventStatus rightRow3BuckleBelted) {
+ public void setRightRow3BuckleBelted(@NonNull VehicleDataEventStatus rightRow3BuckleBelted) {
setValue(KEY_RIGHT_ROW_3_BUCKLE_BELTED, rightRow3BuckleBelted);
}
public VehicleDataEventStatus getRightRow3BuckleBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_RIGHT_ROW_3_BUCKLE_BELTED);
}
- public void setLeftRearInflatableBelted(VehicleDataEventStatus rearInflatableBelted) {
+ public void setLeftRearInflatableBelted(@NonNull VehicleDataEventStatus rearInflatableBelted) {
setValue(KEY_REAR_INFLATABLE_BELTED, rearInflatableBelted);
}
public VehicleDataEventStatus getLeftRearInflatableBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_REAR_INFLATABLE_BELTED);
}
- public void setRightRearInflatableBelted(VehicleDataEventStatus rightRearInflatableBelted) {
+ public void setRightRearInflatableBelted(@NonNull VehicleDataEventStatus rightRearInflatableBelted) {
setValue(KEY_RIGHT_REAR_INFLATABLE_BELTED, rightRearInflatableBelted);
}
public VehicleDataEventStatus getRightRearInflatableBelted() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_RIGHT_REAR_INFLATABLE_BELTED);
}
- public void setMiddleRow1BeltDeployed(VehicleDataEventStatus middleRow1BeltDeployed) {
+ public void setMiddleRow1BeltDeployed(@NonNull VehicleDataEventStatus middleRow1BeltDeployed) {
setValue(KEY_MIDDLE_ROW_1_BELT_DEPLOYED, middleRow1BeltDeployed);
}
public VehicleDataEventStatus getMiddleRow1BeltDeployed() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_MIDDLE_ROW_1_BELT_DEPLOYED);
}
- public void setMiddleRow1BuckleBelted(VehicleDataEventStatus middleRow1BuckleBelted) {
+ public void setMiddleRow1BuckleBelted(@NonNull VehicleDataEventStatus middleRow1BuckleBelted) {
setValue(KEY_MIDDLE_ROW_1_BUCKLE_BELTED, middleRow1BuckleBelted);
}
public VehicleDataEventStatus getMiddleRow1BuckleBelted() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
index 4f851c383..7773aaaa7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.IgnitionStableStatus;
import com.smartdevicelink.proxy.rpc.enums.IgnitionStatus;
@@ -107,20 +109,25 @@ public class BodyInformation extends RPCStruct {
public BodyInformation(Hashtable<String, Object> hash) {
super(hash);
}
-
- public void setParkBrakeActive(Boolean parkBrakeActive) {
+ public BodyInformation(@NonNull Boolean parkBrakeActive, @NonNull IgnitionStableStatus ignitionStableStatus, @NonNull IgnitionStatus ignitionStatus) {
+ this();
+ setParkBrakeActive(parkBrakeActive);
+ setIgnitionStableStatus(ignitionStableStatus);
+ setIgnitionStatus(ignitionStatus);
+ }
+ public void setParkBrakeActive(@NonNull Boolean parkBrakeActive) {
setValue(KEY_PARK_BRAKE_ACTIVE, parkBrakeActive);
}
public Boolean getParkBrakeActive() {
return getBoolean(KEY_PARK_BRAKE_ACTIVE);
}
- public void setIgnitionStableStatus(IgnitionStableStatus ignitionStableStatus) {
+ public void setIgnitionStableStatus(@NonNull IgnitionStableStatus ignitionStableStatus) {
setValue(KEY_IGNITION_STABLE_STATUS, ignitionStableStatus);
}
public IgnitionStableStatus getIgnitionStableStatus() {
return (IgnitionStableStatus) getObject(IgnitionStableStatus.class, KEY_IGNITION_STABLE_STATUS);
}
- public void setIgnitionStatus(IgnitionStatus ignitionStatus) {
+ public void setIgnitionStatus(@NonNull IgnitionStatus ignitionStatus) {
setValue(KEY_IGNITION_STATUS, ignitionStatus);
}
public IgnitionStatus getIgnitionStatus() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java
index 5c0ebd779..b79685d12 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -76,6 +78,20 @@ public class ButtonCapabilities extends RPCStruct {
super(hash);
}
/**
+ * Constructs a newly allocated ButtonCapabilities object
+ * @param name the name of button
+ * @param shortPressAvailable True if support otherwise False.
+ * @param longPressAvailable True if support otherwise False.
+ * @param upDownAvailable True if support otherwise False.
+ */
+ public ButtonCapabilities(@NonNull ButtonName name, @NonNull Boolean shortPressAvailable, @NonNull Boolean longPressAvailable, @NonNull Boolean upDownAvailable) {
+ this();
+ setName(name);
+ setShortPressAvailable(shortPressAvailable);
+ setLongPressAvailable(longPressAvailable);
+ setUpDownAvailable(upDownAvailable);
+ }
+ /**
* Get the name of theSDL HMI button.
* @return ButtonName the name of the Button
*/
@@ -86,7 +102,7 @@ public class ButtonCapabilities extends RPCStruct {
* Set the name of theSDL HMI button.
* @param name the name of button
*/
- public void setName( ButtonName name ) {
+ public void setName( @NonNull ButtonName name ) {
setValue(KEY_NAME, name);
}
/**
@@ -100,7 +116,7 @@ public class ButtonCapabilities extends RPCStruct {
* Set the button supports a SHORT press. See <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonPressMode}</i> for more information.
* @param shortPressAvailable True if support otherwise False.
*/
- public void setShortPressAvailable( Boolean shortPressAvailable ) {
+ public void setShortPressAvailable( @NonNull Boolean shortPressAvailable ) {
setValue(KEY_SHORT_PRESS_AVAILABLE, shortPressAvailable);
}
/**
@@ -114,7 +130,7 @@ public class ButtonCapabilities extends RPCStruct {
* Set the button supports a LONG press. See <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonPressMode}</i> for more information.
* @param longPressAvailable True if support otherwise False.
*/
- public void setLongPressAvailable( Boolean longPressAvailable ) {
+ public void setLongPressAvailable( @NonNull Boolean longPressAvailable ) {
setValue(KEY_LONG_PRESS_AVAILABLE, longPressAvailable);
}
/**
@@ -128,7 +144,7 @@ public class ButtonCapabilities extends RPCStruct {
* Set the button supports "button down" and "button up". When the button is depressed, the <i>{@linkplain OnButtonEvent}</i> notification will be invoked with a value of BUTTONDOWN.
* @param upDownAvailable True if support otherwise False.
*/
- public void setUpDownAvailable( Boolean upDownAvailable ) {
+ public void setUpDownAvailable( @NonNull Boolean upDownAvailable ) {
setValue(KEY_UP_DOWN_AVAILABLE, upDownAvailable);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPress.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPress.java
index d0162e7ac..94fb75083 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPress.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPress.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
@@ -27,15 +29,26 @@ public class ButtonPress extends RPCRequest {
* <p>Constructs a new ButtonPress object indicated by the
* Hashtable parameter</p>
*
- *
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public ButtonPress(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new ButtonPress object
+ * @param moduleType Represents module where the button should be pressed
+ * @param buttonName Represents name of supported RC climate or radio button
+ * @param buttonPressMode Indicates whether this is a LONG or SHORT button press event.
+ */
+ public ButtonPress(@NonNull ModuleType moduleType, @NonNull ButtonName buttonName, @NonNull ButtonPressMode buttonPressMode) {
+ this();
+ setModuleType(moduleType);
+ setButtonName(buttonName);
+ setButtonPressMode(buttonPressMode);
+ }
+
+ /**
* Gets the ModuleType
*
* @return ModuleType - The module where the button should be pressed
@@ -50,7 +63,7 @@ public class ButtonPress extends RPCRequest {
* @param moduleType
* Represents module where the button should be pressed
*/
- public void setModuleType(ModuleType moduleType) {
+ public void setModuleType(@NonNull ModuleType moduleType) {
setParameters(KEY_MODULE_TYPE, moduleType);
}
@@ -69,7 +82,7 @@ public class ButtonPress extends RPCRequest {
* @param buttonName
* Represents name of supported RC climate or radio button
*/
- public void setButtonName(ButtonName buttonName) {
+ public void setButtonName(@NonNull ButtonName buttonName) {
setParameters(KEY_BUTTON_NAME, buttonName);
}
@@ -88,7 +101,7 @@ public class ButtonPress extends RPCRequest {
* @param buttonPressMode
* Indicates whether this is a LONG or SHORT button press event.
*/
- public void setButtonPressMode(ButtonPressMode buttonPressMode) {
+ public void setButtonPressMode(@NonNull ButtonPressMode buttonPressMode) {
setParameters(KEY_BUTTON_PRESS_MODE, buttonPressMode);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPressResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPressResponse.java
index 94ccd61a6..f2644160e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPressResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ButtonPressResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -25,4 +28,14 @@ public class ButtonPressResponse extends RPCResponse {
public ButtonPressResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new ButtonPressResponse object
+ * @param resultCode whether the request is successfully processed
+ * @param success whether the request is successfully processed
+ */
+ public ButtonPressResponse(@NonNull Result resultCode, @NonNull Boolean success) {
+ this();
+ setResultCode(resultCode);
+ setSuccess(success);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java
index c481e36c6..f2981412f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistration.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.Language;
@@ -124,13 +126,24 @@ public class ChangeRegistration extends RPCRequest {
super(hash);
}
+ /**
+ * Constructs a new ChangeRegistration object
+ * @param language a language value
+ * @param hmiDisplayLanguage a Language value
+ */
+ public ChangeRegistration(@NonNull Language language, @NonNull Language hmiDisplayLanguage) {
+ this();
+ setLanguage(language);
+ setHmiDisplayLanguage(hmiDisplayLanguage);
+ }
+
/**
* Sets language
*
* @param language
* a language value
*/
- public void setLanguage(Language language) {
+ public void setLanguage(@NonNull Language language) {
setParameters(KEY_LANGUAGE, language);
}
@@ -149,7 +162,7 @@ public class ChangeRegistration extends RPCRequest {
* @param hmiDisplayLanguage
* a Language value
*/
- public void setHmiDisplayLanguage(Language hmiDisplayLanguage) {
+ public void setHmiDisplayLanguage(@NonNull Language hmiDisplayLanguage) {
setParameters(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistrationResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistrationResponse.java
index e5404cad3..4c1b0209b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistrationResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ChangeRegistrationResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Change Registration Response is sent, when ChangeRegistration has been called
@@ -30,4 +33,15 @@ public class ChangeRegistrationResponse extends RPCResponse {
public ChangeRegistrationResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new ChangeRegistrationResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public ChangeRegistrationResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java
index 886a88d23..989ac2997 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Choice.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -74,9 +76,21 @@ public class Choice extends RPCStruct {
super(hash);
}
/**
+ * Constructs a newly allocated Choice object
+ * @param choiceID Min: 0 Max: 65535
+ * @param menuName the menu name
+ * @param vrCommands the List of vrCommands
+ */
+ public Choice(@NonNull Integer choiceID, @NonNull String menuName, @NonNull List<String> vrCommands) {
+ this();
+ setChoiceID(choiceID);
+ setMenuName(menuName);
+ setVrCommands(vrCommands);
+ }
+ /**
* Get the application-scoped identifier that uniquely identifies this choice.
* @return choiceID Min: 0; Max: 65535
- */
+ */
public Integer getChoiceID() {
return getInteger(KEY_CHOICE_ID);
}
@@ -84,7 +98,7 @@ public class Choice extends RPCStruct {
* Set the application-scoped identifier that uniquely identifies this choice.
* @param choiceID Min: 0 Max: 65535
*/
- public void setChoiceID(Integer choiceID) {
+ public void setChoiceID(@NonNull Integer choiceID) {
setValue(KEY_CHOICE_ID, choiceID);
}
/**
@@ -102,7 +116,7 @@ public class Choice extends RPCStruct {
* Max: 100
* @param menuName the menu name
*/
- public void setMenuName(String menuName) {
+ public void setMenuName(@NonNull String menuName) {
setValue(KEY_MENU_NAME, menuName);
}
/**
@@ -119,7 +133,7 @@ public class Choice extends RPCStruct {
* @param vrCommands the List of vrCommands
* @since SmartDeviceLink 2.0
*/
- public void setVrCommands(List<String> vrCommands) {
+ public void setVrCommands(@NonNull List<String> vrCommands) {
setValue(KEY_VR_COMMANDS, vrCommands);
}
/**
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClimateControlCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClimateControlCapabilities.java
index ac9c3fc1c..61a967585 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClimateControlCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClimateControlCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.DefrostZone;
import com.smartdevicelink.proxy.rpc.enums.VentilationMode;
@@ -32,13 +34,21 @@ public class ClimateControlCapabilities extends RPCStruct{
}
/**
+ * Constructs a newly allocated ClimateControlCapabilities
+ *
+ * @param moduleName The short friendly name of the climate control module. It should not be used to identify a module by mobile application.
+ */
+ public ClimateControlCapabilities(@NonNull String moduleName) {
+ this();
+ setModuleName(moduleName);
+ }
+
+ /**
* Sets the moduleName portion of the ClimateControlCapabilities class
*
- * @param moduleName
- * The short friendly name of the climate control module.
- * It should not be used to identify a module by mobile application.
+ * @param moduleName The short friendly name of the climate control module. It should not be used to identify a module by mobile application.
*/
- public void setModuleName(String moduleName) {
+ public void setModuleName(@NonNull String moduleName) {
setValue(KEY_MODULE_NAME, moduleName);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java
index c58f70b50..3f663ca35 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ClusterModeStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -70,26 +72,33 @@ public class ClusterModeStatus extends RPCStruct {
public ClusterModeStatus(Hashtable<String, Object> hash) {
super(hash);
}
+ public ClusterModeStatus(@NonNull Boolean powerModeActive, @NonNull PowerModeQualificationStatus powerModeQualificationStatus, @NonNull CarModeStatus carModeStatus, @NonNull PowerModeStatus powerModeStatus) {
+ this();
+ setPowerModeActive(powerModeActive);
+ setPowerModeQualificationStatus(powerModeQualificationStatus);
+ setCarModeStatus(carModeStatus);
+ setPowerModeStatus(powerModeStatus);
+ }
- public void setPowerModeActive(Boolean powerModeActive) {
+ public void setPowerModeActive(@NonNull Boolean powerModeActive) {
setValue(KEY_POWER_MODE_ACTIVE, powerModeActive);
}
public Boolean getPowerModeActive() {
return getBoolean(KEY_POWER_MODE_ACTIVE);
}
- public void setPowerModeQualificationStatus(PowerModeQualificationStatus powerModeQualificationStatus) {
+ public void setPowerModeQualificationStatus(@NonNull PowerModeQualificationStatus powerModeQualificationStatus) {
setValue(KEY_POWER_MODE_QUALIFICATION_STATUS, powerModeQualificationStatus);
}
public PowerModeQualificationStatus getPowerModeQualificationStatus() {
return (PowerModeQualificationStatus) getObject(PowerModeQualificationStatus.class, KEY_POWER_MODE_QUALIFICATION_STATUS);
}
- public void setCarModeStatus(CarModeStatus carModeStatus) {
+ public void setCarModeStatus(@NonNull CarModeStatus carModeStatus) {
setValue(KEY_CAR_MODE_STATUS, carModeStatus);
}
public CarModeStatus getCarModeStatus() {
return (CarModeStatus) getObject(CarModeStatus.class, KEY_CAR_MODE_STATUS);
}
- public void setPowerModeStatus(PowerModeStatus powerModeStatus) {
+ public void setPowerModeStatus(@NonNull PowerModeStatus powerModeStatus) {
setValue(KEY_POWER_MODE_STATUS, powerModeStatus);
}
public PowerModeStatus getPowerModeStatus() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java
index 433f9540b..f886ff52a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Coordinate.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.util.SdlDataTypeConverter;
@@ -16,12 +18,18 @@ public class Coordinate extends RPCStruct{
super(hash);
}
+ public Coordinate(@NonNull Float latitudeDegrees, @NonNull Float longitudeDegrees) {
+ this();
+ setLatitudeDegrees(latitudeDegrees);
+ setLongitudeDegrees(longitudeDegrees);
+ }
+
public Float getLatitudeDegrees() {
Object value = getValue(KEY_LATITUDE_DEGREES);
return SdlDataTypeConverter.objectToFloat(value);
}
- public void setLatitudeDegrees(Float latitudeDegrees) {
+ public void setLatitudeDegrees(@NonNull Float latitudeDegrees) {
setValue(KEY_LATITUDE_DEGREES, latitudeDegrees);
}
@@ -30,7 +38,7 @@ public class Coordinate extends RPCStruct{
return SdlDataTypeConverter.objectToFloat(value);
}
- public void setLongitudeDegrees(Float longitudeDegrees) {
+ public void setLongitudeDegrees(@NonNull Float longitudeDegrees) {
setValue(KEY_LONGITUDE_DEGREES, longitudeDegrees);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java
index dc813d048..07f17d1e6 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSet.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -94,6 +96,18 @@ public class CreateInteractionChoiceSet extends RPCRequest {
super(hash);
}
/**
+ * Constructs a new CreateInteractionChoiceSet object
+ * @param interactionChoiceSetID: an Integer value representing the Choice Set ID
+ * <b>Notes: </b>Min Value: 0; Max Value: 2000000000
+ * @param choiceSet: a List<Choice> representing the array of one or more elements
+ * <b>Notes: </b>Min Value: 1; Max Value: 100
+ */
+ public CreateInteractionChoiceSet(@NonNull Integer interactionChoiceSetID, @NonNull List<Choice> choiceSet) {
+ this();
+ setInteractionChoiceSetID(interactionChoiceSetID);
+ setChoiceSet(choiceSet);
+ }
+ /**
* Gets the Choice Set unique ID
*
* @return Integer -an Integer representing the Choice Set ID
@@ -109,7 +123,7 @@ public class CreateInteractionChoiceSet extends RPCRequest {
*
* <b>Notes: </b>Min Value: 0; Max Value: 2000000000
*/
- public void setInteractionChoiceSetID( Integer interactionChoiceSetID ) {
+ public void setInteractionChoiceSetID( @NonNull Integer interactionChoiceSetID ) {
setParameters(KEY_INTERACTION_CHOICE_SET_ID, interactionChoiceSetID);
}
/**
@@ -131,7 +145,7 @@ public class CreateInteractionChoiceSet extends RPCRequest {
*
* <b>Notes: </b>Min Value: 1; Max Value: 100
*/
- public void setChoiceSet( List<Choice> choiceSet ) {
+ public void setChoiceSet( @NonNull List<Choice> choiceSet ) {
setParameters(KEY_CHOICE_SET, choiceSet);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSetResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSetResponse.java
index 36adc2857..db368bb61 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSetResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/CreateInteractionChoiceSetResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Create Interaction ChoiceSet Response is sent, when CreateInteractionChoiceSet
@@ -22,4 +25,15 @@ public class CreateInteractionChoiceSetResponse extends RPCResponse {
public CreateInteractionChoiceSetResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new CreateInteractionChoiceSetResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public CreateInteractionChoiceSetResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java
index cd9d24c78..b739e8789 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DIDResult.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -58,13 +60,18 @@ public class DIDResult extends RPCStruct {
public DIDResult(Hashtable<String, Object> hash) {
super(hash);
}
- public void setResultCode(VehicleDataResultCode resultCode) {
+ public DIDResult(@NonNull VehicleDataResultCode resultCode, @NonNull Integer didLocation) {
+ this();
+ setResultCode(resultCode);
+ setDidLocation(didLocation);
+ }
+ public void setResultCode(@NonNull VehicleDataResultCode resultCode) {
setValue(KEY_RESULT_CODE, resultCode);
}
public VehicleDataResultCode getResultCode() {
return (VehicleDataResultCode) getObject(VehicleDataResultCode.class, KEY_RESULT_CODE);
}
- public void setDidLocation(Integer didLocation) {
+ public void setDidLocation(@NonNull Integer didLocation) {
setValue(KEY_DID_LOCATION, didLocation);
}
public Integer getDidLocation() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java
index 5c5820fbd..b08fa56c3 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommand.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -73,6 +75,14 @@ public class DeleteCommand extends RPCRequest {
super(hash);
}
/**
+ * Constructs a new DeleteCommand object
+ * @param cmdID: an Integer value representing Command ID
+ */
+ public DeleteCommand(@NonNull Integer cmdID) {
+ this();
+ setCmdID(cmdID);
+ }
+ /**
* Gets the Command ID that identifies the Command to be deleted from
* Command Menu
*
@@ -90,7 +100,7 @@ public class DeleteCommand extends RPCRequest {
*
* <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000</p>
*/
- public void setCmdID( Integer cmdID ) {
+ public void setCmdID( @NonNull Integer cmdID ) {
setParameters(KEY_CMD_ID, cmdID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommandResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommandResponse.java
index ad905b1e0..c6b5c994c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommandResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteCommandResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Delete Command Response is sent, when DeleteCommand has been called.
@@ -21,4 +24,14 @@ public class DeleteCommandResponse extends RPCResponse {
public DeleteCommandResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new DeleteCommandResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public DeleteCommandResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java
index 7be0e7859..c9a0e76c7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFile.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -55,22 +57,28 @@ public class DeleteFile extends RPCRequest {
/**
* <p>Constructs a new DeleteFile object indicated by the Hashtable parameter</p>
- *
- *
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public DeleteFile(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new DeleteFile object
+ * @param sdlFileName a String value representing a file reference name
+ */
+ public DeleteFile(@NonNull String sdlFileName) {
+ this();
+ setSdlFileName(sdlFileName);
+ }
+
+ /**
* Sets a file reference name
*
* @param sdlFileName
* a String value representing a file reference name
*/
- public void setSdlFileName(String sdlFileName) {
+ public void setSdlFileName(@NonNull String sdlFileName) {
setParameters(KEY_SDL_FILE_NAME, sdlFileName);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java
index 499b5e518..347cd0490 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteFileResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -22,10 +25,23 @@ public class DeleteFileResponse extends RPCResponse {
public DeleteFileResponse(Hashtable<String, Object> hash) {
super(hash);
}
- public void setSpaceAvailable(Integer spaceAvailable) {
+ /**
+ * Constructs a new DeleteFileResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ * @param spaceAvailable the total local space available on the module for the registered app.
+ */
+ public DeleteFileResponse(@NonNull Boolean success, @NonNull Result resultCode, @NonNull Integer spaceAvailable) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ setSpaceAvailable(spaceAvailable);
+ }
+ public void setSpaceAvailable(@NonNull Integer spaceAvailable) {
setParameters(KEY_SPACE_AVAILABLE, spaceAvailable);
}
public Integer getSpaceAvailable() {
return getInteger(KEY_SPACE_AVAILABLE);
}
+
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java
index 41e884bce..741675419 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSet.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -79,6 +81,15 @@ public class DeleteInteractionChoiceSet extends RPCRequest {
super(hash);
}
/**
+ * Constructs a new DeleteInteractionChoiceSet object
+ * @param interactionChoiceSetID a unique ID that identifies the Choice Set
+ * <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000 </p>
+ */
+ public DeleteInteractionChoiceSet(@NonNull Integer interactionChoiceSetID) {
+ this();
+ setInteractionChoiceSetID(interactionChoiceSetID);
+ }
+ /**
* Gets a unique ID that identifies the Choice Set
* @return Integer -an Integer value representing the unique Choice Set ID
*/
@@ -90,7 +101,7 @@ public class DeleteInteractionChoiceSet extends RPCRequest {
* @param interactionChoiceSetID a unique ID that identifies the Choice Set
* <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000 </p>
*/
- public void setInteractionChoiceSetID( Integer interactionChoiceSetID ) {
+ public void setInteractionChoiceSetID( @NonNull Integer interactionChoiceSetID ) {
setParameters(KEY_INTERACTION_CHOICE_SET_ID, interactionChoiceSetID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSetResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSetResponse.java
index 5f29ed567..d122975a0 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSetResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteInteractionChoiceSetResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Delete Interaction ChoiceSet Response is sent, when DeleteInteractionChoiceSet has been called
@@ -18,4 +21,14 @@ public class DeleteInteractionChoiceSetResponse extends RPCResponse {
public DeleteInteractionChoiceSetResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new DeleteInteractionChoiceSetResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public DeleteInteractionChoiceSetResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java
index db3524aa1..97c4042e3 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenu.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -68,6 +70,16 @@ public class DeleteSubMenu extends RPCRequest {
super(hash);
}
/**
+ * Constructs a new DeleteSubMenu object
+ * @param menuID an Integer value representing menuID that identifies the SubMenu to be delete
+ *
+ * <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000</p>
+ */
+ public DeleteSubMenu(@NonNull Integer menuID) {
+ this();
+ setMenuID(menuID);
+ }
+ /**
* Gets the Menu ID that identifies the SubMenu to be delete
* @return Integer -an Integer value representing menuID that identifies the SubMenu to be delete
*/
@@ -80,7 +92,7 @@ public class DeleteSubMenu extends RPCRequest {
*
* <p><b>Notes: </b>Min Value: 0; Max Value: 2000000000</p>
*/
- public void setMenuID( Integer menuID ) {
+ public void setMenuID( @NonNull Integer menuID ) {
setParameters(KEY_MENU_ID, menuID);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenuResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenuResponse.java
index 3e2c36dd4..d13c850df 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenuResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeleteSubMenuResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Delete SubMenu Response is sent, when DeleteSubMenu has been called
@@ -21,4 +24,14 @@ public class DeleteSubMenuResponse extends RPCResponse {
public DeleteSubMenuResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new DeleteSubMenuResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public DeleteSubMenuResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java
index d90c4631f..40382b81a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DeviceStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.DeviceLevelStatus;
import com.smartdevicelink.proxy.rpc.enums.PrimaryAudioSource;
@@ -126,12 +128,42 @@ public class DeviceStatus extends RPCStruct {
public DeviceStatus(Hashtable<String, Object> hash) {
super(hash);
}
-
+
+ /**
+ * Constructs a newly allocated DeviceStatus object
+ * @param voiceRecOn
+ * @param btIconOn the bluetooth connection established
+ * @param callActive a call is being active
+ * @param phoneRoaming the phone is in roaming mode
+ * @param textMsgAvailable a textmessage is available
+ * @param battLevelStatus battery level status
+ * @param stereoAudioOutputMuted the status of the stereo audio output channel
+ * @param monoAudioOutputMuted the status of the mono audio output channel
+ * @param signalLevelStatus signal level status
+ * @param primaryAudioSource the current primary audio source of SDL (if selected
+ * @param eCallEventActive
+ */
+ public DeviceStatus(@NonNull Boolean voiceRecOn, @NonNull Boolean btIconOn, @NonNull Boolean callActive, @NonNull Boolean phoneRoaming, @NonNull Boolean textMsgAvailable, @NonNull DeviceLevelStatus battLevelStatus,
+ @NonNull Boolean stereoAudioOutputMuted, @NonNull Boolean monoAudioOutputMuted, @NonNull DeviceLevelStatus signalLevelStatus, @NonNull PrimaryAudioSource primaryAudioSource, @NonNull Boolean eCallEventActive) {
+ this();
+ setVoiceRecOn(voiceRecOn);
+ setBtIconOn(btIconOn);
+ setCallActive(callActive);
+ setPhoneRoaming(phoneRoaming);
+ setTextMsgAvailable(textMsgAvailable);
+ setBattLevelStatus(battLevelStatus);
+ setStereoAudioOutputMuted(stereoAudioOutputMuted);
+ setMonoAudioOutputMuted(monoAudioOutputMuted);
+ setSignalLevelStatus(signalLevelStatus);
+ setPrimaryAudioSource(primaryAudioSource);
+ setECallEventActive(eCallEventActive);
+ }
+
/**
* set the voice recognition on or off
* @param voiceRecOn
*/
- public void setVoiceRecOn(Boolean voiceRecOn) {
+ public void setVoiceRecOn(@NonNull Boolean voiceRecOn) {
setValue(KEY_VOICE_REC_ON, voiceRecOn);
}
@@ -147,7 +179,7 @@ public class DeviceStatus extends RPCStruct {
* set the bluetooth connection established
* @param btIconOn the bluetooth connection established
*/
- public void setBtIconOn(Boolean btIconOn) {
+ public void setBtIconOn(@NonNull Boolean btIconOn) {
setValue(KEY_BT_ICON_ON, btIconOn);
}
@@ -163,7 +195,7 @@ public class DeviceStatus extends RPCStruct {
* set a call is being active
* @param callActive a call is being active
*/
- public void setCallActive(Boolean callActive) {
+ public void setCallActive(@NonNull Boolean callActive) {
setValue(KEY_CALL_ACTIVE, callActive);
}
@@ -179,7 +211,7 @@ public class DeviceStatus extends RPCStruct {
* set the phone is in roaming mode
* @param phoneRoaming the phone is in roaming mode
*/
- public void setPhoneRoaming(Boolean phoneRoaming) {
+ public void setPhoneRoaming(@NonNull Boolean phoneRoaming) {
setValue(KEY_PHONE_ROAMING, phoneRoaming);
}
@@ -190,7 +222,7 @@ public class DeviceStatus extends RPCStruct {
public Boolean getPhoneRoaming() {
return getBoolean(KEY_PHONE_ROAMING);
}
- public void setTextMsgAvailable(Boolean textMsgAvailable) {
+ public void setTextMsgAvailable(@NonNull Boolean textMsgAvailable) {
setValue(KEY_TEXT_MSG_AVAILABLE, textMsgAvailable);
}
@@ -206,7 +238,7 @@ public class DeviceStatus extends RPCStruct {
* set battery level status
* @param battLevelStatus battery level status
*/
- public void setBattLevelStatus(DeviceLevelStatus battLevelStatus) {
+ public void setBattLevelStatus(@NonNull DeviceLevelStatus battLevelStatus) {
setValue(KEY_BATT_LEVEL_STATUS, battLevelStatus);
}
@@ -222,7 +254,7 @@ public class DeviceStatus extends RPCStruct {
* set the status of the stereo audio output channel
* @param stereoAudioOutputMuted the status of the stereo audio output channel
*/
- public void setStereoAudioOutputMuted(Boolean stereoAudioOutputMuted) {
+ public void setStereoAudioOutputMuted(@NonNull Boolean stereoAudioOutputMuted) {
setValue(KEY_STEREO_AUDIO_OUTPUT_MUTED, stereoAudioOutputMuted);
}
@@ -238,7 +270,7 @@ public class DeviceStatus extends RPCStruct {
* set the status of the mono audio output channel
* @param monoAudioOutputMuted the status of the mono audio output channel
*/
- public void setMonoAudioOutputMuted(Boolean monoAudioOutputMuted) {
+ public void setMonoAudioOutputMuted(@NonNull Boolean monoAudioOutputMuted) {
setValue(KEY_MONO_AUDIO_OUTPUT_MUTED, monoAudioOutputMuted);
}
@@ -254,7 +286,7 @@ public class DeviceStatus extends RPCStruct {
* set signal level status
* @param signalLevelStatus signal level status
*/
- public void setSignalLevelStatus(DeviceLevelStatus signalLevelStatus) {
+ public void setSignalLevelStatus(@NonNull DeviceLevelStatus signalLevelStatus) {
setValue(KEY_SIGNAL_LEVEL_STATUS, signalLevelStatus);
}
@@ -270,7 +302,7 @@ public class DeviceStatus extends RPCStruct {
* set the current primary audio source of SDL (if selected).
* @param primaryAudioSource the current primary audio source of SDL (if selected).
*/
- public void setPrimaryAudioSource(PrimaryAudioSource primaryAudioSource) {
+ public void setPrimaryAudioSource(@NonNull PrimaryAudioSource primaryAudioSource) {
setValue(KEY_PRIMARY_AUDIO_SOURCE, primaryAudioSource);
}
@@ -281,7 +313,7 @@ public class DeviceStatus extends RPCStruct {
public PrimaryAudioSource getPrimaryAudioSource() {
return (PrimaryAudioSource) getObject(PrimaryAudioSource.class, KEY_PRIMARY_AUDIO_SOURCE);
}
- public void setECallEventActive(Boolean eCallEventActive) {
+ public void setECallEventActive(@NonNull Boolean eCallEventActive) {
setValue(KEY_E_CALL_EVENT_ACTIVE, eCallEventActive);
}
public Boolean getECallEventActive() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java
index f83c07735..3d40ba31d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessage.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -79,9 +81,19 @@ public class DiagnosticMessage extends RPCRequest {
*
* @param targetID
*/
-
- public void setTargetID(Integer targetID) {
+
+ /**
+ * Constructs a new DiagnosticMessage object
+ */
+ public DiagnosticMessage(@NonNull Integer targetID, @NonNull Integer messageLength, @NonNull List<Integer> messageData) {
+ this();
+ setTargetID(targetID);
+ setMessageLength(messageLength);
+ setMessageData(messageData);
+ }
+
+ public void setTargetID(@NonNull Integer targetID) {
setParameters(KEY_TARGET_ID, targetID);
}
/**
@@ -96,7 +108,7 @@ public class DiagnosticMessage extends RPCRequest {
return getInteger(KEY_TARGET_ID);
}
- public void setMessageLength(Integer messageLength) {
+ public void setMessageLength(@NonNull Integer messageLength) {
setParameters(KEY_MESSAGE_LENGTH, messageLength);
}
public Integer getMessageLength() {
@@ -108,7 +120,7 @@ public class DiagnosticMessage extends RPCRequest {
return (List<Integer>) getObject(Integer.class, KEY_MESSAGE_DATA);
}
- public void setMessageData(List<Integer> messageData) {
+ public void setMessageData(@NonNull List<Integer> messageData) {
setParameters(KEY_MESSAGE_DATA, messageData);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java
index c478496f7..096acbd50 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DiagnosticMessageResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
import java.util.List;
@@ -23,12 +26,25 @@ public class DiagnosticMessageResponse extends RPCResponse {
public DiagnosticMessageResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new DiagnosticMessageResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public DiagnosticMessageResponse(@NonNull Boolean success, @NonNull Result resultCode, @NonNull List<Integer> messageDataResult) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ setMessageDataResult(messageDataResult);
+ }
@SuppressWarnings("unchecked")
public List<Integer> getMessageDataResult() {
return (List<Integer>) getObject(Integer.class, KEY_MESSAGE_DATA_RESULT);
}
- public void setMessageDataResult(List<Integer> messageDataResult) {
+ public void setMessageDataResult(@NonNull List<Integer> messageDataResult) {
setParameters(KEY_MESSAGE_DATA_RESULT, messageDataResult);
}
+
+
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java
index 4afc68a0c..4707efc86 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumber.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -22,6 +24,10 @@ public class DialNumber extends RPCRequest {
super(hash);
}
+ public DialNumber(@NonNull String number){
+ this();
+ setNumber(number);
+ }
/**
* Sets a number to dial
*
@@ -31,7 +37,7 @@ public class DialNumber extends RPCRequest {
* <b>Notes: </b>Maxlength=40</p>
* All characters shall be stripped from string except digits 0-9 and * # , ; +
*/
- public void setNumber(String number) {
+ public void setNumber(@NonNull String number) {
if (number != null) {
number = number.replaceAll("[^0-9*#,;+]", ""); //This will sanitize the input
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumberResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumberResponse.java
index 613755442..ff2cef3be 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumberResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DialNumberResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Dial Number Response is sent, when DialNumber has been called
@@ -20,4 +23,14 @@ public class DialNumberResponse extends RPCResponse {
super(hash);
}
+ /**
+ * Constructs a new DialNumberResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public DialNumberResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java
index 69928a128..12bf0ffd8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.DisplayType;
import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
@@ -75,6 +77,20 @@ public class DisplayCapabilities extends RPCStruct {
super(hash);
}
/**
+ * Constructs a newly allocated DisplayCapabilities object
+ * @param displayType the display type
+ * @param textFields the List of textFields
+ * @param mediaClockFormats the List of MediaClockFormat
+ * @param graphicSupported
+ */
+ public DisplayCapabilities(@NonNull DisplayType displayType, @NonNull List<TextField> textFields, @NonNull List<MediaClockFormat> mediaClockFormats, @NonNull Boolean graphicSupported) {
+ this();
+ setDisplayType(displayType);
+ setTextFields(textFields);
+ setMediaClockFormats(mediaClockFormats);
+ setGraphicSupported(graphicSupported);
+ }
+ /**
* Get the type of display
* @return the type of display
*/
@@ -85,7 +101,7 @@ public class DisplayCapabilities extends RPCStruct {
* Set the type of display
* @param displayType the display type
*/
- public void setDisplayType( DisplayType displayType ) {
+ public void setDisplayType( @NonNull DisplayType displayType ) {
setValue(KEY_DISPLAY_TYPE, displayType);
}
/**
@@ -102,7 +118,7 @@ public class DisplayCapabilities extends RPCStruct {
* This array of TextField structures identify all the text fields to which the application can write on the current display (identified by DisplayType ).
* @param textFields the List of textFields
*/
- public void setTextFields( List<TextField> textFields ) {
+ public void setTextFields( @NonNull List<TextField> textFields ) {
setValue(KEY_TEXT_FIELDS, textFields);
}
@@ -137,7 +153,7 @@ public class DisplayCapabilities extends RPCStruct {
* Set an array of MediaClockFormat elements, defining the valid string formats used in specifying the contents of the media clock field
* @param mediaClockFormats the List of MediaClockFormat
*/
- public void setMediaClockFormats( List<MediaClockFormat> mediaClockFormats ) {
+ public void setMediaClockFormats( @NonNull List<MediaClockFormat> mediaClockFormats ) {
setValue(KEY_MEDIA_CLOCK_FORMATS, mediaClockFormats);
}
@@ -146,7 +162,7 @@ public class DisplayCapabilities extends RPCStruct {
* @param graphicSupported
* @since SmartDeviceLink 2.0
*/
- public void setGraphicSupported(Boolean graphicSupported) {
+ public void setGraphicSupported(@NonNull Boolean graphicSupported) {
setValue(KEY_GRAPHIC_SUPPORTED, graphicSupported);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java
index da6c37d9a..b62620026 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ECallInfo.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.ECallConfirmationStatus;
+import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataNotificationStatus;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataResultCode;
@@ -57,30 +60,39 @@ public class ECallInfo extends RPCStruct {
public static final String KEY_E_CALL_NOTIFICATION_STATUS = "eCallNotificationStatus";
public static final String KEY_AUX_E_CALL_NOTIFICATION_STATUS = "auxECallNotificationStatus";
public static final String KEY_E_CALL_CONFIRMATION_STATUS = "eCallConfirmationStatus";
- /** Constructs a new ECallInfo object indicated by the Hashtable
- * parameter
- * @param hash
- *
- * <p>The hash table to use</p>
+ /** Constructs a new ECallInfo object
*/
public ECallInfo() { }
+ /** Constructs a new ECallInfo object indicated by the Hashtable
+ * parameter
+ * @param hash <p>The hash table to use</p>
+ */
public ECallInfo(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new ECallInfo object
+ */
+ public ECallInfo(@NonNull VehicleDataNotificationStatus eCallNotificationStatus, @NonNull VehicleDataNotificationStatus auxECallNotificationStatus, @NonNull ECallConfirmationStatus eCallConfirmationStatus) {
+ this();
+ setECallNotificationStatus(eCallNotificationStatus);
+ setAuxECallNotificationStatus(auxECallNotificationStatus);
+ setECallConfirmationStatus(eCallConfirmationStatus);
+ }
- public void setECallNotificationStatus(VehicleDataNotificationStatus eCallNotificationStatus) {
+ public void setECallNotificationStatus(@NonNull VehicleDataNotificationStatus eCallNotificationStatus) {
setValue(KEY_E_CALL_NOTIFICATION_STATUS, eCallNotificationStatus);
}
public VehicleDataNotificationStatus getECallNotificationStatus() {
return (VehicleDataNotificationStatus) getObject(VehicleDataNotificationStatus.class, KEY_E_CALL_NOTIFICATION_STATUS);
}
- public void setAuxECallNotificationStatus(VehicleDataNotificationStatus auxECallNotificationStatus) {
+ public void setAuxECallNotificationStatus(@NonNull VehicleDataNotificationStatus auxECallNotificationStatus) {
setValue(KEY_AUX_E_CALL_NOTIFICATION_STATUS, auxECallNotificationStatus);
}
public VehicleDataNotificationStatus getAuxECallNotificationStatus() {
return (VehicleDataNotificationStatus) getObject(VehicleDataNotificationStatus.class, KEY_AUX_E_CALL_NOTIFICATION_STATUS);
}
- public void setECallConfirmationStatus(ECallConfirmationStatus eCallConfirmationStatus) {
+ public void setECallConfirmationStatus(@NonNull ECallConfirmationStatus eCallConfirmationStatus) {
setValue(KEY_E_CALL_CONFIRMATION_STATUS, eCallConfirmationStatus);
}
public ECallConfirmationStatus getECallConfirmationStatus() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java
index 19b8f69bb..0bc0a2e67 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EmergencyEvent.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -79,44 +81,55 @@ public class EmergencyEvent extends RPCStruct {
public static final String KEY_ROLLOVER_EVENT = "rolloverEvent";
public static final String KEY_MAXIMUM_CHANGE_VELOCITY = "maximumChangeVelocity";
public static final String KEY_MULTIPLE_EVENTS = "multipleEvents";
-
- /** Constructs a new EmergencyEvent object indicated by the Hashtable
- * parameter
- * @param hash
- *
- * <p>The hash table to use</p>
- */
+ /** Constructs a new EmergencyEvent object
+ *
+ */
public EmergencyEvent() { }
+ /** Constructs a new EmergencyEvent object indicated by the Hashtable
+ * parameter
+ * @param hash <p>The hash table to use</p>
+ */
public EmergencyEvent(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new EmergencyEvent object
+ */
+ public EmergencyEvent(@NonNull EmergencyEventType emergencyEventType, @NonNull FuelCutoffStatus fuelCutoffStatus, @NonNull VehicleDataEventStatus rolloverEvent, @NonNull Integer maximumChangeVelocity, @NonNull VehicleDataEventStatus multipleEvents) {
+ this();
+ setEmergencyEventType(emergencyEventType);
+ setFuelCutoffStatus(fuelCutoffStatus);
+ setRolloverEvent(rolloverEvent);
+ setMaximumChangeVelocity(maximumChangeVelocity);
+ setMultipleEvents(multipleEvents);
+ }
- public void setEmergencyEventType(EmergencyEventType emergencyEventType) {
+ public void setEmergencyEventType(@NonNull EmergencyEventType emergencyEventType) {
setValue(KEY_EMERGENCY_EVENT_TYPE, emergencyEventType);
}
public EmergencyEventType getEmergencyEventType() {
return (EmergencyEventType) getObject(EmergencyEventType.class, KEY_EMERGENCY_EVENT_TYPE);
}
- public void setFuelCutoffStatus(FuelCutoffStatus fuelCutoffStatus) {
+ public void setFuelCutoffStatus(@NonNull FuelCutoffStatus fuelCutoffStatus) {
setValue(KEY_FUEL_CUTOFF_STATUS, fuelCutoffStatus);
}
public FuelCutoffStatus getFuelCutoffStatus() {
return (FuelCutoffStatus) getObject(FuelCutoffStatus.class, KEY_FUEL_CUTOFF_STATUS);
}
- public void setRolloverEvent(VehicleDataEventStatus rolloverEvent) {
+ public void setRolloverEvent(@NonNull VehicleDataEventStatus rolloverEvent) {
setValue(KEY_ROLLOVER_EVENT, rolloverEvent);
}
public VehicleDataEventStatus getRolloverEvent() {
return (VehicleDataEventStatus) getObject(VehicleDataEventStatus.class, KEY_ROLLOVER_EVENT);
}
- public void setMaximumChangeVelocity(Integer maximumChangeVelocity) {
+ public void setMaximumChangeVelocity(@NonNull Integer maximumChangeVelocity) {
setValue(KEY_MAXIMUM_CHANGE_VELOCITY, maximumChangeVelocity);
}
public Integer getMaximumChangeVelocity() {
return getInteger(KEY_MAXIMUM_CHANGE_VELOCITY);
}
- public void setMultipleEvents(VehicleDataEventStatus multipleEvents) {
+ public void setMultipleEvents(@NonNull VehicleDataEventStatus multipleEvents) {
setValue(KEY_MULTIPLE_EVENTS, multipleEvents);
}
public VehicleDataEventStatus getMultipleEvents() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EndAudioPassThruResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EndAudioPassThruResponse.java
index 4f7a09f7b..fddb8a30c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EndAudioPassThruResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/EndAudioPassThruResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* End Audio Pass Thru Response is sent, when EndAudioPassThru has been called
@@ -21,4 +24,14 @@ public class EndAudioPassThruResponse extends RPCResponse {
public EndAudioPassThruResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new EndAudioPassThruResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public EndAudioPassThruResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java
index fec91005b..274e5c1be 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GPSData.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.CompassDirection;
import com.smartdevicelink.proxy.rpc.enums.Dimension;
@@ -175,12 +177,40 @@ public class GPSData extends RPCStruct {
public GPSData(Hashtable<String, Object> hash) {
super(hash);
}
-
+
+ /**
+ * Constructs a newly allocated GPSData object
+ */
+ public GPSData(@NonNull Double longitudeDegrees, @NonNull Double latitudeDegrees, @NonNull Integer utcYear,
+ @NonNull Integer utcMonth, @NonNull Integer utcDay, @NonNull Integer utcHours,
+ @NonNull Integer utcMinutes, @NonNull Integer utcSeconds, @NonNull CompassDirection compassDirection,
+ @NonNull Double pdop, @NonNull Double hdop, @NonNull Double vdop, @NonNull Boolean actual,
+ @NonNull Integer satellites, @NonNull Dimension dimension, @NonNull Double altitude, @NonNull Double heading, @NonNull Double speed) {
+ this();
+ setLongitudeDegrees(longitudeDegrees);
+ setLatitudeDegrees(latitudeDegrees);
+ setUtcYear(utcYear);
+ setUtcMonth(utcMonth);
+ setUtcDay(utcDay);
+ setUtcHours(utcHours);
+ setUtcMinutes(utcMinutes);
+ setUtcSeconds(utcSeconds);
+ setCompassDirection(compassDirection);
+ setPdop(pdop);
+ setHdop(hdop);
+ setVdop(vdop);
+ setActual(actual);
+ setSatellites(satellites);
+ setDimension(dimension);
+ setAltitude(altitude);
+ setHeading(heading);
+ setSpeed(speed);
+ }
/**
* set longitude degrees
* @param longitudeDegrees
*/
- public void setLongitudeDegrees(Double longitudeDegrees) {
+ public void setLongitudeDegrees(@NonNull Double longitudeDegrees) {
setValue(KEY_LONGITUDE_DEGREES, longitudeDegrees);
}
@@ -197,7 +227,7 @@ public class GPSData extends RPCStruct {
* set latitude degrees
* @param latitudeDegrees latitude degrees
*/
- public void setLatitudeDegrees(Double latitudeDegrees) {
+ public void setLatitudeDegrees(@NonNull Double latitudeDegrees) {
setValue(KEY_LATITUDE_DEGREES, latitudeDegrees);
}
@@ -214,7 +244,7 @@ public class GPSData extends RPCStruct {
* set utc year
* @param utcYear utc year
*/
- public void setUtcYear(Integer utcYear) {
+ public void setUtcYear(@NonNull Integer utcYear) {
setValue(KEY_UTC_YEAR, utcYear);
}
@@ -230,7 +260,7 @@ public class GPSData extends RPCStruct {
* set utc month
* @param utcMonth utc month
*/
- public void setUtcMonth(Integer utcMonth) {
+ public void setUtcMonth(@NonNull Integer utcMonth) {
setValue(KEY_UTC_MONTH, utcMonth);
}
@@ -246,7 +276,7 @@ public class GPSData extends RPCStruct {
* set utc day
* @param utcDay utc day
*/
- public void setUtcDay(Integer utcDay) {
+ public void setUtcDay(@NonNull Integer utcDay) {
setValue(KEY_UTC_DAY, utcDay);
}
@@ -262,7 +292,7 @@ public class GPSData extends RPCStruct {
* set utc hours
* @param utcHours utc hours
*/
- public void setUtcHours(Integer utcHours) {
+ public void setUtcHours(@NonNull Integer utcHours) {
setValue(KEY_UTC_HOURS, utcHours);
}
@@ -278,7 +308,7 @@ public class GPSData extends RPCStruct {
* set utc minutes
* @param utcMinutes utc minutes
*/
- public void setUtcMinutes(Integer utcMinutes) {
+ public void setUtcMinutes(@NonNull Integer utcMinutes) {
setValue(KEY_UTC_MINUTES, utcMinutes);
}
@@ -294,7 +324,7 @@ public class GPSData extends RPCStruct {
* set utc seconds
* @param utcSeconds utc seconds
*/
- public void setUtcSeconds(Integer utcSeconds) {
+ public void setUtcSeconds(@NonNull Integer utcSeconds) {
setValue(KEY_UTC_SECONDS, utcSeconds);
}
@@ -305,7 +335,7 @@ public class GPSData extends RPCStruct {
public Integer getUtcSeconds() {
return getInteger(KEY_UTC_SECONDS);
}
- public void setCompassDirection(CompassDirection compassDirection) {
+ public void setCompassDirection(@NonNull CompassDirection compassDirection) {
setValue(KEY_COMPASS_DIRECTION, compassDirection);
}
public CompassDirection getCompassDirection() {
@@ -316,7 +346,7 @@ public class GPSData extends RPCStruct {
* set the positional dilution of precision
* @param pdop the positional dilution of precision
*/
- public void setPdop(Double pdop) {
+ public void setPdop(@NonNull Double pdop) {
setValue(KEY_PDOP, pdop);
}
@@ -332,7 +362,7 @@ public class GPSData extends RPCStruct {
* set the horizontal dilution of precision
* @param hdop the horizontal dilution of precision
*/
- public void setHdop(Double hdop) {
+ public void setHdop(@NonNull Double hdop) {
setValue(KEY_HDOP, hdop);
}
@@ -349,7 +379,7 @@ public class GPSData extends RPCStruct {
* set the vertical dilution of precision
* @param vdop the vertical dilution of precision
*/
- public void setVdop(Double vdop) {
+ public void setVdop(@NonNull Double vdop) {
setValue(KEY_VDOP, vdop);
}
@@ -366,7 +396,7 @@ public class GPSData extends RPCStruct {
* set what coordinates based on
* @param actual True, if coordinates are based on satellites.False, if based on dead reckoning
*/
- public void setActual(Boolean actual) {
+ public void setActual(@NonNull Boolean actual) {
setValue(KEY_ACTUAL, actual);
}
@@ -382,7 +412,7 @@ public class GPSData extends RPCStruct {
* set the number of satellites in view
* @param satellites the number of satellites in view
*/
- public void setSatellites(Integer satellites) {
+ public void setSatellites(@NonNull Integer satellites) {
setValue(KEY_SATELLITES, satellites);
}
@@ -393,7 +423,7 @@ public class GPSData extends RPCStruct {
public Integer getSatellites() {
return getInteger(KEY_SATELLITES);
}
- public void setDimension(Dimension dimension) {
+ public void setDimension(@NonNull Dimension dimension) {
setValue(KEY_DIMENSION, dimension);
}
public Dimension getDimension() {
@@ -404,7 +434,7 @@ public class GPSData extends RPCStruct {
* set altitude in meters
* @param altitude altitude in meters
*/
- public void setAltitude(Double altitude) {
+ public void setAltitude(@NonNull Double altitude) {
setValue(KEY_ALTITUDE, altitude);
}
@@ -421,7 +451,7 @@ public class GPSData extends RPCStruct {
* set the heading.North is 0, East is 90, etc.
* @param heading the heading.
*/
- public void setHeading(Double heading) {
+ public void setHeading(@NonNull Double heading) {
setValue(KEY_HEADING, heading);
}
@@ -437,7 +467,7 @@ public class GPSData extends RPCStruct {
* set speed in KPH
* @param speed the speed
*/
- public void setSpeed(Double speed) {
+ public void setSpeed(@NonNull Double speed) {
setValue(KEY_SPEED, speed);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GenericResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GenericResponse.java
index 4618fd857..a92c237e3 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GenericResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GenericResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Generic Response is sent, when the name of a received msg cannot be
@@ -54,4 +57,14 @@ public class GenericResponse extends RPCResponse {
public GenericResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new GenericResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public GenericResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java
index 83243823e..23eeac0d4 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCs.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -69,14 +71,23 @@ public class GetDTCs extends RPCRequest {
* <p>Constructs a new GetDTCs object indicated by the Hashtable parameter
* </p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public GetDTCs(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new GetDTCs object
+ * @param ecuName an Integer value representing a name of the module to receive the DTC form <br>
+ * <b>Notes: </b>Minvalue:0; Maxvalue:65535
+ */
+ public GetDTCs(@NonNull Integer ecuName) {
+ this();
+ setEcuName(ecuName);
+ }
+
+ /**
* Sets a name of the module to receive the DTC form
*
* @param ecuName
@@ -85,7 +96,7 @@ public class GetDTCs extends RPCRequest {
* <p>
* <b>Notes:</p> </b>Minvalue:0; Maxvalue:65535
*/
- public void setEcuName(Integer ecuName) {
+ public void setEcuName(@NonNull Integer ecuName) {
setParameters(KEY_ECU_NAME, ecuName);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java
index 02d130db8..802f6b34a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetDTCsResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
import java.util.List;
@@ -24,6 +27,19 @@ public class GetDTCsResponse extends RPCResponse{
super(hash);
}
+ /**
+ * Constructs a new GetDTCsResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ * @param ecuHeader
+ */
+ public GetDTCsResponse(@NonNull Boolean success, @NonNull Result resultCode, @NonNull Integer ecuHeader) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ setEcuHeader(ecuHeader);
+ }
+
@SuppressWarnings("unchecked")
public List<String> getDtc(){
return (List<String>) getObject(String.class, KEY_DTC);
@@ -37,7 +53,8 @@ public class GetDTCsResponse extends RPCResponse{
return getInteger(KEY_ECU_HEADER);
}
- public void setEcuHeader(Integer ecuHeader){
+ public void setEcuHeader(@NonNull Integer ecuHeader){
setParameters(KEY_ECU_HEADER, ecuHeader);
}
+
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleData.java
index 53108b4fb..dc6ab5444 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleData.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.ModuleType;
@@ -36,6 +38,14 @@ public class GetInteriorVehicleData extends RPCRequest {
}
/**
+ * Constructs a new GetInteriorVehicleData object
+ */
+ public GetInteriorVehicleData(@NonNull ModuleType moduleType) {
+ this();
+ setModuleType(moduleType);
+ }
+
+ /**
* Gets the ModuleType
*
* @return ModuleType - The type of a RC module to retrieve module data from the vehicle.
@@ -52,7 +62,7 @@ public class GetInteriorVehicleData extends RPCRequest {
* The type of a RC module to retrieve module data from the vehicle.
* In the future, this should be the Identification of a module.
*/
- public void setModuleType(ModuleType moduleType) {
+ public void setModuleType(@NonNull ModuleType moduleType) {
setParameters(KEY_MODULE_TYPE, moduleType);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleDataResponse.java
index 0e74001f6..88d663805 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetInteriorVehicleDataResponse.java
@@ -1,7 +1,11 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
+
import java.util.Hashtable;
public class GetInteriorVehicleDataResponse extends RPCResponse {
@@ -28,6 +32,20 @@ public class GetInteriorVehicleDataResponse extends RPCResponse {
}
/**
+ * Constructs a new GetInteriorVehicleDataResponse object
+ * @param moduleData
+ * @param resultCode whether the request is successfully processed
+ * @param success whether the request is successfully processed
+
+ */
+ public GetInteriorVehicleDataResponse( @NonNull ModuleData moduleData, @NonNull Result resultCode, @NonNull Boolean success) {
+ this();
+ setModuleData(moduleData);
+ setResultCode(resultCode);
+ setSuccess(success);
+ }
+
+ /**
* Gets the moduleData
*
* @return ModuleData
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java
index 190403096..031adddcf 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
@@ -31,6 +33,15 @@ public class GetSystemCapability extends RPCRequest {
}
/**
+ * Constructs a new GetSystemCapability object
+ * @param systemCapabilityType SystemCapabilityType being requested
+ */
+ public GetSystemCapability(@NonNull SystemCapabilityType systemCapabilityType){
+ this();
+ setSystemCapabilityType(systemCapabilityType);
+ }
+
+ /**
* Used to get the SystemCapabilityType being requested
* @return the SystemCapabilityType being requested
*/
@@ -42,7 +53,7 @@ public class GetSystemCapability extends RPCRequest {
* Used to set the SystemCapabilityType being requested
* @param value SystemCapabilityType being requested
*/
- public void setSystemCapabilityType(SystemCapabilityType value){
+ public void setSystemCapabilityType(@NonNull SystemCapabilityType value){
setParameters(KEY_SYSTEM_CAPABILITY_TYPE, value);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java
index bccce6331..afcc8c48c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -31,6 +34,19 @@ public class GetSystemCapabilityResponse extends RPCResponse {
}
/**
+ * Constructs a new GetSystemCapabilityResponse object
+ * @param systemCapability SystemCapability object
+ * @param resultCode whether the request is successfully processed
+ * @param success whether the request is successfully processed
+ */
+ public GetSystemCapabilityResponse(@NonNull SystemCapability systemCapability, @NonNull Result resultCode, @NonNull Boolean success) {
+ this();
+ setSystemCapability(systemCapability);
+ setResultCode(resultCode);
+ setSuccess(success);
+ }
+
+ /**
* Get the SystemCapability object returned after a GetSystemCapability call
* @return SystemCapability object
*/
@@ -42,7 +58,7 @@ public class GetSystemCapabilityResponse extends RPCResponse {
* Set a SystemCapability object in the response
* @param value SystemCapability object
*/
- public void setSystemCapability(SystemCapability value){
+ public void setSystemCapability(@NonNull SystemCapability value){
setParameters(KEY_SYSTEM_CAPABILITY, value);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java
index 39e33993b..2a1eb0a2d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleDataResponse.java
@@ -1,10 +1,13 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.enums.ComponentVolumeStatus;
import com.smartdevicelink.proxy.rpc.enums.PRNDL;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus;
import com.smartdevicelink.proxy.rpc.enums.WiperStatus;
import com.smartdevicelink.util.SdlDataTypeConverter;
@@ -53,6 +56,16 @@ public class GetVehicleDataResponse extends RPCResponse {
public GetVehicleDataResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new GetVehicleDataResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public GetVehicleDataResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
public void setGps(GPSData gps) {
setParameters(KEY_GPS, gps);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java
index 443e66b3d..95b076e52 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPoints.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.WayPointType;
@@ -17,11 +19,16 @@ public class GetWayPoints extends RPCRequest {
super(hash);
}
+ public GetWayPoints(@NonNull WayPointType wayPointType) {
+ this();
+ setWayPointType(wayPointType);
+ }
+
public WayPointType getWayPointType() {
return (WayPointType) getObject(WayPointType.class, KEY_WAY_POINT_TYPE);
}
- public void setWayPointType(WayPointType wayPointType) {
+ public void setWayPointType(@NonNull WayPointType wayPointType) {
setParameters(KEY_WAY_POINT_TYPE, wayPointType);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java
index 13eb85642..32344ffbd 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
import java.util.List;
@@ -15,7 +18,16 @@ public class GetWayPointsResponse extends RPCResponse {
public GetWayPointsResponse(Hashtable<String, Object> hash) {
super(hash);
}
-
+ /**
+ * Constructs a new GetWayPointsResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public GetWayPointsResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
public void setWayPoints(List<LocationDetails> wayPoints) {
setParameters(KEY_WAY_POINTS, wayPoints);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java
index bf2184d0c..307ff8b06 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMIPermissions.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
@@ -56,7 +58,16 @@ public class HMIPermissions extends RPCStruct {
public HMIPermissions(Hashtable<String, Object> hash) {
super(hash);
}
-
+ /**
+ * Constructs a newly allocated HMIPermissions object
+ * @param allowed HMI level that is permitted for this given RPC
+ * @param userDisallowed HMI level that is prohibited for this given RPC
+ */
+ public HMIPermissions(@NonNull List<HMILevel> allowed, @NonNull List<HMILevel> userDisallowed) {
+ this();
+ setAllowed(allowed);
+ setUserDisallowed(userDisallowed);
+ }
/**
* get a set of all HMI levels that are permitted for this given RPC.
* @return a set of all HMI levels that are permitted for this given RPC
@@ -70,7 +81,7 @@ public class HMIPermissions extends RPCStruct {
* set HMI level that is permitted for this given RPC.
* @param allowed HMI level that is permitted for this given RPC
*/
- public void setAllowed(List<HMILevel> allowed) {
+ public void setAllowed(@NonNull List<HMILevel> allowed) {
setValue(KEY_ALLOWED, allowed);
}
@@ -87,7 +98,7 @@ public class HMIPermissions extends RPCStruct {
* set a set of all HMI levels that are prohibited for this given RPC
* @param userDisallowed HMI level that is prohibited for this given RPC
*/
- public void setUserDisallowed(List<HMILevel> userDisallowed) {
+ public void setUserDisallowed(@NonNull List<HMILevel> userDisallowed) {
setValue(KEY_USER_DISALLOWED, userDisallowed);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java
index 64a9f8354..a102f3eb1 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HapticRect.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -52,10 +54,15 @@ public class HapticRect extends RPCStruct {
super(hash);
}
+ public HapticRect(@NonNull Integer id, @NonNull Rectangle rect) {
+ this();
+ setId(id);
+ setRect(rect);
+ }
/**
* Set a user control spatial identifier that references the supplied spatial data
*/
- public void setId(Integer id) {
+ public void setId(@NonNull Integer id) {
setValue(KEY_ID, id);
}
@@ -69,7 +76,7 @@ public class HapticRect extends RPCStruct {
/**
* Set the position of the haptic rectangle to be highlighted. The center of this rectangle will be "touched" when a press occurs.
*/
- public void setRect(Rectangle rect) {
+ public void setRect(@NonNull Rectangle rect) {
setValue(KEY_RECT, rect);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java
index 935b8357e..68ffc88ad 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HeadLampStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -44,29 +46,40 @@ public class HeadLampStatus extends RPCStruct {
public static final String KEY_AMBIENT_LIGHT_SENSOR_STATUS = "ambientLightSensorStatus";
public static final String KEY_HIGH_BEAMS_ON = "highBeamsOn";
public static final String KEY_LOW_BEAMS_ON = "lowBeamsOn";
- /**<p> Constructs a new HeadLampStatus object indicated by the Hashtable
- * parameter</p>
- * @param hash
- * The hash table to use
- */
+ /**
+ * Constructs a new HeadLampStatus object
+ */
public HeadLampStatus() {}
+ /**
+ * <p>Constructs a new HeadLampStatus object indicated by the Hashtable
+ * parameter</p>
+ * @param hash The hash table to use
+ */
public HeadLampStatus(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new HeadLampStatus object
+ */
+ public HeadLampStatus(@NonNull Boolean lowBeamsOn, @NonNull Boolean highBeamsOn) {
+ this();
+ setLowBeamsOn(lowBeamsOn);
+ setHighBeamsOn(highBeamsOn);
+ }
public void setAmbientLightStatus(AmbientLightStatus ambientLightSensorStatus) {
setValue(KEY_AMBIENT_LIGHT_SENSOR_STATUS, ambientLightSensorStatus);
}
public AmbientLightStatus getAmbientLightStatus() {
return (AmbientLightStatus) getObject(AmbientLightStatus.class, KEY_AMBIENT_LIGHT_SENSOR_STATUS);
}
- public void setHighBeamsOn(Boolean highBeamsOn) {
+ public void setHighBeamsOn(@NonNull Boolean highBeamsOn) {
setValue(KEY_HIGH_BEAMS_ON, highBeamsOn);
}
public Boolean getHighBeamsOn() {
return getBoolean(KEY_HIGH_BEAMS_ON);
}
- public void setLowBeamsOn(Boolean lowBeamsOn) {
+ public void setLowBeamsOn(@NonNull Boolean lowBeamsOn) {
setValue(KEY_LOW_BEAMS_ON, lowBeamsOn);
}
public Boolean getLowBeamsOn() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java
index 8182fc43c..bab596543 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Image.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.ImageType;
@@ -51,12 +53,23 @@ public class Image extends RPCStruct {
public Image(Hashtable<String, Object> hash) {
super(hash);
}
-
+
+ /**
+ * Constructs a newly allocated Image object
+ * @param value either the static hex icon value or the binary image file name identifier (sent by PutFile)
+ * @param imageType whether it is a static or dynamic image
+ */
+ public Image(@NonNull String value, @NonNull ImageType imageType) {
+ this();
+ setValue(value);
+ setImageType(imageType);
+ }
+
/**
* set either the static hex icon value or the binary image file name identifier (sent by PutFile)
* @param value either the static hex icon value or the binary image file name identifier (sent by PutFile)
*/
- public void setValue(String value) {
+ public void setValue(@NonNull String value) {
setValue(KEY_VALUE, value);
}
@@ -72,7 +85,7 @@ public class Image extends RPCStruct {
* set the image type
* @param imageType whether it is a static or dynamic image
*/
- public void setImageType(ImageType imageType) {
+ public void setImageType(@NonNull ImageType imageType) {
setValue(KEY_IMAGE_TYPE, imageType);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java
index 1d3b32967..0dccc55cc 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageField.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.AmbientLightStatus;
import com.smartdevicelink.proxy.rpc.enums.FileType;
@@ -71,17 +73,24 @@ public class ImageField extends RPCStruct {
public ImageField(Hashtable<String, Object> hash) {
super(hash);
}
+
+ public ImageField(@NonNull ImageFieldName name, @NonNull List<FileType> imageTypeSupported) {
+ this();
+ setName(name);
+ setImageTypeSupported(imageTypeSupported);
+ }
+
public ImageFieldName getName() {
return (ImageFieldName) getObject(ImageFieldName.class, KEY_NAME);
}
- public void setName( ImageFieldName name ) {
+ public void setName(@NonNull ImageFieldName name ) {
setValue(KEY_NAME, name);
}
@SuppressWarnings("unchecked")
public List<FileType> getImageTypeSupported() {
return (List<FileType>) getObject(FileType.class, KEY_IMAGE_TYPE_SUPPORTED);
}
- public void setImageTypeSupported( List<FileType> imageTypeSupported ) {
+ public void setImageTypeSupported(@NonNull List<FileType> imageTypeSupported ) {
setValue(KEY_IMAGE_TYPE_SUPPORTED, imageTypeSupported);
}
@SuppressWarnings("unchecked")
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java
index 5858a45d0..2eb69f652 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ImageResolution.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -60,8 +62,14 @@ public class ImageResolution extends RPCStruct {
public ImageResolution(Hashtable<String, Object> hash) {
super(hash);
}
+
+ public ImageResolution(@NonNull Integer resolutionWidth, @NonNull Integer resolutionHeight) {
+ this();
+ setResolutionWidth(resolutionWidth);
+ setResolutionHeight(resolutionHeight);
+ }
- public void setResolutionWidth(Integer resolutionWidth) {
+ public void setResolutionWidth(@NonNull Integer resolutionWidth) {
setValue(KEY_RESOLUTION_WIDTH, resolutionWidth);
}
@@ -69,7 +77,7 @@ public class ImageResolution extends RPCStruct {
return getInteger(KEY_RESOLUTION_WIDTH);
}
- public void setResolutionHeight(Integer resolutionHeight) {
+ public void setResolutionHeight(@NonNull Integer resolutionHeight) {
setValue(KEY_RESOLUTION_HEIGHT, resolutionHeight);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java
index f1f77a7df..550eef9d8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ListFilesResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
import java.util.List;
@@ -24,6 +27,17 @@ public class ListFilesResponse extends RPCResponse {
public ListFilesResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new ListFilesResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public ListFilesResponse(@NonNull Boolean success, @NonNull Result resultCode, @NonNull Integer spaceAvailable) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ setSpaceAvailable(spaceAvailable);
+ }
public void setFilenames(List<String> filenames) {
setParameters(KEY_FILENAMES, filenames);
}
@@ -31,7 +45,7 @@ public class ListFilesResponse extends RPCResponse {
public List<String> getFilenames() {
return (List<String>) getObject(String.class, KEY_FILENAMES);
}
- public void setSpaceAvailable(Integer spaceAvailable) {
+ public void setSpaceAvailable(@NonNull Integer spaceAvailable) {
setParameters(KEY_SPACE_AVAILABLE, spaceAvailable);
}
public Integer getSpaceAvailable() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
index e096cb7df..841cf6b90 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -71,6 +73,14 @@ public class MenuParams extends RPCStruct {
super(hash);
}
/**
+ * Constructs a newly allocated MenuParams object
+ * @param menuName the menu name
+ */
+ public MenuParams(@NonNull String menuName) {
+ this();
+ setMenuName(menuName);
+ }
+ /**
* Get the unique ID of an existing submenu to which a command will be added.
* If this element is not provided, the command will be added to the top level of the Command Menu.
* @return parentID Min: 0 Max: 2000000000
@@ -135,7 +145,7 @@ public class MenuParams extends RPCStruct {
* @param menuName the menu name
*/
- public void setMenuName( String menuName ) {
+ public void setMenuName( @NonNull String menuName ) {
setValue(KEY_MENU_NAME, menuName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ModuleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ModuleData.java
index e04ab1ad5..9ae3f7fd3 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ModuleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ModuleData.java
@@ -1,7 +1,11 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.ModuleType;
+import com.smartdevicelink.proxy.rpc.enums.Result;
+
import java.util.Hashtable;
public class ModuleData extends RPCStruct{
@@ -16,6 +20,11 @@ public class ModuleData extends RPCStruct{
super(hash);
}
+ public ModuleData(@NonNull ModuleType moduleType) {
+ this();
+ setModuleType(moduleType);
+ }
+
/**
* Sets the moduleType portion of the ModuleData class
*
@@ -23,7 +32,7 @@ public class ModuleData extends RPCStruct{
* The moduleType indicates which type of data should be changed and identifies which data object exists in this struct.
* For example, if the moduleType is CLIMATE then a "climateControlData" should exist
*/
- public void setModuleType(ModuleType moduleType) {
+ public void setModuleType(@NonNull ModuleType moduleType) {
setValue(KEY_MODULE_TYPE, moduleType);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java
index f17a6b54c..3393f527a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/MyKey.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -20,11 +22,11 @@ import com.smartdevicelink.proxy.rpc.enums.VehicleDataStatus;
* <td>Indicates whether e911 override is on.</td>
* </tr>
* </table>
- *
- *@since SmartDeviceLink 2.0
- *
- *@see GetVehicleData
- *@see OnVehicleData
+ *
+ *@since SmartDeviceLink 2.0
+ *
+ *@see GetVehicleData
+ *@see OnVehicleData
*@see VehicleDataStatus
*
*
@@ -33,21 +35,25 @@ import com.smartdevicelink.proxy.rpc.enums.VehicleDataStatus;
public class MyKey extends RPCStruct {
public static final String KEY_E_911_OVERRIDE = "e911Override";
/**
- * <p>
- * Constructs a new MyKey object indicated by the Hashtable
- * parameter
- * </p>
- *
- * @param hash
- * The Hashtable to use
+ * Constructs a new MyKey object indicated
*/
-
public MyKey() { }
+ /**
+ * <p>Constructs a new MyKey object indicated by the Hashtable
+ * parameter</p>
+ * @param hash The Hashtable to use
+ */
public MyKey(Hashtable<String, Object> hash) {
super(hash);
}
-
- public void setE911Override(VehicleDataStatus e911Override) {
+ /**
+ * Constructs a new MyKey object indicated
+ */
+ public MyKey(@NonNull VehicleDataStatus e911Override) {
+ this();
+ setE911Override(e911Override);
+ }
+ public void setE911Override(@NonNull VehicleDataStatus e911Override) {
setValue(KEY_E_911_OVERRIDE, e911Override);
}
public VehicleDataStatus getE911Override() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java
index 0e4a4f7c7..adc3296c1 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnAppInterfaceUnregistered.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.AppInterfaceUnregisteredReason;
@@ -55,6 +57,14 @@ public class OnAppInterfaceUnregistered extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnAppInterfaceUnregistered object
+ * @param reason The reason application's interface registration was terminated
+ */
+ public OnAppInterfaceUnregistered(@NonNull AppInterfaceUnregisteredReason reason) {
+ this();
+ setReason(reason);
+ }
+ /**
* <p>Get the reason the registration was terminated</p>
* @return {@linkplain AppInterfaceUnregisteredReason} the reason the application's interface registration was terminated
*/
@@ -65,7 +75,7 @@ public class OnAppInterfaceUnregistered extends RPCNotification {
* <p>Set the reason application's interface was terminated</p>
* @param reason The reason application's interface registration was terminated
*/
- public void setReason( AppInterfaceUnregisteredReason reason ) {
+ public void setReason( @NonNull AppInterfaceUnregisteredReason reason ) {
setParameters(KEY_REASON, reason);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java
index 185493ec7..28bf0b3ce 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonEvent.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.ButtonEventMode;
@@ -107,7 +109,17 @@ public class OnButtonEvent extends RPCNotification {
/**
* <p>Returns <i>{@linkplain ButtonName}</i> the button's name</p>
* @return ButtonName Name of the button
- */
+ */
+ /**
+ *Constructs a newly allocated OnButtonEvent object
+ * @param buttonName name of the button
+ * @param buttonEventMode indicates the button is pressed or released
+ */
+ public OnButtonEvent(@NonNull ButtonName buttonName, @NonNull ButtonEventMode buttonEventMode) {
+ this();
+ setButtonName(buttonName);
+ setButtonEventMode(buttonEventMode);
+ }
public ButtonName getButtonName() {
return (ButtonName) getObject(ButtonName.class, KEY_BUTTON_NAME);
}
@@ -115,7 +127,7 @@ public class OnButtonEvent extends RPCNotification {
* <p>Set the button's name</p>
* @param buttonName name of the button
*/
- public void setButtonName(ButtonName buttonName) {
+ public void setButtonName(@NonNull ButtonName buttonName) {
setParameters(KEY_BUTTON_NAME, buttonName);
}
/**
@@ -130,7 +142,7 @@ public class OnButtonEvent extends RPCNotification {
* @param buttonEventMode indicates the button is pressed or released
* @see ButtonEventMode
*/
- public void setButtonEventMode(ButtonEventMode buttonEventMode) {
+ public void setButtonEventMode(@NonNull ButtonEventMode buttonEventMode) {
setParameters(KEY_BUTTON_EVENT_MODE, buttonEventMode);
}
public void setCustomButtonID(Integer customButtonID) {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java
index 48562ab2f..f96548ec2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnButtonPress.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
@@ -110,6 +112,16 @@ public class OnButtonPress extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnButtonPress object
+ * @param buttonName name of the button
+ * @param buttonPressMode indicates whether this is a short or long press
+ */
+ public OnButtonPress(@NonNull ButtonName buttonName, @NonNull ButtonPressMode buttonPressMode) {
+ this();
+ setButtonName(buttonName);
+ setButtonPressMode(buttonPressMode);
+ }
+ /**
* <p>Returns an <i>{@linkplain ButtonName}</i> the button's name</p>
* @return ButtonName Name of the button
*/
@@ -120,7 +132,7 @@ public class OnButtonPress extends RPCNotification {
* <p>Set the button's name</p>
* @param buttonName name of the button
*/
- public void setButtonName( ButtonName buttonName ) {
+ public void setButtonName( @NonNull ButtonName buttonName ) {
setParameters(KEY_BUTTON_NAME, buttonName);
}
/**<p>Returns <i>{@linkplain ButtonPressMode}</i></p>
@@ -133,7 +145,7 @@ public class OnButtonPress extends RPCNotification {
* <p>Set the button press mode of the event</p>
* @param buttonPressMode indicates whether this is a short or long press
*/
- public void setButtonPressMode( ButtonPressMode buttonPressMode ) {
+ public void setButtonPressMode( @NonNull ButtonPressMode buttonPressMode ) {
setParameters(KEY_BUTTON_PRESS_MODE, buttonPressMode);
}
public void setCustomButtonName(Integer customButtonID) {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java
index 0ce4ef7b7..0a7f1e89d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnCommand.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.TriggerSource;
@@ -68,6 +70,16 @@ public class OnCommand extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnCommand object
+ * @param cmdID an integer object representing a Command ID
+ * @param triggerSource a TriggerSource object
+ */
+ public OnCommand(@NonNull Integer cmdID, @NonNull TriggerSource triggerSource) {
+ this();
+ setCmdID(cmdID);
+ setTriggerSource(triggerSource);
+ }
+ /**
* <p>Returns an <i>Integer</i> object representing the Command ID</p>
* @return Integer an integer representation of this object
*/
@@ -78,7 +90,7 @@ public class OnCommand extends RPCNotification {
* <p>Sets a Command ID</p>
* @param cmdID an integer object representing a Command ID
*/
- public void setCmdID( Integer cmdID ) {
+ public void setCmdID( @NonNull Integer cmdID ) {
setParameters(KEY_CMD_ID, cmdID);
}
/**
@@ -93,7 +105,7 @@ public class OnCommand extends RPCNotification {
* <p>Indicates whether command was selected via VR or via a menu selection (using the OK button).</p>
* @param triggerSource a TriggerSource object
*/
- public void setTriggerSource( TriggerSource triggerSource ) {
+ public void setTriggerSource( @NonNull TriggerSource triggerSource ) {
setParameters(KEY_TRIGGER_SOURCE, triggerSource);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java
index 82517ca28..8bd45e528 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnDriverDistraction.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.DriverDistractionState;
@@ -54,6 +56,14 @@ public class OnDriverDistraction extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnDriverDistraction object
+ * @param state the current driver distraction state
+ */
+ public OnDriverDistraction(@NonNull DriverDistractionState state) {
+ this();
+ setState(state);
+ }
+ /**
* <p>Called to get the current driver distraction state(i.e. whether driver distraction rules are in effect, or not)</p>
* @return {@linkplain DriverDistractionState} the Current driver distraction state.
*/
@@ -64,7 +74,7 @@ public class OnDriverDistraction extends RPCNotification {
* <p>Called to set the driver distraction state(i.e. whether driver distraction rules are in effect, or not)</p>
* @param state the current driver distraction state
*/
- public void setState( DriverDistractionState state ) {
+ public void setState( @NonNull DriverDistractionState state ) {
setParameters(KEY_STATE, state);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java
index 930e742f5..505549014 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHMIStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.AudioStreamingState;
@@ -83,6 +85,18 @@ public class OnHMIStatus extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnHMIStatus object
+ * @param hmiLevel the HMILevel to set
+ * @param audioStreamingState the state of audio streaming of the application
+ * @param systemContext Indicates that a user-initiated interaction is in-progress
+ */
+ public OnHMIStatus(@NonNull HMILevel hmiLevel, @NonNull AudioStreamingState audioStreamingState, @NonNull SystemContext systemContext) {
+ this();
+ setHmiLevel(hmiLevel);
+ setAudioStreamingState(audioStreamingState);
+ setSystemContext(systemContext);
+ }
+ /**
* <p>Get HMILevel in effect for the application</p>
* @return {@linkplain HMILevel} the current HMI Level in effect for the application
*/
@@ -93,7 +107,7 @@ public class OnHMIStatus extends RPCNotification {
* <p>Set the HMILevel of OnHMIStatus</p>
* @param hmiLevel the HMILevel to set
*/
- public void setHmiLevel( HMILevel hmiLevel ) {
+ public void setHmiLevel( @NonNull HMILevel hmiLevel ) {
setParameters(KEY_HMI_LEVEL, hmiLevel);
}
/**
@@ -107,7 +121,7 @@ public class OnHMIStatus extends RPCNotification {
* <p>Set the audio streaming state</p>
* @param audioStreamingState the state of audio streaming of the application
*/
- public void setAudioStreamingState( AudioStreamingState audioStreamingState ) {
+ public void setAudioStreamingState( @NonNull AudioStreamingState audioStreamingState ) {
setParameters(KEY_AUDIO_STREAMING_STATE, audioStreamingState);
}
/**
@@ -122,7 +136,7 @@ public class OnHMIStatus extends RPCNotification {
* @param systemContext Indicates that a user-initiated interaction is in-progress
* (VRSESSION or MENU), or not (MAIN)
*/
- public void setSystemContext( SystemContext systemContext ) {
+ public void setSystemContext( @NonNull SystemContext systemContext ) {
setParameters(KEY_SYSTEM_CONTEXT, systemContext);
}
/**
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java
index 7ac4df083..2a4581f06 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnHashChange.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
@@ -53,12 +55,20 @@ public class OnHashChange extends RPCNotification {
public OnHashChange(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new OnHashChange object
+ */
+ public OnHashChange(@NonNull String hashID) {
+ this();
+ setHashID(hashID);
+ }
public String getHashID() {
return getString(KEY_HASH_ID);
}
- public void setHashID(String hashID) {
+ public void setHashID(@NonNull String hashID) {
setParameters(KEY_HASH_ID, hashID);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnInteriorVehicleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnInteriorVehicleData.java
index 61e9ee17a..a91a720c4 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnInteriorVehicleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnInteriorVehicleData.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
@@ -28,6 +30,15 @@ public class OnInteriorVehicleData extends RPCNotification {
}
/**
+ * Constructs a new OnInteriorVehicleData object
+ * @param moduleData
+ */
+ public OnInteriorVehicleData(@NonNull ModuleData moduleData) {
+ this();
+ setModuleData(moduleData);
+ }
+
+ /**
* Gets the moduleData
*
* @return ModuleData
@@ -41,7 +52,7 @@ public class OnInteriorVehicleData extends RPCNotification {
*
* @param moduleData
*/
- public void setModuleData(ModuleData moduleData) {
+ public void setModuleData(@NonNull ModuleData moduleData) {
setParameters(KEY_MODULE_DATA, moduleData);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java
index 900091dc2..5bf3b8893 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnKeyboardInput.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.KeyboardEvent;
@@ -46,7 +48,6 @@ public class OnKeyboardInput extends RPCNotification {
/**
* Constructs a new OnKeyboardInput object
*/
-
public OnKeyboardInput() {
super(FunctionID.ON_KEYBOARD_INPUT.toString());
}
@@ -63,12 +64,19 @@ public class OnKeyboardInput extends RPCNotification {
public OnKeyboardInput(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new OnKeyboardInput object
+ */
+ public OnKeyboardInput(@NonNull KeyboardEvent event) {
+ this();
+ setEvent(event);
+ }
public KeyboardEvent getEvent() {
return (KeyboardEvent) getObject(KeyboardEvent.class, KEY_EVENT);
}
- public void setEvent(KeyboardEvent event) {
+ public void setEvent(@NonNull KeyboardEvent event) {
setParameters(KEY_EVENT, event);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java
index 1b514f1cd..5464eb359 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnLanguageChange.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.Language;
@@ -73,10 +75,20 @@ public class OnLanguageChange extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnCommand object
+ * @param language language that current SDL voice engine(VR+TTS) use
+ * @param hmiDisplayLanguage language that current SDL voice engine(VR+TTS) use
+ */
+ public OnLanguageChange(@NonNull Language language, @NonNull Language hmiDisplayLanguage) {
+ this();
+ setLanguage(language);
+ setHmiDisplayLanguage(hmiDisplayLanguage);
+ }
+ /**
* <p>Sets language that current SDL voice engine(VR+TTS) use</p>
* @param language language that current SDL voice engine(VR+TTS) use
*/
- public void setLanguage(Language language) {
+ public void setLanguage(@NonNull Language language) {
setParameters(KEY_LANGUAGE, language);
}
/**
@@ -90,7 +102,7 @@ public class OnLanguageChange extends RPCNotification {
* <p>Sets language that current display use</p>
* @param hmiDisplayLanguage language that current SDL voice engine(VR+TTS) use
*/
- public void setHmiDisplayLanguage(Language hmiDisplayLanguage) {
+ public void setHmiDisplayLanguage(@NonNull Language hmiDisplayLanguage) {
setParameters(KEY_HMI_DISPLAY_LANGUAGE, hmiDisplayLanguage);
}
/**
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java
index a98d69fb5..efe1c184b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnPermissionsChange.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
@@ -63,6 +65,14 @@ public class OnPermissionsChange extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnCommand object
+ * @param permissionItem an List of PermissionItem describing change in permissions for a given set of RPCs
+ */
+ public OnPermissionsChange(@NonNull List<PermissionItem> permissionItem) {
+ this();
+ setPermissionItem(permissionItem);
+ }
+ /**
* <p>Returns List<PermissionItem> object describing change in permissions for a given set of RPCs</p>
* @return List<{@linkplain PermissionItem}> an object describing describing change in permissions for a given set of RPCs
*/
@@ -74,7 +84,7 @@ public class OnPermissionsChange extends RPCNotification {
* <p>Sets PermissionItems describing change in permissions for a given set of RPCs</p>
* @param permissionItem an List of PermissionItem describing change in permissions for a given set of RPCs
*/
- public void setPermissionItem(List<PermissionItem> permissionItem) {
+ public void setPermissionItem(@NonNull List<PermissionItem> permissionItem) {
setParameters(KEY_PERMISSION_ITEM, permissionItem);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
index 271f94f7f..a178b581f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
@@ -1,5 +1,6 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
import android.util.Log;
import com.smartdevicelink.marshal.JsonRPCMarshaller;
@@ -76,7 +77,7 @@ import java.util.List;
* <td>minvalue: 0; maxvalue:100000000000</td>
* <td>SmartDeviceLink 2.3.2 </td>
* </tr>
- * </table>
+ * </table>
* @since SmartDeviceLink 2.3.2
*/
public class OnSystemRequest extends RPCNotification {
@@ -93,12 +94,11 @@ public class OnSystemRequest extends RPCNotification {
public static final String KEY_LENGTH = "length";
private String body;
- private Headers headers;
+ private Headers headers;
- /** Constructs a new OnSystemsRequest object
- *
+ /**
+ * Constructs a new OnSystemsRequest object
*/
-
public OnSystemRequest() {
super(FunctionID.ON_SYSTEM_REQUEST.toString());
}
@@ -111,6 +111,14 @@ public class OnSystemRequest extends RPCNotification {
super(hash);
setBulkData(bulkData);
}
+
+ /**
+ * Constructs a new OnSystemsRequest object
+ */
+ public OnSystemRequest(@NonNull RequestType requestType) {
+ this();
+ setRequestType(requestType);
+ }
private void handleBulkData(byte[] bulkData){
if(bulkData == null){
@@ -222,7 +230,7 @@ public class OnSystemRequest extends RPCNotification {
return (RequestType) getObject(RequestType.class, KEY_REQUEST_TYPE);
}
- public void setRequestType(RequestType requestType) {
+ public void setRequestType(@NonNull RequestType requestType) {
setParameters(KEY_REQUEST_TYPE, requestType);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java
index a8f05a291..fad694373 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTBTClientState.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.TBTState;
@@ -54,6 +56,14 @@ public class OnTBTClientState extends RPCNotification {
super(hash);
}
/**
+ *Constructs a newly allocated OnTBTClientState object
+ * @param state current state of TBT client
+ */
+ public OnTBTClientState(@NonNull TBTState state) {
+ this();
+ setState(state);
+ }
+ /**
* <p>Called to get the current state of TBT client</p>
* @return {@linkplain TBTState} the current state of TBT client
*/
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java
index 36905aad6..7504c9197 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnTouchEvent.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.rpc.enums.TouchType;
@@ -48,11 +50,11 @@ public class OnTouchEvent extends RPCNotification {
public static final String KEY_TYPE = "type";
/**
* Constructs a new OnTouchEvent object
- */
+ */
- public OnTouchEvent() {
- super(FunctionID.ON_TOUCH_EVENT.toString());
- }
+ public OnTouchEvent() {
+ super(FunctionID.ON_TOUCH_EVENT.toString());
+ }
/**
* <p>
* Constructs a new OnTouchEvent object indicated by the Hashtable
@@ -66,8 +68,17 @@ public class OnTouchEvent extends RPCNotification {
public OnTouchEvent(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new OnTouchEvent object
+ */
+ public OnTouchEvent(@NonNull TouchType type, @NonNull List<TouchEvent> event) {
+ this();
+ setType(type);
+ setEvent(event);
+ }
- public void setType(TouchType type) {
+ public void setType(@NonNull TouchType type) {
setParameters(KEY_TYPE, type);
}
@@ -75,7 +86,7 @@ public class OnTouchEvent extends RPCNotification {
return (TouchType) getObject(TouchType.class, KEY_TYPE);
}
- public void setEvent(List<TouchEvent> event) {
+ public void setEvent(@NonNull List<TouchEvent> event) {
setParameters(KEY_EVENT, event);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java
index 5f102dce0..cb9130e1a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnWayPointChange.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
@@ -17,12 +19,17 @@ public class OnWayPointChange extends RPCNotification {
super(hash);
}
+ public OnWayPointChange(@NonNull List<LocationDetails> wayPoints) {
+ this();
+ setWayPoints(wayPoints);
+ }
+
@SuppressWarnings("unchecked")
public List<LocationDetails> getWayPoints() {
return (List<LocationDetails>) getObject(LocationDetails.class, KEY_WAY_POINTS);
}
- public void setWayPoints(List<LocationDetails> wayPoints) {
+ public void setWayPoints(@NonNull List<LocationDetails> wayPoints) {
setParameters(KEY_WAY_POINTS, wayPoints);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java
index 244b73b89..5fbb00b74 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ParameterPermissions.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -58,7 +60,18 @@ public class ParameterPermissions extends RPCStruct {
public ParameterPermissions(Hashtable<String, Object> hash) {
super(hash);
}
-
+
+ /**
+ * Constructs a newly allocated ParameterPermissions object
+ * @param allowed parameter that is permitted for this given RPC
+ * @param userDisallowed parameter that is prohibited for this given RPC
+ */
+ public ParameterPermissions(@NonNull List<String> allowed, @NonNull List<String> userDisallowed) {
+ this();
+ setAllowed(allowed);
+ setUserDisallowed(userDisallowed);
+ }
+
/**
* get a set of all parameters that are permitted for this given RPC.
* @return a set of all parameters that are permitted for this given RPC.
@@ -72,7 +85,7 @@ public class ParameterPermissions extends RPCStruct {
* set a set of all parameters that are permitted for this given RPC.
* @param allowed parameter that is permitted for this given RPC
*/
- public void setAllowed(List<String> allowed) {
+ public void setAllowed(@NonNull List<String> allowed) {
setValue(KEY_ALLOWED, allowed);
}
@@ -89,7 +102,7 @@ public class ParameterPermissions extends RPCStruct {
* set a set of all parameters that are prohibited for this given RPC.
* @param userDisallowed paramter that is prohibited for this given RPC
*/
- public void setUserDisallowed(List<String> userDisallowed) {
+ public void setUserDisallowed(@NonNull List<String> userDisallowed) {
setValue(KEY_USER_DISALLOWED, userDisallowed);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java
index 5f2d27e1c..bbd0c32e3 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThru.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.AudioType;
@@ -112,16 +114,29 @@ public class PerformAudioPassThru extends RPCRequest {
/**
* <p>Constructs a new PerformAudioPassThru object indicated by the Hashtable
* parameter</p>
- *
- *
- * @param hash
- * The Hashtable to use
+ *
+ * @param hash The Hashtable to use
*/
public PerformAudioPassThru(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new PerformAudioPassThru object
+ * @param samplingRate a SamplingRate value representing a 8 or 16 or 22 or 24 khz
+ * @param maxDuration an Integer value representing the maximum duration of audio recording in millisecond <b>Notes: </b>Minvalue:1; Maxvalue:1000000
+ * @param bitsPerSample a BitsPerSample value representing 8 bit or 16 bit
+ * @param audioType an audioType
+ */
+ public PerformAudioPassThru(@NonNull SamplingRate samplingRate, @NonNull Integer maxDuration, @NonNull BitsPerSample bitsPerSample, @NonNull AudioType audioType) {
+ this();
+ setSamplingRate(samplingRate);
+ setMaxDuration(maxDuration);
+ setBitsPerSample(bitsPerSample);
+ setAudioType(audioType);
+ }
+
+ /**
* Sets initial prompt which will be spoken before opening the audio pass
* thru session by SDL
*
@@ -208,7 +223,7 @@ public class PerformAudioPassThru extends RPCRequest {
* @param samplingRate
* a SamplingRate value representing a 8 or 16 or 22 or 24 khz
*/
- public void setSamplingRate(SamplingRate samplingRate) {
+ public void setSamplingRate(@NonNull SamplingRate samplingRate) {
setParameters(KEY_SAMPLING_RATE, samplingRate);
}
@@ -230,7 +245,7 @@ public class PerformAudioPassThru extends RPCRequest {
* <p></p>
* <b>Notes: </b>Minvalue:1; Maxvalue:1000000
*/
- public void setMaxDuration(Integer maxDuration) {
+ public void setMaxDuration(@NonNull Integer maxDuration) {
setParameters(KEY_MAX_DURATION, maxDuration);
}
@@ -250,7 +265,7 @@ public class PerformAudioPassThru extends RPCRequest {
* @param audioQuality
* a BitsPerSample value representing 8 bit or 16 bit
*/
- public void setBitsPerSample(BitsPerSample audioQuality) {
+ public void setBitsPerSample(@NonNull BitsPerSample audioQuality) {
setParameters(KEY_BITS_PER_SAMPLE, audioQuality);
}
@@ -269,7 +284,7 @@ public class PerformAudioPassThru extends RPCRequest {
* @param audioType
* an audioType
*/
- public void setAudioType(AudioType audioType) {
+ public void setAudioType(@NonNull AudioType audioType) {
setParameters(KEY_AUDIO_TYPE, audioType);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThruResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThruResponse.java
index 2e90356ed..f68a412f0 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThruResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformAudioPassThruResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Perform Audio Pass Thru Response is sent, when PerformAudioPassThru has been called
@@ -30,4 +33,15 @@ public class PerformAudioPassThruResponse extends RPCResponse {
public PerformAudioPassThruResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new PerformAudioPassThruResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public PerformAudioPassThruResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java
index d8aeee70d..9067edb98 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteraction.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.InteractionMode;
@@ -127,15 +129,26 @@ public class PerformInteraction extends RPCRequest {
/**
* Constructs a new PerformInteraction object indicated by the Hashtable
* parameter
- *
- *
- * @param hash
- * The Hashtable to use
+ *
+ * @param hash The Hashtable to use
*/
public PerformInteraction(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new PerformInteraction object
+ * @param initialText a String value that Displayed when the interaction begins
+ * @param interactionMode indicate how user selects interaction choice (VR_ONLY, MANUAL_ONLY or BOTH)
+ * @param interactionChoiceSetIDList a List<Integer> representing an Array of one or more Choice Set IDs. User can select any choice from any of the specified
+ * Choice Sets <b>Notes: </b>Min Value: 0; Max Vlaue: 2000000000
+ */
+ public PerformInteraction(@NonNull String initialText, @NonNull InteractionMode interactionMode, @NonNull List<Integer> interactionChoiceSetIDList) {
+ this();
+ setInitialText(initialText);
+ setInteractionMode(interactionMode);
+ setInteractionChoiceSetIDList(interactionChoiceSetIDList);
+ }
+ /**
* Gets the Text that Displayed when the interaction begins. This text may
* be overlaid by the "Listening" prompt during the interaction. Text is
* displayed on first line of multiline display, and is centered. If text
@@ -155,7 +168,7 @@ public class PerformInteraction extends RPCRequest {
* @param initialText
* a String value that Displayed when the interaction begins
*/
- public void setInitialText(String initialText) {
+ public void setInitialText(@NonNull String initialText) {
setParameters(KEY_INITIAL_TEXT, initialText);
}
/**
@@ -200,7 +213,7 @@ public class PerformInteraction extends RPCRequest {
* indicate how user selects interaction choice (VR_ONLY,
* MANUAL_ONLY or BOTH)
*/
- public void setInteractionMode(InteractionMode interactionMode) {
+ public void setInteractionMode(@NonNull InteractionMode interactionMode) {
setParameters(KEY_INTERACTION_MODE, interactionMode);
}
/**
@@ -226,7 +239,7 @@ public class PerformInteraction extends RPCRequest {
* <p></p>
* <b>Notes: </b>Min Value: 0; Max Vlaue: 2000000000
*/
- public void setInteractionChoiceSetIDList(List<Integer> interactionChoiceSetIDList) {
+ public void setInteractionChoiceSetIDList(@NonNull List<Integer> interactionChoiceSetIDList) {
setParameters(KEY_INTERACTION_CHOICE_SET_ID_LIST, interactionChoiceSetIDList);
}
/**
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java
index 3e4b10b1c..5bd4afe8c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PerformInteractionResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.TriggerSource;
import java.util.Hashtable;
@@ -35,6 +38,16 @@ public class PerformInteractionResponse extends RPCResponse {
super(hash);
}
/**
+ * Constructs a new PerformInteractionResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public PerformInteractionResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
+ /**
* Gets the application-scoped identifier that uniquely identifies this choice.
* @return choiceID Min: 0 Max: 65535
*/
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java
index 59b6a347a..aad3af8eb 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PermissionItem.java
@@ -1,6 +1,8 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -53,37 +55,45 @@ public class PermissionItem extends RPCStruct {
public static final String KEY_HMI_PERMISSIONS = "hmiPermissions";
public static final String KEY_PARAMETER_PERMISSIONS = "parameterPermissions";
/**
- * <p>
- * Constructs a new PermissionItem object indicated by the Hashtable
- * parameter
- * </p>
- *
- * @param hash
- * The Hashtable to use
+ * Constructs a new PermissionItem object
*/
-
- public PermissionItem() { }
+ public PermissionItem(@NonNull String rpcName, @NonNull HMIPermissions hmiPermissions, @NonNull ParameterPermissions parameterPermissions) {
+ this();
+ setRpcName(rpcName);
+ setHMIPermissions(hmiPermissions);
+ setParameterPermissions(parameterPermissions);
+ }
+ /**
+ * Constructs a new PermissionItem object indicated by the Hashtable
+ * parameter
+ *
+ * @param hash The Hashtable to use
+ */
public PermissionItem(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new PermissionItem object
+ */
+ public PermissionItem() { }
public String getRpcName() {
return getString(KEY_RPC_NAME);
}
- public void setRpcName(String rpcName) {
+ public void setRpcName(@NonNull String rpcName) {
setValue(KEY_RPC_NAME, rpcName);
}
@SuppressWarnings("unchecked")
public HMIPermissions getHMIPermissions() {
return (HMIPermissions) getObject(HMIPermissions.class, KEY_HMI_PERMISSIONS);
}
- public void setHMIPermissions(HMIPermissions hmiPermissions) {
+ public void setHMIPermissions(@NonNull HMIPermissions hmiPermissions) {
setValue(KEY_HMI_PERMISSIONS, hmiPermissions);
}
@SuppressWarnings("unchecked")
public ParameterPermissions getParameterPermissions() {
return (ParameterPermissions) getObject(ParameterPermissions.class, KEY_PARAMETER_PERMISSIONS);
}
- public void setParameterPermissions(ParameterPermissions parameterPermissions) {
+ public void setParameterPermissions(@NonNull ParameterPermissions parameterPermissions) {
setValue(KEY_PARAMETER_PERMISSIONS, parameterPermissions);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java
index 211586da9..79d7c9546 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PresetBankCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -39,12 +41,21 @@ public class PresetBankCapabilities extends RPCStruct {
public PresetBankCapabilities(Hashtable<String, Object> hash) {
super(hash);
}
-
+
+ /**
+ * Constructs a newly allocated PresetBankCapabilities object
+ * @param onScreenPresetsAvailable if Onscreen custom presets are available.
+ */
+ public PresetBankCapabilities(@NonNull Boolean onScreenPresetsAvailable) {
+ this();
+ setOnScreenPresetsAvailable(onScreenPresetsAvailable);
+ }
+
/**
* set if Onscreen custom presets are available.
* @param onScreenPresetsAvailable if Onscreen custom presets are available.
*/
- public void setOnScreenPresetsAvailable(Boolean onScreenPresetsAvailable) {
+ public void setOnScreenPresetsAvailable(@NonNull Boolean onScreenPresetsAvailable) {
setValue(KEY_ON_SCREEN_PRESETS_AVAILABLE, onScreenPresetsAvailable);
}
@@ -55,4 +66,12 @@ public class PresetBankCapabilities extends RPCStruct {
public Boolean onScreenPresetsAvailable() {
return getBoolean(KEY_ON_SCREEN_PRESETS_AVAILABLE);
}
+
+ /**
+ * Defines, if Onscreen custom presets are available.
+ * @return if Onscreen custom presets are available
+ */
+ public Boolean getOnScreenPresetsAvailable() {
+ return getBoolean(KEY_ON_SCREEN_PRESETS_AVAILABLE);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java
index a0be90fbd..0b13f0a1d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFile.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.FileType;
@@ -128,16 +130,26 @@ public class PutFile extends RPCRequest {
/**
* Constructs a new PutFile object indicated by the Hashtable parameter
- * <p></p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public PutFile(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new PutFile object
+ * @param syncFileName a String value representing a file reference name
+ * <b>Notes: </b>Maxlength=500, however the max file name length may vary based on remote filesystem limitations
+ * @param fileType a FileType value representing a selected file type
+ */
+ public PutFile(@NonNull String syncFileName, @NonNull FileType fileType) {
+ this();
+ setSdlFileName(syncFileName);
+ setFileType(fileType);
+ }
+
+ /**
* Sets a file reference name
*
* @param sdlFileName
@@ -145,7 +157,7 @@ public class PutFile extends RPCRequest {
* <p></p>
* <b>Notes: </b>Maxlength=500, however the max file name length may vary based on remote filesystem limitations
*/
- public void setSdlFileName(String sdlFileName) {
+ public void setSdlFileName(@NonNull String sdlFileName) {
setParameters(KEY_SDL_FILE_NAME, sdlFileName);
}
@@ -164,7 +176,7 @@ public class PutFile extends RPCRequest {
* @param fileType
* a FileType value representing a selected file type
*/
- public void setFileType(FileType fileType) {
+ public void setFileType(@NonNull FileType fileType) {
setParameters(KEY_FILE_TYPE, fileType);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java
index 87425547a..028436d1e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PutFileResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -31,7 +34,18 @@ public class PutFileResponse extends RPCResponse {
public PutFileResponse(Hashtable<String, Object> hash) {
super(hash);
}
- public void setSpaceAvailable(Integer spaceAvailable) {
+ /**
+ * Constructs a new PutFileResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public PutFileResponse(@NonNull Boolean success, @NonNull Result resultCode, @NonNull Integer spaceAvailable) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ setSpaceAvailable(spaceAvailable);
+ }
+ public void setSpaceAvailable(@NonNull Integer spaceAvailable) {
setParameters(KEY_SPACE_AVAILABLE, spaceAvailable);
}
public Integer getSpaceAvailable() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RadioControlCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RadioControlCapabilities.java
index 3acfe77a9..1eee9a17a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RadioControlCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RadioControlCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -26,13 +28,23 @@ public class RadioControlCapabilities extends RPCStruct{
}
/**
+ * Constructs a new RadioControlCapabilities object
+ * @param moduleName
+ * The short friendly name of the climate control module.
+ * It should not be used to identify a module by mobile application.
+ */
+ public RadioControlCapabilities(@NonNull String moduleName) {
+ this();
+ setModuleName(moduleName);
+ }
+ /**
* Sets the moduleName portion of the RadioControlCapabilities class
*
* @param moduleName
* The short friendly name of the climate control module.
* It should not be used to identify a module by mobile application.
*/
- public void setModuleName(String moduleName) {
+ public void setModuleName(@NonNull String moduleName) {
setValue(KEY_MODULE_NAME, moduleName);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java
index ec198e54c..7d62cf019 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDID.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -80,16 +82,31 @@ public class ReadDID extends RPCRequest {
/**
* Constructs a new ReadDID object indicated by the Hashtable parameter
- * <p></p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public ReadDID(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new ReadDID object
+ * @param ecuName an Integer value representing the ID of the vehicle module
+ * <b>Notes: </b>Minvalue:0; Maxvalue:65535
+ * @param didLocation a List<Integer> value representing raw data from vehicle data DID location(s) <br>
+ * <b>Notes: </b>
+ * <ul>
+ * <li>Minvalue:0; Maxvalue:65535</li>
+ * <li>ArrayMin:0; ArrayMax:1000</li>
+ * </ul>
+ */
+ public ReadDID(@NonNull Integer ecuName, @NonNull List<Integer> didLocation) {
+ this();
+ setEcuName(ecuName);
+ setDidLocation(didLocation);
+ }
+
+ /**
* Sets an ID of the vehicle module
*
* @param ecuName
@@ -97,7 +114,7 @@ public class ReadDID extends RPCRequest {
* <p></p>
* <b>Notes: </b>Minvalue:0; Maxvalue:65535
*/
- public void setEcuName(Integer ecuName) {
+ public void setEcuName(@NonNull Integer ecuName) {
setParameters(KEY_ECU_NAME, ecuName);
}
@@ -124,7 +141,7 @@ public class ReadDID extends RPCRequest {
* <li>ArrayMin:0; ArrayMax:1000</li>
* </ul>
*/
- public void setDidLocation(List<Integer> didLocation) {
+ public void setDidLocation(@NonNull List<Integer> didLocation) {
setParameters(KEY_DID_LOCATION, didLocation);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java
index e0633198c..3cf835906 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ReadDIDResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
import java.util.List;
@@ -20,6 +23,16 @@ public class ReadDIDResponse extends RPCResponse {
public ReadDIDResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new ReadDIDResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public ReadDIDResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
public void setDidResult(List<DIDResult> didResult) {
setParameters(KEY_DID_RESULT, didResult);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java
index e0d50e073..d2545b5e5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Rectangle.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -51,10 +53,18 @@ public class Rectangle extends RPCStruct {
super(hash);
}
+ public Rectangle(@NonNull Float x, @NonNull Float y, @NonNull Float width, @NonNull Float height) {
+ this();
+ setX(x);
+ setY(y);
+ setWidth(width);
+ setHeight(height);
+ }
+
/**
* Set the X-coordinate pixel in of the user control that starts in the upper left corner
*/
- public void setX(Float x) {
+ public void setX(@NonNull Float x) {
setValue(KEY_X, x);
}
@@ -68,7 +78,7 @@ public class Rectangle extends RPCStruct {
/**
* Set the Y-coordinate pixel of the user control that starts in the upper left corner
*/
- public void setY(Float y) {
+ public void setY(@NonNull Float y) {
setValue(KEY_Y, y);
}
@@ -82,7 +92,7 @@ public class Rectangle extends RPCStruct {
/**
* Set the width in pixels of the user control's bounding rectangle in pixels
*/
- public void setWidth(Float width) {
+ public void setWidth(@NonNull Float width) {
setValue(KEY_WIDTH, width);
}
@@ -96,7 +106,7 @@ public class Rectangle extends RPCStruct {
/**
* The height in pixels of the user control's bounding rectangle
*/
- public void setHeight(Float height) {
+ public void setHeight(@NonNull Float height) {
setValue(KEY_HEIGHT, height);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java
index b6e9b50dc..e52498874 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterface.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.AppHMIType;
@@ -265,6 +267,44 @@ public class RegisterAppInterface extends RPCRequest {
super(hash);
}
/**
+ * Constructs a new RegisterAppInterface object
+ * @param syncMsgVersion a SdlMsgVersion object representing version of the SDL&reg; SmartDeviceLink interface <br>
+ * <b>Notes: </b>To be compatible, app msg major version number
+ * must be less than or equal to SDL&reg; major version number.
+ * If msg versions are incompatible, app has 20 seconds to
+ * attempt successful RegisterAppInterface (w.r.t. msg version)
+ * on underlying protocol session, else will be terminated. Major
+ * version number is a compatibility declaration. Minor version
+ * number indicates minor functional variations (e.g. features,
+ * capabilities, bug fixes) when sent from SDL&reg; to app (in
+ * RegisterAppInterface response). However, the minor version
+ * number sent from the app to SDL&reg; (in RegisterAppInterface
+ * request) is ignored by SDL&reg;
+ * @param appName a String value representing the Mobile Application's Name <br>
+ * <b>Notes: </b>
+ * <ul>
+ * <li>Must be 1-100 characters in length</li>
+ * <li>May not be the same (by case insensitive comparison) as
+ * the name or any synonym of any currently-registered
+ * application</li>
+ * </ul>
+ * @param isMediaApplication a Boolean value
+ * @param languageDesired a Language Enumeration
+ * @param hmiDisplayLanguageDesired
+ * @param appID a String value representing a unique ID, which an app will be given when approved <br>
+ * <b>Notes: </b>Maxlength = 100
+ */
+ public RegisterAppInterface(@NonNull SdlMsgVersion syncMsgVersion, @NonNull String appName, @NonNull Boolean isMediaApplication,
+ @NonNull Language languageDesired, @NonNull Language hmiDisplayLanguageDesired, @NonNull String appID) {
+ this();
+ setSdlMsgVersion(syncMsgVersion);
+ setAppName(appName);
+ setIsMediaApplication(isMediaApplication);
+ setLanguageDesired(languageDesired);
+ setHmiDisplayLanguageDesired(hmiDisplayLanguageDesired);
+ setAppID(appID);
+ }
+ /**
* Gets the version of the SDL&reg; SmartDeviceLink interface
*
* @return SdlMsgVersion -a SdlMsgVersion object representing version of
@@ -292,8 +332,9 @@ public class RegisterAppInterface extends RPCRequest {
* RegisterAppInterface response). However, the minor version
* number sent from the app to SDL&reg; (in RegisterAppInterface
* request) is ignored by SDL&reg;
+ *
*/
- public void setSdlMsgVersion(SdlMsgVersion sdlMsgVersion) {
+ public void setSdlMsgVersion(@NonNull SdlMsgVersion sdlMsgVersion) {
setParameters(KEY_SDL_MSG_VERSION, sdlMsgVersion);
}
@@ -329,7 +370,7 @@ public class RegisterAppInterface extends RPCRequest {
* application</li>
* </ul>
*/
- public void setAppName(String appName) {
+ public void setAppName(@NonNull String appName) {
setParameters(KEY_APP_NAME, appName);
}
@@ -443,7 +484,7 @@ public class RegisterAppInterface extends RPCRequest {
* @param isMediaApplication
* a Boolean value
*/
- public void setIsMediaApplication(Boolean isMediaApplication) {
+ public void setIsMediaApplication(@NonNull Boolean isMediaApplication) {
setParameters(KEY_IS_MEDIA_APPLICATION, isMediaApplication);
}
/**
@@ -464,7 +505,7 @@ public class RegisterAppInterface extends RPCRequest {
*
*
*/
- public void setLanguageDesired(Language languageDesired) {
+ public void setLanguageDesired(@NonNull Language languageDesired) {
setParameters(KEY_LANGUAGE_DESIRED, languageDesired);
}
@@ -488,7 +529,7 @@ public class RegisterAppInterface extends RPCRequest {
* @param hmiDisplayLanguageDesired
* @since SmartDeviceLink 2.0
*/
- public void setHmiDisplayLanguageDesired(Language hmiDisplayLanguageDesired) {
+ public void setHmiDisplayLanguageDesired(@NonNull Language hmiDisplayLanguageDesired) {
setParameters(KEY_HMI_DISPLAY_LANGUAGE_DESIRED, hmiDisplayLanguageDesired);
}
@@ -555,7 +596,7 @@ public class RegisterAppInterface extends RPCRequest {
* <b>Notes: </b>Maxlength = 100
* @since SmartDeviceLink 2.0
*/
- public void setAppID(String appID) {
+ public void setAppID(@NonNull String appID) {
setParameters(KEY_APP_ID, appID);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java
index c01041338..0fea2f9a9 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/RegisterAppInterfaceResponse.java
@@ -1,11 +1,14 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.Version;
import com.smartdevicelink.proxy.rpc.enums.HmiZoneCapabilities;
import com.smartdevicelink.proxy.rpc.enums.Language;
import com.smartdevicelink.proxy.rpc.enums.PrerecordedSpeech;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
import com.smartdevicelink.proxy.rpc.enums.VrCapabilities;
@@ -64,6 +67,16 @@ public class RegisterAppInterfaceResponse extends RPCResponse {
* @return SdlMsgVersion -a SdlMsgVersion object representing version of
* the SDL&reg; SmartDeviceLink interface
*/
+ /**
+ * Constructs a new RegisterAppInterfaceResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public RegisterAppInterfaceResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
@SuppressWarnings("unchecked")
public SdlMsgVersion getSdlMsgVersion() {
return (SdlMsgVersion) getObject(SdlMsgVersion.class, KEY_SDL_MSG_VERSION);
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java
index 664eb33a9..2adb03ec1 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalProperties.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.GlobalProperty;
@@ -68,15 +70,24 @@ public class ResetGlobalProperties extends RPCRequest {
/**
* Constructs a new ResetGlobalProperties object indicated by the Hashtable
* parameter
- *
- *
- * @param hash
- * The Hashtable to use
+ *
+ * @param hash The Hashtable to use
*/
public ResetGlobalProperties(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new ResetGlobalProperties object
+ * @param properties a List<GlobalProperty> An array of one or more
+ * GlobalProperty enumeration elements indicating which global
+ * properties to reset to their default value <br>
+ * <b>Notes: </b>Array must have at least one element
+ */
+ public ResetGlobalProperties(@NonNull List<GlobalProperty> properties) {
+ this();
+ setProperties(properties);
+ }
+ /**
* Gets an array of one or more GlobalProperty enumeration elements
* indicating which global properties to reset to their default value
*
@@ -98,7 +109,7 @@ public class ResetGlobalProperties extends RPCRequest {
* <p></p>
* <b>Notes: </b>Array must have at least one element
*/
- public void setProperties( List<GlobalProperty> properties ) {
+ public void setProperties(@NonNull List<GlobalProperty> properties ) {
setParameters(KEY_PROPERTIES, properties);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalPropertiesResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalPropertiesResponse.java
index dec7cde94..78f245ea8 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalPropertiesResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ResetGlobalPropertiesResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Reset Global Properties Response is sent, when ResetGlobalProperties has been called
@@ -30,4 +33,14 @@ public class ResetGlobalPropertiesResponse extends RPCResponse {
public ResetGlobalPropertiesResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new ResetGlobalPropertiesResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public ResetGlobalPropertiesResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java
index a821264e6..e9a3168e7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScreenParams.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -58,12 +60,21 @@ public class ScreenParams extends RPCStruct {
public ScreenParams(Hashtable<String, Object> hash) {
super(hash);
}
-
+
+ /**
+ * Constructs a new ScreenParams object
+ */
+
+ public ScreenParams(@NonNull ImageResolution resolution) {
+ this();
+ setImageResolution(resolution);
+ }
+
@SuppressWarnings("unchecked")
public ImageResolution getImageResolution() {
return (ImageResolution) getObject(ImageResolution.class, KEY_RESOLUTION);
}
- public void setImageResolution( ImageResolution resolution ) {
+ public void setImageResolution( @NonNull ImageResolution resolution ) {
setValue(KEY_RESOLUTION, resolution);
}
@SuppressWarnings("unchecked")
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java
index 971b68712..8f249ffe0 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessage.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.Language;
@@ -65,7 +67,7 @@ import java.util.List;
* <p>REJECTED </p>
* <p>ABORTED</p>
*
- * @see scrollableMessageBody
+ * @see scrollableMessageBody
* @see TextFieldName
*/
public class ScrollableMessage extends RPCRequest {
@@ -85,14 +87,23 @@ public class ScrollableMessage extends RPCRequest {
* parameter
* <p></p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public ScrollableMessage(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new ScrollableMessage object
+ * @param scrollableMessageBody a String value representing the Body of text that can include newlines and tabs <br>
+ * <b>Notes: </b>Maxlength=500
+ */
+ public ScrollableMessage(@NonNull String scrollableMessageBody) {
+ this();
+ setScrollableMessageBody(scrollableMessageBody);
+ }
+
+ /**
* Sets a Body of text that can include newlines and tabs
*
* @param scrollableMessageBody
@@ -101,7 +112,7 @@ public class ScrollableMessage extends RPCRequest {
* <p></p>
* <b>Notes: </b>Maxlength=500
*/
- public void setScrollableMessageBody(String scrollableMessageBody) {
+ public void setScrollableMessageBody(@NonNull String scrollableMessageBody) {
setParameters(KEY_SCROLLABLE_MESSAGE_BODY, scrollableMessageBody);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessageResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessageResponse.java
index 880c27f95..2113e3095 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessageResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ScrollableMessageResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Scrollable Message Response is sent, when ScrollableMessage has been called
@@ -30,4 +33,14 @@ public class ScrollableMessageResponse extends RPCResponse {
public ScrollableMessageResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new ScrollableMessageResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public ScrollableMessageResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java
index 2221972c1..128d2050f 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SdlMsgVersion.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -62,7 +64,17 @@ public class SdlMsgVersion extends RPCStruct {
* <li>maxvalue="10"</li>
* </ul>
* @return the major version
- */
+ */
+ /**
+ * Constructs a newly allocated SdlMsgVersion object
+ * @param majorVersion minvalue="1" and maxvalue="10"
+ * @param minorVersion min: 0; max: 1000
+ */
+ public SdlMsgVersion(@NonNull Integer majorVersion, @NonNull Integer minorVersion) {
+ this();
+ setMajorVersion(majorVersion);
+ setMinorVersion(minorVersion);
+ }
public Integer getMajorVersion() {
return getInteger( KEY_MAJOR_VERSION );
}
@@ -74,7 +86,7 @@ public class SdlMsgVersion extends RPCStruct {
* </ul>
* @param majorVersion minvalue="1" and maxvalue="10"
*/
- public void setMajorVersion( Integer majorVersion ) {
+ public void setMajorVersion( @NonNull Integer majorVersion ) {
setValue(KEY_MAJOR_VERSION, majorVersion);
}
/**
@@ -96,7 +108,7 @@ public class SdlMsgVersion extends RPCStruct {
* </ul>
* @param minorVersion min: 0; max: 1000
*/
- public void setMinorVersion( Integer minorVersion ) {
+ public void setMinorVersion( @NonNull Integer minorVersion ) {
setValue(KEY_MINOR_VERSION, minorVersion);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java
index e7c0c7d30..58761a4a5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendHapticDataResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -51,4 +54,14 @@ public class SendHapticDataResponse extends RPCResponse {
public SendHapticDataResponse(Hashtable<String, Object> hash){
super(hash);
}
+ /**
+ * Constructs a new SendHapticDataResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SendHapticDataResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocationResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocationResponse.java
index dcee04e9a..dc1193a8b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocationResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SendLocationResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Add SendLocation Response is sent, when SendLocation has been called
@@ -19,4 +22,15 @@ public class SendLocationResponse extends RPCResponse{
public SendLocationResponse(Hashtable<String, Object> hash){
super(hash);
}
+
+ /**
+ * Constructs a new SendLocationResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SendLocationResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java
index 2063303d9..02ee081c2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIcon.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -58,14 +60,23 @@ public class SetAppIcon extends RPCRequest {
* Constructs a new SetAppIcon object indicated by the Hashtable parameter
* <p></p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public SetAppIcon(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new SetAppIcon object
+ * @param sdlFileName a String value representing a file reference name <br>
+ * <b>Notes: </b>Maxlength=500, however the max file name length may vary based on remote filesystem limitations
+ */
+ public SetAppIcon(@NonNull String sdlFileName) {
+ this();
+ setSdlFileName(sdlFileName);
+ }
+
+ /**
* Sets a file reference name
*
* @param sdlFileName
@@ -73,7 +84,7 @@ public class SetAppIcon extends RPCRequest {
* <p></p>
* <b>Notes: </b>Maxlength=500, however the max file name length may vary based on remote filesystem limitations
*/
- public void setSdlFileName(String sdlFileName) {
+ public void setSdlFileName(@NonNull String sdlFileName) {
setParameters(KEY_SDL_FILE_NAME, sdlFileName);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIconResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIconResponse.java
index c6d0f7ddf..45e6ff180 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIconResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetAppIconResponse.java
@@ -1,9 +1,13 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
+
/**
* Set App Icon Response is sent, when SetAppIcon has been called.
*
@@ -29,4 +33,15 @@ public class SetAppIconResponse extends RPCResponse {
public SetAppIconResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new ResetGlobalPropertiesResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SetAppIconResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java
index d1b0b08ca..b2bd6f6f3 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayout.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -83,15 +85,25 @@ public class SetDisplayLayout extends RPCRequest {
}
/**
+ * Constructs a new SetDisplayLayout object
+ * @param displayLayout
+ * a String value representing a display layout
+ */
+ public SetDisplayLayout(@NonNull String displayLayout) {
+ this();
+ setDisplayLayout(displayLayout);
+ }
+
+ /**
* Sets a display layout. Predefined or dynamically created screen layout.
* Currently only predefined screen layouts are defined. Predefined layouts
* include: "ONSCREEN_PRESETS" Custom screen containing app-defined onscreen
* presets. Currently defined for GEN2
*
* @param displayLayout
- * a String value representing a diaply layout
+ * a String value representing a display layout
*/
- public void setDisplayLayout(String displayLayout) {
+ public void setDisplayLayout(@NonNull String displayLayout) {
setParameters(KEY_DISPLAY_LAYOUT, displayLayout);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java
index 36e9fb7db..48b98bd24 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetDisplayLayoutResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
import java.util.List;
@@ -35,7 +38,18 @@ public class SetDisplayLayoutResponse extends RPCResponse {
public SetDisplayLayoutResponse(Hashtable<String, Object> hash) {
super(hash);
}
-
+
+ /**
+ * Constructs a new SetDisplayLayoutResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SetDisplayLayoutResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
+
@SuppressWarnings("unchecked")
public DisplayCapabilities getDisplayCapabilities() {
return (DisplayCapabilities) getObject(DisplayCapabilities.class, KEY_DISPLAY_CAPABILITIES);
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalPropertiesResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalPropertiesResponse.java
index f33bc0b7c..89b5219a5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalPropertiesResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetGlobalPropertiesResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Set Global Properties Response is sent, when SetGlobalProperties has been called
@@ -30,4 +33,15 @@ public class SetGlobalPropertiesResponse extends RPCResponse {
public SetGlobalPropertiesResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new SetGlobalPropertiesResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SetGlobalPropertiesResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleData.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleData.java
index 75077e3cb..ad5a0d26a 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleData.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleData.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -32,11 +34,20 @@ public class SetInteriorVehicleData extends RPCRequest {
}
/**
+ * Constructs a new SetInteriorVehicleData object
+ * @param moduleData
+ */
+ public SetInteriorVehicleData(@NonNull ModuleData moduleData) {
+ this();
+ setModuleData(moduleData);
+ }
+
+ /**
* Sets the moduleData
*
* @param moduleData
*/
- public void setModuleData(ModuleData moduleData) {
+ public void setModuleData(@NonNull ModuleData moduleData) {
setParameters(KEY_MODULE_DATA, moduleData);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleDataResponse.java
index 6a7079735..837b36fc7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetInteriorVehicleDataResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -28,6 +31,19 @@ public class SetInteriorVehicleDataResponse extends RPCResponse {
}
/**
+ * Constructs a new SetInteriorVehicleDataResponse object
+ * @param moduleData
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SetInteriorVehicleDataResponse(@NonNull ModuleData moduleData, @NonNull Result resultCode, @NonNull Boolean success) {
+ this();
+ setModuleData(moduleData);
+ setResultCode(resultCode);
+ setSuccess(success);
+ }
+
+ /**
* Gets the moduleData
*
* @return ModuleData
@@ -41,7 +57,7 @@ public class SetInteriorVehicleDataResponse extends RPCResponse {
*
* @param moduleData
*/
- public void setModuleData(ModuleData moduleData) {
+ public void setModuleData(@NonNull ModuleData moduleData) {
setParameters(KEY_MODULE_DATA, moduleData);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
index bcef52745..4ec73b9d7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.UpdateMode;
@@ -85,13 +87,27 @@ public class SetMediaClockTimer extends RPCRequest {
* parameter
* <p></p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public SetMediaClockTimer(Hashtable<String, Object> hash) {
super(hash);
}
/**
+ * Constructs a new SetMediaClockTimer object
+ * @param updateMode a Enumeration value (COUNTUP/COUNTDOWN/PAUSE/RESUME) <br>
+ * <b>Notes: </b>
+ * <ul>
+ * <li>When updateMode is PAUSE, RESUME or CLEAR, the start time value
+ * is ignored</li>
+ * <li>When updateMode is RESUME, the timer resumes counting from
+ * the timer's value when it was paused</li>
+ * </ul>
+ */
+ public SetMediaClockTimer(@NonNull UpdateMode updateMode) {
+ this();
+ setUpdateMode(updateMode);
+ }
+ /**
* Gets the Start Time which media clock timer is set
*
* @return StartTime -a StartTime object specifying hour, minute, second
@@ -149,7 +165,7 @@ public class SetMediaClockTimer extends RPCRequest {
* the timer's value when it was paused</li>
* </ul>
*/
- public void setUpdateMode( UpdateMode updateMode ) {
+ public void setUpdateMode( @NonNull UpdateMode updateMode ) {
setParameters(KEY_UPDATE_MODE, updateMode);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimerResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimerResponse.java
index e74ecc1b9..56a63c947 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimerResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimerResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Set Media Clock Timer Response is sent, when SetMediaClockTimer has been called
@@ -30,4 +33,14 @@ public class SetMediaClockTimerResponse extends RPCResponse {
public SetMediaClockTimerResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new SetMediaClockTimerResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SetMediaClockTimerResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbtResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbtResponse.java
index a3e2dbaf1..5482a00ae 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbtResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowConstantTbtResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Show Constant TBT Response is sent, when ShowConstantTBT has been called
@@ -20,4 +23,14 @@ public class ShowConstantTbtResponse extends RPCResponse{
super(hash);
}
+ /**
+ * Constructs a new ShowConstantTbtResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public ShowConstantTbtResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowResponse.java
index 54ff95033..1187f6687 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/ShowResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Show Response is sent, when Show has been called
@@ -30,4 +33,15 @@ public class ShowResponse extends RPCResponse {
public ShowResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new ShowResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public ShowResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java
index 4b8722ea5..6aa49ad28 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SingleTireStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.ComponentVolumeStatus;
@@ -41,12 +43,21 @@ public class SingleTireStatus extends RPCStruct {
public SingleTireStatus(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a newly allocated SingleTireStatus object
+ * @param status Describes the volume status of a single tire
+ */
+ public SingleTireStatus(@NonNull ComponentVolumeStatus status){
+ this();
+ setStatus(status);
+ }
/**
* set the volume status of a single tire
* @param status the volume status of a single tire
*/
- public void setStatus(ComponentVolumeStatus status) {
+ public void setStatus(@NonNull ComponentVolumeStatus status) {
setValue(KEY_STATUS, status);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java
index 31fb55b1e..df92e22fe 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Slider.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -110,6 +112,19 @@ public class Slider extends RPCRequest {
}
/**
+ * Constructs a new Slider object \
+ * @param numTicks Number of selectable items on a horizontal axis.
+ * @param position Initial position of slider control (cannot exceed numTicks)
+ * @param sliderHeader Text header to display
+ */
+ public Slider(@NonNull Integer numTicks, @NonNull Integer position, @NonNull String sliderHeader){
+ this();
+ setNumTicks(numTicks);
+ setPosition(position);
+ setSliderHeader(sliderHeader);
+ }
+
+ /**
* Sets a number of selectable items on a horizontal axis
*
* @param numTicks
@@ -118,7 +133,7 @@ public class Slider extends RPCRequest {
* <p></p>
* <b>Notes: </b>Minvalue=2; Maxvalue=26
*/
- public void setNumTicks(Integer numTicks) {
+ public void setNumTicks(@NonNull Integer numTicks) {
setParameters(KEY_NUM_TICKS, numTicks);
}
@@ -141,7 +156,7 @@ public class Slider extends RPCRequest {
* <p></p>
* <b>Notes: </b>Minvalue=1; Maxvalue=26
*/
- public void setPosition(Integer position) {
+ public void setPosition(@NonNull Integer position) {
setParameters(KEY_POSITION, position);
}
@@ -163,7 +178,7 @@ public class Slider extends RPCRequest {
* <p></p>
* <b>Notes: </b>Maxlength=500
*/
- public void setSliderHeader(String sliderHeader) {
+ public void setSliderHeader(@NonNull String sliderHeader) {
setParameters(KEY_SLIDER_HEADER, sliderHeader);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java
index 8d226d72c..b7f4a08a6 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SliderResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -31,6 +34,18 @@ public class SliderResponse extends RPCResponse {
public SliderResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new SliderResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SliderResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
+
/**
* Sets an Initial position of slider control
* @param sliderPosition
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java
index 23e31316d..751729220 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButton.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -79,22 +81,32 @@ public class SoftButton extends RPCStruct {
public static final String KEY_TEXT = "text";
public static final String KEY_TYPE = "type";
public static final String KEY_IMAGE = "image";
+
+ public SoftButton() { }
+
/**
*
* <p>Constructs a new SoftButton object indicated by the Hashtable
* parameter</p>
- *
- *
- * @param hash
- *
- * The Hashtable to use
+ *
+ * @param hash The Hashtable to use
*/
-
- public SoftButton() { }
- public SoftButton(Hashtable<String, Object> hash) {
+ public SoftButton(Hashtable<String, Object> hash) {
super(hash);
}
- public void setType(SoftButtonType type) {
+
+ /**
+ * Constructs a new SoftButton object
+ * @param type Describes, whether it is text, highlighted text, icon, or dynamic image.
+ * @param softButtonID Value which is returned via OnButtonPress / OnButtonEvent
+ */
+ public SoftButton(@NonNull SoftButtonType type, @NonNull Integer softButtonID){
+ this();
+ setType(type);
+ setSoftButtonID(softButtonID);
+ }
+
+ public void setType(@NonNull SoftButtonType type) {
setValue(KEY_TYPE, type);
}
public SoftButtonType getType() {
@@ -119,7 +131,7 @@ public class SoftButton extends RPCStruct {
public Boolean getIsHighlighted() {
return getBoolean(KEY_IS_HIGHLIGHTED);
}
- public void setSoftButtonID(Integer softButtonID) {
+ public void setSoftButtonID(@NonNull Integer softButtonID) {
setValue(KEY_SOFT_BUTTON_ID, softButtonID);
}
public Integer getSoftButtonID() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java
index 205dfe74c..9299e1b2b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SoftButtonCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -66,12 +68,27 @@ public class SoftButtonCapabilities extends RPCStruct {
public SoftButtonCapabilities(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a newly allocated SoftButtonCapabilities object
+ * @param shortPressAvailable The button supports a short press.
+ * @param longPressAvailable The button supports a LONG press
+ * @param upDownAvailable The button supports "button down" and "button up".
+ * @param imageSupported The button supports referencing a static or dynamic image.
+ */
+ public SoftButtonCapabilities(@NonNull Boolean shortPressAvailable, @NonNull Boolean longPressAvailable, @NonNull Boolean upDownAvailable, @NonNull Boolean imageSupported){
+ this();
+ setShortPressAvailable(shortPressAvailable);
+ setLongPressAvailable(longPressAvailable);
+ setUpDownAvailable(upDownAvailable);
+ setImageSupported(imageSupported);
+ }
/**
* set the button supports a short press.
* @param shortPressAvailable whether the button supports a short press.
*/
- public void setShortPressAvailable(Boolean shortPressAvailable) {
+ public void setShortPressAvailable(@NonNull Boolean shortPressAvailable) {
setValue(KEY_SHORT_PRESS_AVAILABLE, shortPressAvailable);
}
@@ -87,7 +104,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* set the button supports a LONG press.
* @param longPressAvailable whether the button supports a long press
*/
- public void setLongPressAvailable(Boolean longPressAvailable) {
+ public void setLongPressAvailable(@NonNull Boolean longPressAvailable) {
setValue(KEY_LONG_PRESS_AVAILABLE, longPressAvailable);
}
@@ -103,7 +120,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* set the button supports "button down" and "button up".
* @param upDownAvailable the button supports "button down" and "button up".
*/
- public void setUpDownAvailable(Boolean upDownAvailable) {
+ public void setUpDownAvailable(@NonNull Boolean upDownAvailable) {
setValue(KEY_UP_DOWN_AVAILABLE, upDownAvailable);
}
@@ -119,7 +136,7 @@ public class SoftButtonCapabilities extends RPCStruct {
* set the button supports referencing a static or dynamic image.
* @param imageSupported whether the button supports referencing a static or dynamic image.
*/
- public void setImageSupported(Boolean imageSupported) {
+ public void setImageSupported(@NonNull Boolean imageSupported) {
setValue(KEY_IMAGE_SUPPORTED, imageSupported);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java
index 347960731..8a0b3a380 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Speak.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
@@ -120,12 +122,20 @@ public class Speak extends RPCRequest {
* Constructs a new Speak object indicated by the Hashtable parameter
* <p></p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public Speak(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new Speak object
+ * @param ttsChunks An array of 1-100 TTSChunk structs which, taken together, specify the phrase to be spoken.
+ */
+ public Speak(@NonNull List<TTSChunk> ttsChunks){
+ this();
+ setTtsChunks(ttsChunks);
+ }
/**
* Gets a List<TTSChunk> representing an array of 1-100 TTSChunk structs
* which, taken together, specify the phrase to be spoken
@@ -152,7 +162,7 @@ public class Speak extends RPCRequest {
* <li>Each chunk can be no more than 500 characters</li>
* </ul>
*/
- public void setTtsChunks( List<TTSChunk> ttsChunks ) {
+ public void setTtsChunks( @NonNull List<TTSChunk> ttsChunks ) {
setParameters(KEY_TTS_CHUNKS, ttsChunks);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SpeakResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SpeakResponse.java
index 740d24776..5f78b609b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SpeakResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SpeakResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Speak Response is sent, when Speak has been called
@@ -30,4 +33,16 @@ public class SpeakResponse extends RPCResponse {
public SpeakResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new SpeakResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SpeakResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
+
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java
index ec515ad46..e047a716b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/StartTime.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -53,6 +55,19 @@ public class StartTime extends RPCStruct {
public StartTime(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a newly allocated StartTime object
+ * @param hours The hour
+ * @param minutes The minute
+ * @param seconds The second
+ */
+ public StartTime(@NonNull Integer hours, @NonNull Integer minutes, @NonNull Integer seconds){
+ this();
+ setHours(hours);
+ setMinutes(minutes);
+ setSeconds(seconds);
+ }
/**
* Get the hour. Minvalue="0", maxvalue="59"
* <p><b>Note:</b></p>Some display types only support a max value of 19. If out of range, it will be rejected.
@@ -66,7 +81,7 @@ public class StartTime extends RPCStruct {
* <p><b>Note:</b></p>Some display types only support a max value of 19. If out of range, it will be rejected.
* @param hours min: 0; max: 59
*/
- public void setHours( Integer hours ) {
+ public void setHours(@NonNull Integer hours ) {
setValue(KEY_HOURS, hours);
}
/**
@@ -80,7 +95,7 @@ public class StartTime extends RPCStruct {
* Set the minute. Minvalue="0", maxvalue="59".
* @param minutes min: 0; max: 59
*/
- public void setMinutes( Integer minutes ) {
+ public void setMinutes( @NonNull Integer minutes ) {
setValue(KEY_MINUTES, minutes);
}
/**
@@ -94,7 +109,7 @@ public class StartTime extends RPCStruct {
* Set the second. Minvalue="0", maxvalue="59".
* @param seconds min: 0 max: 59
*/
- public void setSeconds( Integer seconds ) {
+ public void setSeconds( @NonNull Integer seconds ) {
setValue(KEY_SECONDS, seconds);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java
index 4eedfcb47..80e988e35 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButton.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
@@ -88,12 +90,20 @@ public class SubscribeButton extends RPCRequest {
* parameter</p>
*
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public SubscribeButton(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new SubscribeButton object
+ * @param buttonName Name of the button to subscribe.
+ */
+ public SubscribeButton(@NonNull ButtonName buttonName){
+ this();
+ setButtonName(buttonName);
+ }
/**
* Gets the name of the button to subscribe to
* @return ButtonName -an enum value, see <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
@@ -105,7 +115,7 @@ public class SubscribeButton extends RPCRequest {
* Sets a name of the button to subscribe to
* @param buttonName a <i>{@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i> value
*/
- public void setButtonName( ButtonName buttonName ) {
+ public void setButtonName(@NonNull ButtonName buttonName ) {
setParameters(KEY_BUTTON_NAME, buttonName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButtonResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButtonResponse.java
index 81fca78c2..fbed88bbc 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButtonResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeButtonResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Sub scribeButton Response is sent, when SubscribeButton has been called
@@ -24,10 +27,20 @@ public class SubscribeButtonResponse extends RPCResponse {
* parameter</p>
*
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public SubscribeButtonResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new SubscribeButtonResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SubscribeButtonResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java
index 3c2a245ee..86f23c69b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleDataResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -48,12 +51,21 @@ public class SubscribeVehicleDataResponse extends RPCResponse {
* parameter</p>
*
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public SubscribeVehicleDataResponse(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a new SubscribeVehicleDataResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SubscribeVehicleDataResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
/**
* Sets gps
* @param gps
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java
index 880a97229..8ca946c5c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -13,4 +16,15 @@ public class SubscribeWayPointsResponse extends RPCResponse {
public SubscribeWayPointsResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new SubscribeWayPointsResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SubscribeWayPointsResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
index 386f28b45..6ee294905 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
@@ -22,6 +24,15 @@ public class SystemCapability extends RPCStruct {
super(hash);
}
+ /**
+ * Create a systemCapability object
+ * @param systemCapabilityType The type
+ */
+ public SystemCapability(@NonNull SystemCapabilityType systemCapabilityType){
+ this();
+ setSystemCapabilityType(systemCapabilityType);
+ }
+
/**
*
* @return The SystemCapabilityType that indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist
@@ -33,7 +44,7 @@ public class SystemCapability extends RPCStruct {
/**
* @param value Set the SystemCapabilityType that indicates which type of data should be changed and identifies which data object exists in this struct.
*/
- public void setSystemCapabilityType(SystemCapabilityType value){
+ public void setSystemCapabilityType(@NonNull SystemCapabilityType value){
setValue(KEY_SYSTEM_CAPABILITY_TYPE, value);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java
index 154907419..7c614c447 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequest.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.RequestType;
@@ -63,6 +65,15 @@ public class SystemRequest extends RPCRequest {
super(hash);
}
+ /**
+ * Constructs a new SystemRequest object
+ * @param requestType The type of system request.
+ */
+ public SystemRequest(@NonNull RequestType requestType){
+ this();
+ setRequestType(requestType);
+ }
+
@SuppressWarnings("unchecked")
public List<String> getLegacyData() {
return (List<String>) getObject(String.class, KEY_DATA);
@@ -84,7 +95,7 @@ public class SystemRequest extends RPCRequest {
return (RequestType) getObject(RequestType.class, KEY_REQUEST_TYPE);
}
- public void setRequestType(RequestType requestType) {
+ public void setRequestType(@NonNull RequestType requestType) {
setParameters(KEY_REQUEST_TYPE, requestType);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequestResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequestResponse.java
index 6fc920f1e..fab8b09ba 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequestResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemRequestResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* System Request Response is sent, when SystemRequest has been called
@@ -18,4 +21,15 @@ public class SystemRequestResponse extends RPCResponse {
public SystemRequestResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new SystemRequestResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public SystemRequestResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java
index d98bb8a5c..a1e26d6b2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TTSChunk.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
@@ -51,10 +53,21 @@ public class TTSChunk extends RPCStruct {
public TTSChunk(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a newly allocated TTSChunk object
+ * @param text Text to be spoken, or a phoneme specification, or the name of a pre-recorded sound. The contents of this field are indicated by the "type" field.
+ * @param type Indicates the type of information in the "text" field (e.g. phrase to be spoken, phoneme specification, name of pre-recorded sound).
+ */
+ public TTSChunk(@NonNull String text, @NonNull SpeechCapabilities type){
+ this();
+ setText(text);
+ setType(type);
+ }
/**
* Get text to be spoken, or a phoneme specification, or the name of a pre-recorded sound. The contents of this field are indicated by the "type" field.
* @return text to be spoken, or a phoneme specification, or the name of a pre-recorded sound
- */
+ */
public String getText() {
return getString( KEY_TEXT );
}
@@ -62,7 +75,7 @@ public class TTSChunk extends RPCStruct {
* Set the text to be spoken, or a phoneme specification, or the name of a pre-recorded sound. The contents of this field are indicated by the "type" field.
* @param text to be spoken, or a phoneme specification, or the name of a pre-recorded sound.
*/
- public void setText( String text ) {
+ public void setText(@NonNull String text ) {
setValue(KEY_TEXT, text);
}
/**
@@ -76,7 +89,7 @@ public class TTSChunk extends RPCStruct {
* Set the type of information in the "text" field (e.g. phrase to be spoken, phoneme specification, name of pre-recorded sound).
* @param type the type of information in the "text" field
*/
- public void setType( SpeechCapabilities type ) {
+ public void setType(@NonNull SpeechCapabilities type ) {
setValue(KEY_TYPE, type);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Temperature.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Temperature.java
index 29fea734f..87513a3cd 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Temperature.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/Temperature.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.TemperatureUnit;
import com.smartdevicelink.util.SdlDataTypeConverter;
@@ -15,13 +17,24 @@ public class Temperature extends RPCStruct{
super(hash);
}
+ /**
+ * Create the temperature object
+ * @param unit Temperature Unit.
+ * @param value Temperature Value in TemperatureUnit specified unit
+ */
+ public Temperature(@NonNull TemperatureUnit unit, @NonNull Float value){
+ this();
+ setUnit(unit);
+ setValue(value);
+ }
+
/**
* Sets the unit portion of the Temperature class
*
* @param unit
* Temperature Unit.
*/
- public void setUnit(TemperatureUnit unit) {
+ public void setUnit(@NonNull TemperatureUnit unit) {
setValue(KEY_UNIT, unit);
}
@@ -50,7 +63,7 @@ public class Temperature extends RPCStruct{
* @param value
* Temperature Value in TemperatureUnit specified unit. Range depends on OEM and is not checked by SDL.
*/
- public void setValue(Float value) {
+ public void setValue(@NonNull Float value) {
setValue(KEY_VALUE, value);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java
index 28e283e9f..7f745186b 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TextField.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -61,7 +63,7 @@ import static com.smartdevicelink.proxy.rpc.TireStatus.KEY_INNER_RIGHT_REAR;
* @see PerformInteraction
* @see ScrollableMessage
* @see PerformAudioPassThru
- * @see ShowConstantTBT
+ * @see ShowConstantTbt
*
*/
public class TextField extends RPCStruct {
@@ -80,6 +82,20 @@ public class TextField extends RPCStruct {
public TextField(Hashtable<String, Object> hash) {
super(hash);
}
+ /**
+ * Constructs a newly allocated TextField object
+ * @param name Enumeration identifying the field.
+ * @param characterSet The character set that is supported in this field.
+ * @param width The number of characters in one row of this field.
+ * @param rows The number of rows for this text field.
+ */
+ public TextField(@NonNull TextFieldName name, @NonNull CharacterSet characterSet, @NonNull Integer width, @NonNull Integer rows){
+ this();
+ setName(name);
+ setCharacterSet(characterSet);
+ setWidth(width);
+ setRows(rows);
+ }
/**
* Get the enumeration identifying the field.
* @return the name of TextField
@@ -91,7 +107,7 @@ public class TextField extends RPCStruct {
* Set the enumeration identifying the field.
* @param name the name of TextField
*/
- public void setName( TextFieldName name ) {
+ public void setName(@NonNull TextFieldName name ) {
setValue(KEY_NAME, name);
}
/**
@@ -105,7 +121,7 @@ public class TextField extends RPCStruct {
* Set the character set that is supported in this field.
* @param characterSet - the character set
*/
- public void setCharacterSet( CharacterSet characterSet ) {
+ public void setCharacterSet(@NonNull CharacterSet characterSet ) {
setValue(KEY_CHARACTER_SET, characterSet);
}
/**
@@ -127,7 +143,7 @@ public class TextField extends RPCStruct {
* </ul>
* @param width the number of characters in one row of this field
*/
- public void setWidth( Integer width ) {
+ public void setWidth(@NonNull Integer width ) {
setValue(KEY_WIDTH, width);
}
/**
@@ -141,7 +157,7 @@ public class TextField extends RPCStruct {
public Integer getRows() {
return getInteger( KEY_ROWS );
}
- public void setRows( Integer rows ) {
+ public void setRows(@NonNull Integer rows ) {
setValue(KEY_ROWS, rows);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java
index 4b2169215..4a5e95625 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TireStatus.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.VehicleDataNotificationStatus;
import com.smartdevicelink.proxy.rpc.enums.WarningLightStatus;
@@ -79,61 +81,81 @@ public class TireStatus extends RPCStruct {
public static final String KEY_INNER_LEFT_REAR = "innerLeftRear";
public static final String KEY_INNER_RIGHT_REAR = "innerRightRear";
public static final String KEY_RIGHT_REAR = "rightRear";
+
+ public TireStatus() { }
+
/**
* <p>Constructs a new TireStatus object indicated by the Hashtable parameter</p>
- *
- *
- * @param hash
- * <p>
- * The Hashtable to use</p>
+ *
+ * @param hash The Hashtable to use
*/
-
- public TireStatus() { }
- public TireStatus(Hashtable<String, Object> hash) {
+ public TireStatus(Hashtable<String, Object> hash) {
super(hash);
}
- public void setPressureTellTale(WarningLightStatus pressureTellTale) {
+
+ /**
+ * Constructs a new TireStatus object
+ * @param pressureTellTale Status of the Tire Pressure TellTale
+ * @param leftFront The status of the left front tire.
+ * @param rightFront The status of the right front tire.
+ * @param leftRear The status of the left rear tire.
+ * @param rightRear The status of the right rear tire
+ * @param innerLeftRear The status of the inner left rear tire.
+ * @param innerRightRear The status of the inner right rear tire.
+ */
+ public TireStatus(@NonNull WarningLightStatus pressureTellTale, @NonNull SingleTireStatus leftFront, @NonNull SingleTireStatus rightFront, @NonNull SingleTireStatus leftRear, @NonNull SingleTireStatus rightRear, @NonNull SingleTireStatus innerLeftRear, @NonNull SingleTireStatus innerRightRear){
+ this();
+ setPressureTellTale(pressureTellTale);
+ setLeftFront(leftFront);
+ setRightFront(rightFront);
+ setLeftRear(leftRear);
+ setRightRear(rightRear);
+ setInnerLeftRear(innerLeftRear);
+ setInnerRightRear(innerRightRear);
+ }
+
+ public void setPressureTellTale(@NonNull WarningLightStatus pressureTellTale) {
setValue(KEY_PRESSURE_TELL_TALE, pressureTellTale);
}
public WarningLightStatus getPressureTellTale() {
return (WarningLightStatus) getObject(WarningLightStatus.class, KEY_PRESSURE_TELL_TALE);
}
- public void setLeftFront(SingleTireStatus leftFront) {
+ public void setLeftFront(@NonNull SingleTireStatus leftFront) {
setValue(KEY_LEFT_FRONT, leftFront);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getLeftFront() {
return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_LEFT_FRONT);
}
- public void setRightFront(SingleTireStatus rightFront) {
+ public void setRightFront(@NonNull SingleTireStatus rightFront) {
setValue(KEY_RIGHT_FRONT, rightFront);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getRightFront() {
return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_RIGHT_FRONT);
}
- public void setLeftRear(SingleTireStatus leftRear) {
+ public void setLeftRear(@NonNull SingleTireStatus leftRear) {
setValue(KEY_LEFT_REAR, leftRear);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getLeftRear() {
return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_LEFT_REAR);
}
- public void setRightRear(SingleTireStatus rightRear) {
+ public void setRightRear(@NonNull SingleTireStatus rightRear) {
setValue(KEY_RIGHT_REAR, rightRear);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getRightRear() {
return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_RIGHT_REAR);
}
- public void setInnerLeftRear(SingleTireStatus innerLeftRear) {
+ public void setInnerLeftRear(@NonNull SingleTireStatus innerLeftRear) {
setValue(KEY_INNER_LEFT_REAR, innerLeftRear);
}
@SuppressWarnings("unchecked")
public SingleTireStatus getInnerLeftRear() {
return (SingleTireStatus) getObject(SingleTireStatus.class, KEY_INNER_LEFT_REAR);
}
- public void setInnerRightRear(SingleTireStatus innerRightRear) {
+ public void setInnerRightRear(@NonNull SingleTireStatus innerRightRear) {
setValue(KEY_INNER_RIGHT_REAR, innerRightRear);
}
@SuppressWarnings("unchecked")
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java
index 2c0a1a260..b14dcfaec 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchCoord.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -45,21 +47,30 @@ import java.util.Hashtable;
public class TouchCoord extends RPCStruct {
public static final String KEY_X = "x";
public static final String KEY_Y = "y";
+
public TouchCoord() {}
+
/**
* <p>Constructs a new TouchCoord object indicated by the Hashtable parameter</p>
- *
- *
- * @param hash
- * <p>
- * The Hashtable to use</p>
- */
-
+ *
+ * @param hash The Hashtable to use
+ */
public TouchCoord(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new TouchCoord object
+ * @param x The x coordinate of the touch.
+ * @param y The y coordinate of the touch.
+ */
+ public TouchCoord(@NonNull Integer x, @NonNull Integer y){
+ this();
+ setX(x);
+ setY(y);
+ }
- public void setX(Integer x) {
+ public void setX(@NonNull Integer x) {
setValue(KEY_X, x);
}
@@ -67,7 +78,7 @@ public class TouchCoord extends RPCStruct {
return getInteger(KEY_X);
}
- public void setY(Integer y) {
+ public void setY(@NonNull Integer y) {
setValue(KEY_Y, y);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java
index f99b0a8e2..0abb75062 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEvent.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.ArrayList;
@@ -64,16 +66,26 @@ public class TouchEvent extends RPCStruct {
/**
* <p>Constructs a new TouchEvent object indicated by the Hashtable parameter</p>
*
- *
- * @param hash
- * <p>
- * The Hashtable to use</p>
+ * @param hash The Hashtable to use
*/
public TouchEvent(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new TouchEvent object
+ * @param id A touch's unique identifier.
+ * @param ts The time that the touch was recorded.
+ * @param c The coordinates of the screen area where the touch event occurred.
+ */
+ public TouchEvent(@NonNull Integer id, @NonNull List<Long> ts, @NonNull List<TouchCoord> c){
+ this();
+ setId(id);
+ setTimestamps(ts);
+ setTouchCoordinates(c);
+ }
- public void setId(Integer id) {
+ public void setId(@NonNull Integer id) {
setValue(KEY_ID, id);
}
@@ -113,7 +125,7 @@ public class TouchEvent extends RPCStruct {
return null;
}
- public void setTimestamps(List<Long> ts){
+ public void setTimestamps(@NonNull List<Long> ts){
setValue(KEY_TS, ts);
}
@@ -151,7 +163,7 @@ public class TouchEvent extends RPCStruct {
setTouchCoordinates(c);
}
- public void setTouchCoordinates( List<TouchCoord> c ) {
+ public void setTouchCoordinates(@NonNull List<TouchCoord> c ) {
setValue(KEY_C, c);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java
index 668c81e0d..c8c441158 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/TouchEventCapabilities.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import java.util.Hashtable;
@@ -52,8 +54,21 @@ public class TouchEventCapabilities extends RPCStruct {
public TouchEventCapabilities(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Types of screen touch events available in screen area.
+ * @param pressAvailable if press is available
+ * @param multiTouchAvailable if multi touch is available
+ * @param doublePressAvailable if double press is available
+ */
+ public TouchEventCapabilities(@NonNull Boolean pressAvailable, @NonNull Boolean multiTouchAvailable, @NonNull Boolean doublePressAvailable){
+ this();
+ setPressAvailable(pressAvailable);
+ setMultiTouchAvailable(multiTouchAvailable);
+ setDoublePressAvailable(doublePressAvailable);
+ }
- public void setPressAvailable(Boolean pressAvailable) {
+ public void setPressAvailable(@NonNull Boolean pressAvailable) {
setValue(KEY_PRESS_AVAILABLE, pressAvailable);
}
@@ -61,7 +76,7 @@ public class TouchEventCapabilities extends RPCStruct {
return getBoolean(KEY_PRESS_AVAILABLE);
}
- public void setMultiTouchAvailable(Boolean multiTouchAvailable) {
+ public void setMultiTouchAvailable(@NonNull Boolean multiTouchAvailable) {
setValue(KEY_MULTI_TOUCH_AVAILABLE, multiTouchAvailable);
}
@@ -69,7 +84,7 @@ public class TouchEventCapabilities extends RPCStruct {
return getBoolean(KEY_MULTI_TOUCH_AVAILABLE);
}
- public void setDoublePressAvailable(Boolean doublePressAvailable) {
+ public void setDoublePressAvailable(@NonNull Boolean doublePressAvailable) {
setValue(KEY_DOUBLE_PRESS_AVAILABLE, doublePressAvailable);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterface.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterface.java
index 8db9e032f..a00e375bd 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterface.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterface.java
@@ -14,212 +14,7 @@ import com.smartdevicelink.proxy.RPCRequest;
* <p>After the UnregisterAppInterface operation is performed, no other operations
* can be performed until a new app interface registration is established by
* calling <i>{@linkplain RegisterAppInterface}</i></p>
- *
- * <p><b>HMILevel can be FULL, LIMITED, BACKGROUND or NONE</b></p>
- *
- * <p><b>Parameter List</b></p>
- * <table border="1" rules="all">
- * <tr>
- * <th>Name</th>
- * <th>Type</th>
- * <th>Description</th>
- * <th>Reg.</th>
- * <th>Notes</th>
- * <th>SmartDeviceLink Version</th>
- * </tr>
- * <tr>
- * <td>gps</td>
- * <td>Boolean</td>
- * <td>GPS data. See {@linkplain GPSData} for details</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>speed</td>
- * <td>Boolean</td>
- * <td>The vehicle speed in kilometers per hour</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>rpm</td>
- * <td>Boolean</td>
- * <td>The number of revolutions per minute of the engine</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>fuelLevel</td>
- * <td>Boolean</td>
- * <td>The fuel level in the tank (percentage)</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>fuelLevel_State</td>
- * <td>Boolean</td>
- * <td>The fuel level state</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>instantFuelConsumption</td>
- * <td>Boolean</td>
- * <td>The instantaneous fuel consumption in microlitres</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>externalTemperature</td>
- * <td>Boolean</td>
- * <td>The external temperature in degrees celsius</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>prndl</td>
- * <td>Boolean</td>
- * <td>Currently selected gear.</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>tirePressure</td>
- * <td>Boolean</td>
- * <td>Tire pressure status</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>odometer</td>
- * <td>Boolean</td>
- * <td>Odometer in km</td>
- * <td>N</td>
- * <td>Max Length: 500</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>beltStatus</td>
- * <td>Boolean</td>
- * <td>The status of the seat belts</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>bodyInformation</td>
- * <td>Boolean</td>
- * <td>The body information including ignition status and internal temp</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>deviceStatus</td>
- * <td>Boolean</td>
- * <td>The device status including signal and battery strength</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>driverBraking</td>
- * <td>Boolean</td>
- * <td>The status of the brake pedal</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>wiperStatus</td>
- * <td>Boolean</td>
- * <td>The status of the wipers</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>headLampStatus</td>
- * <td>Boolean</td>
- * <td>Status of the head lamps</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>engineTorque</td>
- * <td>Boolean</td>
- * <td>Torque value for engine (in Nm) on non-diesel variants</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>accPedalPosition</td>
- * <td>Boolean</td>
- * <td>Accelerator pedal position (percentage depressed)</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>steeringWheelAngle</td>
- * <td>Boolean</td>
- * <td>Current angle of the steering wheel (in deg)</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>eCallInfo</td>
- * <td>Boolean</td>
- * <td>Emergency Call notification and confirmation data.</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>airbagStatus</td>
- * <td>Boolean</td>
- * <td>The status of the air bags.</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>emergencyEvent</td>
- * <td>Boolean</td>
- * <td>Information related to an emergency event (and if it occurred).</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>clusterModeStatus</td>
- * <td>Boolean</td>
- * <td>The status modes of the instrument panel cluster.</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * <tr>
- * <td>myKey</td>
- * <td>Boolean</td>
- * <td>Information related to the MyKey feature.</td>
- * <td>N</td>
- * <td>Subscribable</td>
- * <td>SmartDeviceLink 2.0 </td>
- * </tr>
- * </table>
+ *
* @see RegisterAppInterface
* @see OnAppInterfaceUnregistered
*/
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterfaceResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterfaceResponse.java
index d77bf3b39..4660dc24e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterfaceResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnregisterAppInterfaceResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Unregister AppInterface Response is sent, when UnregisterAppInterface has been called
@@ -30,4 +33,15 @@ public class UnregisterAppInterfaceResponse extends RPCResponse {
public UnregisterAppInterfaceResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new UnregisterAppInterfaceResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public UnregisterAppInterfaceResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java
index 521800426..53a4e9162 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButton.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
@@ -63,29 +65,35 @@ public class UnsubscribeButton extends RPCRequest {
* parameter
* <p></p>
*
- * @param hash
- * The Hashtable to use
- */
+ * @param hash The Hashtable to use
+ */
public UnsubscribeButton(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new UnsubscribeButton object
+ * @param buttonName Name of the button to unsubscribe.
+ */
+ public UnsubscribeButton(@NonNull ButtonName buttonName){
+ this();
+ setButtonName(buttonName);
+ }
+
/**
* Gets a name of the button to unsubscribe from
*
- * @return ButtonName -an Enumeration value, see <i>
- * {@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
- */
+ * @return ButtonName -an Enumeration value, see <i> {@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
+ */
public ButtonName getButtonName() {
return (ButtonName) getObject(ButtonName.class, KEY_BUTTON_NAME);
}
/**
* Sets the name of the button to unsubscribe from
*
- * @param buttonName
- * an enum value, see <i>
- * {@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
- */
- public void setButtonName( ButtonName buttonName ) {
+ * @param buttonName an enum value, see <i> {@linkplain com.smartdevicelink.proxy.rpc.enums.ButtonName}</i>
+ */
+ public void setButtonName(@NonNull ButtonName buttonName ) {
setParameters(KEY_BUTTON_NAME, buttonName);
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButtonResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButtonResponse.java
index 7efc00955..5d6bd8579 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButtonResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeButtonResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Unsubscribe Button Response is sent, when UnsubscribeButton has been called
@@ -24,10 +27,20 @@ public class UnsubscribeButtonResponse extends RPCResponse {
* parameter
* <p></p>
*
- * @param hash
- * The Hashtable to use
+ * @param hash The Hashtable to use
*/
public UnsubscribeButtonResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new UnsubscribeButtonResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public UnsubscribeButtonResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java
index af3c94444..bba857522 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleDataResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.util.DebugTool;
import static android.provider.Contacts.SettingsColumns.KEY;
@@ -42,9 +45,20 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
/**
* Constructs a new UnsubscribeVehicleDataResponse object
*/
- public UnsubscribeVehicleDataResponse() {
- super(FunctionID.UNSUBSCRIBE_VEHICLE_DATA.toString());
- }
+ public UnsubscribeVehicleDataResponse() {
+ super(FunctionID.UNSUBSCRIBE_VEHICLE_DATA.toString());
+ }
+
+ /**
+ * Constructs a new UnsubscribeVehicleDataResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public UnsubscribeVehicleDataResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
/**
* Constructs a new UnsubscribeVehicleDataResponse object indicated by the Hashtable
@@ -135,7 +149,7 @@ public class UnsubscribeVehicleDataResponse extends RPCResponse {
}
/**
* Sets Fuel Level State
- * @param fuelLevel_State
+ * @param fuelLevelState
*/
public void setFuelLevelState(VehicleDataResult fuelLevelState) {
setParameters(KEY_FUEL_LEVEL_STATE, fuelLevelState);
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java
index 8804892aa..b7feef73e 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java
@@ -1,7 +1,10 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import java.util.Hashtable;
@@ -13,4 +16,15 @@ public class UnsubscribeWayPointsResponse extends RPCResponse {
public UnsubscribeWayPointsResponse(Hashtable<String, Object> hash) {
super(hash);
}
+
+ /**
+ * Constructs a new UnsubscribeWayPointsResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public UnsubscribeWayPointsResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnListResponse.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnListResponse.java
index add51c5a5..5b0fbabf7 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnListResponse.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/UpdateTurnListResponse.java
@@ -1,9 +1,12 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.rpc.enums.Result;
/**
* Update Turn List Response is sent, when UpdateTurnList has been called
@@ -23,4 +26,15 @@ public class UpdateTurnListResponse extends RPCResponse{
super(hash);
}
+ /**
+ * Constructs a new UpdateTurnListResponse object
+ * @param success whether the request is successfully processed
+ * @param resultCode whether the request is successfully processed
+ */
+ public UpdateTurnListResponse(@NonNull Boolean success, @NonNull Result resultCode) {
+ this();
+ setSuccess(success);
+ setResultCode(resultCode);
+ }
+
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java
index c0965cd39..10860deab 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VehicleDataResult.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -41,28 +43,38 @@ import com.smartdevicelink.proxy.rpc.enums.VehicleDataType;
public class VehicleDataResult extends RPCStruct {
public static final String KEY_DATA_TYPE = "dataType";
public static final String KEY_RESULT_CODE = "resultCode";
+
+ public VehicleDataResult() { }
/**
* <p>
* Constructs a new VehicleDataResult object indicated by the Hashtable
* parameter
* </p>
*
- * @param hash
- *
- * <p>The Hashtable to use</p>
+ * @param hash the Hashtable to use
*/
-
- public VehicleDataResult() { }
public VehicleDataResult(Hashtable<String, Object> hash) {
super(hash);
}
- public void setDataType(VehicleDataType dataType) {
+
+ /**
+ * Individual published data request result.
+ * @param dataType Defined published data element type.
+ * @param resultCode Published data result code.
+ */
+ public VehicleDataResult(@NonNull VehicleDataType dataType, @NonNull VehicleDataResultCode resultCode){
+ this();
+ setDataType(dataType);
+ setResultCode(resultCode);
+ }
+
+ public void setDataType(@NonNull VehicleDataType dataType) {
setValue(KEY_DATA_TYPE, dataType);
}
public VehicleDataType getDataType() {
return (VehicleDataType) getObject(VehicleDataType.class, KEY_DATA_TYPE);
}
- public void setResultCode(VehicleDataResultCode resultCode) {
+ public void setResultCode(@NonNull VehicleDataResultCode resultCode) {
setValue(KEY_RESULT_CODE, resultCode);
}
public VehicleDataResultCode getResultCode() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java
index 8f88b3ea8..0ddfec2ef 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VideoStreamingFormat.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.VideoStreamingCodec;
import com.smartdevicelink.proxy.rpc.enums.VideoStreamingProtocol;
@@ -17,12 +19,18 @@ public class VideoStreamingFormat extends RPCStruct {
public VideoStreamingFormat(){}
public VideoStreamingFormat(Hashtable<String, Object> hash){super(hash);}
- public VideoStreamingFormat(VideoStreamingCodec codec,VideoStreamingProtocol protocol){
- setCodec(codec);
+ /**
+ * Create the VideoStreamingFormat object
+ * @param protocol The protocol used
+ * @param codec The codec used
+ */
+ public VideoStreamingFormat(@NonNull VideoStreamingProtocol protocol, @NonNull VideoStreamingCodec codec){
+ this();
setProtocol(protocol);
+ setCodec(codec);
}
- public void setProtocol(VideoStreamingProtocol protocol){
+ public void setProtocol(@NonNull VideoStreamingProtocol protocol){
setValue(KEY_PROTOCOL, protocol);
}
@@ -30,7 +38,7 @@ public class VideoStreamingFormat extends RPCStruct {
return (VideoStreamingProtocol) getObject(VideoStreamingProtocol.class, KEY_PROTOCOL);
}
- public void setCodec(VideoStreamingCodec codec){
+ public void setCodec(@NonNull VideoStreamingCodec codec){
setValue(KEY_CODEC, codec);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java
index 00474cd06..10eb6b0be 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/VrHelpItem.java
@@ -1,5 +1,7 @@
package com.smartdevicelink.proxy.rpc;
+import android.support.annotation.NonNull;
+
import java.util.Hashtable;
import com.smartdevicelink.proxy.RPCStruct;
@@ -49,22 +51,33 @@ public class VrHelpItem extends RPCStruct {
public static final String KEY_POSITION = "position";
public static final String KEY_TEXT = "text";
public static final String KEY_IMAGE = "image";
+
+ public VrHelpItem() { }
/**
* <p>
* Constructs a new VrHelpItem object indicated by the Hashtable
* parameter
* </p>
*
- * @param hash
- * <p>
- * The Hashtable to use
+ * @param hash -The Hashtable to use
*/
-
- public VrHelpItem() { }
public VrHelpItem(Hashtable<String, Object> hash) {
super(hash);
}
- public void setText(String text) {
+
+ /**
+ * VR help items i.e. the text strings to be displayed, and when pronounced
+ * by the user the recognition of any of which must trigger the corresponding VR command.
+ * @param text Text to display for VR Help item
+ * @param position Position to display item in VR Help list
+ */
+ public VrHelpItem(@NonNull String text, @NonNull Integer position){
+ this();
+ setText(text);
+ setPosition(position);
+ }
+
+ public void setText(@NonNull String text) {
setValue(KEY_TEXT, text);
}
public String getText() {
@@ -77,7 +90,7 @@ public class VrHelpItem extends RPCStruct {
public Image getImage() {
return (Image) getObject(Image.class, KEY_IMAGE);
}
- public void setPosition(Integer position) {
+ public void setPosition(@NonNull Integer position) {
setValue(KEY_POSITION, position);
}
public Integer getPosition() {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java b/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java
index ffa9317a1..5d0c9bed5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java
@@ -10,6 +10,7 @@ import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
+import android.os.Build;
import android.os.Build.VERSION;
import com.smartdevicelink.SdlConnection.SdlConnection;
@@ -57,8 +58,14 @@ public class BTTransport extends SdlTransport {
super(transportListener);
bKeepSocketActive = bKeepSocket;
} // end-ctor
-
+
+ @Deprecated
public BluetoothSocket getBTSocket(BluetoothServerSocket bsSocket){
+
+ if(bsSocket == null || Build.VERSION.SDK_INT > Build.VERSION_CODES.O) { //Reflection is no longer allowed on SDK classes)
+ return null;
+ }
+
Field[] f = bsSocket.getClass().getDeclaredFields();
@SuppressWarnings("unused")
@@ -85,11 +92,14 @@ public class BTTransport extends SdlTransport {
return null;
}
-
+
+ @Deprecated
public int getChannel(BluetoothSocket bsSocket){
int channel = -1;
- if (bsSocket == null) return channel;
+ if (bsSocket == null || Build.VERSION.SDK_INT > Build.VERSION_CODES.O){ //Reflection is no longer allowed on SDK classes
+ return channel;
+ }
Field[] f = bsSocket.getClass().getDeclaredFields();
@@ -174,7 +184,7 @@ public class BTTransport extends SdlTransport {
sComment = "Accepting Connections on SDP Server Port Number: " + iSocket + "\r\n";
sComment += "Keep Server Socket Open: " + bKeepSocketActive;
- if (iSocket < 0)
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O && iSocket < 0)
{
SdlConnection.enableLegacyMode(false, null);
throw new SdlException("Could not open connection to SDL.", SdlExceptionCause.BLUETOOTH_SOCKET_UNAVAILABLE);
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java b/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
index cf5ace221..c27182d76 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
@@ -32,6 +32,7 @@ import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -55,6 +56,7 @@ public class MultiplexBluetoothTransport {
private static final String NAME_SECURE =" SdlRouterService";
// Key names received from the BluetoothSerialServer Handler
public static final String DEVICE_NAME = "device_name";
+ public static final String DEVICE_ADDRESS = "device_address";
public static final String TOAST = "toast";
private static final long MS_TILL_TIMEOUT = 2500;
private static final int READ_BUFFER_SIZE = 4096;
@@ -259,15 +261,17 @@ public class MultiplexBluetoothTransport {
mConnectedWriteThread = new ConnectedWriteThread(socket);
mConnectedWriteThread.start();
- //Store a static name of the device that is connected.
- if(device!=null){
- currentlyConnectedDevice = device.getName();
- }
+
// Send the name of the connected device back to the UI Activity
Message msg = mHandler.obtainMessage(SdlRouterService.MESSAGE_DEVICE_NAME);
Bundle bundle = new Bundle();
- bundle.putString(DEVICE_NAME, currentlyConnectedDevice);
+ //Store a static name of the device that is connected.
+ currentlyConnectedDevice = device.getName();
+ if(currentlyConnectedDevice != null){
+ bundle.putString(DEVICE_NAME, currentlyConnectedDevice);
+ bundle.putString(DEVICE_ADDRESS, device.getAddress());
+ }
msg.setData(bundle);
mHandler.sendMessage(msg);
setState(STATE_CONNECTED);
@@ -784,7 +788,7 @@ public class MultiplexBluetoothTransport {
while (true) {
try {
bytesRead = mmInStream.read(buffer);
- Log.i(getClass().getName(), "Received " + bytesRead + " bytes from Bluetooth");
+ //Log.i(getClass().getName(), "Received " + bytesRead + " bytes from Bluetooth");
for (int i = 0; i < bytesRead; i++) {
input = buffer[i];
@@ -834,9 +838,9 @@ public class MultiplexBluetoothTransport {
return !(mState == STATE_NONE);
}
-
+ @Deprecated
public BluetoothSocket getBTSocket(BluetoothServerSocket bsSocket){
- if(bsSocket == null){
+ if(bsSocket == null || Build.VERSION.SDK_INT > Build.VERSION_CODES.O){ //Reflection is no longer allowed on SDK classes
return null;
}
Field[] f = bsSocket.getClass().getDeclaredFields();
@@ -862,11 +866,12 @@ public class MultiplexBluetoothTransport {
return null;
}
-
+
+ @Deprecated
public int getChannel(BluetoothSocket bsSocket){
int channel = -1;
- if (bsSocket == null){
+ if (bsSocket == null || Build.VERSION.SDK_INT > Build.VERSION_CODES.O){ //Reflection is no longer allowed on SDK classes
return channel;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
index 2ba3039b8..defeb67fa 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
@@ -4,6 +4,7 @@ import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -31,10 +32,6 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
private static final String TAG = "Sdl Broadcast Receiver";
- private static final String BOOT_COMPLETE = "android.intent.action.BOOT_COMPLETED";
- private static final String ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
- private static final String STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED" ;
-
protected static final String SDL_ROUTER_SERVICE_CLASS_NAME = "sdlrouterservice";
public static final String LOCAL_ROUTER_SERVICE_EXTRA = "router_service";
@@ -58,8 +55,9 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//Log.i(TAG, "Sdl Receiver Activated");
- String action = intent.getAction();
-
+ final String action = intent.getAction();
+ BluetoothDevice device = null;
+
if(action.equalsIgnoreCase(Intent.ACTION_PACKAGE_ADDED)
|| action.equalsIgnoreCase(Intent.ACTION_PACKAGE_REPLACED)){
//The package manager has sent out a new broadcast.
@@ -67,9 +65,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
return;
}
- if(!(action.equalsIgnoreCase(BOOT_COMPLETE)
- || action.equalsIgnoreCase(ACL_CONNECTED)
- || action.equalsIgnoreCase(STATE_CHANGED)
+ if(!(action.equalsIgnoreCase(BluetoothDevice.ACTION_ACL_CONNECTED)
|| action.equalsIgnoreCase(USBTransport.ACTION_USB_ACCESSORY_ATTACHED)
|| action.equalsIgnoreCase(TransportConstants.START_ROUTER_SERVICE_ACTION))){
//We don't want anything else here if the child class called super and has different intent filters
@@ -83,20 +79,40 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
onSdlEnabled(context, intent);
return;
}
-
+
+ if(intent.hasExtra(BluetoothDevice.EXTRA_DEVICE)){ //Grab the bluetooth device if available
+ device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+ }
+
boolean didStart = false;
if (localRouterClass == null){
localRouterClass = defineLocalSdlRouterClass();
- ResolveInfo info = context.getPackageManager().resolveService(new Intent(context,localRouterClass),PackageManager.GET_META_DATA);
- if(info != null){
- if(info.filter == null || !info.filter.hasAction(TransportConstants.ROUTER_SERVICE_ACTION)){
- Log.e(TAG, "WARNING: This application has not specified its intent-filter for the SdlRouterService. THIS WILL THROW AN EXCEPTION IN FUTURE RELEASES!!");
+ // we need to check this again because for USB apps, the returned class can still be null
+ if (localRouterClass != null) {
+
+ // Check if the service declaration in AndroidManifest has the intent-filter action specified correctly
+ boolean serviceFilterHasAction = false;
+ String className = localRouterClass.getName();
+ List<SdlAppInfo> services = AndroidTools.querySdlAppInfo(context, null);
+ for (SdlAppInfo sdlAppInfo : services) {
+ if(sdlAppInfo != null && sdlAppInfo.getRouterServiceComponentName() != null && className.equals((sdlAppInfo.getRouterServiceComponentName().getClassName()))){
+ serviceFilterHasAction = true;
+ break;
}
- if( info.serviceInfo.metaData == null || !info.serviceInfo.metaData.containsKey(context.getString(R.string.sdl_router_service_version_name))) {
+ }
+ if (!serviceFilterHasAction){
+ Log.e(TAG, "WARNING: This application has not specified its intent-filter for the SdlRouterService. THIS WILL THROW AN EXCEPTION IN FUTURE RELEASES!!");
+ }
+
+ // Check if the service declaration in AndroidManifest has the router service version metadata specified correctly
+ ResolveInfo info = context.getPackageManager().resolveService(new Intent(context, localRouterClass), PackageManager.GET_META_DATA);
+ if (info != null) {
+ if (info.serviceInfo.metaData == null || !info.serviceInfo.metaData.containsKey(context.getString(R.string.sdl_router_service_version_name))) {
Log.e(TAG, "WARNING: This application has not specified its metadata tags for the SdlRouterService. THIS WILL THROW AN EXCEPTION IN FUTURE RELEASES!!");
}
- }else{
- Log.e(TAG, "WARNING: This application has not specified its SdlRouterService correctly in the manifest. THIS WILL THROW AN EXCEPTION IN FUTURE RELEASES!!");
+ } else {
+ Log.e(TAG, "WARNING: This application has not specified its SdlRouterService correctly in the manifest. THIS WILL THROW AN EXCEPTION IN FUTURE RELEASES!!");
+ }
}
}
@@ -130,28 +146,17 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
}else if(intent.getBooleanExtra(TransportConstants.PING_ROUTER_SERVICE_EXTRA, false)){
//We were told to wake up our router services
boolean altServiceWake = intent.getBooleanExtra(TransportConstants.BIND_REQUEST_TYPE_ALT_TRANSPORT, false);
- didStart = wakeUpRouterService(context, false,altServiceWake );
+ didStart = wakeUpRouterService(context, false,altServiceWake,device );
}
-
}
-
- if (intent.getAction().contains("android.bluetooth.adapter.action.STATE_CHANGED")){
- int state = intent.getIntExtra("android.bluetooth.adapter.extra.STATE",-1);
- if (state == BluetoothAdapter.STATE_OFF ||
- state == BluetoothAdapter.STATE_TURNING_OFF){
- //onProtocolDisabled(context);
- //Let's let the service that is running manage what to do for this
- //If we were to do it here, for every instance of this BR it would send
- //an intent to stop service, where it's only one that is needed.
- return;
- }
- }
+
+
Log.d(TAG, "Check for local router");
if(localRouterClass!=null){ //If there is a supplied router service lets run some logic regarding starting one
if(!didStart){Log.d(TAG, "attempting to wake up router service");
- didStart = wakeUpRouterService(context, true,false);
+ didStart = wakeUpRouterService(context, true,false, device);
}
//So even though we started our own version, on some older phones we find that two services are started up so we want to make sure we send our version that we are working with
@@ -166,7 +171,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
}
}
- private boolean wakeUpRouterService(final Context context, final boolean ping, final boolean altTransportWake){
+ private boolean wakeUpRouterService(final Context context, final boolean ping, final boolean altTransportWake, final BluetoothDevice device){
new ServiceFinder(context, context.getPackageName(), new ServiceFinder.ServiceFinderCallback() {
@Override
public void onComplete(Vector<ComponentName> routerServices) {
@@ -188,6 +193,9 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
if (altTransportWake) {
serviceIntent.setAction(TransportConstants.BIND_REQUEST_TYPE_ALT_TRANSPORT);
}
+ if(device != null){
+ serviceIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
+ }
try {
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
context.startService(serviceIntent);
@@ -210,6 +218,10 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
if (altTransportWake) {
wakeRouterServiceAltTransport(context);
return;
+ }else{
+ for(ComponentName service : runningBluetoothServicePackage){
+ pingRouterService(context,service.getPackageName(),service.getClassName());
+ }
}
return;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
index eb83a3675..617fabcb2 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
@@ -6,7 +6,6 @@ import static com.smartdevicelink.transport.TransportConstants.HARDWARE_DISCONNE
import static com.smartdevicelink.transport.TransportConstants.SEND_PACKET_TO_APP_LOCATION_EXTRA_NAME;
import java.lang.ref.WeakReference;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -31,20 +30,22 @@ import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
+import android.app.PendingIntent;
import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.DeadObjectException;
@@ -96,7 +97,7 @@ public class SdlRouterService extends Service{
/**
* <b> NOTE: DO NOT MODIFY THIS UNLESS YOU KNOW WHAT YOU'RE DOING.</b>
*/
- protected static final int ROUTER_SERVICE_VERSION_NUMBER = 5;
+ protected static final int ROUTER_SERVICE_VERSION_NUMBER = 6;
private static final String ROUTER_SERVICE_PROCESS = "com.smartdevicelink.router";
@@ -105,6 +106,9 @@ public class SdlRouterService extends Service{
private static final long CLIENT_PING_DELAY = 1000;
public static final String REGISTER_NEWER_SERVER_INSTANCE_ACTION = "com.sdl.android.newservice";
+
+ public static final String SDL_NOTIFICATION_FAQS_PAGE = "https://smartdevicelink.com/en/guides/android/frequently-asked-questions/sdl-notifications/";
+
/**
* @deprecated use {@link TransportConstants#START_ROUTER_SERVICE_ACTION} instead
*/
@@ -122,7 +126,12 @@ public class SdlRouterService extends Service{
@SuppressWarnings("FieldCanBeLocal")
private final int UNREGISTER_APP_INTERFACE_CORRELATION_ID = 65530;
-
+
+ /**
+ * Preference location where the service stores known SDL status based on device address
+ */
+ protected static final String SDL_DEVICE_STATUS_SHARED_PREFS = "sdl.device.status";
+
private MultiplexBluetoothTransport mSerialService = null;
private static boolean connectAsClient = false;
@@ -409,7 +418,6 @@ public class SdlRouterService extends Service{
break;
case TransportConstants.ROUTER_SEND_PACKET:
- Log.d(TAG, "Received packet to send");
if(receivedBundle!=null){
Runnable packetRun = new Runnable(){
@Override
@@ -891,16 +899,15 @@ public class SdlRouterService extends Service{
}
if(intent != null ){
if(intent.getBooleanExtra(FOREGROUND_EXTRA, false)){
-
- BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- int timeout = FOREGROUND_TIMEOUT;
- int state = adapter.getProfileConnectionState(BluetoothProfile.A2DP);
- if(state == BluetoothAdapter.STATE_CONNECTED){
- //If we've just connected over A2DP there is a fair chance we want to wait to
- // listen for a connection so we double our wait time
- timeout *= 2;
+ String address = null;
+ if(intent.hasExtra(BluetoothDevice.EXTRA_DEVICE)){
+ BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+ if(device != null){
+ address = device.getAddress();
+ }
}
- enterForeground("Waiting for connection...", timeout);
+ int timeout = getNotificationTimeout(address);
+ enterForeground("Waiting for connection...", timeout, false);
resetForegroundTimeOut(timeout);
}
if(intent.hasExtra(TransportConstants.PING_ROUTER_SERVICE_EXTRA)){
@@ -993,6 +1000,28 @@ public class SdlRouterService extends Service{
}
}
+ /**
+ * Gets the correct timeout for the foreground notification.
+ * @param address the address of the device that is currently connected
+ * @return the amount of time for a timeout handler to remove the notification.
+ */
+ @SuppressLint("MissingPermission")
+ private int getNotificationTimeout(String address){
+ BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ if(address != null){
+ if(hasSDLConnected(address)){
+ return FOREGROUND_TIMEOUT * 2;
+ }else if(this.isFirstStatusCheck(address)) {
+ // If this is the first time the service has ever connected to this device we want
+ // to ensure we have a record of it
+ setSDLConnectedStatus(address, false);
+ }
+ }
+ // If this is a new device or hasn't connected through SDL we want to limit the exposure
+ // of the SDL service in the foreground
+ return FOREGROUND_TIMEOUT/1000;
+ }
+
public void resetForegroundTimeOut(long delay){
if(android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2){
return;
@@ -1023,7 +1052,7 @@ public class SdlRouterService extends Service{
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
- private void enterForeground(String content, long chronometerLength) {
+ private void enterForeground(String content, long chronometerLength, boolean ongoing) {
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB){
Log.w(TAG, "Unable to start service as foreground due to OS SDK version being lower than 11");
isForeground = false;
@@ -1061,7 +1090,12 @@ public class SdlRouterService extends Service{
builder.setSmallIcon(android.R.drawable.stat_sys_data_bluetooth);
}
builder.setLargeIcon(icon);
- builder.setOngoing(true);
+ builder.setOngoing(ongoing);
+
+ // Create an intent that will be fired when the user clicks the notification.
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(SDL_NOTIFICATION_FAQS_PAGE));
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
+ builder.setContentIntent(pendingIntent);
if(chronometerLength > 0) {
builder.setWhen(chronometerLength + System.currentTimeMillis());
@@ -1202,7 +1236,7 @@ public class SdlRouterService extends Service{
public void onTransportConnected(final TransportType type){
isTransportConnected = true;
cancelForegroundTimeOut();
- enterForeground("Connected to " + this.getConnectedDeviceName(),0);
+ enterForeground("Connected to " + this.getConnectedDeviceName(),0, true);
if(packetWriteTaskMaster!=null){
packetWriteTaskMaster.close();
packetWriteTaskMaster = null;
@@ -1320,7 +1354,11 @@ public class SdlRouterService extends Service{
SdlRouterService service = this.provider.get();
switch (msg.what) {
case MESSAGE_DEVICE_NAME:
- service.connectedDeviceName = msg.getData().getString(MultiplexBluetoothTransport.DEVICE_NAME);
+ Bundle bundle = msg.getData();
+ if(bundle !=null) {
+ service.connectedDeviceName = bundle.getString(MultiplexBluetoothTransport.DEVICE_NAME);
+ service.setSDLConnectedStatus(bundle.getString(MultiplexBluetoothTransport.DEVICE_ADDRESS),true);
+ }
break;
case MESSAGE_STATE_CHANGE:
switch (msg.arg1) {
@@ -1716,6 +1754,39 @@ public class SdlRouterService extends Service{
{
return 0;
}
+
+ /**
+ * Set the connection establishment status of the particular device
+ * @param address address of the device in quesiton
+ * @param hasSDLConnected true if a connection has been established, false if not
+ */
+ protected void setSDLConnectedStatus(String address, boolean hasSDLConnected){
+ SharedPreferences preferences = this.getSharedPreferences(SDL_DEVICE_STATUS_SHARED_PREFS, Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putBoolean(address,hasSDLConnected);
+ editor.commit();
+ }
+
+ /**
+ * Checks to see if a device address has connected to SDL before.
+ * @param address the mac address of the device in quesiton
+ * @return if this is the first status check of this device
+ */
+ protected boolean isFirstStatusCheck(String address){
+ SharedPreferences preferences = this.getSharedPreferences(SDL_DEVICE_STATUS_SHARED_PREFS, Context.MODE_PRIVATE);
+ return !preferences.contains(address) ;
+ }
+ /**
+ * Checks to see if a device address has connected to SDL before.
+ * @param address the mac address of the device in quesiton
+ * @return if an SDL connection has ever been established with this device
+ */
+ protected boolean hasSDLConnected(String address){
+ SharedPreferences preferences = this.getSharedPreferences(SDL_DEVICE_STATUS_SHARED_PREFS, Context.MODE_PRIVATE);
+ return preferences.contains(address) && preferences.getBoolean(address,false);
+ }
+
+
/* ***********************************************************************************************************************************************************************
* ***************************************************************** CUSTOM ADDITIONS ************************************************************************************
@@ -2442,7 +2513,7 @@ public class SdlRouterService extends Service{
bytesToWrite = bundle.getByteArray(TransportConstants.BYTES_TO_SEND_EXTRA_NAME);
offset = bundle.getInt(TransportConstants.BYTES_TO_SEND_EXTRA_OFFSET, 0); //If nothing, start at the beginning of the array
size = bundle.getInt(TransportConstants.BYTES_TO_SEND_EXTRA_COUNT, bytesToWrite.length); //In case there isn't anything just send the whole packet.
- this.priorityCoefficient = bundle.getInt(TransportConstants.PACKET_PRIORITY_COEFFICIENT,0); Log.d(TAG, "packet priority coef: "+ this.priorityCoefficient);
+ this.priorityCoefficient = bundle.getInt(TransportConstants.PACKET_PRIORITY_COEFFICIENT,0);
}
@Override
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransport.java b/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransport.java
index e9fb0efcf..c858c7790 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransport.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/TCPTransport.java
@@ -1,11 +1,14 @@
package com.smartdevicelink.transport;
-
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
+import android.annotation.TargetApi;
+import android.os.Build;
+import android.os.NetworkOnMainThreadException;
import android.util.Log;
import com.smartdevicelink.exception.SdlException;
@@ -107,6 +110,7 @@ public class TCPTransport extends SdlTransport {
* @param length Number of bytes to send
* @return True if data was sent successfully, False otherwise
*/
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected boolean sendBytesOverTransport(SdlPacket packet) {
TCPTransportState currentState = getCurrentState();
@@ -123,7 +127,7 @@ public class TCPTransport extends SdlTransport {
mOutputStream.write(msgBytes, 0, msgBytes.length);
bResult = true;
logInfo("TCPTransport.sendBytesOverTransport: successfully send data");
- } catch (IOException e) {
+ } catch (IOException | NetworkOnMainThreadException e) {
logError("TCPTransport.sendBytesOverTransport: error during sending data: " + e.getMessage());
bResult = false;
}
diff --git a/sdl_android/src/main/res/values/sdl.xml b/sdl_android/src/main/res/values/sdl.xml
index aa96598dc..a4f2f6a5f 100644
--- a/sdl_android/src/main/res/values/sdl.xml
+++ b/sdl_android/src/main/res/values/sdl.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="sdl_router_service_version_name">sdl_router_version</string>
- <integer name="sdl_router_service_version_value">5</integer>
+ <string name="sdl_router_service_version_name" translatable="false">sdl_router_version</string>
+ <integer name="sdl_router_service_version_value">6</integer>
- <string name="sdl_router_service_is_custom_name">sdl_custom_router</string>
+ <string name="sdl_router_service_is_custom_name" translatable="false">sdl_custom_router</string>
</resources>