コード例 #1
0
ファイル: audiosink.cpp プロジェクト: JvanKatwijk/sdr-j-dab
bool	audioSink::selectDevice (int16_t odev) {
PaError err;
	fprintf (stderr, "select device with %d\n", odev);
	if (!isValidDevice (odev))
	   return false;

	if ((ostream != NULL) && !Pa_IsStreamStopped (ostream)) {
	   paCallbackReturn = paAbort;
	   (void) Pa_AbortStream (ostream);
	   while (!Pa_IsStreamStopped (ostream))
	      Pa_Sleep (1);
	   writerRunning = false;
	}

	if (ostream != NULL)
	   Pa_CloseStream (ostream);

	outputParameters. device		= odev;
	outputParameters. channelCount		= 2;
	outputParameters. sampleFormat		= paFloat32;
	outputParameters. suggestedLatency	= 
	                          Pa_GetDeviceInfo (odev) ->
	                                      defaultHighOutputLatency * 6;
//	bufSize	= (int)((float)outputParameters. suggestedLatency);
	bufSize	= 80 * 256;

//	if (bufSize < 0 || bufSize > 17300)
//	   bufSize = 16384;

	outputParameters. hostApiSpecificStreamInfo = NULL;
//
	fprintf (stderr, "Suggested size for outputbuffer = %d\n", bufSize);
	err = Pa_OpenStream (
	             &ostream,
	             NULL,
	             &outputParameters,
	             48000,
	             bufSize,
	             0,
	             this	-> paCallback_o,
	             this
	      );

	if (err != paNoError) {
	   qDebug ("Open ostream error\n");
	   return false;
	}
	fprintf (stderr, "stream opened\n");
	paCallbackReturn = paContinue;
	err = Pa_StartStream (ostream);
	if (err != paNoError) {
	   qDebug ("Open startstream error\n");
	   return false;
	}
	fprintf (stderr, "stream started\n");
	writerRunning	= true;
	return true;
}
コード例 #2
0
ファイル: hdd.cpp プロジェクト: mgottschlag/kwin-tiling
bool Hdd::addVisualization(const QString& source)
{
    Plasma::Meter *w;
    Plasma::DataEngine *engine = dataEngine("soliddevice");
    Plasma::DataEngine::Data data;

    if (!engine) {
        return false;
    }
    if (!isValidDevice(source, &data)) {
        // do not try to show hard drives and swap partitions.
        return false;
    }
    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Horizontal);
    layout->setContentsMargins(3, 3, 3, 3);
    layout->setSpacing(5);

    w = new Plasma::Meter(this);
    w->setMeterType(Plasma::Meter::BarMeterHorizontal);
    if (mode() != SM::Applet::Panel) {
        MonitorIcon *icon = new MonitorIcon(this);
        m_icons.insert(source, icon);
        icon->setImage("drive-harddisk");
        if (data["Accessible"].toBool()) {
            QStringList overlays;
            overlays << QString("emblem-mounted");
            icon->setOverlays(overlays);
        }
        layout->addItem(icon);
    } else {
        w->setSvg("system-monitor/hdd_panel");
    }
    w->setLabel(0, hddTitle(source, data));
    w->setLabelAlignment(0, Qt::AlignVCenter | Qt::AlignLeft);
    w->setLabelAlignment(1, Qt::AlignVCenter | Qt::AlignRight);
    w->setLabelAlignment(2, Qt::AlignVCenter | Qt::AlignCenter);
    w->setMaximum(data["Size"].toULongLong() / (1024 * 1024));
    applyTheme(w);
    appendVisualization(source, w);
    layout->addItem(w);
    mainLayout()->addItem(layout);
    dataUpdated(source, data);
    setPreferredItemHeight(layout->preferredSize().height());

    QString disk = data["Parent UDI"].toString();

    m_diskMap[disk] << w;
    if (!connectedSources().contains(disk)) {
        data = engine->query(disk);
        dataUpdated(disk, data);
        connectSource(disk);
    }
    return true;
}
コード例 #3
0
//
// Open USB channel to PIC...
//
int PicBootloader::open()
{
  if (m_hDevice != INVALID_HANDLE_VALUE) 
    close();

  GUID HidGuid;
  HidD_GetHidGuid( &HidGuid);

  HDEVINFO hDevInfo = SetupDiGetClassDevs(&HidGuid, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
  if (hDevInfo == INVALID_HANDLE_VALUE)
    return PICRESULT_INVALID_HANDLE;

  SP_DEVICE_INTERFACE_DATA DevInterfaceData;

  bool done = false;
  unsigned long DevIndex = 0;
  while (!done) {
    memset (&DevInterfaceData,0,sizeof(DevInterfaceData));
    DevInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
    if (!SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &HidGuid, DevIndex, &DevInterfaceData)) break;

    unsigned long DetailsSize = 0;
    SetupDiGetDeviceInterfaceDetail(hDevInfo, &DevInterfaceData, NULL, 0, &DetailsSize, NULL);

    PSP_INTERFACE_DEVICE_DETAIL_DATA pDetails = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc(DetailsSize);
    if (pDetails == NULL) {
      SetupDiDestroyDeviceInfoList(hDevInfo);
      return PICRESULT_MEMALLOCERROR_DEVICE_DETAIL;
    }

    memset (pDetails,0,DetailsSize);
    pDetails->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
    if (!SetupDiGetDeviceInterfaceDetail(hDevInfo, &DevInterfaceData, pDetails, DetailsSize, NULL, NULL)) {
      free(pDetails);
      SetupDiDestroyDeviceInfoList(hDevInfo);
      return PICRESULT_GETDEVICEDETAIL_FAIL;
    }

    char *path = strdup(pDetails->DevicePath);

    if (isValidDevice(path)) { // valid device found
      m_hDevice = CreateFile(path, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
      free(pDetails);
      break;
    }

    free(pDetails);
    DevIndex++;
  }

  SetupDiDestroyDeviceInfoList(hDevInfo);
  return (m_hDevice == INVALID_HANDLE_VALUE) ? PICRESULT_DEVICE_NOT_FOUND : PICRESULT_NOERROR;
}
コード例 #4
0
ファイル: hdd.cpp プロジェクト: mgottschlag/kwin-tiling
QStringList Hdd::mounted()
{
    Plasma::DataEngine::Data data;
    QString predicate("IS StorageVolume");
    QStringList result;

    foreach (const QString& uuid, engine()->query(predicate)[predicate].toStringList()) {
        if (!isValidDevice(uuid, &data)) {
            continue;
        }
        if (data["Accessible"].toBool()) {
            result << uuid;
        }
    }
    return result;
}
コード例 #5
0
ファイル: audiosink.cpp プロジェクト: JvanKatwijk/sdr-j-dab
void	audioSink::set_streamSelector (int idx) {
int16_t	outputDevice;

	if (idx == 0)
	   return;

	outputDevice = outTable [idx];
	if (!isValidDevice (outputDevice)) {
	   return;
	}

	stop	();
	if (!selectDevice (outputDevice)) {
	   fprintf (stderr, "error selecting device\n");
	   selectDefaultDevice ();
	   return;
	}

	qWarning () << "selected output device " << idx << outputDevice;
}
コード例 #6
0
ファイル: hdd.cpp プロジェクト: mgottschlag/kwin-tiling
void Hdd::createConfigurationInterface(KConfigDialog *parent)
{
    QWidget *widget = new QWidget();
    ui.setupUi(widget);
    m_hddModel.clear();
    m_hddModel.setHorizontalHeaderLabels(QStringList() << i18n("Mount Point")
                                                       << i18n("Name"));
    QStandardItem *parentItem = m_hddModel.invisibleRootItem();
    Plasma::DataEngine::Data data;
    QString predicateString("IS StorageVolume");

    foreach (const QString& uuid, engine()->query(predicateString)[predicateString].toStringList()) {
        if (!isValidDevice(uuid, &data)) {
            continue;
        }
        QStandardItem *item1 = new QStandardItem(filePath(data));
        item1->setEditable(false);
        item1->setCheckable(true);
        item1->setData(uuid);
        if (sources().contains(uuid)) {
            item1->setCheckState(Qt::Checked);
        }
        QStandardItem *item2 = new QStandardItem(hddTitle(uuid, data));
        item2->setData(guessHddTitle(data));
        item2->setEditable(true);
        parentItem->appendRow(QList<QStandardItem *>() << item1 << item2);
    }
    ui.treeView->setModel(&m_hddModel);
    ui.treeView->resizeColumnToContents(0);
    ui.intervalSpinBox->setValue(interval() / 60 / 1000);
    ui.intervalSpinBox->setSuffix(ki18np(" minute", " minutes"));

    parent->addPage(widget, i18n("Partitions"), "drive-harddisk");
    connect(parent, SIGNAL(applyClicked()), this, SLOT(configAccepted()));
    connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted()));
    connect(ui.treeView, SIGNAL(clicked(QModelIndex)), parent, SLOT(settingsModified()));
    connect(ui.intervalSpinBox, SIGNAL(valueChanged(QString)), parent, SLOT(settingsModified()));
}
コード例 #7
0
ファイル: pa-writer.cpp プロジェクト: JvanKatwijk/sdr-j-sw
bool	paWriter::selectDevice (int16_t odev) {
PaError err;

	if (!isValidDevice (odev))
	   return false;

	if ((ostream != NULL) && !Pa_IsStreamStopped (ostream)) {
	   paCallbackReturn = paAbort;
	   (void) Pa_AbortStream (ostream);
	   while (!Pa_IsStreamStopped (ostream))
	      Pa_Sleep (1);
	   writerRunning = false;
	}

	if (ostream != NULL)
	   Pa_CloseStream (ostream);

	outputParameters. device		= odev;
	outputParameters. channelCount		= 2;
	outputParameters. sampleFormat		= paFloat32;
	if (Latency == LOWLATENCY) {
	   outputParameters. suggestedLatency	=
	                             Pa_GetDeviceInfo (odev) ->
	                                      defaultLowOutputLatency;
	   bufSize	= (int)((float)outputParameters. suggestedLatency * 
	                                         (float)CardRate);
	}
	else
	if (Latency == HIGHLATENCY) {
	   outputParameters. suggestedLatency	=
	                             Pa_GetDeviceInfo (odev) ->
	                                      defaultHighOutputLatency;
	   bufSize	= (int)((float)outputParameters. suggestedLatency * 
	                                         (float)CardRate);
	}
	else {		// VERY HIGH LATENCY
	   outputParameters. suggestedLatency	=
	                             Pa_GetDeviceInfo (odev) ->
	                                      defaultHighOutputLatency;
	   bufSize	= 3 * (int)((float)outputParameters. suggestedLatency * 
	                                         (float)CardRate);
	}
	
	outputParameters. hostApiSpecificStreamInfo = NULL;
//
	fprintf (stderr, "Suggested size for outputbuffer = %d\n", bufSize);
	err = Pa_OpenStream (
	             &ostream,
	             NULL,
	             &outputParameters,
	             CardRate,
	             bufSize,
	             0,
	             this	-> paCallback_o,
	             this
	      );

	if (err != paNoError) {
	   qDebug ("Open ostream error\n");
	   return false;
	}

	return true;
}