diff options
author | Anil Dahiya <anil_dahiya@infosys.com> | 2016-10-18 16:53:44 +0530 |
---|---|---|
committer | Anil Dahiya <anil_dahiya@infosys.com> | 2016-10-18 16:53:44 +0530 |
commit | c0f0306dd1536deeb6d9eb203b6091afce892f9f (patch) | |
tree | 41422c9c2da32b03b91cf2f959e6d59377c98e26 | |
parent | fd29e92919b93c51c660ddf8aa08bd78a107dfd5 (diff) | |
download | sdl_android-c0f0306dd1536deeb6d9eb203b6091afce892f9f.tar.gz |
Changes for adding additional RPC's GetWayPoints, SubscribeWayPoints, UnsubscribeWayPoints and OnWayPointChange. Also, additional changes for handling responses for these new RPC's in SdlProxyBase and Additional listeners for them.
14 files changed, 611 insertions, 0 deletions
diff --git a/sdl_android_lib/src/com/smartdevicelink/protocol/enums/FunctionID.java b/sdl_android_lib/src/com/smartdevicelink/protocol/enums/FunctionID.java index 04517d329..e427141cf 100644 --- a/sdl_android_lib/src/com/smartdevicelink/protocol/enums/FunctionID.java +++ b/sdl_android_lib/src/com/smartdevicelink/protocol/enums/FunctionID.java @@ -53,6 +53,9 @@ public enum FunctionID{ SYSTEM_REQUEST(38, "SystemRequest"),
SEND_LOCATION(39, "SendLocation"),
DIAL_NUMBER(40, "DialNumber"),
+ GET_WAY_POINTS(45, "GetWayPoints"),
+ SUBSCRIBE_WAY_POINTS(46, "SubscribeWayPoints"),
+ UNSUBSCRIBE_WAY_POINTS(47, "UnsubscribeWayPoints"),
// NOTIFICATIONS
ON_HMI_STATUS(32768, "OnHMIStatus"),
@@ -70,6 +73,7 @@ public enum FunctionID{ ON_TOUCH_EVENT(32780, "OnTouchEvent"),
ON_SYSTEM_REQUEST(32781, "OnSystemRequest"),
ON_HASH_CHANGE(32782, "OnHashChange"),
+ ON_WAY_POINT_CHANGE(32784, "OnWayPointChange"),
// MOCKED FUNCTIONS (NOT SENT FROM HEAD-UNIT)
ON_LOCK_SCREEN_STATUS(-1, "OnLockScreenStatus"),
diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/SdlProxyBase.java b/sdl_android_lib/src/com/smartdevicelink/proxy/SdlProxyBase.java index 85bc6312b..e6e179471 100644 --- a/sdl_android_lib/src/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/SdlProxyBase.java @@ -2638,6 +2638,54 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> } else {
_proxyListener.onGetVehicleDataResponse((GetVehicleDataResponse)msg);
onRPCResponseReceived(msg);
+ }
+ } else if (functionName.equals(FunctionID.SUBSCRIBE_WAY_POINTS.toString())) {
+ // SubscribeWayPoints
+ final SubscribeWayPointsResponse msg = new SubscribeWayPointsResponse(hash);
+ if (_callbackToUIThread) {
+ // Run in UI thread
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onSubscribeWayPointsResponse((SubscribeWayPointsResponse)msg);
+ onRPCResponseReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onSubscribeWayPointsResponse((SubscribeWayPointsResponse)msg);
+ onRPCResponseReceived(msg);
+ }
+ } else if (functionName.equals(FunctionID.UNSUBSCRIBE_WAY_POINTS.toString())) {
+ // UnsubscribeWayPoints
+ final UnsubscribeWayPointsResponse msg = new UnsubscribeWayPointsResponse(hash);
+ if (_callbackToUIThread) {
+ // Run in UI thread
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onUnsubscribeWayPointsResponse((UnsubscribeWayPointsResponse)msg);
+ onRPCResponseReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onUnsubscribeWayPointsResponse((UnsubscribeWayPointsResponse)msg);
+ onRPCResponseReceived(msg);
+ }
+ } else if (functionName.equals(FunctionID.GET_WAY_POINTS.toString())) {
+ // GetWayPoints
+ final GetWayPointsResponse msg = new GetWayPointsResponse(hash);
+ if (_callbackToUIThread) {
+ // Run in UI thread
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onGetWayPointsResponse((GetWayPointsResponse)msg);
+ onRPCResponseReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onGetWayPointsResponse((GetWayPointsResponse)msg);
+ onRPCResponseReceived(msg);
}
} else if (functionName.equals(FunctionID.READ_DID.toString())) {
final ReadDIDResponse msg = new ReadDIDResponse(hash);
@@ -3162,6 +3210,22 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> onRPCNotificationReceived(msg);
}
}
+ else if (functionName.equals(FunctionID.ON_WAY_POINT_CHANGE.toString())) {
+ final OnWayPointChange msg = new OnWayPointChange(hash);
+ if (_callbackToUIThread) {
+ // Run in UI thread
+ _mainUIHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ _proxyListener.onOnWayPointChange((OnWayPointChange)msg);
+ onRPCNotificationReceived(msg);
+ }
+ });
+ } else {
+ _proxyListener.onOnWayPointChange((OnWayPointChange)msg);
+ onRPCNotificationReceived(msg);
+ }
+ }
else {
if (_sdlMsgVersion != null) {
DebugTool.logInfo("Unrecognized notification Message: " + functionName.toString() +
diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java b/sdl_android_lib/src/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java index 866d762cd..5ee1483d8 100644 --- a/sdl_android_lib/src/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/interfaces/IProxyListenerBase.java @@ -18,6 +18,7 @@ import com.smartdevicelink.proxy.rpc.EndAudioPassThruResponse; import com.smartdevicelink.proxy.rpc.GenericResponse;
import com.smartdevicelink.proxy.rpc.GetDTCsResponse;
import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse;
+import com.smartdevicelink.proxy.rpc.GetWayPointsResponse;
import com.smartdevicelink.proxy.rpc.ListFilesResponse;
import com.smartdevicelink.proxy.rpc.OnAudioPassThru;
import com.smartdevicelink.proxy.rpc.OnButtonEvent;
@@ -35,6 +36,7 @@ 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;
import com.smartdevicelink.proxy.rpc.PerformAudioPassThruResponse;
import com.smartdevicelink.proxy.rpc.PerformInteractionResponse;
import com.smartdevicelink.proxy.rpc.PutFileResponse;
@@ -53,9 +55,11 @@ import com.smartdevicelink.proxy.rpc.SpeakResponse; import com.smartdevicelink.proxy.rpc.StreamRPCResponse;
import com.smartdevicelink.proxy.rpc.SubscribeButtonResponse;
import com.smartdevicelink.proxy.rpc.SubscribeVehicleDataResponse;
+import com.smartdevicelink.proxy.rpc.SubscribeWayPointsResponse;
import com.smartdevicelink.proxy.rpc.SystemRequestResponse;
import com.smartdevicelink.proxy.rpc.UnsubscribeButtonResponse;
import com.smartdevicelink.proxy.rpc.UnsubscribeVehicleDataResponse;
+import com.smartdevicelink.proxy.rpc.UnsubscribeWayPointsResponse;
import com.smartdevicelink.proxy.rpc.UpdateTurnListResponse;
import com.smartdevicelink.proxy.rpc.enums.SdlDisconnectedReason;
@@ -326,4 +330,10 @@ public interface IProxyListenerBase { public void onUpdateTurnListResponse(UpdateTurnListResponse response);
public void onServiceDataACK(int dataSize);
+ public void onGetWayPointsResponse(GetWayPointsResponse response);
+
+ public void onSubscribeWayPointsResponse(SubscribeWayPointsResponse response);
+
+ public void onUnsubscribeWayPointsResponse(UnsubscribeWayPointsResponse response);
+ public void onOnWayPointChange(OnWayPointChange notification);
}
diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/Coordinate.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/Coordinate.java new file mode 100644 index 000000000..b1fe5eeb6 --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/Coordinate.java @@ -0,0 +1,44 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.proxy.RPCStruct; +import com.smartdevicelink.util.SdlDataTypeConverter; + +import java.util.Hashtable; + +public class Coordinate extends RPCStruct{ + public static final String KEY_LATITUDE_DEGREES = "latitudeDegrees"; + public static final String KEY_LONGITUDE_DEGREES = "longitudeDegrees"; + + public Coordinate() { + } + + public Coordinate(Hashtable<String, Object> hash) { + super(hash); + } + + public Double getLatitudeDegrees() { + Object value = store.get(KEY_LATITUDE_DEGREES); + return SdlDataTypeConverter.objectToDouble(value); + } + + public void setLatitudeDegrees(Double latitudeDegrees) { + if (latitudeDegrees != null) { + store.put(KEY_LATITUDE_DEGREES, latitudeDegrees); + } else { + store.remove(KEY_LATITUDE_DEGREES); + } + } + + public Double getLongitudeDegrees() { + Object value = store.get(KEY_LONGITUDE_DEGREES); + return SdlDataTypeConverter.objectToDouble(value); + } + + public void setLongitudeDegrees(Double longitudeDegrees) { + if (longitudeDegrees != null) { + store.put(KEY_LONGITUDE_DEGREES, longitudeDegrees); + } else { + store.remove(KEY_LONGITUDE_DEGREES); + } + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/GetWayPoints.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/GetWayPoints.java new file mode 100644 index 000000000..f9832da0e --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/GetWayPoints.java @@ -0,0 +1,37 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCRequest; +import com.smartdevicelink.proxy.rpc.enums.WayPointType; + +import java.util.Hashtable; + +public class GetWayPoints extends RPCRequest { + public static final String KEY_WAY_POINT_TYPE = "wayPointType"; + + public GetWayPoints() { + super(FunctionID.GET_WAY_POINTS.toString()); + } + + public GetWayPoints(Hashtable<String, Object> hash) { + super(hash); + } + + public WayPointType getWayPointType() { + Object obj = parameters.get(KEY_WAY_POINT_TYPE); + if (obj instanceof WayPointType) { + return (WayPointType) obj; + } else if (obj instanceof String) { + return WayPointType.valueForString((String) obj); + } + return null; + } + + public void setWayPointType(WayPointType wayPointType) { + if (wayPointType != null) { + parameters.put(KEY_WAY_POINT_TYPE, wayPointType); + } else { + parameters.remove(KEY_WAY_POINT_TYPE); + } + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java new file mode 100644 index 000000000..24048c826 --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/GetWayPointsResponse.java @@ -0,0 +1,46 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCResponse; + +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.List; + +public class GetWayPointsResponse extends RPCResponse { + public static final String KEY_WAY_POINTS = "wayPoints"; + + public GetWayPointsResponse() { + super(FunctionID.GET_WAY_POINTS.toString()); + } + public GetWayPointsResponse(Hashtable<String, Object> hash) { + super(hash); + } + + public void setWayPoints(List<LocationDetails> wayPoints) { + if (wayPoints != null) { + parameters.put(KEY_WAY_POINTS, wayPoints); + } else { + parameters.remove(KEY_WAY_POINTS); + } + } + @SuppressWarnings("unchecked") + public List<LocationDetails> getWayPoints() { + if (parameters.get(KEY_WAY_POINTS) instanceof List<?>) { + List<?> list = (List<?>)parameters.get(KEY_WAY_POINTS); + if (list != null && list.size() > 0) { + Object obj = list.get(0); + if (obj instanceof LocationDetails) { + return (List<LocationDetails>) list; + } else if (obj instanceof Hashtable) { + List<LocationDetails> newList = new ArrayList<LocationDetails>(); + for (Object hashObj : list) { + newList.add(new LocationDetails((Hashtable<String, Object>)hashObj)); + } + return newList; + } + } + } + return null; + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/LocationDetails.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/LocationDetails.java new file mode 100644 index 000000000..50dcaf49b --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/LocationDetails.java @@ -0,0 +1,150 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.proxy.RPCStruct; +import com.smartdevicelink.util.DebugTool; + +import java.util.Hashtable; +import java.util.List; + +public class LocationDetails extends RPCStruct{ + public static final String KEY_COORDINATE = "coordinate"; + public static final String KEY_LOCATION_NAME = "locationName"; + public static final String KEY_ADDRESS_LINES = "addressLines"; + public static final String KEY_LOCATION_DESCRIPTION = "locationDescription"; + public static final String KEY_PHONE_NUMBER = "phoneNumber"; + public static final String KEY_LOCATION_IMAGE = "locationImage"; + public static final String KEY_SEARCH_ADDRESS = "searchAddress"; + + public LocationDetails() { + } + + public LocationDetails(Hashtable<String, Object> hash) { + super(hash); + } + + @SuppressWarnings("unchecked") + public Coordinate getCoordinate() { + Object obj = store.get(KEY_COORDINATE); + if (obj instanceof Coordinate) { + return (Coordinate) obj; + } else if (obj instanceof Hashtable) { + try { + return new Coordinate((Hashtable<String, Object>) obj); + } catch (Exception e) { + DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_COORDINATE, e); + } + } + return null; + } + public void setCoordinate(Coordinate coordinate) { + if (coordinate != null) { + store.put(KEY_COORDINATE, coordinate); + } else { + store.remove(KEY_COORDINATE); + } + } + + public String getLocationName() { + return (String) store.get(KEY_LOCATION_NAME); + } + + public void setLocationName(String locationName) { + if (locationName != null) { + store.put(KEY_LOCATION_NAME, locationName); + } else { + store.remove(KEY_LOCATION_NAME); + } + } + + @SuppressWarnings("unchecked") + public List<String> getAddressLines() { + final Object listObj = store.get(KEY_ADDRESS_LINES); + if (listObj instanceof List<?>) { + List<?> list = (List<?>) listObj; + if (list.size() > 0) { + Object obj = list.get(0); + if (obj instanceof String) { + return (List<String>) list; + } + } + } + return null; + } + + public void setAddressLines(List<String> addressLines) { + if (addressLines != null) { + store.put(KEY_ADDRESS_LINES, addressLines); + } else { + store.remove(KEY_ADDRESS_LINES); + } + } + + public String getLocationDescription() { + return (String) store.get(KEY_LOCATION_DESCRIPTION); + } + + public void setLocationDescription(String locationDescription) { + if (locationDescription != null) { + store.put(KEY_LOCATION_DESCRIPTION, locationDescription); + } else { + store.remove(KEY_LOCATION_DESCRIPTION); + } + } + + public String getPhoneNumber() { + return (String) store.get(KEY_PHONE_NUMBER); + } + + public void setPhoneNumber(String phoneNumber) { + if (phoneNumber != null) { + store.put(KEY_PHONE_NUMBER, phoneNumber); + } else { + store.remove(KEY_PHONE_NUMBER); + } + } + + @SuppressWarnings("unchecked") + public Image getLocationImage() { + Object obj = store.get(KEY_LOCATION_IMAGE); + if (obj instanceof Image) { + return (Image) obj; + } else if (obj instanceof Hashtable) { + try { + return new Image((Hashtable<String, Object>) obj); + } catch (Exception e) { + DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_LOCATION_IMAGE, e); + } + } + return null; + } + + public void setLocationImage(Image locationImage) { + if (locationImage != null) { + store.put(KEY_LOCATION_IMAGE, locationImage); + } else { + store.remove(KEY_LOCATION_IMAGE); + } + } + + @SuppressWarnings("unchecked") + public OasisAddress getSearchAddress() { + Object obj = store.get(KEY_SEARCH_ADDRESS); + if (obj instanceof OasisAddress) { + return (OasisAddress) obj; + } else if (obj instanceof Hashtable) { + try { + return new OasisAddress((Hashtable<String, Object>) obj); + } catch (Exception e) { + DebugTool.logError("Failed to parse " + getClass().getSimpleName() + "." + KEY_SEARCH_ADDRESS, e); + } + } + return null; + } + public void setSearchAddress(OasisAddress searchAddress) { + if (searchAddress != null) { + store.put(KEY_SEARCH_ADDRESS, searchAddress); + } else { + store.remove(KEY_SEARCH_ADDRESS); + } + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/OasisAddress.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/OasisAddress.java new file mode 100644 index 000000000..a20086c35 --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/OasisAddress.java @@ -0,0 +1,132 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.proxy.RPCStruct; + +import java.util.Hashtable; + +public class OasisAddress extends RPCStruct{ + public static final String KEY_COUNTRY_NAME = "countryName"; + public static final String KEY_COUNTRY_CODE = "countryCode"; + public static final String KEY_POSTAL_CODE = "postalCode"; + public static final String KEY_ADMINISTRATIVE_AREA = "administrativeArea"; + public static final String KEY_SUB_ADMINISTRATIVE_AREA = "subAdministrativeArea"; + public static final String KEY_LOCALITY = "locality"; + public static final String KEY_SUB_LOCALITY = "subLocality"; + public static final String KEY_THOROUGH_FARE = "thoroughfare"; + public static final String KEY_SUB_THOROUGH_FARE = "subThoroughfare"; + + public OasisAddress() { + } + + public OasisAddress(Hashtable<String, Object> hash) { + super(hash); + } + + public String getCountryName() { + return (String) store.get(KEY_COUNTRY_NAME); + } + + public void setCountryName(String countryName) { + if (countryName != null) { + store.put(KEY_COUNTRY_NAME, countryName); + } else { + store.remove(KEY_COUNTRY_NAME); + } + } + + public String getCountryCode() { + return (String) store.get(KEY_COUNTRY_CODE); + } + + public void setCountryCode(String countryCode) { + if (countryCode != null) { + store.put(KEY_COUNTRY_CODE, countryCode); + } else { + store.remove(KEY_COUNTRY_CODE); + } + } + + public String getPostalCode() { + return (String) store.get(KEY_POSTAL_CODE); + } + + public void setPostalCode(String postalCode) { + if (postalCode != null) { + store.put(KEY_POSTAL_CODE, postalCode); + } else { + store.remove(KEY_POSTAL_CODE); + } + } + + public String getAdministrativeArea() { + return (String) store.get(KEY_ADMINISTRATIVE_AREA); + } + + public void setAdministrativeArea(String administrativeArea) { + if (administrativeArea != null) { + store.put(KEY_ADMINISTRATIVE_AREA, administrativeArea); + } else { + store.remove(KEY_ADMINISTRATIVE_AREA); + } + } + + public String getSubAdministrativeArea() { + return (String) store.get(KEY_SUB_ADMINISTRATIVE_AREA); + } + + public void setSubAdministrativeArea(String subAdministrativeArea) { + if (subAdministrativeArea != null) { + store.put(KEY_SUB_ADMINISTRATIVE_AREA, subAdministrativeArea); + } else { + store.remove(KEY_SUB_ADMINISTRATIVE_AREA); + } + } + + public String getLocality() { + return (String) store.get(KEY_LOCALITY); + } + + public void setLocality(String locality) { + if (locality != null) { + store.put(KEY_LOCALITY, locality); + } else { + store.remove(KEY_LOCALITY); + } + } + + public String getSubLocality() { + return (String) store.get(KEY_SUB_LOCALITY); + } + + public void setSubLocality(String subLocality) { + if (subLocality != null) { + store.put(KEY_SUB_LOCALITY, subLocality); + } else { + store.remove(KEY_SUB_LOCALITY); + } + } + + public String getThoroughfare() { + return (String) store.get(KEY_THOROUGH_FARE); + } + + public void setThoroughfare(String thoroughFare) { + if (thoroughFare != null) { + store.put(KEY_THOROUGH_FARE, thoroughFare); + } else { + store.remove(KEY_THOROUGH_FARE); + } + } + + public String getSubThoroughfare() { + return (String) store.get(KEY_SUB_THOROUGH_FARE); + } + + public void setSubThoroughfare(String subThoroughfare) { + if (subThoroughfare != null) { + store.put(KEY_SUB_THOROUGH_FARE, subThoroughfare); + } else { + store.remove(KEY_SUB_THOROUGH_FARE); + } + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/OnWayPointChange.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/OnWayPointChange.java new file mode 100644 index 000000000..4e197b3eb --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/OnWayPointChange.java @@ -0,0 +1,48 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCNotification; + +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.List; + +public class OnWayPointChange extends RPCNotification { + public static final String KEY_WAY_POINTS = "wayPoints"; + + public OnWayPointChange() { + super(FunctionID.ON_WAY_POINT_CHANGE.toString()); + } + + public OnWayPointChange(Hashtable<String, Object> hash) { + super(hash); + } + + @SuppressWarnings("unchecked") + public List<LocationDetails> getWayPoints() { + if (parameters.get(KEY_WAY_POINTS) instanceof List<?>) { + List<?> list = (List<?>)parameters.get(KEY_WAY_POINTS); + if (list != null && list.size()>0) { + Object obj = list.get(0); + if(obj instanceof LocationDetails){ + return (List<LocationDetails>) list; + } else if(obj instanceof Hashtable) { + List<LocationDetails> newList = new ArrayList<LocationDetails>(); + for (Object hash:list) { + newList.add(new LocationDetails((Hashtable<String, Object>)hash)); + } + return newList; + } + } + } + return null; + } + + public void setWayPoints(List<LocationDetails> wayPoints) { + if (wayPoints != null) { + parameters.put(KEY_WAY_POINTS, wayPoints); + } else { + parameters.remove(KEY_WAY_POINTS); + } + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/SubscribeWayPoints.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/SubscribeWayPoints.java new file mode 100644 index 000000000..e0d3627e2 --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/SubscribeWayPoints.java @@ -0,0 +1,15 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCRequest; + +import java.util.Hashtable; + +public class SubscribeWayPoints extends RPCRequest { + public SubscribeWayPoints() { + super(FunctionID.SUBSCRIBE_WAY_POINTS.toString()); + } + public SubscribeWayPoints(Hashtable<String, Object> hash) { + super(hash); + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java new file mode 100644 index 000000000..880a97229 --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/SubscribeWayPointsResponse.java @@ -0,0 +1,16 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCResponse; + +import java.util.Hashtable; + +public class SubscribeWayPointsResponse extends RPCResponse { + + public SubscribeWayPointsResponse() { + super(FunctionID.SUBSCRIBE_WAY_POINTS.toString()); + } + public SubscribeWayPointsResponse(Hashtable<String, Object> hash) { + super(hash); + } +}
\ No newline at end of file diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/UnsubscribeWayPoints.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/UnsubscribeWayPoints.java new file mode 100644 index 000000000..b748ef673 --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/UnsubscribeWayPoints.java @@ -0,0 +1,15 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCRequest; + +import java.util.Hashtable; + +public class UnsubscribeWayPoints extends RPCRequest { + public UnsubscribeWayPoints() { + super(FunctionID.UNSUBSCRIBE_WAY_POINTS.toString()); + } + public UnsubscribeWayPoints(Hashtable<String, Object> hash) { + super(hash); + } +} diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java new file mode 100644 index 000000000..8804892aa --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/UnsubscribeWayPointsResponse.java @@ -0,0 +1,16 @@ +package com.smartdevicelink.proxy.rpc; + +import com.smartdevicelink.protocol.enums.FunctionID; +import com.smartdevicelink.proxy.RPCResponse; + +import java.util.Hashtable; + +public class UnsubscribeWayPointsResponse extends RPCResponse { + + public UnsubscribeWayPointsResponse() { + super(FunctionID.UNSUBSCRIBE_WAY_POINTS.toString()); + } + public UnsubscribeWayPointsResponse(Hashtable<String, Object> hash) { + super(hash); + } +}
\ No newline at end of file diff --git a/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/enums/WayPointType.java b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/enums/WayPointType.java new file mode 100644 index 000000000..ae3867409 --- /dev/null +++ b/sdl_android_lib/src/com/smartdevicelink/proxy/rpc/enums/WayPointType.java @@ -0,0 +1,14 @@ +package com.smartdevicelink.proxy.rpc.enums; + +public enum WayPointType { + ALL, + DESTINATION; + + public static WayPointType valueForString(String value) { + try{ + return valueOf(value); + }catch(Exception e){ + return null; + } + } +} |