HARDT - The Ham Radio DSP Toolkit
hprocessor.h
1 #ifndef __HPROCESSOR_H
2 #define __HPROCESSOR_H
3 
4 #include "hwriter.h"
5 #include "hreader.h"
6 
23 template <class T>
24 class HProcessor : public HWriterConsumer<T>
25 {
26  private:
27 
28  T* _buffer;
29  int _blocksize;
30  bool* _terminated;
31  HMetrics _metrics;
32 
33  private:
34 
35  bool Start();
36 
37  bool Stop();
38 
39  void Init();
40 
41  protected:
42 
47 
52 
61  HProcessor(HWriter<T>* writer, HReader<T>* reader, size_t blocksize, bool* terminationToken);
62 
70  HProcessor(HReader<T>* reader, size_t blocksize, bool* terminationToken);
71 
75  ~HProcessor();
76 
82  void SetWriter(HWriter<T>* writer)
83  {
84  _writer = writer;
85  }
86 
87  public:
88 
96  int Read(T* dest, int blocksize);
97 
105  int Write(T* src, int blocksize);
106 
113 
120 
129  virtual void Run(long unsigned int blocks = 0);
130 
137  virtual void Halt();
138 
147  bool Command(H_COMMAND_CLASS commandClass, H_COMMAND_OPCODE commandOpcode, int32_t value) {
148  HCommandData data;
149  data.Value = value;
150  return Command(commandClass,commandOpcode, 0, data);
151  }
152 
162  bool Command(H_COMMAND_CLASS commandClass, H_COMMAND_OPCODE commandOpcode, int16_t length, void* content) {
163  HCommandData data;
164  data.Content = content;
165  return Command(commandClass,commandOpcode, length, data);
166  }
167 
176  bool Command(H_COMMAND_CLASS commandClass, H_COMMAND_OPCODE commandOpcode, bool state) {
177  HCommandData data;
178  data.State = state;
179  return Command(commandClass,commandOpcode, 0, data);
180  }
181 
191  virtual bool Command(H_COMMAND_CLASS commandClass, H_COMMAND_OPCODE commandOpcode, int16_t length, HCommandData data) = 0;
192 
197  return &_metrics;
198  }
199 };
200 
201 #endif
HMetrics
Definition: hmetrics.h:19
HCommandData::Value
int32_t Value
Definition: hcommand.h:71
HProcessor
Definition: hprocessor.h:24
HCommandData::State
bool State
Definition: hcommand.h:74
HProcessor::_reader
HReader< T > * _reader
Definition: hprocessor.h:51
HWriter
Definition: hwriter.h:10
HProcessor::GetWriter
HWriter< T > * GetWriter()
Definition: hprocessor.cpp:171
HProcessor::Command
bool Command(H_COMMAND_CLASS commandClass, H_COMMAND_OPCODE commandOpcode, int32_t value)
Definition: hprocessor.h:147
HProcessor::Halt
virtual void Halt()
Definition: hprocessor.cpp:158
HProcessor::GetReader
HReader< T > * GetReader()
Definition: hprocessor.cpp:165
HProcessor::SetWriter
void SetWriter(HWriter< T > *writer)
Definition: hprocessor.h:82
HReader
Definition: hreader.h:24
HProcessor::GetMetrics
HMetrics * GetMetrics()
Definition: hprocessor.h:196
HProcessor::Command
bool Command(H_COMMAND_CLASS commandClass, H_COMMAND_OPCODE commandOpcode, bool state)
Definition: hprocessor.h:176
HProcessor::HProcessor
HProcessor(HWriter< T > *writer, HReader< T > *reader, size_t blocksize, bool *terminationToken)
Definition: hprocessor.cpp:7
HProcessor::_writer
HWriter< T > * _writer
Definition: hprocessor.h:46
HProcessor::Run
virtual void Run(long unsigned int blocks=0)
Definition: hprocessor.cpp:80
HProcessor::Write
int Write(T *src, int blocksize)
Definition: hprocessor.cpp:54
HProcessor::~HProcessor
~HProcessor()
Definition: hprocessor.cpp:28
HCommandData
Definition: hcommand.h:68
HProcessor::Read
int Read(T *dest, int blocksize)
Definition: hprocessor.cpp:40
HProcessor::Command
bool Command(H_COMMAND_CLASS commandClass, H_COMMAND_OPCODE commandOpcode, int16_t length, void *content)
Definition: hprocessor.h:162
HCommandData::Content
void * Content
Definition: hcommand.h:77
HWriterConsumer
Definition: hwriterconsumer.h:8