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; }
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; }
// // 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; }
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; }
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; }
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())); }
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; }