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; } }