msm8974-common: libril: Handle MCC/MNC in data registration state provided by legacy vendor RILs

Include MCC/MNC provided by legacy (versions 14 and older) vendor RIL
implementations as part of data registration state, in data registration
state reported to clients of the radio HAL service.

Bug: 119904357
Test: local build and did the local test on Marlin device,
      the mcc/mnc value are correct (not -1 and empty string value).

[haggertk: This purposely omits updating the numStrings check in
 getDataRegistrationStateResponse(), given that we purposely changed
 that check in our libril]

Change-Id: I5a26939402b86d889133e16f3508ab76b8bedddc
This commit is contained in:
Gohulan Balachandran 2019-02-05 11:20:46 -08:00 committed by Kevin F. Haggerty
parent 1878e1f3b3
commit 672b247a16
No known key found for this signature in database
GPG Key ID: 6D95512933112729

View File

@ -3578,6 +3578,11 @@ void fillCellIdentityResponse(CellIdentity &cellIdentity, RIL_CellIdentity_v16 &
std::to_string(rilCellIdentity.cellIdentityGsm.mcc); std::to_string(rilCellIdentity.cellIdentityGsm.mcc);
cellIdentity.cellIdentityGsm[0].mnc = cellIdentity.cellIdentityGsm[0].mnc =
ril::util::mnc::decode(rilCellIdentity.cellIdentityGsm.mnc); ril::util::mnc::decode(rilCellIdentity.cellIdentityGsm.mnc);
if (cellIdentity.cellIdentityGsm[0].mcc == "-1") {
cellIdentity.cellIdentityGsm[0].mcc = "";
}
cellIdentity.cellIdentityGsm[0].lac = rilCellIdentity.cellIdentityGsm.lac; cellIdentity.cellIdentityGsm[0].lac = rilCellIdentity.cellIdentityGsm.lac;
cellIdentity.cellIdentityGsm[0].cid = rilCellIdentity.cellIdentityGsm.cid; cellIdentity.cellIdentityGsm[0].cid = rilCellIdentity.cellIdentityGsm.cid;
cellIdentity.cellIdentityGsm[0].arfcn = rilCellIdentity.cellIdentityGsm.arfcn; cellIdentity.cellIdentityGsm[0].arfcn = rilCellIdentity.cellIdentityGsm.arfcn;
@ -3591,6 +3596,11 @@ void fillCellIdentityResponse(CellIdentity &cellIdentity, RIL_CellIdentity_v16 &
std::to_string(rilCellIdentity.cellIdentityWcdma.mcc); std::to_string(rilCellIdentity.cellIdentityWcdma.mcc);
cellIdentity.cellIdentityWcdma[0].mnc = cellIdentity.cellIdentityWcdma[0].mnc =
ril::util::mnc::decode(rilCellIdentity.cellIdentityWcdma.mnc); ril::util::mnc::decode(rilCellIdentity.cellIdentityWcdma.mnc);
if (cellIdentity.cellIdentityWcdma[0].mcc == "-1") {
cellIdentity.cellIdentityWcdma[0].mcc = "";
}
cellIdentity.cellIdentityWcdma[0].lac = rilCellIdentity.cellIdentityWcdma.lac; cellIdentity.cellIdentityWcdma[0].lac = rilCellIdentity.cellIdentityWcdma.lac;
cellIdentity.cellIdentityWcdma[0].cid = rilCellIdentity.cellIdentityWcdma.cid; cellIdentity.cellIdentityWcdma[0].cid = rilCellIdentity.cellIdentityWcdma.cid;
cellIdentity.cellIdentityWcdma[0].psc = rilCellIdentity.cellIdentityWcdma.psc; cellIdentity.cellIdentityWcdma[0].psc = rilCellIdentity.cellIdentityWcdma.psc;
@ -3615,6 +3625,11 @@ void fillCellIdentityResponse(CellIdentity &cellIdentity, RIL_CellIdentity_v16 &
std::to_string(rilCellIdentity.cellIdentityLte.mcc); std::to_string(rilCellIdentity.cellIdentityLte.mcc);
cellIdentity.cellIdentityLte[0].mnc = cellIdentity.cellIdentityLte[0].mnc =
ril::util::mnc::decode(rilCellIdentity.cellIdentityLte.mnc); ril::util::mnc::decode(rilCellIdentity.cellIdentityLte.mnc);
if (cellIdentity.cellIdentityLte[0].mcc == "-1") {
cellIdentity.cellIdentityLte[0].mcc = "";
}
cellIdentity.cellIdentityLte[0].ci = rilCellIdentity.cellIdentityLte.ci; cellIdentity.cellIdentityLte[0].ci = rilCellIdentity.cellIdentityLte.ci;
cellIdentity.cellIdentityLte[0].pci = rilCellIdentity.cellIdentityLte.pci; cellIdentity.cellIdentityLte[0].pci = rilCellIdentity.cellIdentityLte.pci;
cellIdentity.cellIdentityLte[0].tac = rilCellIdentity.cellIdentityLte.tac; cellIdentity.cellIdentityLte[0].tac = rilCellIdentity.cellIdentityLte.tac;
@ -3628,6 +3643,11 @@ void fillCellIdentityResponse(CellIdentity &cellIdentity, RIL_CellIdentity_v16 &
std::to_string(rilCellIdentity.cellIdentityTdscdma.mcc); std::to_string(rilCellIdentity.cellIdentityTdscdma.mcc);
cellIdentity.cellIdentityTdscdma[0].mnc = cellIdentity.cellIdentityTdscdma[0].mnc =
ril::util::mnc::decode(rilCellIdentity.cellIdentityTdscdma.mnc); ril::util::mnc::decode(rilCellIdentity.cellIdentityTdscdma.mnc);
if (cellIdentity.cellIdentityTdscdma[0].mcc == "-1") {
cellIdentity.cellIdentityTdscdma[0].mcc = "";
}
cellIdentity.cellIdentityTdscdma[0].lac = rilCellIdentity.cellIdentityTdscdma.lac; cellIdentity.cellIdentityTdscdma[0].lac = rilCellIdentity.cellIdentityTdscdma.lac;
cellIdentity.cellIdentityTdscdma[0].cid = rilCellIdentity.cellIdentityTdscdma.cid; cellIdentity.cellIdentityTdscdma[0].cid = rilCellIdentity.cellIdentityTdscdma.cid;
cellIdentity.cellIdentityTdscdma[0].cpid = rilCellIdentity.cellIdentityTdscdma.cpid; cellIdentity.cellIdentityTdscdma[0].cpid = rilCellIdentity.cellIdentityTdscdma.cpid;
@ -3761,6 +3781,14 @@ void fillCellIdentityFromDataRegStateResponseString(CellIdentity &cellIdentity,
/* valid CID are hexstrings in the range 0x00000000 - 0xffffffff */ /* valid CID are hexstrings in the range 0x00000000 - 0xffffffff */
rilCellIdentity.cellIdentityGsm.cid = rilCellIdentity.cellIdentityGsm.cid =
convertResponseHexStringEntryToInt(response, 2, numStrings); convertResponseHexStringEntryToInt(response, 2, numStrings);
if (numStrings >= 13) {
rilCellIdentity.cellIdentityGsm.mcc =
convertResponseStringEntryToInt(response, 11, numStrings);
rilCellIdentity.cellIdentityGsm.mnc =
convertResponseStringEntryToInt(response, 12, numStrings);
}
break; break;
} }
case RIL_CELL_INFO_TYPE_WCDMA: { case RIL_CELL_INFO_TYPE_WCDMA: {
@ -3771,6 +3799,14 @@ void fillCellIdentityFromDataRegStateResponseString(CellIdentity &cellIdentity,
/* valid CID are hexstrings in the range 0x00000000 - 0xffffffff */ /* valid CID are hexstrings in the range 0x00000000 - 0xffffffff */
rilCellIdentity.cellIdentityWcdma.cid = rilCellIdentity.cellIdentityWcdma.cid =
convertResponseHexStringEntryToInt(response, 2, numStrings); convertResponseHexStringEntryToInt(response, 2, numStrings);
if (numStrings >= 13) {
rilCellIdentity.cellIdentityWcdma.mcc =
convertResponseStringEntryToInt(response, 11, numStrings);
rilCellIdentity.cellIdentityWcdma.mnc =
convertResponseStringEntryToInt(response, 12, numStrings);
}
break; break;
} }
case RIL_CELL_INFO_TYPE_TD_SCDMA:{ case RIL_CELL_INFO_TYPE_TD_SCDMA:{
@ -3781,6 +3817,14 @@ void fillCellIdentityFromDataRegStateResponseString(CellIdentity &cellIdentity,
/* valid CID are hexstrings in the range 0x00000000 - 0xffffffff */ /* valid CID are hexstrings in the range 0x00000000 - 0xffffffff */
rilCellIdentity.cellIdentityTdscdma.cid = rilCellIdentity.cellIdentityTdscdma.cid =
convertResponseHexStringEntryToInt(response, 2, numStrings); convertResponseHexStringEntryToInt(response, 2, numStrings);
if (numStrings >= 13) {
rilCellIdentity.cellIdentityTdscdma.mcc =
convertResponseStringEntryToInt(response, 11, numStrings);
rilCellIdentity.cellIdentityTdscdma.mnc =
convertResponseStringEntryToInt(response, 12, numStrings);
}
break; break;
} }
case RIL_CELL_INFO_TYPE_LTE: { case RIL_CELL_INFO_TYPE_LTE: {
@ -3790,6 +3834,14 @@ void fillCellIdentityFromDataRegStateResponseString(CellIdentity &cellIdentity,
convertResponseStringEntryToInt(response, 7, numStrings); convertResponseStringEntryToInt(response, 7, numStrings);
rilCellIdentity.cellIdentityLte.ci = rilCellIdentity.cellIdentityLte.ci =
convertResponseStringEntryToInt(response, 8, numStrings); convertResponseStringEntryToInt(response, 8, numStrings);
if (numStrings >= 13) {
rilCellIdentity.cellIdentityLte.mcc =
convertResponseStringEntryToInt(response, 11, numStrings);
rilCellIdentity.cellIdentityLte.mnc =
convertResponseStringEntryToInt(response, 12, numStrings);
}
break; break;
} }
default: { default: {