diff options
author | David Ferguson <ferguson.david@gmail.com> | 2012-05-26 23:03:06 -0400 |
---|---|---|
committer | David Ferguson <ferguson.david@gmail.com> | 2012-05-26 23:06:55 -0400 |
commit | d11600e95b0e6b069dc49b3e2cdc1e9ccc6b6624 (patch) | |
tree | 6343314141dc76775c422d11108abcd69aea18a3 /telephony | |
parent | a22d8b297b4388a73458a52ead76dfddc167e1e6 (diff) | |
download | frameworks_base-d11600e95b0e6b069dc49b3e2cdc1e9ccc6b6624.zip frameworks_base-d11600e95b0e6b069dc49b3e2cdc1e9ccc6b6624.tar.gz frameworks_base-d11600e95b0e6b069dc49b3e2cdc1e9ccc6b6624.tar.bz2 |
telephony: fix Network Operators list on Samsung Qualcomm devices
setNetworkSelectionModeManual() and responseOperatorInfos() are overridden
in QualcommSharedRIL with code that breaks Samsung Qualcomm RIL's.
Override them, again, to put back the original functionality found in
RIL.java.
Change-Id: I7ac663a60edf62c80cdac831443ca6cddbe3702c
Diffstat (limited to 'telephony')
-rw-r--r-- | telephony/java/com/android/internal/telephony/SamsungQualcommUiccRIL.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/telephony/java/com/android/internal/telephony/SamsungQualcommUiccRIL.java b/telephony/java/com/android/internal/telephony/SamsungQualcommUiccRIL.java index d3ea252..c45ab19 100644 --- a/telephony/java/com/android/internal/telephony/SamsungQualcommUiccRIL.java +++ b/telephony/java/com/android/internal/telephony/SamsungQualcommUiccRIL.java @@ -27,6 +27,8 @@ import android.text.TextUtils; import android.util.Log; import com.android.internal.telephony.RILConstants; +import java.util.ArrayList; + /** * Custom RIL to handle unique behavior of Hercules/Skyrocket/Note radio * @@ -106,6 +108,47 @@ public class SamsungQualcommUiccRIL extends QualcommSharedRIL implements Command } @Override + public void + setNetworkSelectionModeManual(String operatorNumeric, Message response) { + RILRequest rr + = RILRequest.obtain(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, + response); + + if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + + " " + operatorNumeric); + + rr.mp.writeString(operatorNumeric); + + send(rr); + } + + @Override + protected Object + responseOperatorInfos(Parcel p) { + String strings[] = (String [])responseStrings(p); + ArrayList<OperatorInfo> ret; + + if (strings.length % 4 != 0) { + throw new RuntimeException( + "RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: invalid response. Got " + + strings.length + " strings, expected multible of 4"); + } + + ret = new ArrayList<OperatorInfo>(strings.length / 4); + + for (int i = 0 ; i < strings.length ; i += 4) { + ret.add ( + new OperatorInfo( + strings[i+0], + strings[i+1], + strings[i+2], + strings[i+3])); + } + + return ret; + } + + @Override protected Object responseIccCardStatus(Parcel p) { IccCardApplication ca; |