123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- #ifndef ADNS2080_H
- #define ADNS2080_H
- #include <stdbool.h>
- #include <stdint.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef enum
- {
- ADNS2080_OK,
- ADNS2080_SERIAL_COMM_FAILURE,
- ADNS2080_CHIP_NOT_DETECTED,
- ADNS2080_INVALID_PARAMETER
- } adns2080_status_t;
- typedef enum
- {
- ADNS2080_MOTION_OUTPUT_POLARITY_LOW = 0,
- ADNS2080_MOTION_OUTPUT_POLARITY_HIGH = 1
- } motion_output_polarity_t;
- typedef enum
- {
- ADNS2080_MOTION_OUTPUT_SENSITIVITY_LEVEL = 0,
- ADNS2080_MOTION_OUTPUT_SENSITIVITY_EDGE = 1
- } motion_output_sensitivity_t;
- typedef enum
- {
- ADNS2080_RESOLUTION_250DPI = 1,
- ADNS2080_RESOLUTION_500DPI = 2,
- ADNS2080_RESOLUTION_1000DPI = 0,
- ADNS2080_RESOLUTION_1250DPI = 3,
- ADNS2080_RESOLUTION_1500DPI = 4,
- ADNS2080_RESOLUTION_1750DPI = 5,
- ADNS2080_RESOLUTION_2000DPI = 6
- } adns2080_resolution_t;
- typedef enum
- {
- ADNS2080_MODE_NORMAL = 0,
- ADNS2080_MODE_REST1 = 1,
- ADNS2080_MODE_REST2 = 2,
- ADNS2080_MODE_REST3 = 3,
- ADNS2080_MODE_RUN1 = 4,
- ADNS2080_MODE_RUN2 = 5,
- ADNS2080_MODE_IDLE = 6
- } adns2080_mode_t;
- typedef enum
- {
- ADNS2080_MOTION_BITS_8 = 0,
- ADNS2080_MOTION_BITS_12 = 1
- } adns2080_motion_bits_t;
- adns2080_status_t adns2080_init(void);
- void adns2080_reset(void);
- uint8_t adns2080_product_id_read(void);
- uint8_t adns2080_revision_id_read(void);
- void adns2080_powerdown(void);
- void adns2080_wakeup(void);
- adns2080_status_t adns2080_motion_interrupt_set(motion_output_polarity_t polarity, motion_output_sensitivity_t sensitivity);
- adns2080_status_t adns2080_resolution_set(adns2080_resolution_t resolution);
- adns2080_status_t adns2080_motion_bits_set(adns2080_motion_bits_t motion_bits);
- adns2080_motion_bits_t adns2080_motion_bits_read(void);
- void adns2080_movement_read(int16_t *p_delta_x, int16_t *p_delta_y);
- bool adns2080_is_motion_detected(void);
- void adns2080_rest_periods_set(uint8_t rest1_period, uint8_t rest2_period, uint8_t rest3_period);
- void adns2080_downshift_times_set(uint8_t run_to_rest1_mode_time, uint8_t rest1_to_rest2_mode_time, uint8_t rest2_to_rest3_mode_time);
- void adns2080_force_mode_set(adns2080_mode_t mode);
- adns2080_mode_t adns2080_force_mode_read(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|