kopia lustrzana https://github.com/cariboulabs/cariboulite
adding_metadata_to_gr
rodzic
206e1cbb11
commit
b8a9fe8dc0
|
@ -57,4 +57,8 @@ outputs:
|
||||||
domain: stream
|
domain: stream
|
||||||
dtype: complex
|
dtype: complex
|
||||||
|
|
||||||
|
- label: meta
|
||||||
|
domain: stream
|
||||||
|
dtype: byte
|
||||||
|
|
||||||
file_format: 1
|
file_format: 1
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
namespace gr {
|
namespace gr {
|
||||||
namespace caribouLite {
|
namespace caribouLite {
|
||||||
using output_type = gr_complex;
|
|
||||||
|
|
||||||
void detectBoard()
|
void detectBoard()
|
||||||
{
|
{
|
||||||
|
@ -40,7 +39,7 @@ namespace gr {
|
||||||
caribouLiteSource_impl::caribouLiteSource_impl(int channel, bool enable_agc, float rx_gain, float rx_bw, float sample_rate, float freq)
|
caribouLiteSource_impl::caribouLiteSource_impl(int channel, bool enable_agc, float rx_gain, float rx_bw, float sample_rate, float freq)
|
||||||
: gr::sync_block("caribouLiteSource",
|
: gr::sync_block("caribouLiteSource",
|
||||||
gr::io_signature::make(0, 0, 0),
|
gr::io_signature::make(0, 0, 0),
|
||||||
gr::io_signature::make(1 /* min outputs */, 1 /*max outputs */, sizeof(output_type)))
|
gr::io_signature::make(1 /* min outputs */, 1 /*max outputs */, sizeof(gr_complex)))
|
||||||
{
|
{
|
||||||
detectBoard();
|
detectBoard();
|
||||||
|
|
||||||
|
@ -79,8 +78,9 @@ namespace gr {
|
||||||
gr_vector_const_void_star &input_items,
|
gr_vector_const_void_star &input_items,
|
||||||
gr_vector_void_star &output_items)
|
gr_vector_void_star &output_items)
|
||||||
{
|
{
|
||||||
auto out = static_cast<output_type*>(output_items[0]);
|
auto out_samples = static_cast<gr_complex*>(output_items[0]);
|
||||||
int ret = _radio->ReadSamples(out, static_cast<size_t>(noutput_items));
|
auto out_meta = static_cast<cariboulite_sample_meta*>(output_items[1]);
|
||||||
|
int ret = _radio->ReadSamples(out_samples, out_meta, static_cast<size_t>(noutput_items));
|
||||||
if (ret <= 0) return 0;
|
if (ret <= 0) return 0;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,8 +183,8 @@ public:
|
||||||
bool GetIsTransmittingCw(void);
|
bool GetIsTransmittingCw(void);
|
||||||
|
|
||||||
// Synchronous Reading and Writing
|
// Synchronous Reading and Writing
|
||||||
int ReadSamples(std::complex<float>* samples, size_t num_to_read);
|
int ReadSamples(std::complex<float>* samples, cariboulite_sample_meta* meta, size_t num_to_read);
|
||||||
int ReadSamples(std::complex<short>* samples, size_t num_to_read);
|
int ReadSamples(std::complex<short>* samples, cariboulite_sample_meta* meta, size_t num_to_read);
|
||||||
int WriteSamples(std::complex<float>* samples, size_t num_to_write);
|
int WriteSamples(std::complex<float>* samples, size_t num_to_write);
|
||||||
int WriteSamples(std::complex<short>* samples, size_t num_to_write);
|
int WriteSamples(std::complex<short>* samples, size_t num_to_write);
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ void CaribouLiteRadio::CaribouLiteRxThread(CaribouLiteRadio* radio)
|
||||||
}
|
}
|
||||||
|
|
||||||
//==================================================================
|
//==================================================================
|
||||||
int CaribouLiteRadio::ReadSamples(std::complex<float>* samples, size_t num_to_read)
|
int CaribouLiteRadio::ReadSamples(std::complex<float>* samples, cariboulite_sample_meta* meta, size_t num_to_read)
|
||||||
{
|
{
|
||||||
if (samples == 0)
|
if (samples == 0)
|
||||||
{
|
{
|
||||||
|
@ -76,7 +76,7 @@ int CaribouLiteRadio::ReadSamples(std::complex<float>* samples, size_t num_to_re
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = ReadSamples((std::complex<short>*)NULL, num_to_read);
|
int ret = ReadSamples((std::complex<short>*)NULL, meta, num_to_read);
|
||||||
//printf("ret = %d\n", ret);
|
//printf("ret = %d\n", ret);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
{
|
{
|
||||||
|
@ -94,7 +94,7 @@ int CaribouLiteRadio::ReadSamples(std::complex<float>* samples, size_t num_to_re
|
||||||
}
|
}
|
||||||
|
|
||||||
//==================================================================
|
//==================================================================
|
||||||
int CaribouLiteRadio::ReadSamples(std::complex<short>* samples, size_t num_to_read)
|
int CaribouLiteRadio::ReadSamples(std::complex<short>* samples, cariboulite_sample_meta* meta, size_t num_to_read)
|
||||||
{
|
{
|
||||||
if (!_rx_is_active || _read_samples == NULL || _read_metadata == NULL || num_to_read == 0)
|
if (!_rx_is_active || _read_samples == NULL || _read_metadata == NULL || num_to_read == 0)
|
||||||
{
|
{
|
||||||
|
@ -119,6 +119,14 @@ int CaribouLiteRadio::ReadSamples(std::complex<short>* samples, size_t num_to_re
|
||||||
samples[i] = {_read_samples[i].i, _read_samples[i].q};
|
samples[i] = {_read_samples[i].i, _read_samples[i].q};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (meta)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < (size_t)ret; i++)
|
||||||
|
{
|
||||||
|
meta[i] = _read_metadata[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue