From 6d154c4fe25d1ae0b5dafaae5eff7c0102f3362e Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Wed, 3 Sep 2014 14:19:43 -0500 Subject: Allow toggle of MTP debug Via command line in TWRP: twrp set tw_mtp_debug 1 This will enable debugging for MTP. You will need to disable and re-enable MTP in order to see the debug logging. Change-Id: Ia7bb0c584e10a4322b65ecf80a67ed7ee836b38e --- mtp/MtpDebug.cpp | 23 ++++++++++++++--------- mtp/MtpDebug.h | 1 + mtp/twrpMtp.cpp | 4 +++- mtp/twrpMtp.hpp | 2 +- partitionmanager.cpp | 5 ++++- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/mtp/MtpDebug.cpp b/mtp/MtpDebug.cpp index c3a3d8a5a..47834ab26 100755 --- a/mtp/MtpDebug.cpp +++ b/mtp/MtpDebug.cpp @@ -21,20 +21,20 @@ #include #define MTP_DEBUG_BUFFER_SIZE 2048 -//#define MTP_DEBUG 1 +static int debug_enabled = 0; extern "C" void mtpdebug(const char *fmt, ...) { -#ifdef MTP_DEBUG - char buf[MTP_DEBUG_BUFFER_SIZE]; // We're going to limit a single request to 512 bytes + if (debug_enabled) { + char buf[MTP_DEBUG_BUFFER_SIZE]; // We're going to limit a single request to 512 bytes - va_list ap; - va_start(ap, fmt); - vsnprintf(buf, MTP_DEBUG_BUFFER_SIZE, fmt, ap); - va_end(ap); + va_list ap; + va_start(ap, fmt); + vsnprintf(buf, MTP_DEBUG_BUFFER_SIZE, fmt, ap); + va_end(ap); - fputs(buf, stdout); -#endif + fputs(buf, stdout); + } } struct CodeEntry { @@ -417,3 +417,8 @@ const char* MtpDebug::getDevicePropCodeName(MtpPropertyCode code) { return "NONE"; return getCodeName(code, sDevicePropCodes); } + +void MtpDebug::enableDebug(void) { + debug_enabled = 1; + MTPD("MTP debug logging enabled\n"); +} diff --git a/mtp/MtpDebug.h b/mtp/MtpDebug.h index 12a23ccc8..b572b3b96 100755 --- a/mtp/MtpDebug.h +++ b/mtp/MtpDebug.h @@ -43,6 +43,7 @@ public: static const char* getFormatCodeName(MtpObjectFormat code); static const char* getObjectPropCodeName(MtpPropertyCode code); static const char* getDevicePropCodeName(MtpPropertyCode code); + static void enableDebug(); }; diff --git a/mtp/twrpMtp.cpp b/mtp/twrpMtp.cpp index ff58f79a7..6fe0ee3e8 100755 --- a/mtp/twrpMtp.cpp +++ b/mtp/twrpMtp.cpp @@ -68,7 +68,9 @@ int main(int argc, char* argv[]) { } #endif //def TWRPMTP -twrpMtp::twrpMtp() { +twrpMtp::twrpMtp(int debug_enabled = 0) { + if (debug_enabled) + MtpDebug::enableDebug(); mtpstorages = new storages; } diff --git a/mtp/twrpMtp.hpp b/mtp/twrpMtp.hpp index 2dd56a226..bed81c0e9 100755 --- a/mtp/twrpMtp.hpp +++ b/mtp/twrpMtp.hpp @@ -33,7 +33,7 @@ class twrpMtp { public: - twrpMtp(); + twrpMtp(int debug_enabled /* = 0 */); pthread_t runserver(void); void addStorage(std::string display, std::string path, int mtpid); private: diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 59451e3e7..a8b61c3fc 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -2171,7 +2171,10 @@ bool TWPartitionManager::Enable_MTP(void) { TWFunc::write_file("/sys/class/android_usb/android0/idProduct", productstr); property_set("sys.usb.config", "mtp,adb"); std::vector::iterator iter; - twrpMtp *mtp = new twrpMtp(); + /* To enable MTP debug, use the twrp command line feature to + * twrp set tw_mtp_debug 1 + */ + twrpMtp *mtp = new twrpMtp(DataManager::GetIntValue("tw_mtp_debug")); for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { if ((*iter)->Is_Storage && (*iter)->Is_Present && (*iter)->Mount(false)) { printf("twrp mtpid: %d\n", (*iter)->mtpid); -- cgit v1.2.3