Skip to content

Commit

Permalink
Created better Public API
Browse files Browse the repository at this point in the history
Made it easier to have a public API
  • Loading branch information
robotastic committed May 17, 2022
1 parent bf51402 commit 4a6aef5
Show file tree
Hide file tree
Showing 16 changed files with 886 additions and 725 deletions.
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -228,11 +228,11 @@ list(APPEND trunk_recorder_sources
trunk-recorder/systems/p25_parser.cc
trunk-recorder/systems/smartnet_decode.cc
trunk-recorder/systems/system_impl.cc
trunk-recorder/recorders/debug_recorder.cc
trunk-recorder/recorders/sigmf_recorder.cc
trunk-recorder/recorders/debug_recorder_impl.cc
trunk-recorder/recorders/sigmf_recorder_impl.cc
trunk-recorder/recorders/analog_recorder.cc
trunk-recorder/recorders/dmr_recorder.cc
trunk-recorder/recorders/p25_recorder.cc
trunk-recorder/recorders/dmr_recorder_impl.cc
trunk-recorder/recorders/p25_recorder_impl.cc
trunk-recorder/recorders/p25_recorder_fsk4_demod.cc
trunk-recorder/recorders/p25_recorder_qpsk_demod.cc
trunk-recorder/recorders/p25_recorder_decode.cc
Expand Down
1 change: 0 additions & 1 deletion trunk-recorder/recorders/analog_recorder.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ class Source;
class analog_recorder;

#include "../systems/system.h"
#include "../systems/system_impl.h"
#include "recorder.h"
#include "../gr_blocks/decoder_wrapper.h"
#include "../gr_blocks/plugin_wrapper.h"
Expand Down
131 changes: 23 additions & 108 deletions trunk-recorder/recorders/debug_recorder.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#ifndef debug_RECORDER_H
#define debug_RECORDER_H
#ifndef DEBUG_RECORDER_H
#define DEBUG_RECORDER_H

#define _USE_MATH_DEFINES

Expand All @@ -18,43 +18,6 @@
#include <gnuradio/hier_block2.h>
#include <gnuradio/io_signature.h>

#include <gnuradio/analog/feedforward_agc_cc.h>
#include <gnuradio/analog/pll_freqdet_cf.h>
#include <gnuradio/analog/pwr_squelch_cc.h>
#include <gnuradio/digital/diff_phasor_cc.h>
#include <gnuradio/filter/firdes.h>
#include <gnuradio/filter/pfb_arb_resampler_ccf.h>

#if GNURADIO_VERSION < 0x030800
#include <gnuradio/analog/sig_source_c.h>
#include <gnuradio/blocks/multiply_cc.h>
#include <gnuradio/blocks/multiply_const_ff.h>
#include <gnuradio/blocks/multiply_const_ss.h>
#include <gnuradio/filter/fir_filter_ccf.h>
#include <gnuradio/filter/fir_filter_fff.h>
#else
#include <gnuradio/analog/sig_source.h>
#include <gnuradio/blocks/multiply.h>
#include <gnuradio/blocks/multiply_const.h>
#include <gnuradio/filter/fir_filter_blk.h>
#endif

#include <gnuradio/block.h>
#include <gnuradio/blocks/complex_to_arg.h>
#include <gnuradio/blocks/copy.h>
#include <gnuradio/blocks/short_to_float.h>

#include <op25_repeater/fsk4_slicer_fb.h>
#include <op25_repeater/gardner_costas_cc.h>
#include <op25_repeater/include/op25_repeater/fsk4_demod_ff.h>
#include <op25_repeater/include/op25_repeater/p25_frame_assembler.h>
#include <op25_repeater/include/op25_repeater/rx_status.h>
#include <op25_repeater/vocoder.h>

#include <gnuradio/blocks/file_sink.h>
#include <gnuradio/blocks/head.h>
#include <gnuradio/message.h>
#include <gnuradio/msg_queue.h>

#include "recorder.h"
#include "../gr_blocks/freq_xlating_fft_filter.h"
Expand All @@ -72,78 +35,30 @@ class debug_recorder;
debug_recorder_sptr make_debug_recorder(Source *src, std::string address, int port);
#include "../source.h"

class debug_recorder : public gr::hier_block2, public Recorder {
friend debug_recorder_sptr make_debug_recorder(Source *src, std::string address, int port);
class debug_recorder : virtual public gr::hier_block2, virtual public Recorder {
static debug_recorder_sptr make_debug_recorder(Source *src, std::string address, int port);

protected:
debug_recorder(Source *src, std::string address, int port);

public:
~debug_recorder();

void tune_freq(double f);
void tune_offset(double f);
bool start(Call *call);
void stop();
double get_freq();
int get_num();
double get_current_length();
bool is_active();
State get_state();
int lastupdate();
long elapsed();
Source *get_source();
long get_source_count();
Call_Source *get_source_list();
void initialize_prefilter();
DecimSettings get_decim(long speed);
void generate_arb_taps();
//void forecast(int noutput_items, gr_vector_int &ninput_items_required);

private:
double chan_freq;
double center_freq;
long talkgroup;
time_t timestamp;
time_t starttime;

Config *config;
Source *source;

//int num;
State state;

double system_channel_rate;
double arb_rate;
double samples_per_symbol;
double symbol_rate;

long decim;
double resampled_rate;
bool double_decim;
long if1;
long if2;
long input_rate;
const int phase1_samples_per_symbol = 5;
const double phase1_symbol_rate = 4800;

std::vector<float> arb_taps;
std::vector<float> sym_taps;
std::vector<float> baseband_noise_filter_taps;
std::vector<gr_complex> bandpass_filter_coeffs;
std::vector<float> lowpass_filter_coeffs;
std::vector<float> cutoff_filter_coeffs;

gr::filter::fft_filter_ccc::sptr bandpass_filter;
gr::filter::fft_filter_ccf::sptr lowpass_filter;
gr::filter::fft_filter_ccf::sptr cutoff_filter;

gr::blocks::copy::sptr valve;
gr::analog::sig_source_c::sptr lo;
gr::analog::sig_source_c::sptr bfo;
gr::blocks::multiply_cc::sptr mixer;
gr::blocks::udp_sink::sptr udp_sink;
gr::filter::pfb_arb_resampler_ccf::sptr arb_resampler;
virtual ~debug_recorder() {};

virtual void tune_freq(double f) = 0;
virtual void tune_offset(double f) = 0;
virtual bool start(Call *call) = 0;
virtual void stop() = 0;
virtual double get_freq() = 0;
virtual int get_num() = 0;
virtual double get_current_length() = 0;
virtual bool is_active() = 0;
virtual State get_state() = 0;
virtual int lastupdate() = 0;
virtual long elapsed() = 0;
virtual Source *get_source() = 0;
virtual long get_source_count() = 0;
virtual Call_Source *get_source_list() = 0;
virtual void initialize_prefilter() = 0;
virtual DecimSettings get_decim(long speed) = 0;
virtual void generate_arb_taps() = 0;
};

#endif
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@

#include "debug_recorder.h"
#include "debug_recorder_impl.h"
#include <boost/log/trivial.hpp>

//static int rec_counter=0;

debug_recorder_sptr make_debug_recorder(Source *src, std::string address, int port) {
return gnuradio::get_initial_sptr(new debug_recorder(src, address, port));
debug_recorder *recorder = new debug_recorder_impl(src, address, port);

return gnuradio::get_initial_sptr(recorder);

}
void debug_recorder::generate_arb_taps() {
void debug_recorder_impl::generate_arb_taps() {

double arb_size = 32;
double arb_atten = 100;
Expand Down Expand Up @@ -41,7 +45,7 @@ void debug_recorder::generate_arb_taps() {
}
}

debug_recorder::DecimSettings debug_recorder::get_decim(long speed) {
debug_recorder_impl::DecimSettings debug_recorder_impl::get_decim(long speed) {
long s = speed;
long if_freqs[] = {32000};
DecimSettings decim_settings = {-1, -1};
Expand Down Expand Up @@ -69,7 +73,7 @@ debug_recorder::DecimSettings debug_recorder::get_decim(long speed) {
return decim_settings;
}

void debug_recorder::initialize_prefilter() {
void debug_recorder_impl::initialize_prefilter() {
//double phase1_channel_rate = phase1_symbol_rate * phase1_samples_per_symbol;
//double phase2_channel_rate = phase2_symbol_rate * phase2_samples_per_symbol;
long if_rate = 32000;
Expand All @@ -86,7 +90,7 @@ void debug_recorder::initialize_prefilter() {
lo = gr::analog::sig_source_c::make(input_rate, gr::analog::GR_SIN_WAVE, 0, 1.0, 0.0);
mixer = gr::blocks::multiply_cc::make();

debug_recorder::DecimSettings decim_settings = get_decim(input_rate);
debug_recorder_impl::DecimSettings decim_settings = get_decim(input_rate);
if (decim_settings.decim != -1) {
double_decim = true;
decim = decim_settings.decim;
Expand Down Expand Up @@ -138,7 +142,7 @@ void debug_recorder::initialize_prefilter() {
connect(lowpass_filter, 0, arb_resampler, 0);
}

debug_recorder::debug_recorder(Source *src, std::string address, int port)
debug_recorder_impl::debug_recorder_impl(Source *src, std::string address, int port)
: gr::hier_block2("debug_recorder",
gr::io_signature::make(1, 1, sizeof(gr_complex)),
gr::io_signature::make(0, 0, sizeof(float))),
Expand All @@ -160,54 +164,53 @@ debug_recorder::debug_recorder(Source *src, std::string address, int port)
connect(arb_resampler, 0, udp_sink, 0);
}

debug_recorder::~debug_recorder() {}

long debug_recorder::get_source_count() {
long debug_recorder_impl::get_source_count() {
return 0;
}

Call_Source *debug_recorder::get_source_list() {
Call_Source *debug_recorder_impl::get_source_list() {
return NULL; //wav_sink->get_source_list();
}

Source *debug_recorder::get_source() {
Source *debug_recorder_impl::get_source() {
return source;
}

int debug_recorder::get_num() {
int debug_recorder_impl::get_num() {
return rec_num;
}

bool debug_recorder::is_active() {
bool debug_recorder_impl::is_active() {
if (state == ACTIVE) {
return true;
} else {
return false;
}
}

double debug_recorder::get_freq() {
double debug_recorder_impl::get_freq() {
return chan_freq;
}

double debug_recorder::get_current_length() {
double debug_recorder_impl::get_current_length() {
return 0; //wav_sink->length_in_seconds();
}

int debug_recorder::lastupdate() {
int debug_recorder_impl::lastupdate() {
return time(NULL) - timestamp;
}

long debug_recorder::elapsed() {
long debug_recorder_impl::elapsed() {
return time(NULL) - starttime;
}

void debug_recorder::tune_freq(double f) {
void debug_recorder_impl::tune_freq(double f) {
chan_freq = f;
float freq = (center_freq - f);
tune_offset(freq);
}
void debug_recorder::tune_offset(double f) {
void debug_recorder_impl::tune_offset(double f) {

float freq = static_cast<float>(f);

Expand All @@ -232,11 +235,11 @@ void debug_recorder::tune_offset(double f) {
}
}

State debug_recorder::get_state() {
State debug_recorder_impl::get_state() {
return state;
}

void debug_recorder::stop() {
void debug_recorder_impl::stop() {
if (state == ACTIVE) {
BOOST_LOG_TRIVIAL(error) << "debug_recorder.cc: Stopping Logger \t[ " << rec_num << " ] - freq[ " << chan_freq << "] \t talkgroup[ " << talkgroup << " ]";
state = INACTIVE;
Expand All @@ -246,7 +249,7 @@ void debug_recorder::stop() {
}
}

bool debug_recorder::start(Call *call) {
bool debug_recorder_impl::start(Call *call) {
if (state == INACTIVE) {
timestamp = time(NULL);
starttime = time(NULL);
Expand Down
Loading

0 comments on commit 4a6aef5

Please sign in to comment.