From fd4bcb39ff091ee97fd1018d8a67eb794a47ce06 Mon Sep 17 00:00:00 2001 From: ergo720 <45463469+ergo720@users.noreply.github.com> Date: Sat, 20 Jul 2019 16:17:21 +0200 Subject: [PATCH] Added error log level --- src/common/Logging.cpp | 4 ++++ src/common/Logging.h | 5 ++++- src/core/hle/XAPI/Xapi.cpp | 4 ++-- src/core/kernel/exports/EmuKrnlKi.cpp | 2 +- src/devices/usb/OHCI.cpp | 10 +++++----- src/gui/DlgLoggingConfig.cpp | 4 ++-- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/common/Logging.cpp b/src/common/Logging.cpp index 1f71116e6..96457bcf1 100644 --- a/src/common/Logging.cpp +++ b/src/common/Logging.cpp @@ -100,6 +100,7 @@ std::atomic_int g_CurrentLogLevel = to_underlying(LOG_LEVEL::INFO); const char log_debug[] = "DEBUG: "; const char log_info[] = "INFO : "; const char log_warn[] = "WARN : "; +const char log_error[] = "ERROR: "; const char log_fatal[] = "FATAL: "; const char log_unkwn[] = "???? : "; @@ -130,6 +131,9 @@ void NTAPI EmuLogEx(CXBXR_MODULE cxbxr_module, LOG_LEVEL level, const char *szWa break; case LOG_LEVEL::WARNING: level_str = log_warn; + break; + case LOG_LEVEL::ERROR2: + level_str = log_error; break; case LOG_LEVEL::FATAL: level_str = log_fatal; diff --git a/src/common/Logging.h b/src/common/Logging.h index 28b18eccb..201cbedef 100644 --- a/src/common/Logging.h +++ b/src/common/Logging.h @@ -17,7 +17,8 @@ // * If not, write to the Free Software Foundation, Inc., // * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA. // * -// * (c) 2016 Patrick van Logchem +// * (c) 2016 Patrick van Logchem +// * (c) 2019 ergo720 // * // * All rights reserved // * @@ -34,10 +35,12 @@ #include // For atomic_bool and atomic_uint #include "common\util\CxbxUtil.h" // For g_bPrintfOn and to_underlying +// NOTE: using ERROR2 since windows.h imports an ERROR macro which would conflict otherwise typedef enum class _LOG_LEVEL { DEBUG = 0, INFO, WARNING, + ERROR2, FATAL, MAX, }LOG_LEVEL; diff --git a/src/core/hle/XAPI/Xapi.cpp b/src/core/hle/XAPI/Xapi.cpp index a0805d68b..92158e79e 100644 --- a/src/core/hle/XAPI/Xapi.cpp +++ b/src/core/hle/XAPI/Xapi.cpp @@ -130,7 +130,7 @@ void InitXboxControllerHostBridge(void) //disconnect to host if the host port of xinput exceeds the total xinput controller connected to host. if (g_XboxControllerHostBridge[port].dwHostPort >= total_xinput_gamepad) { g_XboxControllerHostBridge[port].dwHostType = X_XONTROLLER_HOST_BRIDGE_HOSTTYPE_NOTCONNECT; - printf("InitXboxControllerHostBridge: Host XInput port greater then total xinput controller connected. disconnect xbox port from host!\n"); + EmuLog(LOG_LEVEL::DEBUG, "InitXboxControllerHostBridge: Host XInput port greater then total xinput controller connected. disconnect xbox port from host!"); } break; case X_XONTROLLER_HOST_BRIDGE_HOSTTYPE_DINPUT: @@ -148,7 +148,7 @@ void InitXboxControllerHostBridge(void) //find corresponding XboxDeviceInfo index=FindDeviceInfoIndexByXboxType(g_XboxControllerHostBridge[port].XboxDeviceInfo.ucType); if (index == -1) { - printf("XboxControllerHostBridge XboxDeviceInfo.ucType: %d not found in global XboxInputDeviceInfo vector!\n", g_XboxControllerHostBridge[port].XboxDeviceInfo.ucType); + EmuLog(LOG_LEVEL::DEBUG, "XboxControllerHostBridge XboxDeviceInfo.ucType: %d not found in global XboxInputDeviceInfo vector!", g_XboxControllerHostBridge[port].XboxDeviceInfo.ucType); } //copy XboxDeviceInfo from the global vector. g_XboxControllerHostBridge[port].XboxDeviceInfo.ucSubType = g_XboxInputDeviceInfo[index].ucSubType; diff --git a/src/core/kernel/exports/EmuKrnlKi.cpp b/src/core/kernel/exports/EmuKrnlKi.cpp index 154eaecb4..4aea1e75e 100644 --- a/src/core/kernel/exports/EmuKrnlKi.cpp +++ b/src/core/kernel/exports/EmuKrnlKi.cpp @@ -206,7 +206,7 @@ xboxkrnl::VOID NTAPI xboxkrnl::KiCheckTimerTable if (Timer->DueTime.QuadPart <= CurrentTime.QuadPart) { /* This is bad, breakpoint! */ - EmuLog(LOG_LEVEL::WARNING, "Invalid timer state!"); + EmuLog(LOG_LEVEL::ERROR2, "Invalid timer state!"); DbgBreakPoint(); } } diff --git a/src/devices/usb/OHCI.cpp b/src/devices/usb/OHCI.cpp index 0903d9d68..dd61fa92e 100644 --- a/src/devices/usb/OHCI.cpp +++ b/src/devices/usb/OHCI.cpp @@ -366,7 +366,7 @@ void OHCI::OHCI_FrameBoundaryWorker() // Writeback HCCA if (OHCI_WriteHCCA(m_Registers.HcHCCA, &hcca)) { - EmuLog(LOG_LEVEL::WARNING, "HCCA write error at physical address 0x%X", m_Registers.HcHCCA); + EmuLog(LOG_LEVEL::ERROR2, "HCCA write error at physical address 0x%X", m_Registers.HcHCCA); OHCI_FatalError(); } @@ -381,7 +381,7 @@ void OHCI::OHCI_FatalError() OHCI_SetInterrupt(OHCI_INTR_UE); OHCI_BusStop(); - EmuLog(LOG_LEVEL::WARNING, "An unrecoverable error has occoured!\n"); + EmuLog(LOG_LEVEL::ERROR2, "An unrecoverable error has occoured!\n"); } bool OHCI::OHCI_ReadHCCA(xbaddr Paddr, OHCI_HCCA* Hcca) @@ -498,7 +498,7 @@ int OHCI::OHCI_ServiceEDlist(xbaddr Head, int Completion) for (current = Head; current; current = next_ed) { if (OHCI_ReadED(current, &ed)) { - EmuLog(LOG_LEVEL::WARNING, "ED read error at physical address 0x%X", current); + EmuLog(LOG_LEVEL::ERROR2, "ED read error at physical address 0x%X", current); OHCI_FatalError(); return 0; } @@ -580,7 +580,7 @@ int OHCI::OHCI_ServiceTD(OHCI_ED* Ed) return 1; } if (OHCI_ReadTD(addr, &td)) { - EmuLog(LOG_LEVEL::WARNING, "TD read error at physical address 0x%X", addr); + EmuLog(LOG_LEVEL::ERROR2, "TD read error at physical address 0x%X", addr); OHCI_FatalError(); return 0; } @@ -1584,7 +1584,7 @@ int OHCI::OHCI_ServiceIsoTD(OHCI_ED* ed, int completion) addr = ed->HeadP & OHCI_DPTR_MASK; if (OHCI_ReadIsoTD(addr, &iso_td)) { - EmuLog(LOG_LEVEL::DEBUG, "ISO_TD read error at physical address 0x%X", addr); + EmuLog(LOG_LEVEL::ERROR2, "ISO_TD read error at physical address 0x%X", addr); OHCI_FatalError(); return 0; } diff --git a/src/gui/DlgLoggingConfig.cpp b/src/gui/DlgLoggingConfig.cpp index 37322e007..02f34b442 100644 --- a/src/gui/DlgLoggingConfig.cpp +++ b/src/gui/DlgLoggingConfig.cpp @@ -17,7 +17,7 @@ // * If not, write to the Free Software Foundation, Inc., // * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA. // * -// * (c) 2018 ergo720 +// * (c) 2018-2019 ergo720 // * // * All rights reserved // * @@ -125,7 +125,7 @@ INT_PTR CALLBACK DlgLogConfigProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM hHandle = GetDlgItem(hWndDlg, IDC_EVENT_LV); TempLevel = to_underlying(LOG_LEVEL::DEBUG); - for (auto i : { "Debug" , "Info" ,"Warning", "Fatal" }) { + for (auto i : { "Debug" , "Info" ,"Warning", "Error", "Fatal" }) { LRESULT index = SendMessage(hHandle, CB_ADDSTRING, 0, reinterpret_cast(i)); SendMessage(hHandle, CB_SETITEMDATA, index, TempLevel); TempLevel++;