More sample rates, unify defaults

- also fix possible crash related to unlocking before queueing visual
data.
This commit is contained in:
Charles J. Cliffe 2015-06-11 17:18:36 -04:00
parent 721f775bdd
commit 6c016a7199
6 changed files with 82 additions and 53 deletions

View File

@ -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<SDRDeviceInfo *> *devs = wxGetApp().getDevices();

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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();

View File

@ -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;