diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java index edf446b3ca..1d58829ad1 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java @@ -114,6 +114,9 @@ import com.smartdevicelink.proxy.rpc.WindowState; import com.smartdevicelink.proxy.rpc.WindowStatus; import com.smartdevicelink.proxy.rpc.WindowTypeCapabilities; +import com.smartdevicelink.proxy.rpc.DoorStatus; +import com.smartdevicelink.proxy.rpc.GateStatus; +import com.smartdevicelink.proxy.rpc.RoofStatus; import com.smartdevicelink.proxy.rpc.enums.AmbientLightStatus; import com.smartdevicelink.proxy.rpc.enums.AppHMIType; import com.smartdevicelink.proxy.rpc.enums.AppInterfaceUnregisteredReason; @@ -137,6 +140,7 @@ import com.smartdevicelink.proxy.rpc.enums.DisplayMode; import com.smartdevicelink.proxy.rpc.enums.DisplayType; import com.smartdevicelink.proxy.rpc.enums.DistanceUnit; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; import com.smartdevicelink.proxy.rpc.enums.DriverDistractionState; import com.smartdevicelink.proxy.rpc.enums.ECallConfirmationStatus; import com.smartdevicelink.proxy.rpc.enums.EmergencyEventType; @@ -427,6 +431,15 @@ public class TestValues { public static final DynamicUpdateCapabilities GENERAL_DYNAMICUPDATECAPABILITIES = new DynamicUpdateCapabilities(); public static final WindowState GENERAL_WINDOWSTATE = new WindowState(); + public static final DoorStatusType GENERAL_DOOR_STATUS_TYPE = DoorStatusType.REMOVED; + + public static final DoorStatus GENERAL_DOOR_STATUS = new DoorStatus(); + public static final GateStatus GENERAL_GATE_STATUS = new GateStatus(); + public static final RoofStatus GENERAL_ROOF_STATUS = new RoofStatus(); + + public static final ArrayList GENERAL_DOOR_STATUS_LIST = new ArrayList<>(1); + public static final ArrayList GENERAL_GATE_STATUS_LIST = new ArrayList<>(1); + public static final ArrayList GENERAL_ROOF_STATUS_LIST = new ArrayList<>(1); public static final VehicleDataResult GENERAL_OEM_CUSTOM_VEHICLE_DATA = new VehicleDataResult(); public static final TemplateConfiguration GENERAL_TEMPLATE_CONFIGURATION = new TemplateConfiguration(); @@ -591,6 +604,12 @@ public void onVoiceCommandSelected() { public static final JSONObject JSON_DISPLAYCAPABILITY = new JSONObject(); public static final JSONArray JSON_DISPLAYCAPABILITY_LIST = new JSONArray(); public static final JSONObject JSON_DYNAMICUPDATECAPABILITIES = new JSONObject(); + public static final JSONArray JSON_ROOF_STATUSES = new JSONArray(); + public static final JSONArray JSON_DOOR_STATUSES = new JSONArray(); + public static final JSONArray JSON_GATE_STATUSES = new JSONArray(); + public static final JSONObject JSON_ROOF_STATUS = new JSONObject(); + public static final JSONObject JSON_DOOR_STATUS = new JSONObject(); + public static final JSONObject JSON_GATE_STATUS = new JSONObject(); static { GENERAL_TOUCHEVENTCAPABILITIES.setDoublePressAvailable(GENERAL_BOOLEAN); @@ -1154,6 +1173,19 @@ public void onVoiceCommandSelected() { GENERAL_STABILITY_CONTROL_STATUS.setEscSystem(GENERAL_ESC_SYSTEM); GENERAL_STABILITY_CONTROL_STATUS.setTrailerSwayControl(GENERAL_S_WAY_CONTROL); + GENERAL_ROOF_STATUS.setLocation(GENERAL_GRID); + GENERAL_ROOF_STATUS.setState(GENERAL_WINDOW_STATE); + GENERAL_ROOF_STATUS.setStatus(GENERAL_DOOR_STATUS_TYPE); + GENERAL_ROOF_STATUS_LIST.add(GENERAL_ROOF_STATUS); + + GENERAL_GATE_STATUS.setLocation(GENERAL_GRID); + GENERAL_GATE_STATUS.setStatus(GENERAL_DOOR_STATUS_TYPE); + GENERAL_GATE_STATUS_LIST.add(GENERAL_GATE_STATUS); + + GENERAL_DOOR_STATUS.setLocation(GENERAL_GRID); + GENERAL_DOOR_STATUS.setStatus(GENERAL_DOOR_STATUS_TYPE); + GENERAL_DOOR_STATUS_LIST.add(GENERAL_DOOR_STATUS); + try { JSON_HMIPERMISSIONS.put(HMIPermissions.KEY_ALLOWED, GENERAL_HMILEVEL_LIST); JSON_HMIPERMISSIONS.put(HMIPermissions.KEY_USER_DISALLOWED, GENERAL_HMILEVEL_LIST); @@ -1391,6 +1423,19 @@ public void onVoiceCommandSelected() { JSON_MODULE_INFO.put(ModuleInfo.KEY_MODULE_SERVICE_AREA, TestValues.JSON_GRID); JSON_MODULE_INFO.put(ModuleInfo.KEY_MULTIPLE_ACCESS_ALLOWED, TestValues.GENERAL_BOOLEAN); + JSON_ROOF_STATUS.put(RoofStatus.KEY_STATUS, GENERAL_DOOR_STATUS_TYPE); + JSON_ROOF_STATUS.put(RoofStatus.KEY_LOCATION, JSON_GRID); + JSON_ROOF_STATUS.put(RoofStatus.KEY_STATE, GENERAL_WINDOW_STATE.serializeJSON()); + + JSON_DOOR_STATUS.put(DoorStatus.KEY_STATUS, GENERAL_DOOR_STATUS_TYPE); + JSON_DOOR_STATUS.put(DoorStatus.KEY_LOCATION, JSON_GRID); + + JSON_GATE_STATUS.put(GateStatus.KEY_STATUS, GENERAL_DOOR_STATUS_TYPE); + JSON_GATE_STATUS.put(GateStatus.KEY_LOCATION, JSON_GRID); + + JSON_ROOF_STATUSES.put(JSON_ROOF_STATUS); + JSON_DOOR_STATUSES.put(JSON_DOOR_STATUS); + JSON_GATE_STATUSES.put(JSON_GATE_STATUS); } catch (JSONException e) { Log.e("Test", "Static Json Construction Failed.", e); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java index 724be920b0..3195691f75 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java @@ -3929,4 +3929,37 @@ public static boolean validateStabilityControlStatus(VehicleDataResult status1, } return status1.getDataType().equals(status2.getDataType()) && status1.getResultCode().equals(status2.getResultCode()); } + + public static boolean validateDoorStatus(DoorStatus status1, DoorStatus status2) { + if (status1 == null) { + return (status2 == null); + } + if (status2 == null) { + return (status2 == null); + } + boolean gridValidated = validateGrid(status1.getLocation(), status2.getLocation()); + return gridValidated && status1.getStatus().equals(status2.getStatus()); + } + + public static boolean validateGateStatus(GateStatus status1, GateStatus status2) { + if (status1 == null) { + return (status2 == null); + } + if (status2 == null) { + return (status2 == null); + } + boolean gridValidated = validateGrid(status1.getLocation(), status2.getLocation()); + return gridValidated && status1.getStatus().equals(status2.getStatus()); + } + + public static boolean validateRoofStatus(RoofStatus status1, RoofStatus status2) { + if (status1 == null) { + return (status2 == null); + } + if (status2 == null) { + return (status2 == null); + } + boolean gridValidated = validateGrid(status1.getLocation(), status2.getLocation()); + return gridValidated && status1.getStatus().equals(status2.getStatus()) && validateWindowStates(status1.getState(), status2.getState()); + } } diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java index 1db5aa77a7..f0a33599ab 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java @@ -1,18 +1,29 @@ package com.smartdevicelink.test.rpc.datatypes; +import com.smartdevicelink.marshal.JsonRPCMarshaller; import com.smartdevicelink.proxy.rpc.BodyInformation; +import com.smartdevicelink.proxy.rpc.DoorStatus; +import com.smartdevicelink.proxy.rpc.GateStatus; +import com.smartdevicelink.proxy.rpc.RoofStatus; import com.smartdevicelink.proxy.rpc.enums.IgnitionStableStatus; import com.smartdevicelink.proxy.rpc.enums.IgnitionStatus; import com.smartdevicelink.test.JsonUtils; import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; import junit.framework.TestCase; +import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.util.Hashtable; import java.util.Iterator; +import static com.smartdevicelink.proxy.rpc.BodyInformation.KEY_DOOR_STATUSES; +import static com.smartdevicelink.proxy.rpc.BodyInformation.KEY_GATE_STATUSES; +import static com.smartdevicelink.proxy.rpc.BodyInformation.KEY_ROOF_STATUSES; + /** * This is a unit test class for the SmartDeviceLink library project class : * {@link com.smartdevicelink.proxy.rpc.BodyInformation} @@ -32,6 +43,10 @@ public void setUp() { msg.setPassengerDoorAjar(TestValues.GENERAL_BOOLEAN); msg.setRearLeftDoorAjar(TestValues.GENERAL_BOOLEAN); msg.setRearRightDoorAjar(TestValues.GENERAL_BOOLEAN); + + msg.setDoorStatuses(TestValues.GENERAL_DOOR_STATUS_LIST); + msg.setGateStatuses(TestValues.GENERAL_GATE_STATUS_LIST); + msg.setRoofStatuses(TestValues.GENERAL_ROOF_STATUS_LIST); } /** @@ -52,6 +67,9 @@ public void testRpcValues() { assertEquals(TestValues.MATCH, TestValues.GENERAL_BOOLEAN, (boolean) msg.getPassengerDoorAjar()); assertEquals(TestValues.MATCH, TestValues.GENERAL_BOOLEAN, (boolean) msg.getRearLeftDoorAjar()); assertEquals(TestValues.MATCH, TestValues.GENERAL_BOOLEAN, (boolean) msg.getRearRightDoorAjar()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_GATE_STATUS_LIST, msg.getGateStatuses()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_ROOF_STATUS_LIST, msg.getRoofStatuses()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_LIST, msg.getDoorStatuses()); // Invalid/Null Tests BodyInformation msg = new BodyInformation(); @@ -64,6 +82,9 @@ public void testRpcValues() { assertNull(TestValues.NULL, msg.getPassengerDoorAjar()); assertNull(TestValues.NULL, msg.getRearLeftDoorAjar()); assertNull(TestValues.NULL, msg.getRearRightDoorAjar()); + assertNull(TestValues.NULL, msg.getGateStatuses()); + assertNull(TestValues.NULL, msg.getRoofStatuses()); + assertNull(TestValues.NULL, msg.getDoorStatuses()); } public void testJson() { @@ -77,6 +98,9 @@ public void testJson() { reference.put(BodyInformation.KEY_PASSENGER_DOOR_AJAR, TestValues.GENERAL_BOOLEAN); reference.put(BodyInformation.KEY_REAR_LEFT_DOOR_AJAR, TestValues.GENERAL_BOOLEAN); reference.put(BodyInformation.KEY_REAR_RIGHT_DOOR_AJAR, TestValues.GENERAL_BOOLEAN); + reference.put(KEY_DOOR_STATUSES, TestValues.JSON_DOOR_STATUSES); + reference.put(KEY_GATE_STATUSES, TestValues.JSON_GATE_STATUSES); + reference.put(KEY_ROOF_STATUSES, TestValues.JSON_ROOF_STATUSES); JSONObject underTest = msg.serializeJSON(); assertEquals(TestValues.MATCH, reference.length(), underTest.length()); @@ -84,7 +108,39 @@ public void testJson() { Iterator iterator = reference.keys(); while (iterator.hasNext()) { String key = (String) iterator.next(); - assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + if (key.equals(KEY_DOOR_STATUSES)) { + + JSONArray array1 = JsonUtils.readJsonArrayFromJsonObject(reference, key); + JSONArray array2 = JsonUtils.readJsonArrayFromJsonObject(underTest, key); + + for (int i = 0; i < array1.length(); i++) { + Hashtable h1 = JsonRPCMarshaller.deserializeJSONObject(array1.getJSONObject(i)); + Hashtable h2 = JsonRPCMarshaller.deserializeJSONObject(array2.getJSONObject(i)); + assertTrue(Validator.validateDoorStatus(new DoorStatus(h1), new DoorStatus(h2))); + + } + } else if (key.equals(KEY_GATE_STATUSES)) { + + JSONArray array1 = JsonUtils.readJsonArrayFromJsonObject(reference, key); + JSONArray array2 = JsonUtils.readJsonArrayFromJsonObject(underTest, key); + + for (int i = 0; i < array1.length(); i++) { + Hashtable h1 = JsonRPCMarshaller.deserializeJSONObject(array1.getJSONObject(i)); + Hashtable h2 = JsonRPCMarshaller.deserializeJSONObject(array2.getJSONObject(i)); + assertTrue(Validator.validateGateStatus(new GateStatus(h1), new GateStatus(h2))); + } + } else if (key.equals(KEY_ROOF_STATUSES)) { + JSONArray array1 = JsonUtils.readJsonArrayFromJsonObject(reference, key); + JSONArray array2 = JsonUtils.readJsonArrayFromJsonObject(underTest, key); + + for (int i = 0; i < array1.length(); i++) { + Hashtable h1 = JsonRPCMarshaller.deserializeJSONObject(array1.getJSONObject(i)); + Hashtable h2 = JsonRPCMarshaller.deserializeJSONObject(array2.getJSONObject(i)); + assertTrue(Validator.validateRoofStatus(new RoofStatus(h1), new RoofStatus(h2))); + } + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } } } catch (JSONException e) { fail(TestValues.JSON_FAIL); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DoorStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DoorStatusTests.java new file mode 100644 index 0000000000..cae1001c30 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DoorStatusTests.java @@ -0,0 +1,65 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.DoorStatus; +import com.smartdevicelink.proxy.rpc.Grid; +import com.smartdevicelink.proxy.rpc.RoofStatus; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class DoorStatusTests extends TestCase { + private DoorStatus msg; + + @Override + public void setUp() { + msg = new DoorStatus(TestValues.GENERAL_GRID, TestValues.GENERAL_DOOR_STATUS_TYPE); + } + + public void testRpcValues() { + // Test Values + Grid location = msg.getLocation(); + DoorStatusType status = msg.getStatus(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_GRID, location); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_TYPE, status); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(RoofStatus.KEY_STATUS, TestValues.GENERAL_DOOR_STATUS_TYPE); + reference.put(RoofStatus.KEY_LOCATION, TestValues.JSON_GRID); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(RoofStatus.KEY_LOCATION)) { + Hashtable hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateGrid(new Grid(hs1), new Grid(hs2))); + + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/GateStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/GateStatusTests.java new file mode 100644 index 0000000000..7bb8da021b --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/GateStatusTests.java @@ -0,0 +1,65 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.GateStatus; +import com.smartdevicelink.proxy.rpc.Grid; +import com.smartdevicelink.proxy.rpc.RoofStatus; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class GateStatusTests extends TestCase { + private GateStatus msg; + + @Override + public void setUp() { + msg = new GateStatus(TestValues.GENERAL_GRID, TestValues.GENERAL_DOOR_STATUS_TYPE); + } + + public void testRpcValues() { + // Test Values + Grid location = msg.getLocation(); + DoorStatusType status = msg.getStatus(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_GRID, location); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_TYPE, status); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(RoofStatus.KEY_STATUS, TestValues.GENERAL_DOOR_STATUS_TYPE); + reference.put(RoofStatus.KEY_LOCATION, TestValues.JSON_GRID); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(RoofStatus.KEY_LOCATION)) { + Hashtable hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateGrid(new Grid(hs1), new Grid(hs2))); + + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RoofStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RoofStatusTests.java new file mode 100644 index 0000000000..5d30cdb15a --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RoofStatusTests.java @@ -0,0 +1,75 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.Grid; +import com.smartdevicelink.proxy.rpc.RoofStatus; +import com.smartdevicelink.proxy.rpc.WindowState; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class RoofStatusTests extends TestCase { + + private RoofStatus msg; + + @Override + public void setUp() { + msg = new RoofStatus(TestValues.GENERAL_GRID, TestValues.GENERAL_DOOR_STATUS_TYPE); + msg.setState(TestValues.GENERAL_WINDOW_STATE); + } + + public void testRpcValues() { + // Test Values + Grid location = msg.getLocation(); + DoorStatusType status = msg.getStatus(); + WindowState windowState = msg.getState(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_GRID, location); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_TYPE, status); + assertEquals(TestValues.MATCH, TestValues.GENERAL_WINDOW_STATE, windowState); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(RoofStatus.KEY_STATUS, TestValues.GENERAL_DOOR_STATUS_TYPE); + reference.put(RoofStatus.KEY_STATE, TestValues.GENERAL_WINDOW_STATE.serializeJSON()); + reference.put(RoofStatus.KEY_LOCATION, TestValues.JSON_GRID); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(RoofStatus.KEY_STATE)) { + Hashtable hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateWindowStates(new WindowState(hs1), new WindowState(hs2))); + } else if (key.equals(RoofStatus.KEY_LOCATION)) { + Hashtable hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateGrid(new Grid(hs1), new Grid(hs2))); + + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DoorStatusTypeTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DoorStatusTypeTests.java new file mode 100644 index 0000000000..0a83f8e589 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DoorStatusTypeTests.java @@ -0,0 +1,73 @@ +package com.smartdevicelink.test.rpc.enums; + +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; + +import junit.framework.TestCase; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class DoorStatusTypeTests extends TestCase { + + /** + * Verifies that the enum values are not null upon valid assignment. + */ + public void testValidEnums() { + String example = "CLOSED"; + DoorStatusType closed = DoorStatusType.valueForString(example); + example = "LOCKED"; + DoorStatusType locked = DoorStatusType.valueForString(example); + example = "AJAR"; + DoorStatusType ajar = DoorStatusType.valueForString(example); + example = "REMOVED"; + DoorStatusType removed = DoorStatusType.valueForString(example); + + assertNotNull("CLOSED returned null", closed); + assertNotNull("LOCKED returned null", locked); + assertNotNull("AJAR returned null", ajar); + assertNotNull("REMOVED returned null", removed); + } + + /** + * Verifies that an invalid assignment is null. + */ + public void testInvalidEnum() { + String example = "cloS_ed"; + try { + DoorStatusType temp = DoorStatusType.valueForString(example); + assertNull("Result of valueForString should be null.", temp); + } catch (IllegalArgumentException exception) { + fail("Invalid enum throws IllegalArgumentException."); + } + } + + /** + * Verifies that a null assignment is invalid. + */ + public void testNullEnum() { + String example = null; + try { + DoorStatusType temp = DoorStatusType.valueForString(example); + assertNull("Result of valueForString should be null.", temp); + } catch (NullPointerException exception) { + fail("Null string throws NullPointerException."); + } + } + + /** + * Verifies the possible enum values of DriverDistractionState. + */ + public void testListEnum() { + List enumValueList = Arrays.asList(DoorStatusType.values()); + + List enumTestList = new ArrayList(); + enumTestList.add(DoorStatusType.CLOSED); + enumTestList.add(DoorStatusType.LOCKED); + enumTestList.add(DoorStatusType.AJAR); + enumTestList.add(DoorStatusType.REMOVED); + + assertTrue("Enum value list does not match enum class list", + enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList)); + } +} 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 fcb5c8d708..c040af0cd7 100644 --- a/base/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java +++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/BodyInformation.java @@ -38,6 +38,7 @@ import com.smartdevicelink.proxy.rpc.enums.IgnitionStatus; import java.util.Hashtable; +import java.util.List; /** * The body information including power modes. @@ -86,30 +87,71 @@ * Boolean * true * The information about the park brake: - true, if active - false if not. - * SmartDeviceLink 2.0 + * + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * * * * passengerDoorAjar * Boolean * true * The information about the park brake: - true, if active - false if not. - * SmartDeviceLink 2.0 + * + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * * * * rearLeftDoorAjar * Boolean * true * The information about the park brake: - true, if active - false if not. - * SmartDeviceLink 2.0 + * + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * * * * rearRightDoorAjar * Boolean * true * References signal "DrStatRr_B_Actl". - * SmartDeviceLink 2.0 + * + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * + * + * + * doorStatuses + * List + * Provides status for doors if Ajar/Closed/Locked + * N + * {"array_min_size": 0, "array_max_size": 100} + * + * @since SmartDeviceLink 7.1.0 + * + * + * + * gateStatuses + * List + * Provides status for trunk/hood/etc. if Ajar/Closed/Locked + * N + * {"array_min_size": 0, "array_max_size": 100} + * + * @since SmartDeviceLink 7.1.0 + * + * + * + * roofStatuses + * List + * Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removedetc. + * N + * {"array_min_size": 0, "array_max_size": 100} + * + * @since SmartDeviceLink 7.1.0 + * * - * * * * @see SubscribeVehicleData @@ -122,10 +164,42 @@ public class BodyInformation extends RPCStruct { public static final String KEY_PARK_BRAKE_ACTIVE = "parkBrakeActive"; public static final String KEY_IGNITION_STABLE_STATUS = "ignitionStableStatus"; public static final String KEY_IGNITION_STATUS = "ignitionStatus"; + /** + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public static final String KEY_DRIVER_DOOR_AJAR = "driverDoorAjar"; + /** + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public static final String KEY_PASSENGER_DOOR_AJAR = "passengerDoorAjar"; + /** + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public static final String KEY_REAR_LEFT_DOOR_AJAR = "rearLeftDoorAjar"; + /** + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public static final String KEY_REAR_RIGHT_DOOR_AJAR = "rearRightDoorAjar"; + /** + * @since SmartDeviceLink 7.1.0 + */ + public static final String KEY_DOOR_STATUSES = "doorStatuses"; + /** + * @since SmartDeviceLink 7.1.0 + */ + public static final String KEY_GATE_STATUSES = "gateStatuses"; + /** + * @since SmartDeviceLink 7.1.0 + */ + public static final String KEY_ROOF_STATUSES = "roofStatuses"; public BodyInformation() { } @@ -175,41 +249,177 @@ public IgnitionStatus getIgnitionStatus() { return (IgnitionStatus) getObject(IgnitionStatus.class, KEY_IGNITION_STATUS); } + /** + * Sets the driverDoorAjar. + * + * @param driverDoorAjar References signal "DrStatDrv_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public BodyInformation setDriverDoorAjar(Boolean driverDoorAjar) { setValue(KEY_DRIVER_DOOR_AJAR, driverDoorAjar); return this; } + /** + * Gets the driverDoorAjar. + * + * @return Boolean References signal "DrStatDrv_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public Boolean getDriverDoorAjar() { return getBoolean(KEY_DRIVER_DOOR_AJAR); } - + /** + * Sets the passengerDoorAjar. + * + * @param passengerDoorAjar References signal "DrStatPsngr_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public BodyInformation setPassengerDoorAjar(Boolean passengerDoorAjar) { setValue(KEY_PASSENGER_DOOR_AJAR, passengerDoorAjar); return this; } + /** + * Gets the passengerDoorAjar. + * + * @return Boolean References signal "DrStatPsngr_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public Boolean getPassengerDoorAjar() { return getBoolean(KEY_PASSENGER_DOOR_AJAR); } + /** + * Sets the rearLeftDoorAjar. + * + * @param rearLeftDoorAjar References signal "DrStatRl_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public BodyInformation setRearLeftDoorAjar(Boolean rearLeftDoorAjar) { setValue(KEY_REAR_LEFT_DOOR_AJAR, rearLeftDoorAjar); return this; } + /** + * Gets the rearLeftDoorAjar. + * + * @return Boolean References signal "DrStatRl_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public Boolean getRearLeftDoorAjar() { return getBoolean(KEY_REAR_LEFT_DOOR_AJAR); } + /** + * Sets the rearRightDoorAjar. + * + * @param rearRightDoorAjar References signal "DrStatRr_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public BodyInformation setRearRightDoorAjar(Boolean rearRightDoorAjar) { setValue(KEY_REAR_RIGHT_DOOR_AJAR, rearRightDoorAjar); return this; } + /** + * Gets the rearRightDoorAjar. + * + * @return Boolean References signal "DrStatRr_B_Actl". Deprecated starting with RPC Spec 7.1.0. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + */ + @Deprecated public Boolean getRearRightDoorAjar() { return getBoolean(KEY_REAR_RIGHT_DOOR_AJAR); } + /** + * Sets the doorStatuses. + * + * @param doorStatuses Provides status for doors if Ajar/Closed/Locked + * {"array_min_size": 0, "array_max_size": 100} + * @since SmartDeviceLink 7.1.0 + */ + public BodyInformation setDoorStatuses(List doorStatuses) { + setValue(KEY_DOOR_STATUSES, doorStatuses); + return this; + } + + /** + * Gets the doorStatuses. + * + * @return List Provides status for doors if Ajar/Closed/Locked + * {"array_min_size": 0, "array_max_size": 100} + * @since SmartDeviceLink 7.1.0 + */ + @SuppressWarnings("unchecked") + public List getDoorStatuses() { + return (List) getObject(DoorStatus.class, KEY_DOOR_STATUSES); + } + + /** + * Sets the gateStatuses. + * + * @param gateStatuses Provides status for trunk/hood/etc. if Ajar/Closed/Locked + * {"array_min_size": 0, "array_max_size": 100} + * @since SmartDeviceLink 7.1.0 + */ + public BodyInformation setGateStatuses(List gateStatuses) { + setValue(KEY_GATE_STATUSES, gateStatuses); + return this; + } + + /** + * Gets the gateStatuses. + * + * @return List Provides status for trunk/hood/etc. if Ajar/Closed/Locked + * {"array_min_size": 0, "array_max_size": 100} + * @since SmartDeviceLink 7.1.0 + */ + @SuppressWarnings("unchecked") + public List getGateStatuses() { + return (List) getObject(GateStatus.class, KEY_GATE_STATUSES); + } + + /** + * Sets the roofStatuses. + * + * @param roofStatuses Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removed + * etc. + * {"array_min_size": 0, "array_max_size": 100} + * @since SmartDeviceLink 7.1.0 + */ + public BodyInformation setRoofStatuses(List roofStatuses) { + setValue(KEY_ROOF_STATUSES, roofStatuses); + return this; + } + + /** + * Gets the roofStatuses. + * + * @return List Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removed + * etc. + * {"array_min_size": 0, "array_max_size": 100} + * @since SmartDeviceLink 7.1.0 + */ + @SuppressWarnings("unchecked") + public List getRoofStatuses() { + return (List) getObject(RoofStatus.class, KEY_ROOF_STATUSES); + } } diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/DoorStatus.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/DoorStatus.java new file mode 100644 index 0000000000..7775420850 --- /dev/null +++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/DoorStatus.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2017 - 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package com.smartdevicelink.proxy.rpc; + +import androidx.annotation.NonNull; + +import com.smartdevicelink.proxy.RPCStruct; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; + +import java.util.Hashtable; + +/** + * Describes the status of a parameter of door. + * + *

Parameter List

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Param NameTypeDescriptionRequiredNotesVersion Available
locationGridY
statusDoorStatusTypeY
+ * + * @since SmartDeviceLink 7.1.0 + */ +public class DoorStatus extends RPCStruct { + public static final String KEY_LOCATION = "location"; + public static final String KEY_STATUS = "status"; + + /** + * Constructs a new DoorStatus object + */ + public DoorStatus() { } + + /** + * Constructs a new DoorStatus object indicated by the Hashtable parameter + * + * @param hash The Hashtable to use + */ + public DoorStatus(Hashtable hash) { + super(hash); + } + + /** + * Constructs a new DoorStatus object + * + * @param location + * @param status + */ + public DoorStatus(@NonNull Grid location, @NonNull DoorStatusType status) { + this(); + setLocation(location); + setStatus(status); + } + + /** + * Sets the location. + * + * @param location + */ + public DoorStatus setLocation(@NonNull Grid location) { + setValue(KEY_LOCATION, location); + return this; + } + + /** + * Gets the location. + * + * @return Grid + */ + public Grid getLocation() { + return (Grid) getObject(Grid.class, KEY_LOCATION); + } + + /** + * Sets the status. + * + * @param status + */ + public DoorStatus setStatus(@NonNull DoorStatusType status) { + setValue(KEY_STATUS, status); + return this; + } + + /** + * Gets the status. + * + * @return DoorStatusType + */ + public DoorStatusType getStatus() { + return (DoorStatusType) getObject(DoorStatusType.class, KEY_STATUS); + } +} diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/GateStatus.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/GateStatus.java new file mode 100644 index 0000000000..df000ecbc1 --- /dev/null +++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/GateStatus.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2017 - 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package com.smartdevicelink.proxy.rpc; + +import androidx.annotation.NonNull; + +import com.smartdevicelink.proxy.RPCStruct; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; + +import java.util.Hashtable; + +/** + * Describes the status of a parameter of trunk/hood/etc. + * + *

Parameter List

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Param NameTypeDescriptionRequiredNotesVersion Available
locationGridY
statusDoorStatusTypeY
+ * + * @since SmartDeviceLink 7.1.0 + */ +public class GateStatus extends RPCStruct { + public static final String KEY_LOCATION = "location"; + public static final String KEY_STATUS = "status"; + + /** + * Constructs a new GateStatus object + */ + public GateStatus() { } + + /** + * Constructs a new GateStatus object indicated by the Hashtable parameter + * + * @param hash The Hashtable to use + */ + public GateStatus(Hashtable hash) { + super(hash); + } + + /** + * Constructs a new GateStatus object + * + * @param location + * @param status + */ + public GateStatus(@NonNull Grid location, @NonNull DoorStatusType status) { + this(); + setLocation(location); + setStatus(status); + } + + /** + * Sets the location. + * + * @param location + */ + public GateStatus setLocation(@NonNull Grid location) { + setValue(KEY_LOCATION, location); + return this; + } + + /** + * Gets the location. + * + * @return Grid + */ + public Grid getLocation() { + return (Grid) getObject(Grid.class, KEY_LOCATION); + } + + /** + * Sets the status. + * + * @param status + */ + public GateStatus setStatus(@NonNull DoorStatusType status) { + setValue(KEY_STATUS, status); + return this; + } + + /** + * Gets the status. + * + * @return DoorStatusType + */ + public DoorStatusType getStatus() { + return (DoorStatusType) getObject(DoorStatusType.class, KEY_STATUS); + } +} diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/RoofStatus.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/RoofStatus.java new file mode 100644 index 0000000000..1bc28d7cf6 --- /dev/null +++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/RoofStatus.java @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2017 - 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package com.smartdevicelink.proxy.rpc; + +import androidx.annotation.NonNull; + +import com.smartdevicelink.proxy.RPCStruct; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; + +import java.util.Hashtable; + +/** + * Describes the status of a parameter of roof/convertible roof/sunroof/moonroof etc. If roof + * is open (AJAR), state will determine percentage of roof open. + * + *

Parameter List

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Param NameTypeDescriptionRequiredNotesVersion Available
locationGridY
statusDoorStatusTypeY
stateWindowStateN
+ * + * @since SmartDeviceLink 7.1.0 + */ +public class RoofStatus extends RPCStruct { + public static final String KEY_LOCATION = "location"; + public static final String KEY_STATUS = "status"; + public static final String KEY_STATE = "state"; + + /** + * Constructs a new RoofStatus object + */ + public RoofStatus() { } + + /** + * Constructs a new RoofStatus object indicated by the Hashtable parameter + * + * @param hash The Hashtable to use + */ + public RoofStatus(Hashtable hash) { + super(hash); + } + + /** + * Constructs a new RoofStatus object + * + * @param location + * @param status + */ + public RoofStatus(@NonNull Grid location, @NonNull DoorStatusType status) { + this(); + setLocation(location); + setStatus(status); + } + + /** + * Sets the location. + * + * @param location + */ + public RoofStatus setLocation(@NonNull Grid location) { + setValue(KEY_LOCATION, location); + return this; + } + + /** + * Gets the location. + * + * @return Grid + */ + public Grid getLocation() { + return (Grid) getObject(Grid.class, KEY_LOCATION); + } + + /** + * Sets the status. + * + * @param status + */ + public RoofStatus setStatus(@NonNull DoorStatusType status) { + setValue(KEY_STATUS, status); + return this; + } + + /** + * Gets the status. + * + * @return DoorStatusType + */ + public DoorStatusType getStatus() { + return (DoorStatusType) getObject(DoorStatusType.class, KEY_STATUS); + } + + /** + * Sets the state. + * + * @param state + */ + public RoofStatus setState(WindowState state) { + setValue(KEY_STATE, state); + return this; + } + + /** + * Gets the state. + * + * @return WindowState + */ + public WindowState getState() { + return (WindowState) getObject(WindowState.class, KEY_STATE); + } +} diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/enums/DoorStatusType.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/enums/DoorStatusType.java new file mode 100644 index 0000000000..f19c66699f --- /dev/null +++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/enums/DoorStatusType.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 - 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package com.smartdevicelink.proxy.rpc.enums; + +/** + * @since SmartDeviceLink 7.1.0 + */ +public enum DoorStatusType { + CLOSED, + LOCKED, + AJAR, + REMOVED; + + /** + * Convert String to DoorStatusType + * + * @param value String + * @return DoorStatusType + */ + public static DoorStatusType valueForString(String value) { + try { + return valueOf(value); + } catch (Exception e) { + return null; + } + } +}