diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/MTS_IO_CellularRadio.cpp | 44 | 
1 files changed, 44 insertions, 0 deletions
| diff --git a/src/MTS_IO_CellularRadio.cpp b/src/MTS_IO_CellularRadio.cpp index 8c4c75b..df1303c 100644 --- a/src/MTS_IO_CellularRadio.cpp +++ b/src/MTS_IO_CellularRadio.cpp @@ -760,6 +760,31 @@ void CellularRadio::getCommonNetworkStats(Json::Value& jData) {      }  } +CellularRadio::CODE CellularRadio::getSimLockStatus(std::string& sData) +{ +    printTrace("%s| Get SIM lock status", m_sName.c_str()); +    std::string sCmd("AT+CPIN?"); +    std::string sResult = sendCommand(sCmd); + +    const std::string sPrefix = "+CPIN: "; +    size_t start = sResult.find(sPrefix); +    size_t end = sResult.rfind(ICellularRadio::RSP_OK); + +    if (start == std::string::npos || end == std::string::npos) { +        printWarning("%s| Unable to get SIM lock status from radio using command [%s]", m_sName.c_str(), sCmd.c_str()); +        return FAILURE; +    } + +    start += sPrefix.size(); +    sData = MTS::Text::trim(sResult.substr(start, end-start)); +    if(sData.size() == 0) { +        printWarning("%s| Unable to get SIM lock status from radio using command [%s]", m_sName.c_str(), sCmd.c_str()); +        return FAILURE; +    } + +    return SUCCESS; +} +  void CellularRadio::initMipProfile(Json::Value& jData) {      jData[ICellularRadio::KEY_MIP_ID] = 0;      jData[ICellularRadio::KEY_MIP_ENABLED] = false; @@ -821,6 +846,25 @@ CellularRadio::CODE CellularRadio::convertRegistrationToString(REGISTRATION eReg      return eCode;  } +CellularRadio::CODE CellularRadio::unlockSimCard(const Json::Value& jArgs) { +    printTrace("%s| Unlock the SIM card using PIN code", m_sName.c_str()); + +    if(!jArgs["pin"].isString()) { +        return INVALID_ARGS; +    } + +    std::string sCmd = "AT+CPIN=" + jArgs["pin"].asString(); +    std::string sResult = sendCommand(sCmd); + +    size_t pos = sResult.find(ICellularRadio::RSP_OK); +    if (pos == std::string::npos) { +        printWarning("%s| Failed to unlock the SIM card using command [%s]", m_sName.c_str(), sCmd.c_str()); +        return FAILURE; +    } + +    return SUCCESS; +} +  CellularRadio::CODE CellularRadio::validateMsl(const Json::Value&) {      printTrace("%s| Validate MSL", m_sName.c_str()); | 
