Jump to content

UsbIrqWrite

From EDM2
Revision as of 18:25, 25 January 2017 by W.m.brul (talk | contribs) (updated syntax and added parameter descriptions and example code)

Description

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

Syntax

ulrc = UsbIrqWrite(Handle,ucEndpoint,ucAltSetting,ulNumBytes,pucData,ulTimeout)

Parameters

Handle
the Device Handle received from the previous UsbOpen.
ucEndpoint
the Endpoint Number with the Direction Bit set to zero.
ucAltSetting
the Alternate Setting of the interface having this endpoint.
ulNumBytes
the number of bytes to be transferred or 0 for no data transfer.
pucData
the address of the buffer with the data bytes to be transferred.
ulTimeout
the timeout to wait for completion in milliseconds.

Return Code

0000 - NO_ERROR

Errors

0006 - ERROR_INVALID_HANDLE
0008 - ERROR_NOT_ENOUGH_MEMORY
0057 - ERROR_INVALID_PARAMETER
005F - ERROR_INTERRUPT
0122 - ERROR_TOO_MANY_HANDLES
0280 - ERROR_TIMEOUT
1B58 - USB_NOT_INIT
1B5B - USB_ERROR_INVALID_ENDPOINT
1B5C - USB_ERROR_LESSTRANSFERED
4000 - USB_IORB_REQUEST
80XX - USB_IORB_FAILED

Remarks

Example Code

//Code Snippet - UsbIrqWrite
{
  APIRET ulrc;
  PUCHAR pucData;
  UCHAR ucAltSetting = 0;
  UCHAR ucData[4096];
  UCHAR ucEndpoint = 0x02;
  ULONG ulNumBytes = sizeof(ucData);
  ULONG ulTimeout = 8000;

  pucData = &ucData[0];
  ulrc = UsbIrqWrite(Handle,ucEndpoint,ucAltSetting,ulNumBytes,pucData,ulTimeout);
  printf("\nUsbIrqWrite - ulrc: 0x%04X (%hu)",ulrc,ulrc);
  if (!ulrc) //success
  {
    int i; printf(" - interrupt data:\n");
    for (i=0;i<ulNumBytes;i++) printf("%02X",ucData[i]);
  }
}

Related Functions