SDRIOEXPORT sdrio_device * sdrio_open_device(sdrio_uint32 device_index) { sdrio_device *dev = (sdrio_device *)malloc(sizeof(sdrio_device)); if (dev) { memset(dev, 0, sizeof(sdrio_device)); dev->device_index = device_index; mirisdr_open (&dev->mirics_device, dev->device_index); if (dev->mirics_device) { mirisdr_set_sample_format(dev->mirics_device, "AUTO"); mirisdr_set_sample_rate(dev->mirics_device, 2*1024*1000); mirisdr_set_center_freq(dev->mirics_device, 100000000); mirisdr_set_tuner_gain_mode(dev->mirics_device, 0); dev->min_freq = 150000; dev->max_freq = 1900000000; } else { free(dev); return 0; } } return dev; }
bool SDRPlayInput::start() { // QMutexLocker mutexLocker(&m_mutex); int res; if (!m_dev) { return false; } if (m_running) stop(); char s12FormatString[] = "336_S16"; if ((res = mirisdr_set_sample_format(m_dev, s12FormatString))) // sample format S12 { qCritical("SDRPlayInput::start: could not set sample format: rc: %d", res); stop(); return false; } int sampleRate = SDRPlaySampleRates::getRate(m_settings.m_devSampleRateIndex); if ((res = mirisdr_set_sample_rate(m_dev, sampleRate))) { qCritical("SDRPlayInput::start: could not set sample rate to %d: rc: %d", sampleRate, res); stop(); return false; } char bulkFormatString[] = "BULK"; if ((res = mirisdr_set_transfer(m_dev, bulkFormatString)) < 0) { qCritical("SDRPlayInput::start: could not set USB Bulk mode: rc: %d", res); stop(); return false; } if ((res = mirisdr_reset_buffer(m_dev)) < 0) { qCritical("SDRPlayInput::start: could not reset USB EP buffers: %s", strerror(errno)); stop(); return false; } m_sdrPlayThread = new SDRPlayThread(m_dev, &m_sampleFifo); m_sdrPlayThread->setLog2Decimation(m_settings.m_log2Decim); m_sdrPlayThread->setFcPos((int) m_settings.m_fcPos); m_sdrPlayThread->startWork(); // mutexLocker.unlock(); applySettings(m_settings, true, true); m_running = true; return true; }
SDRIOEXPORT sdrio_int32 sdrio_set_rx_samplerate(sdrio_device *dev, sdrio_uint64 sample_rate) { if (dev) { return (mirisdr_set_sample_rate(dev->mirics_device, (uint32_t)sample_rate) == 0); } else { return 0; } }
int verbose_set_sample_rate(mirisdr_dev_t *dev, uint32_t samp_rate) { int r; r = mirisdr_set_sample_rate(dev, samp_rate); if (r < 0) { fprintf(stderr, "WARNING: Failed to set sample rate.\n"); } else { fprintf(stderr, "Sampling at %u S/s.\n", samp_rate); } return r; }