From 349d99449e770622f51e9a73776459e73a379e6a Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 21 Nov 2012 05:31:22 +0000 Subject: [PATCH] tx and rx click tune, tied together (non split) git-svn-id: https://svn.code.sf.net/p/freetel/code@1043 01035d8c-6547-0410-b346-abe4f91aad63 --- fdmdv2/src/fdmdv2_main.cpp | 16 ++++++++++++++-- fdmdv2/src/fdmdv2_plot_spectrum.cpp | 2 ++ fdmdv2/src/fdmdv2_plot_spectrum.h | 2 ++ fdmdv2/src/fdmdv2_plot_waterfall_linux.cpp | 1 + fdmdv2/src/fdmdv2_plot_waterfall_linux.h | 1 + 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/fdmdv2/src/fdmdv2_main.cpp b/fdmdv2/src/fdmdv2_main.cpp index 7a8139f2..2791bd04 100644 --- a/fdmdv2/src/fdmdv2_main.cpp +++ b/fdmdv2/src/fdmdv2_main.cpp @@ -77,10 +77,13 @@ unsigned int g_recFromRadioSamples; int g_recFileFromRadioEventId; wxWindow *g_parent; -// Click to tune rx frequency offset states +// Click to tune rx and tx frequency offset states float g_RxFreqOffsetHz; COMP g_RxFreqOffsetPhaseRect; COMP g_RxFreqOffsetFreqRect; +float g_TxFreqOffsetHz; +COMP g_TxFreqOffsetPhaseRect; +COMP g_TxFreqOffsetFreqRect; // DRs debug variables, will be cleaned up eventually int cb_cnt, cb1, cb2; @@ -349,6 +352,12 @@ MainFrame::MainFrame(wxWindow *parent) : TopFrame(parent) g_RxFreqOffsetFreqRect.imag = sin(g_RxFreqOffsetHz); g_RxFreqOffsetPhaseRect.real = cos(0.0); g_RxFreqOffsetPhaseRect.imag = sin(0.0); + + g_TxFreqOffsetHz = 0.0; + g_TxFreqOffsetFreqRect.real = cos(g_TxFreqOffsetHz); + g_TxFreqOffsetFreqRect.imag = sin(g_TxFreqOffsetHz); + g_TxFreqOffsetPhaseRect.real = cos(0.0); + g_TxFreqOffsetPhaseRect.imag = sin(0.0); } @@ -2062,6 +2071,7 @@ void per_frame_tx_processing( unsigned char packed_bits[BYTES_PER_CODEC_FRAME]; int bits[BITS_PER_CODEC_FRAME]; COMP tx_fdm[2*FDMDV_NOM_SAMPLES_PER_FRAME]; + COMP tx_fdm_offset[2*FDMDV_NOM_SAMPLES_PER_FRAME]; int sync_bit; int i, bit, byte; @@ -2088,10 +2098,12 @@ void per_frame_tx_processing( fdmdv_mod(g_pFDMDV, &tx_fdm[FDMDV_NOM_SAMPLES_PER_FRAME], &bits[FDMDV_BITS_PER_FRAME], &sync_bit); assert(sync_bit == 0); + fdmdv_freq_shift(tx_fdm_offset, tx_fdm, g_TxFreqOffsetHz, &g_TxFreqOffsetPhaseRect, &g_TxFreqOffsetFreqRect, 2*FDMDV_NOM_SAMPLES_PER_FRAME); + /* scale and convert shorts */ for(i=0; i<2*FDMDV_NOM_SAMPLES_PER_FRAME; i++) - tx_fdm_scaled[i] = FDMDV_SCALE * tx_fdm[i].real; + tx_fdm_scaled[i] = FDMDV_SCALE * tx_fdm_offset[i].real; } diff --git a/fdmdv2/src/fdmdv2_plot_spectrum.cpp b/fdmdv2/src/fdmdv2_plot_spectrum.cpp index 4103ba03..c2bfd0c7 100644 --- a/fdmdv2/src/fdmdv2_plot_spectrum.cpp +++ b/fdmdv2/src/fdmdv2_plot_spectrum.cpp @@ -220,6 +220,8 @@ void PlotSpectrum::OnMouseDown(wxMouseEvent& event) float clickFreq = (float)pt.x/freq_hz_to_px; // see PlotWaterfall::OnMouseDown() + g_RxFreqOffsetHz = FDMDV_FCENTRE - clickFreq; + g_TxFreqOffsetHz = clickFreq - FDMDV_FCENTRE; } } diff --git a/fdmdv2/src/fdmdv2_plot_spectrum.h b/fdmdv2/src/fdmdv2_plot_spectrum.h index 6a037636..bd173301 100644 --- a/fdmdv2/src/fdmdv2_plot_spectrum.h +++ b/fdmdv2/src/fdmdv2_plot_spectrum.h @@ -46,5 +46,7 @@ class PlotSpectrum : public PlotPanel DECLARE_EVENT_TABLE() }; +extern float g_RxFreqOffsetHz; +extern float g_TxFreqOffsetHz; #endif //__FDMDV2_PLOT_SPECTRUM__ diff --git a/fdmdv2/src/fdmdv2_plot_waterfall_linux.cpp b/fdmdv2/src/fdmdv2_plot_waterfall_linux.cpp index 421d3778..9bd4e2b7 100644 --- a/fdmdv2/src/fdmdv2_plot_waterfall_linux.cpp +++ b/fdmdv2/src/fdmdv2_plot_waterfall_linux.cpp @@ -386,5 +386,6 @@ void PlotWaterfall::OnMouseDown(wxMouseEvent& event) // to the tx/rx thread g_RxFreqOffsetHz = FDMDV_FCENTRE - clickFreq; + g_TxFreqOffsetHz = clickFreq - FDMDV_FCENTRE; } } diff --git a/fdmdv2/src/fdmdv2_plot_waterfall_linux.h b/fdmdv2/src/fdmdv2_plot_waterfall_linux.h index ad7c2614..32af9220 100644 --- a/fdmdv2/src/fdmdv2_plot_waterfall_linux.h +++ b/fdmdv2/src/fdmdv2_plot_waterfall_linux.h @@ -59,5 +59,6 @@ class PlotWaterfall : public PlotPanel }; extern float g_RxFreqOffsetHz; +extern float g_TxFreqOffsetHz; #endif //__FDMDV2_PLOT_WATERFALL__ -- 2.25.1