summaryrefslogtreecommitdiffstats
path: root/ril
diff options
context:
space:
mode:
authorUtkarsh Gupta <utkarsh.eminem@gmail.com>2015-05-10 16:53:37 +0530
committerEthan Chen <intervigil@gmail.com>2015-05-12 10:03:26 -0700
commitf7a63e5be906f61073c2b142d5e927fd40aadb13 (patch)
treee01eb439e4d3487cd20732ffab1dd5de4a9e1f92 /ril
parent8ede9fa98b65d8873219b801565b4a1ccf2a6000 (diff)
downloadandroid_hardware_samsung-f7a63e5be906f61073c2b142d5e927fd40aadb13.tar.gz
android_hardware_samsung-f7a63e5be906f61073c2b142d5e927fd40aadb13.tar.bz2
android_hardware_samsung-f7a63e5be906f61073c2b142d5e927fd40aadb13.zip
libril: Fix network operator search
Change-Id: Ib904875c403942ec96dfa229080d9543d7c9b8fa
Diffstat (limited to 'ril')
-rw-r--r--ril/libril/ril.cpp13
-rw-r--r--ril/libril/ril_commands.h2
2 files changed, 13 insertions, 2 deletions
diff --git a/ril/libril/ril.cpp b/ril/libril/ril.cpp
index 44e6b86..5b600fd 100644
--- a/ril/libril/ril.cpp
+++ b/ril/libril/ril.cpp
@@ -284,6 +284,7 @@ static void dispatchRadioCapability(Parcel &p, RequestInfo *pRI);
static int responseInts(Parcel &p, void *response, size_t responselen);
static int responseIntsGetPreferredNetworkType(Parcel &p, void *response, size_t responselen);
static int responseStrings(Parcel &p, void *response, size_t responselen);
+static int responseStringsNetworks(Parcel &p, void *response, size_t responselen);
static int responseStrings(Parcel &p, void *response, size_t responselen, bool network_search);
static int responseString(Parcel &p, void *response, size_t responselen);
static int responseVoid(Parcel &p, void *response, size_t responselen);
@@ -2271,6 +2272,10 @@ static int responseStrings(Parcel &p, void *response, size_t responselen) {
return responseStrings(p, response, responselen, false);
}
+static int responseStringsNetworks(Parcel &p, void *response, size_t responselen) {
+ return responseStrings(p, response, responselen, true);
+}
+
/** response is a char **, pointing to an array of char *'s */
static int responseStrings(Parcel &p, void *response, size_t responselen, bool network_search) {
int numStrings;
@@ -2291,11 +2296,17 @@ static int responseStrings(Parcel &p, void *response, size_t responselen, bool n
char **p_cur = (char **) response;
numStrings = responselen / sizeof(char *);
- p.writeInt32 (numStrings);
+ if (network_search) {
+ p.writeInt32 ((numStrings / 5) * 4);
+ } else {
+ p.writeInt32 (numStrings);
+ }
/* each string*/
startResponse;
for (int i = 0 ; i < numStrings ; i++) {
+ if (network_search && (i % 5 == 0))
+ continue;
appendPrintBuf("%s%s,", printBuf, (char*)p_cur[i]);
writeStringToParcel (p, p_cur[i]);
}
diff --git a/ril/libril/ril_commands.h b/ril/libril/ril_commands.h
index 59b529e..a4f8447 100644
--- a/ril/libril/ril_commands.h
+++ b/ril/libril/ril_commands.h
@@ -62,7 +62,7 @@
{RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE, dispatchVoid, responseInts},
{RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC, dispatchVoid, responseVoid},
{RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL, dispatchString, responseVoid},
- {RIL_REQUEST_QUERY_AVAILABLE_NETWORKS , dispatchVoid, responseStrings},
+ {RIL_REQUEST_QUERY_AVAILABLE_NETWORKS , dispatchVoid, responseStringsNetworks},
{RIL_REQUEST_DTMF_START, dispatchString, responseVoid},
{RIL_REQUEST_DTMF_STOP, dispatchVoid, responseVoid},
{RIL_REQUEST_BASEBAND_VERSION, dispatchVoid, responseString},