Example #1
0
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);
}
Example #2
0
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&)));
}
Example #3
0
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);
}
Example #5
0
void Devices::showDevice()
{
    QListWidgetItem *_curr = usedDeviceList->currentItem();
    if ( NULL!=_curr ) showDevice( _curr, NULL );
}
Example #6
0
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();
}