diff --git a/right/src/key_scanner.c b/right/src/key_scanner.c index 7471f6c..e2d10bd 100644 --- a/right/src/key_scanner.c +++ b/right/src/key_scanner.c @@ -1,9 +1,12 @@ #include "fsl_pit.h" #include "key_scanner.h" +uint32_t KeyScannerCounter; + void PIT_KEY_SCANNER_HANDLER(void) { KeyMatrix_ScanRow(&RightKeyMatrix); + KeyScannerCounter++; PIT_ClearStatusFlags(PIT, PIT_KEY_SCANNER_CHANNEL, PIT_TFLG_TIF_MASK); } diff --git a/right/src/key_scanner.h b/right/src/key_scanner.h index 0a4688b..f239818 100644 --- a/right/src/key_scanner.h +++ b/right/src/key_scanner.h @@ -10,6 +10,10 @@ #define KEY_SCANNER_INTERVAL_USEC (1000 / RIGHT_KEY_MATRIX_ROWS_NUM) +// Variables: + + extern uint32_t KeyScannerCounter; + // Functions: void InitKeyScanner(void); diff --git a/right/src/usb_commands/usb_command_get_debug_buffer.c b/right/src/usb_commands/usb_command_get_debug_buffer.c index a971f56..4439841 100644 --- a/right/src/usb_commands/usb_command_get_debug_buffer.c +++ b/right/src/usb_commands/usb_command_get_debug_buffer.c @@ -5,6 +5,12 @@ #include "i2c_watchdog.h" #include "buffer.h" #include "timer.h" +#include "key_scanner.h" +#include "usb_report_updater.h" +#include "usb_interfaces/usb_interface_basic_keyboard.h" +#include "usb_interfaces/usb_interface_media_keyboard.h" +#include "usb_interfaces/usb_interface_system_keyboard.h" +#include "usb_interfaces/usb_interface_mouse.h" uint8_t DebugBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; @@ -14,7 +20,14 @@ void UsbCommand_GetDebugBuffer(void) SetDebugBufferUint32(5, I2cSlaveScheduler_Counter); SetDebugBufferUint32(9, I2cWatchdog_WatchCounter); SetDebugBufferUint32(13, I2cWatchdog_RecoveryCounter); - SetDebugBufferUint32(40, CurrentTime); + SetDebugBufferUint32(17, KeyScannerCounter); + SetDebugBufferUint32(21, UsbReportUpdateCounter); + SetDebugBufferUint32(25, CurrentTime); + SetDebugBufferUint32(29, UsbGenericHidActionCounter); + SetDebugBufferUint32(33, UsbBasicKeyboardActionCounter); + SetDebugBufferUint32(37, UsbMediaKeyboardActionCounter); + SetDebugBufferUint32(41, UsbSystemKeyboardActionCounter); + SetDebugBufferUint32(45, UsbMouseActionCounter); memcpy(GenericHidOutBuffer, DebugBuffer, USB_GENERIC_HID_OUT_BUFFER_LENGTH); } diff --git a/right/src/usb_interfaces/usb_interface_basic_keyboard.c b/right/src/usb_interfaces/usb_interface_basic_keyboard.c index 81d04f8..d81fdd6 100644 --- a/right/src/usb_interfaces/usb_interface_basic_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_basic_keyboard.c @@ -40,6 +40,7 @@ usb_device_class_struct_t UsbBasicKeyboardClass = { }; static usb_basic_keyboard_report_t usbBasicKeyboardReports[2]; +uint32_t UsbBasicKeyboardActionCounter; usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport = usbBasicKeyboardReports; bool IsUsbBasicKeyboardReportSent = false; @@ -64,6 +65,7 @@ static usb_status_t UsbBasicKeyboardAction(void) UsbCompositeDevice.basicKeyboardHandle, USB_BASIC_KEYBOARD_ENDPOINT_INDEX, (uint8_t*)getInactiveUsbBasicKeyboardReport(), USB_BASIC_KEYBOARD_REPORT_LENGTH); IsUsbBasicKeyboardReportSent = true; + UsbBasicKeyboardActionCounter++; return status; } diff --git a/right/src/usb_interfaces/usb_interface_basic_keyboard.h b/right/src/usb_interfaces/usb_interface_basic_keyboard.h index acb74d7..d18a65c 100644 --- a/right/src/usb_interfaces/usb_interface_basic_keyboard.h +++ b/right/src/usb_interfaces/usb_interface_basic_keyboard.h @@ -32,6 +32,7 @@ // Variables: extern bool IsUsbBasicKeyboardReportSent; + extern uint32_t UsbBasicKeyboardActionCounter; extern usb_device_class_struct_t UsbBasicKeyboardClass; extern usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport; diff --git a/right/src/usb_interfaces/usb_interface_generic_hid.c b/right/src/usb_interfaces/usb_interface_generic_hid.c index 9514199..3328deb 100644 --- a/right/src/usb_interfaces/usb_interface_generic_hid.c +++ b/right/src/usb_interfaces/usb_interface_generic_hid.c @@ -42,6 +42,7 @@ usb_device_class_struct_t UsbGenericHidClass = { USB_DEVICE_CONFIGURATION_COUNT, }; +uint32_t UsbGenericHidActionCounter; uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; @@ -67,6 +68,7 @@ usb_status_t UsbGenericHidCallback(class_handle_t handle, uint32_t event, void * USB_GENERIC_HID_ENDPOINT_IN_INDEX, GenericHidOutBuffer, USB_GENERIC_HID_OUT_BUFFER_LENGTH); + UsbGenericHidActionCounter++; return UsbReceiveData(); break; case kUSB_DeviceHidEventGetReport: diff --git a/right/src/usb_interfaces/usb_interface_generic_hid.h b/right/src/usb_interfaces/usb_interface_generic_hid.h index d9b9f71..f3457b4 100644 --- a/right/src/usb_interfaces/usb_interface_generic_hid.h +++ b/right/src/usb_interfaces/usb_interface_generic_hid.h @@ -26,6 +26,7 @@ // Variables: extern usb_device_class_struct_t UsbGenericHidClass; + extern uint32_t UsbGenericHidActionCounter; extern uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; extern uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; diff --git a/right/src/usb_interfaces/usb_interface_media_keyboard.c b/right/src/usb_interfaces/usb_interface_media_keyboard.c index 670129b..e3b7ef2 100644 --- a/right/src/usb_interfaces/usb_interface_media_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_media_keyboard.c @@ -39,6 +39,7 @@ usb_device_class_struct_t UsbMediaKeyboardClass = { USB_DEVICE_CONFIGURATION_COUNT, }; +uint32_t UsbMediaKeyboardActionCounter; static usb_media_keyboard_report_t usbMediaKeyboardReports[2]; usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport = usbMediaKeyboardReports; bool IsUsbMediaKeyboardReportSent = false; @@ -64,6 +65,7 @@ static usb_status_t UsbMediaKeyboardAction(void) UsbCompositeDevice.mediaKeyboardHandle, USB_MEDIA_KEYBOARD_ENDPOINT_INDEX, (uint8_t*)getInactiveUsbMediaKeyboardReport(), USB_MEDIA_KEYBOARD_REPORT_LENGTH); IsUsbMediaKeyboardReportSent = true; + UsbMediaKeyboardActionCounter++; return status; } diff --git a/right/src/usb_interfaces/usb_interface_media_keyboard.h b/right/src/usb_interfaces/usb_interface_media_keyboard.h index e4c9064..b7f1868 100644 --- a/right/src/usb_interfaces/usb_interface_media_keyboard.h +++ b/right/src/usb_interfaces/usb_interface_media_keyboard.h @@ -29,6 +29,7 @@ // Variables: extern bool IsUsbMediaKeyboardReportSent; + extern uint32_t UsbMediaKeyboardActionCounter; extern usb_device_class_struct_t UsbMediaKeyboardClass; extern usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport; diff --git a/right/src/usb_interfaces/usb_interface_mouse.c b/right/src/usb_interfaces/usb_interface_mouse.c index e641246..3e7d501 100644 --- a/right/src/usb_interfaces/usb_interface_mouse.c +++ b/right/src/usb_interfaces/usb_interface_mouse.c @@ -39,6 +39,7 @@ usb_device_class_struct_t UsbMouseClass = { USB_DEVICE_CONFIGURATION_COUNT, }; +uint32_t UsbMouseActionCounter; usb_mouse_report_t usbMouseReports[2]; usb_mouse_report_t* ActiveUsbMouseReport = usbMouseReports; bool IsUsbMouseReportSent = false; @@ -58,16 +59,11 @@ void ResetActiveUsbMouseReport(void) bzero(ActiveUsbMouseReport, USB_MOUSE_REPORT_LENGTH); } -static uint32_t count1 = 0; -static uint32_t count2 = 0; -static uint32_t count3 = 0; - static volatile usb_status_t usbMouseAction(void) { - count3++; usb_mouse_report_t *mouseReport = getInactiveUsbMouseReport(); - SetDebugBufferUint16(29, mouseReport->x); - SetDebugBufferUint16(31, mouseReport->y); + SetDebugBufferUint16(61, mouseReport->x); + SetDebugBufferUint16(63, mouseReport->y); IsUsbMouseReportSent = true; return USB_DeviceHidSend(UsbCompositeDevice.mouseHandle, USB_MOUSE_ENDPOINT_INDEX, (uint8_t*)mouseReport, USB_MOUSE_REPORT_LENGTH); @@ -75,17 +71,11 @@ static volatile usb_status_t usbMouseAction(void) usb_status_t UsbMouseCallback(class_handle_t handle, uint32_t event, void *param) { - SetDebugBufferUint32(17, count1); - SetDebugBufferUint32(21, count2); - SetDebugBufferUint32(25, count3); - - count1++; - + UsbMouseActionCounter++; usb_status_t error = kStatus_USB_Error; switch (event) { case kUSB_DeviceHidEventSendResponse: - count2++; if (UsbCompositeDevice.attach) { return usbMouseAction(); } diff --git a/right/src/usb_interfaces/usb_interface_mouse.h b/right/src/usb_interfaces/usb_interface_mouse.h index 1063a61..2456f58 100644 --- a/right/src/usb_interfaces/usb_interface_mouse.h +++ b/right/src/usb_interfaces/usb_interface_mouse.h @@ -32,6 +32,7 @@ // Variables: extern bool IsUsbMouseReportSent; + extern uint32_t UsbMouseActionCounter; extern usb_device_class_struct_t UsbMouseClass; extern usb_mouse_report_t* ActiveUsbMouseReport; diff --git a/right/src/usb_interfaces/usb_interface_system_keyboard.c b/right/src/usb_interfaces/usb_interface_system_keyboard.c index b641c3f..44bff8f 100644 --- a/right/src/usb_interfaces/usb_interface_system_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_system_keyboard.c @@ -39,6 +39,7 @@ usb_device_class_struct_t UsbSystemKeyboardClass = { USB_DEVICE_CONFIGURATION_COUNT, }; +uint32_t UsbSystemKeyboardActionCounter; static usb_system_keyboard_report_t usbSystemKeyboardReports[2]; usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport = usbSystemKeyboardReports; bool IsUsbSystemKeyboardReportSent = false; @@ -64,6 +65,7 @@ static usb_status_t UsbSystemKeyboardAction(void) UsbCompositeDevice.systemKeyboardHandle, USB_SYSTEM_KEYBOARD_ENDPOINT_INDEX, (uint8_t*)getInactiveUsbSystemKeyboardReport(), USB_SYSTEM_KEYBOARD_REPORT_LENGTH); IsUsbSystemKeyboardReportSent = true; + UsbSystemKeyboardActionCounter++; return status; } diff --git a/right/src/usb_interfaces/usb_interface_system_keyboard.h b/right/src/usb_interfaces/usb_interface_system_keyboard.h index 7dc8108..bda8902 100644 --- a/right/src/usb_interfaces/usb_interface_system_keyboard.h +++ b/right/src/usb_interfaces/usb_interface_system_keyboard.h @@ -30,6 +30,7 @@ // Variables: extern bool IsUsbSystemKeyboardReportSent; + extern uint32_t UsbSystemKeyboardActionCounter; extern usb_device_class_struct_t UsbSystemKeyboardClass; extern usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport; diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index 16a3632..b42b14f 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -230,8 +230,10 @@ static uint8_t secondaryRoleSlotId; static uint8_t secondaryRoleKeyId; static secondary_role_t secondaryRole; +#define pos 35 void updateActiveUsbReports(void) { + SetDebugBufferUint32(pos, 1); memset(activeMouseStates, 0, ACTIVE_MOUSE_STATES_COUNT); static uint8_t previousModifiers = 0; @@ -263,6 +265,7 @@ void updateActiveUsbReports(void) memcpy(&ActiveUsbSystemKeyboardReport, &MacroSystemKeyboardReport, sizeof MacroSystemKeyboardReport); return; } + SetDebugBufferUint32(pos, 2); for (uint8_t slotId=0; slotIdprevious = keyState->current; } } + SetDebugBufferUint32(pos, 4); processMouseActions(); + SetDebugBufferUint32(pos, 5); // When a layer switcher key gets pressed along with another key that produces some modifiers // and the accomanying key gets released then keep the related modifiers active a long as the @@ -332,6 +337,7 @@ void updateActiveUsbReports(void) previousModifiers = ActiveUsbBasicKeyboardReport->modifiers; previousLayer = activeLayer; + SetDebugBufferUint32(pos, 7); } bool UsbBasicKeyboardReportEverSent = false; @@ -339,8 +345,12 @@ bool UsbMediaKeyboardReportEverSent = false; bool UsbSystemKeyboardReportEverSent = false; bool UsbMouseReportEverSentEverSent = false; +uint32_t UsbReportUpdateCounter; + void UpdateUsbReports(void) { + UsbReportUpdateCounter++; + if (IsUsbBasicKeyboardReportSent) { UsbBasicKeyboardReportEverSent = true; } diff --git a/right/src/usb_report_updater.h b/right/src/usb_report_updater.h index 9bdbf19..6b7eb08 100644 --- a/right/src/usb_report_updater.h +++ b/right/src/usb_report_updater.h @@ -68,6 +68,7 @@ extern uint16_t DoubleTapSwitchLayerTimeout; extern mouse_kinetic_state_t MouseMoveState; extern mouse_kinetic_state_t MouseScrollState; + extern uint32_t UsbReportUpdateCounter; // Functions: