summaryrefslogtreecommitdiff
path: root/src/MTS_IO_CellularRadio.cpp
diff options
context:
space:
mode:
authorSerhii Kostiuk <serhii.o.kostiuk@globallogic.com>2019-06-22 11:24:51 +0300
committerSerhii Kostiuk <serhii.o.kostiuk@globallogic.com>2019-06-22 13:53:16 +0300
commitd9024556c684f2c157d472eee814e01ff2496ff9 (patch)
tree7b68c5e8365076f3f828cf5ac4fd28da85212f6d /src/MTS_IO_CellularRadio.cpp
parenta7673be0a434243c2011d809cc0a3a01441470fb (diff)
downloadlibmts-io-d9024556c684f2c157d472eee814e01ff2496ff9.tar.gz
libmts-io-d9024556c684f2c157d472eee814e01ff2496ff9.tar.bz2
libmts-io-d9024556c684f2c157d472eee814e01ff2496ff9.zip
[MTS-MTQ] SIM status and PIN unlock procedures
Added common implementations for CellularRadio::unlockSimCard and CellularRadio::getSimLockStatus
Diffstat (limited to 'src/MTS_IO_CellularRadio.cpp')
-rw-r--r--src/MTS_IO_CellularRadio.cpp44
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());