Jump to content

RxUsbIrqWrite

From EDM2
Revision as of 12:35, 23 January 2017 by W.m.brul (talk | contribs) (added return codes)

Description

Executes synchronous host-to-device Interrupt Transfer with a specific endpoint.

Syntax

rc = RxUsbIrqWrite(Handle,Endpoint,AltSetting,NumBytes,Data,Timeout) 

Parameters

Handle
the Device Handle received from the previous RxUsbOpen.
Endpoint
the Endpoint Number with the Direction Bit set to zero.
AltSetting
the Alternate Setting of the interface having this endpoint.
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.
Timeout
the timeout to wait for completion in milliseconds.

Return Code

0x0000 - NO_ERROR

Errors

0x0006 - ERROR_INVALID_HANDLE
0x0008 - ERROR_NOT_ENOUGH_MEMORY
0x0057 - ERROR_INVALID_PARAMETER
0x005F - ERROR_INTERRUPT
0x0122 - ERROR_TOO_MANY_HANDLES
0x0280 - ERROR_TIMEOUT
0x1B58 - USB_NOT_INIT
0x1B5B - USB_ERROR_INVALID_ENDPOINT
0x1B5C - USB_ERROR_LESSTRANSFERED
0x4000 - USB_IORB_REQUEST
0x80XX - USB_IORB_FAILED

Remarks

Example Code

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

/* invoke RxUsbIrqWrite */
drop NumBytes /* receives number of data bytes written */
Endpoint=2; AltSetting=0; Data=copies(x2c(DB),4096); Timeout=8000
rc = RxUsbIrqWrite(Handle,Endpoint,AltSetting,NumBytes,Data,Timeout)
say '*RxUsbIrqWrite(),RC=0x'd2x(rc)

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

Related Functions