From 3cbee39b7bdda1f31c357e709c45296f4ba6b6f6 Mon Sep 17 00:00:00 2001 From: Jie Song Date: Wed, 31 Jan 2018 14:18:00 -0800 Subject: [PATCH] Collect mdlog trace and status in Bugreport Bug: 72712518 Change-Id: Id6701ddc4fde18bade8acd6cbada1b116ee6455d (cherry picked from commit 0878ca9d7984e11eed4e0c817e0b648a63e04d50) (cherry picked from commit d9a48832b9ac296269b4e6af4c6551b34ced5b74) --- dumpstate/DumpstateDevice.cpp | 37 +++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp index f676ad89f..929e43486 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 @@ void DumpstateDevice::dumpModem(int fd, int fdModem) } 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 rilAndNetmgrLogs @@ -120,21 +121,34 @@ void DumpstateDevice::dumpModem(int fd, int fdModem) "/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); + + if (diagLogStarted) { + android::base::SetProperty(DIAG_MDLOG_PROPERTY, "false"); + ALOGD("Stopping diag_mdlog...\n"); + } else { + ALOGD("diag_mdlog is not running\n"); + } - ALOGD("Waiting for diag log to exit\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 @@ void DumpstateDevice::dumpModem(int fd, int fdModem) 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, "");