From f9ed1e3ebc66b568a20848ae0f07052fbef5e4a8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 14 Sep 2023 13:57:10 +1000 Subject: fc660c/fc980c: clean up actuation point adjustment code (#21964) Co-authored-by: Joel Challis --- keyboards/fc980c/fc980c.c | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) (limited to 'keyboards/fc980c/fc980c.c') diff --git a/keyboards/fc980c/fc980c.c b/keyboards/fc980c/fc980c.c index fc3696f244..c1c62da9ac 100644 --- a/keyboards/fc980c/fc980c.c +++ b/keyboards/fc980c/fc980c.c @@ -15,16 +15,46 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "quantum.h" +#include "fc980c.h" #ifdef ACTUATION_DEPTH_ADJUSTMENT -#include "actuation_point.h" -#endif - void matrix_init_kb(void) { -#ifdef ACTUATION_DEPTH_ADJUSTMENT adjust_actuation_point(ACTUATION_DEPTH_ADJUSTMENT); -#endif - matrix_init_user(); + matrix_init_user(); +} + +void actuation_point_up(void) { + // write RDAC register: lower value makes actuation point shallow + uint8_t rdac = ad5258_read_rdac(); + if (rdac == 0) { + ad5258_write_rdac(0); + } else { + ad5258_write_rdac(rdac - 1); + } } + +void actuation_point_down(void) { + // write RDAC register: higher value makes actuation point deep + uint8_t rdac = ad5258_read_rdac(); + if (rdac == 63) { + ad5258_write_rdac(63); + } else { + ad5258_write_rdac(rdac + 1); + } +} + +void adjust_actuation_point(int offset) { + ad5258_init(); + uint8_t rdac = ad5258_read_eeprom() + offset; + if (rdac > 63) { // protects from under and overflows + if (offset > 0) { + ad5258_write_rdac(63); + } else { + ad5258_write_rdac(0); + } + } else { + ad5258_write_rdac(rdac); + } +} +#endif -- cgit v1.2.3