From b8a9fe8dc07619ac2c11ac049db6516b2d779d44 Mon Sep 17 00:00:00 2001 From: alon Date: Mon, 5 Feb 2024 20:01:10 +0200 Subject: [PATCH] up --- .../grc/caribouLite_caribouLiteSource.block.yml | 4 ++++ .../gr-caribouLite/lib/caribouLiteSource_impl.cc | 8 ++++---- software/libcariboulite/src/CaribouLite.hpp | 4 ++-- .../libcariboulite/src/CaribouLiteRadioCpp.cpp | 14 +++++++++++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml b/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml index 236d391..790b9b1 100644 --- a/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml +++ b/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml @@ -57,4 +57,8 @@ outputs: domain: stream dtype: complex +- label: meta + domain: stream + dtype: byte + file_format: 1 diff --git a/software/gr-caribouLite/lib/caribouLiteSource_impl.cc b/software/gr-caribouLite/lib/caribouLiteSource_impl.cc index 316b2b8..dc66ee3 100644 --- a/software/gr-caribouLite/lib/caribouLiteSource_impl.cc +++ b/software/gr-caribouLite/lib/caribouLiteSource_impl.cc @@ -10,7 +10,6 @@ namespace gr { namespace caribouLite { - using output_type = gr_complex; 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) : gr::sync_block("caribouLiteSource", 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(); @@ -79,8 +78,9 @@ namespace gr { gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - auto out = static_cast(output_items[0]); - int ret = _radio->ReadSamples(out, static_cast(noutput_items)); + auto out_samples = static_cast(output_items[0]); + auto out_meta = static_cast(output_items[1]); + int ret = _radio->ReadSamples(out_samples, out_meta, static_cast(noutput_items)); if (ret <= 0) return 0; return ret; } diff --git a/software/libcariboulite/src/CaribouLite.hpp b/software/libcariboulite/src/CaribouLite.hpp index bef414b..f96ab7d 100644 --- a/software/libcariboulite/src/CaribouLite.hpp +++ b/software/libcariboulite/src/CaribouLite.hpp @@ -183,8 +183,8 @@ public: bool GetIsTransmittingCw(void); // Synchronous Reading and Writing - int ReadSamples(std::complex* samples, size_t num_to_read); - int ReadSamples(std::complex* samples, size_t num_to_read); + int ReadSamples(std::complex* samples, cariboulite_sample_meta* meta, size_t num_to_read); + int ReadSamples(std::complex* samples, cariboulite_sample_meta* meta, size_t num_to_read); int WriteSamples(std::complex* samples, size_t num_to_write); int WriteSamples(std::complex* samples, size_t num_to_write); diff --git a/software/libcariboulite/src/CaribouLiteRadioCpp.cpp b/software/libcariboulite/src/CaribouLiteRadioCpp.cpp index 8fd65dc..77e0c03 100644 --- a/software/libcariboulite/src/CaribouLiteRadioCpp.cpp +++ b/software/libcariboulite/src/CaribouLiteRadioCpp.cpp @@ -68,7 +68,7 @@ void CaribouLiteRadio::CaribouLiteRxThread(CaribouLiteRadio* radio) } //================================================================== -int CaribouLiteRadio::ReadSamples(std::complex* samples, size_t num_to_read) +int CaribouLiteRadio::ReadSamples(std::complex* samples, cariboulite_sample_meta* meta, size_t num_to_read) { if (samples == 0) { @@ -76,7 +76,7 @@ int CaribouLiteRadio::ReadSamples(std::complex* samples, size_t num_to_re return 0; } - int ret = ReadSamples((std::complex*)NULL, num_to_read); + int ret = ReadSamples((std::complex*)NULL, meta, num_to_read); //printf("ret = %d\n", ret); if (ret <= 0) { @@ -94,7 +94,7 @@ int CaribouLiteRadio::ReadSamples(std::complex* samples, size_t num_to_re } //================================================================== -int CaribouLiteRadio::ReadSamples(std::complex* samples, size_t num_to_read) +int CaribouLiteRadio::ReadSamples(std::complex* samples, cariboulite_sample_meta* meta, size_t num_to_read) { if (!_rx_is_active || _read_samples == NULL || _read_metadata == NULL || num_to_read == 0) { @@ -119,6 +119,14 @@ int CaribouLiteRadio::ReadSamples(std::complex* samples, size_t num_to_re 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; }