Snap for 5450365 from af48631202c13a56b500396b334c3535a2d9152b to pi-platform-release

Change-Id: Ifdd557d0055ca74f9a7511d42cdafa805ee44f48
diff --git a/device.mk b/device.mk
index 45c60ff..4f549c1 100755
--- a/device.mk
+++ b/device.mk
@@ -36,7 +36,7 @@
 
 # Set the SVN for the targeted MR release
 PRODUCT_PROPERTY_OVERRIDES += \
-    ro.vendor.build.svn=25
+    ro.vendor.build.svn=26
 
 # Enforce privapp-permissions whitelist
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index f676ad8..929e434 100755
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
@@ -33,6 +33,7 @@
 #define MODEM_LOG_LOC_PROPERTY "ro.radio.log_loc"
 #define MODEM_LOGGING_SWITCH "persist.radio.smlog_switch"
 
+#define DIAG_MDLOG_PERSIST_PROPERTY "persist.sys.modem.diag.mdlog"
 #define DIAG_MDLOG_PROPERTY "sys.modem.diag.mdlog"
 #define DIAG_MDLOG_STATUS_PROPERTY "sys.modem.diag.mdlog_on"
 
@@ -106,12 +107,12 @@
     }
 
     if (!PropertiesHelper::IsUserBuild()) {
-        bool smlogEnabled = android::base::GetBoolProperty(MODEM_LOGGING_SWITCH, false) &&
-                !access("/vendor/bin/smlog_dump", X_OK);
-
-        bool diagLogEnabled = android::base::GetBoolProperty(DIAG_MDLOG_PROPERTY, false);
 
         CommandOptions options = CommandOptions::WithTimeout(120).Build();
+
+        RunCommandToFd(fd, "MODEM DIAG SYSTEM PROPERTIES",
+                       { "/vendor/bin/sh", "-c", "getprop", "|", "grep", "sys.modem.diag" }, options);
+
         std::string modemLogAllDir = modemLogDir + "/modem_log";
         std::string diagLogDir = "/data/vendor/radio/diag_logs/logs";
         std::vector<std::string> rilAndNetmgrLogs
@@ -120,21 +121,34 @@
               "/data/vendor/radio/ril_log_old",
               "/data/vendor/netmgr/netmgr_log",
               "/data/vendor/netmgr/netmgr_log_old",
-              "/data/vendor/radio/power_anomaly_data.txt"
+              "/data/vendor/radio/power_anomaly_data.txt",
+              "/data/vendor/radio/diag_logs/diag_trace.txt",
+              "/data/vendor/radio/diag_logs/diag_trace_old.txt",
             };
 
         std::string modemLogMkDirCmd= "/vendor/bin/mkdir -p " + modemLogAllDir;
         RunCommandToFd(fd, "MKDIR MODEM LOG", { "/vendor/bin/sh", "-c", modemLogMkDirCmd.c_str()}, options);
 
+        bool smlogEnabled = android::base::GetBoolProperty(MODEM_LOGGING_SWITCH, false) &&
+            !access("/vendor/bin/smlog_dump", X_OK);
+
+        bool diagLogEnabled = android::base::GetBoolProperty(DIAG_MDLOG_PERSIST_PROPERTY, false);
+
         if (smlogEnabled) {
             RunCommandToFd(fd, "SMLOG DUMP", { "smlog_dump", "-d", "-o", modemLogAllDir.c_str() }, options);
         } else if (diagLogEnabled) {
-            android::base::SetProperty(DIAG_MDLOG_PROPERTY, "false");
+            bool diagLogStarted = android::base::GetBoolProperty(DIAG_MDLOG_STATUS_PROPERTY, false);
 
-            ALOGD("Waiting for diag log to exit\n");
+            if (diagLogStarted) {
+                android::base::SetProperty(DIAG_MDLOG_PROPERTY, "false");
+                ALOGD("Stopping diag_mdlog...\n");
+            } else {
+                ALOGD("diag_mdlog is not running\n");
+            }
+
             for (int i = 0; i < 30; i++) {
                 if (!android::base::GetBoolProperty(DIAG_MDLOG_STATUS_PROPERTY, false)) {
-                    ALOGD("diag log exited\n");
+                    ALOGD("diag_mdlog exited\n");
                     sleep(1);
                     break;
                 }
@@ -144,13 +158,16 @@
 
             dumpDiagLogs(fd, diagLogDir, modemLogAllDir);
 
-            android::base::SetProperty(DIAG_MDLOG_PROPERTY, "true");
+            if (diagLogStarted) {
+                ALOGD("Restarting diag_mdlog...\n");
+                android::base::SetProperty(DIAG_MDLOG_PROPERTY, "true");
+            }
         }
 
         for (const auto& logFile : rilAndNetmgrLogs)
         {
             std::string copyCmd= "/vendor/bin/cp " + logFile + " " + modemLogAllDir;
-            RunCommandToFd(fd, "CP MODEM LOG", { "/vendor/bin/sh", "-c", copyCmd.c_str()}, options);
+            RunCommandToFd(fd, "CP MODEM LOG", { "/vendor/bin/sh", "-c", copyCmd.c_str() }, options);
         }
 
         std::string filePrefix = android::base::GetProperty(MODEM_LOG_PREFIX_PROPERTY, "");