diff options
author | Joey Grover <joeygrover@gmail.com> | 2017-07-31 13:36:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-31 13:36:21 -0400 |
commit | 23acbc1fdcdef287b696a5f92984ac33d60ec015 (patch) | |
tree | 41dfbde0f116fdad4f71e5695a56890390d774c7 | |
parent | 2717fdae5eddfdec0171d49cffa6b6ba6523b5b8 (diff) | |
parent | 83cebcb2aba41dd3a6d01969499f7caf087b4a9a (diff) | |
download | sdl_android-feature/issue_486.tar.gz |
Merge pull request #539 from smartdevicelink/feature/issue_486feature/issue_486
Feature/issue 486 - System Capabilities Query
17 files changed, 540 insertions, 10 deletions
diff --git a/sdl_android/src/androidTest/assets/json/GetSystemCapability.json b/sdl_android/src/androidTest/assets/json/GetSystemCapability.json new file mode 100644 index 000000000..c96bf6013 --- /dev/null +++ b/sdl_android/src/androidTest/assets/json/GetSystemCapability.json @@ -0,0 +1,18 @@ +{ + "request":{ + "name":"GetSystemCapability", + "correlationID":203, + "parameters":{ + "systemCapabilityType":"NAVIGATION" + } + }, + "response":{ + "name":"GetSystemCapabilityResponse", + "correlationID":204, + "parameters":{ + "systemCapability":{ + "systemCapabilityType":"NAVIGATION" + } + } + } +}
\ No newline at end of file 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 01cc2d6a6..4dc1cf759 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java @@ -26,6 +26,7 @@ import com.smartdevicelink.proxy.rpc.SdlMsgVersion; import com.smartdevicelink.proxy.rpc.SoftButton; import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities; import com.smartdevicelink.proxy.rpc.StartTime; +import com.smartdevicelink.proxy.rpc.SystemCapability; import com.smartdevicelink.proxy.rpc.TTSChunk; import com.smartdevicelink.proxy.rpc.TextField; import com.smartdevicelink.proxy.rpc.TouchCoord; @@ -79,6 +80,7 @@ import com.smartdevicelink.proxy.rpc.enums.SamplingRate; import com.smartdevicelink.proxy.rpc.enums.SoftButtonType; import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities; import com.smartdevicelink.proxy.rpc.enums.SystemAction; +import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; import com.smartdevicelink.proxy.rpc.enums.SystemContext; import com.smartdevicelink.proxy.rpc.enums.TBTState; import com.smartdevicelink.proxy.rpc.enums.TextAlignment; @@ -202,6 +204,8 @@ public class Test { public static final PowerModeQualificationStatus GENERAL_POWERMODEQUALIFICATIONSTATUS = PowerModeQualificationStatus.POWER_MODE_OK; public static final VehicleDataNotificationStatus GENERAL_VEHICLEDATANOTIFICATIONSTATUS = VehicleDataNotificationStatus.NORMAL; public static final AppInterfaceUnregisteredReason GENERAL_APPINTERFACEUNREGISTEREDREASON = AppInterfaceUnregisteredReason.BLUETOOTH_OFF; + public static final SystemCapabilityType GENERAL_SYSTEMCAPABILITYTYPE = SystemCapabilityType.NAVIGATION; + public static final SystemCapability GENERAL_SYSTEMCAPABILITY = new SystemCapability(); public static final List<Long> GENERAL_LONG_LIST = Arrays.asList(new Long[]{ 1L, 2L }); public static final List<Turn> GENERAL_TURN_LIST = new ArrayList<Turn>(); @@ -457,6 +461,8 @@ public class Test { GENERAL_PERMISSIONITEM.setHMIPermissions(GENERAL_HMIPERMISSIONS); GENERAL_PERMISSIONITEM.setParameterPermissions(GENERAL_PARAMETERPERMISSIONS); GENERAL_PERMISSIONITEM_LIST.add(GENERAL_PERMISSIONITEM); + + GENERAL_SYSTEMCAPABILITY.setSystemCapabilityType(GENERAL_SYSTEMCAPABILITYTYPE); try { JSON_HMIPERMISSIONS.put(HMIPermissions.KEY_ALLOWED, GENERAL_HMILEVEL_LIST); diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java index 8ed8a6fe7..b8b705cfe 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SdlProxyBaseTests.java @@ -28,6 +28,7 @@ import com.smartdevicelink.proxy.rpc.DialNumberResponse; import com.smartdevicelink.proxy.rpc.EndAudioPassThruResponse; import com.smartdevicelink.proxy.rpc.GenericResponse; import com.smartdevicelink.proxy.rpc.GetDTCsResponse; +import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse; import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse; import com.smartdevicelink.proxy.rpc.GetWayPointsResponse; import com.smartdevicelink.proxy.rpc.ListFilesResponse; @@ -432,6 +433,11 @@ public class SdlProxyBaseTests extends AndroidTestCase{ } @Override + public void onGetSystemCapabilityResponse(GetSystemCapabilityResponse response) { + Log.i(TAG, "GetSystemCapability response from SDL: " + response); + } + + @Override public void onOnDriverDistraction(OnDriverDistraction notification) { // Some RPCs (depending on region) cannot be sent when driver distraction is active. } diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java index e548685ad..cbac57020 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/HMICapabilitiesTests.java @@ -12,10 +12,6 @@ import org.json.JSONObject; import static com.smartdevicelink.proxy.rpc.HMICapabilities.KEY_NAVIGATION; import static com.smartdevicelink.proxy.rpc.HMICapabilities.KEY_PHONE_CALL; -/** - * Created by austinkirk on 6/7/17. - */ - public class HMICapabilitiesTests extends TestCase { private HMICapabilities msg; @@ -62,7 +58,6 @@ public class HMICapabilitiesTests extends TestCase { assertEquals(Test.MATCH, JsonUtils.readStringListFromJsonObject(reference, KEY_PHONE_CALL), JsonUtils.readStringListFromJsonObject(underTest, KEY_PHONE_CALL)); - } catch(JSONException e){ fail(Test.JSON_FAIL); } diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java new file mode 100644 index 000000000..566b2733e --- /dev/null +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java @@ -0,0 +1,61 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.proxy.rpc.SystemCapability; +import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.Test; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Iterator; + +public class SystemCapabilityTests extends TestCase { + + private SystemCapability msg; + + @Override + public void setUp() { + msg = new SystemCapability(); + + msg.setSystemCapabilityType(Test.GENERAL_SYSTEMCAPABILITYTYPE); + } + + /** + * Tests the expected values of the RPC message. + */ + public void testRpcValues () { + // Test Values + SystemCapabilityType testType = msg.getSystemCapabilityType(); + + // Valid Tests + assertEquals(Test.MATCH, (SystemCapabilityType) Test.GENERAL_SYSTEMCAPABILITYTYPE, testType); + + // Invalid/Null Tests + SystemCapability msg = new SystemCapability(); + assertNotNull(Test.NOT_NULL, msg); + + assertNull(Test.NULL, msg.getSystemCapabilityType()); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(SystemCapability.KEY_SYSTEM_CAPABILITY_TYPE, Test.GENERAL_SYSTEMCAPABILITYTYPE); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(Test.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } catch (JSONException e) { + fail(Test.JSON_FAIL); + } + } +}
\ No newline at end of file diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetSystemCapabilityTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetSystemCapabilityTests.java new file mode 100644 index 000000000..78d4507da --- /dev/null +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetSystemCapabilityTests.java @@ -0,0 +1,95 @@ +package com.smartdevicelink.test.rpc.requests; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCMessage; +import com.smartdevicelink.proxy.rpc.GetSystemCapability; +import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; +import com.smartdevicelink.test.BaseRpcTests; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.Test; +import com.smartdevicelink.test.json.rpc.JsonFileReader; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; + +public class GetSystemCapabilityTests extends BaseRpcTests { + + @Override + protected RPCMessage createMessage(){ + GetSystemCapability msg = new GetSystemCapability(); + + msg.setSystemCapabilityType(Test.GENERAL_SYSTEMCAPABILITYTYPE); + + return msg; + } + + @Override + protected String getMessageType(){ + return RPCMessage.KEY_REQUEST; + } + + @Override + protected String getCommandType(){ + return FunctionID.GET_SYSTEM_CAPABILITY.toString(); + } + + @Override + protected JSONObject getExpectedParameters(int sdlVersion){ + JSONObject result = new JSONObject(); + + try{ + result.put(GetSystemCapability.KEY_SYSTEM_CAPABILITY_TYPE, Test.GENERAL_SYSTEMCAPABILITYTYPE); + }catch(JSONException e){ + fail(Test.JSON_FAIL); + } + + return result; + } + + /** + * Tests the expected values of the RPC message. + */ + public void testRpcValues () { + // Test Values + SystemCapabilityType testType = ( (GetSystemCapability) msg ).getSystemCapabilityType(); + + // Valid Tests + assertEquals(Test.MATCH, Test.GENERAL_SYSTEMCAPABILITYTYPE, testType); + + // Invalid/Null Tests + GetSystemCapability msg = new GetSystemCapability(); + assertNotNull(Test.NOT_NULL, msg); + testNullBase(msg); + + assertNull(Test.NULL, msg.getSystemCapabilityType()); + } + + /** + * Tests a valid JSON construction of this RPC message. + */ + public void testJsonConstructor () { + JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType()); + assertNotNull(Test.NOT_NULL, commandJson); + + try { + Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson); + GetSystemCapability cmd = new GetSystemCapability(hash); + + JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType()); + assertNotNull(Test.NOT_NULL, body); + + // Test everything in the json body. + assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName()); + assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID()); + + JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS); + + assertEquals(Test.MATCH, JsonUtils.readObjectFromJsonObject(parameters, GetSystemCapability.KEY_SYSTEM_CAPABILITY_TYPE).toString(), cmd.getSystemCapabilityType().toString()); + }catch (JSONException e) { + fail(Test.JSON_FAIL); + } + } +}
\ No newline at end of file diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetSystemCapabilityResponseTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetSystemCapabilityResponseTests.java new file mode 100644 index 000000000..b9fd85a8e --- /dev/null +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetSystemCapabilityResponseTests.java @@ -0,0 +1,97 @@ +package com.smartdevicelink.test.rpc.responses; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCMessage; +import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse; +import com.smartdevicelink.proxy.rpc.SystemCapability; +import com.smartdevicelink.test.BaseRpcTests; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.Test; +import com.smartdevicelink.test.json.rpc.JsonFileReader; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; + +public class GetSystemCapabilityResponseTests extends BaseRpcTests { + + @Override + protected RPCMessage createMessage(){ + GetSystemCapabilityResponse msg = new GetSystemCapabilityResponse(); + + msg.setSystemCapability(Test.GENERAL_SYSTEMCAPABILITY); + + return msg; + } + + @Override + protected String getMessageType(){ + return RPCMessage.KEY_RESPONSE; + } + + @Override + protected String getCommandType(){ + return FunctionID.GET_SYSTEM_CAPABILITY.toString(); + } + + @Override + protected JSONObject getExpectedParameters(int sdlVersion){ + JSONObject result = new JSONObject(); + + try{ + result.put(GetSystemCapabilityResponse.KEY_SYSTEM_CAPABILITY, JsonRPCMarshaller.serializeHashtable(Test.GENERAL_SYSTEMCAPABILITY.getStore())); + }catch(JSONException e){ + fail(Test.JSON_FAIL); + } + + return result; + } + + /** + * Tests the expected values of the RPC message. + */ + public void testRpcValues () { + // Test Values + SystemCapability testCapability = ( (GetSystemCapabilityResponse) msg ).getSystemCapability(); + + // Valid Tests + assertEquals(Test.MATCH, Test.GENERAL_SYSTEMCAPABILITY.getSystemCapabilityType(), testCapability.getSystemCapabilityType()); + + // Invalid/Null Tests + GetSystemCapabilityResponse msg = new GetSystemCapabilityResponse(); + assertNotNull(Test.NOT_NULL, msg); + testNullBase(msg); + + assertNull(Test.NULL, msg.getSystemCapability()); + } + + /** + * Tests a valid JSON construction of this RPC message. + */ + public void testJsonConstructor () { + JSONObject commandJson = JsonFileReader.readId(this.mContext, getCommandType(), getMessageType()); + assertNotNull(Test.NOT_NULL, commandJson); + + try { + Hashtable<String, Object> hash = JsonRPCMarshaller.deserializeJSONObject(commandJson); + GetSystemCapabilityResponse cmd = new GetSystemCapabilityResponse(hash); + + JSONObject body = JsonUtils.readJsonObjectFromJsonObject(commandJson, getMessageType()); + assertNotNull(Test.NOT_NULL, body); + + // Test everything in the json body. + assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(body, RPCMessage.KEY_FUNCTION_NAME), cmd.getFunctionName()); + assertEquals(Test.MATCH, JsonUtils.readIntegerFromJsonObject(body, RPCMessage.KEY_CORRELATION_ID), cmd.getCorrelationID()); + + JSONObject parameters = JsonUtils.readJsonObjectFromJsonObject(body, RPCMessage.KEY_PARAMETERS); + + SystemCapability testCapability = new SystemCapability(JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(parameters, GetSystemCapabilityResponse.KEY_SYSTEM_CAPABILITY))); + SystemCapability cmdCapability = cmd.getSystemCapability(); + assertEquals(Test.MATCH, testCapability.getSystemCapabilityType(), cmdCapability.getSystemCapabilityType()); + } catch (JSONException e) { + e.printStackTrace(); + } + } +} diff --git a/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java b/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java index e427141cf..9c34a4c67 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java +++ b/sdl_android/src/main/java/com/smartdevicelink/protocol/enums/FunctionID.java @@ -56,6 +56,7 @@ public enum FunctionID{ GET_WAY_POINTS(45, "GetWayPoints"),
SUBSCRIBE_WAY_POINTS(46, "SubscribeWayPoints"),
UNSUBSCRIBE_WAY_POINTS(47, "UnsubscribeWayPoints"),
+ GET_SYSTEM_CAPABILITY(48, "GetSystemCapability"),
// NOTIFICATIONS
ON_HMI_STATUS(32768, "OnHMIStatus"),
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 59a44a27b..08a3fba58 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java @@ -2831,8 +2831,22 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> _proxyListener.onUpdateTurnListResponse(msg);
onRPCResponseReceived(msg);
}
- }
- else {
+ } else if (functionName.equals(FunctionID.GET_SYSTEM_CAPABILITY.toString())) {
+ // GetSystemCapabilityResponse
+ final GetSystemCapabilityResponse msg = new GetSystemCapabilityResponse(hash);
+ if (_callbackToUIThread) {
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onGetSystemCapabilityResponse(msg);
+ onRPCResponseReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onGetSystemCapabilityResponse(msg);
+ onRPCResponseReceived(msg);
+ }
+ } else {
if (_sdlMsgVersion != null) {
DebugTool.logError("Unrecognized response Message: " + functionName.toString() +
"SDL Message Version = " + _sdlMsgVersion);
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java index 8b437e05e..62ddbc1e0 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java @@ -17,6 +17,7 @@ import com.smartdevicelink.proxy.rpc.DialNumberResponse; import com.smartdevicelink.proxy.rpc.EndAudioPassThruResponse;
import com.smartdevicelink.proxy.rpc.GenericResponse;
import com.smartdevicelink.proxy.rpc.GetDTCsResponse;
+import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse;
import com.smartdevicelink.proxy.rpc.GetWayPointsResponse;
import com.smartdevicelink.proxy.rpc.ListFilesResponse;
@@ -31,9 +32,9 @@ import com.smartdevicelink.proxy.rpc.OnKeyboardInput; import com.smartdevicelink.proxy.rpc.OnLanguageChange;
import com.smartdevicelink.proxy.rpc.OnLockScreenStatus;
import com.smartdevicelink.proxy.rpc.OnPermissionsChange;
+import com.smartdevicelink.proxy.rpc.OnStreamRPC;
import com.smartdevicelink.proxy.rpc.OnSystemRequest;
import com.smartdevicelink.proxy.rpc.OnTBTClientState;
-import com.smartdevicelink.proxy.rpc.OnStreamRPC;
import com.smartdevicelink.proxy.rpc.OnTouchEvent;
import com.smartdevicelink.proxy.rpc.OnVehicleData;
import com.smartdevicelink.proxy.rpc.OnWayPointChange;
@@ -335,4 +336,6 @@ public interface IProxyListenerBase { public void onUnsubscribeWayPointsResponse(UnsubscribeWayPointsResponse response);
public void onOnWayPointChange(OnWayPointChange notification);
+
+ public void onGetSystemCapabilityResponse(GetSystemCapabilityResponse response);
}
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 new file mode 100644 index 000000000..190403096 --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapability.java @@ -0,0 +1,48 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCRequest; +import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; + +import java.util.Hashtable; + +/** + * Used to request the corresponding capability object for a given capability. + */ + +public class GetSystemCapability extends RPCRequest { + public static final String KEY_SYSTEM_CAPABILITY_TYPE = "systemCapabilityType"; + + /** + * Constructs a new GetSystemCapability object + */ + public GetSystemCapability(){ + super(FunctionID.GET_SYSTEM_CAPABILITY.toString()); + } + + /** + * <p>Constructs a new GetSystemCapability object indicated by the Hashtable parameter</p> + * + * @param hash + * The Hashtable to use + */ + public GetSystemCapability(Hashtable<String, Object> hash) { + super(hash); + } + + /** + * Used to get the SystemCapabilityType being requested + * @return the SystemCapabilityType being requested + */ + public SystemCapabilityType getSystemCapabilityType(){ + return (SystemCapabilityType) getObject(SystemCapabilityType.class, KEY_SYSTEM_CAPABILITY_TYPE); + } + + /** + * Used to set the SystemCapabilityType being requested + * @param value SystemCapabilityType being requested + */ + public void setSystemCapabilityType(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 new file mode 100644 index 000000000..bccce6331 --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/GetSystemCapabilityResponse.java @@ -0,0 +1,48 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCResponse; + +import java.util.Hashtable; + +/** + * GetSystemCapabilityResponse is sent, when GetSystemCapability has been called + */ + +public class GetSystemCapabilityResponse extends RPCResponse { + public static final String KEY_SYSTEM_CAPABILITY = "systemCapability"; + + /** + * Constructs a new GetSystemCapability object + */ + public GetSystemCapabilityResponse(){ + super(FunctionID.GET_SYSTEM_CAPABILITY.toString()); + } + + /** + * <p>Constructs a new GetSystemCapability object indicated by the Hashtable parameter</p> + * + * + * @param hash + * The Hashtable to use + */ + public GetSystemCapabilityResponse(Hashtable<String, Object> hash) { + super(hash); + } + + /** + * Get the SystemCapability object returned after a GetSystemCapability call + * @return SystemCapability object + */ + public SystemCapability getSystemCapability(){ + return (SystemCapability) getObject(SystemCapability.class, KEY_SYSTEM_CAPABILITY); + } + + /** + * Set a SystemCapability object in the response + * @param value SystemCapability object + */ + public void setSystemCapability(SystemCapability value){ + setParameters(KEY_SYSTEM_CAPABILITY, value); + } +} diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java index accc18aba..7a1a37a1e 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/HMICapabilities.java @@ -7,8 +7,8 @@ import java.util.Hashtable; public class HMICapabilities extends RPCStruct{ public static final String KEY_NAVIGATION = "navigation"; public static final String KEY_PHONE_CALL = "phoneCall"; - - public HMICapabilities() { } + + public HMICapabilities() { } public HMICapabilities(Hashtable<String, Object> hash) { super(hash); diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/NavigationCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/NavigationCapability.java new file mode 100644 index 000000000..c3d0d59f8 --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/NavigationCapability.java @@ -0,0 +1,35 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.proxy.RPCStruct; + +import java.util.Hashtable; + +/* + * Extended capabilities for an onboard navigation system + */ +public class NavigationCapability extends RPCStruct{ + public static final String KEY_LOCATION_ENABLED = "sendLocationEnabled"; + public static final String KEY_GETWAYPOINTS_ENABLED = "getWayPointsEnabled"; + + public NavigationCapability(){} + + public NavigationCapability(Hashtable<String, Object> hash) { + super(hash); + } + + public Boolean getSendLocationEnabled(){ + return getBoolean(KEY_LOCATION_ENABLED); + } + + public void setSendLocationEnabled(Boolean sendLocationEnabled){ + setValue(KEY_LOCATION_ENABLED, sendLocationEnabled); + } + + public Boolean getWayPointsEnabled(){ + return getBoolean(KEY_GETWAYPOINTS_ENABLED); + } + + public void setWayPointsEnabled(Boolean getWayPointsEnabled){ + setValue(KEY_GETWAYPOINTS_ENABLED, getWayPointsEnabled); + } +} diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PhoneCapability.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PhoneCapability.java new file mode 100644 index 000000000..c317e0eb9 --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/PhoneCapability.java @@ -0,0 +1,27 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.proxy.RPCStruct; + +import java.util.Hashtable; + +/** + * Extended capabilities of the module's phone feature + */ + +public class PhoneCapability extends RPCStruct { + public static final String KEY_DIALNUMBER_ENABLED = "dialNumberEnabled"; + + public PhoneCapability(){} + + public PhoneCapability(Hashtable<String, Object> hash) { + super(hash); + } + + public Boolean getDialNumberEnabled(){ + return getBoolean(KEY_DIALNUMBER_ENABLED); + } + + public void setDialNumberEnabled(Boolean dialNumberEnabled){ + setValue(KEY_DIALNUMBER_ENABLED, dialNumberEnabled); + } +} 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 new file mode 100644 index 000000000..a039e266e --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java @@ -0,0 +1,57 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.proxy.RPCStruct; +import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; + +import java.util.Hashtable; + +/** + * Struct that indicates the a SystemCapabilityType and houses different structs to describe particular capabilities + */ + +public class SystemCapability extends RPCStruct { + public static final String KEY_SYSTEM_CAPABILITY_TYPE = "systemCapabilityType"; + public static final String KEY_NAVIGATION_CAPABILITY = "navigationCapability"; + public static final String KEY_PHONE_CAPABILITY = "phoneCapability"; + + public SystemCapability(){} + + public SystemCapability(Hashtable<String, Object> hash) { + super(hash); + } + + /** + * + * @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 + */ + public SystemCapabilityType getSystemCapabilityType(){ + return (SystemCapabilityType) getObject(SystemCapabilityType.class, KEY_SYSTEM_CAPABILITY_TYPE); + } + + /** + * @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){ + setValue(KEY_SYSTEM_CAPABILITY_TYPE, value); + } + + public RPCStruct getCapabilityForType(SystemCapabilityType type){ + if(type.equals(SystemCapabilityType.NAVIGATION)){ + return (RPCStruct) getObject(NavigationCapability.class, KEY_NAVIGATION_CAPABILITY); + }else if(type.equals(SystemCapabilityType.PHONE_CALL)){ + return (RPCStruct) getObject(PhoneCapability.class, KEY_PHONE_CAPABILITY); + }else{ + return null; + } + } + + public void setCapabilityForType(SystemCapabilityType type, RPCStruct capability){ + if(type.equals(SystemCapabilityType.NAVIGATION)){ + setValue(KEY_NAVIGATION_CAPABILITY, capability); + }else if(type.equals(SystemCapabilityType.PHONE_CALL)){ + setValue(KEY_PHONE_CAPABILITY, capability); + }else{ + return; + } + } +} diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java new file mode 100644 index 000000000..5e3b6e676 --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java @@ -0,0 +1,19 @@ +package com.smartdevicelink.proxy.rpc.enums; + +/** + * The SystemCapabilityType indicates which type of capability information exists in a SystemCapability struct. + */ + +public enum SystemCapabilityType { + NAVIGATION, + + PHONE_CALL; + + public static SystemCapabilityType valueForString(String value) { + try{ + return valueOf(value); + }catch(Exception e){ + return null; + } + } +} |