/* USB::DevHandle#usb_control_msg(requesttype, request, value, index, bytes, timeout) */ static VALUE rusb_control_msg( VALUE v, VALUE vrequesttype, VALUE vrequest, VALUE vvalue, VALUE vindex, VALUE vbytes, VALUE vtimeout) { usb_dev_handle *p = get_usb_devhandle(v); int requesttype = NUM2INT(vrequesttype); int request = NUM2INT(vrequest); int value = NUM2INT(vvalue); int index = NUM2INT(vindex); int timeout = NUM2INT(vtimeout); char *bytes; int size; int ret; StringValue(vbytes); rb_str_modify(vbytes); bytes = RSTRING_PTR(vbytes); size = RSTRING_LEN(vbytes); ret = usb_control_msg(p, requesttype, request, value, index, bytes, size, timeout); check_usb_error("usb_control_msg", ret); return INT2NUM(ret); }