summaryrefslogtreecommitdiff
path: root/src/MTS_IO_EG95Radio.cpp
diff options
context:
space:
mode:
authorMaksym Telychko <maksym.telychko@globallogic.com>2019-10-25 14:22:09 +0300
committerMaksym Telychko <maksym.telychko@globallogic.com>2019-10-25 14:22:09 +0300
commit97b3189c8189ba3ca353e644fa13d8a359d74092 (patch)
treed508f075ad290866775abb3b6c5e9c6176be9dbd /src/MTS_IO_EG95Radio.cpp
parent34996ef22c513b5039a7540d180640335db19358 (diff)
downloadlibmts-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/MTS_IO_EG95Radio.cpp')
-rw-r--r--src/MTS_IO_EG95Radio.cpp11
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";