Jump to content

RxUsbCtrlMessage

From EDM2
Revision as of 03:37, 11 January 2017 by Martini (talk | contribs) (Created page with "==Description== Executes synchronous Control Transfer with the default endpoint. ==Syntax== <pre> rc = RxUsbCtrlMessage(Handle,RequestType,Request,Value,Index,NumBytes,Data,...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Description

Executes synchronous Control Transfer with the default endpoint.

Syntax

rc = RxUsbCtrlMessage(Handle,RequestType,Request,Value,Index,NumBytes,Data,Timeout) 

Parameters

Handle
the Device Handle received from the previous RxUsbOpen.
RequestType
the characteristics of the Standard Device Request.
Request
the specific request code of the Standard Device Request.
Value
the request dependent value of the Standard Device Request.
Index
the request dependent index of the Standard Device Request.
Timeout
the timeout to wait for completion in milliseconds.

For device-to-host data transfer:

NumBytes
the number of bytes to be transferred or 0 for no data transfer.
Data
the name of the variable to receive the data bytes transferred.

For host-to-device data transfer:

NumBytes
the name of the variable to receive the number of bytes transferred.
Data
the character string if any with the data bytes to be transferred.

Return Code

Errors

Remarks

Example Code

/* add RxUsbCtrlMessage */
rc = RxFuncAdd('RxUsbCtrlMessage','usbcalls','RxUsbCtrlMessage')
say '+RxUsbCtrlMessage(),RC=0x'd2x(rc)

/* invoke RxUsbCtrlMessage device-to-host */
drop Data /* receives string of data bytes read */
RequestType=x2d(81); Request=x2d(06) /* get interface descriptor */
Value=x2d(2200); Index=x2d(0000); NumBytes=4096; Timeout=8000; /* hid report */
rc = RxUsbCtrlMessage(Handle,RequestType,Request,Value,Index,NumBytes,Data,Timeout)
say '*RxUsbCtrlMessage(),RC=0x'd2x(rc)

/* invoke RxUsbCtrlMessage device-to-host */
drop Data /* receives string of data bytes read */
RequestType=x2d(A1); Request=x2d(01) /* get interface class report */
Value=x2d(0100); Index=x2d(0000); NumBytes=8; Timeout=8000; /* hid input report */
rc = RxUsbCtrlMessage(Handle,RequestType,Request,Value,Index,NumBytes,Data,Timeout)
say '*RxUsbCtrlMessage(),RC=0x'd2x(rc)

/* invoke RxUsbCtrlMessage host-to-device */
Data=x2c(00 00 00 00 00 00 00 00) /* clear data */
RequestType=x2d(21); Request=x2d(09) /* set interface class report */
Value=x2d(0100); Index=x2d(0000); drop NumBytes; Timeout=8000; /* hid input report */
rc = RxUsbCtrlMessage(Handle,RequestType,Request,Value,Index,NumBytes,Data,Timeout)
say '*RxUsbCtrlMessage(),RC=0x'd2x(rc)

/* drop RxUsbCtrlMessage */
rc = RxFuncDrop('RxUsbCtrlMessage')
say '-RxUsbCtrlMessage(),RC=0x'd2x(rc)

  LTNR­

Related Functions