/** * @brief Update list of sample rates based on selected device. * @param rate The current sample rate from the configuration. */ void CIoConfig::updateInputSampleRates(int rate) { ui->inSrCombo->clear(); if (ui->inDevEdit->text().isEmpty()) return; if (ui->inDevEdit->text().contains("fcd")) { if (ui->inDevCombo->currentText().contains("V2")) // V2.0 or V2_0 { ui->inSrCombo->addItem("192000"); } else { ui->inSrCombo->addItem("96000"); } } else if (ui->inDevEdit->text().contains("rtl") || ui->inDevEdit->text().contains("rtl_tcp")) { ui->inSrCombo->addItem("240000"); ui->inSrCombo->addItem("300000"); ui->inSrCombo->addItem("960000"); ui->inSrCombo->addItem("1152000"); ui->inSrCombo->addItem("1200000"); ui->inSrCombo->addItem("1440000"); ui->inSrCombo->addItem("1600000"); ui->inSrCombo->addItem("1800000"); ui->inSrCombo->addItem("1920000"); ui->inSrCombo->addItem("2400000"); ui->inSrCombo->addItem("2880000"); ui->inSrCombo->addItem("3200000"); if (rate > 0) { ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(12); } else { ui->inSrCombo->setCurrentIndex(7); } } else if (ui->inDevEdit->text().contains("uhd")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("2000000"); ui->inSrCombo->addItem("4000000"); ui->inSrCombo->addItem("8000000"); } else if (ui->inDevEdit->text().contains("hackrf")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("8000000"); ui->inSrCombo->addItem("10000000"); ui->inSrCombo->addItem("12500000"); ui->inSrCombo->addItem("16000000"); ui->inSrCombo->addItem("20000000"); } else if (ui->inDevEdit->text().contains("bladerf")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("5000000"); ui->inSrCombo->addItem("8000000"); ui->inSrCombo->addItem("10000000"); ui->inSrCombo->addItem("15000000"); ui->inSrCombo->addItem("20000000"); ui->inSrCombo->addItem("25000000"); ui->inSrCombo->addItem("30000000"); ui->inSrCombo->addItem("35000000"); ui->inSrCombo->addItem("40000000"); } else if (ui->inDevEdit->text().contains("sdr-iq")) { ui->inSrCombo->addItem("8138"); ui->inSrCombo->addItem("16276"); ui->inSrCombo->addItem("37793"); ui->inSrCombo->addItem("55556"); ui->inSrCombo->addItem("111111"); ui->inSrCombo->addItem("158730"); ui->inSrCombo->addItem("196078"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(4); // select 111.111 kHz } else if (ui->inDevEdit->text().contains("sdr-ip")) { ui->inSrCombo->addItem("31250"); ui->inSrCombo->addItem("32000"); ui->inSrCombo->addItem("40000"); ui->inSrCombo->addItem("50000"); ui->inSrCombo->addItem("62500"); ui->inSrCombo->addItem("64000"); ui->inSrCombo->addItem("80000"); ui->inSrCombo->addItem("100000"); ui->inSrCombo->addItem("125000"); ui->inSrCombo->addItem("160000"); ui->inSrCombo->addItem("200000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("320000"); ui->inSrCombo->addItem("400000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("800000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("1600000"); ui->inSrCombo->addItem("2000000"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(11); // select 250 kHz } else if (ui->inDevEdit->text().contains("netsdr")) { ui->inSrCombo->addItem("32000"); ui->inSrCombo->addItem("40000"); ui->inSrCombo->addItem("50000"); ui->inSrCombo->addItem("62500"); ui->inSrCombo->addItem("78125"); ui->inSrCombo->addItem("80000"); ui->inSrCombo->addItem("100000"); ui->inSrCombo->addItem("125000"); ui->inSrCombo->addItem("156250"); ui->inSrCombo->addItem("160000"); ui->inSrCombo->addItem("200000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("312500"); ui->inSrCombo->addItem("400000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("625000"); ui->inSrCombo->addItem("800000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("1250000"); ui->inSrCombo->addItem("2000000"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(11); // select 250 kHz } else if (ui->inDevEdit->text().contains("cloudiq")) { ui->inSrCombo->addItem("48000"); ui->inSrCombo->addItem("61440"); ui->inSrCombo->addItem("96000"); ui->inSrCombo->addItem("122880"); ui->inSrCombo->addItem("240000"); ui->inSrCombo->addItem("256000"); ui->inSrCombo->addItem("370120"); ui->inSrCombo->addItem("495483"); ui->inSrCombo->addItem("512000"); ui->inSrCombo->addItem("614400"); ui->inSrCombo->addItem("1024000"); ui->inSrCombo->addItem("1228800"); ui->inSrCombo->addItem("1807058"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(4); // select 240 kHz } else if (ui->inDevEdit->text().contains("airspyhf")) { ui->inSrCombo->addItem("768000"); } // NB: must list airspyhf first else if (ui->inDevEdit->text().contains("airspy")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("2500000"); ui->inSrCombo->addItem("3000000"); ui->inSrCombo->addItem("6000000"); ui->inSrCombo->addItem("10000000"); } else if (ui->inDevEdit->text().contains("redpitaya")) { ui->inSrCombo->addItem("20000"); ui->inSrCombo->addItem("50000"); ui->inSrCombo->addItem("100000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("1250000"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(3); // select 250 kHz } else if (ui->inDevEdit->text().contains("sdrplay")) { ui->inSrCombo->addItem("62500"); ui->inSrCombo->addItem("125000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("2000000"); ui->inSrCombo->addItem("3000000"); ui->inSrCombo->addItem("4000000"); ui->inSrCombo->addItem("5000000"); ui->inSrCombo->addItem("6000000"); ui->inSrCombo->addItem("7000000"); ui->inSrCombo->addItem("8000000"); ui->inSrCombo->addItem("9000000"); ui->inSrCombo->addItem("10000000"); if (rate > 0) { if (rate < 62500) rate = 62500; if (rate > 10000000) rate = 10000000; ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(5); // select 2 MHz } else if (ui->inDevEdit->text().contains("lime")) { ui->inSrCombo->addItem("100000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("2500000"); ui->inSrCombo->addItem("5000000"); ui->inSrCombo->addItem("10000000"); ui->inSrCombo->addItem("20000000"); ui->inSrCombo->addItem("50000000"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(4); // select 5 MHz } else if (ui->inDevEdit->text().contains("plutosdr")) { ui->inSrCombo->addItem("600000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("1500000"); ui->inSrCombo->addItem("2000000"); ui->inSrCombo->addItem("3000000"); ui->inSrCombo->addItem("6000000"); ui->inSrCombo->addItem("16000000"); ui->inSrCombo->addItem("20000000"); ui->inSrCombo->addItem("56000000"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(2); // select 2 MHz } else if (ui->inDevEdit->text().contains("perseus")) { ui->inSrCombo->addItem("48000"); ui->inSrCombo->addItem("95000"); ui->inSrCombo->addItem("96000"); ui->inSrCombo->addItem("125000"); ui->inSrCombo->addItem("192000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("1600000"); ui->inSrCombo->addItem("2000000"); if (rate > 0) { ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(0); } else ui->inSrCombo->setCurrentIndex(4); // select 192 kHz } else { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); } updateDecimations(); }
/** * @brief Sample changed, either by selection of direct entry. * @param text The new sample rate. */ void CIoConfig::inputRateChanged(const QString &text) { (void) text; updateDecimations(); }
/** * @brief Update list of sample rates based on selected device. * @param rate The current sample rate from the configuration. */ void CIoConfig::updateInputSampleRates(int rate) { ui->inSrCombo->clear(); if (ui->inDevEdit->text().isEmpty()) { return; } /** FIXME: this code crashes on RTL device so we use fixed rates **/ //osmosdr_source_c_sptr src = osmosdr_make_source_c(ui->inDevEdit->text().toStdString()); //osmosdr::meta_range_t rates = src->get_sample_rates(); //BOOST_FOREACH(osmosdr::range_t &rate, rates) //{ // ui->inSrCombo->addItem(QString("%1 kHz").arg(rate.start()/1000, 0, 'f', 0)); //} //src.reset(); if (ui->inDevEdit->text().contains("fcd")) { if (ui->inDevCombo->currentText().contains("V2")) // V2.0 or V2_0 { ui->inSrCombo->addItem("192000"); } else { ui->inSrCombo->addItem("96000"); } } else if (ui->inDevEdit->text().contains("rtl") || ui->inDevEdit->text().contains("rtl_tcp")) { ui->inSrCombo->addItem("240000"); ui->inSrCombo->addItem("300000"); ui->inSrCombo->addItem("960000"); ui->inSrCombo->addItem("1152000"); ui->inSrCombo->addItem("1200000"); ui->inSrCombo->addItem("1440000"); ui->inSrCombo->addItem("1600000"); ui->inSrCombo->addItem("1800000"); ui->inSrCombo->addItem("1920000"); ui->inSrCombo->addItem("2400000"); ui->inSrCombo->addItem("2880000"); ui->inSrCombo->addItem("3200000"); if (rate > 0) { ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->setCurrentIndex(12); } else { ui->inSrCombo->setCurrentIndex(7); } } else if (ui->inDevEdit->text().contains("uhd")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("2000000"); ui->inSrCombo->addItem("4000000"); ui->inSrCombo->addItem("8000000"); } else if (ui->inDevEdit->text().contains("hackrf")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("8000000"); ui->inSrCombo->addItem("10000000"); ui->inSrCombo->addItem("12500000"); ui->inSrCombo->addItem("16000000"); ui->inSrCombo->addItem("20000000"); } else if (ui->inDevEdit->text().contains("bladerf")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("160000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("2000000"); ui->inSrCombo->addItem("5000000"); ui->inSrCombo->addItem("8000000"); ui->inSrCombo->addItem("10000000"); ui->inSrCombo->addItem("15000000"); ui->inSrCombo->addItem("20000000"); ui->inSrCombo->addItem("25000000"); ui->inSrCombo->addItem("30000000"); ui->inSrCombo->addItem("35000000"); ui->inSrCombo->addItem("40000000"); } else if (ui->inDevEdit->text().contains("sdr-iq")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("8138"); ui->inSrCombo->addItem("16276"); ui->inSrCombo->addItem("37793"); ui->inSrCombo->addItem("55556"); ui->inSrCombo->addItem("111111"); ui->inSrCombo->addItem("158730"); ui->inSrCombo->addItem("196078"); } else if (ui->inDevEdit->text().contains("sdr-ip")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("31250"); ui->inSrCombo->addItem("32000"); ui->inSrCombo->addItem("40000"); ui->inSrCombo->addItem("50000"); ui->inSrCombo->addItem("62500"); ui->inSrCombo->addItem("64000"); ui->inSrCombo->addItem("80000"); ui->inSrCombo->addItem("100000"); ui->inSrCombo->addItem("125000"); ui->inSrCombo->addItem("160000"); ui->inSrCombo->addItem("200000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("320000"); ui->inSrCombo->addItem("400000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("800000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("1600000"); ui->inSrCombo->addItem("2000000"); } else if (ui->inDevEdit->text().contains("netsdr")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("32000"); ui->inSrCombo->addItem("40000"); ui->inSrCombo->addItem("50000"); ui->inSrCombo->addItem("62500"); ui->inSrCombo->addItem("78125"); ui->inSrCombo->addItem("80000"); ui->inSrCombo->addItem("100000"); ui->inSrCombo->addItem("125000"); ui->inSrCombo->addItem("156250"); ui->inSrCombo->addItem("160000"); ui->inSrCombo->addItem("200000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("312500"); ui->inSrCombo->addItem("400000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("625000"); ui->inSrCombo->addItem("800000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("1250000"); ui->inSrCombo->addItem("2000000"); } else if (ui->inDevEdit->text().contains("cloudiq")) { ui->inSrCombo->addItem("48000"); ui->inSrCombo->addItem("61440"); ui->inSrCombo->addItem("96000"); ui->inSrCombo->addItem("122880"); ui->inSrCombo->addItem("240000"); ui->inSrCombo->addItem("256000"); ui->inSrCombo->addItem("370120"); ui->inSrCombo->addItem("495483"); ui->inSrCombo->addItem("512000"); ui->inSrCombo->addItem("614400"); ui->inSrCombo->addItem("1024000"); ui->inSrCombo->addItem("1228800"); ui->inSrCombo->addItem("1807058"); if (rate > 0) ui->inSrCombo->insertItem(0, QString("%1").arg(rate)); else ui->inSrCombo->setCurrentIndex(4); // select 370 kHz } else if (ui->inDevEdit->text().contains("airspy")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("2500000"); ui->inSrCombo->addItem("3000000"); ui->inSrCombo->addItem("6000000"); ui->inSrCombo->addItem("10000000"); } else if (ui->inDevEdit->text().contains("redpitaya")) { ui->inSrCombo->addItem("20000"); ui->inSrCombo->addItem("50000"); ui->inSrCombo->addItem("100000"); ui->inSrCombo->addItem("250000"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("1250000"); if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); else ui->inSrCombo->setCurrentIndex(3); // select 250 kHz } else if (ui->inDevEdit->text().contains("sdrplay")) { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); ui->inSrCombo->addItem("222222"); ui->inSrCombo->addItem("333333"); ui->inSrCombo->addItem("428571"); ui->inSrCombo->addItem("500000"); ui->inSrCombo->addItem("571429"); ui->inSrCombo->addItem("750000"); ui->inSrCombo->addItem("875000"); ui->inSrCombo->addItem("1000000"); ui->inSrCombo->addItem("1536000"); ui->inSrCombo->addItem("2048000"); ui->inSrCombo->addItem("5000000"); ui->inSrCombo->addItem("6000000"); ui->inSrCombo->addItem("7000000"); ui->inSrCombo->addItem("8000000"); ui->inSrCombo->addItem("9000000"); ui->inSrCombo->addItem("10000000"); ui->inSrCombo->addItem("11000000"); ui->inSrCombo->addItem("12000000"); if (rate == 0) ui->inSrCombo->setCurrentIndex(9); // select 2048 kHz } else { if (rate > 0) ui->inSrCombo->addItem(QString("%1").arg(rate)); } updateDecimations(); }