GrAGC.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef _GRAGC_H_
00025
#define _GRAGC_H_
00026
00027
#include <VrSigProc.h>
00028
00029
template<
class iType,
class oType>
00030 class GrAGC :
public VrSigProc {
00031
protected:
00032 double k;
00033 double power;
00034
virtual void initialize();
00035
public:
00036 virtual const char *
name() {
return "GrAGC"; }
00037
virtual int work(
VrSampleRange output,
void *ao[],
00038
VrSampleRange inputs[],
void *ai[]);
00039 GrAGC(
double k):
VrSigProc(1,sizeof(
iType),sizeof(
oType)),k(k) { }
00040 };
00041
00042
template<
class iType,
class oType>
int
00043 GrAGC<iType,oType>::work(
VrSampleRange output,
void *ao[],
00044
VrSampleRange inputs[],
void *ai[])
00045 {
00046
iType **i = (
iType **)ai;
00047
oType **o = (
oType **)ao;
00048
double inv_gain;
00049
int size = output.
size;
00050
while(size -- > 0) {
00051
power =
power + ((*i[0] * *i[0]) -
power)/
k;
00052 inv_gain =
sqrt(
power);
00053 *o[0]++ = (*i[0]++ / inv_gain);
00054 }
00055
return output.
size;
00056 }
00057
00058
template<
class iType,
class oType>
void
00059 GrAGC<iType,oType>::initialize()
00060 {
00061
power = 1;
00062 }
00063
#endif
Generated on Wed Aug 4 02:22:03 2004 for GNU Radio by
1.3.8