HARDT - The Ham Radio DSP Toolkit
hagc.h
1 #ifndef __HAGC_H
2 #define __HAGC_H
3 
4 #include "hgain.h"
5 #include "hardt.h"
6 #include "hreader.h"
7 #include "hwriter.h"
8 #include "hwriterconsumer.h"
9 #include "hprobe.h"
10 
14 template <class T>
15 class HAgc : public HGain<T>
16 {
17  private:
18 
19  T _level;
20  int _average;
21  T *_averageBuffer;
22  int _averagePtr;
23  float _gain;
24  int _hold;
25  int _increment;
26  bool _allowUnity;
27  bool _enabled;
28 
29  void Init()
30  {
31  if( _average < 1 )
32  {
33  throw new HInvalidArgumentException("average count can not be less than 1");
34  }
35  _averageBuffer = new T[_average];
36  memset((void*) _averageBuffer, 0, _average * sizeof(T));
37  HLog("Allocated averaging buffer with %d bins", _average);
38  }
39 
40  public:
41 
53  HAgc(HWriter<T>* writer, T level, int average, size_t blocksize, int increment = 4, bool allowUnity = false, HProbe<T>* probe = NULL);
54 
66  HAgc(HWriterConsumer<T>* consumer, T level, int average, size_t blocksize, int increment = 1, bool allowUnity = false, HProbe<T>* probe = NULL);
67 
79  HAgc(HReader<T>* reader, T level, int average, size_t blocksize, int increment = 1, bool allowUnity = false, HProbe<T>* probe = NULL);
80 
82  ~HAgc();
83 
85  virtual void Filter(T* src, T* dest, size_t blocksize);
86 
88  void SetLevel(T level)
89  {
90  _level = level;
91  }
92 
94  void SetAverage(int average)
95  {
96  _average = average;
97  }
98 
100  void SetEnabled(bool enabled) {
101  _enabled = enabled;
102  }
103 
105  void SetGain(float gain) {
106  _enabled = false;
107  HGain<T>::SetGain(gain);
108  }
109 };
110 
111 #endif
HAgc::SetLevel
void SetLevel(T level)
Definition: hagc.h:88
HAgc
Definition: hagc.h:15
HAgc::SetGain
void SetGain(float gain)
Definition: hagc.h:105
HAgc::SetEnabled
void SetEnabled(bool enabled)
Definition: hagc.h:100
HWriter
Definition: hwriter.h:10
HAgc::HAgc
HAgc(HWriter< T > *writer, T level, int average, size_t blocksize, int increment=4, bool allowUnity=false, HProbe< T > *probe=NULL)
Definition: hagc.cpp:10
HGain
Definition: hgain.h:8
HReader
Definition: hreader.h:24
HAgc::Filter
virtual void Filter(T *src, T *dest, size_t blocksize)
Definition: hagc.cpp:62
HProbe
Definition: hprobe.h:10
HAgc::SetAverage
void SetAverage(int average)
Definition: hagc.h:94
HGain::SetGain
void SetGain(float gain)
Definition: hgain.cpp:47
HAgc::~HAgc
~HAgc()
Definition: hagc.cpp:55
HInvalidArgumentException
Definition: hexceptions.h:179
HWriterConsumer
Definition: hwriterconsumer.h:8