37#ifndef DRIVER_PMW3901MB_H
38#define DRIVER_PMW3901MB_H
86 uint8_t (*
spi_read)(uint8_t reg, uint8_t *buf, uint16_t len);
87 uint8_t (*
spi_write)(uint8_t reg, uint8_t *buf, uint16_t len);
126#define DRIVER_PMW3901MB_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
134#define DRIVER_PMW3901MB_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
142#define DRIVER_PMW3901MB_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
150#define DRIVER_PMW3901MB_LINK_SPI_READ(HANDLE, FUC) (HANDLE)->spi_read = FUC
158#define DRIVER_PMW3901MB_LINK_SPI_WRITE(HANDLE, FUC) (HANDLE)->spi_write = FUC
166#define DRIVER_PMW3901MB_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
174#define DRIVER_PMW3901MB_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
182#define DRIVER_PMW3901MB_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
190#define DRIVER_PMW3901MB_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
198#define DRIVER_PMW3901MB_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
uint8_t pmw3901mb_init(pmw3901mb_handle_t *handle)
initialize the chip
uint8_t pmw3901mb_set_raw_data_grab(pmw3901mb_handle_t *handle, uint8_t *grab, uint16_t len)
set the raw data grab
uint8_t pmw3901mb_stop_frame_capture(pmw3901mb_handle_t *handle)
stop frame capture
uint8_t pmw3901mb_get_min_raw_data(pmw3901mb_handle_t *handle, uint8_t *min)
get the minimum raw data value
struct pmw3901mb_handle_s pmw3901mb_handle_t
pmw3901mb handle structure definition
uint8_t pmw3901mb_get_shutter(pmw3901mb_handle_t *handle, uint16_t *shutter)
get the shutter
uint8_t pmw3901mb_get_motion_burst(pmw3901mb_handle_t *handle, uint8_t *burst, uint8_t len)
get the motion burst
uint8_t pmw3901mb_set_observation(pmw3901mb_handle_t *handle, uint8_t observation)
set the observation
uint8_t pmw3901mb_set_motion(pmw3901mb_handle_t *handle, uint8_t motion)
set the motion
uint8_t pmw3901mb_get_motion(pmw3901mb_handle_t *handle, uint8_t *motion)
get the motion
struct pmw3901mb_info_s pmw3901mb_info_t
pmw3901mb information structure definition
uint8_t pmw3901mb_get_squal(pmw3901mb_handle_t *handle, uint8_t *squal)
get the surface quality
uint8_t pmw3901mb_get_delta_y(pmw3901mb_handle_t *handle, int16_t *delta)
get the delta y
uint8_t pmw3901mb_get_delta_x(pmw3901mb_handle_t *handle, int16_t *delta)
get the delta x
uint8_t pmw3901mb_get_frame(pmw3901mb_handle_t *handle, uint8_t frame[35][35])
get the frame
uint8_t pmw3901mb_get_max_raw_data(pmw3901mb_handle_t *handle, uint8_t *max)
get the maximum raw data value
uint8_t pmw3901mb_set_optimum_performance(pmw3901mb_handle_t *handle)
set the optimum performance
uint8_t pmw3901mb_power_up(pmw3901mb_handle_t *handle)
power up the chip
uint8_t pmw3901mb_shutdown(pmw3901mb_handle_t *handle)
shutdown the chip
uint8_t pmw3901mb_info(pmw3901mb_info_t *info)
get chip's information
uint8_t pmw3901mb_get_raw_data_sum(pmw3901mb_handle_t *handle, uint8_t *sum)
get the average raw data value
struct pmw3901mb_motion_s pmw3901mb_motion_t
pmw3901mb motion structure definition
uint8_t pmw3901mb_get_product_id(pmw3901mb_handle_t *handle, uint8_t *id)
get the product id
uint8_t pmw3901mb_get_inverse_product_id(pmw3901mb_handle_t *handle, uint8_t *id)
get the inverse product id
uint8_t pmw3901mb_get_raw_data_grab(pmw3901mb_handle_t *handle, uint8_t *grab, uint16_t len)
get the raw data grab
uint8_t pmw3901mb_delta_raw_to_delta_cm(pmw3901mb_handle_t *handle, int16_t raw, float height_m, float *cm)
convert the delta raw to the delta cm
uint8_t pmw3901mb_get_observation(pmw3901mb_handle_t *handle, uint8_t *observation)
get the observation
uint8_t pmw3901mb_deinit(pmw3901mb_handle_t *handle)
close the chip
uint8_t pmw3901mb_get_raw_data_grab_status(pmw3901mb_handle_t *handle, uint8_t *status)
get the raw data grab status
uint8_t pmw3901mb_reset(pmw3901mb_handle_t *handle)
reset the chip
uint8_t pmw3901mb_burst_read(pmw3901mb_handle_t *handle, pmw3901mb_motion_t *motion)
burst read data
uint8_t pmw3901mb_start_frame_capture(pmw3901mb_handle_t *handle)
start frame capture
uint8_t pmw3901mb_get_revision_id(pmw3901mb_handle_t *handle, uint8_t *id)
get the revision id
uint8_t pmw3901mb_get_reg(pmw3901mb_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
uint8_t pmw3901mb_set_reg(pmw3901mb_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
pmw3901mb handle structure definition
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_read)(uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* spi_write)(uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* reset_gpio_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* spi_deinit)(void)
uint8_t(* reset_gpio_init)(void)
uint8_t(* reset_gpio_write)(uint8_t value)
pmw3901mb information structure definition
float supply_voltage_max_v
char manufacturer_name[32]
float supply_voltage_min_v
pmw3901mb motion structure definition