summaryrefslogtreecommitdiff
path: root/src/MTS_IO_TelitRadio.cpp
diff options
context:
space:
mode:
authorMaksym Telychko <maksym.telychko@globallogic.com>2019-06-21 17:19:09 +0300
committerMaksym Telychko <maksym.telychko@globallogic.com>2019-06-21 17:19:09 +0300
commit143feb6a4587817d28c77e4df3a1b594b855f5e5 (patch)
treeb4457521772e261244fd14ce74788070e0dc7299 /src/MTS_IO_TelitRadio.cpp
parent3b542d1fea82726842e6bfe03ddcbf86345c5b9d (diff)
downloadlibmts-io-143feb6a4587817d28c77e4df3a1b594b855f5e5.tar.gz
libmts-io-143feb6a4587817d28c77e4df3a1b594b855f5e5.tar.bz2
libmts-io-143feb6a4587817d28c77e4df3a1b594b855f5e5.zip
[MTS-MTQ] RAT mode switch: implementation for telit and quectel
RAT - Radio Access Technology
Diffstat (limited to 'src/MTS_IO_TelitRadio.cpp')
-rw-r--r--src/MTS_IO_TelitRadio.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/MTS_IO_TelitRadio.cpp b/src/MTS_IO_TelitRadio.cpp
index 4fcf836..7b5b18b 100644
--- a/src/MTS_IO_TelitRadio.cpp
+++ b/src/MTS_IO_TelitRadio.cpp
@@ -537,3 +537,39 @@ bool TelitRadio::getHardwareVersionFromFirmware(const std::string& sFirmware, st
return bResult;
}
+
+ICellularRadio::CODE TelitRadio::getRadioMode(RADIOMODE &mode)
+{
+ std::string sCmd("AT+WS46?");
+ std::string cmdResult = sendCommand(sCmd);
+ if (cmdResult.find("+WS46:") == std::string::npos) {
+ printDebug("%s| AT+WS46? returned unexpected response: [%s][%s]", getName().c_str(), sCmd.c_str(), cmdResult.c_str());
+ return FAILURE;
+ }
+ switch (stoi(MTS::Text::split(cmdResult, ':')[1])) {
+ case 12: mode = ICellularRadio::RADIOMODE_GSM_ONLY; break;
+ case 22: mode = ICellularRadio::RADIOMODE_UMTS_ONLY; break;
+ case 25: mode = ICellularRadio::RADIOMODE_AUTO; break;
+ default: mode = ICellularRadio::RADIOMODE_UNKNOWN; break;
+ }
+ return SUCCESS;
+}
+
+ICellularRadio::CODE TelitRadio::setRadioMode(RADIOMODE mode)
+{
+ std::string value;
+ switch (mode) {
+ case ICellularRadio::RADIOMODE_GSM_ONLY: value = "12"; break;
+ case ICellularRadio::RADIOMODE_UMTS_ONLY: value = "22"; break;
+ case ICellularRadio::RADIOMODE_AUTO: value = "25"; break;
+ default: return FAILURE;
+ }
+ std::string sCmd("AT+WS46=");
+ sCmd += value;
+ std::string cmdResult = sendCommand(sCmd);
+ if (cmdResult.find(ICellularRadio::RSP_OK) == std::string::npos) {
+ printDebug("%s| AT+WS46? returned unexpected response: [%s][%s]", getName().c_str(), sCmd.c_str(), cmdResult.c_str());
+ return FAILURE;
+ }
+ return SUCCESS;
+}