int LSM6DSLSensor::enableDoubleTapDetection()

in AZ3166/src/libraries/Sensors/src/LSM6DSLSensor.cpp [1491:1581]


int LSM6DSLSensor::enableDoubleTapDetection(LSM6DSL_Interrupt_Pin_t pin)
{
  /* Output Data Rate selection */
  if( setXOdr(416.0f) == 1 )
  {
    return 1;
  }
  
  /* Full scale selection. */
  if( setXFullScale(2.0f) == 1 )
  {
    return 1;
  }

  /* Enable X direction in tap recognition. */
  if ( LSM6DSL_ACC_GYRO_W_TAP_X_EN( (void *)this, LSM6DSL_ACC_GYRO_TAP_X_EN_ENABLED ) == MEMS_ERROR )
  {
    return 1;
  }
  
  /* Enable Y direction in tap recognition. */
  if ( LSM6DSL_ACC_GYRO_W_TAP_Y_EN( (void *)this, LSM6DSL_ACC_GYRO_TAP_Y_EN_ENABLED ) == MEMS_ERROR )
  {
    return 1;
  }
  
  /* Enable Z direction in tap recognition. */
  if ( LSM6DSL_ACC_GYRO_W_TAP_Z_EN( (void *)this, LSM6DSL_ACC_GYRO_TAP_Z_EN_ENABLED ) == MEMS_ERROR )
  {
    return 1;
  }
  
  /* Set tap threshold. */
  if ( setTapThreshold( LSM6DSL_TAP_THRESHOLD_MID_LOW ) == 1 )
  {
    return 1;
  }
  
  /* Set tap shock time window. */
  if ( setTapShockTime( LSM6DSL_TAP_SHOCK_TIME_HIGH ) == 1 )
  {
    return 1;
  }
  
  /* Set tap quiet time window. */
  if ( setTapQuietTime( LSM6DSL_TAP_QUIET_TIME_HIGH ) == 1 )
  {
    return 1;
  }
  
  /* Set tap duration time window. */
  if ( setTapDurationTime( LSM6DSL_TAP_DURATION_TIME_MID ) == 1 )
  {
    return 1;
  }
  
  /* Single and double tap enabled. */
  if ( LSM6DSL_ACC_GYRO_W_SINGLE_DOUBLE_TAP_EV( (void *)this, LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_DOUBLE_TAP ) == MEMS_ERROR )
  {
    return 1;
  }
  
  /* Enable basic Interrupts */
  if ( LSM6DSL_ACC_GYRO_W_BASIC_INT( (void *)this, LSM6DSL_ACC_GYRO_BASIC_INT_ENABLED ) == MEMS_ERROR )
  {
    return 1;
  }
  
  /* Enable double tap on either INT1 or INT2 pin */
  switch (pin)
  {
  case LSM6DSL_INT1_PIN:
    if ( LSM6DSL_ACC_GYRO_W_TapEvOnInt1( (void *)this, LSM6DSL_ACC_GYRO_INT1_TAP_ENABLED ) == MEMS_ERROR )
    {
      return 1;
    }
    break;

  case LSM6DSL_INT2_PIN:
    if ( LSM6DSL_ACC_GYRO_W_TapEvOnInt2( (void *)this, LSM6DSL_ACC_GYRO_INT2_TAP_ENABLED ) == MEMS_ERROR )
    {
      return 1;
    }
    break;

  default:
    return 1;
  }
  
  return 0;
}