Esempio n. 1
0
void ControlReaderThread::setupRequest(void *data)
{
    struct usb_functionfs_event *e = (struct usb_functionfs_event *)data;

    /* USB Still Image Capture Device Definition, Section 5 */
    /* www.usb.org/developers/devclass_docs/usb_still_img10.pdf */

    //qDebug() << "bRequestType:" << e->u.setup.bRequestType;
    //qDebug() << "bRequest:" << e->u.setup.bRequest;
    //qDebug() << "wValue:" << e->u.setup.wValue;
    //qDebug() << "wIndex:" << e->u.setup.wIndex;
    //qDebug() << "wLength:" << e->u.setup.wLength;

    switch(e->u.setup.bRequest) {
    case PTP_REQ_GET_DEVICE_STATUS:
        if(e->u.setup.bRequestType == 0xa1)
            sendStatus(m_status);
        else
            stall((e->u.setup.bRequestType & USB_DIR_IN)>0);
        break;
    case PTP_REQ_CANCEL:
        emit cancelTransaction();
        break;
    case PTP_REQ_DEVICE_RESET:
        emit deviceReset();
        break;
    //case PTP_REQ_GET_EXTENDED_EVENT_DATA:
    default:
        stall((e->u.setup.bRequestType & USB_DIR_IN)>0);
        break;
    }
}
bool GammaBlockUSB::deviceInit()
{
	wxConfigBase* config = wxFileConfig::Get();
	wxConfigPathChanger changer(config, "/USBDevice/");

	if( deviceReset() &&
		deviceSet(GAMMA_SET_ZOOM, config->ReadLong("Zoom", 127)) &&
		deviceSet(GAMMA_SET_SHIFT_X, config->ReadLong("ShiftX", 127)) &&
		deviceSet(GAMMA_SET_SHIFT_Y, config->ReadLong("ShiftY", 127)) &&
		deviceSet(GAMMA_SET_TMARKER, log10(config->ReadDouble("Tmarker", 10)) + 1) &&
		deviceSet(GAMMA_SET_GATE, config->ReadLong("GateOn", 0)) )
	{
		wxLogStatus("Device init OK.");
		return true;
	}
	else
	{
		wxLogStatus("Device init FAILED.");
		return false;
	}
}