diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index ad99319..b659b0f 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -201,20 +201,23 @@ AppFrame::AppFrame() : menuBar->Append(menu, wxT("&Color Scheme")); menu = new wxMenu; - + + sampleRateMenuItems[wxID_BANDWIDTH_250K] = menu->AppendRadioItem(wxID_BANDWIDTH_250K, "250k"); sampleRateMenuItems[wxID_BANDWIDTH_1000M] = menu->AppendRadioItem(wxID_BANDWIDTH_1000M, "1.0M"); - sampleRateMenuItems[wxID_BANDWIDTH_1500M] = menu->AppendRadioItem(wxID_BANDWIDTH_1500M, "1.5M"); + sampleRateMenuItems[wxID_BANDWIDTH_1500M] = menu->AppendRadioItem(wxID_BANDWIDTH_1024M, "1.024M"); + sampleRateMenuItems[wxID_BANDWIDTH_1024M] = menu->AppendRadioItem(wxID_BANDWIDTH_1500M, "1.5M"); + sampleRateMenuItems[wxID_BANDWIDTH_1800M] = menu->AppendRadioItem(wxID_BANDWIDTH_1800M, "1.8M"); + sampleRateMenuItems[wxID_BANDWIDTH_1920M] = menu->AppendRadioItem(wxID_BANDWIDTH_1920M, "1.92M"); sampleRateMenuItems[wxID_BANDWIDTH_2000M] = menu->AppendRadioItem(wxID_BANDWIDTH_2000M, "2.0M"); + sampleRateMenuItems[wxID_BANDWIDTH_2048M] = menu->AppendRadioItem(wxID_BANDWIDTH_2048M, "2.048M"); sampleRateMenuItems[wxID_BANDWIDTH_2160M] = menu->AppendRadioItem(wxID_BANDWIDTH_2160M, "2.16M"); - sampleRateMenuItems[wxID_BANDWIDTH_2500M] = menu->AppendRadioItem(wxID_BANDWIDTH_2500M, "2.5M"); + sampleRateMenuItems[wxID_BANDWIDTH_2400M] = menu->AppendRadioItem(wxID_BANDWIDTH_2400M, "2.4M"); + sampleRateMenuItems[wxID_BANDWIDTH_2560M] = menu->AppendRadioItem(wxID_BANDWIDTH_2560M, "2.56M"); sampleRateMenuItems[wxID_BANDWIDTH_2880M] = menu->AppendRadioItem(wxID_BANDWIDTH_2880M, "2.88M"); +// sampleRateMenuItems[wxID_BANDWIDTH_3000M] = menu->AppendRadioItem(wxID_BANDWIDTH_3000M, "3.0M"); sampleRateMenuItems[wxID_BANDWIDTH_3200M] = menu->AppendRadioItem(wxID_BANDWIDTH_3200M, "3.2M"); -#ifdef __APPLE - sampleRateMenuItems[wxID_BANDWIDTH_2000M]->Check(true); -#else - sampleRateMenuItems[wxID_BANDWIDTH_2500M]->Check(true); -#endif + sampleRateMenuItems[wxID_BANDWIDTH_2400M]->Check(true); menuBar->Append(menu, wxT("&Input Bandwidth")); @@ -399,27 +402,48 @@ void AppFrame::OnMenu(wxCommandEvent& event) { } switch (event.GetId()) { - case wxID_BANDWIDTH_1000M: - wxGetApp().setSampleRate(1000000); - break; - case wxID_BANDWIDTH_1500M: - wxGetApp().setSampleRate(1500000); - break; - case wxID_BANDWIDTH_2000M: - wxGetApp().setSampleRate(2000000); - break; - case wxID_BANDWIDTH_2160M: - wxGetApp().setSampleRate(2160000); - break; - case wxID_BANDWIDTH_2500M: - wxGetApp().setSampleRate(2500000); - break; - case wxID_BANDWIDTH_2880M: - wxGetApp().setSampleRate(2880000); - break; - case wxID_BANDWIDTH_3200M: - wxGetApp().setSampleRate(3200000); - break; + case wxID_BANDWIDTH_250K: + wxGetApp().setSampleRate(250000); + break; + case wxID_BANDWIDTH_1000M: + wxGetApp().setSampleRate(1000000); + break; + case wxID_BANDWIDTH_1024M: + wxGetApp().setSampleRate(1024000); + break; + case wxID_BANDWIDTH_1500M: + wxGetApp().setSampleRate(1500000); + break; + case wxID_BANDWIDTH_1800M: + wxGetApp().setSampleRate(1800000); + break; + case wxID_BANDWIDTH_1920M: + wxGetApp().setSampleRate(1920000); + break; + case wxID_BANDWIDTH_2000M: + wxGetApp().setSampleRate(2000000); + break; + case wxID_BANDWIDTH_2048M: + wxGetApp().setSampleRate(2048000); + break; + case wxID_BANDWIDTH_2160M: + wxGetApp().setSampleRate(2160000); + break; + case wxID_BANDWIDTH_2400M: + wxGetApp().setSampleRate(2400000); + break; + case wxID_BANDWIDTH_2560M: + wxGetApp().setSampleRate(2560000); + break; + case wxID_BANDWIDTH_2880M: + wxGetApp().setSampleRate(2880000); + break; +// case wxID_BANDWIDTH_3000M: +// wxGetApp().setSampleRate(3000000); +// break; + case wxID_BANDWIDTH_3200M: + wxGetApp().setSampleRate(3200000); + break; } std::vector *devs = wxGetApp().getDevices(); diff --git a/src/AppFrame.h b/src/AppFrame.h index a97ce49..5788bb7 100644 --- a/src/AppFrame.h +++ b/src/AppFrame.h @@ -29,13 +29,20 @@ #define wxID_THEME_HD 2105 #define wxID_THEME_RADAR 2106 -#define wxID_BANDWIDTH_1000M 2152 +#define wxID_BANDWIDTH_250K 2150 +#define wxID_BANDWIDTH_1000M 2151 +#define wxID_BANDWIDTH_1024M 2152 #define wxID_BANDWIDTH_1500M 2153 -#define wxID_BANDWIDTH_2000M 2154 -#define wxID_BANDWIDTH_2160M 2155 -#define wxID_BANDWIDTH_2500M 2156 -#define wxID_BANDWIDTH_2880M 2157 -#define wxID_BANDWIDTH_3200M 2158 +#define wxID_BANDWIDTH_1800M 2154 +#define wxID_BANDWIDTH_1920M 2155 +#define wxID_BANDWIDTH_2000M 2156 +#define wxID_BANDWIDTH_2048M 2157 +#define wxID_BANDWIDTH_2160M 2158 +#define wxID_BANDWIDTH_2400M 2159 +#define wxID_BANDWIDTH_2560M 2160 +#define wxID_BANDWIDTH_2880M 2161 +//#define wxID_BANDWIDTH_3000M 2162 +#define wxID_BANDWIDTH_3200M 2163 #define wxID_DEVICE_ID 3500 diff --git a/src/CubicSDRDefs.h b/src/CubicSDRDefs.h index e06a4f3..c40a0b1 100644 --- a/src/CubicSDRDefs.h +++ b/src/CubicSDRDefs.h @@ -25,20 +25,9 @@ const char filePathSeparator = '/'; #endif -#ifdef __APPLE__ #define BUF_SIZE (16384*6) -#define DEFAULT_SAMPLE_RATE 2000000 -#endif -#ifdef __linux__ -#define BUF_SIZE (16384*6) -#define DEFAULT_SAMPLE_RATE 2000000 -#endif - -#ifndef BUF_SIZE -#define BUF_SIZE (16384*5) -#define DEFAULT_SAMPLE_RATE 2500000 -#endif +#define DEFAULT_SAMPLE_RATE 2400000 #define DEFAULT_FFT_SIZE 2048 #define DEFAULT_FREQ 100000000 diff --git a/src/demod/DemodulatorThread.cpp b/src/demod/DemodulatorThread.cpp index 146603e..160e04d 100644 --- a/src/demod/DemodulatorThread.cpp +++ b/src/demod/DemodulatorThread.cpp @@ -375,9 +375,9 @@ void DemodulatorThread::threadMain() { // std::cout << "Signal: " << agc_crcf_get_signal_level(agc) << " -- " << agc_crcf_get_rssi(agc) << "dB " << std::endl; } - ati_vis->busy_update.unlock(); - audioVisOutputQueue->push(ati_vis); + + ati_vis->busy_update.unlock(); } if (!threadQueueControl->empty()) { int newDemodType = DEMOD_TYPE_NULL; diff --git a/src/sdr/SDRPostThread.cpp b/src/sdr/SDRPostThread.cpp index db7450a..6d94074 100644 --- a/src/sdr/SDRPostThread.cpp +++ b/src/sdr/SDRPostThread.cpp @@ -149,9 +149,9 @@ void SDRPostThread::threadMain() { visualDataOut->sampleRate = data_in->sampleRate; visualDataOut->data.assign(dataOut.begin(), dataOut.begin() + num_vis_samples); - visualDataOut->busy_rw.unlock(); - iqVisualQueue.load()->push(visualDataOut); + + visualDataOut->busy_rw.unlock(); } busy_demod.lock(); diff --git a/src/sdr/SDRThread.cpp b/src/sdr/SDRThread.cpp index 033bd24..6393f76 100644 --- a/src/sdr/SDRThread.cpp +++ b/src/sdr/SDRThread.cpp @@ -141,6 +141,7 @@ void SDRThread::threadMain() { long long frequency = DEFAULT_FREQ; int ppm = wxGetApp().getConfig()->getDevice(devs[deviceId]->getDeviceId())->getPPM(); int direct_sampling_mode = 0; + int buf_size = BUF_SIZE; rtlsdr_open(&dev, deviceId); rtlsdr_set_sample_rate(dev, sampleRate); @@ -199,6 +200,13 @@ void SDRThread::threadMain() { case SDRThreadCommand::SDR_THREAD_CMD_SET_SAMPLERATE: rate_changed = true; new_rate = command.llong_value; + if (new_rate <= 250000) { + buf_size = BUF_SIZE/4; + } else if (new_rate < 1500000) { + buf_size = BUF_SIZE/2; + } else { + buf_size = BUF_SIZE; + } std::cout << "Set sample rate: " << new_rate << std::endl; break; case SDRThreadCommand::SDR_THREAD_CMD_SET_DEVICE: @@ -237,8 +245,9 @@ void SDRThread::threadMain() { offset = new_offset; } if (rate_changed) { - sampleRate = new_rate; rtlsdr_set_sample_rate(dev, new_rate); + sampleRate = rtlsdr_get_sample_rate(dev); + rtlsdr_reset_buffer(dev); } if (freq_changed) { frequency = new_freq; @@ -253,7 +262,7 @@ void SDRThread::threadMain() { } } - rtlsdr_read_sync(dev, buf, BUF_SIZE, &n_read); + rtlsdr_read_sync(dev, buf, buf_size, &n_read); SDRThreadIQData *dataOut = NULL;