|
|
|
@ -25,6 +25,7 @@ |
|
|
|
|
#include <hidl/HidlTransportSupport.h> |
|
|
|
|
#include <utils/SystemClock.h> |
|
|
|
|
#include <inttypes.h> |
|
|
|
|
#include <cutils/properties.h> |
|
|
|
|
|
|
|
|
|
#define INVALID_HEX_CHAR 16 |
|
|
|
|
|
|
|
|
@ -3700,6 +3701,10 @@ int radio::getOperatorResponse(int slotId, |
|
|
|
|
#if VDBG |
|
|
|
|
RLOGD("getOperatorResponse: serial %d", serial); |
|
|
|
|
#endif |
|
|
|
|
int mqanelements; |
|
|
|
|
char value[PROPERTY_VALUE_MAX]; |
|
|
|
|
property_get("ro.ril.telephony.mqanelements", value, "4"); |
|
|
|
|
mqanelements = atoi(value); |
|
|
|
|
|
|
|
|
|
if (radioService[slotId]->mRadioResponse != NULL) { |
|
|
|
|
RadioResponseInfo responseInfo = {}; |
|
|
|
@ -3708,14 +3713,14 @@ int radio::getOperatorResponse(int slotId, |
|
|
|
|
hidl_string shortName; |
|
|
|
|
hidl_string numeric; |
|
|
|
|
int numStrings = responseLen / sizeof(char *); |
|
|
|
|
if (response == NULL || numStrings != 3) { |
|
|
|
|
if (response == NULL || numStrings != mqanelements - 2) { |
|
|
|
|
RLOGE("getOperatorResponse Invalid response: NULL"); |
|
|
|
|
if (e == RIL_E_SUCCESS) responseInfo.error = RadioError::INVALID_RESPONSE; |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
char **resp = (char **) response; |
|
|
|
|
longName = convertCharPtrToHidlString(resp[0]); |
|
|
|
|
shortName = convertCharPtrToHidlString(resp[1]); |
|
|
|
|
shortName = convertCharPtrToHidlString(resp[0]); |
|
|
|
|
numeric = convertCharPtrToHidlString(resp[2]); |
|
|
|
|
} |
|
|
|
|
Return<void> retStatus = radioService[slotId]->mRadioResponse->getOperatorResponse( |
|
|
|
@ -4344,22 +4349,26 @@ int radio::getAvailableNetworksResponse(int slotId, |
|
|
|
|
#if VDBG |
|
|
|
|
RLOGD("getAvailableNetworksResponse: serial %d", serial); |
|
|
|
|
#endif |
|
|
|
|
int mqanelements; |
|
|
|
|
char value[PROPERTY_VALUE_MAX]; |
|
|
|
|
property_get("ro.ril.telephony.mqanelements", value, "4"); |
|
|
|
|
mqanelements = atoi(value); |
|
|
|
|
|
|
|
|
|
if (radioService[slotId]->mRadioResponse != NULL) { |
|
|
|
|
RadioResponseInfo responseInfo = {}; |
|
|
|
|
populateResponseInfo(responseInfo, serial, responseType, e); |
|
|
|
|
hidl_vec<OperatorInfo> networks; |
|
|
|
|
if ((response == NULL && responseLen != 0) |
|
|
|
|
|| responseLen % (4 * sizeof(char *))!= 0) { |
|
|
|
|
|| responseLen % (mqanelements * sizeof(char *))!= 0) { |
|
|
|
|
RLOGE("getAvailableNetworksResponse Invalid response: NULL"); |
|
|
|
|
if (e == RIL_E_SUCCESS) responseInfo.error = RadioError::INVALID_RESPONSE; |
|
|
|
|
} else { |
|
|
|
|
char **resp = (char **) response; |
|
|
|
|
int numStrings = responseLen / sizeof(char *); |
|
|
|
|
networks.resize(numStrings/4); |
|
|
|
|
for (int i = 0, j = 0; i < numStrings; i = i + 4, j++) { |
|
|
|
|
networks.resize(numStrings/mqanelements); |
|
|
|
|
for (int i = 0, j = 0; i < numStrings; i = i + mqanelements, j++) { |
|
|
|
|
networks[j].alphaLong = convertCharPtrToHidlString(resp[i]); |
|
|
|
|
networks[j].alphaShort = convertCharPtrToHidlString(resp[i + 1]); |
|
|
|
|
networks[j].alphaShort = convertCharPtrToHidlString(resp[i]); |
|
|
|
|
networks[j].operatorNumeric = convertCharPtrToHidlString(resp[i + 2]); |
|
|
|
|
int status = convertOperatorStatusToInt(resp[i + 3]); |
|
|
|
|
if (status == -1) { |
|
|
|
|