# pragma once 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "selfdrive/sensord/sensors/i2c_sensor.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Address of the chip on the bus
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_ADDR       0x6A 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Registers of the chip
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_REG_DRDY_CFG  0x0B 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_REG_ID        0x0F 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_REG_INT1_CTRL 0x0D 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_REG_CTRL2_G   0x11 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_REG_CTRL5_C   0x14 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_REG_STAT_REG  0x1E 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_I2C_REG_OUTX_L_G  0x22 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_POSITIVE_TEST   (0b01 << 2) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_NEGATIVE_TEST   (0b11 << 2) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Constants
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_CHIP_ID         0x69 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3TRC_GYRO_CHIP_ID      0x6A 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_FS_2000dps      (0b11 << 2) 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_ODR_104HZ       (0b0100 << 4) 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_ODR_208HZ       (0b0101 << 4) 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_INT1_DRDY_G     0b10 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_DRDY_GDA        0b10 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_DRDY_PULSE_MODE (1 << 7) 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_MIN_ST_LIMIT_mdps 150000.0f 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define LSM6DS3_GYRO_MAX_ST_LIMIT_mdps 700000.0f 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class  LSM6DS3_Gyro  :  public  I2CSensor  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  uint8_t  get_device_address ( )  { return  LSM6DS3_GYRO_I2C_ADDR ; } 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  cereal : : SensorEventData : : SensorSource  source  =  cereal : : SensorEventData : : SensorSource : : LSM6DS3 ; 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  // self test functions
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  int  self_test ( int  test_type ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  void  wait_for_data_ready ( ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  void  read_and_avg_data ( float *  val_st_off ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								public : 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  LSM6DS3_Gyro ( I2CBus  * bus ,  int  gpio_nr  =  0 ,  bool  shared_gpio  =  false ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  int  init ( ) ; 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  bool  get_event ( MessageBuilder  & msg ,  uint64_t  ts  =  0 ) ; 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  int  shutdown ( ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;