/* 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);
}