From ce922ac37672abee97c55466bd5376dba6d9ef42 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 4 May 2018 10:55:14 +0000 Subject: [PATCH] coloured modem and interleaver sync, hooked up and tested resync button git-svn-id: https://svn.code.sf.net/p/freetel/code@3573 01035d8c-6547-0410-b346-abe4f91aad63 --- freedv-dev/src/fdmdv2_main.cpp | 42 +++++++++++++++++++++++----------- freedv-dev/src/fdmdv2_main.h | 1 + freedv-dev/src/topFrame.cpp | 11 ++++----- freedv-dev/src/topFrame.h | 5 ++-- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/freedv-dev/src/fdmdv2_main.cpp b/freedv-dev/src/fdmdv2_main.cpp index edea1b94..faed0576 100644 --- a/freedv-dev/src/fdmdv2_main.cpp +++ b/freedv-dev/src/fdmdv2_main.cpp @@ -73,7 +73,7 @@ struct FIFO *g_txDataInFifo; struct FIFO *g_rxDataOutFifo; // tx/rx processing states -int g_State, g_prev_State; +int g_State, g_prev_State, g_interleaverSyncState; paCallBackData *g_rxUserdata; // FIFOs used for plotting waveforms @@ -1005,15 +1005,18 @@ void MainFrame::OnTimer(wxTimerEvent &evt) if (g_prev_State == 0) { g_resyncs++; } - //m_rbSync->SetForegroundColour( wxColour( 0, 255, 0 ) ); // green - m_rbSync->SetValue(true); - } + m_textSync->SetForegroundColour( wxColour( 0, 255, 0 ) ); // green + } else { - //m_rbSync->SetForegroundColour( wxColour( 255, 0, 0 ) ); // red - m_rbSync->SetValue(false); - } + m_textSync->SetForegroundColour( wxColour( 255, 0, 0 ) ); // red + } g_prev_State = g_State; - + if (g_interleaverSyncState) { + m_textInterleaverSync->SetForegroundColour( wxColour( 0, 255, 0 ) ); // green + } else { + m_textInterleaverSync->SetForegroundColour( wxColour( 255, 0, 0 ) ); // red + } + // send Callsign ---------------------------------------------------- char callsign[MAX_CALLSIGN]; @@ -1712,7 +1715,7 @@ void MainFrame::OnTogBtnAnalogClick (wxCommandEvent& event) m_panelWaterfall->setFs(freedv_get_modem_sample_rate(g_pfreedv)); } - g_State = g_prev_State = 0; + g_State = g_prev_State = g_interleaverSyncState = 0; g_stats.snr_est = 0; event.Skip(); @@ -1732,6 +1735,18 @@ void MainFrame::OnCallSignReset(wxCommandEvent& event) #endif } + +// Force manual resync, just in case demod gets stuck on false sync + +void MainFrame::OnReSync(wxCommandEvent& event) +{ + if (m_RxRunning) { + fprintf(stderr,"OnReSync\n"); + freedv_set_sync(g_pfreedv, FREEDV_SYNC_UNSYNC); + } +} + + void MainFrame::OnBerReset(wxCommandEvent& event) { if (m_RxRunning) { @@ -1743,9 +1758,7 @@ void MainFrame::OnBerReset(wxCommandEvent& event) g_error_hist[i] = 0; g_error_histn[i] = 0; } - } - - + } } #ifdef ALC @@ -2345,9 +2358,11 @@ void MainFrame::OnTogBtnOnOff(wxCommandEvent& event) struct freedv_advanced adv; adv.interleave_frames = wxGetApp().m_FreeDV700Interleave; g_pfreedv = freedv_open_advanced(g_mode, &adv); + m_textInterleaverSync->SetLabel("Interleaver"); } else { g_pfreedv = freedv_open(g_mode); - } + m_textInterleaverSync->SetLabel(""); + } freedv_set_callback_txt(g_pfreedv, &my_put_next_rx_char, &my_get_next_tx_char, NULL); @@ -3667,6 +3682,7 @@ void per_frame_rx_processing( nin = freedv_nin(g_pfreedv); g_State = freedv_get_sync(g_pfreedv); + g_interleaverSyncState = freedv_get_sync_interleaver(g_pfreedv); //fprintf(g_logfile, "g_State: %d g_stats.sync: %d snr: %f \n", g_State, g_stats.sync, f->snr); diff --git a/freedv-dev/src/fdmdv2_main.h b/freedv-dev/src/fdmdv2_main.h index 5078ba15..0e2ed2df 100644 --- a/freedv-dev/src/fdmdv2_main.h +++ b/freedv-dev/src/fdmdv2_main.h @@ -547,6 +547,7 @@ class MainFrame : public TopFrame void OnCallSignReset( wxCommandEvent& event ); void OnBerReset( wxCommandEvent& event ); + void OnReSync( wxCommandEvent& event ); //System Events void OnPaint(wxPaintEvent& event); diff --git a/freedv-dev/src/topFrame.cpp b/freedv-dev/src/topFrame.cpp index 06da0d2c..ba158118 100644 --- a/freedv-dev/src/topFrame.cpp +++ b/freedv-dev/src/topFrame.cpp @@ -144,13 +144,11 @@ TopFrame::TopFrame(wxString plugInName, wxWindow* parent, wxWindowID id, const w wxStaticBoxSizer* sbSizer3_33; sbSizer3_33 = new wxStaticBoxSizer(new wxStaticBox(this, wxID_ANY, _("Sync")), wxVERTICAL); - m_rbSync = new wxRadioButton( this, wxID_ANY, wxT("Modem"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP); - //m_rbSync->SetForegroundColour( wxColour( 255, 0, 0 ) ); - sbSizer3_33->Add(m_rbSync, 0, wxALIGN_LEFT, 1); + m_textSync = new wxStaticText(this, wxID_ANY, wxT("Modem"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE); + sbSizer3_33->Add(m_textSync, 0, wxALIGN_CENTER_HORIZONTAL, 1); - m_rbInterleaverSync = new wxRadioButton( this, wxID_ANY, wxT("Interleaver"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP); - //m_rbInterleaverSync->SetForegroundColour( wxColour( 255, 0, 0 ) ); - sbSizer3_33->Add(m_rbInterleaverSync, 0, wxALIGN_LEFT , 1); + m_textInterleaverSync = new wxStaticText(this, wxID_ANY, wxT("Interleaver"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE); + sbSizer3_33->Add(m_textInterleaverSync, 0, wxALIGN_CENTER_HORIZONTAL , 1); m_BtnReSync = new wxButton(this, wxID_ANY, _("ReSync"), wxDefaultPosition, wxDefaultSize, 0); sbSizer3_33->Add(m_BtnReSync, 0, wxALIGN_CENTRE , 1); @@ -545,6 +543,7 @@ TopFrame::TopFrame(wxString plugInName, wxWindow* parent, wxWindowID id, const w m_BtnCallSignReset->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TopFrame::OnCallSignReset), NULL, this); m_BtnBerReset->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TopFrame::OnBerReset), NULL, this); + m_BtnReSync->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TopFrame::OnReSync), NULL, this); } TopFrame::~TopFrame() diff --git a/freedv-dev/src/topFrame.h b/freedv-dev/src/topFrame.h index ee490407..b5a2d43f 100644 --- a/freedv-dev/src/topFrame.h +++ b/freedv-dev/src/topFrame.h @@ -104,8 +104,8 @@ class TopFrame : public wxFrame wxStaticText *m_textBER; wxStaticText *m_textResyncs; - wxRadioButton *m_rbSync; - wxRadioButton *m_rbInterleaverSync; + wxStaticText *m_textSync; + wxStaticText *m_textInterleaverSync; wxButton *m_BtnReSync; wxRadioButton *m_rb1400old; @@ -176,6 +176,7 @@ class TopFrame : public wxFrame virtual void OnCallSignReset( wxCommandEvent& event ) { event.Skip(); } virtual void OnBerReset( wxCommandEvent& event ) { event.Skip(); } + virtual void OnReSync( wxCommandEvent& event ) { event.Skip(); } public: wxToggleButton* m_togRxID; -- 2.25.1