nidas
v1.2-1520
|
#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) | |
#define F_MALLOC | ( | x | ) | kmalloc(x,GFP_KERNEL) |
Referenced by boxcar_config(), boxcar_init(), pickoff_config(), pickoff_init(), timeavg_config(), and timeavg_init().
#define REPO_REVISION "unknown" |
Referenced by short_filters_init().
|
static |
Destructor for a boxcar filter.
References boxcar_filter::sums, and boxcar_filter::vindices.
Referenced by get_short_filter_methods().
|
static |
Configure a boxcar filter.
References boxcar_filter::count, boxcar_filter::decimate, F_MALLOC, boxcar_filter::npts, boxcar_filter::nvars, boxcar_filter::sampleIndex, boxcar_filter::sums, and boxcar_filter::vindices.
Referenced by get_short_filter_methods().
|
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 |
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 |
Destructor for a pickoff filter.
References pickoff_filter::vindices.
Referenced by get_short_filter_methods().
|
static |
Configure a pickoff filter.
References pickoff_filter::count, pickoff_filter::decimate, F_MALLOC, if(), pickoff_filter::nvars, pickoff_filter::sampleIndex, and pickoff_filter::vindices.
Referenced by get_short_filter_methods().
|
static |
Pickoff filter method.
Advanced math!
References pickoff_filter::count, pickoff_filter::decimate, pickoff_filter::nvars, pickoff_filter::sampleIndex, and pickoff_filter::vindices.
Referenced by get_short_filter_methods().
|
static |
|
static |
|
static |
References REPO_REVISION.
|
static |
Destructor for a timeavg filter.
References timeavg_filter::sums, and timeavg_filter::vindices.
Referenced by get_short_filter_methods().
|
static |
Configure a time average filter.
References timeavg_filter::decimate, timeavg_filter::deltaTmsecs, F_MALLOC, timeavg_filter::nout, timeavg_filter::nvars, timeavg_filter::sampleIndex, timeavg_filter::sums, TMSECS_PER_SEC, and timeavg_filter::vindices.
Referenced by get_short_filter_methods().
|
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 |
Constructor for a time average filter.
References timeavg_filter::endTime, and F_MALLOC.
Referenced by get_short_filter_methods().