From 93faa3239e4bd8d70efb85405bc9c8849ab77897 Mon Sep 17 00:00:00 2001 From: Lorenzo Colitti Date: Wed, 1 Sep 2010 19:41:50 -0700 Subject: [PATCH] Make setupDataCall take a protocol parameter. Backport the protocol changes to setupDataCall and its callers from master. As in master, hardcode IPv4 connectivity for now. When we add the protocol field to ApnSettings, it will be fetched from there. Bug: 3333633 Change-Id: I51880bc0ec192cbf964ac7bbd6a4b7d2eed41d27 --- .../internal/telephony/CommandsInterface.java | 8 ++++++-- .../java/com/android/internal/telephony/RIL.java | 22 ++++++++++++---------- .../android/internal/telephony/RILConstants.java | 5 +++++ .../telephony/cdma/CdmaDataConnection.java | 9 ++++++--- .../internal/telephony/gsm/GsmDataConnection.java | 8 +++++--- .../telephony/sip/SipCommandInterface.java | 2 +- .../internal/telephony/test/SimulatedCommands.java | 5 +++-- 7 files changed, 38 insertions(+), 21 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/CommandsInterface.java b/telephony/java/com/android/internal/telephony/CommandsInterface.java index d84f396ea879..5de9aa93e4d6 100644 --- a/telephony/java/com/android/internal/telephony/CommandsInterface.java +++ b/telephony/java/com/android/internal/telephony/CommandsInterface.java @@ -1350,11 +1350,15 @@ public interface CommandsInterface { * the password for APN, or NULL * @param authType * the PAP / CHAP auth type. Values is one of SETUP_DATA_AUTH_* + * @param protocol + * one of the PDP_type values in TS 27.007 section 10.1.1. + * For example, "IP", "IPV6", "IPV4V6", or "PPP". * @param result * Callback message */ - public void setupDataCall(String radioTechnology, String profile, String apn, - String user, String password, String authType, Message result); + public void setupDataCall(String radioTechnology, String profile, + String apn, String user, String password, String authType, + String protocol, Message result); /** * Deactivate packet data connection diff --git a/telephony/java/com/android/internal/telephony/RIL.java b/telephony/java/com/android/internal/telephony/RIL.java index f2643bb2b43a..09a45064c650 100644 --- a/telephony/java/com/android/internal/telephony/RIL.java +++ b/telephony/java/com/android/internal/telephony/RIL.java @@ -1309,7 +1309,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { : RILConstants.SETUP_DATA_AUTH_NONE; setupDataCall(Integer.toString(radioTechnology), profile, apn, user, - password, Integer.toString(authType), result); + password, Integer.toString(authType), + RILConstants.SETUP_DATA_PROTOCOL_IP, result); } @@ -1321,18 +1322,14 @@ public final class RIL extends BaseCommands implements CommandsInterface { deactivateDataCall(cid, result); } - /** - * The preferred new alternative to setupDefaultPDP that is - * CDMA-compatible. - * - */ public void setupDataCall(String radioTechnology, String profile, String apn, - String user, String password, String authType, Message result) { + String user, String password, String authType, String protocol, + Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_SETUP_DATA_CALL, result); - rr.mp.writeInt(6); + rr.mp.writeInt(7); rr.mp.writeString(radioTechnology); rr.mp.writeString(profile); @@ -1340,11 +1337,12 @@ public final class RIL extends BaseCommands implements CommandsInterface { rr.mp.writeString(user); rr.mp.writeString(password); rr.mp.writeString(authType); + rr.mp.writeString(protocol); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " " + radioTechnology + " " + profile + " " + apn + " " + user + " " - + password + " " + authType); + + password + " " + authType + " " + protocol); send(rr); } @@ -2963,7 +2961,11 @@ public final class RIL extends BaseCommands implements CommandsInterface { dataCall.active = p.readInt(); dataCall.type = p.readString(); dataCall.apn = p.readString(); - dataCall.address = p.readString(); + String address = p.readString(); + if (address != null) { + address = address.split(" ")[0]; + } + dataCall.address = address; response.add(dataCall); } diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java index 888f72183758..0686791b137d 100644 --- a/telephony/java/com/android/internal/telephony/RILConstants.java +++ b/telephony/java/com/android/internal/telephony/RILConstants.java @@ -91,11 +91,16 @@ public interface RILConstants { /* Setup a packet data connection. See ril.h RIL_REQUEST_SETUP_DATA_CALL */ int SETUP_DATA_TECH_CDMA = 0; int SETUP_DATA_TECH_GSM = 1; + int SETUP_DATA_AUTH_NONE = 0; int SETUP_DATA_AUTH_PAP = 1; int SETUP_DATA_AUTH_CHAP = 2; int SETUP_DATA_AUTH_PAP_CHAP = 3; + String SETUP_DATA_PROTOCOL_IP = "IP"; + String SETUP_DATA_PROTOCOL_IPV6 = "IPV6"; + String SETUP_DATA_PROTOCOL_IPV4V6 = "IPV4V6"; + /* cat include/telephony/ril.h | \ egrep '^#define' | \ diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java index 95cb1c6b6a4d..66f35e416e44 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java @@ -85,9 +85,12 @@ public class CdmaDataConnection extends DataConnection { // msg.obj will be returned in AsyncResult.userObj; Message msg = obtainMessage(EVENT_SETUP_DATA_CONNECTION_DONE, cp); msg.obj = cp; - phone.mCM.setupDataCall(Integer.toString(RILConstants.SETUP_DATA_TECH_CDMA), - Integer.toString(dataProfile), null, null, - null, Integer.toString(RILConstants.SETUP_DATA_AUTH_PAP_CHAP), msg); + phone.mCM.setupDataCall( + Integer.toString(RILConstants.SETUP_DATA_TECH_CDMA), + Integer.toString(dataProfile), + null, null, null, + Integer.toString(RILConstants.SETUP_DATA_AUTH_PAP_CHAP), + RILConstants.SETUP_DATA_PROTOCOL_IP, msg); } @Override diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java index 09d46dd6e8b2..7437ba941a49 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java @@ -104,9 +104,11 @@ public class GsmDataConnection extends DataConnection { authType = (apn.user != null) ? RILConstants.SETUP_DATA_AUTH_PAP_CHAP : RILConstants.SETUP_DATA_AUTH_NONE; } - phone.mCM.setupDataCall(Integer.toString(RILConstants.SETUP_DATA_TECH_GSM), - Integer.toString(RILConstants.DATA_PROFILE_DEFAULT), apn.apn, apn.user, - apn.password, Integer.toString(authType), msg); + phone.mCM.setupDataCall( + Integer.toString(RILConstants.SETUP_DATA_TECH_GSM), + Integer.toString(RILConstants.DATA_PROFILE_DEFAULT), + apn.apn, apn.user, apn.password, Integer.toString(authType), + RILConstants.SETUP_DATA_PROTOCOL_IP, msg); } @Override diff --git a/telephony/java/com/android/internal/telephony/sip/SipCommandInterface.java b/telephony/java/com/android/internal/telephony/sip/SipCommandInterface.java index ed578c89938a..ad43c30f7a0c 100644 --- a/telephony/java/com/android/internal/telephony/sip/SipCommandInterface.java +++ b/telephony/java/com/android/internal/telephony/sip/SipCommandInterface.java @@ -193,7 +193,7 @@ class SipCommandInterface extends BaseCommands implements CommandsInterface { public void setupDataCall(String radioTechnology, String profile, String apn, String user, String password, String authType, - Message result) { + String protcol, Message result) { } public void deactivateDataCall(int cid, Message result) { diff --git a/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java b/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java index beec177b11ff..1fc09ab9e79c 100644 --- a/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java +++ b/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java @@ -960,8 +960,9 @@ public final class SimulatedCommands extends BaseCommands unimplemented(result); } - public void setupDataCall(String radioTechnology, String profile, String apn, String user, - String password, String authType, Message result) { + public void setupDataCall(String radioTechnology, String profile, + String apn, String user, String password, String authType, + String protocol, Message result) { unimplemented(result); } -- 2.11.0