|
HARDT - The Ham Radio DSP Toolkit
|
12 template <
class Tin,
class Tout>
34 return (_reader != NULL ? _reader->
Start() :
true) && (_writer != NULL ? _writer->
Start() :
true);
42 return (_reader != NULL ?_reader->
Stop() :
true) && (_writer != NULL ?_writer->
Stop() :
true);
58 _blocksizeIn(blocksizeIn),
59 _blocksizeOut(blocksizeOut),
63 _input =
new Tin[blocksizeIn];
77 _blocksizeIn(blocksizeIn),
78 _blocksizeOut(blocksizeOut),
82 _output =
new Tout[blocksizeOut];
96 _blocksizeIn(blocksizeIn),
97 _blocksizeOut(blocksizeOut),
101 _output =
new Tout[blocksizeOut];
116 if( _output != NULL )
129 int Read(Tout* dest,
size_t blocksize) {
130 if( blocksize != _blocksizeOut )
132 HError(
"Request for conversion-read with blocksize %d expected %d blocks", blocksize, _blocksizeOut);
136 int read = _reader->
Read(_input, _blocksizeIn);
139 HLog(
"Zero length read. Returning eof (zero)");
142 if( read != _blocksizeIn )
144 HError(
"Request for read with blocksize %d returned %d blocks", _blocksizeIn, read);
149 if( (converted =
Convert(_input, dest, _blocksizeIn)) != _blocksizeOut )
151 HError(
"Request for conversion of blocksize %d blocks converted %d blocks", _blocksizeIn, converted);
155 if( _probe !=
nullptr ) {
156 _probe->
Write(dest, converted);
159 return _blocksizeOut;
169 int Write(Tin* src,
size_t blocksize) {
170 if( blocksize != _blocksizeIn )
172 HError(
"Request for conversion-write with blocksize %d expected %d blocks", blocksize, _blocksizeIn);
177 if( (converted =
Convert(src, _output, _blocksizeIn)) != _blocksizeOut )
179 HError(
"Request for conversion of blocksize %d blocks converted %d blocks", _blocksizeIn, converted);
184 if( (written = _writer->
Write(_output, _blocksizeOut)) != _blocksizeOut )
186 HError(
"Request for write with blocksize %d wrote %d blocks", _blocksizeOut, written);
190 if( _probe !=
nullptr ) {
191 _probe->
Write(_output, converted);
200 virtual int Convert(Tin* src, Tout* dest,
size_t blocksize) = 0;
207 HLog(
"setwriter %p", writer);
215 if( _writer !=
nullptr ) {
216 return _writer->
Command(command);
217 }
else if( _reader !=
nullptr ){
218 return _reader->
Command(command);
virtual bool Command(HCommand *command)=0
virtual int Convert(Tin *src, Tout *dest, size_t blocksize)=0
Definition: hexceptions.h:137
HConverter(HWriter< Tout > *writer, size_t blocksizeIn, size_t blocksizeOut, HProbe< Tout > *probe=nullptr)
Definition: hconverter.h:74
virtual bool Stop()
Definition: hreader.h:41
bool Command(HCommand *command)
Definition: hconverter.h:214
bool Stop()
Definition: hconverter.h:40
virtual void SetWriter(HWriter< T > *writer)=0
virtual int Write(T *src, size_t blocksize)=0
virtual bool Start()
Definition: hreader.h:35
Definition: hconverter.h:13
int Read(Tout *dest, size_t blocksize)
Definition: hconverter.h:129
virtual bool Command(HCommand *command)=0
virtual bool Start()
Definition: hwriter.h:21
~HConverter()
Definition: hconverter.h:110
Definition: hcommand.h:81
bool Start()
Definition: hconverter.h:32
virtual int Read(T *dest, size_t blocksize)=0
HWriter< Tin > * Writer()
Definition: hwriter.h:33
int Write(Tin *src, size_t blocksize)
Definition: hconverter.h:169
virtual bool Stop()
Definition: hwriter.h:27
HConverter(HReader< Tin > *reader, size_t blocksizeIn, size_t blocksizeOut, HProbe< Tout > *probe=nullptr)
Definition: hconverter.h:55
HConverter(HWriterConsumer< Tin > *consumer, size_t blocksizeIn, size_t blocksizeOut, HProbe< Tout > *probe=nullptr)
Definition: hconverter.h:93
void SetWriter(HWriter< Tout > *writer)
Definition: hconverter.h:205
int Write(T *src, size_t blocksize)
Definition: hprobe.h:40
Definition: hwriterconsumer.h:8