summaryrefslogtreecommitdiff
path: root/base/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'base/src/main/java/com')
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java12
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonReplaceOperation.java81
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java4
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java12
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java56
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java26
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java10
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java22
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java26
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java15
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/Show.java14
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java31
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java31
13 files changed, 213 insertions, 127 deletions
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java
index 4d93be501..ab9159c33 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java
@@ -43,6 +43,7 @@ import com.smartdevicelink.managers.lifecycle.OnSystemCapabilityListener;
import com.smartdevicelink.managers.lifecycle.SystemCapabilityManager;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
+import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
import com.smartdevicelink.proxy.rpc.DisplayCapability;
import com.smartdevicelink.proxy.rpc.OnButtonEvent;
import com.smartdevicelink.proxy.rpc.OnButtonPress;
@@ -58,7 +59,6 @@ import com.smartdevicelink.util.DebugTool;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -71,6 +71,7 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
private static final String TAG = "BaseSoftButtonManager";
private final WeakReference<FileManager> fileManager;
SoftButtonCapabilities softButtonCapabilities;
+ boolean isDynamicGraphicSupported;
private CopyOnWriteArrayList<SoftButtonObject> softButtonObjects;
private HMILevel currentHMILevel;
private final OnSystemCapabilityListener onDisplayCapabilityListener;
@@ -99,6 +100,11 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
this.currentHMILevel = null;
this.transactionQueue = newTransactionQueue();
this.batchQueue = new ArrayList<>();
+ DisplayCapabilities displayCapabilities = null;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ displayCapabilities = (DisplayCapabilities) this.internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY, null, false);
+ }
+ isDynamicGraphicSupported = (displayCapabilities != null && displayCapabilities.getGraphicSupported() != null) ? displayCapabilities.getGraphicSupported() : true;
this.updateListener = new SoftButtonObject.UpdateListener() {
@Override
@@ -152,7 +158,7 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
// Auto-send an updated Show if we have new capabilities
if (softButtonObjects != null && !softButtonObjects.isEmpty() && softButtonCapabilities != null && !softButtonCapabilitiesEquals(oldSoftButtonCapabilities, softButtonCapabilities)) {
- SoftButtonReplaceOperation operation = new SoftButtonReplaceOperation(internalInterface, fileManager, softButtonCapabilities, softButtonObjects, getCurrentMainField1());
+ SoftButtonReplaceOperation operation = new SoftButtonReplaceOperation(internalInterface, fileManager, softButtonCapabilities, softButtonObjects, getCurrentMainField1(), isDynamicGraphicSupported);
transactionQueue.add(operation, false);
}
}
@@ -311,7 +317,7 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
this.softButtonObjects = softButtonObjects;
// We only need to pass the first softButtonCapabilities in the array due to the fact that all soft button capabilities are the same (i.e. there is no way to assign a softButtonCapabilities to a specific soft button).
- SoftButtonReplaceOperation operation = new SoftButtonReplaceOperation(internalInterface, fileManager.get(), softButtonCapabilities, softButtonObjects, getCurrentMainField1());
+ SoftButtonReplaceOperation operation = new SoftButtonReplaceOperation(internalInterface, fileManager.get(), softButtonCapabilities, softButtonObjects, getCurrentMainField1(), isDynamicGraphicSupported);
if (batchUpdates) {
batchQueue.clear();
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonReplaceOperation.java b/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonReplaceOperation.java
index b157c4cb9..f39fe279b 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonReplaceOperation.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonReplaceOperation.java
@@ -10,6 +10,7 @@ import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.Show;
import com.smartdevicelink.proxy.rpc.SoftButton;
import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
+import com.smartdevicelink.proxy.rpc.enums.ImageType;
import com.smartdevicelink.proxy.rpc.enums.SoftButtonType;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCResponseListener;
import com.smartdevicelink.util.DebugTool;
@@ -30,14 +31,16 @@ class SoftButtonReplaceOperation extends Task {
private final SoftButtonCapabilities softButtonCapabilities;
private final CopyOnWriteArrayList<SoftButtonObject> softButtonObjects;
private String currentMainField1;
+ private Boolean isDynamicGraphicSupported;
- SoftButtonReplaceOperation(ISdl internalInterface, FileManager fileManager, SoftButtonCapabilities softButtonCapabilities, CopyOnWriteArrayList<SoftButtonObject> softButtonObjects, String currentMainField1) {
+ SoftButtonReplaceOperation(ISdl internalInterface, FileManager fileManager, SoftButtonCapabilities softButtonCapabilities, CopyOnWriteArrayList<SoftButtonObject> softButtonObjects, String currentMainField1, Boolean isDynamicGraphicSupported) {
super("SoftButtonReplaceOperation");
this.internalInterface = new WeakReference<>(internalInterface);
this.fileManager = new WeakReference<>(fileManager);
this.softButtonCapabilities = softButtonCapabilities;
this.softButtonObjects = softButtonObjects;
this.currentMainField1 = currentMainField1;
+ this.isDynamicGraphicSupported = isDynamicGraphicSupported;
}
@Override
@@ -65,6 +68,18 @@ class SoftButtonReplaceOperation extends Task {
onFinished();
}
});
+ } else if (!supportsDynamicSoftButtonImages()) {
+ DebugTool.logInfo(TAG, "Soft button images are not supported. Attempting to send text and static image only soft buttons. If any button does not contain text and/or a static image, no buttons will be sent.");
+ sendCurrentStateStaticImageOnlySoftButtons(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ if (!success) {
+ DebugTool.logError(TAG, "Buttons will not be sent because the module does not support dynamic images and some of the buttons do not have text or static images");
+ }
+ onFinished();
+ }
+ });
+
} else if (currentStateHasImages() && !allCurrentStateImagesAreUploaded()) {
// If there are images that aren't uploaded
// Send text buttons if all the soft buttons have text
@@ -128,6 +143,13 @@ class SoftButtonReplaceOperation extends Task {
}
return;
}
+ if (!supportsDynamicSoftButtonImages()) {
+ DebugTool.logInfo(TAG, "Head unit does not support dynamic images, skipping upload");
+ if (completionListener != null) {
+ completionListener.onComplete(false);
+ }
+ return;
+ }
DebugTool.logInfo(TAG, "Uploading soft button initial artworks");
if (fileManager.get() != null) {
@@ -236,6 +258,59 @@ class SoftButtonReplaceOperation extends Task {
}
}
+ // Send soft buttons for the current state that only contain text and static images only, if possible.
+ private void sendCurrentStateStaticImageOnlySoftButtons(final CompletionListener completionListener) {
+ if (getState() == Task.CANCELED) {
+ onFinished();
+ }
+
+ DebugTool.logInfo(TAG, "Preparing to send text and static image only soft buttons");
+ List<SoftButton> textButtons = new ArrayList<>();
+ for (SoftButtonObject softButtonObject : softButtonObjects) {
+ SoftButton softButton = softButtonObject.getCurrentStateSoftButton();
+ if (softButton.getText() == null && softButton.getImage() != null && softButton.getImage().getImageType() == ImageType.DYNAMIC) {
+ DebugTool.logWarning(TAG, "Attempted to create text and static image only buttons, but some buttons don't support text and have dynamic images, so no soft buttons will be sent.");
+ if (completionListener != null) {
+ completionListener.onComplete(false);
+ }
+ return;
+ }
+
+
+ if (softButton.getImage() != null && softButton.getImage().getImageType() == ImageType.DYNAMIC) {
+ // We should create a new softButtonObject rather than modifying the original one
+ SoftButton textAndStaticImageOnlySoftButton = new SoftButton(SoftButtonType.SBT_TEXT, softButton.getSoftButtonID());
+ textAndStaticImageOnlySoftButton.setText(softButton.getText());
+ textAndStaticImageOnlySoftButton.setSystemAction(softButton.getSystemAction());
+ textAndStaticImageOnlySoftButton.setIsHighlighted(softButton.getIsHighlighted());
+ textAndStaticImageOnlySoftButton.setImage(softButton.getImage());
+ textButtons.add(textAndStaticImageOnlySoftButton);
+ } else {
+ textButtons.add(softButton);
+ }
+ }
+
+ Show show = new Show();
+ show.setOnRPCResponseListener(new OnRPCResponseListener() {
+ @Override
+ public void onResponse(int correlationId, RPCResponse response) {
+ if (response.getSuccess()) {
+ DebugTool.logInfo(TAG, "Finished sending text and static image only soft buttons");
+ } else {
+ DebugTool.logWarning(TAG, "Failed to update soft buttons with text and static image only buttons");
+ }
+ if (completionListener != null) {
+ completionListener.onComplete(response.getSuccess());
+ }
+ }
+ });
+ show.setMainField1(currentMainField1);
+ show.setSoftButtons(textButtons);
+ if (internalInterface.get() != null) {
+ internalInterface.get().sendRPC(show);
+ }
+ }
+
// Returns text soft buttons representing the current states of the button objects, or returns if _any_ of the buttons' current states are image only buttons.
private void sendCurrentStateTextOnlySoftButtons(final CompletionListener completionListener) {
@@ -303,6 +378,10 @@ class SoftButtonReplaceOperation extends Task {
return true;
}
+ private boolean supportsDynamicSoftButtonImages() {
+ return softButtonCapabilities != null && Boolean.TRUE.equals(isDynamicGraphicSupported) && Boolean.TRUE.equals(softButtonCapabilities.getImageSupported());
+ }
+
private boolean supportsSoftButtonImages() {
return softButtonCapabilities != null && Boolean.TRUE.equals(softButtonCapabilities.getImageSupported());
}
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
index 311279eb8..e46d39339 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/AddCommand.java
@@ -113,9 +113,7 @@ import java.util.List;
* <td>Optional secondary image struct for menu cell</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* </table>
* <p> <b>Response</b></p><p>Indicates that the corresponding request has failed or succeeded, if the response returns with a SUCCESS result code, this means a command was added to the Command Menu successfully.</p>
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
index 93c5f0719..fcd93d42e 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/AddSubMenu.java
@@ -112,9 +112,7 @@ import java.util.Hashtable;
* <td>Optional secondary text to display</td>
* <td>N</td>
* <td>{"string_min_length": 1, "string_max_length": 500}</td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>tertiaryText</td>
@@ -122,9 +120,7 @@ import java.util.Hashtable;
* <td>Optional tertiary text to display</td>
* <td>N</td>
* <td>{"string_min_length": 1, "string_max_length": 500}</td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>secondaryImage</td>
@@ -132,9 +128,7 @@ import java.util.Hashtable;
* <td>Optional secondary image struct for sub-menu cell</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* </table>
* <b>Response</b>
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
index 62a006abe..08819aa09 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java
@@ -85,71 +85,79 @@ import java.util.List;
* <tr>
* <td>driverDoorAjar</td>
* <td>Boolean</td>
- * <td>true</td>
+ * <td>false</td>
* <td>The information about the park brake: - true, if active - false if not.</td>
* <td>
- * @since SmartDeviceLink 2.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
+ * SmartDeviceLink 2.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>passengerDoorAjar</td>
* <td>Boolean</td>
- * <td>true</td>
+ * <td>false</td>
* <td>The information about the park brake: - true, if active - false if not.</td>
* <td>
- * @since SmartDeviceLink 2.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
+ * SmartDeviceLink 2.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>rearLeftDoorAjar</td>
* <td>Boolean</td>
- * <td>true</td>
+ * <td>false</td>
* <td>The information about the park brake: - true, if active - false if not.</td>
* <td>
- * @since SmartDeviceLink 2.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
+ * SmartDeviceLink 2.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>rearRightDoorAjar</td>
* <td>Boolean</td>
- * <td>true</td>
+ * <td>false</td>
* <td>References signal "DrStatRr_B_Actl".</td>
* <td>
- * @since SmartDeviceLink 2.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
+ * SmartDeviceLink 2.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>doorStatuses</td>
* <td>List<DoorStatus></td>
- * <td>Provides status for doors if Ajar/Closed/Locked</td>
- * <td>N</td>
- * <td>{"array_min_size": 0, "array_max_size": 100}</td>
+ * <td>False</td>
+ * <td>Provides status for doors if Ajar/Closed/Locked
+ * {"array_min_size": 0, "array_max_size": 100}</td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>gateStatuses</td>
* <td>List<GateStatus></td>
- * <td>Provides status for trunk/hood/etc. if Ajar/Closed/Locked</td>
- * <td>N</td>
- * <td>{"array_min_size": 0, "array_max_size": 100}</td>
+ * <td>False</td>
+ * <td>Provides status for trunk/hood/etc. if Ajar/Closed/Locked
+ * {"array_min_size": 0, "array_max_size": 100}</td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>roofStatuses</td>
* <td>List<RoofStatus></td>
- * <td>Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removedetc.</td>
- * <td>N</td>
- * <td>{"array_min_size": 0, "array_max_size": 100}</td>
+ * <td>False</td>
+ * <td>Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/ Removedetc.
+ * {"array_min_size": 0, "array_max_size": 100}</td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* </table>
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java
index b723f08b9..4275baf8b 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/GetVehicleData.java
@@ -112,8 +112,10 @@ import java.util.Hashtable;
* <td>N</td>
* <td>Subscribable</td>
* <td>
- * @since SmartDeviceLink 2.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
+ * SmartDeviceLink 2.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
@@ -124,19 +126,20 @@ import java.util.Hashtable;
* <td>Subscribable</td>
* <td>SmartDeviceLink 2.0</td>
* </tr>
- * <tr>
* <tr>
* <td>gearStatus</td>
* <td>Boolean</td>
* <td>See GearStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>prndl</td>
* <td>Boolean</td>
* <td>See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -254,7 +257,8 @@ import java.util.Hashtable;
* <td>stabilityControlsStatus</td>
* <td>Boolean</td>
* <td>See StabilityControlsStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* </tr>
@@ -262,14 +266,16 @@ import java.util.Hashtable;
* <td>handsOffSteering</td>
* <td>Boolean</td>
* <td>To indicate whether driver hands are off the steering wheel</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>windowStatus</td>
* <td>Boolean</td>
* <td>See WindowStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -279,7 +285,7 @@ import java.util.Hashtable;
* <td>N</td>
* <td></td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
@@ -289,7 +295,7 @@ import java.util.Hashtable;
* <td>N</td>
* <td></td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* </table>
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java
index a59623720..9277b4dbe 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/KeyboardProperties.java
@@ -107,7 +107,7 @@ import java.util.List;
* <td>KeyboardInputMask</td>
* <td>false</td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* <td>Allows an app to mask entered characters on HMI</td>
* </tr>
@@ -116,7 +116,7 @@ import java.util.List;
* <td>List<String></td>
* <td>false</td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* <td>
* Array of special characters to show in customizable keys. If omitted, keyboard will show default special characters
@@ -245,7 +245,7 @@ public class KeyboardProperties extends RPCStruct {
* Sets the maskInputCharacters.
*
* @param maskInputCharacters Allows an app to mask entered characters on HMI
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
*/
public KeyboardProperties setMaskInputCharacters(KeyboardInputMask maskInputCharacters) {
setValue(KEY_MASK_INPUT_CHARACTERS, maskInputCharacters);
@@ -268,7 +268,7 @@ public class KeyboardProperties extends RPCStruct {
* @param customKeys Array of special characters to show in customizable keys. If omitted, keyboard will show
* default special characters
* {"string_max_length": 1, "string_min_length": 1, "array_max_size": 10, "array_min_size": 1}
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
*/
public KeyboardProperties setCustomKeys(List<String> customKeys) {
setValue(KEY_CUSTOM_KEYS, customKeys);
@@ -281,7 +281,7 @@ public class KeyboardProperties extends RPCStruct {
* @return List<String> Array of special characters to show in customizable keys. If omitted, keyboard will show
* default special characters
* {"string_max_length": 1, "string_min_length": 1, "array_max_size": 10, "array_min_size": 1}
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
*/
@SuppressWarnings("unchecked")
public List<String> getCustomKeys() {
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
index 4801930f7..2f6b3d712 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/MenuParams.java
@@ -44,7 +44,8 @@ import java.util.Hashtable;
* <tr>
* <th>Name</th>
* <th>Type</th>
- * <th>Description</th>
+ * <th>Description</th>
+ * <th>Req.</th>
* <th>SmartDeviceLink Ver. Available</th>
* </tr>
* <tr>
@@ -56,7 +57,8 @@ import java.util.Hashtable;
* <li>Min: 0</li>
* <li>Max: 2000000000</li>
* </ul>
- * </td>
+ * </td>
+ * <th></th>
* <td>SmartDeviceLink 1.0</td>
* </tr>
* <tr>
@@ -70,7 +72,8 @@ import java.util.Hashtable;
* <li>If position is greater or equal than the number of items in the parent Command Menu, the sub menu will be appended to the end of that Command Menu.</li>
* <li>If this element is omitted, the entry will be added at the end of the parent menu.</li>
* </ul>
- * </td>
+ * </td>
+ * <th></th>
* <td>SmartDeviceLink 1.0</td>
* </tr>
* <tr>
@@ -81,27 +84,26 @@ import java.util.Hashtable;
* <li>Min: 1</li>
* <li>Max: 100</li>
* </ul>
- * </td>
+ * </td>
+ * <th></th>
* <td>SmartDeviceLink 1.0</td>
* </tr>
* <tr>
* <td>secondaryText</td>
* <td>String</td>
- * <td>Optional secondary text to display</td>
+ * <td>Optional secondary text to display <br><br> {"string_min_length": 1, "string_max_length": 500}</td>
* <td>N</td>
- * <td>{"string_min_length": 1, "string_max_length": 500}</td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>tertiaryText</td>
* <td>String</td>
- * <td>Optional tertiary text to display</td>
+ * <td>Optional tertiary text to display <br><br> {"string_min_length": 1, "string_max_length": 500}</td>
* <td>N</td>
- * <td>{"string_min_length": 1, "string_max_length": 500}</td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* </table>
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java
index 8d87f6d30..09608fb9a 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/OnVehicleData.java
@@ -143,21 +143,16 @@ import java.util.List;
* <td>gearStatus</td>
* <td>GearStatus</td>
* <td>See GearStatus</td>
- * <td>N</td>
- * <td>SmartDeviceLink 7.0.0</td>
- * </tr>
- * <tr>
- * <td>gearStatus</td>
- * <td>GearStatus</td>
- * <td>See GearStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>prndl</td>
* <td>PRNDL</td>
* <td>See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -309,14 +304,16 @@ import java.util.List;
* <td>handsOffSteering</td>
* <td>Boolean</td>
* <td>To indicate whether driver hands are off the steering wheel</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>windowStatus</td>
* <td>Boolean</td>
* <td>See WindowStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -326,14 +323,15 @@ import java.util.List;
* <td>N</td>
* <td></td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </tr>
* <tr>
* <td>stabilityControlsStatus</td>
* <td>StabilityControlsStatus</td>
* <td>See StabilityControlsStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -343,7 +341,7 @@ import java.util.List;
* <td>N</td>
* <td></td>
* <td>
- * @since SmartDeviceLink 7.1.0
+ * SmartDeviceLink 7.1.0
* </td>
* </table>
*
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
index 099224638..139c3a77a 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java
@@ -99,12 +99,9 @@ import java.util.Hashtable;
* <td>countRate</td>
* <td>Float</td>
* <td>The value of this parameter is the amount that the media clock timer will advance per 1.0 seconds of real time. Values less than 1.0 will therefore advance the timer slower than real-time, while values greater than 1.0 will advance the timer faster than real-time.e.g. If this parameter is set to `0.5`, the timer will advance one second per two seconds real-time, or at 50% speed. If this parameter is set to `2.0`, the timer will advance two seconds per one second real-time, or at 200% speed.</td>
-
* <td>N</td>
* <td>{"num_min_value": 0.1, "num_max_value": 100.0}</td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>forwardSeekIndicator</td>
@@ -112,9 +109,7 @@ import java.util.Hashtable;
* <td>Used to control the forward seek button to either skip forward a set amount of time or to the next track.</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>backSeekIndicator</td>
@@ -122,9 +117,7 @@ import java.util.Hashtable;
* <td>Used to control the forward seek button to either skip back a set amount of time or to the previous track.</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
*
* </table>
@@ -142,7 +135,7 @@ import java.util.Hashtable;
* <p> REJECTED </p>
* <p> IGNORED </p>
*
- * @since SmartDeviceLink 1.0
+ * SmartDeviceLink 1.0
*/
public class SetMediaClockTimer extends RPCRequest {
public static final String KEY_START_TIME = "startTime";
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/Show.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/Show.java
index e9bdcd905..1e091beb6 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/Show.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/Show.java
@@ -120,10 +120,10 @@ import java.util.List;
* <td>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.</td>
* <td>N</td>
* <td>{"string_min_length": 0, "string_max_length": 500}</td>
- * <td>
- * @since SmartDeviceLink 1.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 1.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>mediaTrack</td>
@@ -168,9 +168,9 @@ import java.util.List;
* <tr>
* <td>templateTitle</td>
* <td>String</td>
- * <td>The title of the new template that will be displayed.</td>
+ * <td>The title of the new template that will be displayed.</td>
+ * <td>N</td>
* <td><p>How this will be displayed is dependent on the OEM design and implementation of the template..</p>Minsize: 0; Maxsize: 100</td>
- * <td>N</td>
* <td>SmartDeviceLink 6.0.0</td>
* </tr>
*
@@ -677,4 +677,4 @@ public class Show extends RPCRequest {
public String getTemplateTitle() {
return getString(KEY_TEMPLATE_TITLE);
}
-}
+} \ No newline at end of file
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java
index a779c7288..f32dba1a3 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/SubscribeVehicleData.java
@@ -119,23 +119,25 @@ import java.util.Hashtable;
* <td>The external temperature in degrees celsius. This parameter is deprecated starting RPCSpec 7.1.0, please see climateData.</td>
* <td>N</td>
* <td>Subscribable</td>
- * <td>
- * @since SmartDeviceLink 2.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 2.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>gearStatus</td>
* <td>Boolean</td>
* <td>See GearStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>prndl</td>
* <td>Boolean</td>
* <td>See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -294,21 +296,24 @@ import java.util.Hashtable;
* <td>handsOffSteering</td>
* <td>Boolean</td>
* <td>To indicate whether driver hands are off the steering wheel</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>windowStatus</td>
* <td>Boolean</td>
* <td>See WindowStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>stabilityControlsStatus</td>
* <td>Boolean</td>
* <td>See StabilityControlsStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -317,9 +322,7 @@ import java.util.Hashtable;
* <td>See ClimateData</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>seatOccupancy</td>
@@ -327,9 +330,7 @@ import java.util.Hashtable;
* <td>See SeatOccupancy</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* </table>
*
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java
index 3f3dff1bf..0f5a71efe 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/UnsubscribeVehicleData.java
@@ -114,23 +114,25 @@ import java.util.Hashtable;
* <td>The external temperature in degrees celsius. This parameter is deprecated starting RPCSpec 7.1.0, please see climateData.</td>
* <td>N</td>
* <td>Subscribable</td>
- * <td>
- * @since SmartDeviceLink 2.0.0
- * @property-deprecated in SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 2.0.0
+ * <br>
+ * <br>
+ * Deprecated in SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>gearStatus</td>
* <td>Boolean</td>
* <td>See GearStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>prndl</td>
* <td>Boolean</td>
* <td>See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -281,21 +283,24 @@ import java.util.Hashtable;
* <td>handsOffSteering</td>
* <td>Boolean</td>
* <td>To indicate whether driver hands are off the steering wheel</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>windowStatus</td>
* <td>Boolean</td>
* <td>See WindowStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
* <td>stabilityControlsStatus</td>
* <td>Boolean</td>
* <td>See StabilityControlsStatus</td>
- * <td>N</td>
+ * <td>N</td>
+ * <td></td>
* <td>SmartDeviceLink 7.0.0</td>
* </tr>
* <tr>
@@ -304,9 +309,7 @@ import java.util.Hashtable;
* <td>See ClimateData</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
* <tr>
* <td>seatOccupancy</td>
@@ -314,9 +317,7 @@ import java.util.Hashtable;
* <td>See SeatOccupancy</td>
* <td>N</td>
* <td></td>
- * <td>
- * @since SmartDeviceLink 7.1.0
- * </td>
+ * <td>SmartDeviceLink 7.1.0</td>
* </tr>
*
*