irgesture3 2.1.0.0
irgesture3.h File Reference

This file contains API for IR Gesture 3 Click Driver. More...

#include "drv_digital_out.h"
#include "drv_digital_in.h"
#include "drv_i2c_master.h"

Go to the source code of this file.

Data Structures

struct  irgesture3_pd_data_t
 IR Gesture 3 Click photodiodes data object. More...
 
struct  irgesture3_t
 IR Gesture 3 Click context object. More...
 
struct  irgesture3_cfg_t
 IR Gesture 3 Click configuration object. More...
 

Macros

#define IRGESTURE3_REG_STATUS   0x00
 IR Gesture 3 register list.
 
#define IRGESTURE3_REG_INT_MASK   0x01
 
#define IRGESTURE3_REG_GPIO_DRV   0x02
 
#define IRGESTURE3_REG_BG_STATUS   0x04
 
#define IRGESTURE3_REG_FIFO_THRESH   0x06
 
#define IRGESTURE3_REG_DEVID   0x08
 
#define IRGESTURE3_REG_I2CS_ID   0x09
 
#define IRGESTURE3_REG_CLK_RATIO   0x0A
 
#define IRGESTURE3_REG_GPIO_CTRL   0x0B
 
#define IRGESTURE3_REG_SLAVE_ADDRESS_KEY   0x0D
 
#define IRGESTURE3_REG_SW_RESET   0x0F
 
#define IRGESTURE3_REG_MODE   0x10
 
#define IRGESTURE3_REG_SLOT_EN   0x11
 
#define IRGESTURE3_REG_FSAMPLE   0x12
 
#define IRGESTURE3_REG_PD_LED_SELECT   0x14
 
#define IRGESTURE3_REG_NUM_AVG   0x15
 
#define IRGESTURE3_REG_BG_MEAS_A   0x16
 
#define IRGESTURE3_REG_INT_SEQ_A   0x17
 
#define IRGESTURE3_REG_SLOTA_CH1_OFFSET   0x18
 
#define IRGESTURE3_REG_SLOTA_CH2_OFFSET   0x19
 
#define IRGESTURE3_REG_SLOTA_CH3_OFFSET   0x1A
 
#define IRGESTURE3_REG_SLOTA_CH4_OFFSET   0x1B
 
#define IRGESTURE3_REG_BG_MEAS_B   0x1C
 
#define IRGESTURE3_REG_INT_SEQ_B   0x1D
 
#define IRGESTURE3_REG_SLOTB_CH1_OFFSET   0x1E
 
#define IRGESTURE3_REG_SLOTB_CH2_OFFSET   0x1F
 
#define IRGESTURE3_REG_SLOTB_CH3_OFFSET   0x20
 
#define IRGESTURE3_REG_SLOTB_CH4_OFFSET   0x21
 
#define IRGESTURE3_REG_ILED3_COARSE   0x22
 
#define IRGESTURE3_REG_ILED1_COARSE   0x23
 
#define IRGESTURE3_REG_ILED2_COARSE   0x24
 
#define IRGESTURE3_REG_ILED_FINE   0x25
 
#define IRGESTURE3_REG_SLOTA_LED_PULSE   0x30
 
#define IRGESTURE3_REG_SLOTA_NUMPULSES   0x31
 
#define IRGESTURE3_REG_LED_DISABLE   0x34
 
#define IRGESTURE3_REG_SLOTB_LED_PULSE   0x35
 
#define IRGESTURE3_REG_SLOTB_NUMPULSES   0x36
 
#define IRGESTURE3_REG_ALT_PWR_DN   0x37
 
#define IRGESTURE3_REG_EXT_SYNC_STARTUP   0x38
 
#define IRGESTURE3_REG_SLOTA_AFE_WINDOW   0x39
 
#define IRGESTURE3_REG_SLOTB_AFE_WINDOW   0x3B
 
#define IRGESTURE3_REG_AFE_PWR_CFG1   0x3C
 
#define IRGESTURE3_REG_SLOTA_FLOAT_LED   0x3E
 
#define IRGESTURE3_REG_SLOTB_FLOAT_LED   0x3F
 
#define IRGESTURE3_REG_SLOTA_TIA_CFG   0x42
 
#define IRGESTURE3_REG_SLOTA_AFE_CFG   0x43
 
#define IRGESTURE3_REG_SLOTB_TIA_CFG   0x44
 
#define IRGESTURE3_REG_SLOTB_AFE_CFG   0x45
 
#define IRGESTURE3_REG_SAMPLE_CLK   0x4B
 
#define IRGESTURE3_REG_CLK32M_ADJUST   0x4D
 
#define IRGESTURE3_REG_EXT_SYNC_SEL   0x4F
 
#define IRGESTURE3_REG_CLK32M_CAL_EN   0x50
 
#define IRGESTURE3_REG_AFE_PWR_CFG2   0x54
 
#define IRGESTURE3_REG_TIA_INDEP_GAIN   0x55
 
#define IRGESTURE3_REG_MATH   0x58
 
#define IRGESTURE3_REG_FLT_CONFIG_B   0x59
 
#define IRGESTURE3_REG_FLT_LED_FIRE   0x5A
 
#define IRGESTURE3_REG_FLT_CONFIG_A   0x5E
 
#define IRGESTURE3_REG_DATA_ACCESS_CTL   0x5F
 
#define IRGESTURE3_REG_FIFO_ACCESS   0x60
 
#define IRGESTURE3_REG_SLOTA_PD1_16BIT   0x64
 
#define IRGESTURE3_REG_SLOTA_PD2_16BIT   0x65
 
#define IRGESTURE3_REG_SLOTA_PD3_16BIT   0x66
 
#define IRGESTURE3_REG_SLOTA_PD4_16BIT   0x67
 
#define IRGESTURE3_REG_SLOTB_PD1_16BIT   0x68
 
#define IRGESTURE3_REG_SLOTB_PD2_16BIT   0x69
 
#define IRGESTURE3_REG_SLOTB_PD3_16BIT   0x6A
 
#define IRGESTURE3_REG_SLOTB_PD4_16BIT   0x6B
 
#define IRGESTURE3_REG_A_PD1_LOW   0x70
 
#define IRGESTURE3_REG_A_PD2_LOW   0x71
 
#define IRGESTURE3_REG_A_PD3_LOW   0x72
 
#define IRGESTURE3_REG_A_PD4_LOW   0x73
 
#define IRGESTURE3_REG_A_PD1_HIGH   0x74
 
#define IRGESTURE3_REG_A_PD2_HIGH   0x75
 
#define IRGESTURE3_REG_A_PD3_HIGH   0x76
 
#define IRGESTURE3_REG_A_PD4_HIGH   0x77
 
#define IRGESTURE3_REG_B_PD1_LOW   0x78
 
#define IRGESTURE3_REG_B_PD2_LOW   0x79
 
#define IRGESTURE3_REG_B_PD3_LOW   0x7A
 
#define IRGESTURE3_REG_B_PD4_LOW   0x7B
 
#define IRGESTURE3_REG_B_PD1_HIGH   0x7C
 
#define IRGESTURE3_REG_B_PD2_HIGH   0x7D
 
#define IRGESTURE3_REG_B_PD3_HIGH   0x7E
 
#define IRGESTURE3_REG_B_PD4_HIGH   0x7F
 
#define IRGESTURE3_SAMPLE_CLK_RESERVED   0x2600u
 IR Gesture 3 SAMPLE_CLK register settings.
 
#define IRGESTURE3_SAMPLE_CLK_CLK32K_BYP_MASK   0x0100u
 
#define IRGESTURE3_SAMPLE_CLK_CLK32K_EN_MASK   0x0080u
 
#define IRGESTURE3_SAMPLE_CLK_CLK32K_ADJUST_MASK   0x003Fu
 
#define IRGESTURE3_INT_MASK_RESERVED   0x009Fu
 IR Gesture 3 INT_MASK register settings.
 
#define IRGESTURE3_INT_MASK_FIFO_INT_MASK   0x0100u
 
#define IRGESTURE3_INT_MASK_SLOTB_INT_MASK   0x0040u
 
#define IRGESTURE3_INT_MASK_SLOTA_INT_MASK   0x0020u
 
#define IRGESTURE3_GPIO_DRV_GPIO1_DRV_MASK   0x0200u
 IR Gesture 3 GPIO_DRV register settings.
 
#define IRGESTURE3_GPIO_DRV_GPIO1_POL_MASK   0x0100u
 
#define IRGESTURE3_GPIO_DRV_GPIO0_ENA_MASK   0x0004u
 
#define IRGESTURE3_GPIO_DRV_GPIO0_DRV_MASK   0x0002u
 
#define IRGESTURE3_GPIO_DRV_GPIO0_POL_MASK   0x0001u
 
#define IRGESTURE3_SLOT_EN_RDOUT_MODE_MASK   0x2000u
 IR Gesture 3 SLOT_EN register settings.
 
#define IRGESTURE3_SLOT_EN_FIFO_OVRN_PREVENT_MASK   0x1000u
 
#define IRGESTURE3_SLOT_EN_SLOTB_FIFO_MODE_MASK   0x01C0u
 
#define IRGESTURE3_SLOT_EN_SLOTB_EN_MASK   0x0020u
 
#define IRGESTURE3_SLOT_EN_SLOTA_FIFO_MODE_MASK   0x001Cu
 
#define IRGESTURE3_SLOT_EN_SLOTA_EN_MASK   0x0001u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_NC_NC_NC_NC   0x0000u
 IR Gesture 3 PD_LED_SELECT register settings.
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_34_12_NC_NC   0x0100u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_78_56_NC_NC   0x0200u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_1234_NC_NC_NC   0x0300u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_5_6_7_8   0x0400u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_1_2_3_4   0x0500u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_34_56_NC_NC   0x0600u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_5678_NC_NC_NC   0x0700u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_PD_SEL_MASK   0x0F00u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_NC_NC_NC_NC   0x0000u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_34_12_NC_NC   0x0010u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_78_56_NC_NC   0x0020u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_1234_NC_NC_NC   0x0030u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_5_6_7_8   0x0040u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_1_2_3_4   0x0050u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_34_56_NC_NC   0x0060u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_5678_NC_NC_NC   0x0070u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_PD_SEL_MASK   0x00F0u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_LED_FLOAT   0x0000u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_LED_1   0x0004u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_LED_2   0x0008u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_LED_3   0x000Cu
 
#define IRGESTURE3_PD_LED_SELECT_SLOTB_LED_SEL_MASK   0x000Cu
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_LED_FLOAT   0x0000u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_LED_1   0x0001u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_LED_2   0x0002u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_LED_3   0x0003u
 
#define IRGESTURE3_PD_LED_SELECT_SLOTA_LED_SEL_MASK   0x0003u
 
#define IRGESTURE3_NUM_AVG_SLOTB_1   0x0000u
 IR Gesture 3 NUM_AVG register settings.
 
#define IRGESTURE3_NUM_AVG_SLOTB_2   0x0100u
 
#define IRGESTURE3_NUM_AVG_SLOTB_4   0x0200u
 
#define IRGESTURE3_NUM_AVG_SLOTB_8   0x0300u
 
#define IRGESTURE3_NUM_AVG_SLOTB_16   0x0400u
 
#define IRGESTURE3_NUM_AVG_SLOTB_32   0x0500u
 
#define IRGESTURE3_NUM_AVG_SLOTB_64   0x0600u
 
#define IRGESTURE3_NUM_AVG_SLOTB_128   0x0700u
 
#define IRGESTURE3_NUM_AVG_SLOTB_MASK   0x0700u
 
#define IRGESTURE3_NUM_AVG_SLOTA_1   0x0000u
 
#define IRGESTURE3_NUM_AVG_SLOTA_2   0x0010u
 
#define IRGESTURE3_NUM_AVG_SLOTA_4   0x0020u
 
#define IRGESTURE3_NUM_AVG_SLOTA_8   0x0030u
 
#define IRGESTURE3_NUM_AVG_SLOTA_16   0x0040u
 
#define IRGESTURE3_NUM_AVG_SLOTA_32   0x0050u
 
#define IRGESTURE3_NUM_AVG_SLOTA_64   0x0060u
 
#define IRGESTURE3_NUM_AVG_SLOTA_128   0x0070u
 
#define IRGESTURE3_NUM_AVG_SLOTA_MASK   0x0070u
 
#define IRGESTURE3_INT_SEQ_A_INTEG_ORDER_A_1001   0x0009u
 IR Gesture 3 INT_SEQ_A register settings.
 
#define IRGESTURE3_INT_SEQ_A_INTEG_ORDER_A_MASK   0x000Fu
 
#define IRGESTURE3_ILED1_COARSE_RESERVED   0x1000u
 IR Gesture 3 ILED1_COARSE register settings.
 
#define IRGESTURE3_ILED1_COARSE_SCALE_10_PCT   0x0000u
 
#define IRGESTURE3_ILED1_COARSE_SCALE_100_PCT   0x2000u
 
#define IRGESTURE3_ILED1_COARSE_SCALE_MASK   0x2000u
 
#define IRGESTURE3_ILED1_COARSE_SLEW_MIN   0x0000u
 
#define IRGESTURE3_ILED1_COARSE_SLEW_3   0x0030u
 
#define IRGESTURE3_ILED1_COARSE_SLEW_MAX   0x0070u
 
#define IRGESTURE3_ILED1_COARSE_SLEW_MASK   0x0070u
 
#define IRGESTURE3_ILED1_COARSE_COARSE_MIN   0x0000u
 
#define IRGESTURE3_ILED1_COARSE_COARSE_6   0x0006u
 
#define IRGESTURE3_ILED1_COARSE_COARSE_MAX   0x000Fu
 
#define IRGESTURE3_ILED1_COARSE_COARSE_MASK   0x000Fu
 
#define IRGESTURE3_SLOTA_NUMPULSES_PULSES_4   0x0400u
 IR Gesture 3 SLOTA_NUMPULSES register settings.
 
#define IRGESTURE3_SLOTA_NUMPULSES_PULSES_MASK   0xFF00u
 
#define IRGESTURE3_SLOTA_NUMPULSES_PERIOD_15_US   0x000Eu
 
#define IRGESTURE3_SLOTA_NUMPULSES_PERIOD_MASK   0x00FFu
 
#define IRGESTURE3_SLOTA_AFE_WINDOW_WIDTH_4_US   0x2000u
 IR Gesture 3 SLOTA_AFE_WINDOW register settings.
 
#define IRGESTURE3_SLOTA_AFE_WINDOW_WIDTH_MASK   0xF800u
 
#define IRGESTURE3_SLOTA_AFE_WINDOW_OFFSET_23_5_US   0x02F0u
 
#define IRGESTURE3_SLOTA_AFE_WINDOW_OFFSET_MASK   0x07FFu
 
#define IRGESTURE3_MATH_FLT_MATH34_B_ADD_1_2   0x0000u
 IR Gesture 3 MATH register settings.
 
#define IRGESTURE3_MATH_FLT_MATH34_B_ADD_1_SUB_2   0x0400u
 
#define IRGESTURE3_MATH_FLT_MATH34_B_SUB_1_ADD_2   0x0800u
 
#define IRGESTURE3_MATH_FLT_MATH34_B_SUB_1_2   0x0C00u
 
#define IRGESTURE3_MATH_FLT_MATH34_B_MASK   0x0C00u
 
#define IRGESTURE3_MATH_FLT_MATH34_A_ADD_1_2   0x0000u
 
#define IRGESTURE3_MATH_FLT_MATH34_A_ADD_1_SUB_2   0x0100u
 
#define IRGESTURE3_MATH_FLT_MATH34_A_SUB_1_ADD_2   0x0200u
 
#define IRGESTURE3_MATH_FLT_MATH34_A_SUB_1_2   0x0300u
 
#define IRGESTURE3_MATH_FLT_MATH34_A_MASK   0x0300u
 
#define IRGESTURE3_MATH_ENA_INT_AS_BUF_MASK   0x0080u
 
#define IRGESTURE3_MATH_FLT_MATH12_B_ADD_1_2   0x0000u
 
#define IRGESTURE3_MATH_FLT_MATH12_B_ADD_1_SUB_2   0x0020u
 
#define IRGESTURE3_MATH_FLT_MATH12_B_SUB_1_ADD_2   0x0040u
 
#define IRGESTURE3_MATH_FLT_MATH12_B_SUB_1_2   0x0060u
 
#define IRGESTURE3_MATH_FLT_MATH12_B_MASK   0x0060u
 
#define IRGESTURE3_MATH_FLT_MATH12_A_ADD_1_2   0x0000u
 
#define IRGESTURE3_MATH_FLT_MATH12_A_ADD_1_SUB_2   0x0002u
 
#define IRGESTURE3_MATH_FLT_MATH12_A_SUB_1_ADD_2   0x0004u
 
#define IRGESTURE3_MATH_FLT_MATH12_A_SUB_1_2   0x0006u
 
#define IRGESTURE3_MATH_FLT_MATH12_A_MASK   0x0006u
 
#define IRGESTURE3_INT_OSC   32000u
 IR Gesture 3 FSAMPLE register settings.
 
#define IRGESTURE3_FSAMPLE_500_HZ   500u
 
#define IRGESTURE3_FSAMPLE_MAX   2000u
 
#define IRGESTURE3_SW_RESET   0x0001u
 IR Gesture 3 SW_RESET register settings.
 
#define IRGESTURE3_MODE_STANDBY   0x0000u
 IR Gesture 3 MODE register settings.
 
#define IRGESTURE3_MODE_PROGRAM   0x0001u
 
#define IRGESTURE3_MODE_NORMAL   0x0002u
 
#define IRGESTURE3_STATUS_FIFO_SAMPLES_MASK   0xFF00u
 IR Gesture 3 STATUS register settings.
 
#define IRGESTURE3_STATUS_SLOTB_INT_MASK   0x0040u
 
#define IRGESTURE3_STATUS_SLOTA_INT_MASK   0x0020u
 
#define IRGESTURE3_STATUS_CLEAR   0xFFFFu
 
#define IRGESTURE3_TIMEOUT_MS   5000u
 IR Gesture 3 timeout value for data ready.
 
#define IRGESTURE3_MIN_NUM_SAMPLES   5
 IR Gesture 3 gesture calculation values.
 
#define IRGESTURE3_MAX_NUM_SAMPLES   500
 
#define IRGESTURE3_LIGHT_THRESHOLD   1000
 
#define IRGESTURE3_DISTANCE_THRESHOLD   0.07f
 
#define IRGESTURE3_GESTURE_CLICK   0
 
#define IRGESTURE3_GESTURE_SWIPE_UP   1
 
#define IRGESTURE3_GESTURE_SWIPE_DOWN   2
 
#define IRGESTURE3_GESTURE_SWIPE_LEFT   3
 
#define IRGESTURE3_GESTURE_SWIPE_RIGHT   4
 
#define IRGESTURE3_DEVICE_ID   0x16
 IR Gesture 3 device ID value.
 
#define IRGESTURE3_DEVICE_ID_MASK   0xFF
 
#define IRGESTURE3_DEVICE_ADDRESS   0x64
 IR Gesture 3 device address setting.
 
#define IRGESTURE3_MAP_MIKROBUS(cfg, mikrobus)
 MikroBUS pin mapping.
 

Enumerations

enum  irgesture3_return_value_t { IRGESTURE3_OK = 0 , IRGESTURE3_ERROR = -1 }
 IR Gesture 3 Click return value data. More...
 

Functions

void irgesture3_cfg_setup (irgesture3_cfg_t *cfg)
 IR Gesture 3 configuration object setup function.
 
err_t irgesture3_init (irgesture3_t *ctx, irgesture3_cfg_t *cfg)
 IR Gesture 3 initialization function.
 
err_t irgesture3_default_cfg (irgesture3_t *ctx)
 IR Gesture 3 default configuration function.
 
err_t irgesture3_write_register (irgesture3_t *ctx, uint8_t reg, uint16_t data_in)
 IR Gesture 3 write register function.
 
err_t irgesture3_read_register (irgesture3_t *ctx, uint8_t reg, uint16_t *data_out)
 IR Gesture 3 read register function.
 
err_t irgesture3_check_communication (irgesture3_t *ctx)
 IR Gesture 3 check communication function.
 
uint8_t irgesture3_get_io0_pin (irgesture3_t *ctx)
 IR Gesture 3 get io0 function.
 
uint8_t irgesture3_get_io1_pin (irgesture3_t *ctx)
 IR Gesture 3 get io1 function.
 
err_t irgesture3_sw_reset (irgesture3_t *ctx)
 IR Gesture 3 sw reset function.
 
err_t irgesture3_set_mode (irgesture3_t *ctx, uint8_t mode)
 IR Gesture 3 set mode function.
 
err_t irgesture3_set_adc_fsample (irgesture3_t *ctx, uint16_t freq_hz)
 IR Gesture 3 set adc fsample function.
 
err_t irgesture3_clear_status (irgesture3_t *ctx)
 IR Gesture 3 clear status function.
 
err_t irgesture3_wait_data_ready (irgesture3_t *ctx)
 IR Gesture 3 wait data ready function.
 
err_t irgesture3_get_pd_data (irgesture3_t *ctx, irgesture3_pd_data_t *pd_data)
 IR Gesture 3 get pd data function.
 
err_t irgesture3_get_gesture (irgesture3_t *ctx, uint8_t *gesture)
 IR Gesture 3 get gesture function.
 

Detailed Description

This file contains API for IR Gesture 3 Click Driver.

Enumeration Type Documentation

◆ irgesture3_return_value_t

IR Gesture 3 Click return value data.

Predefined enum values for driver return values.

Enumerator
IRGESTURE3_OK 
IRGESTURE3_ERROR