HARDT - The Ham Radio DSP Toolkit
hsubtracter.h
1 #ifndef __HSUBTRACTER_H
2 #define __HSUBTRACTER_H
3 
7 template <class T>
8 class HSubtracter : public HReader<T>, public HWriter<T>, public HWriterConsumer<T>
9 {
10  private:
11 
12  HReader<T>* _reader_1;
13  HReader<T>* _reader_2;
14  HWriter<T>* _writer;
15  bool _wait;
16 
17  int _blocksize;
18  T* _buffer_1;
19  T* _buffer_2;
20 
21  HProbe<T>* _probe;
22 
23  bool _started;
24 
25  public:
26 
28  HSubtracter(HReader<T>* reader_1, HReader<T>* reader_2, size_t blocksize, HProbe<T>* probe = NULL);
29 
31  HSubtracter(HReader<T>* reader, HWriter<T>* writer, size_t blocksize, HProbe<T>* probe = NULL);
32 
37  HSubtracter(HWriter<T>* writer, size_t blocksize, HProbe<T>* probe = NULL);
38 
40  HSubtracter(HReader<T>* reader, HWriterConsumer<T>* consumer, size_t blocksize, HProbe<T>* probe = NULL);
41 
43  HSubtracter(HWriterConsumer<T>* consumer, size_t blocksize, HProbe<T>* probe = NULL);
44 
46  ~HSubtracter();
47 
49  void Init(size_t blocksize);
50 
52  int Read(T* dest, size_t blocksize);
53 
55  int Write(T* src, size_t blocksize);
56 
58  bool Start();
59 
61  bool Stop();
62 
64  void SetWriter(HWriter<T>* writer)
65  {
66  _writer = writer;
67  }
68 
70  bool Command(HCommand* command) {
71  if( _writer != nullptr )
72  {
73  if (!_writer->Command(command)) {
74  return false;
75  }
76  }
77  if( _reader_1 != nullptr )
78  {
79  if (!_reader_1->Command(command)) {
80  return false;
81  }
82  }
83  if( _reader_2 != nullptr )
84  {
85  if( !_reader_2->Command(command) ) {
86  return false;
87  }
88  }
89  return true;
90  }
91 };
92 
93 #endif
HReader::Command
virtual bool Command(HCommand *command)=0
HSubtracter::Command
bool Command(HCommand *command)
Definition: hsubtracter.h:70
HSubtracter::Init
void Init(size_t blocksize)
Definition: hsubtracter.cpp:90
HSubtracter
Definition: hsubtracter.h:8
HSubtracter::SetWriter
void SetWriter(HWriter< T > *writer)
Definition: hsubtracter.h:64
HSubtracter::HSubtracter
HSubtracter(HReader< T > *reader_1, HReader< T > *reader_2, size_t blocksize, HProbe< T > *probe=NULL)
Definition: hsubtracter.cpp:12
HSubtracter::Write
int Write(T *src, size_t blocksize)
Definition: hsubtracter.cpp:141
HWriter
Definition: hwriter.h:10
HWriter::Command
virtual bool Command(HCommand *command)=0
HReader
Definition: hreader.h:24
HProbe
Definition: hprobe.h:10
HSubtracter::Stop
bool Stop()
Definition: hsubtracter.cpp:221
HCommand
Definition: hcommand.h:81
HSubtracter::Read
int Read(T *dest, size_t blocksize)
Definition: hsubtracter.cpp:98
HSubtracter::Start
bool Start()
Definition: hsubtracter.cpp:194
HWriterConsumer
Definition: hwriterconsumer.h:8
HSubtracter::~HSubtracter
~HSubtracter()
Definition: hsubtracter.cpp:82