Esempio n. 1
0
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;
}
Esempio n. 2
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();
}