summaryrefslogtreecommitdiff
path: root/src/MTS_IO_TelitRadio.cpp
diff options
context:
space:
mode:
authorAndrii Pientsov <andrii.pientsov@globallogic.com>2020-07-16 19:23:40 +0300
committerAndrii Pientsov <andrii.pientsov@globallogic.com>2020-07-16 19:23:40 +0300
commit1986b67d54e8e6a3f8176f5b4cb78786ac3ee496 (patch)
tree5f5c64ea0563b4d50e5674160aaea8683b33c87b /src/MTS_IO_TelitRadio.cpp
parentf0be0e4a343f9a600fe8c9fc34fa580c548a4e9e (diff)
downloadlibmts-io-1986b67d54e8e6a3f8176f5b4cb78786ac3ee496.tar.gz
libmts-io-1986b67d54e8e6a3f8176f5b4cb78786ac3ee496.tar.bz2
libmts-io-1986b67d54e8e6a3f8176f5b4cb78786ac3ee496.zip
Add vendor firmware version
Diffstat (limited to 'src/MTS_IO_TelitRadio.cpp')
-rw-r--r--src/MTS_IO_TelitRadio.cpp69
1 files changed, 39 insertions, 30 deletions
diff --git a/src/MTS_IO_TelitRadio.cpp b/src/MTS_IO_TelitRadio.cpp
index 52b5664..8d762be 100644
--- a/src/MTS_IO_TelitRadio.cpp
+++ b/src/MTS_IO_TelitRadio.cpp
@@ -789,7 +789,7 @@ ICellularRadio::CODE TelitRadio::fumoLocalApply(ICellularRadio::UpdateCb& stepCb
std::string sCmd;
FOTA_GROUP group = getFotaGroup();
- rc = getTelitFirmware(m_sTelitFirmware);
+ rc = getVendorFirmware(m_sTelitFirmware);
if (rc != SUCCESS) {
callNextStep(stepCb, "FUMO Error: Failed to obtain current firmware version");
return rc;
@@ -938,39 +938,48 @@ ICellularRadio::CODE TelitRadio::abortWrite() {
return sendBasicCommand(CMD_ABORT_UPLOAD, 2000, 0x00);
}
-ICellularRadio::CODE TelitRadio::getTelitFirmware(std::string& sFirmware) {
- /*
- * Currently, AT+CGMR command is used to determine the radio firmware version.
- *
- * AT+CGMR
- * M0F.670006
- *
- * Perhaps in the future we will use AT#SWPKGV command.
- *
- * AT#SWPKGV
- * 25.20.676-P0F.670690
- * M0F.670006
- * P0F.670690
- * A0F.670006
- */
-
+ICellularRadio::CODE TelitRadio::getVendorFirmware(std::string& sVendorFirmware) {
printTrace("%s| Get Telit-specific firmware version", getName().c_str());
- sFirmware = ICellularRadio::VALUE_NOT_SUPPORTED;
- std::string sCmd("AT+CGMR");
+ ICellularRadio::CODE rc = FAILURE;
+ sVendorFirmware = ICellularRadio::VALUE_NOT_SUPPORTED;
+ std::string sFirmware;
+ std::string sFirmwareBuild;
+ std::string sCmd("AT#SWPKGV");
std::string sResult = sendCommand(sCmd);
size_t pos = sResult.find(ICellularRadio::RSP_OK);
- if (pos == std::string::npos) {
- printWarning("%s| Unable to get firmware from radio using command [%s]", getName().c_str(), sCmd.c_str());
- return FAILURE;
- }
- sFirmware = MTS::Text::trim(sResult.substr(0, pos));
- if(sFirmware.size() == 0) {
- printWarning("%s| Unable to get firmware from radio using command [%s]", getName().c_str(), sCmd.c_str());
- return FAILURE;
- }
+ do {
- return SUCCESS;
+ if (pos != std::string::npos) {
+ // Found
+ std::vector<std::string> vLine = MTS::Text::split(sResult, "\r");
+ if(vLine[1].size() == 0) {
+ printWarning("%s| Unable to get firmware from radio using command [%s]", getName().c_str(), sCmd.c_str());
+ rc = FAILURE;
+ } else {
+ sVendorFirmware = MTS::Text::trim(vLine[1]);
+ rc = SUCCESS;
+ }
+ break;
+ }
+
+ // Not Found. Then we will use "AT+CGMR" + "AT#CFVR"
+ rc = getFirmware(sFirmware);
+ if (rc != SUCCESS){
+ break;
+ }
+
+ rc = getFirmwareBuild(sFirmwareBuild);
+ if (rc != SUCCESS){
+ break;
+ }
+
+ sVendorFirmware = sFirmware + "," + sFirmwareBuild;
+
+ } while (false);
+
+
+ return rc;
}
ICellularRadio::CODE TelitRadio::fumoWaitUpgradeFinished(ICellularRadio::UpdateCb& stepCb) {
@@ -1026,7 +1035,7 @@ ICellularRadio::CODE TelitRadio::fumoCheckNewFirmware(ICellularRadio::UpdateCb&
CODE rc = SUCCESS;
std::string sTelitFirmware;
- rc = getTelitFirmware(sTelitFirmware);
+ rc = getVendorFirmware(sTelitFirmware);
if (rc != SUCCESS) {
callNextStep(stepCb, "FUMO Error: Failed to obtain current firmware version");