diff options
author | Anil Dahiya <anil_dahiya@infosys.com> | 2018-02-14 12:33:27 +0530 |
---|---|---|
committer | Anil Dahiya <anil_dahiya@infosys.com> | 2018-07-19 11:17:58 +0530 |
commit | a8e7aae235ab52222679705c32dde9e17bbc5c60 (patch) | |
tree | 97d36778e57d680fd570eddf4120f58bb1e4aea8 | |
parent | ef10c5e39bc228e9f9a1dd45e8c59eed9121afb4 (diff) | |
download | sdl_android-a8e7aae235ab52222679705c32dde9e17bbc5c60.tar.gz |
Implementation changes for OnRcStatus Notification.
6 files changed, 152 insertions, 0 deletions
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 b50f6f48d..21091edc8 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 @@ -50,6 +50,7 @@ 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.OnRCStatus; import com.smartdevicelink.proxy.rpc.OnStreamRPC; import com.smartdevicelink.proxy.rpc.OnSystemRequest; import com.smartdevicelink.proxy.rpc.OnTBTClientState; @@ -619,5 +620,10 @@ public class SdlProxyBaseTests extends AndroidTestCase{ public void onSendHapticDataResponse(SendHapticDataResponse response) { Log.i(TAG, "SendHapticDataResponse response from SDL: " + response); } + + @Override + public void onOnRCStatus(OnRCStatus notification) { + + } } } diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnRCStatusTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnRCStatusTests.java new file mode 100644 index 000000000..9d3c3a474 --- /dev/null +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnRCStatusTests.java @@ -0,0 +1,88 @@ +package com.smartdevicelink.test.rpc.notifications; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCMessage; +import com.smartdevicelink.proxy.rpc.ModuleData; +import com.smartdevicelink.proxy.rpc.OnRCStatus; +import com.smartdevicelink.test.BaseRpcTests; +import com.smartdevicelink.test.Test; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +public class OnRCStatusTests extends BaseRpcTests { + @Override + protected RPCMessage createMessage(){ + OnRCStatus msg = new OnRCStatus(); + + List<ModuleData> listAllocatedModules = new ArrayList<>(); + listAllocatedModules.add(Test.GENERAL_MODULEDATA); + + msg.setAllocatedModules(listAllocatedModules); + + List<ModuleData> listFreeModules = new ArrayList<>(); + listFreeModules.add(Test.GENERAL_MODULEDATA); + msg.setFreeModules(listFreeModules); + + return msg; + } + + @Override + protected String getMessageType(){ + return RPCMessage.KEY_NOTIFICATION; + } + + @Override + protected String getCommandType(){ + return FunctionID.ON_RC_STATUS.toString(); + } + + @Override + protected JSONObject getExpectedParameters(int sdlVersion){ + JSONObject result = new JSONObject(); + + JSONArray jsonArrayAllocatedModules = new JSONArray(); + JSONArray jsonArrayFreeModules = new JSONArray(); + try { + jsonArrayAllocatedModules.put(JsonRPCMarshaller.serializeHashtable(Test.GENERAL_MODULEDATA.getStore())); + jsonArrayFreeModules.put(JsonRPCMarshaller.serializeHashtable(Test.GENERAL_MODULEDATA.getStore())); + } catch (JSONException e) { + e.printStackTrace(); + } + + try { + result.put(OnRCStatus.KEY_ALLOCATED_MODULES, jsonArrayAllocatedModules); + result.put(OnRCStatus.KEY_FREE_MODULES, jsonArrayFreeModules); + } catch (JSONException e) { + e.printStackTrace(); + } + + return result; + } + + /** + * Tests the expected values of the RPC message. + */ + public void testRpcValues () { + // Test Values + List<ModuleData> listAllocatedModules = ((OnRCStatus) msg).getAllocatedModules(); + List<ModuleData> listFreeModules = ((OnRCStatus) msg).getFreeModules(); + + // Valid Tests + assertEquals(Test.MATCH, Test.GENERAL_MODULEDATA, listAllocatedModules.get(0)); + assertEquals(Test.MATCH, Test.GENERAL_MODULEDATA, listFreeModules.get(0)); + + // Invalid/Null Tests + OnRCStatus msg = new OnRCStatus(); + assertNotNull(Test.NOT_NULL, msg); + testNullBase(msg); + + assertNull(Test.NULL, msg.getAllocatedModules()); + assertNull(Test.NULL, msg.getFreeModules()); + } +} 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 412d3f857..c08749f7a 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 @@ -82,6 +82,7 @@ public enum FunctionID{ ON_HASH_CHANGE(32782, "OnHashChange"),
ON_INTERIOR_VEHICLE_DATA(32783, "OnInteriorVehicleData"),
ON_WAY_POINT_CHANGE(32784, "OnWayPointChange"),
+ ON_RC_STATUS(32794, "OnRCStatus"),
// MOCKED FUNCTIONS (NOT SENT FROM HEAD-UNIT)
ON_LOCK_SCREEN_STATUS(-1, "OnLockScreenStatus"),
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 7d25745d9..3ca4aa0f0 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java @@ -3476,6 +3476,22 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> onRPCNotificationReceived(msg);
}
}
+ else if (functionName.equals(FunctionID.ON_RC_STATUS.toString())) {
+ final OnRCStatus msg = new OnRCStatus(hash);
+ if (_callbackToUIThread) {
+ // Run in UI thread
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onOnRCStatus(msg);
+ onRPCNotificationReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onOnRCStatus(msg);
+ onRPCNotificationReceived(msg);
+ }
+ }
else {
if (_sdlMsgVersion != null) {
DebugTool.logInfo("Unrecognized notification Message: " + functionName +
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 618819f20..b7486785f 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 @@ -35,6 +35,7 @@ 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.OnRCStatus;
import com.smartdevicelink.proxy.rpc.OnStreamRPC;
import com.smartdevicelink.proxy.rpc.OnSystemRequest;
import com.smartdevicelink.proxy.rpc.OnTBTClientState;
@@ -353,4 +354,6 @@ public interface IProxyListenerBase { public void onOnInteriorVehicleData(OnInteriorVehicleData notification);
public void onSendHapticDataResponse(SendHapticDataResponse response);
+
+ public void onOnRCStatus(OnRCStatus notification);
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnRCStatus.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnRCStatus.java new file mode 100644 index 000000000..69d374afa --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/OnRCStatus.java @@ -0,0 +1,38 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCNotification; + +import java.util.Hashtable; +import java.util.List; + +public class OnRCStatus extends RPCNotification { + public static final String KEY_ALLOCATED_MODULES = "allocatedModules"; + public static final String KEY_FREE_MODULES = "freeModules"; + + public OnRCStatus() { + super(FunctionID.ON_RC_STATUS.toString()); + } + + public OnRCStatus(Hashtable<String, Object> hash) { + super(hash); + } + + @SuppressWarnings("unchecked") + public List<ModuleData> getAllocatedModules() { + return (List<ModuleData>) getObject(ModuleData.class, KEY_ALLOCATED_MODULES); + } + + public void setAllocatedModules(List<ModuleData> allocatedModules) { + setParameters(KEY_ALLOCATED_MODULES, allocatedModules); + } + + @SuppressWarnings("unchecked") + public List<ModuleData> getFreeModules() { + return (List<ModuleData>) getObject(ModuleData.class, KEY_FREE_MODULES); + } + + public void setFreeModules(List<ModuleData> freeModules) { + setParameters(KEY_FREE_MODULES, freeModules); + } +} |