summaryrefslogtreecommitdiff
path: root/include/mts
diff options
context:
space:
mode:
Diffstat (limited to 'include/mts')
-rw-r--r--include/mts/MTS_IO_CellularRadio.h14
-rw-r--r--include/mts/MTS_IO_ICellularRadio.h62
-rw-r--r--include/mts/MTS_IO_LE910Radio.h2
-rw-r--r--include/mts/MTS_IO_QuectelRadio.h2
-rw-r--r--include/mts/MTS_IO_TelitRadio.h2
5 files changed, 82 insertions, 0 deletions
diff --git a/include/mts/MTS_IO_CellularRadio.h b/include/mts/MTS_IO_CellularRadio.h
index f32251c..e985c21 100644
--- a/include/mts/MTS_IO_CellularRadio.h
+++ b/include/mts/MTS_IO_CellularRadio.h
@@ -145,6 +145,11 @@ namespace MTS {
CODE getVoiceSupport(Json::Value& jData) override;
CODE getVoiceSupport(bool& bVoiceEnabled, bool& bSmsOnly) override;
+ CODE getPdpContexts(Json::Value& jData) override;
+ CODE setPdpContext(const std::string& sId, const Json::Value& jConfig) override;
+
+ CODE getDiagnostics(std::string& sReport) override;
+
protected:
CellularRadio(const std::string& sName, const std::string& sRadioPort);
@@ -264,6 +269,15 @@ namespace MTS {
virtual CODE sendData(const char* pData, size_t nBytes);
virtual CODE sendBasicQuery(const std::string& sCmd, const std::string& sLabel, std::string& sResult, int32_t timeoutMillis = 100, const char& ESC = ICellularRadio::CR);
+ /**
+ * @brief getDiagCommands - returns the list of Cellular Diagnostics commands for this radio.
+ *
+ * @param bIsSimReady - set to "true" if the SIM card is inserted and NOT locked by PIN or PUK.
+ *
+ * @return the list of AT commands (strings).
+ */
+ virtual const std::vector<std::string>& getDiagCommands(bool bIsSimReady = true) = 0;
+
class RadioBandMap : public MTS::NonCopyable {
public:
RadioBandMap()
diff --git a/include/mts/MTS_IO_ICellularRadio.h b/include/mts/MTS_IO_ICellularRadio.h
index f3e15e2..0523236 100644
--- a/include/mts/MTS_IO_ICellularRadio.h
+++ b/include/mts/MTS_IO_ICellularRadio.h
@@ -205,6 +205,10 @@ namespace MTS {
static const char *KEY_ATTEMPTS_PIN; //!< The number of attempts left to unlock the SIM card using PIN code
static const char *KEY_ATTEMPTS_PUK; //!< The number of attempts left to unlock the SIM card using PUK code
+ //PDP Context
+ static const char *KEY_PDP_CONTEXT_APN;
+ static const char *KEY_PDP_CONTEXT_IPMODE;
+
//Values - Type
static const char *VALUE_TYPE_LTE;
static const char *VALUE_TYPE_GSM;
@@ -656,6 +660,64 @@ namespace MTS {
*/
virtual CODE getSelectedBandsRaw(std::string& sRawBands) = 0;
+ /**
+ * @brief Get the list of PDP contexts from the radio
+ *
+ * @param jData - an object to be filled with data.
+ * {
+ * "<context_number: str>": {
+ * "apn": "<apn_value: str>",
+ * "ipMode": "<ip_mode: str>"
+ * }
+ * }
+ *
+ * @return CODE::SUCCESS when fetched successfully,
+ * CODE::NO_RESPONSE when the modem doesn't respond,
+ * CODE::ERROR when the radio returns "ERROR",
+ * CODE::FAILURE otherwise (unexpected response).
+ */
+ virtual CODE getPdpContexts(Json::Value& jData) = 0;
+
+ /**
+ * @brief Set the PDP context to the radio
+ *
+ * @param sId - a string value that contains an ID of the PDP context to change.
+ * @param jConfig - a JSON-object that contains:
+ * an IP mode for the specified PDP context,
+ * an APN for the specified PDP context.
+ * {
+ * "apn": "<APN>",
+ * "ipMode": "<IP MODE>"
+ * }
+ *
+ * @return CODE::SUCCESS when fetched successfully,
+ * CODE::NO_RESPONSE when the modem doesn't respond,
+ * CODE::ERROR when the radio returns "ERROR",
+ * CODE::FAILURE otherwise (unexpected response).
+ */
+ virtual CODE setPdpContext(const std::string& sId, const Json::Value& jConfig) = 0;
+
+ /**
+ * @brief Execute the diagnostics AT commands and capture their output
+ *
+ * NOTE: The list of diagnostic AT commands is radio-specific and changes
+ * depending on the radio model (code).
+ *
+ * NOTE: The method stops its execution if the radio repeatedly ignores
+ * the commands (returns no execution result for several of them). This
+ * is required to limit the maximum execution time of the function and
+ * prevent the process from occupying the radio for too long. In case
+ * of timeout, the report will contain the output of all commands that
+ * it managed to execute before the failure.
+ *
+ * @param sDiagReport - the AT commands execution report.
+ *
+ * @return CODE::SUCCESS when fetched successfully,
+ * CODE::NO_RESPONSE when the radio ignored several of the AT commands,
+ * CODE::FAILURE otherwise.
+ */
+ virtual CODE getDiagnostics(std::string& sDiagReport) = 0;
+
};
}
}
diff --git a/include/mts/MTS_IO_LE910Radio.h b/include/mts/MTS_IO_LE910Radio.h
index 2ba423d..6700ee3 100644
--- a/include/mts/MTS_IO_LE910Radio.h
+++ b/include/mts/MTS_IO_LE910Radio.h
@@ -50,6 +50,8 @@ namespace MTS {
protected:
+ const std::vector<std::string>& getDiagCommands(bool bIsSimReady = true) override;
+
private:
diff --git a/include/mts/MTS_IO_QuectelRadio.h b/include/mts/MTS_IO_QuectelRadio.h
index bd312b8..4315cb3 100644
--- a/include/mts/MTS_IO_QuectelRadio.h
+++ b/include/mts/MTS_IO_QuectelRadio.h
@@ -85,6 +85,8 @@ namespace MTS {
CODE setRxDiversity(const Json::Value& jArgs) override;
+ const std::vector<std::string>& getDiagCommands(bool bIsSimReady = true) override;
+
private:
// private variable to save old firmware versions during FOTA
std::string m_sQuectelFirmware;
diff --git a/include/mts/MTS_IO_TelitRadio.h b/include/mts/MTS_IO_TelitRadio.h
index a06da54..d198969 100644
--- a/include/mts/MTS_IO_TelitRadio.h
+++ b/include/mts/MTS_IO_TelitRadio.h
@@ -73,6 +73,8 @@ namespace MTS {
virtual CODE fumoWriteGroupsABD(int fd, UpdateCb& stepCb);
//virtual CODE fumoWriteGroupC(int fd, UpdateCb& stepCb);
+ const std::vector<std::string>& getDiagCommands(bool bIsSimReady = true) override;
+
static bool isContainsSignChar(const std::string& str);
private: