static msg_t OscUdpThread(void *arg) { UNUSED(arg); while ((osc.udpsock = udpOpen()) < 0) chThdSleepMilliseconds(500); udpBind(osc.udpsock, osc.udpListenPort); while (!chThdShouldTerminate()) { int justGot = udpRead(osc.udpsock, osc.udp.inBuf, sizeof(osc.udp.inBuf), &osc.udpReplyAddress, 0); if (justGot > 0) { chMtxLock(&osc.udp.lock); oscReceivePacket(UDP, osc.udp.inBuf, justGot); oscSendPendingMessages(UDP); chMtxUnlock(); } } return 0; }
/*! * \brief So2sdrBandmap::setSdrType * this gets triggered when the type of SDR is selected in SDRDialog, or other options change */ void So2sdrBandmap::setSdrType() { int speed=1; switch ((SdrType)settings->value(s_sdr_type,s_sdr_type_def).toInt()) { case soundcard_t: iqShowData->setEnabled(true); settings->setValue(s_sdr_sample_freq,settings->value(s_sdr_sound_sample_freq,s_sdr_sound_sample_freq_def).toInt()); settings->setValue(s_sdr_offset,settings->value(s_sdr_offset_soundcard,s_sdr_offset_soundcard_def).toInt()); settings->setValue(s_sdr_swapiq,settings->value(s_sdr_swap_soundcard,s_sdr_swap_soundcard_def).toBool()); speed=settings->value(s_sdr_sound_speed,s_sdr_sound_speed_def).toInt(); break; case afedri_t: iqShowData->setEnabled(false); settings->setValue(s_sdr_sample_freq,settings->value(s_sdr_afedri_sample_freq,s_sdr_afedri_sample_freq_def).toInt()); settings->setValue(s_sdr_offset,settings->value(s_sdr_offset_afedri,s_sdr_offset_afedri_def).toInt()); settings->setValue(s_sdr_tcp_ip,settings->value(s_sdr_afedri_tcp_ip,s_sdr_afedri_tcp_ip_def).toString()); settings->setValue(s_sdr_tcp_port,settings->value(s_sdr_afedri_tcp_port,s_sdr_afedri_tcp_port_def).toInt()); settings->setValue(s_sdr_udp_port,settings->value(s_sdr_afedri_udp_port,s_sdr_afedri_udp_port_def).toInt()); settings->setValue(s_sdr_swapiq,settings->value(s_sdr_swap_afedri,s_sdr_swap_afedri_def).toBool()); speed=settings->value(s_sdr_afedri_speed,s_sdr_afedri_speed_def).toInt(); break; case network_t: iqShowData->setEnabled(false); settings->setValue(s_sdr_sample_freq,settings->value(s_sdr_net_sample_freq,s_sdr_net_sample_freq_def).toInt()); settings->setValue(s_sdr_offset,settings->value(s_sdr_offset_network,s_sdr_offset_network_def).toInt()); settings->setValue(s_sdr_tcp_ip,settings->value(s_sdr_net_tcp_ip,s_sdr_net_tcp_ip_def).toString()); settings->setValue(s_sdr_tcp_port,settings->value(s_sdr_net_tcp_port,s_sdr_net_tcp_port_def).toInt()); settings->setValue(s_sdr_udp_port,settings->value(s_sdr_net_udp_port,s_sdr_net_udp_port_def).toInt()); settings->setValue(s_sdr_swapiq,settings->value(s_sdr_swap_network,s_sdr_swap_network_def).toBool()); speed=settings->value(s_sdr_net_speed,s_sdr_net_speed_def).toInt(); break; } settings->setValue(s_sdr_speed,speed); int fft,period; switch (settings->value(s_sdr_sample_freq,s_sdr_sample_freq_def).toInt()) { case 48000: fft=2048*speed; break; case 96000: case 100000: // for Afedri net dual fft=4096*speed; break; case 192000: case 200000: // for Afedri net dual fft=8192*speed; break; default: fft=4096; } settings->setValue(s_sdr_fft,fft); period=fft/4; switch (settings->value(s_sdr_bits,s_sdr_bits_def).toInt()) { case 0: // 16 bit sizes.chunk_size = settings->value(s_sdr_fft,s_sdr_fft_def).toInt() * 2 * 2; sizes.advance_size = period * 2 * 2; break; case 1: // 24 bit sizes.chunk_size = settings->value(s_sdr_fft,s_sdr_fft_def).toInt() * 2 * 3; sizes.advance_size = period * 2 * 3; break; case 2: // 32 bit sizes.chunk_size = settings->value(s_sdr_fft,s_sdr_fft_def).toInt() * 2 * 4; sizes.advance_size = period * 2 * 4; break; } spectrumProcessor->setFFTSize(sizes); spectrumProcessor->updateParams(); sdrSource->setSampleSizes(sizes); bandMapName="So2sdrBandmap"+QByteArray::number(settings->value(s_sdr_nrig,s_sdr_nrig_def).toInt()+1); display->initialize(settings); vfoPos = (height()-toolBarHeight)/ 2; dragPos = vfoPos; display->setVfoPos(vfoPos); switch (settings->value(s_sdr_scale,s_sdr_scale_def).toInt()) { case 1: setScaleX1(); break; case 2: setScaleX2(); break; } horizontalLayout->removeWidget(CallLabel); horizontalLayout->removeWidget(FreqLabel); horizontalLayout->removeWidget(display); if (settings->value(s_sdr_reverse_scroll,s_sdr_reverse_scroll_def).toBool()) { horizontalLayout->insertWidget(0,CallLabel); horizontalLayout->insertWidget(1,FreqLabel); horizontalLayout->insertWidget(2,display); } else { horizontalLayout->insertWidget(0,display); horizontalLayout->insertWidget(1,FreqLabel); horizontalLayout->insertWidget(2,CallLabel); } freqPixmap = QPixmap(FreqLabel->width(), settings->value(s_sdr_fft,s_sdr_fft_def).toInt()); callPixmap = QPixmap(CallLabel->width(), settings->value(s_sdr_fft,s_sdr_fft_def).toInt()); makeFreqScaleAbsolute(); FreqLabel->setPixmap(freqPixmap); FreqLabel->update(); if (settings->value(s_sdr_n1mm,s_sdr_n1mm_def).toBool()) { socketUdpN1MM.close(); socketUdpN1MM.bind(settings->value(s_sdr_n1mm_port,s_sdr_n1mm_port_def).toInt(), QUdpSocket::ShareAddress); connect(&socketUdpN1MM,SIGNAL(readyRead()),this,SLOT(udpRead())); } else { if (socketUdpN1MM.isOpen()) { socketUdpN1MM.close(); } } settings->sync(); }