diff options
| author | Maksym Telychko <maksym.telychko@globallogic.com> | 2019-06-21 17:19:09 +0300 | 
|---|---|---|
| committer | Maksym Telychko <maksym.telychko@globallogic.com> | 2019-06-21 17:19:09 +0300 | 
| commit | 143feb6a4587817d28c77e4df3a1b594b855f5e5 (patch) | |
| tree | b4457521772e261244fd14ce74788070e0dc7299 /src | |
| parent | 3b542d1fea82726842e6bfe03ddcbf86345c5b9d (diff) | |
| download | libmts-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')
| -rw-r--r-- | src/MTS_IO_QuectelRadio.cpp | 36 | ||||
| -rw-r--r-- | src/MTS_IO_TelitRadio.cpp | 36 | 
2 files changed, 72 insertions, 0 deletions
| diff --git a/src/MTS_IO_QuectelRadio.cpp b/src/MTS_IO_QuectelRadio.cpp index 2f3c9b5..50185b3 100644 --- a/src/MTS_IO_QuectelRadio.cpp +++ b/src/MTS_IO_QuectelRadio.cpp @@ -494,3 +494,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; +} 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; +} | 
