summaryrefslogtreecommitdiff
path: root/src/MTS_IO_QuectelRadio.cpp
diff options
context:
space:
mode:
authorSerhii Kostiuk <serhii.o.kostiuk@globallogic.com>2019-06-11 18:24:23 +0300
committerSerhii Kostiuk <serhii.o.kostiuk@globallogic.com>2019-06-11 18:24:23 +0300
commit2dad34c7a24430ed8c55079405e2988d5a35cd87 (patch)
treed836bf06f2145304986e5cec32b21227909d8159 /src/MTS_IO_QuectelRadio.cpp
parent20471af5d887ab2255716c734661abb95953676c (diff)
downloadlibmts-io-2dad34c7a24430ed8c55079405e2988d5a35cd87.tar.gz
libmts-io-2dad34c7a24430ed8c55079405e2988d5a35cd87.tar.bz2
libmts-io-2dad34c7a24430ed8c55079405e2988d5a35cd87.zip
[MTS-MTQ] QuectelRadio implementation
Modified QuectelRadio::getNetworkStatus to populate Quectel-specific debug information. Added as a separate commit for simple reverts
Diffstat (limited to 'src/MTS_IO_QuectelRadio.cpp')
-rw-r--r--src/MTS_IO_QuectelRadio.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/MTS_IO_QuectelRadio.cpp b/src/MTS_IO_QuectelRadio.cpp
index 597bdac..3f108e6 100644
--- a/src/MTS_IO_QuectelRadio.cpp
+++ b/src/MTS_IO_QuectelRadio.cpp
@@ -237,11 +237,16 @@ CellularRadio::CODE QuectelRadio::getNetworkStatus(Json::Value& jData) {
size_t start = sResult.find(":") + 1; //Position right after "+QENG:"
std::vector<std::string> vParts = MTS::Text::split(MTS::Text::trim(sResult.substr(start)), ",");
Json::Value jDebug;
+ Json::Value jQuectelDebug;
if (vParts.size() < 3) {
printDebug("%s| Network Status command reponse is an unknown format: [%s][%s]", getName().c_str(), sCmd.c_str(), sResult.c_str());
printTrace("%s| Network Status:\n%s\n", getName().c_str(), jData.toStyledString().c_str());
return SUCCESS; //return SUCCESS because getCommonNetworkStats() succeeded at top of this function
+ } else {
+ // UE state and Access technology, Quectel-specific information
+ jQuectelDebug["state"] = vParts[1];
+ jQuectelDebug["rat"] = vParts[2];
}
// +QENG:"servingscell",<state>,"GSM",<mcc>,<mnc>,<lac>,<cellid>,<bsic>,<arfcn>,<band>,<rxlev>,<txp>,<rla>,<drx>,<c1>,<c2>,<gprs>,<tch>,<ts>,<ta>,<maio>,<hsn>,<rxlevsub>,<rxlevfull>,<rxqualsub>,<rxqualfull>,<voicecodec>
@@ -252,6 +257,7 @@ CellularRadio::CODE QuectelRadio::getNetworkStatus(Json::Value& jData) {
jData[KEY_MNC] = vParts[4];
jData[KEY_LAC] = vParts[5];
jData[KEY_CID] = vParts[6];
+ jQuectelDebug["bsic"] = vParts[7];
jData[KEY_CHANNEL] = vParts[8];
if (convertToActiveBand(vParts[9], abnd) == SUCCESS && convertActiveBandToString(abnd, sValue) == SUCCESS) {
@@ -266,9 +272,25 @@ CellularRadio::CODE QuectelRadio::getNetworkStatus(Json::Value& jData) {
}
jData[KEY_TXPWR] = vParts[11];
+ jQuectelDebug["rla"] = vParts[12];
+ jQuectelDebug["drx"] = vParts[13];
+ jQuectelDebug["c1"] = vParts[14];
+ jQuectelDebug["c2"] = vParts[15];
+ jQuectelDebug["gprs"] = vParts[16];
+ jQuectelDebug["tch"] = vParts[17];
+ jQuectelDebug["ts"] = vParts[18];
+ jQuectelDebug["ta"] = vParts[19];
+ jQuectelDebug["maio"] = vParts[20];
+ jQuectelDebug["hsn"] = vParts[21];
+ jQuectelDebug["rxlevsub"] = vParts[22];
+ jQuectelDebug["rxlevfull"] = vParts[23];
+ jQuectelDebug["rxqualsub"] = vParts[24];
+ jQuectelDebug["rxqualfull"] = vParts[25];
+ jQuectelDebug["voicecodec"] = vParts[26];
// The following fields can NOT be fetched for Quectel in GSM mode: RAC, MM, RR, NOM
+ jData["quectelDebug"] = jQuectelDebug;
jData[KEY_DEBUG] = jDebug;
}
@@ -285,6 +307,11 @@ CellularRadio::CODE QuectelRadio::getNetworkStatus(Json::Value& jData) {
jData[KEY_RAC] = vParts[9];
jDebug[KEY_RSCP] = vParts[10];
jDebug[KEY_ECIO] = vParts[11];
+ jQuectelDebug["phych"] = vParts[12];
+ jQuectelDebug["sf"] = vParts[13];
+ jQuectelDebug["slot"] = vParts[14];
+ jQuectelDebug["speechCode"] = vParts[15];
+ jQuectelDebug["comMod"] = vParts[16];
// The following fields can NOT be fetched for Quectel in WCDMA mode: TXPWR, DRX, MM, RR, NOM, BLER
@@ -297,6 +324,7 @@ CellularRadio::CODE QuectelRadio::getNetworkStatus(Json::Value& jData) {
RadioBandMap radioBandMap(vParts[7], CellularRadio::VALUE_TYPE_CDMA);
jData[KEY_ABND] = radioBandMap.getRadioBandName();
+ jData["quectelDebug"] = jQuectelDebug;
jData[KEY_DEBUG] = jDebug;
}
@@ -304,14 +332,21 @@ CellularRadio::CODE QuectelRadio::getNetworkStatus(Json::Value& jData) {
// +QENG: [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17]
else if(vParts.size() == LTE_NETWORK_FORMAT) {
//Parse as LTE Network Format
+ jQuectelDebug["isTdd"] = vParts[3];
jData[KEY_MCC] = vParts[4];
jData[KEY_MNC] = vParts[5];
jData[KEY_CID] = vParts[6];
+ jQuectelDebug["pcid"] = vParts[7];
jData[KEY_CHANNEL] = vParts[8];
+ jQuectelDebug["freqBandInd"] = vParts[9];
+ jQuectelDebug["ulBandwidth"] = vParts[10];
+ jQuectelDebug["dlBandwidth"] = vParts[11];
jData["tac"] = vParts[12];
jDebug["rsrp"] = vParts[13];
jDebug["rsrq"] = vParts[14];
jData[KEY_RSSIDBM] = vParts[15];
+ jQuectelDebug["sinr"] = vParts[16];
+ jQuectelDebug["srxlev"] = vParts[17];
// Get the radio band given the channel (EARFCN)
RadioBandMap radioBandMap(vParts[8], CellularRadio::VALUE_TYPE_LTE);
@@ -320,6 +355,7 @@ CellularRadio::CODE QuectelRadio::getNetworkStatus(Json::Value& jData) {
// LAC is not provided by AT+QENG in WCDMA mode. Use another command instead
jData[KEY_LAC] = queryLteLac();
+ jData["quectelDebug"] = jQuectelDebug;
jData[KEY_DEBUG] = jDebug;
}