Collect mdlog trace and status in Bugreport

Bug: 72712518
Change-Id: Id6701ddc4fde18bade8acd6cbada1b116ee6455d
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index 3040f5b..f7fdbe4 100755
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
@@ -35,6 +35,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"
 
@@ -108,12 +109,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
@@ -122,21 +123,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;
                 }
@@ -146,13 +160,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, "");