/****************************************************************************/
/* Copyright 1993 MBARI                                                     */
/****************************************************************************/
/* Summary  : IBC Filter Function Declarations                              */
/* Filename : filter.h                                                      */
/* Author   : Andrew Pearce                                                 */
/* Project  : New ROV IBC Based Data Concentrator                           */
/* Version  : 1.0                                                           */
/* Created  : 03/03/93                                                      */
/* Modified : 12/19/94                                                      */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/* $Header: /usr/tiburon/.cvsroot/micro/h/filter.h,v 1.1.1.1 1997/05/02 17:15:38 pean Exp $
 * $Log: filter.h,v $
 * Revision 1.1.1.1  1997/05/02 17:15:38  pean
 * Initial release of the microcontroller software after Tiburon
 * Moolpool Dive to test IView, Lapboxes, modified Power can
 * GF/5V using bus capacitance mode.
 *
 * Revision 1.1  93/07/02  09:19:58  09:19:58  pean (Andrew Pearce)
 * Initial revision
 *
*/
/****************************************************************************/

#define IIR_RAW_SIZE       2            /* Size of raw data array for filter*/
#define IIR_FILT_SIZE      2            /* Size of filter data array        */
#define IIR_FILT_MAX_BITS 14            /* Number of bits for filter gain   */

#define IIR_SAMPLE_MAX    10            /* Numer of values before filter OK */

typedef struct                          /* Filter data structure            */
{
    Nat16 sampleCount;
    Int16 raw[IIR_RAW_SIZE];            /* Raw data values                  */
    Int16 filtered[IIR_FILT_SIZE];      /* Filtered data values             */
    Nat16 filterGain;                   /* Scales to improve dynamic range  */
} filterParam;

#ifdef __STDC__                         /* ANSI C function prototypes       */

Void initIIRFilter(filterParam *filterData, Int16 maxValue);

Int16 IIRfilter(Int16 newRaw, Int16 *newFiltered, filterParam *filter);

#endif
