summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Hong <rurumihong@google.com>2022-03-30 00:40:39 +0800
committerAlex Hong <rurumihong@google.com>2022-04-15 17:00:31 +0800
commitcbc81c7f5bffa7ffdf2f1a43592a1215838bffe7 (patch)
treed160b2c343cf76f3e1fc70dfcae87f4be7fe8c1e
parent101c17fc9593df2dbfa814209b402039e5549fb2 (diff)
downloadgs201-cbc81c7f5bffa7ffdf2f1a43592a1215838bffe7.tar.gz
Upgrade android.hardware.dumpstate from HIDL 1.1 to AIDL 1
lshal is not supported for AIDL, now use dumpsys instead. Update the debug command as below. Old: lshal debug android.hardware.dumpstate@1.1::IDumpstateDevice/default [section] New: dumpsys android.hardware.dumpstate.IDumpstateDevice/default [section] Currently dumpsys does not start the Lazy HAL service, only dumpstate does. Because we need to run dumpsys for debugging, keep the dumpstate HAL running at boot. Do not set it to be a lazy HAL. Test: atest VtsHalDumpstateTargetTest pass adb shell dumpsys -t 30 android.hardware.dumpstate.IDumpstateDevice/default all Bug: 223118410 Change-Id: I7f866a57c3eff8c9783fee89dce205cf9728c459
-rw-r--r--device.mk2
-rw-r--r--device_framework_matrix_product.xml8
-rw-r--r--dumpstate/Android.mk13
-rw-r--r--dumpstate/Dumpstate.cpp (renamed from dumpstate/DumpstateDevice.cpp)194
-rw-r--r--dumpstate/Dumpstate.h (renamed from dumpstate/DumpstateDevice.h)55
-rw-r--r--dumpstate/android.hardware.dumpstate@1.1-service.gs201.rc5
-rw-r--r--dumpstate/service.cpp38
-rw-r--r--manifest-gralloc3.xml4
-rw-r--r--manifest.xml4
9 files changed, 138 insertions, 185 deletions
diff --git a/device.mk b/device.mk
index 975db19..de31d00 100644
--- a/device.mk
+++ b/device.mk
@@ -422,7 +422,7 @@ PRODUCT_PACKAGES += \
# dumpstate HAL
PRODUCT_PACKAGES += \
- android.hardware.dumpstate@1.1-service.gs201
+ android.hardware.dumpstate-service.gs201
# AoC support
include device/google/gs201/aoc/device.mk
diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml
index bce7e68..c649010 100644
--- a/device_framework_matrix_product.xml
+++ b/device_framework_matrix_product.xml
@@ -21,14 +21,6 @@
<instance>default</instance>
</interface>
</hal>
- <hal format="hidl">
- <name>android.hardware.dumpstate</name>
- <version>1.1</version>
- <interface>
- <name>IDumpstateDevice</name>
- <instance>default</instance>
- </interface>
- </hal>
<hal format="aidl">
<name>android.hardware.gnss</name>
<interface>
diff --git a/dumpstate/Android.mk b/dumpstate/Android.mk
index 05586df..76202ce 100644
--- a/dumpstate/Android.mk
+++ b/dumpstate/Android.mk
@@ -16,7 +16,7 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.dumpstate@1.1-service.gs201
+LOCAL_MODULE := android.hardware.dumpstate-service.gs201
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS := notice
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
@@ -24,20 +24,17 @@ LOCAL_INIT_RC := android.hardware.dumpstate@1.1-service.gs201.rc
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
- DumpstateDevice.cpp \
+ Dumpstate.cpp \
service.cpp
LOCAL_SHARED_LIBRARIES := \
- android.hardware.dumpstate@1.0 \
- android.hardware.dumpstate@1.1 \
libbase \
+ libbinder_ndk \
libcutils \
libdumpstateutil \
- libhidlbase \
- libhidltransport \
- libhwbinder \
liblog \
- libutils
+ libutils \
+ android.hardware.dumpstate-V1-ndk
LOCAL_CFLAGS := -Werror -Wall
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/Dumpstate.cpp
index 095559d..3556da5 100644
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/Dumpstate.cpp
@@ -22,11 +22,10 @@
#include <android-base/stringprintf.h>
#include <android-base/properties.h>
#include <android-base/unique_fd.h>
-#include <hidl/HidlBinderSupport.h>
#include <log/log.h>
#include <sys/stat.h>
-#include "DumpstateDevice.h"
+#include "Dumpstate.h"
#include "DumpstateUtil.h"
@@ -56,11 +55,10 @@ using android::os::dumpstate::DumpFileToFd;
using android::os::dumpstate::PropertiesHelper;
using android::os::dumpstate::RunCommandToFd;
+namespace aidl {
namespace android {
namespace hardware {
namespace dumpstate {
-namespace V1_1 {
-namespace implementation {
#define GPS_LOG_PREFIX "gl-"
#define GPS_MCU_LOG_PREFIX "esw-"
@@ -74,7 +72,7 @@ typedef std::chrono::time_point<std::chrono::steady_clock> timepoint_t;
const char kVerboseLoggingProperty[] = "persist.vendor.verbose_logging_enabled";
-void DumpstateDevice::dumpLogs(int fd, std::string srcDir, std::string destDir, int maxFileNum,
+void Dumpstate::dumpLogs(int fd, std::string srcDir, std::string destDir, int maxFileNum,
const char *logPrefix) {
struct dirent **dirent_list = NULL;
int num_entries = scandir(srcDir.c_str(),
@@ -120,11 +118,11 @@ void DumpstateDevice::dumpLogs(int fd, std::string srcDir, std::string destDir,
free(dirent_list);
}
-void DumpstateDevice::dumpRilLogs(int fd, std::string destDir) {
+void Dumpstate::dumpRilLogs(int fd, std::string destDir) {
std::string rilLogDir =
- android::base::GetProperty(RIL_LOG_DIRECTORY_PROPERTY, RIL_LOG_DIRECTORY);
+ ::android::base::GetProperty(RIL_LOG_DIRECTORY_PROPERTY, RIL_LOG_DIRECTORY);
- int maxFileNum = android::base::GetIntProperty(RIL_LOG_NUMBER_PROPERTY, 50);
+ int maxFileNum = ::android::base::GetIntProperty(RIL_LOG_NUMBER_PROPERTY, 50);
const std::string currentLogDir = rilLogDir + "/cur";
const std::string previousLogDir = rilLogDir + "/prev";
@@ -191,11 +189,11 @@ void dumpModemEFS(std::string destDir) {
}
}
-void DumpstateDevice::dumpGpsLogs(int fd, const std::string &destDir) {
+void Dumpstate::dumpGpsLogs(int fd, const std::string &destDir) {
const std::string gpsLogDir = GPS_LOG_DIRECTORY;
const std::string gpsTmpLogDir = gpsLogDir + "/.tmp";
const std::string gpsDestDir = destDir + "/gps";
- int maxFileNum = android::base::GetIntProperty(GPS_LOG_NUMBER_PROPERTY, 20);
+ int maxFileNum = ::android::base::GetIntProperty(GPS_LOG_NUMBER_PROPERTY, 20);
RunCommandToFd(fd, "MKDIR GPS LOG", {"/vendor/bin/mkdir", "-p", gpsDestDir.c_str()},
CommandOptions::WithTimeout(2).Build());
@@ -205,7 +203,7 @@ void DumpstateDevice::dumpGpsLogs(int fd, const std::string &destDir) {
dumpLogs(fd, gpsLogDir, gpsDestDir, maxFileNum, GPS_LOG_PREFIX);
}
-void DumpstateDevice::dumpCameraLogs(int fd, const std::string &destDir) {
+void Dumpstate::dumpCameraLogs(int fd, const std::string &destDir) {
static const std::string kCameraLogDir = "/data/vendor/camera/profiler";
const std::string cameraDestDir = destDir + "/camera";
RunCommandToFd(fd, "MKDIR CAMERA LOG", {"/vendor/bin/mkdir", "-p", cameraDestDir.c_str()},
@@ -219,7 +217,7 @@ void DumpstateDevice::dumpCameraLogs(int fd, const std::string &destDir) {
}
timepoint_t startSection(int fd, const std::string &sectionName) {
- android::base::WriteStringToFd(
+ ::android::base::WriteStringToFd(
"\n"
"------ Section start: " + sectionName + " ------\n"
"\n", fd);
@@ -231,7 +229,7 @@ void endSection(int fd, const std::string &sectionName, timepoint_t startTime) {
auto elapsedMsec = std::chrono::duration_cast<std::chrono::milliseconds>
(endTime - startTime).count();
- android::base::WriteStringToFd(
+ ::android::base::WriteStringToFd(
"\n"
"------ Section end: " + sectionName + " ------\n"
"Elapsed msec: " + std::to_string(elapsedMsec) + "\n"
@@ -243,13 +241,13 @@ void endSection(int fd, const std::string &sectionName, timepoint_t startTime) {
// related to each other - for instance, for a Foo peripheral - please add them
// to a new dump function and include it in this table so it can be accessed from the
// command line, e.g.:
-// lshal debug android.hardware.dumpstate@1.0::IDumpstateDevice/default foo
+// dumpsys android.hardware.dumpstate.IDumpstateDevice/default foo
//
// However, if your addition generates attachments and/or binary data for the
// bugreport (i.e. if it requires two file descriptors to execute), it must not be
// added to this table and should instead be added to dumpstateBoard() below.
-DumpstateDevice::DumpstateDevice()
+Dumpstate::Dumpstate()
: mTextSections{
{ "wlan", [this](int fd) { dumpWlanSection(fd); } },
{ "soc", [this](int fd) { dumpSocSection(fd); } },
@@ -270,9 +268,9 @@ DumpstateDevice::DumpstateDevice()
} {
}
-// Dump data requested by an argument to the "debug" HAL interface, or help info
+// Dump data requested by an argument to the "dump" interface, or help info
// if the specified section is not supported.
-void DumpstateDevice::dumpTextSection(int fd, const std::string &sectionName) {
+void Dumpstate::dumpTextSection(int fd, const std::string &sectionName) {
bool dumpAll = (sectionName == kAllSections);
for (const auto &section : mTextSections) {
@@ -292,17 +290,17 @@ void DumpstateDevice::dumpTextSection(int fd, const std::string &sectionName) {
}
// An unsupported section was requested on the command line
- android::base::WriteStringToFd("Unrecognized text section: " + sectionName + "\n", fd);
- android::base::WriteStringToFd("Try \"" + kAllSections + "\" or one of the following:", fd);
+ ::android::base::WriteStringToFd("Unrecognized text section: " + sectionName + "\n", fd);
+ ::android::base::WriteStringToFd("Try \"" + kAllSections + "\" or one of the following:", fd);
for (const auto &section : mTextSections) {
- android::base::WriteStringToFd(" " + section.first, fd);
+ ::android::base::WriteStringToFd(" " + section.first, fd);
}
- android::base::WriteStringToFd("\nNote: sections with attachments (e.g. modem) are"
+ ::android::base::WriteStringToFd("\nNote: sections with attachments (e.g. modem) are"
"not avalable from the command line.\n", fd);
}
// Dump items related to wlan
-void DumpstateDevice::dumpWlanSection(int fd) {
+void Dumpstate::dumpWlanSection(int fd) {
RunCommandToFd(fd, "WLAN Debug Dump", {"/vendor/bin/sh", "-c",
"cat /sys/wifi/dump_start"});
@@ -311,7 +309,7 @@ void DumpstateDevice::dumpWlanSection(int fd) {
}
// Dump items related to power and battery
-void DumpstateDevice::dumpPowerSection(int fd) {
+void Dumpstate::dumpPowerSection(int fd) {
struct stat buffer;
RunCommandToFd(fd, "Power Stats Times", {"/vendor/bin/sh", "-c",
@@ -490,7 +488,7 @@ void DumpstateDevice::dumpPowerSection(int fd) {
}
// Dump items related to thermal
-void DumpstateDevice::dumpThermalSection(int fd) {
+void Dumpstate::dumpThermalSection(int fd) {
RunCommandToFd(fd, "Temperatures", {"/vendor/bin/sh", "-c",
"for f in /sys/class/thermal/thermal* ; do "
"type=`cat $f/type` ; temp=`cat $f/temp` ; echo \"$type: $temp\" ; "
@@ -522,7 +520,7 @@ void DumpstateDevice::dumpThermalSection(int fd) {
}
// Dump items related to touch
-void DumpstateDevice::dumpTouchSection(int fd) {
+void Dumpstate::dumpTouchSection(int fd) {
const char stm_cmd_path[4][50] = {"/sys/class/spi_master/spi11/spi11.0",
"/proc/fts/driver_test",
"/sys/class/spi_master/spi6/spi6.0",
@@ -820,7 +818,7 @@ void DumpstateDevice::dumpTouchSection(int fd) {
}
// Dump items related to SoC
-void DumpstateDevice::dumpSocSection(int fd) {
+void Dumpstate::dumpSocSection(int fd) {
DumpFileToFd(fd, "AP HW TUNE", "/sys/devices/system/chip-id/ap_hw_tune_str");
DumpFileToFd(fd, "EVT VERSION", "/sys/devices/system/chip-id/evt_ver");
DumpFileToFd(fd, "LOT ID", "/sys/devices/system/chip-id/lot_id");
@@ -830,7 +828,7 @@ void DumpstateDevice::dumpSocSection(int fd) {
}
// Dump items related to CPUs
-void DumpstateDevice::dumpCpuSection(int fd) {
+void Dumpstate::dumpCpuSection(int fd) {
DumpFileToFd(fd, "CPU present", "/sys/devices/system/cpu/present");
DumpFileToFd(fd, "CPU online", "/sys/devices/system/cpu/online");
RunCommandToFd(fd, "CPU time-in-state", {"/vendor/bin/sh", "-c",
@@ -850,7 +848,7 @@ void DumpstateDevice::dumpCpuSection(int fd) {
}
// Dump items related to Devfreq & BTS
-void DumpstateDevice::dumpDevfreqSection(int fd) {
+void Dumpstate::dumpDevfreqSection(int fd) {
DumpFileToFd(fd, "MIF DVFS",
"/sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/time_in_state");
DumpFileToFd(fd, "INT DVFS",
@@ -871,7 +869,7 @@ void DumpstateDevice::dumpDevfreqSection(int fd) {
}
// Dump items related to memory
-void DumpstateDevice::dumpMemorySection(int fd) {
+void Dumpstate::dumpMemorySection(int fd) {
RunCommandToFd(fd, "ION HEAPS", {"/vendor/bin/sh", "-c",
"for d in $(ls -d /d/ion/*); do "
"if [ -f $d ]; then "
@@ -945,13 +943,13 @@ static void DumpUFS(int fd) {
}
// Dump items related to storage
-void DumpstateDevice::dumpStorageSection(int fd) {
+void Dumpstate::dumpStorageSection(int fd) {
DumpF2FS(fd);
DumpUFS(fd);
}
// Dump items related to display
-void DumpstateDevice::dumpDisplaySection(int fd) {
+void Dumpstate::dumpDisplaySection(int fd) {
DumpFileToFd(fd, "CRTC-0 underrun count", "/sys/kernel/debug/dri/0/crtc-0/underrun_cnt");
DumpFileToFd(fd, "CRTC-0 crc count", "/sys/kernel/debug/dri/0/crtc-0/crc_cnt");
DumpFileToFd(fd, "CRTC-0 ecc count", "/sys/kernel/debug/dri/0/crtc-0/ecc_cnt");
@@ -971,7 +969,7 @@ void DumpstateDevice::dumpDisplaySection(int fd) {
}
// Dump items related to AoC
-void DumpstateDevice::dumpAoCSection(int fd) {
+void Dumpstate::dumpAoCSection(int fd) {
DumpFileToFd(fd, "AoC Service Status", "/sys/devices/platform/19000000.aoc/services");
DumpFileToFd(fd, "AoC Restarts", "/sys/devices/platform/19000000.aoc/restart_count");
DumpFileToFd(fd, "AoC Coredumps", "/sys/devices/platform/19000000.aoc/coredump_count");
@@ -1001,14 +999,14 @@ void DumpstateDevice::dumpAoCSection(int fd) {
}
// Dump items related to sensors usf.
-void DumpstateDevice::dumpSensorsUSFSection(int fd) {
+void Dumpstate::dumpSensorsUSFSection(int fd) {
CommandOptions options = CommandOptions::WithTimeout(2).Build();
RunCommandToFd(fd, "USF statistics",
{"/vendor/bin/sh", "-c", "usf_stats get --all"},
options);
if (!PropertiesHelper::IsUserBuild()) {
// Not a user build, if this is also not a production device dump the USF registry.
- std::string hwRev = android::base::GetProperty(HW_REVISION, "");
+ std::string hwRev = ::android::base::GetProperty(HW_REVISION, "");
if (hwRev.find("PROTO") != std::string::npos ||
hwRev.find("EVT") != std::string::npos ||
hwRev.find("DVT") != std::string::npos) {
@@ -1021,7 +1019,7 @@ void DumpstateDevice::dumpSensorsUSFSection(int fd) {
// Gzip binary data and dump to fd in base64 format. Cmd to decode is also attached.
void dumpGzippedFileInBase64ToFd(int fd, const char* title, const char* file_path) {
- auto cmd = android::base::StringPrintf("echo 'base64 -d <<EOF | gunzip' ; "
+ auto cmd = ::android::base::StringPrintf("echo 'base64 -d <<EOF | gunzip' ; "
"/vendor/bin/gzip < \"%s\" | /vendor/bin/base64 ; "
"echo 'EOF'", file_path);
RunCommandToFd(fd, title,
@@ -1036,15 +1034,15 @@ struct abl_log_header {
} __attribute__((packed));
// Dump items related to ramdump.
-void DumpstateDevice::dumpRamdumpSection(int fd) {
+void Dumpstate::dumpRamdumpSection(int fd) {
std::string abl_log;
- if (android::base::ReadFileToString("/mnt/vendor/ramdump/abl.log", &abl_log)) {
+ if (::android::base::ReadFileToString("/mnt/vendor/ramdump/abl.log", &abl_log)) {
const struct abl_log_header *header = (const struct abl_log_header*) abl_log.c_str();
- android::base::WriteStringToFd(android::base::StringPrintf(
+ ::android::base::WriteStringToFd(::android::base::StringPrintf(
"------ Ramdump misc file: abl.log (i:0x%" PRIx64 " size:0x%" PRIx64 ") ------\n%s\n",
header->i, header->size, std::string(header->buf, header->i).c_str()), fd);
} else {
- android::base::WriteStringToFd("*** Ramdump misc file: abl.log: File not found\n", fd);
+ ::android::base::WriteStringToFd("*** Ramdump misc file: abl.log: File not found\n", fd);
}
dumpGzippedFileInBase64ToFd(
fd, "Ramdump misc file: acpm.lst (gzipped in base64)", "/mnt/vendor/ramdump/acpm.lst");
@@ -1053,23 +1051,23 @@ void DumpstateDevice::dumpRamdumpSection(int fd) {
}
// Dump items that don't fit well into any other section
-void DumpstateDevice::dumpMiscSection(int fd) {
+void Dumpstate::dumpMiscSection(int fd) {
RunCommandToFd(fd, "VENDOR PROPERTIES", {"/vendor/bin/getprop"});
DumpFileToFd(fd, "VENDOR PROC DUMP", "/proc/vendor_sched/dump_task");
}
// Dump items related to GSC
-void DumpstateDevice::dumpGscSection(int fd) {
+void Dumpstate::dumpGscSection(int fd) {
RunCommandToFd(fd, "Citadel VERSION", {"vendor/bin/hw/citadel_updater", "-lv"});
RunCommandToFd(fd, "Citadel STATS", {"vendor/bin/hw/citadel_updater", "--stats"});
RunCommandToFd(fd, "GSC DEBUG DUMP", {"vendor/bin/hw/citadel_updater", "-D"});
}
-void DumpstateDevice::dumpTrustySection(int fd) {
+void Dumpstate::dumpTrustySection(int fd) {
DumpFileToFd(fd, "Trusty TEE0 Logs", "/dev/trusty-log0");
}
-void DumpstateDevice::dumpModem(int fd, int fdModem)
+void Dumpstate::dumpModem(int fd, int fdModem)
{
std::string modemLogDir = MODEM_LOG_DIRECTORY;
std::string extendedLogDir = MODEM_EXTENDED_LOG_DIRECTORY;
@@ -1092,29 +1090,29 @@ void DumpstateDevice::dumpModem(int fd, int fdModem)
RunCommandToFd(fd, "MKDIR MODEM LOG", {"/vendor/bin/mkdir", "-p", modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
if (!PropertiesHelper::IsUserBuild()) {
- bool modemLogEnabled = android::base::GetBoolProperty(MODEM_LOGGING_PERSIST_PROPERTY, false);
- bool gpsLogEnabled = android::base::GetBoolProperty(GPS_LOGGING_STATUS_PROPERTY, false);
- bool tcpdumpEnabled = android::base::GetBoolProperty(TCPDUMP_PERSIST_PROPERTY, false);
- bool cameraLogsEnabled = android::base::GetBoolProperty(
+ bool modemLogEnabled = ::android::base::GetBoolProperty(MODEM_LOGGING_PERSIST_PROPERTY, false);
+ bool gpsLogEnabled = ::android::base::GetBoolProperty(GPS_LOGGING_STATUS_PROPERTY, false);
+ bool tcpdumpEnabled = ::android::base::GetBoolProperty(TCPDUMP_PERSIST_PROPERTY, false);
+ bool cameraLogsEnabled = ::android::base::GetBoolProperty(
"vendor.camera.debug.camera_performance_analyzer.attach_to_bugreport", true);
- int maxFileNum = android::base::GetIntProperty(MODEM_LOGGING_NUMBER_BUGREPORT_PROPERTY, 100);
+ int maxFileNum = ::android::base::GetIntProperty(MODEM_LOGGING_NUMBER_BUGREPORT_PROPERTY, 100);
if (tcpdumpEnabled) {
- dumpLogs(fd, tcpdumpLogDir, modemLogAllDir, android::base::GetIntProperty(TCPDUMP_NUMBER_BUGREPORT, 5), TCPDUMP_LOG_PREFIX);
+ dumpLogs(fd, tcpdumpLogDir, modemLogAllDir, ::android::base::GetIntProperty(TCPDUMP_NUMBER_BUGREPORT, 5), TCPDUMP_LOG_PREFIX);
}
if (modemLogEnabled) {
- bool modemLogStarted = android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false);
+ bool modemLogStarted = ::android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false);
if (modemLogStarted) {
- android::base::SetProperty(MODEM_LOGGING_PROPERTY, "false");
+ ::android::base::SetProperty(MODEM_LOGGING_PROPERTY, "false");
ALOGD("Stopping modem logging...\n");
} else {
ALOGD("modem logging is not running\n");
}
for (int i = 0; i < 30; i++) {
- if (!android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false)) {
+ if (!::android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false)) {
ALOGD("modem logging stopped\n");
sleep(1);
break;
@@ -1126,7 +1124,7 @@ void DumpstateDevice::dumpModem(int fd, int fdModem)
if (modemLogStarted) {
ALOGD("Restarting modem logging...\n");
- android::base::SetProperty(MODEM_LOGGING_PROPERTY, "true");
+ ::android::base::SetProperty(MODEM_LOGGING_PROPERTY, "true");
}
}
@@ -1150,7 +1148,7 @@ void DumpstateDevice::dumpModem(int fd, int fdModem)
RunCommandToFd(fd, "CHG PERM", {"/vendor/bin/chmod", "a+w", modemLogCombined.c_str()}, CommandOptions::WithTimeout(2).Build());
std::vector<uint8_t> buffer(65536);
- android::base::unique_fd fdLog(TEMP_FAILURE_RETRY(open(modemLogCombined.c_str(), O_RDONLY | O_CLOEXEC | O_NONBLOCK)));
+ ::android::base::unique_fd fdLog(TEMP_FAILURE_RETRY(open(modemLogCombined.c_str(), O_RDONLY | O_CLOEXEC | O_NONBLOCK)));
if (fdLog >= 0) {
while (1) {
@@ -1178,89 +1176,79 @@ void DumpstateDevice::dumpModem(int fd, int fdModem)
endSection(fd, sectionName, startTime);
}
-// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
-Return<void> DumpstateDevice::dumpstateBoard(const hidl_handle &handle) {
-// Ignore return value, just return an empty status.
- dumpstateBoard_1_1(handle, DumpstateMode::DEFAULT, 30 * 1000 /* timeoutMillis */);
- return Void();
-}
-
-// Methods from ::android::hardware::dumpstate::V1_1::IDumpstateDevice follow.
-Return<DumpstateStatus> DumpstateDevice::dumpstateBoard_1_1(const hidl_handle& handle,
- const DumpstateMode mode,
- const uint64_t timeoutMillis) {
+ndk::ScopedAStatus Dumpstate::dumpstateBoard(const std::vector<::ndk::ScopedFileDescriptor>& in_fds,
+ IDumpstateDevice::DumpstateMode in_mode,
+ int64_t in_timeoutMillis) {
// Unused arguments.
- (void) timeoutMillis;
+ (void) in_timeoutMillis;
- if (handle == nullptr || handle->numFds < 1) {
+ if (in_fds.size() < 1) {
ALOGE("no FDs\n");
- return DumpstateStatus::ILLEGAL_ARGUMENT;
+ return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
+ "No file descriptor");
}
- int fd = handle->data[0];
+ int fd = in_fds[0].get();
if (fd < 0) {
- ALOGE("invalid FD: %d\n", handle->data[0]);
- return DumpstateStatus::ILLEGAL_ARGUMENT;
+ ALOGE("invalid FD: %d\n", fd);
+ return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
+ "Invalid file descriptor");
}
- if (mode == DumpstateMode::WEAR) {
+ if (in_mode == IDumpstateDevice::DumpstateMode::WEAR) {
// We aren't a Wear device.
- ALOGE("Unsupported mode: %d\n", mode);
- return DumpstateStatus::UNSUPPORTED_MODE;
- } else if (mode < DumpstateMode::FULL || mode > DumpstateMode::PROTO) {
- ALOGE("Invalid mode: %d\n", mode);
- return DumpstateStatus::ILLEGAL_ARGUMENT;
+ ALOGE("Unsupported mode: %d\n", in_mode);
+ return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(ERROR_UNSUPPORTED_MODE,
+ "Unsupported mode");
+ } else if (in_mode < IDumpstateDevice::DumpstateMode::FULL || in_mode > IDumpstateDevice::DumpstateMode::PROTO) {
+ ALOGE("Invalid mode: %d\n", in_mode);
+ return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
+ "Invalid mode");
}
dumpTextSection(fd, kAllSections);
- if (handle->numFds < 2) {
- ALOGE("no FD for modem\n");
+ if (in_fds.size() < 1) {
+ ALOGE("no FD for modem\n");
} else {
- int fdModem = handle->data[1];
- dumpModem(fd, fdModem);
+ int fdModem = in_fds[1].get();
+ dumpModem(fd, fdModem);
}
- return DumpstateStatus::OK;
+ return ndk::ScopedAStatus::ok();
}
-Return<void> DumpstateDevice::setVerboseLoggingEnabled(const bool enable) {
- ::android::base::SetProperty(kVerboseLoggingProperty, enable ? "true" : "false");
- return Void();
+ndk::ScopedAStatus Dumpstate::setVerboseLoggingEnabled(bool in_enable) {
+ ::android::base::SetProperty(kVerboseLoggingProperty, in_enable ? "true" : "false");
+ return ndk::ScopedAStatus::ok();
}
-Return<bool> DumpstateDevice::getVerboseLoggingEnabled() {
- return ::android::base::GetBoolProperty(kVerboseLoggingProperty, false);
+ndk::ScopedAStatus Dumpstate::getVerboseLoggingEnabled(bool* _aidl_return) {
+ *_aidl_return = ::android::base::GetBoolProperty(kVerboseLoggingProperty, false);
+ return ndk::ScopedAStatus::ok();
}
-// Since HALs that support the debug() interface are automatically invoked during
+// Since AIDLs that support the dump() interface are automatically invoked during
// bugreport generation and we don't want to generate a second copy of the same
// data that will go into dumpstate_board.txt, this function will only do
// something if it is called with an option, e.g.
-// lshal debug android.hardware.dumpstate@1.0::IDumpstateDevice/default all
+// dumpsys android.hardware.dumpstate.IDumpstateDevice/default all
//
// Also, note that sections which generate attachments and/or binary data when
-// included in a bugreport are not available through the debug() interface.
-Return<void> DumpstateDevice::debug(const hidl_handle &handle, const hidl_vec<hidl_string> &args) {
- // Exit when dump is completed since this is a lazy HAL.
- addPostCommandTask([]() {
- exit(0);
- });
-
- if (handle == nullptr || handle->numFds < 1 || args.size() != 1) {
- return Void();
+// included in a bugreport are not available through the dump() interface.
+binder_status_t Dumpstate::dump(int fd, const char** args, uint32_t numArgs) {
+
+ if (numArgs != 1) {
+ return STATUS_OK;
}
- int fd = handle->data[0];
dumpTextSection(fd, static_cast<std::string>(args[0]));
fsync(fd);
- return Void();
+ return STATUS_OK;
}
-
-} // namespace implementation
-} // namespace V1_1
} // namespace dumpstate
} // namespace hardware
} // namespace android
+} // namespace aidl
diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/Dumpstate.h
index eca59b2..b60ade3 100644
--- a/dumpstate/DumpstateDevice.h
+++ b/dumpstate/Dumpstate.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,44 +13,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_DUMPSTATE_V1_1_DUMPSTATEDEVICE_H
-#define ANDROID_HARDWARE_DUMPSTATE_V1_1_DUMPSTATEDEVICE_H
-#include <android/hardware/dumpstate/1.1/IDumpstateDevice.h>
-#include <hidl/MQDescriptor.h>
-#include <hidl/Status.h>
-#include <string>
+#pragma once
+#include <aidl/android/hardware/dumpstate/BnDumpstateDevice.h>
+#include <aidl/android/hardware/dumpstate/IDumpstateDevice.h>
+#include <android/binder_status.h>
+
+namespace aidl {
namespace android {
namespace hardware {
namespace dumpstate {
-namespace V1_1 {
-namespace implementation {
-
-using ::android::hardware::dumpstate::V1_1::DumpstateMode;
-using ::android::hardware::dumpstate::V1_1::DumpstateStatus;
-using ::android::hardware::dumpstate::V1_1::IDumpstateDevice;
-using ::android::hardware::hidl_handle;
-using ::android::hardware::hidl_string;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::Return;
-
-struct DumpstateDevice : public IDumpstateDevice {
+
+class Dumpstate : public BnDumpstateDevice {
public:
- DumpstateDevice();
+ Dumpstate();
+
+ ::ndk::ScopedAStatus dumpstateBoard(const std::vector<::ndk::ScopedFileDescriptor>& in_fds,
+ IDumpstateDevice::DumpstateMode in_mode,
+ int64_t in_timeoutMillis) override;
- // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
- Return<void> dumpstateBoard(const hidl_handle& h) override;
+ ::ndk::ScopedAStatus getVerboseLoggingEnabled(bool* _aidl_return) override;
- // Methods from ::android::hardware::dumpstate::V1_1::IDumpstateDevice follow.
- Return<DumpstateStatus> dumpstateBoard_1_1(const hidl_handle& h,
- const DumpstateMode mode,
- const uint64_t timeoutMillis) override;
- Return<void> setVerboseLoggingEnabled(const bool enable) override;
- Return<bool> getVerboseLoggingEnabled() override;
+ ::ndk::ScopedAStatus setVerboseLoggingEnabled(bool in_enable) override;
- // Methods from ::android::hidl::base::V1_0::IBase follow.
- Return<void> debug(const hidl_handle &fd, const hidl_vec<hidl_string> &args) override;
+ binder_status_t dump(int fd, const char** args, uint32_t numArgs) override;
private:
const std::string kAllSections = "all";
@@ -86,12 +73,12 @@ struct DumpstateDevice : public IDumpstateDevice {
void dumpRilLogs(int fd, std::string destDir);
void dumpGpsLogs(int fd, const std::string &destDir);
void dumpCameraLogs(int fd, const std::string &destDir);
+
+ //bool getVerboseLoggingEnabledImpl();
+ //::ndk::ScopedAStatus dumpstateBoardImpl(const int fd, const bool full);
};
-} // namespace implementation
-} // namespace V1_0
} // namespace dumpstate
} // namespace hardware
} // namespace android
-
-#endif // ANDROID_HARDWARE_DUMPSTATE_V1_1_DUMPSTATEDEVICE_H
+} // namespace aidl
diff --git a/dumpstate/android.hardware.dumpstate@1.1-service.gs201.rc b/dumpstate/android.hardware.dumpstate@1.1-service.gs201.rc
index b18b755..65456d1 100644
--- a/dumpstate/android.hardware.dumpstate@1.1-service.gs201.rc
+++ b/dumpstate/android.hardware.dumpstate@1.1-service.gs201.rc
@@ -1,6 +1,5 @@
-service vendor.dumpstate-1-1 /vendor/bin/hw/android.hardware.dumpstate@1.1-service.gs201
+service vendor.dumpstate-default /vendor/bin/hw/android.hardware.dumpstate-service.gs201
class hal
user system
group system
- interface android.hardware.dumpstate@1.0::IDumpstateDevice default
- interface android.hardware.dumpstate@1.1::IDumpstateDevice default
+ interface aidl android.hardware.dumpstate.IDumpstateDevice/default
diff --git a/dumpstate/service.cpp b/dumpstate/service.cpp
index 7633c02..39d886c 100644
--- a/dumpstate/service.cpp
+++ b/dumpstate/service.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,31 +13,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#define LOG_TAG "android.hardware.dumpstate@1.0-service.gs201"
+#define LOG_TAG "android.hardware.dumpstate-service.gs201"
-#include <hidl/HidlSupport.h>
-#include <hidl/HidlTransportSupport.h>
+#include "Dumpstate.h"
-#include "DumpstateDevice.h"
+#include <android-base/logging.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
-using ::android::hardware::configureRpcThreadpool;
-using ::android::hardware::dumpstate::V1_1::IDumpstateDevice;
-using ::android::hardware::dumpstate::V1_1::implementation::DumpstateDevice;
-using ::android::hardware::joinRpcThreadpool;
-using ::android::sp;
+using aidl::android::hardware::dumpstate::Dumpstate;
+int main() {
+ ABinderProcess_setThreadPoolMaxThreadCount(0);
+ std::shared_ptr<Dumpstate> dumpstate = ndk::SharedRefBase::make<Dumpstate>();
-int main(int /* argc */, char* /* argv */ []) {
- sp<IDumpstateDevice> dumpstate = new DumpstateDevice;
- configureRpcThreadpool(1, true);
+ const std::string instance = std::string() + Dumpstate::descriptor + "/default";
+ binder_status_t status =
+ AServiceManager_registerLazyService(dumpstate->asBinder().get(), instance.c_str());
+ CHECK_EQ(status, STATUS_OK);
- android::status_t status = dumpstate->registerAsService();
-
- if (status != android::OK)
- {
- ALOGE("Could not register DumpstateDevice service (%d).", status);
- return -1;
- }
-
- joinRpcThreadpool();
+ ABinderProcess_joinThreadPool();
+ return EXIT_FAILURE; // Unreachable
}
diff --git a/manifest-gralloc3.xml b/manifest-gralloc3.xml
index 97afb6b..68cac54 100644
--- a/manifest-gralloc3.xml
+++ b/manifest-gralloc3.xml
@@ -79,10 +79,8 @@
<fqname>@1.3::ICryptoFactory/widevine</fqname>
<fqname>@1.3::IDrmFactory/widevine</fqname>
</hal>
- <hal format = "hidl">
+ <hal format="aidl">
<name>android.hardware.dumpstate</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
<interface>
<name>IDumpstateDevice</name>
<instance>default</instance>
diff --git a/manifest.xml b/manifest.xml
index c1efc47..6c8f0c6 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -44,10 +44,8 @@
<instance>default</instance>
</interface>
</hal>
- <hal format = "hidl">
+ <hal format="aidl">
<name>android.hardware.dumpstate</name>
- <transport>hwbinder</transport>
- <version>1.1</version>
<interface>
<name>IDumpstateDevice</name>
<instance>default</instance>