Rework and expand Pointing Device support (#14343)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
This commit is contained in:
parent
462c3a6151
commit
56e3f06a26
60 changed files with 2107 additions and 1705 deletions
|
@ -18,6 +18,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "report.h"
|
||||
#include "spi_master.h"
|
||||
|
||||
#ifndef PMW3360_CPI
|
||||
|
@ -25,7 +27,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef PMW3360_CLOCK_SPEED
|
||||
# define PMW3360_CLOCK_SPEED 70000000
|
||||
# define PMW3360_CLOCK_SPEED 2000000
|
||||
#endif
|
||||
|
||||
#ifndef PMW3360_SPI_LSBFIRST
|
||||
|
@ -52,6 +54,17 @@
|
|||
# error "No chip select pin defined -- missing PMW3360_CS_PIN"
|
||||
#endif
|
||||
|
||||
/*
|
||||
The pmw33660 and pmw3389 use the same registers and timing and such.
|
||||
The only differences between the two is the firmware used, and the
|
||||
range for the DPI. So add a semi-secret hack to allow use of the
|
||||
pmw3389's firmware blob. Also, can set the max cpi range too.
|
||||
This should work for the 3390 and 3391 too, in theory.
|
||||
*/
|
||||
#ifndef PMW3360_FIRMWARE_H
|
||||
# define PMW3360_FIRMWARE_H "pmw3360_firmware.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
void print_byte(uint8_t byte);
|
||||
#endif
|
||||
|
@ -64,19 +77,18 @@ typedef struct {
|
|||
int8_t mdx;
|
||||
int16_t dy; // displacement on y directions.
|
||||
int8_t mdy;
|
||||
} report_pmw_t;
|
||||
} report_pmw3360_t;
|
||||
|
||||
bool spi_start_adv(void);
|
||||
void spi_stop_adv(void);
|
||||
spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data);
|
||||
uint8_t spi_read_adv(uint8_t reg_addr);
|
||||
bool pmw_spi_init(void);
|
||||
void pmw_set_cpi(uint16_t cpi);
|
||||
uint16_t pmw_get_cpi(void);
|
||||
void pmw_upload_firmware(void);
|
||||
bool pmw_check_signature(void);
|
||||
report_pmw_t pmw_read_burst(void);
|
||||
bool spi_start_adv(void);
|
||||
void spi_stop_adv(void);
|
||||
spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data);
|
||||
uint8_t spi_read_adv(uint8_t reg_addr);
|
||||
bool pmw3360_init(void);
|
||||
void pmw3360_set_cpi(uint16_t cpi);
|
||||
uint16_t pmw3360_get_cpi(void);
|
||||
void pmw3360_upload_firmware(void);
|
||||
bool pmw3360_check_signature(void);
|
||||
report_pmw3360_t pmw3360_read_burst(void);
|
||||
|
||||
#define degToRad(angleInDegrees) ((angleInDegrees)*M_PI / 180.0)
|
||||
#define radToDeg(angleInRadians) ((angleInRadians)*180.0 / M_PI)
|
||||
#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue