Expose per-interface count values for debugging purposes via USB.

This commit is contained in:
László Monda
2017-12-04 17:38:31 +01:00
parent 71d6db0f35
commit 6780c8177c
15 changed files with 49 additions and 15 deletions

View File

@@ -1,9 +1,12 @@
#include "fsl_pit.h" #include "fsl_pit.h"
#include "key_scanner.h" #include "key_scanner.h"
uint32_t KeyScannerCounter;
void PIT_KEY_SCANNER_HANDLER(void) void PIT_KEY_SCANNER_HANDLER(void)
{ {
KeyMatrix_ScanRow(&RightKeyMatrix); KeyMatrix_ScanRow(&RightKeyMatrix);
KeyScannerCounter++;
PIT_ClearStatusFlags(PIT, PIT_KEY_SCANNER_CHANNEL, PIT_TFLG_TIF_MASK); PIT_ClearStatusFlags(PIT, PIT_KEY_SCANNER_CHANNEL, PIT_TFLG_TIF_MASK);
} }

View File

@@ -10,6 +10,10 @@
#define KEY_SCANNER_INTERVAL_USEC (1000 / RIGHT_KEY_MATRIX_ROWS_NUM) #define KEY_SCANNER_INTERVAL_USEC (1000 / RIGHT_KEY_MATRIX_ROWS_NUM)
// Variables:
extern uint32_t KeyScannerCounter;
// Functions: // Functions:
void InitKeyScanner(void); void InitKeyScanner(void);

View File

@@ -5,6 +5,12 @@
#include "i2c_watchdog.h" #include "i2c_watchdog.h"
#include "buffer.h" #include "buffer.h"
#include "timer.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]; uint8_t DebugBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH];
@@ -14,7 +20,14 @@ void UsbCommand_GetDebugBuffer(void)
SetDebugBufferUint32(5, I2cSlaveScheduler_Counter); SetDebugBufferUint32(5, I2cSlaveScheduler_Counter);
SetDebugBufferUint32(9, I2cWatchdog_WatchCounter); SetDebugBufferUint32(9, I2cWatchdog_WatchCounter);
SetDebugBufferUint32(13, I2cWatchdog_RecoveryCounter); 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); memcpy(GenericHidOutBuffer, DebugBuffer, USB_GENERIC_HID_OUT_BUFFER_LENGTH);
} }

View File

@@ -40,6 +40,7 @@ usb_device_class_struct_t UsbBasicKeyboardClass = {
}; };
static usb_basic_keyboard_report_t usbBasicKeyboardReports[2]; static usb_basic_keyboard_report_t usbBasicKeyboardReports[2];
uint32_t UsbBasicKeyboardActionCounter;
usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport = usbBasicKeyboardReports; usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport = usbBasicKeyboardReports;
bool IsUsbBasicKeyboardReportSent = false; bool IsUsbBasicKeyboardReportSent = false;
@@ -64,6 +65,7 @@ static usb_status_t UsbBasicKeyboardAction(void)
UsbCompositeDevice.basicKeyboardHandle, USB_BASIC_KEYBOARD_ENDPOINT_INDEX, UsbCompositeDevice.basicKeyboardHandle, USB_BASIC_KEYBOARD_ENDPOINT_INDEX,
(uint8_t*)getInactiveUsbBasicKeyboardReport(), USB_BASIC_KEYBOARD_REPORT_LENGTH); (uint8_t*)getInactiveUsbBasicKeyboardReport(), USB_BASIC_KEYBOARD_REPORT_LENGTH);
IsUsbBasicKeyboardReportSent = true; IsUsbBasicKeyboardReportSent = true;
UsbBasicKeyboardActionCounter++;
return status; return status;
} }

View File

@@ -32,6 +32,7 @@
// Variables: // Variables:
extern bool IsUsbBasicKeyboardReportSent; extern bool IsUsbBasicKeyboardReportSent;
extern uint32_t UsbBasicKeyboardActionCounter;
extern usb_device_class_struct_t UsbBasicKeyboardClass; extern usb_device_class_struct_t UsbBasicKeyboardClass;
extern usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport; extern usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport;

View File

@@ -42,6 +42,7 @@ usb_device_class_struct_t UsbGenericHidClass = {
USB_DEVICE_CONFIGURATION_COUNT, USB_DEVICE_CONFIGURATION_COUNT,
}; };
uint32_t UsbGenericHidActionCounter;
uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH];
uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_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, USB_GENERIC_HID_ENDPOINT_IN_INDEX,
GenericHidOutBuffer, GenericHidOutBuffer,
USB_GENERIC_HID_OUT_BUFFER_LENGTH); USB_GENERIC_HID_OUT_BUFFER_LENGTH);
UsbGenericHidActionCounter++;
return UsbReceiveData(); return UsbReceiveData();
break; break;
case kUSB_DeviceHidEventGetReport: case kUSB_DeviceHidEventGetReport:

View File

@@ -26,6 +26,7 @@
// Variables: // Variables:
extern usb_device_class_struct_t UsbGenericHidClass; extern usb_device_class_struct_t UsbGenericHidClass;
extern uint32_t UsbGenericHidActionCounter;
extern uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; extern uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH];
extern uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; extern uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH];

View File

@@ -39,6 +39,7 @@ usb_device_class_struct_t UsbMediaKeyboardClass = {
USB_DEVICE_CONFIGURATION_COUNT, USB_DEVICE_CONFIGURATION_COUNT,
}; };
uint32_t UsbMediaKeyboardActionCounter;
static usb_media_keyboard_report_t usbMediaKeyboardReports[2]; static usb_media_keyboard_report_t usbMediaKeyboardReports[2];
usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport = usbMediaKeyboardReports; usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport = usbMediaKeyboardReports;
bool IsUsbMediaKeyboardReportSent = false; bool IsUsbMediaKeyboardReportSent = false;
@@ -64,6 +65,7 @@ static usb_status_t UsbMediaKeyboardAction(void)
UsbCompositeDevice.mediaKeyboardHandle, USB_MEDIA_KEYBOARD_ENDPOINT_INDEX, UsbCompositeDevice.mediaKeyboardHandle, USB_MEDIA_KEYBOARD_ENDPOINT_INDEX,
(uint8_t*)getInactiveUsbMediaKeyboardReport(), USB_MEDIA_KEYBOARD_REPORT_LENGTH); (uint8_t*)getInactiveUsbMediaKeyboardReport(), USB_MEDIA_KEYBOARD_REPORT_LENGTH);
IsUsbMediaKeyboardReportSent = true; IsUsbMediaKeyboardReportSent = true;
UsbMediaKeyboardActionCounter++;
return status; return status;
} }

View File

@@ -29,6 +29,7 @@
// Variables: // Variables:
extern bool IsUsbMediaKeyboardReportSent; extern bool IsUsbMediaKeyboardReportSent;
extern uint32_t UsbMediaKeyboardActionCounter;
extern usb_device_class_struct_t UsbMediaKeyboardClass; extern usb_device_class_struct_t UsbMediaKeyboardClass;
extern usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport; extern usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport;

View File

@@ -39,6 +39,7 @@ usb_device_class_struct_t UsbMouseClass = {
USB_DEVICE_CONFIGURATION_COUNT, USB_DEVICE_CONFIGURATION_COUNT,
}; };
uint32_t UsbMouseActionCounter;
usb_mouse_report_t usbMouseReports[2]; usb_mouse_report_t usbMouseReports[2];
usb_mouse_report_t* ActiveUsbMouseReport = usbMouseReports; usb_mouse_report_t* ActiveUsbMouseReport = usbMouseReports;
bool IsUsbMouseReportSent = false; bool IsUsbMouseReportSent = false;
@@ -58,16 +59,11 @@ void ResetActiveUsbMouseReport(void)
bzero(ActiveUsbMouseReport, USB_MOUSE_REPORT_LENGTH); 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) static volatile usb_status_t usbMouseAction(void)
{ {
count3++;
usb_mouse_report_t *mouseReport = getInactiveUsbMouseReport(); usb_mouse_report_t *mouseReport = getInactiveUsbMouseReport();
SetDebugBufferUint16(29, mouseReport->x); SetDebugBufferUint16(61, mouseReport->x);
SetDebugBufferUint16(31, mouseReport->y); SetDebugBufferUint16(63, mouseReport->y);
IsUsbMouseReportSent = true; IsUsbMouseReportSent = true;
return USB_DeviceHidSend(UsbCompositeDevice.mouseHandle, USB_MOUSE_ENDPOINT_INDEX, return USB_DeviceHidSend(UsbCompositeDevice.mouseHandle, USB_MOUSE_ENDPOINT_INDEX,
(uint8_t*)mouseReport, USB_MOUSE_REPORT_LENGTH); (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) usb_status_t UsbMouseCallback(class_handle_t handle, uint32_t event, void *param)
{ {
SetDebugBufferUint32(17, count1); UsbMouseActionCounter++;
SetDebugBufferUint32(21, count2);
SetDebugBufferUint32(25, count3);
count1++;
usb_status_t error = kStatus_USB_Error; usb_status_t error = kStatus_USB_Error;
switch (event) { switch (event) {
case kUSB_DeviceHidEventSendResponse: case kUSB_DeviceHidEventSendResponse:
count2++;
if (UsbCompositeDevice.attach) { if (UsbCompositeDevice.attach) {
return usbMouseAction(); return usbMouseAction();
} }

View File

@@ -32,6 +32,7 @@
// Variables: // Variables:
extern bool IsUsbMouseReportSent; extern bool IsUsbMouseReportSent;
extern uint32_t UsbMouseActionCounter;
extern usb_device_class_struct_t UsbMouseClass; extern usb_device_class_struct_t UsbMouseClass;
extern usb_mouse_report_t* ActiveUsbMouseReport; extern usb_mouse_report_t* ActiveUsbMouseReport;

View File

@@ -39,6 +39,7 @@ usb_device_class_struct_t UsbSystemKeyboardClass = {
USB_DEVICE_CONFIGURATION_COUNT, USB_DEVICE_CONFIGURATION_COUNT,
}; };
uint32_t UsbSystemKeyboardActionCounter;
static usb_system_keyboard_report_t usbSystemKeyboardReports[2]; static usb_system_keyboard_report_t usbSystemKeyboardReports[2];
usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport = usbSystemKeyboardReports; usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport = usbSystemKeyboardReports;
bool IsUsbSystemKeyboardReportSent = false; bool IsUsbSystemKeyboardReportSent = false;
@@ -64,6 +65,7 @@ static usb_status_t UsbSystemKeyboardAction(void)
UsbCompositeDevice.systemKeyboardHandle, USB_SYSTEM_KEYBOARD_ENDPOINT_INDEX, UsbCompositeDevice.systemKeyboardHandle, USB_SYSTEM_KEYBOARD_ENDPOINT_INDEX,
(uint8_t*)getInactiveUsbSystemKeyboardReport(), USB_SYSTEM_KEYBOARD_REPORT_LENGTH); (uint8_t*)getInactiveUsbSystemKeyboardReport(), USB_SYSTEM_KEYBOARD_REPORT_LENGTH);
IsUsbSystemKeyboardReportSent = true; IsUsbSystemKeyboardReportSent = true;
UsbSystemKeyboardActionCounter++;
return status; return status;
} }

View File

@@ -30,6 +30,7 @@
// Variables: // Variables:
extern bool IsUsbSystemKeyboardReportSent; extern bool IsUsbSystemKeyboardReportSent;
extern uint32_t UsbSystemKeyboardActionCounter;
extern usb_device_class_struct_t UsbSystemKeyboardClass; extern usb_device_class_struct_t UsbSystemKeyboardClass;
extern usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport; extern usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport;

View File

@@ -230,8 +230,10 @@ static uint8_t secondaryRoleSlotId;
static uint8_t secondaryRoleKeyId; static uint8_t secondaryRoleKeyId;
static secondary_role_t secondaryRole; static secondary_role_t secondaryRole;
#define pos 35
void updateActiveUsbReports(void) void updateActiveUsbReports(void)
{ {
SetDebugBufferUint32(pos, 1);
memset(activeMouseStates, 0, ACTIVE_MOUSE_STATES_COUNT); memset(activeMouseStates, 0, ACTIVE_MOUSE_STATES_COUNT);
static uint8_t previousModifiers = 0; static uint8_t previousModifiers = 0;
@@ -263,6 +265,7 @@ void updateActiveUsbReports(void)
memcpy(&ActiveUsbSystemKeyboardReport, &MacroSystemKeyboardReport, sizeof MacroSystemKeyboardReport); memcpy(&ActiveUsbSystemKeyboardReport, &MacroSystemKeyboardReport, sizeof MacroSystemKeyboardReport);
return; return;
} }
SetDebugBufferUint32(pos, 2);
for (uint8_t slotId=0; slotId<SLOT_COUNT; slotId++) { for (uint8_t slotId=0; slotId<SLOT_COUNT; slotId++) {
for (uint8_t keyId=0; keyId<MAX_KEY_COUNT_PER_MODULE; keyId++) { for (uint8_t keyId=0; keyId<MAX_KEY_COUNT_PER_MODULE; keyId++) {
@@ -316,8 +319,10 @@ void updateActiveUsbReports(void)
keyState->previous = keyState->current; keyState->previous = keyState->current;
} }
} }
SetDebugBufferUint32(pos, 4);
processMouseActions(); processMouseActions();
SetDebugBufferUint32(pos, 5);
// When a layer switcher key gets pressed along with another key that produces some modifiers // 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 // 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; previousModifiers = ActiveUsbBasicKeyboardReport->modifiers;
previousLayer = activeLayer; previousLayer = activeLayer;
SetDebugBufferUint32(pos, 7);
} }
bool UsbBasicKeyboardReportEverSent = false; bool UsbBasicKeyboardReportEverSent = false;
@@ -339,8 +345,12 @@ bool UsbMediaKeyboardReportEverSent = false;
bool UsbSystemKeyboardReportEverSent = false; bool UsbSystemKeyboardReportEverSent = false;
bool UsbMouseReportEverSentEverSent = false; bool UsbMouseReportEverSentEverSent = false;
uint32_t UsbReportUpdateCounter;
void UpdateUsbReports(void) void UpdateUsbReports(void)
{ {
UsbReportUpdateCounter++;
if (IsUsbBasicKeyboardReportSent) { if (IsUsbBasicKeyboardReportSent) {
UsbBasicKeyboardReportEverSent = true; UsbBasicKeyboardReportEverSent = true;
} }

View File

@@ -68,6 +68,7 @@
extern uint16_t DoubleTapSwitchLayerTimeout; extern uint16_t DoubleTapSwitchLayerTimeout;
extern mouse_kinetic_state_t MouseMoveState; extern mouse_kinetic_state_t MouseMoveState;
extern mouse_kinetic_state_t MouseScrollState; extern mouse_kinetic_state_t MouseScrollState;
extern uint32_t UsbReportUpdateCounter;
// Functions: // Functions: