summaryrefslogtreecommitdiff
path: root/drivers/sensors/pimoroni_trackball.h
diff options
context:
space:
mode:
authorDasky <32983009+daskygit@users.noreply.github.com>2021-08-19 19:58:17 +0100
committerGitHub <noreply@github.com>2021-08-19 11:58:17 -0700
commit7f1c90b7a8d66b806f87229fb96e5c69ee9fb1a4 (patch)
tree4c4d1fc9be221d4f008f77463bfc02fe4b1bfa4c /drivers/sensors/pimoroni_trackball.h
parente988f58374a138a1af79a141dc8eda54c8782907 (diff)
[Core] Speed up pimoroni trackball driver (#13823)
Diffstat (limited to 'drivers/sensors/pimoroni_trackball.h')
-rw-r--r--drivers/sensors/pimoroni_trackball.h30
1 files changed, 16 insertions, 14 deletions
diff --git a/drivers/sensors/pimoroni_trackball.h b/drivers/sensors/pimoroni_trackball.h
index 9e3c64c19c..6b2a41425d 100644
--- a/drivers/sensors/pimoroni_trackball.h
+++ b/drivers/sensors/pimoroni_trackball.h
@@ -1,4 +1,5 @@
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+ * Copyright 2021 Dasky (@daskygit)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,23 +14,24 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#pragma once
#include "quantum.h"
#include "pointing_device.h"
-#ifndef TRACKBALL_ADDRESS
-# define TRACKBALL_ADDRESS 0x0A
-#endif
-#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE)
-#define TRACKBALL_READ (TRACKBALL_ADDRESS << 1)
-
-void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
-void trackball_check_click(bool pressed, report_mouse_t *mouse);
-void trackball_register_button(bool pressed, enum mouse_buttons button);
+typedef struct pimoroni_data {
+ uint8_t left;
+ uint8_t right;
+ uint8_t up;
+ uint8_t down;
+ uint8_t click;
+} pimoroni_data;
-float trackball_get_precision(void);
-void trackball_set_precision(float precision);
-bool trackball_is_scrolling(void);
-void trackball_set_scrolling(bool scroll);
+void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
+void trackball_click(bool pressed, report_mouse_t* mouse);
+int16_t trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale);
+void trackball_adapt_values(int8_t* mouse, int16_t* offset);
+float trackball_get_precision(void);
+void trackball_set_precision(float precision);
+bool trackball_is_scrolling(void);
+void trackball_set_scrolling(bool scroll);