nidas  v1.2-1520
Classes | Macros | Functions
short_filters.c File Reference
#include <linux/module.h>
#include <linux/version.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <nidas/linux/klog.h>
#include <nidas/linux/Revision.h>
#include "short_filters_kernel.h"

Classes

struct  pickoff_filter
 Private data used by a pickoff filter. More...
 
struct  boxcar_filter
 Private data used by a boxcar filter. More...
 
struct  timeavg_filter
 Private data used by a timeavg filter. More...
 

Macros

#define REPO_REVISION   "unknown"
 
#define F_MALLOC(x)   kmalloc(x,GFP_KERNEL)
 

Functions

 MODULE_AUTHOR ("Gordon Maclean <maclean@ucar.edu>")
 
 MODULE_LICENSE ("Dual BSD/GPL")
 
 MODULE_DESCRIPTION ("Some simple filters for A2D data")
 
 MODULE_VERSION (REPO_REVISION)
 
static void * pickoff_init (void)
 Constructor for a pickoff filter. More...
 
static int pickoff_config (struct short_filter_data *fdata, const void *cfg, int nbcfg)
 Configure a pickoff filter. More...
 
static int pickoff_filter (void *obj, dsm_sample_time_t tt, const short *in, int skip_factor, short_sample_t *out)
 Pickoff filter method. More...
 
static void pickoff_cleanup (void *obj)
 Destructor for a pickoff filter. More...
 
static void * boxcar_init (void)
 Constructor for a boxcar filter. More...
 
static int boxcar_config (struct short_filter_data *fdata, const void *cfg, int nbcfg)
 Configure a boxcar filter. More...
 
static int boxcar_filter (void *obj, dsm_sample_time_t tt, const short *in, int skip_factor, short_sample_t *out)
 Boxcar filter method. More...
 
static void boxcar_cleanup (void *obj)
 Destructor for a boxcar filter. More...
 
static void * timeavg_init (void)
 Constructor for a time average filter. More...
 
static int timeavg_config (struct short_filter_data *fdata, const void *cfg, int nbcfg)
 Configure a time average filter. More...
 
static int timeavg_filter (void *obj, dsm_sample_time_t tt, const short *in, int skip_factor, short_sample_t *out)
 Time average filter method. More...
 
static void timeavg_cleanup (void *obj)
 Destructor for a timeavg filter. More...
 
struct short_filter_methods get_short_filter_methods (enum nidas_short_filter which)
 Return structure of pointers to the methods for a given filter. More...
 
 EXPORT_SYMBOL (get_short_filter_methods)
 
static int __init short_filters_init (void)
 
static void __exit short_filters_cleanup (void)
 
 module_init (short_filters_init)
 
 module_exit (short_filters_cleanup)
 

Macro Definition Documentation

#define F_MALLOC (   x)    kmalloc(x,GFP_KERNEL)
#define REPO_REVISION   "unknown"

Referenced by short_filters_init().

Function Documentation

static void boxcar_cleanup ( void *  obj)
static

Destructor for a boxcar filter.

References boxcar_filter::sums, and boxcar_filter::vindices.

Referenced by get_short_filter_methods().

static int boxcar_config ( struct short_filter_data *  fdata,
const void *  cfg,
int  nbcfg 
)
static
static int boxcar_filter ( void *  obj,
dsm_sample_time_t  tt,
const short *  in,
int  skip_factor,
short_sample_t *  out 
)
static

Boxcar filter method.

More advanced math! Uses decimate and number of points parameters. Example: input rate 1000/s. Requested output rate 100/s, which is a decimate value of 10. npts=4. Boxcar will average first 4 input samples and generate an output. Then it will skip the next 6 samples, then average 4, etc.

References boxcar_filter::count, boxcar_filter::decimate, MSECS_PER_SEC, boxcar_filter::npts, boxcar_filter::nvars, boxcar_filter::sampleIndex, boxcar_filter::sums, TMSECS_PER_SEC, boxcar_filter::tsave, and boxcar_filter::vindices.

Referenced by get_short_filter_methods().

static void* boxcar_init ( void  )
static

Constructor for a boxcar filter.

References F_MALLOC.

Referenced by get_short_filter_methods().

EXPORT_SYMBOL ( get_short_filter_methods  )
struct short_filter_methods get_short_filter_methods ( enum nidas_short_filter  which)

Return structure of pointers to the methods for a given filter.

Pointers will be 0 if the filter is not supported. This structure is passed back by value and does not need to be kfree'd. This function is exposed to other driver modules.

References boxcar_cleanup(), boxcar_config(), boxcar_filter(), boxcar_init(), NIDAS_FILTER_BOXCAR, NIDAS_FILTER_PICKOFF, NIDAS_FILTER_TIMEAVG, pickoff_cleanup(), pickoff_config(), pickoff_filter(), pickoff_init(), timeavg_cleanup(), timeavg_config(), timeavg_filter(), and timeavg_init().

Referenced by addA2DSampleConfig(), and addSampleConfig().

MODULE_AUTHOR ( "Gordon Maclean <maclean@ucar.edu>"  )
MODULE_DESCRIPTION ( "Some simple filters for A2D data"  )
module_exit ( short_filters_cleanup  )
module_init ( short_filters_init  )
MODULE_LICENSE ( "Dual BSD/GPL"  )
MODULE_VERSION ( REPO_REVISION  )
static void pickoff_cleanup ( void *  obj)
static

Destructor for a pickoff filter.

References pickoff_filter::vindices.

Referenced by get_short_filter_methods().

static int pickoff_config ( struct short_filter_data *  fdata,
const void *  cfg,
int  nbcfg 
)
static
static int pickoff_filter ( void *  obj,
dsm_sample_time_t  tt,
const short *  in,
int  skip_factor,
short_sample_t *  out 
)
static
static void* pickoff_init ( void  )
static

Constructor for a pickoff filter.

References F_MALLOC.

Referenced by get_short_filter_methods().

static void __exit short_filters_cleanup ( void  )
static
static int __init short_filters_init ( void  )
static

References REPO_REVISION.

static void timeavg_cleanup ( void *  obj)
static

Destructor for a timeavg filter.

References timeavg_filter::sums, and timeavg_filter::vindices.

Referenced by get_short_filter_methods().

static int timeavg_config ( struct short_filter_data *  fdata,
const void *  cfg,
int  nbcfg 
)
static
static int timeavg_filter ( void *  obj,
dsm_sample_time_t  tt,
const short *  in,
int  skip_factor,
short_sample_t *  out 
)
static

Time average filter method.

Example: input scan rate 1000/s. time average rate 100/s output rate 20/s Time averager will average data over 0.01 seconds intervals but then only 1 out of 5 of those averages will be output.

References timeavg_filter::decimate, timeavg_filter::deltaTmsecs, timeavg_filter::endTime, timeavg_filter::nout, timeavg_filter::nsum, timeavg_filter::nvars, timeavg_filter::sampleIndex, timeavg_filter::sums, TMSECS_PER_DAY, and timeavg_filter::vindices.

Referenced by get_short_filter_methods().

static void* timeavg_init ( void  )
static

Constructor for a time average filter.

References timeavg_filter::endTime, and F_MALLOC.

Referenced by get_short_filter_methods().