bonito: support modem logging on user build
Bug: 143047251
Change-Id: Ifd6f6c779ee0f757b5be11282758d86b78420d3e
diff --git a/device.mk b/device.mk
index 374f652..235a969 100644
--- a/device.mk
+++ b/device.mk
@@ -827,10 +827,13 @@
# Enable modem logging for debug
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
PRODUCT_PROPERTY_OVERRIDES += \
- persist.vendor.sys.modem.diag.mdlog=true \
- persist.vendor.sys.modem.diag.mdlog_br_num=5
+ persist.vendor.sys.modem.diag.mdlog=true
else
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.sys.modem.diag.mdlog=false
endif
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.sys.modem.diag.mdlog_br_num=5
# Enable tcpdump_logger on userdebug and eng
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
@@ -895,5 +898,14 @@
PRODUCT_PROPERTY_OVERRIDES += \
ro.vendor.build.svn=19
+# Vendor verbose logging default property
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.verbose_logging_enabled=true
+else
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.verbose_logging_enabled=false
+endif
+
# Factory OTA
-include vendor/google/factoryota/client/factoryota.mk
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index 350aeef..2a19f1d 100755
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
@@ -129,13 +129,41 @@
RunCommandToFd(fd, "MKDIR MODEM LOG", {"/vendor/bin/mkdir", "-p", modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
+ const std::string diagLogDir = "/data/vendor/radio/diag_logs/logs";
+ const std::string diagPoweronLogPath = "/data/vendor/radio/diag_logs/logs/diag_poweron_log.qmdl";
+
+ bool diagLogEnabled = android::base::GetBoolProperty(DIAG_MDLOG_PERSIST_PROPERTY, false);
+
+ if (diagLogEnabled) {
+ bool diagLogStarted = android::base::GetBoolProperty( DIAG_MDLOG_STATUS_PROPERTY, false);
+
+ if (diagLogStarted) {
+ android::base::SetProperty(DIAG_MDLOG_PROPERTY, "false");
+ ALOGD("Stopping diag_mdlog...\n");
+ if (android::base::WaitForProperty(DIAG_MDLOG_STATUS_PROPERTY, "false", std::chrono::seconds(20))) {
+ ALOGD("diag_mdlog exited");
+ } else {
+ ALOGE("Waited mdlog timeout after 20 second");
+ }
+ } else {
+ ALOGD("diag_mdlog is not running");
+ }
+
+ dumpLogs(fd, diagLogDir, modemLogAllDir, android::base::GetIntProperty(DIAG_MDLOG_NUMBER_BUGREPORT, 100), DIAG_LOG_PREFIX);
+
+ if (diagLogStarted) {
+ ALOGD("Restarting diag_mdlog...");
+ android::base::SetProperty(DIAG_MDLOG_PROPERTY, "true");
+ }
+ }
+ RunCommandToFd(fd, "CP MODEM POWERON LOG", {"/vendor/bin/cp", diagPoweronLogPath.c_str(), modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
+
if (!PropertiesHelper::IsUserBuild()) {
RunCommandToFd(fd, "MODEM RFS INFO", {"/vendor/bin/find /data/vendor/rfs/mpss/OEMFI/"}, CommandOptions::WithTimeout(2).Build());
RunCommandToFd(fd, "MODEM DIAG SYSTEM PROPERTIES", {"/vendor/bin/getprop | grep vendor.sys.modem.diag"}, CommandOptions::WithTimeout(2).Build());
android::base::SetProperty(MODEM_EFS_DUMP_PROPERTY, "true");
- const std::string diagLogDir = "/data/vendor/radio/diag_logs/logs";
const std::string tcpdumpLogDir = "/data/vendor/tcpdump_logger/logs";
const std::string extendedLogDir = "/data/vendor/radio/extended_logs";
const std::vector <std::string> rilAndNetmgrLogs
@@ -156,47 +184,13 @@
"/data/vendor/radio/power_anomaly_data.txt",
"/data/vendor/radio/diag_logs/diag_trace.txt",
"/data/vendor/radio/diag_logs/diag_trace_old.txt",
- "/data/vendor/radio/diag_logs/logs/diag_poweron_log.qmdl",
"/data/vendor/radio/metrics_data",
"/data/vendor/ssrlog/ssr_log.txt",
"/data/vendor/ssrlog/ssr_log_old.txt",
"/data/vendor/rfs/mpss/modem_efs"
};
- 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);
bool tcpdumpEnabled = android::base::GetBoolProperty(TCPDUMP_PERSIST_PROPERTY, false);
-
- if (smlogEnabled) {
- RunCommandToFd(fd, "SMLOG DUMP", {"smlog_dump", "-d", "-o", modemLogAllDir.c_str()}, CommandOptions::WithTimeout(10).Build());
- } else if (diagLogEnabled) {
- 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");
- }
-
- for (int i = 0; i < 30; i++) {
- if (!android::base::GetBoolProperty(DIAG_MDLOG_STATUS_PROPERTY, false)) {
- ALOGD("diag_mdlog exited\n");
- sleep(1);
- break;
- }
-
- sleep(1);
- }
-
- dumpLogs(fd, diagLogDir, modemLogAllDir, android::base::GetIntProperty(DIAG_MDLOG_NUMBER_BUGREPORT, 100), DIAG_LOG_PREFIX);
-
- if (diagLogStarted) {
- ALOGD("Restarting diag_mdlog...\n");
- android::base::SetProperty(DIAG_MDLOG_PROPERTY, "true");
- }
- }
-
if (tcpdumpEnabled) {
dumpLogs(fd, tcpdumpLogDir, modemLogAllDir, android::base::GetIntProperty(TCPDUMP_NUMBER_BUGREPORT, 5), TCPDUMP_LOG_PREFIX);
}
diff --git a/init.hardware.diag.rc.user b/init.hardware.diag.rc.user
index c24f851..f6ba93c 100644
--- a/init.hardware.diag.rc.user
+++ b/init.hardware.diag.rc.user
@@ -14,6 +14,37 @@
# limitations under the License.
#
-on property:ro.boot.mode=normal
- rm /dev/diag
- rm /dev/diagtest
+on init
+ chmod 666 /dev/diag
+
+on post-fs-data
+ mkdir /data/vendor/radio 0777 radio radio
+ mkdir /data/vendor/radio/diag_logs 0777 system system
+ rm /data/vendor/radio/diag_logs/logs/diag_poweron_log.qmdl
+
+service diag_mdlog_start /vendor/bin/diag_mdlog
+ class late_start
+ user shell
+ group system diag media_rw
+ disabled
+ oneshot
+
+service diag_mdlog_stop /vendor/bin/diag_mdlog -k
+ class late_start
+ user shell
+ group system diag media_rw
+ disabled
+ oneshot
+
+on boot && property:persist.vendor.sys.modem.diag.mdlog=*
+ rm /data/vendor/radio/diag_logs/diag_mdlog_pid
+ setprop vendor.sys.modem.diag.mdlog ${persist.vendor.sys.modem.diag.mdlog}
+
+on property:vendor.sys.modem.diag.mdlog=true
+ start diag_mdlog_start
+
+on property:vendor.sys.modem.diag.mdlog=false
+ start diag_mdlog_stop
+
+on property:persist.vendor.verbose_logging_enabled=*
+ setprop persist.vendor.sys.modem.diag.mdlog ${persist.vendor.verbose_logging_enabled}
diff --git a/init.hardware.diag.rc.userdebug b/init.hardware.diag.rc.userdebug
index 308535e..89ee2bf 100644
--- a/init.hardware.diag.rc.userdebug
+++ b/init.hardware.diag.rc.userdebug
@@ -110,3 +110,6 @@
on property:persist.vendor.usb.usbradio.config=*
start usbd
+
+on property:persist.vendor.verbose_logging_enabled=*
+ setprop persist.vendor.sys.modem.diag.mdlog ${persist.vendor.verbose_logging_enabled}