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
diff --git a/mtp/MtpDebug.cpp b/mtp/MtpDebug.cpp
index c3a3d8a..47834ab 100755
--- a/mtp/MtpDebug.cpp
+++ b/mtp/MtpDebug.cpp
@@ -21,20 +21,20 @@
#include <stdio.h>
#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 @@
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 12a23cc..b572b3b 100755
--- a/mtp/MtpDebug.h
+++ b/mtp/MtpDebug.h
@@ -43,6 +43,7 @@
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 ff58f79..6fe0ee3 100755
--- a/mtp/twrpMtp.cpp
+++ b/mtp/twrpMtp.cpp
@@ -68,7 +68,9 @@
}
#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 2dd56a2..bed81c0 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 59451e3..a8b61c3 100644
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -2171,7 +2171,10 @@
TWFunc::write_file("/sys/class/android_usb/android0/idProduct", productstr);
property_set("sys.usb.config", "mtp,adb");
std::vector<TWPartition*>::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);