From f669a1ea526da4a6d674019431bbeed67ced50d2 Mon Sep 17 00:00:00 2001 From: Tai Kuo Date: Mon, 21 Oct 2024 11:44:38 +0800 Subject: [PATCH] cs40l26: add DBC bin info and reduce duplicates Bug: 356823441 Test: dumpsys android.hardware.vibrator.IVibrator/default Flag: EXEMPT bugfix Change-Id: Id3d9fac99b204de581269818e69722932e4911fc (cherry picked from commit 6e4e8d2052e352a56eeab2e452addaf484d79d9f) --- vibrator/cs40l26/Vibrator.cpp | 83 ++++++++++++++--------------------- 1 file changed, 34 insertions(+), 49 deletions(-) diff --git a/vibrator/cs40l26/Vibrator.cpp b/vibrator/cs40l26/Vibrator.cpp index 89bd146..6c3c84b 100644 --- a/vibrator/cs40l26/Vibrator.cpp +++ b/vibrator/cs40l26/Vibrator.cpp @@ -1554,70 +1554,55 @@ binder_status_t Vibrator::dump(int fd, const char **args, uint32_t numArgs) { dprintf(fd, "\n"); dprintf(fd, "Versions:\n"); + const std::vector> moduleFolderNames = { + {"cs40l26_core", "Haptics"}, {"cl_dsp_core", "DSP"}}; + const std::string firmwareFolder = "/vendor/firmware/"; + const std::string waveformName = "cs40l26.bin"; + const std::array firmwareFileNames = {"cs40l26.wmfw", "cs40l26-calib.wmfw"}; + const std::array tuningFileNames = {"cs40l26-svc.bin", "cs40l26-calib.bin", + "cs40l26-dvl.bin", "cs40l26-dbc.bin"}; std::ifstream verFile; const auto verBinFileMode = std::ifstream::in | std::ifstream::binary; std::string ver; - verFile.open("/sys/module/cs40l26_core/version"); - if (verFile.is_open()) { - getline(verFile, ver); - dprintf(fd, " Haptics Driver: %s\n", ver.c_str()); - verFile.close(); + for (const auto &[folder, logTag] : moduleFolderNames) { + verFile.open("/sys/module/" + folder + "/version"); + if (verFile.is_open()) { + getline(verFile, ver); + dprintf(fd, " %s Driver: %s\n", logTag.c_str(), ver.c_str()); + verFile.close(); + } } - verFile.open("/sys/module/cl_dsp_core/version"); - if (verFile.is_open()) { - getline(verFile, ver); - dprintf(fd, " DSP Driver: %s\n", ver.c_str()); - verFile.close(); + for (auto &name : firmwareFileNames) { + verFile.open(firmwareFolder + name, verBinFileMode); + if (verFile.is_open()) { + verFile.seekg(113); + dprintf(fd, " %s: %d.%d.%d\n", name.c_str(), verFile.get(), verFile.get(), + verFile.get()); + verFile.close(); + } } - verFile.open("/vendor/firmware/cs40l26.wmfw", verBinFileMode); - if (verFile.is_open()) { - verFile.seekg(113); - dprintf(fd, " cs40l26.wmfw: %d.%d.%d\n", verFile.get(), verFile.get(), verFile.get()); - verFile.close(); - } - verFile.open("/vendor/firmware/cs40l26-calib.wmfw", verBinFileMode); - if (verFile.is_open()) { - verFile.seekg(113); - dprintf(fd, " cs40l26-calib.wmfw: %d.%d.%d\n", verFile.get(), verFile.get(), - verFile.get()); - verFile.close(); - } - verFile.open("/vendor/firmware/cs40l26.bin", verBinFileMode); + verFile.open(firmwareFolder + waveformName, verBinFileMode); if (verFile.is_open()) { while (getline(verFile, ver)) { auto pos = ver.find("Date: "); if (pos != std::string::npos) { ver = ver.substr(pos + 6, pos + 15); - dprintf(fd, " cs40l26.bin: %s\n", ver.c_str()); + dprintf(fd, " %s: %s\n", waveformName.c_str(), ver.c_str()); break; } } verFile.close(); } - verFile.open("/vendor/firmware/cs40l26-svc.bin", verBinFileMode); - if (verFile.is_open()) { - verFile.seekg(36); - getline(verFile, ver); - ver = ver.substr(ver.rfind('\\') + 1); - dprintf(fd, " cs40l26-svc.bin: %s\n", ver.c_str()); - verFile.close(); - } - verFile.open("/vendor/firmware/cs40l26-calib.bin", verBinFileMode); - if (verFile.is_open()) { - verFile.seekg(36); - getline(verFile, ver); - ver = ver.substr(ver.rfind('\\') + 1); - dprintf(fd, " cs40l26-calib.bin: %s\n", ver.c_str()); - verFile.close(); - } - verFile.open("/vendor/firmware/cs40l26-dvl.bin", verBinFileMode); - if (verFile.is_open()) { - verFile.seekg(36); - getline(verFile, ver); - ver = ver.substr(0, ver.find('\0') + 1); - ver = ver.substr(ver.rfind('\\') + 1); - dprintf(fd, " cs40l26-dvl.bin: %s\n", ver.c_str()); - verFile.close(); + for (auto &name : tuningFileNames) { + verFile.open(firmwareFolder + name, verBinFileMode); + if (verFile.is_open()) { + verFile.seekg(36); + getline(verFile, ver); + ver = ver.substr(0, ver.find(".bin") + 4); + ver = ver.substr(ver.rfind('\\') + 1); + dprintf(fd, " %s: %s\n", name.c_str(), ver.c_str()); + verFile.close(); + } } dprintf(fd, "\n");