diff options
author | Maksym Telychko <maksym.telychko@globallogic.com> | 2019-10-25 14:22:09 +0300 |
---|---|---|
committer | Maksym Telychko <maksym.telychko@globallogic.com> | 2019-10-25 14:22:09 +0300 |
commit | 97b3189c8189ba3ca353e644fa13d8a359d74092 (patch) | |
tree | d508f075ad290866775abb3b6c5e9c6176be9dbd /src | |
parent | 34996ef22c513b5039a7540d180640335db19358 (diff) | |
download | libmts-io-97b3189c8189ba3ca353e644fa13d8a359d74092.tar.gz libmts-io-97b3189c8189ba3ca353e644fa13d8a359d74092.tar.bz2 libmts-io-97b3189c8189ba3ca353e644fa13d8a359d74092.zip |
MTX-3028 mpower: fix 2g/3g/4g switch algorithm
Diffstat (limited to 'src')
-rw-r--r-- | src/MTS_IO_EG95Radio.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/MTS_IO_EG95Radio.cpp b/src/MTS_IO_EG95Radio.cpp index aff53d2..f1c040a 100644 --- a/src/MTS_IO_EG95Radio.cpp +++ b/src/MTS_IO_EG95Radio.cpp @@ -58,18 +58,17 @@ ICellularRadio::CODE EG95Radio::getSupportedCellularModes(CELLULAR_MODES &networ ICellularRadio::CODE EG95Radio::setCellularMode(CELLULAR_MODES networks) { std::string prefNet; - unsigned int prefOnly = 0; + unsigned int prefOnly = 0, prefCount = 0; for (int i = sizeof(networks)*CHAR_BIT-1; i>=0; --i){ switch (1<<i & networks) { - case ICellularRadio::CELLULAR_MODE_2G: prefNet += "01" ; prefOnly = 1; break; - case ICellularRadio::CELLULAR_MODE_3G: prefNet += "0302"; prefOnly = 2; break; - case ICellularRadio::CELLULAR_MODE_4G: prefNet += "04" ; prefOnly = 3; break; - default: printError("Unhandled preferred network flag."); + case ICellularRadio::CELLULAR_MODE_2G: prefNet += "01" ; prefOnly = 1; prefCount++; break; + case ICellularRadio::CELLULAR_MODE_3G: prefNet += "0302"; prefOnly = 2; prefCount++; break; + case ICellularRadio::CELLULAR_MODE_4G: prefNet += "04" ; prefOnly = 3; prefCount++; break; } } std::string sCmd; - if (prefNet.size() == 2) { // *g-only + if (prefCount == 1) { // *g-only sCmd = "AT+QCFG=\"nwscanmode\"," + std::to_string(prefOnly); } else { // preferred sCmd = "AT+QCFG=\"nwscanmode\",0"; |