text: // -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
  
  /****************************************************************************
   *
   *   Copyright (C) 2012 PX4 Development Team. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 3. Neither the name PX4 nor the names of its contributors may be
   *    used to endorse or promote products derived from this software
   *    without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
   * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
   * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGE.
   *
   ****************************************************************************/
  
  /// @file	LowPassFilter.h
  /// @brief	A class to implement a second order low pass filter
  /// Author: Leonard Hall <LeonardTHall@gmail.com>
  /// Adapted for PX4 by Andrew Tridgell
  
  #pragma once
  
  namespace math
  {
  class __EXPORT HighPassFilter2
  {
  public:
  	// constructor
  	HighPassFilter2(void)
  	{
  		T1 = 0.0f;
  		T2 = 0.0f;
  		output_prev = 0.0f;
  		output_prev_prev = 0.0f;
  		input_prev = 0.0f;
  		input_prev_prev = 0.0f;
  	}
  
  	/**
  	 * Change filter parameters
  	 */
  	void set_constant(float time_constant1, float time_constant2);
  	void initialization(float time_constant1, float time_constant2);
  
  	/**
  	 * Add a new raw value to the filter
  	 *
  	 * @return retrieve the filtered result
  	 */
  	float update(float input, float dt);
  
  
  private:
  	//Previous output
  	float output_prev;
  
  	float output_prev_prev;
  
  	float input_prev;
  
  	float input_prev_prev;
  
  	//Time constant
  	float T1;
  	float T2;
  };
  
  } // namespace math
  