Jump to content

UsbIrqWrite: Difference between revisions

From EDM2
Created page with "==Description== Executes synchronous host-to-device Interrupt Transfer with a specific endpoint. ==Syntax== <pre> ulrc=UsbIrqWrite(Handle,Endpoint,AltInterface,ulNumBytes,*pu..."
 
W.m.brul (talk | contribs)
updated syntax and added parameter descriptions and example code
Line 4: Line 4:
==Syntax==
==Syntax==
<pre>
<pre>
ulrc=UsbIrqWrite(Handle,Endpoint,AltInterface,ulNumBytes,*pucData,ulTimeout)
ulrc = UsbIrqWrite(Handle,ucEndpoint,ucAltSetting,ulNumBytes,pucData,ulTimeout)
</pre>
</pre>


==Parameters==
==Parameters==
; Handle :  
; Handle : the Device Handle received from the previous UsbOpen.


; Endpoint :
; ucEndpoint : the Endpoint Number with the Direction Bit set to zero.


; AltInterface :  
; ucAltSetting : the Alternate Setting of the interface having this endpoint.


; ulNumBytes :  
; ulNumBytes : the number of bytes to be transferred or 0 for no data transfer.


; *pucData :  
; pucData : the address of the buffer with the data bytes to be transferred.


; ulTimeout :  
; ulTimeout : the timeout to wait for completion in milliseconds.


==Return Code==
==Return Code==
 
<pre>
0000 - NO_ERROR
</pre>
===Errors===
===Errors===
 
<pre>
  [0000] - NO_ERROR
0006 - ERROR_INVALID_HANDLE
  [0006] - ERROR_INVALID_HANDLE
0008 - ERROR_NOT_ENOUGH_MEMORY
  [0008] - ERROR_NOT_ENOUGH_MEMORY
0057 - ERROR_INVALID_PARAMETER
  [0057] - ERROR_INVALID_PARAMETER
005F - ERROR_INTERRUPT
  [005F] - ERROR_INTERRUPT (95)
0122 - ERROR_TOO_MANY_HANDLES
  [0122] - ERROR_TOO_MANY_HANDLES (290)
0280 - ERROR_TIMEOUT
  [0280] - ERROR_TIMEOUT (640)
1B58 - USB_NOT_INIT
  [1B58] - USB_NOT_INIT (7000)
1B5B - USB_ERROR_INVALID_ENDPOINT
  [1B5B] - USB_ERROR_INVALID_ENDPOINT (7003)
1B5C - USB_ERROR_LESSTRANSFERED
  [1B5C] - USB_ERROR_LESSTRANSFERED (7004)
4000 - USB_IORB_REQUEST
  [4000] - USB_IORB_REQUEST
80XX - USB_IORB_FAILED
  [80XX] - USB_IORB_FAILED
</pre>
 
==Remarks==
==Remarks==


==Example Code==
==Example Code==
<pre>
<pre>
//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]);
  }
}
</pre>
</pre>



Revision as of 18:25, 25 January 2017

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