1/ Assuming the fdmdv2-dev source is checked out into ~/fdmdv2-dev:
- $ sudo apt-get install libgtk2.0-dev libhamlib-dev libsamplerate-dev libasound2-dev libao-dev
+ $ sudo apt-get install libgtk2.0-dev libhamlib-dev libsamplerate-dev libasound2-dev libao-dev libgsm1-dev
$ cd fdmdv2-dev
$ mkdir build_linux
$ cd build_linux
+ this was 7.5 to 8kHz interpolator bug
[X] spectrum and waterfall scale changes when analog pressed
[X] ocassional test frames error counter goes crazy
+ [ ] old Waterfall AGC
[ ] 700 syncs up to 1000Hz sine waves
+ shouldn't trigger sync logic, will be a problem with carriers
[ ] "clip" led, encourage people to adjust gain to hit that occ when speaking
m_rb1600->SetValue(1);
if (mode == 1)
m_rb700->SetValue(1);
+ if (mode == 2)
+ m_rb700b->SetValue(1);
pConfig->SetPath(wxT("/"));
mode = 0;
if (m_rb700->GetValue())
mode = 1;
+ if (m_rb700b->GetValue())
+ mode = 2;
pConfig->Write(wxT("/Audio/mode"), mode);
}
m_panelScatter->add_new_samples(&g_stats.rx_symbols[r][0]);
}
- if (g_pfreedv->mode == FREEDV_MODE_700) {
+ if ((g_pfreedv->mode == FREEDV_MODE_700) || (g_pfreedv->mode == FREEDV_MODE_700B)) {
/*
FreeDV 700 uses diversity, so combine symbols for
m_panelTestFrameErrorsHist->add_new_short_samples(0, g_error_hist, 2*FDMDV_NC_MAX, max_hist);
}
- if (g_pfreedv->mode == FREEDV_MODE_700) {
+ if ((g_pfreedv->mode == FREEDV_MODE_700) || (g_pfreedv->mode == FREEDV_MODE_700B)) {
int c;
/* FreeDV 700 mapping from error pattern to bit on each
m_rb1600->Disable();
m_rb700->Disable();
+ m_rb700b->Disable();
// determine what mode we are using
g_Nc = 14;
m_panelScatter->setNc(g_Nc/2-1); /* due to diversity, -1 due to no pilot like FreeDV 1600 */
}
+ if (m_rb700b->GetValue()) {
+ g_mode = FREEDV_MODE_700B;
+ g_Nc = 14;
+ m_panelScatter->setNc(g_Nc/2-1); /* due to diversity, -1 due to no pilot like FreeDV 1600 */
+ }
// init freedv states
m_togBtnOnOff->SetLabel(wxT("Start"));
m_rb1600->Enable();
m_rb700->Enable();
+ m_rb700b->Enable();
#ifdef DISABLED_FEATURE
m_rb1400old->Enable();
m_rb1600Wide->Enable();
if (g_pfreedv->mode == FREEDV_MODE_1600)
snr = 2.0;
- if (g_pfreedv->mode == FREEDV_MODE_700)
+ if ((g_pfreedv->mode == FREEDV_MODE_700) || (g_pfreedv->mode == FREEDV_MODE_700))
snr = -1.0;
fdmdv_simulate_channel(&g_sig_pwr_av, rx_fdm, nin, snr);
}
if (g_pfreedv->mode == FREEDV_MODE_1600)
fdmdv_get_demod_stats(g_pfreedv->fdmdv, &g_stats);
- if (g_pfreedv->mode == FREEDV_MODE_700)
+ if ((g_pfreedv->mode == FREEDV_MODE_700) || (g_pfreedv->mode == FREEDV_MODE_700B))
cohpsk_get_demod_stats(g_pfreedv->cohpsk, &g_stats);
}
#endif
m_rb700 = new wxRadioButton( this, wxID_ANY, wxT("700"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
sbSizer_mode->Add(m_rb700, 0, wxALIGN_LEFT|wxALL, 1);
+ m_rb700b = new wxRadioButton( this, wxID_ANY, wxT("700B"), wxDefaultPosition, wxDefaultSize, 0);
+ sbSizer_mode->Add(m_rb700b, 0, wxALIGN_LEFT|wxALL, 1);
m_rb1600 = new wxRadioButton( this, wxID_ANY, wxT("1600"), wxDefaultPosition, wxDefaultSize, 0);
sbSizer_mode->Add(m_rb1600, 0, wxALIGN_LEFT|wxALL, 1);
m_rb1600->SetValue(true);