diff options
| author | Serhii Kostiuk <serhii.o.kostiuk@globallogic.com> | 2021-05-18 17:55:03 +0300 | 
|---|---|---|
| committer | Serhii Kostiuk <serhii.o.kostiuk@globallogic.com> | 2021-05-18 18:12:52 +0300 | 
| commit | d562fa43d6f61c0a6ad4fb79e91c90cf571884f3 (patch) | |
| tree | 2c544187ae4ea04d730b772091520fe44eb44640 | |
| parent | bcd5443bcfff3e17ee120c305bbfd0ce2c812b21 (diff) | |
| download | libmts-io-d562fa43d6f61c0a6ad4fb79e91c90cf571884f3.tar.gz libmts-io-d562fa43d6f61c0a6ad4fb79e91c90cf571884f3.tar.bz2 libmts-io-d562fa43d6f61c0a6ad4fb79e91c90cf571884f3.zip | |
[GP-1111] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2
Fixed carrier MCC/MNC table lookup for networks with two-digit conuntry codes.
The original MCC/MNC population script used the following encoding for MCC/MNC values:
- MCC - interpret the original value as hex;
- 2-digit MNC - append "f" and interpret the resulting value as hex;
- 3-digit MNC - interpret the original value as hex.
So during lookup the system shall also use this conversion logic before querying
the information from the table.
| -rw-r--r-- | scripts/create-mcc-mnc-table.py | 8 | ||||
| -rw-r--r-- | src/MTS_IO_MccMncTable.cpp | 8 | 
2 files changed, 12 insertions, 4 deletions
| diff --git a/scripts/create-mcc-mnc-table.py b/scripts/create-mcc-mnc-table.py index 761454c..cc30fef 100644 --- a/scripts/create-mcc-mnc-table.py +++ b/scripts/create-mcc-mnc-table.py @@ -43,9 +43,13 @@ print "}"  print ""  print "Json::Value MccMncTable::lookup(const std::string& sMcc, const std::string& sMnc) {"  print "    uint32_t iMcc, iMnc;" +print "    std::string sNormalizedMnc = sMnc;"  print '    printTrace("[MCCMNC] MCCx[%s] MNCx[%s]", sMcc.c_str(), sMnc.c_str());' -print "    if(!MTS::Text::parseHex(iMcc, sMcc)) { return Json::Value::null; }" -print "    if(!MTS::Text::parseHex(iMnc, sMnc)) { return Json::Value::null; }" +print "    if (sMnc.length() == 2) {" +print "        sNormalizedMnc += 'f';" +print "    }" +print "    if (!MTS::Text::parseHex(iMcc, sMcc)) { return Json::Value::null; }" +print "    if (!MTS::Text::parseHex(iMnc, sNormalizedMnc)) { return Json::Value::null; }"  print '    printTrace("[MCCMNC] MCC0X[%d] MNC0X[%d]", iMcc, iMnc);'  print "    if (m_mTable.count(iMcc)) {"  print "        if(m_mTable[iMcc].count(iMnc)) {" diff --git a/src/MTS_IO_MccMncTable.cpp b/src/MTS_IO_MccMncTable.cpp index e375213..b187b86 100644 --- a/src/MTS_IO_MccMncTable.cpp +++ b/src/MTS_IO_MccMncTable.cpp @@ -53,9 +53,13 @@ MccMncTable::MccMncTable() {  Json::Value MccMncTable::lookup(const std::string& sMcc, const std::string& sMnc) {      uint32_t iMcc, iMnc; +    std::string sNormalizedMnc = sMnc;      printTrace("[MCCMNC] MCCx[%s] MNCx[%s]", sMcc.c_str(), sMnc.c_str()); -    if(!MTS::Text::parseHex(iMcc, sMcc)) { return Json::Value::null; } -    if(!MTS::Text::parseHex(iMnc, sMnc)) { return Json::Value::null; } +    if (sMnc.length() == 2) { +        sNormalizedMnc += 'f'; +    } +    if (!MTS::Text::parseHex(iMcc, sMcc)) { return Json::Value::null; } +    if (!MTS::Text::parseHex(iMnc, sNormalizedMnc)) { return Json::Value::null; }      printTrace("[MCCMNC] MCC0X[%d] MNC0X[%d]", iMcc, iMnc);      if (m_mTable.count(iMcc)) {          if(m_mTable[iMcc].count(iMnc)) { | 
