Skip to content

Commit

Permalink
Introduce pointing device specific debug messages
Browse files Browse the repository at this point in the history
As these can be come quite verbose, these can be enabled with
POINTING_DEVICE_DEBUG define on a keyboard level.
  • Loading branch information
KarlK90 committed Jul 14, 2022
1 parent 3c58f98 commit 7e3294d
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 33 deletions.
10 changes: 10 additions & 0 deletions docs/feature_pointing_device.md
Original file line number Diff line number Diff line change
Expand Up @@ -437,3 +437,13 @@ report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, re
}
```
=======
# Troubleshooting
If you are having issues with pointing device drivers debug messages can be enabled that will give you insights in the inner workings. To enable these add to your keyboards `config.h` file:
```c
#define POINTING_DEVICE_DEBUG
```

?> The messages will be printed out to the `CONSOLE` output. For additional information, refer to [Debugging/Troubleshooting QMK](faq_debug.md).
9 changes: 3 additions & 6 deletions drivers/sensors/cirque_pinnacle_i2c.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
#include "cirque_pinnacle.h"
#include "pointing_device_internal.h"
#include "i2c_master.h"
#include "print.h"
#include "debug.h"
Expand All @@ -18,9 +19,7 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
if (touchpad_init) {
i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT);
if (i2c_readReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
#ifdef CONSOLE_ENABLE
dprintf("error cirque_pinnacle i2c_readReg\n");
#endif
pd_dprintf("error cirque_pinnacle i2c_readReg\n");
touchpad_init = false;
}
i2c_stop();
Expand All @@ -33,9 +32,7 @@ void RAP_Write(uint8_t address, uint8_t data) {

if (touchpad_init) {
if (i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
#ifdef CONSOLE_ENABLE
dprintf("error cirque_pinnacle i2c_writeReg\n");
#endif
pd_dprintf("error cirque_pinnacle i2c_writeReg\n");
touchpad_init = false;
}
i2c_stop();
Expand Down
9 changes: 3 additions & 6 deletions drivers/sensors/cirque_pinnacle_spi.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
#include "cirque_pinnacle.h"
#include "pointing_device_internal.h"
#include "spi_master.h"
#include "print.h"
#include "debug.h"
Expand All @@ -24,9 +25,7 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
data[i] = spi_write(FILLER_BYTE); // write filler, receive data on the third filler send
}
} else {
#ifdef CONSOLE_ENABLE
dprintf("error cirque_pinnacle spi_start read\n");
#endif
pd_dprintf("error cirque_pinnacle spi_start read\n");
touchpad_init = false;
}
spi_stop();
Expand All @@ -42,9 +41,7 @@ void RAP_Write(uint8_t address, uint8_t data) {
spi_write(cmdByte);
spi_write(data);
} else {
#ifdef CONSOLE_ENABLE
dprintf("error cirque_pinnacle spi_start write\n");
#endif
pd_dprintf("error cirque_pinnacle spi_start write\n");
touchpad_init = false;
}
spi_stop();
Expand Down
12 changes: 6 additions & 6 deletions drivers/sensors/pimoroni_trackball.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pimoroni_trackball.h"
#include "pointing_device_internal.h"
#include "i2c_master.h"
#include "print.h"
#include "debug.h"
Expand Down Expand Up @@ -58,22 +59,21 @@ void pimoroni_trackball_set_rgbw(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
uint8_t data[4] = {r, g, b, w};
__attribute__((unused)) i2c_status_t status = i2c_writeReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LED_RED, data, sizeof(data), PIMORONI_TRACKBALL_TIMEOUT);

#ifdef CONSOLE_ENABLE
if (debug_mouse) dprintf("Trackball RGBW i2c_status_t: %d\n", status);
#endif
if (debug_mouse) {
pd_dprintf("Trackball RGBW i2c_status_t: %d\n", status);
}
}

i2c_status_t read_pimoroni_trackball(pimoroni_data_t* data) {
i2c_status_t status = i2c_readReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LEFT, (uint8_t*)data, sizeof(*data), PIMORONI_TRACKBALL_TIMEOUT);
#ifdef CONSOLE_ENABLE

if (debug_mouse) {
static uint16_t d_timer;
if (timer_elapsed(d_timer) > PIMORONI_TRACKBALL_DEBUG_INTERVAL) {
dprintf("Trackball READ i2c_status_t: %d L: %d R: %d Up: %d D: %d SW: %d\n", status, data->left, data->right, data->up, data->down, data->click);
pd_dprintf("Trackball READ i2c_status_t: %d L: %d R: %d Up: %d D: %d SW: %d\n", status, data->left, data->right, data->up, data->down, data->click);
d_timer = timer_read();
}
}
#endif

return status;
}
Expand Down
8 changes: 4 additions & 4 deletions drivers/sensors/pmw33xx_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ bool pmw33xx_init(uint8_t sensor) {
pmw33xx_read(sensor, REG_Delta_Y_H);

if (!pmw33xx_upload_firmware(sensor)) {
dprintf("PMW33XX (%d): firmware upload failed!\n", sensor);
pd_dprintf("PMW33XX (%d): firmware upload failed!\n", sensor);
return false;
}

Expand All @@ -169,7 +169,7 @@ bool pmw33xx_init(uint8_t sensor) {
pmw33xx_write(sensor, REG_Lift_Config, PMW33XX_LIFTOFF_DISTANCE);

if (!pmw33xx_check_signature(sensor)) {
dprintf("PMW33XX (%d): firmware signature verification failed!\n", sensor);
pd_dprintf("PMW33XX (%d): firmware signature verification failed!\n", sensor);
return false;
}

Expand All @@ -184,7 +184,7 @@ pmw33xx_report_t pmw33xx_read_burst(uint8_t sensor) {
}

if (!in_burst[sensor]) {
dprintf("PMW33XX (%d): burst\n", sensor);
pd_dprintf("PMW33XX (%d): burst\n", sensor);
if (!pmw33xx_write(sensor, REG_Motion_Burst, 0x00)) {
return report;
}
Expand All @@ -208,7 +208,7 @@ pmw33xx_report_t pmw33xx_read_burst(uint8_t sensor) {
spi_stop();

if (debug_config.mouse) {
dprintf("PMW33XX (%d): motion: 0x%x dx: %i dy: %i\n", sensor, report.motion.w, report.delta_x, report.delta_y);
pd_dprintf("PMW33XX (%d): motion: 0x%x dx: %i dy: %i\n", sensor, report.motion.w, report.delta_x, report.delta_y);
}

report.delta_x *= -1;
Expand Down
20 changes: 9 additions & 11 deletions quantum/pointing_device_drivers.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
*/

#include "pointing_device.h"
#include "pointing_device_internal.h"
#include "debug.h"
#include "wait.h"
#include "timer.h"
Expand All @@ -31,10 +32,9 @@ report_mouse_t adns5050_get_report(report_mouse_t mouse_report) {
report_adns5050_t data = adns5050_read_burst();

if (data.dx != 0 || data.dy != 0) {
# ifdef CONSOLE_ENABLE
if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy);
# endif

if (debug_mouse) {
pd_dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy);
}
mouse_report.x = (mouse_xy_report_t)data.dx;
mouse_report.y = (mouse_xy_report_t)data.dy;
}
Expand Down Expand Up @@ -75,9 +75,9 @@ const pointing_device_driver_t pointing_device_driver = {
report_mouse_t analog_joystick_get_report(report_mouse_t mouse_report) {
report_analog_joystick_t data = analog_joystick_read();

# ifdef CONSOLE_ENABLE
if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.x, data.y);
# endif
if (debug_mouse) {
pd_dprintf("Raw ] X: %d, Y: %d\n", data.x, data.y);
}

mouse_report.x = data.x;
mouse_report.y = data.y;
Expand Down Expand Up @@ -142,11 +142,9 @@ report_mouse_t cirque_pinnacle_get_report(report_mouse_t mouse_report) {
return mouse_report;
}

# if CONSOLE_ENABLE
if (debug_mouse && touchData.touchDown) {
dprintf("cirque_pinnacle touchData x=%4d y=%4d z=%2d\n", touchData.xValue, touchData.yValue, touchData.zValue);
pd_dprintf("cirque_pinnacle touchData x=%4d y=%4d z=%2d\n", touchData.xValue, touchData.yValue, touchData.zValue);
}
# endif

// Scale coordinates to arbitrary X, Y resolution
cirque_pinnacle_scale_data(&touchData, cirque_pinnacle_get_scale(), cirque_pinnacle_get_scale());
Expand Down Expand Up @@ -285,7 +283,7 @@ report_mouse_t pmw33xx_get_report(report_mouse_t mouse_report) {

if (!in_motion) {
in_motion = true;
dprintf("PWM3360 (0): starting motion\n");
pd_dprintf("PWM3360 (0): starting motion\n");
}

mouse_report.x = CONSTRAIN_HID_XY(report.delta_x);
Expand Down
14 changes: 14 additions & 0 deletions quantum/pointing_device_internal.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright 2022 Stefan Kerkmann
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#ifdef POINTING_DEVICE_DEBUG
# include <debug.h>
# include <print.h>
# define pd_dprintf(...) dprintf(__VA_ARGS__)
#else
# define pd_dprintf(...) \
do { \
} while (0)
#endif

0 comments on commit 7e3294d

Please sign in to comment.