diff options
author | Jeff Hatch <jhatch@multitech.com> | 2021-04-16 10:57:54 -0500 |
---|---|---|
committer | Jeff Hatch <jhatch@multitech.com> | 2021-04-16 10:57:54 -0500 |
commit | bcd5443bcfff3e17ee120c305bbfd0ce2c812b21 (patch) | |
tree | 8baa012e02a30fb5eeb64e006db516da101cc8c8 | |
parent | b7f7d95092b87d0b278b1a74af53bfbc837b7acd (diff) | |
parent | ac88b70987f59e89ce5257941e61ad4f1021d65f (diff) | |
download | libmts-io-bcd5443bcfff3e17ee120c305bbfd0ce2c812b21.tar.gz libmts-io-bcd5443bcfff3e17ee120c305bbfd0ce2c812b21.tar.bz2 libmts-io-bcd5443bcfff3e17ee120c305bbfd0ce2c812b21.zip |
Merge branch 'ms/MTX-3998_quectel_set_cemode_2' into 'master'
1.0.25
[MTX-3998] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - Quectel - GP-1111
See merge request !38
-rw-r--r-- | include/mts/MTS_IO_CellularRadio.h | 4 | ||||
-rw-r--r-- | include/mts/MTS_IO_ICellularRadio.h | 19 | ||||
-rw-r--r-- | include/mts/MTS_IO_LE910Radio.h | 4 | ||||
-rw-r--r-- | include/mts/MTS_IO_QuectelRadio.h | 12 | ||||
-rw-r--r-- | src/MTS_IO_CellularRadio.cpp | 10 | ||||
-rw-r--r-- | src/MTS_IO_ICellularRadio.cpp | 51 | ||||
-rw-r--r-- | src/MTS_IO_LE910Radio.cpp | 70 | ||||
-rw-r--r-- | src/MTS_IO_QuectelRadio.cpp | 155 |
8 files changed, 255 insertions, 70 deletions
diff --git a/include/mts/MTS_IO_CellularRadio.h b/include/mts/MTS_IO_CellularRadio.h index 6840398..7e7454b 100644 --- a/include/mts/MTS_IO_CellularRadio.h +++ b/include/mts/MTS_IO_CellularRadio.h @@ -134,8 +134,8 @@ namespace MTS { virtual std::string waitResponse(IsNeedMoreData& isNeedMoreData, int32_t timeoutMillis = 100) override; - CODE setUeModeOfOperation(UE_MODES_OF_OPERATION newmode) override; - CODE getUeModeOfOperation(UE_MODES_OF_OPERATION& newmode) override; + CODE setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION mode) override; + CODE getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& mode) override; protected: diff --git a/include/mts/MTS_IO_ICellularRadio.h b/include/mts/MTS_IO_ICellularRadio.h index e8ae891..e638e8b 100644 --- a/include/mts/MTS_IO_ICellularRadio.h +++ b/include/mts/MTS_IO_ICellularRadio.h @@ -70,18 +70,20 @@ namespace MTS { enum UE_MODES_OF_OPERATION : uint8_t { UNKNOWN_MODE = 0, // current mode of operation is not available - PS_MODE1, // only EPS (LTE) services are allowed, the usage is “voice centric” - PS_MODE2, // only EPS (LTE) services are allowed, the usage is “data centric” - CS_PS_MODE1, // both EPS and non-EPS services are allowed, the usage is “voice centric” - CS_PS_MODE2 // both EPS and non-EPS services are allowed, the usage is “data centric” + PS_MODE1, // only EPS (LTE) services are allowed, the usage is "voice centric" + PS_MODE2, // only EPS (LTE) services are allowed, the usage is "data centric" + CS_PS_MODE1, // both EPS and non-EPS services are allowed, the usage is "voice centric" + CS_PS_MODE2, // both EPS and non-EPS services are allowed, the usage is "data centric" + CS_MODE1, // only non-EPS services are allowed, the usage is "voice centric" + CS_MODE2 // only non-EPS services are allowed, the usage is "data centric" }; static CODE convertModelToType(const std::string& sModel, std::string& sType); static CODE convertModelToMtsShortCode(const std::string& sModel, std::string& sCode, ICellularRadio *radioObj = NULL); static CODE convertServiceDomainToString(SERVICEDOMAIN eSd, std::string& sSd); static CODE convertActiveBandToString(ACTIVEBAND eBand, std::string& sBand); - static CODE convertUeModeToString(UE_MODES_OF_OPERATION mode, std::string& string); - static CODE convertStringToUeMode(const std::string& sMode, UE_MODES_OF_OPERATION& mode); + static CODE convertUeModeToString(ICellularRadio::UE_MODES_OF_OPERATION mode, std::string& sMode); + static CODE convertStringToUeMode(const std::string& sMode, ICellularRadio::UE_MODES_OF_OPERATION& mode); static std::string sendCommand(MTS::AutoPtr<MTS::IO::Connection>& apIo, const std::string& sCmd, @@ -572,9 +574,8 @@ namespace MTS { virtual std::string waitResponse(IsNeedMoreData& isNeedMoreData, int32_t timeoutMillis = 100) = 0; - - virtual CODE setUeModeOfOperation(UE_MODES_OF_OPERATION newmode) = 0; - virtual CODE getUeModeOfOperation(UE_MODES_OF_OPERATION& newmode) = 0; + virtual CODE setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION mode) = 0; + virtual CODE getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& mode) = 0; }; } } diff --git a/include/mts/MTS_IO_LE910Radio.h b/include/mts/MTS_IO_LE910Radio.h index e8a0dec..2ba423d 100644 --- a/include/mts/MTS_IO_LE910Radio.h +++ b/include/mts/MTS_IO_LE910Radio.h @@ -45,8 +45,8 @@ namespace MTS { CODE setRxDiversity(const Json::Value& jArgs); CODE getModemLocation(std::string& sLocation); - CODE setUeModeOfOperation(UE_MODES_OF_OPERATION newmode) override; - CODE getUeModeOfOperation(UE_MODES_OF_OPERATION &newmode) override; + CODE setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION mode) override; + CODE getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& mode) override; protected: diff --git a/include/mts/MTS_IO_QuectelRadio.h b/include/mts/MTS_IO_QuectelRadio.h index 9713f48..c46b39b 100644 --- a/include/mts/MTS_IO_QuectelRadio.h +++ b/include/mts/MTS_IO_QuectelRadio.h @@ -51,7 +51,16 @@ namespace MTS { CODE fumoLocalCleanup() override; CODE fumoLocalApply(UpdateCb& stepCb) override; + CODE setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION mode) override; + CODE getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& mode) override; + protected: + enum class UE_USAGE_SETTING : uint8_t { + UNKNOWN_MODE = 0, // Unknown mode + MODE_1, // Voice centric mode + MODE_2 // Data centric mode + }; + QuectelRadio(const std::string& sName, const std::string& sRadioPort); CODE getIsSimInserted(bool& bData) override; @@ -64,6 +73,9 @@ namespace MTS { virtual CODE removeFile(const std::string& sTargetFilename); virtual CODE checkFile(bool& bFilePresent, const std::string& sTargetFilename); + virtual CODE getUeUsageSetting(QuectelRadio::UE_USAGE_SETTING& us); + virtual CODE convertToUeUsageSetting(const std::string& sSetting, QuectelRadio::UE_USAGE_SETTING& us); + private: // private variable to save old firmware versions during FOTA std::string m_sQuectelFirmware; diff --git a/src/MTS_IO_CellularRadio.cpp b/src/MTS_IO_CellularRadio.cpp index 49bdcb4..c2fcfad 100644 --- a/src/MTS_IO_CellularRadio.cpp +++ b/src/MTS_IO_CellularRadio.cpp @@ -1379,13 +1379,13 @@ ICellularRadio::CODE CellularRadio::readChunk(int fd, char* pChunk, size_t dChun return rc; } -ICellularRadio::CODE CellularRadio::setUeModeOfOperation(UE_MODES_OF_OPERATION newmode) { +ICellularRadio::CODE CellularRadio::setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION mode) { printTrace("%s| Set UE Mode Of Operation: not applicable", m_sName.c_str()); - return CODE::NOT_APPLICABLE; + return NOT_APPLICABLE; } -ICellularRadio::CODE CellularRadio::getUeModeOfOperation(UE_MODES_OF_OPERATION &newmode) { +ICellularRadio::CODE CellularRadio::getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& mode) { printTrace("%s| Get UE Mode Of Operation: not applicable", m_sName.c_str()); - newmode = UE_MODES_OF_OPERATION::UNKNOWN_MODE; - return CODE::NOT_APPLICABLE; + mode = ICellularRadio::UE_MODES_OF_OPERATION::UNKNOWN_MODE; + return NOT_APPLICABLE; } diff --git a/src/MTS_IO_ICellularRadio.cpp b/src/MTS_IO_ICellularRadio.cpp index 9f63408..0483dc8 100644 --- a/src/MTS_IO_ICellularRadio.cpp +++ b/src/MTS_IO_ICellularRadio.cpp @@ -513,51 +513,64 @@ std::string MTS::IO::ICellularRadio::getCodeAsString(CODE eCode) { } } -MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertUeModeToString(MTS::IO::ICellularRadio::UE_MODES_OF_OPERATION mode, std::string &string) { +MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertUeModeToString(ICellularRadio::UE_MODES_OF_OPERATION mode, std::string& sMode) { CODE rc; switch (mode) { case ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1: - string = "ps_1"; - rc = CODE::SUCCESS; + sMode = "ps_1"; + rc = SUCCESS; break; case ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2: - string = "ps_2"; - rc = CODE::SUCCESS; + sMode = "ps_2"; + rc = SUCCESS; break; case ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1: - string = "csps_1"; - rc = CODE::SUCCESS; + sMode = "csps_1"; + rc = SUCCESS; break; case ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2: - string = "csps_2"; - rc = CODE::SUCCESS; + sMode = "csps_2"; + rc = SUCCESS; + break; + case ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE1: + sMode = "cs_1"; + rc = SUCCESS; + break; + case ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE2: + sMode = "cs_2"; + rc = SUCCESS; break; default: - string = MTS::IO::ICellularRadio::VALUE_UNKNOWN; - rc = CODE::FAILURE; + sMode = ICellularRadio::VALUE_UNKNOWN; + rc = FAILURE; break; } return rc; } -MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertStringToUeMode(const std::string &sMode, UE_MODES_OF_OPERATION& mode) { - using namespace MTS::IO; +MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertStringToUeMode(const std::string& sMode, ICellularRadio::UE_MODES_OF_OPERATION& mode) { CODE rc; if (sMode == "ps_1") { mode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1; - rc = CODE::SUCCESS; + rc = SUCCESS; } else if (sMode == "ps_2") { mode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2; - rc = CODE::SUCCESS; + rc = SUCCESS; } else if (sMode == "csps_1") { mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1; - rc = CODE::SUCCESS; + rc = SUCCESS; } else if (sMode == "csps_2") { mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2; - rc = CODE::SUCCESS; + rc = SUCCESS; + } else if (sMode == "cs_1") { + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE1; + rc = SUCCESS; + } else if (sMode == "cs_2") { + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE2; + rc = SUCCESS; } else { - mode = ICellularRadio::UNKNOWN_MODE; - rc = CODE::FAILURE; + mode = ICellularRadio::UE_MODES_OF_OPERATION::UNKNOWN_MODE; + rc = FAILURE; } return rc; } diff --git a/src/MTS_IO_LE910Radio.cpp b/src/MTS_IO_LE910Radio.cpp index 764ac5e..ba03c5e 100644 --- a/src/MTS_IO_LE910Radio.cpp +++ b/src/MTS_IO_LE910Radio.cpp @@ -78,51 +78,55 @@ ICellularRadio::CODE LE910Radio::getModemLocation(std::string& sLocation) { return SUCCESS; } -ICellularRadio::CODE LE910Radio::setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION newmode) { - uint8_t iValue; +ICellularRadio::CODE LE910Radio::setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION mode) { + printTrace("%s| Set UE Mode Of Operation", getName().c_str()); - switch (newmode) { - case UE_MODES_OF_OPERATION::PS_MODE1: - iValue = 3; + std::string sValue; + + switch (mode) { + case ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1: + sValue = "3"; break; - case UE_MODES_OF_OPERATION::PS_MODE2: - iValue = 0; + case ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2: + sValue = "0"; break; - case UE_MODES_OF_OPERATION::CS_PS_MODE1: - iValue = 1; + case ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1: + sValue = "1"; break; - case UE_MODES_OF_OPERATION::CS_PS_MODE2: - iValue = 2; + case ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2: + sValue = "2"; break; default: - printTrace("Set UE Mode Of Operation: invalid argument"); - return CODE::INVALID_ARGS; + printError("%s| Set UE Mode Of Operation: invalid argument", getName().c_str()); + return INVALID_ARGS; } const int dTimeout = 1000; // ms - const std::string sCommand = "AT+CEMODE=" + MTS::Text::format(iValue); + const std::string sCommand = "AT+CEMODE=" + sValue; return sendBasicCommand(sCommand, dTimeout); } -ICellularRadio::CODE LE910Radio::getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& newmode) { +ICellularRadio::CODE LE910Radio::getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& mode) { + printTrace("%s| Get UE Mode Of Operation", getName().c_str()); + const std::string sCommand = "AT+CEMODE?"; const int dTimeout = 1000; // ms std::string sResult = sendCommand(sCommand, ICellularRadio::DEFAULT_BAIL_STRINGS, dTimeout); - printTrace("Got response from the radio: %s", sResult.c_str()); + printTrace("%s| Got response from the radio: %s", getName().c_str(), sResult.c_str()); size_t end = sResult.rfind(ICellularRadio::RSP_OK); if (std::string::npos == end) { - printWarning("Unable to get UE Mode Of Operation from radio using command [%s]", sCommand.c_str()); - return CODE::FAILURE; + printError("%s| Unable to get UE Mode Of Operation from radio using command [%s]", getName().c_str(), sCommand.c_str()); + return FAILURE; } const std::string sLabel = "+CEMODE: "; size_t start = sResult.find(sLabel); if (std::string::npos == start) { - printWarning("Unable to get UE Mode Of Operation from radio using command [%s]", sCommand.c_str()); - return CODE::FAILURE; + printError("%s| Unable to get UE Mode Of Operation from radio using command [%s]", getName().c_str(), sCommand.c_str()); + return FAILURE; } start += sLabel.length(); @@ -130,32 +134,32 @@ ICellularRadio::CODE LE910Radio::getUeModeOfOperation(ICellularRadio::UE_MODES_O uint8_t uiValue; if (!MTS::Text::parse(uiValue, sValue)) { - printWarning("Unable to parse CEMODE from response [%s]", sResult.c_str()); - return CODE::FAILURE; + printError("%s| Unable to parse CEMODE from response [%s]", getName().c_str(), sResult.c_str()); + return FAILURE; } CODE rc; switch (uiValue) { case 0: - newmode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2; - rc = CODE::SUCCESS; + mode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2; + rc = SUCCESS; break; case 1: - newmode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1; - rc = CODE::SUCCESS; + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1; + rc = SUCCESS; break; case 2: - newmode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2; - rc = CODE::SUCCESS; + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2; + rc = SUCCESS; break; case 3: - newmode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1; - rc = CODE::SUCCESS; + mode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1; + rc = SUCCESS; break; default: - printWarning("Unable to parse CEMODE from response [%s]", sResult.c_str()); - newmode = ICellularRadio::UE_MODES_OF_OPERATION::UNKNOWN_MODE; - rc = CODE::FAILURE; + printError("%s| Unable to parse CEMODE from response [%s]", getName().c_str(), sResult.c_str()); + mode = ICellularRadio::UE_MODES_OF_OPERATION::UNKNOWN_MODE; + rc = FAILURE; break; } return rc; diff --git a/src/MTS_IO_QuectelRadio.cpp b/src/MTS_IO_QuectelRadio.cpp index aeb06ab..b6eab80 100644 --- a/src/MTS_IO_QuectelRadio.cpp +++ b/src/MTS_IO_QuectelRadio.cpp @@ -1221,3 +1221,158 @@ ICellularRadio::CODE QuectelRadio::abortFileUpload() { sleep(1); return sendBasicCommand(CMD_ABORT_UPLOAD, 2000, 0x00); } + +ICellularRadio::CODE QuectelRadio::setUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION mode) { + printTrace("%s| Set UE Mode Of Operation", getName().c_str()); + + std::string sDomain, sPreference; + + switch (mode) { + case ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE1: + sDomain = "0"; + sPreference = "00"; + break; + case ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE2: + sDomain = "0"; + sPreference = "01"; + break; + case ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1: + sDomain = "1"; + sPreference = "00"; + break; + case ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2: + sDomain = "1"; + sPreference = "01"; + break; + case ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1: + sDomain = "2"; + sPreference = "00"; + break; + case ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2: + sDomain = "2"; + sPreference = "01"; + break; + default: + printError("%s| Set UE Mode Of Operation: invalid argument", getName().c_str()); + return INVALID_ARGS; + } + + CODE rc; + const int dTimeout = 1000; // ms + std::string sCommand = "AT+QNVFW=\"/nv/item_files/modem/mmode/ue_usage_setting\"," + sPreference; + + rc = sendBasicCommand(sCommand, dTimeout); + if (rc != SUCCESS) { + printError("%s| Voice/data preference configuration failed with code [%d]", getName().c_str(), rc); + return rc; + } + + sCommand = "AT+QCFG=\"servicedomain\"," + sDomain + ",0"; + + rc = sendBasicCommand(sCommand, dTimeout); + if (rc != SUCCESS) { + printError("%s| Service domain configuration failed with code [%d]", getName().c_str(), rc); + return rc; + } + + return SUCCESS; +} + +ICellularRadio::CODE QuectelRadio::getUeUsageSetting(QuectelRadio::UE_USAGE_SETTING& us) { + printTrace("%s| Get UE Usage Setting", getName().c_str()); + + std::string sCmd("AT+QNVFR=\"/nv/item_files/modem/mmode/ue_usage_setting\""); + std::string sResult = sendCommand(sCmd); + size_t end = sResult.find(ICellularRadio::RSP_OK); + + if (end == std::string::npos) { + printError("%s| Unable to get UE Usage Setting [%s]", getName().c_str(), sResult.c_str()); + return FAILURE; + } + + // +QNVFR: <voice/data preference> + const std::string sLabel = "+QNVFR: "; + size_t start = sResult.find(sLabel); + if (start == std::string::npos) { + printError("%s| Failed to parse UE Usage Setting from output [%s]", getName().c_str(), sResult.c_str()); + return FAILURE; + } + + start += sLabel.length(); + const std::string sPreference = MTS::Text::trim(sResult.substr(start, end - start)); + + if (convertToUeUsageSetting(sPreference, us) != SUCCESS) { + printError("%s| Unable to convert [%s] to UE Usage Setting", getName().c_str(), sPreference.c_str()); + return FAILURE; + } + + return SUCCESS; +} + +ICellularRadio::CODE QuectelRadio::convertToUeUsageSetting(const std::string& sSetting, QuectelRadio::UE_USAGE_SETTING& us) { + if (sSetting == "00") { + us = QuectelRadio::UE_USAGE_SETTING::MODE_1; + return SUCCESS; + } + + if (sSetting == "01") { + us = QuectelRadio::UE_USAGE_SETTING::MODE_2; + return SUCCESS; + } + + us = QuectelRadio::UE_USAGE_SETTING::UNKNOWN_MODE; + return FAILURE; +} + +ICellularRadio::CODE QuectelRadio::getUeModeOfOperation(ICellularRadio::UE_MODES_OF_OPERATION& mode) { + printTrace("%s| Get UE Mode Of Operation", getName().c_str()); + + SERVICEDOMAIN sd; + UE_USAGE_SETTING us; + + if (getServiceDomain(sd) != SUCCESS) { + return FAILURE; + } + + printTrace("%s| Retrieved servicedomain [%d]", getName().c_str(), sd); + + if (getUeUsageSetting(us) != SUCCESS) { + return FAILURE; + } + + printTrace("%s| Retrieved ue_usage_setting [%d]", getName().c_str(), us); + + if (sd == ICellularRadio::SERVICEDOMAIN::CS_ONLY && us == QuectelRadio::UE_USAGE_SETTING::MODE_1) { + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE1; + return SUCCESS; + } + + if (sd == ICellularRadio::SERVICEDOMAIN::CS_ONLY && us == QuectelRadio::UE_USAGE_SETTING::MODE_2) { + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_MODE2; + return SUCCESS; + } + + if (sd == ICellularRadio::SERVICEDOMAIN::PS_ONLY && us == QuectelRadio::UE_USAGE_SETTING::MODE_1) { + mode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1; + return SUCCESS; + } + + if (sd == ICellularRadio::SERVICEDOMAIN::PS_ONLY && us == QuectelRadio::UE_USAGE_SETTING::MODE_2) { + mode = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2; + return SUCCESS; + } + + if (sd == ICellularRadio::SERVICEDOMAIN::CSPS && us == QuectelRadio::UE_USAGE_SETTING::MODE_1) { + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1; + return SUCCESS; + } + + if (sd == ICellularRadio::SERVICEDOMAIN::CSPS && us == QuectelRadio::UE_USAGE_SETTING::MODE_2) { + mode = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2; + return SUCCESS; + } + + printError("%s| Unknown combination of servicedomain [%d] and ue_usage_setting [%d]", getName().c_str(), sd, us); + mode = ICellularRadio::UE_MODES_OF_OPERATION::UNKNOWN_MODE; + return FAILURE; +} |