From 6050cf0627998e165419a0d323bb9f42d32eadfc Mon Sep 17 00:00:00 2001 From: alon Date: Tue, 6 Feb 2024 11:28:17 +0200 Subject: [PATCH] block compiles --- .../caribouLite_caribouLiteSource.block.yml | 2 +- .../lib/caribouLiteSource_impl.cc | 19 ++++++++++++++++--- .../lib/caribouLiteSource_impl.h | 1 + .../src/CaribouLiteRadioCpp.cpp | 6 ++---- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml b/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml index 790b9b1..e052b81 100644 --- a/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml +++ b/software/gr-caribouLite/grc/caribouLite_caribouLiteSource.block.yml @@ -57,7 +57,7 @@ outputs: domain: stream dtype: complex -- label: meta +- label: sync domain: stream dtype: byte diff --git a/software/gr-caribouLite/lib/caribouLiteSource_impl.cc b/software/gr-caribouLite/lib/caribouLiteSource_impl.cc index dc66ee3..88463cd 100644 --- a/software/gr-caribouLite/lib/caribouLiteSource_impl.cc +++ b/software/gr-caribouLite/lib/caribouLiteSource_impl.cc @@ -79,9 +79,22 @@ namespace gr { gr_vector_void_star &output_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; + auto out_sync = static_cast(output_items[1]); + + _metadata = new cariboulite_sample_meta[noutput_items]; + + int ret = _radio->ReadSamples(out_samples, _metadata, static_cast(noutput_items)); + + if (ret <= 0) { //fail + delete[] _metadata; + return 0; + } else { //success + for (int i = 0; i < ret; i++) + { + out_sync[i] = _metadata[i].sync; + } + delete[] _metadata; + } return ret; } diff --git a/software/gr-caribouLite/lib/caribouLiteSource_impl.h b/software/gr-caribouLite/lib/caribouLiteSource_impl.h index 17a6a97..f9c8cd0 100644 --- a/software/gr-caribouLite/lib/caribouLiteSource_impl.h +++ b/software/gr-caribouLite/lib/caribouLiteSource_impl.h @@ -27,6 +27,7 @@ namespace gr float _sample_rate; float _frequency; size_t _mtu_size; + cariboulite_sample_meta* _metadata; CaribouLite* _cl; CaribouLiteRadio *_radio; diff --git a/software/libcariboulite/src/CaribouLiteRadioCpp.cpp b/software/libcariboulite/src/CaribouLiteRadioCpp.cpp index 77e0c03..1bb264e 100644 --- a/software/libcariboulite/src/CaribouLiteRadioCpp.cpp +++ b/software/libcariboulite/src/CaribouLiteRadioCpp.cpp @@ -1,4 +1,5 @@ #include "CaribouLite.hpp" +#include //================================================================= void CaribouLiteRadio::CaribouLiteRxThread(CaribouLiteRadio* radio) @@ -122,10 +123,7 @@ int CaribouLiteRadio::ReadSamples(std::complex* samples, cariboulite_samp if (meta) { - for (size_t i = 0; i < (size_t)ret; i++) - { - meta[i] = _read_metadata[i]; - } + memcpy(meta, _read_metadata, sizeof(cariboulite_sample_meta) * (size_t)ret); } return ret;