kopia lustrzana https://github.com/cariboulabs/cariboulite
optional sync out
rodzic
6050cf0627
commit
d4cd0f4032
|
@ -7,7 +7,7 @@ templates:
|
|||
imports:
|
||||
from gnuradio import caribouLite
|
||||
make:
|
||||
caribouLite.caribouLiteSource(${channel}, ${enable_agc}, ${rx_gain}, ${rx_bw}, ${sample_rate}, ${freq})
|
||||
caribouLite.caribouLiteSource(${channel}, ${enable_agc}, ${rx_gain}, ${rx_bw}, ${sample_rate}, ${freq}, ${provide_sync})
|
||||
|
||||
parameters:
|
||||
- id: channel
|
||||
|
@ -40,10 +40,16 @@ parameters:
|
|||
dtype: float
|
||||
default: 900000000.0
|
||||
|
||||
- id: provide_sync
|
||||
dtype: enum
|
||||
options: ['True', 'False']
|
||||
hide: part
|
||||
default: 'False'
|
||||
|
||||
cpp_templates:
|
||||
includes: ['#include <gnuradio/caribouLite/caribouLiteSource.h>']
|
||||
declarations: 'caribouLite::caribouLiteSource::sptr ${id};'
|
||||
make: 'this->${id} = caribouLite::caribouLiteSource::make(${channel}, ${enable_agc}, ${rx_gain}, ${rx_bw}, ${sample_rate}, ${freq});'
|
||||
make: 'this->${id} = caribouLite::caribouLiteSource::make(${channel}, ${enable_agc}, ${rx_gain}, ${rx_bw}, ${sample_rate}, ${freq}, ${provide_sync});'
|
||||
packages: ['gnuradio-caribouLite']
|
||||
link: ['gnuradio::gnuradio-caribouLite']
|
||||
translations:
|
||||
|
@ -60,5 +66,6 @@ outputs:
|
|||
- label: sync
|
||||
domain: stream
|
||||
dtype: byte
|
||||
hide: ${False if str(provide_sync)=='True' else True}
|
||||
|
||||
file_format: 1
|
||||
|
|
|
@ -32,7 +32,13 @@ namespace gr {
|
|||
* class. caribouLite::caribouLiteSource::make is the public interface for
|
||||
* creating new instances.
|
||||
*/
|
||||
static sptr make(int channel=0, bool enable_agc=false, float rx_gain=40, float rx_bw=2500000, float sample_rate=4000000, float freq=900000000);
|
||||
static sptr make(int channel=0,
|
||||
bool enable_agc=false,
|
||||
float rx_gain=40,
|
||||
float rx_bw=2500000,
|
||||
float sample_rate=4000000,
|
||||
float freq=900000000,
|
||||
bool provide_sync = false);
|
||||
};
|
||||
|
||||
} // namespace caribouLite
|
||||
|
|
|
@ -28,15 +28,33 @@ namespace gr {
|
|||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
caribouLiteSource::sptr caribouLiteSource::make(int channel, bool enable_agc, float rx_gain, float rx_bw, float sample_rate, float freq)
|
||||
caribouLiteSource::sptr caribouLiteSource::make(int channel,
|
||||
bool enable_agc,
|
||||
float rx_gain,
|
||||
float rx_bw,
|
||||
float sample_rate,
|
||||
float freq,
|
||||
bool provide_sync)
|
||||
{
|
||||
return gnuradio::make_block_sptr<caribouLiteSource_impl>(channel, enable_agc, rx_gain, rx_bw, sample_rate, freq);
|
||||
return gnuradio::make_block_sptr<caribouLiteSource_impl>(channel,
|
||||
enable_agc,
|
||||
rx_gain,
|
||||
rx_bw,
|
||||
sample_rate,
|
||||
freq,
|
||||
provide_sync);
|
||||
}
|
||||
|
||||
|
||||
// public constructor
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
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,
|
||||
bool provide_sync)
|
||||
: gr::sync_block("caribouLiteSource",
|
||||
gr::io_signature::make(0, 0, 0),
|
||||
gr::io_signature::make(1 /* min outputs */, 1 /*max outputs */, sizeof(gr_complex)))
|
||||
|
@ -49,12 +67,13 @@ namespace gr {
|
|||
_rx_bw = rx_bw;
|
||||
_sample_rate = sample_rate;
|
||||
_frequency = freq;
|
||||
_mtu_size = _radio->GetNativeMtuSample();
|
||||
_provide_sync = provide_sync;
|
||||
|
||||
CaribouLite &cl = CaribouLite::GetInstance(false);
|
||||
_cl = &cl;
|
||||
_radio = cl.GetRadioChannel(_channel);
|
||||
|
||||
_mtu_size = _radio->GetNativeMtuSample();
|
||||
|
||||
// setup parameters
|
||||
_radio->SetRxGain(rx_gain);
|
||||
_radio->SetAgc(enable_agc);
|
||||
|
@ -82,16 +101,18 @@ namespace gr {
|
|||
auto out_sync = static_cast<uint8_t*>(output_items[1]);
|
||||
|
||||
_metadata = new cariboulite_sample_meta[noutput_items];
|
||||
|
||||
int ret = _radio->ReadSamples(out_samples, _metadata, static_cast<size_t>(noutput_items));
|
||||
|
||||
if (ret <= 0) { //fail
|
||||
delete[] _metadata;
|
||||
return 0;
|
||||
} else { //success
|
||||
for (int i = 0; i < ret; i++)
|
||||
} else { //success
|
||||
if (_provide_sync)
|
||||
{
|
||||
out_sync[i] = _metadata[i].sync;
|
||||
for (int i = 0; i < ret; i++)
|
||||
{
|
||||
out_sync[i] = _metadata[i].sync;
|
||||
}
|
||||
}
|
||||
delete[] _metadata;
|
||||
}
|
||||
|
|
|
@ -27,13 +27,20 @@ namespace gr
|
|||
float _sample_rate;
|
||||
float _frequency;
|
||||
size_t _mtu_size;
|
||||
cariboulite_sample_meta* _metadata;
|
||||
bool _provide_sync;
|
||||
|
||||
cariboulite_sample_meta* _metadata;
|
||||
CaribouLite* _cl;
|
||||
CaribouLiteRadio *_radio;
|
||||
|
||||
public:
|
||||
caribouLiteSource_impl(int channel, bool enable_agc, float rx_gain, float rx_bw, float sample_rate, float freq);
|
||||
caribouLiteSource_impl(int channel,
|
||||
bool enable_agc,
|
||||
float rx_gain,
|
||||
float rx_bw,
|
||||
float sample_rate,
|
||||
float freq,
|
||||
bool provide_sync);
|
||||
~caribouLiteSource_impl();
|
||||
|
||||
int work(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2023 Free Software Foundation, Inc.
|
||||
* Copyright 2024 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GNU Radio
|
||||
*
|
||||
|
@ -14,7 +14,7 @@
|
|||
/* BINDTOOL_GEN_AUTOMATIC(0) */
|
||||
/* BINDTOOL_USE_PYGCCXML(0) */
|
||||
/* BINDTOOL_HEADER_FILE(caribouLiteSource.h) */
|
||||
/* BINDTOOL_HEADER_FILE_HASH(9ce2846f2939a8b8e624a4612154ad52) */
|
||||
/* BINDTOOL_HEADER_FILE_HASH(9aa68c862233e30766b0524aaf530760) */
|
||||
/***********************************************************************************/
|
||||
|
||||
#include <pybind11/complex.h>
|
||||
|
@ -30,30 +30,26 @@ namespace py = pybind11;
|
|||
void bind_caribouLiteSource(py::module& m)
|
||||
{
|
||||
|
||||
using caribouLiteSource = gr::caribouLite::caribouLiteSource;
|
||||
using caribouLiteSource = ::gr::caribouLite::caribouLiteSource;
|
||||
|
||||
|
||||
py::class_<caribouLiteSource, gr::sync_block, gr::block, gr::basic_block,
|
||||
std::shared_ptr<caribouLiteSource>>(m, "caribouLiteSource", D(caribouLiteSource))
|
||||
py::class_<caribouLiteSource,
|
||||
gr::sync_block,
|
||||
gr::block,
|
||||
gr::basic_block,
|
||||
std::shared_ptr<caribouLiteSource>>(
|
||||
m, "caribouLiteSource", D(caribouLiteSource))
|
||||
|
||||
.def(py::init(&caribouLiteSource::make),
|
||||
D(caribouLiteSource,make)
|
||||
)
|
||||
|
||||
|
||||
py::arg("channel") = 0,
|
||||
py::arg("enable_agc") = false,
|
||||
py::arg("rx_gain") = 40,
|
||||
py::arg("rx_bw") = 2500000,
|
||||
py::arg("sample_rate") = 4000000,
|
||||
py::arg("freq") = 900000000,
|
||||
py::arg("provide_sync") = false,
|
||||
D(caribouLiteSource, make))
|
||||
|
||||
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2023 Free Software Foundation, Inc.
|
||||
* Copyright 2024 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GNU Radio
|
||||
*
|
||||
|
@ -15,13 +15,10 @@
|
|||
*/
|
||||
|
||||
|
||||
|
||||
static const char *__doc_gr_caribouLite_caribouLiteSource = R"doc()doc";
|
||||
static const char* __doc_gr_caribouLite_caribouLiteSource = R"doc()doc";
|
||||
|
||||
|
||||
static const char *__doc_gr_caribouLite_caribouLiteSource_caribouLiteSource = R"doc()doc";
|
||||
|
||||
|
||||
static const char *__doc_gr_caribouLite_caribouLiteSource_make = R"doc()doc";
|
||||
static const char* __doc_gr_caribouLite_caribouLiteSource_caribouLiteSource = R"doc()doc";
|
||||
|
||||
|
||||
static const char* __doc_gr_caribouLite_caribouLiteSource_make = R"doc()doc";
|
||||
|
|
Ładowanie…
Reference in New Issue