bool usb_getDeviceDescriptor(usb_device_t* device) { #ifdef _USB_TRANSFER_DIAGNOSIS_ textColor(LIGHT_CYAN); printf("\n\nUSB: GET_DESCRIPTOR Device"); textColor(TEXT); #endif struct usb_deviceDescriptor descriptor; usb_transfer_t transfer; usb_setupTransfer(device->disk->port, &transfer, USB_CONTROL, 0, 64); usb_setupTransaction(&transfer, 8, 0x80, 6, 1, 0, 0, 18); usb_inTransaction(&transfer, false, &descriptor, 18); usb_outTransaction(&transfer, true, 0, 0); usb_issueTransfer(&transfer); if (transfer.success) { analyzeDeviceDescriptor(&descriptor, device); showDevice(device); } return (transfer.success); }
Devices::Devices( QWidget *parent, virConnectPtr *connPtrPtr, QString _xmlDesc) : _QWidget(parent, connPtrPtr), xmlDesc(_xmlDesc) { setObjectName("Computer:Device"); usedDeviceList = new QListWidget(this); usedDeviceList->setSelectionMode(QAbstractItemView::SingleSelection); usedDeviceList->setContextMenuPolicy(Qt::CustomContextMenu); usedDeviceList->setSortingEnabled(false); connect(usedDeviceList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showContextMenu(const QPoint&))); addNewDevice = new QPushButton(QIcon::fromTheme("list-add"), "", this); addNewDevice->setToolTip("Add Device"); connect(addNewDevice, SIGNAL(clicked()), this, SLOT(showDeviceStack())); delSelDevice = new QPushButton(QIcon::fromTheme("list-remove"), "", this); delSelDevice->setToolTip("Del Device"); connect(delSelDevice, SIGNAL(clicked()), this, SLOT(delDevice())); buttonlayout = new QHBoxLayout(this); buttonlayout->addWidget(addNewDevice); buttonlayout->addWidget(delSelDevice); buttons = new QWidget(this); buttons->setLayout(buttonlayout); listLayout = new QVBoxLayout(this); listLayout->addWidget(usedDeviceList); listLayout->addWidget(buttons); listWidget = new QWidget(this); listWidget->setLayout(listLayout); infoWidget = new DeviceData(this, ptr_ConnPtr); baseLayout = new QHBoxLayout(this); baseLayout->addWidget(listWidget, 3); baseLayout->addWidget(infoWidget, 8); baseWdg = new QWidget(this); baseWdg->setLayout(baseLayout); deviceStack = new DeviceStack(this, ptr_ConnPtr); stackWdg = new QStackedWidget(this); stackWdg->addWidget(baseWdg); stackWdg->addWidget(deviceStack); commonLayout = new QHBoxLayout(this); commonLayout->addWidget(stackWdg); setLayout(commonLayout); detectAttachedDevicesFromXMLDesc(); //connect(usedDeviceList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), // this, SLOT(showDevice(QListWidgetItem*,QListWidgetItem*))); connect(usedDeviceList, SIGNAL(itemSelectionChanged()), this, SLOT(showDevice())); connect(infoWidget, SIGNAL(saveDeviceXMLDesc(int, QString&)), this, SLOT(saveDeviceXMLDescription(int, QString&))); connect(infoWidget, SIGNAL(errorMsg(QString&)), this, SIGNAL(errorMsg(QString&))); connect(deviceStack, SIGNAL(finished(int)), this, SLOT(addDevice())); connect(deviceStack, SIGNAL(errorMsg(QString&)), this, SIGNAL(errorMsg(QString&))); }
void opencl() { cl_int ciErrNum; //Use the first platform cl_platform_id platform; ciErrNum = clGetPlatformIDs(1, &platform, NULL); debug("platform",ciErrNum); //Use the first device cl_device_id device; ciErrNum = clGetDeviceIDs(platform,CL_DEVICE_TYPE_GPU,1,&device,NULL); debug("device",ciErrNum); showDevice(device); /* cl_context_properties cps[3] = {CL_CONTEXT_PLATFORM,(cl_context_properties)platform, 0}; // Create the context cl_context ctx = clCreateContext(cps,1,&device, NULL, NULL, &ciErrNum); debug("create context",ciErrNum); // Create the command queue cl_command_queue myqueue = clCreateCommandQueue(ctx, device, 0, &ciErrNum); debug("create queue",ciErrNum); // Allocate for A cl_mem bufferA = clCreateBuffer(ctx, CL_MEM_READ_ONLY, A->w * A->h * sizeof(float), NULL, &ciErrNum); debug("alloc A",ciErrNum); // Copy A to device ciErrNum = clEnqueueWriteBuffer(myqueue, bufferA, CL_TRUE, 0, A->w * A->h * sizeof(float), (void *) A->data, 0, NULL, NULL); debug("enqueue A",ciErrNum); // Allocate for B cl_mem bufferB = clCreateBuffer(ctx, CL_MEM_READ_ONLY, B->w * B->h * sizeof(float), NULL, &ciErrNum); debug("alloc B",ciErrNum); // Copy B to device ciErrNum = clEnqueueWriteBuffer(myqueue, bufferB, CL_TRUE, 0, B->w * B->h * sizeof(float), (void *) B->data, 0, NULL, NULL); debug("enqueue B",ciErrNum); // Allocate for C = A*B cl_mem bufferC = clCreateBuffer(ctx, CL_MEM_READ_ONLY, A->h * B->w * sizeof(float), NULL, &ciErrNum); debug("alloc C",ciErrNum); // Read program from source ASCIIZ string cl_program myprog = clCreateProgramWithSource ( ctx, 1, (const char **)&source, NULL, &ciErrNum); debug("read program",ciErrNum); // Compile program - pass NULL for device_list argument // so as to target all devices in the context ciErrNum = clBuildProgram(myprog, 0, NULL, NULL, NULL, NULL); debug("build program",ciErrNum); // Create the kernel cl_kernel mykernel = clCreateKernel(myprog, "simpleMultiply", &ciErrNum); debug("create program",ciErrNum); // Set the kernel args clSetKernelArg(mykernel, 0, sizeof(cl_mem), (void *)&bufferC); clSetKernelArg(mykernel, 1, sizeof(cl_int), (void *)&A->w); clSetKernelArg(mykernel, 2, sizeof(cl_int), (void *)&A->h); clSetKernelArg(mykernel, 3, sizeof(cl_int), (void *)&B->w); clSetKernelArg(mykernel, 4, sizeof(cl_int), (void *)&B->h); clSetKernelArg(mykernel, 5, sizeof(cl_mem), (void *)&bufferA); clSetKernelArg(mykernel, 6, sizeof(cl_mem), (void *)&bufferB); // Set local and global wkgroup sizes // Matrix sides are to be divis by localws[.] size_t localws[2] = {2, 2}; size_t globalws[2] = {C->w, C->h}; //---------------------------------------------------------------------------- // Execute the kernel ciErrNum = clEnqueueNDRangeKernel(myqueue, mykernel, 2, NULL, globalws, localws, 0, NULL, NULL); debug("execute",ciErrNum); //---------------------------------------------------------------------------- // Read the output data back to host ciErrNum = clEnqueueReadBuffer( myqueue, bufferC, CL_TRUE, 0, C->w * C->h *sizeof(float), (void *)C->data, 0, NULL, NULL); debug("enqueue C",ciErrNum); // Free OpenCL resources clReleaseKernel(mykernel); clReleaseProgram(myprog); clReleaseCommandQueue(myqueue); clReleaseMemObject(bufferA); clReleaseMemObject(bufferB); clReleaseMemObject(bufferC); clReleaseContext(ctx); */ free(platform); free(device); }
DeviceStack::DeviceStack( QWidget *parent, virConnectPtr *conn) : QDialog(parent), ptr_ConnPtr(conn) { infoLayout = new QVBoxLayout(this); infoWidget = new QScrollArea(this); scrolled = new QWidget(this); scrolled->setLayout(infoLayout); infoWidget->setWidget(scrolled); infoWidget->setWidgetResizable(true); QString connType = QString(virConnectGetType(*ptr_ConnPtr)).toLower(); QStringList devSet, devList, devType; devList = DEV_LIST; devType = DEV_TYPE; if ( connType=="qemu" ) { devSet = QEMU_DEVICE_LIST; } else if ( connType=="lxc" ) { devSet = LXC_DEVICE_LIST; } else if ( connType=="xen" ) { devSet = XEN_DEVICE_LIST; } else if ( connType=="vbox" ) { devSet = VBOX_DEVICE_LIST; } else if ( connType=="vbox" ) { devSet = VMWARE_DEVICE_LIST; } else if ( connType=="vbox" ) { devSet = OPENVZ_DEVICE_LIST; }; deviceList = new QListWidget(this); deviceList->setSortingEnabled(false); /* set icons & user data */ for (int i=0; i<devList.count();i++) { if ( devSet.contains(devType.at(i)) ) { deviceList->addItem(devList.at(i)); QListWidgetItem *item = deviceList->item(deviceList->count()-1); /* item->setIcon( QIcon::fromTheme( item->text() .split(" ") .first() .toLower())); */ item->setData(Qt::UserRole, QVariant(devType.at(i))); //qDebug()<<item->text(); }; }; // double event for selection item //connect(deviceList, SIGNAL(itemClicked(QListWidgetItem*)), // this, SLOT(showDevice(QListWidgetItem*))); connect(deviceList, SIGNAL(itemSelectionChanged()), this, SLOT(showDevice())); listLayout = new QHBoxLayout(this); listLayout->addWidget(deviceList, 3); listLayout->addWidget(infoWidget, 8); listWidget = new QWidget(this); listWidget->setLayout(listLayout); addDevice = new QPushButton(QIcon::fromTheme("dialog-ok"), "Add Device", this); cancel = new QPushButton(QIcon::fromTheme("dialog-cancel"), "Cancel", this); connect(addDevice, SIGNAL(clicked()), this, SLOT(set_Result())); connect(cancel, SIGNAL(clicked()), this, SLOT(set_Result())); buttonlayout = new QHBoxLayout(this); buttonlayout->addWidget(addDevice); buttonlayout->addWidget(cancel); buttons = new QWidget(this); buttons->setLayout(buttonlayout); commonLayout = new QVBoxLayout(this); commonLayout->addWidget(listWidget); commonLayout->addWidget(buttons); setLayout(commonLayout); }
void Devices::showDevice() { QListWidgetItem *_curr = usedDeviceList->currentItem(); if ( NULL!=_curr ) showDevice( _curr, NULL ); }
void Devices::addDeviceToUsedDevList(QDomDocument &doc) { QDomNodeList list = doc.firstChildElement("device").childNodes(); if ( list.length()==0 ) return; QString device, desc, name; device = list.item(0).nodeName(); if ( device=="disk" ) { // Hard drives, floppy disks, CDROMs if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Disk %1").arg(desc.toUpper())); } else if ( device=="interface" ) { // Network Interface if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Network %1").arg(desc.toUpper())); } else if ( device=="serial" ) { // Serial port if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Serial Port %1").arg(desc.toUpper())); } else if ( device=="parallel" ) { // Parallel port if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Parallel Port %1").arg(desc.toUpper())); } else if ( device=="console" ) { // Console if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Console %1").arg(desc.toUpper())); } else if ( device=="channel" ) { // Channel if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Channel %1").arg(desc.toUpper())); } else if ( device=="smartcard" ) { // SmartCard name.append(QString("SmartCard %1").arg(desc.toUpper())); } else if ( device=="input" ) { // Input if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Input %1").arg(desc.toUpper())); } else if ( device=="hub" ) { // Hub if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Hub %1").arg(desc.toUpper())); } else if ( device=="video" ) { // Video if (list.item(0).firstChildElement("model").attributes().contains("type")) desc = list.item(0).firstChildElement("model").attributes().namedItem("type").nodeValue(); name.append(QString("Video %1").arg(desc.toUpper())); } else if ( device=="sound" ) { // Sound if (list.item(0).attributes().contains("model")) desc = list.item(0).attributes().namedItem("model").nodeValue(); name.append(QString("Sound %1").arg(desc.toUpper())); } else if ( device=="hostdev" ) { // HostDevice if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Host Device %1").arg(desc.toUpper())); } else if ( device=="graphics" ) { // Graphics if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Display %1").arg(desc.toUpper())); } else if ( device=="redirdev" ) { // Redirected devices if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("USB Redirector %1").arg(desc.toUpper())); } else if ( device=="filesystem" ) { // Filesystems if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Filesystem %1").arg(desc.toUpper())); } else if ( device=="controller" ) { // Controller if (list.item(0).attributes().contains("type")) desc = list.item(0).attributes().namedItem("type").nodeValue(); name.append(QString("Controller %1").arg(desc.toUpper())); } else if ( device=="emulator" ) { // Emulator name.append(QString("Emulator")); } else if ( device=="watchdog" ) { // WatchDog if (list.item(0).attributes().contains("model")) desc = list.item(0).attributes().namedItem("model").nodeValue(); name.append(QString("WatchDog %1").arg(desc.toUpper())); } else if ( device=="memballoon" ) { // MemBalloon if (list.item(0).attributes().contains("model")) desc = list.item(0).attributes().namedItem("model").nodeValue(); name.append(QString("MemBalloon %1").arg(desc.toUpper())); } else if ( device=="rng" ) { // Random if (list.item(0).attributes().contains("model")) desc = list.item(0).attributes().namedItem("model").nodeValue(); name.append(QString("RNG %1").arg(desc.toUpper())); } else if ( device=="tpm" ) { // TPM if (list.item(0).attributes().contains("model")) desc = list.item(0).attributes().namedItem("model").nodeValue(); name.append(QString("TPM %1").arg(desc.toUpper())); } else if ( device=="nvram" ) { // NVRAM name.append(QString("NVRAM")); } else if ( device=="panic" ) { // Panic name.append(QString("Panic")); } else return; // find DeviceName in Order int i = -1; foreach (QString _name, devNameOrder) { if ( name.startsWith(_name) ) { i = devNameOrder.indexOf(_name); break; }; }; // impossible case, but... if (i<0) return; // insert item by Device Name Order bool inserted = false; do { int row = 0; QList<QListWidgetItem*> _family = usedDeviceList->findItems( devNameOrder.at(i), Qt::MatchCaseSensitive | Qt::MatchStartsWith); if ( _family.isEmpty() ) { if ( i>0) { --i; continue; }; } else { QListWidgetItem *lastItem = _family.last(); row = usedDeviceList->row( lastItem ) + 1; }; QListWidgetItem *item = new QListWidgetItem(); item->setText(name); item->setData(Qt::UserRole, doc.toString()); usedDeviceList->insertItem(row, item); //usedDeviceList->insertItem(row, name); //usedDeviceList->item(row)->setData(Qt::UserRole, doc.toString()); showDevice(item, NULL); inserted = true; } while ( !inserted ); //qDebug()<<"added New Device:"<<name; initBootDevices(); }