summaryrefslogtreecommitdiff
path: root/src/MTS_IO_QuectelRadio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/MTS_IO_QuectelRadio.cpp')
-rw-r--r--src/MTS_IO_QuectelRadio.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/MTS_IO_QuectelRadio.cpp b/src/MTS_IO_QuectelRadio.cpp
index 0a054ff..8ac9bac 100644
--- a/src/MTS_IO_QuectelRadio.cpp
+++ b/src/MTS_IO_QuectelRadio.cpp
@@ -573,3 +573,39 @@ CellularRadio::CODE QuectelRadio::convertToActiveBand(const std::string& sQuecte
return SUCCESS;
}
+
+ICellularRadio::CODE QuectelRadio::getRadioMode(RADIOMODE &mode)
+{
+ std::string sCmd("AT+QCFG=\"nwscanmode\"");
+ std::string cmdResult = sendCommand(sCmd);
+ if (cmdResult.find(ICellularRadio::RSP_OK) == std::string::npos) {
+ printDebug("%s| AT+QCFG? returned unexpected response: [%s][%s]", getName().c_str(), sCmd.c_str(), cmdResult.c_str());
+ return FAILURE;
+ }
+ switch (stoi(MTS::Text::split(cmdResult, ',')[1])) {
+ case 1: mode = ICellularRadio::RADIOMODE_GSM_ONLY; break;
+ case 5: mode = ICellularRadio::RADIOMODE_UMTS_ONLY; break;
+ case 0: mode = ICellularRadio::RADIOMODE_AUTO; break;
+ default: mode = ICellularRadio::RADIOMODE_UNKNOWN; break;
+ }
+ return SUCCESS;
+}
+
+ICellularRadio::CODE QuectelRadio::setRadioMode(RADIOMODE mode)
+{
+ std::string value;
+ switch (mode) {
+ case ICellularRadio::RADIOMODE_GSM_ONLY: value = "1"; break;
+ case ICellularRadio::RADIOMODE_UMTS_ONLY: value = "5"; break;
+ case ICellularRadio::RADIOMODE_AUTO: value = "0"; break;
+ default: return FAILURE;
+ }
+ std::string sCmd("AT+QCFG=\"nwscanmode\",");
+ sCmd += value;
+ std::string cmdResult = sendCommand(sCmd);
+ if (cmdResult.find(ICellularRadio::RSP_OK) == std::string::npos) {
+ printDebug("%s| AT+QCFG? returned unexpected response: [%s][%s]", getName().c_str(), sCmd.c_str(), cmdResult.c_str());
+ return FAILURE;
+ }
+ return SUCCESS;
+}