diff --git a/src/logid/backend/raw/RawDevice.cpp b/src/logid/backend/raw/RawDevice.cpp index ca76cc9..ef553cb 100644 --- a/src/logid/backend/raw/RawDevice.cpp +++ b/src/logid/backend/raw/RawDevice.cpp @@ -2,6 +2,7 @@ #include "../Error.h" #include "../hidpp/defs.h" #include "../dj/defs.h" +#include "../../util.h" #include #include @@ -193,6 +194,13 @@ int RawDevice::_sendReport(const std::vector& report) if(ret == -1) throw std::system_error(errno, std::system_category(), "_sendReport write failed"); + if(logid::global_verbosity == LogLevel::RAWREPORT) { + printf("[RAWREPORT] %s OUT: ", path.c_str()); + for(auto &i : report) + printf("%02x ", i); + printf("\n"); + } + return ret; } @@ -238,6 +246,13 @@ int RawDevice::_readReport(std::vector& report, std::size_t maxDataLeng if(0 == ret) throw backend::TimeoutError(); + if(logid::global_verbosity == LogLevel::RAWREPORT) { + printf("[RAWREPORT] %s IN: ", path.c_str()); + for(auto &i : report) + printf("%02x ", i); + printf("\n"); + } + return ret; } diff --git a/src/logid/util.cpp b/src/logid/util.cpp index 7b0218d..607b337 100644 --- a/src/logid/util.cpp +++ b/src/logid/util.cpp @@ -27,6 +27,7 @@ void logid::log_printf(LogLevel level, const char* format, ...) const char* logid::level_prefix(LogLevel level) { + if(level == RAWREPORT) return "RAWREPORT"; if(level == DEBUG) return "DEBUG"; if(level == INFO) return "INFO" ; if(level == WARN) return "WARN"; @@ -120,6 +121,7 @@ LogLevel logid::stringToLogLevel(std::string s) std::string original_str = s; std::transform(s.begin(), s.end(), s.begin(), ::tolower); + if(s == "rawreport") return RAWREPORT; if(s == "debug") return DEBUG; if(s == "info") return INFO; if(s == "warn" || s == "warning") return WARN; diff --git a/src/logid/util.h b/src/logid/util.h index 1478fed..de7690b 100644 --- a/src/logid/util.h +++ b/src/logid/util.h @@ -7,10 +7,11 @@ namespace logid { enum LogLevel { - DEBUG, - INFO, - WARN, - ERROR + RAWREPORT, + DEBUG, + INFO, + WARN, + ERROR }; extern LogLevel global_verbosity;