From 1eca2f0a08ea59909b801f356d975207caebce67 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Tue, 1 May 2018 04:16:37 +0000 Subject: [PATCH] first pass 700D rx demodulating from a file git-svn-id: https://svn.code.sf.net/p/freetel/code@3546 01035d8c-6547-0410-b346-abe4f91aad63 --- freedv-dev/src/fdmdv2_main.cpp | 43 +++++++++++++++++++++++++--------- freedv-dev/src/topFrame.cpp | 2 ++ freedv-dev/src/topFrame.h | 1 + 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/freedv-dev/src/fdmdv2_main.cpp b/freedv-dev/src/fdmdv2_main.cpp index 000a76d0..09657aa0 100644 --- a/freedv-dev/src/fdmdv2_main.cpp +++ b/freedv-dev/src/fdmdv2_main.cpp @@ -521,6 +521,8 @@ MainFrame::MainFrame(wxString plugInName, wxWindow *parent) : TopFrame(plugInNam if (mode == 3) m_rb700c->SetValue(1); if (mode == 4) + m_rb700d->SetValue(1); + if (mode == 5) m_rb800xa->SetValue(1); pConfig->SetPath(wxT("/")); @@ -631,9 +633,12 @@ MainFrame::MainFrame(wxString plugInName, wxWindow *parent) : TopFrame(plugInNam } #endif - //ftest = fopen("ftest.raw", "wb"); - //assert(ftest != NULL); - + #define FTEST + #ifdef FTEST + ftest = fopen("ftest.raw", "wb"); + assert(ftest != NULL); + #endif + } //------------------------------------------------------------------------- @@ -647,7 +652,9 @@ MainFrame::~MainFrame() int h; //fprintf(stderr, "MainFrame::~MainFrame()\n"); - //fclose(ftest); + #ifdef FTEST + fclose(ftest); + #endif #ifdef __WXMSW__ fclose(g_logfile); #endif @@ -748,8 +755,10 @@ MainFrame::~MainFrame() // mode = 2; if (m_rb700c->GetValue()) mode = 3; - if (m_rb800xa->GetValue()) + if (m_rb700d->GetValue()) mode = 4; + if (m_rb800xa->GetValue()) + mode = 5; pConfig->Write(wxT("/Audio/mode"), mode); } @@ -838,7 +847,7 @@ void MainFrame::OnTimer(wxTimerEvent &evt) /* PSK Modes - scatter plot -------------------------------------------------------*/ for (r=0; radd_new_samples_scatter(&g_stats.rx_symbols[r][0]); } @@ -2258,6 +2267,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) m_rb1600->Disable(); //m_rb700b->Disable(); m_rb700c->Disable(); + m_rb700d->Disable(); m_rb800xa->Disable(); if (m_rbPlugIn != NULL) m_rbPlugIn->Disable(); @@ -2291,6 +2301,11 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) m_panelScatter->setNc(g_Nc); } } + if (m_rb700d->GetValue()) { + g_mode = FREEDV_MODE_700D; + g_Nc = 17; /* TODO: be nice if we didn't have to hard code this */ + m_panelScatter->setNc(g_Nc); + } if (m_rb800xa->GetValue()) { g_mode = FREEDV_MODE_800XA; } @@ -2324,7 +2339,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) } assert(g_pfreedv != NULL); - + // init Codec 2 LPC Post Filter codec2_set_lpc_post_filter(freedv_get_codec2(g_pfreedv), @@ -2467,6 +2482,7 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) m_rb1600->Enable(); //m_rb700b->Enable(); m_rb700c->Enable(); + m_rb700d->Enable(); m_rb800xa->Enable(); if (m_rbPlugIn != NULL) m_rbPlugIn->Enable(); @@ -2754,8 +2770,10 @@ void MainFrame::startRxStream() g_rxUserdata->infifo2 = fifo_create(8*N48); //fprintf(stderr, "N48: %d\n", N48); - g_rxUserdata->rxinfifo = fifo_create(10 * N8); - g_rxUserdata->rxoutfifo = fifo_create(10 * N8); + /* TODO: might be able to tune these on a per waveform basis */ + + g_rxUserdata->rxinfifo = fifo_create(20 * N8); + g_rxUserdata->rxoutfifo = fifo_create(20 * N8); // Init Equaliser Filters ------------------------------------------------------ @@ -3578,6 +3596,7 @@ void per_frame_rx_processing( int nin, nout; nin = freedv_nin(g_pfreedv); + //fprintf(stderr, "nin: %d max_modem_samples: %d\n", nin, freedv_get_n_max_modem_samples(g_pfreedv)); while (fifo_read(input_fifo, input_buf, nin) == 0) { assert(nin <= freedv_get_n_max_modem_samples(g_pfreedv)); @@ -3585,8 +3604,10 @@ void per_frame_rx_processing( int nin_prev = nin; #endif - //fwrite(input_buf, sizeof(short), nin, ftest); - + #ifdef FTEST + fwrite(input_buf, sizeof(short), nin, ftest); + #endif + // demod per frame processing for(i=0; iAdd(m_rb700c, 0, wxALIGN_LEFT|wxALL, 1); + m_rb700d = new wxRadioButton( this, wxID_ANY, wxT("700D"), wxDefaultPosition, wxDefaultSize, 0); + sbSizer_mode->Add(m_rb700d, 0, wxALIGN_LEFT|wxALL, 1); m_rb800xa = new wxRadioButton( this, wxID_ANY, wxT("800XA"), wxDefaultPosition, wxDefaultSize, 0); sbSizer_mode->Add(m_rb800xa, 0, wxALIGN_LEFT|wxALL, 1); m_rb1600 = new wxRadioButton( this, wxID_ANY, wxT("1600"), wxDefaultPosition, wxDefaultSize, 0); diff --git a/freedv-dev/src/topFrame.h b/freedv-dev/src/topFrame.h index 37950a99..fe97b0cc 100644 --- a/freedv-dev/src/topFrame.h +++ b/freedv-dev/src/topFrame.h @@ -110,6 +110,7 @@ class TopFrame : public wxFrame wxRadioButton *m_rb700; wxRadioButton *m_rb700b; wxRadioButton *m_rb700c; + wxRadioButton *m_rb700d; wxRadioButton *m_rb800xa; wxRadioButton *m_rb1600; wxRadioButton *m_rb2000; -- 2.25.1