summaryrefslogtreecommitdiff
path: root/src/MTS_IO_LE910C4NFRadio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/MTS_IO_LE910C4NFRadio.cpp')
-rw-r--r--src/MTS_IO_LE910C4NFRadio.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/MTS_IO_LE910C4NFRadio.cpp b/src/MTS_IO_LE910C4NFRadio.cpp
index 770a2c4..0f7bb92 100644
--- a/src/MTS_IO_LE910C4NFRadio.cpp
+++ b/src/MTS_IO_LE910C4NFRadio.cpp
@@ -128,3 +128,79 @@ CellularRadio::CODE LE910C4NFRadio::getActiveFirmware(std::string& sFwId) {
TelitRadio::FOTA_GROUP LE910C4NFRadio::getFotaGroup() {
return VALUE_GROUP_B;
}
+
+CellularRadio::CODE LE910C4NFRadio::getIsVoiceSupportConfigurable() {
+ CellularRadio::CODE rc;
+ const std::string sCommand = "AT#CALLDISA=?";
+
+ rc = sendBasicCommand(sCommand);
+ if (rc == ERROR) {
+ printTrace("%s| This radio does not support voice call enable/disable", getName().c_str());
+ return NOT_APPLICABLE;
+ }
+
+ return rc;
+}
+
+CellularRadio::CODE LE910C4NFRadio::disableVoiceSupport() {
+ printTrace("%s| Disable Voice Support", getName().c_str());
+
+ CellularRadio::CODE rc;
+
+ rc = getIsVoiceSupportConfigurable();
+ if (rc != SUCCESS) {
+ return rc;
+ }
+
+ const int dTimeout = 1000; // ms
+ const std::string sCommand = "AT#CALLDISA=1,1";
+
+ return sendBasicCommand(sCommand, dTimeout);
+}
+
+CellularRadio::CODE LE910C4NFRadio::getVoiceSupport(bool& bVoiceEnabled, bool& bSmsOnly) {
+ printTrace("%s| Get Voice Support", getName().c_str());
+
+ CellularRadio::CODE rc;
+
+ bVoiceEnabled = false;
+ bSmsOnly = false;
+
+ rc = getIsVoiceSupportConfigurable();
+ if (rc != SUCCESS) {
+ return rc;
+ }
+
+ const int dTimeout = 1000; // ms
+ const std::string sCommand = "AT#CALLDISA?";
+ const std::string sLabel = "#CALLDISA: ";
+ std::string sResult;
+
+ rc = sendBasicQuery(sCommand, sLabel, sResult, dTimeout);
+ if (rc != SUCCESS) {
+ return rc;
+ }
+
+ std::vector<std::string> vParts = MTS::Text::split(sResult, ',');
+ if (vParts.size() != 2) {
+ printError("Unexpected number of parameters in response [%s]", sResult.c_str());
+ return FAILURE;
+ }
+
+ /*
+ * vParts[0] - value indicating that "voice support" is enabled.
+ * Valid parameters:
+ * 0 - Enable voice support
+ * 1 - Disable voice support
+ * 2 - Disable voice support (same as 1)
+ *
+ * vParts[1] - value indicating that "SMS only" registration flag is enabled.
+ * Valid parameters:
+ * 0 - Disable "SMS only" registration flag
+ * 1 - Enable "SMS only" registration flag
+ */
+ bVoiceEnabled = (vParts[0] == "0");
+ bSmsOnly = (vParts[1] == "1");
+
+ return SUCCESS;
+}