Difference between revisions of "Unit USBCDCACM"

From Ultibo.org
Jump to: navigation, search
Line 604: Line 604:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 619: Line 619:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 631: Line 631:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 643: Line 643:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 655: Line 655:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 670: Line 670:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Device'''
+
! Device
 
| The USB device to attempt to bind to
 
| The USB device to attempt to bind to
 
|-
 
|-
! '''Interrface'''
+
! Interrface
 
| The USB interface to attempt to bind to (or nil for whole device)
 
| The USB interface to attempt to bind to (or nil for whole device)
 
|-
 
|-
! '''Return'''
+
! Return
| USB_STATUS_SUCCESS if completed, USB_STATUS_DEVICE_UNSUPPORTED if unsupported or another error code on failure
+
| USB_STATUS_SUCCESS if completed, USB_STATUS_DEVICE_UNSUPPORTED if unsupported or another error code on failure.
 
|-
 
|-
 
|}
 
|}
Line 688: Line 688:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Device'''
+
! Device
 
| The USB device to unbind from
 
| The USB device to unbind from
 
|-
 
|-
! '''Interrface'''
+
! Interrface
 
| The USB interface to unbind from (or nil for whole device)
 
| The USB interface to unbind from (or nil for whole device)
 
|-
 
|-
! '''Return'''
+
! Return
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 706: Line 706:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Request'''
+
! Request
 
| The USB request which has completed
 
| The USB request which has completed
 
|-
 
|-
Line 718: Line 718:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Request'''
+
! Request
 
| The USB request which has completed
 
| The USB request which has completed
 
|-
 
|-
! '''Note'''
+
! Note
 
| Request is passed to worker thread for processing to prevent blocking the USB completion
 
| Request is passed to worker thread for processing to prevent blocking the USB completion
 
|-
 
|-
Line 733: Line 733:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Request'''
+
! Request
 
| The USB transmit request to use
 
| The USB transmit request to use
 
|-
 
|-
! '''Note'''
+
! Note
 
| Caller must hold the lock on the serial device
 
| Caller must hold the lock on the serial device
 
|-
 
|-
Line 748: Line 748:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Request'''
+
! Request
 
| The USB request which has completed
 
| The USB request which has completed
 
|-
 
|-
Line 760: Line 760:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Request'''
+
! Request
 
| The USB request which has completed
 
| The USB request which has completed
 
|-
 
|-
! '''Note'''
+
! Note
 
| Request is passed to worker thread for processing to prevent blocking the USB completion
 
| Request is passed to worker thread for processing to prevent blocking the USB completion
 
|-
 
|-
Line 775: Line 775:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Request'''
+
! Request
 
| The USB request which has completed
 
| The USB request which has completed
 
|-
 
|-
Line 787: Line 787:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Request'''
+
! Request
 
| The USB request which has completed
 
| The USB request which has completed
 
|-
 
|-
! '''Note'''
+
! Note
 
| Request is passed to worker thread for processing to prevent blocking the USB completion
 
| Request is passed to worker thread for processing to prevent blocking the USB completion
 
|-
 
|-
Line 805: Line 805:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Device'''
+
! Device
 
| USB device to check
 
| USB device to check
 
|-
 
|-
! '''Quirks'''
+
! Quirks
 
| Return value for any device specific quirks (eg CDCACM_QUIRK_NO_UNION_NORMAL)
 
| Return value for any device specific quirks (eg CDCACM_QUIRK_NO_UNION_NORMAL)
 
|-
 
|-
! '''Return'''
+
! Return
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 823: Line 823:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Device'''
+
! Device
 
| USB device to check
 
| USB device to check
 
|-
 
|-
! '''Interrface'''
+
! Interrface
 
| USB interface to check
 
| USB interface to check
 
|-
 
|-
! '''Return'''
+
! Return
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 841: Line 841:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Device'''
+
! Device
 
| USB device to check
 
| USB device to check
 
|-
 
|-
! '''Interrface'''
+
! Interrface
 
| USB interface to check
 
| USB interface to check
 
|-
 
|-
! '''Return'''
+
! Return
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 859: Line 859:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Device'''
+
! Device
 
| USB device to check
 
| USB device to check
 
|-
 
|-
! '''Interrface'''
+
! Interrface
 
| USB interface to check (Optional)
 
| USB interface to check (Optional)
 
|-
 
|-
! '''DataInterface'''
+
! DataInterface
 
| Return value for the located data interface
 
| Return value for the located data interface
 
|-
 
|-
! '''ControlInterface'''
+
! ControlInterface
 
| Return value for the located control interface
 
| Return value for the located control interface
 
|-
 
|-
! '''Quirks'''
+
! Quirks
 
| Any known quirks for this device from identification (eg CDCACM_QUIRK_NO_UNION_NORMAL)
 
| Any known quirks for this device from identification (eg CDCACM_QUIRK_NO_UNION_NORMAL)
 
|-
 
|-
! '''Capabilities'''
+
! Capabilities
 
| Return value for ACM capabilities (eg USB_CDC_ACM_CAP_LINE)
 
| Return value for ACM capabilities (eg USB_CDC_ACM_CAP_LINE)
 
|-
 
|-
! '''Return'''
+
! Return
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
| USB_STATUS_SUCCESS if completed or another error code on failure
 
|-
 
|-
Line 889: Line 889:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 901: Line 901:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 913: Line 913:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 925: Line 925:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-

Revision as of 06:08, 24 April 2018

Return to Unit Reference


Description


USB CDC ACM Driver unit

The Abstract Control Model (ACM) is part of the USB Communications Device Class (CDC) standard which allows modem like devices to be supported by USB with a standardized protocol for data transfer and modem control.

A CDC ACM device is defined by information in the interface descriptors and is not specific to any product and vendor Id. There are numerous devices that support the CDC ACM protocol and some of the most important from Ultibo are the Arduino Mega 2560 R3 and the Arduino Due.

This driver presents any device recognized as a CDC ACM as a generic serial interface device that can be accessed using the API in the Serial unit. It should not be necessary to directly call any of the functions in this unit from application code.

Constants



[Expand]
CDC ACM specific constants CDCACM_*


[Expand]
CDC ACM USB request CDCACM_USB_REQUEST_*


[Expand]
CDC ACM device quirk CDCACM_QUIRK_*


[Expand]
CDC ACM device Id CDCACM_DEVICE_ID_*


[Expand]
CDC ACM interface Id CDCACM_INTERFACE_ID_*


[Expand]
CDC ACM device and interface Id CDCACM_DEVICE_INTERFACE_ID_*


Type definitions



CDC ACM device Id

[Expand]

PCDCACMDeviceId = ^TCDCACMDeviceId;

TCDCACMDeviceId = record

CDC ACM device

[Expand]

PCDCACMDevice = ^TCDCACMDevice;

TCDCACMDevice = record


Public variables


None defined

Function declarations



Initialization functions

[Expand]
procedure CDCACMInit;
Description: To be documented


CDC ACM serial functions

[Expand]
function CDCACMSerialDeviceOpen(Serial:PSerialDevice; BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;
Description: To be documented


[Expand]
function CDCACMSerialDeviceClose(Serial:PSerialDevice):LongWord;
Description: To be documented


[Expand]
function CDCACMSerialDeviceRead(Serial:PSerialDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: To be documented


[Expand]
function CDCACMSerialDeviceWrite(Serial:PSerialDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: To be documented


CDC ACM USB functions

[Expand]
function CDCACMDriverBind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Bind the CDC ACM driver to a USB device if it is suitable


[Expand]
function CDCACMDriverUnbind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Unbind the CDC ACM driver from a USB device


[Expand]
procedure CDCACMReceiveWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request from the CDC ACM bulk IN endpoint


[Expand]
procedure CDCACMReceiveComplete(Request:PUSBRequest);
Description: Called when a USB request from the CDC ACM bulk IN endpoint completes


[Expand]
procedure CDCACMTransmitStart(Request:PUSBRequest);
Description: Called to continue transmission of data from the transmit buffer


[Expand]
procedure CDCACMTransmitWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request to the CDC ACM bulk OUT endpoint


[Expand]
procedure CDCACMTransmitComplete(Request:PUSBRequest);
Description: Called when a USB request to the CDC ACM bulk OUT endpoint completes


[Expand]
procedure CDCACMInterruptWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request to the CDC ACM interrupt IN endpoint


[Expand]
procedure CDCACMInterruptComplete(Request:PUSBRequest);
Description: Called when a USB request from the CDC ACM interrupt IN endpoint completes


CDC ACM helper functions

[Expand]
function CDCACMCheckDevice(Device:PUSBDevice; var Quirks:LongWord):LongWord;
Description: Check the Vendor and Device Id against the supported devices


[Expand]
function CDCACMCheckInterface(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Check the Interface against the supported devices


[Expand]
function CDCACMCheckDeviceAndInterface(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Check the Device and Interface against the supported devices


[Expand]
function CDCACMFindInterfaces(Device:PUSBDevice; Interrface:PUSBInterface; var DataInterface,ControlInterface:PUSBInterface; Quirks:LongWord; var Capabilities:Byte):LongWord;
Description: Locate the data and control interfaces from the functional descriptors


[Expand]
function CDCACMControlRequest(Serial:PCDCACMDevice; Request:Byte; Value:Word; Data:Pointer;Size:Word):LongWord;
Description: To be documented


[Expand]
function CDCACMGetLineRequest(Serial:PCDCACMDevice; var LineCoding:TUSBCDCLineCoding):LongWord;
Description: To be documented


[Expand]
function CDCACMSetLineRequest(Serial:PCDCACMDevice; const LineCoding:TUSBCDCLineCoding):LongWord;
Description: To be documented


[Expand]
function CDCACMSetControlRequest(Serial:PCDCACMDevice; Control:Word):LongWord;
Description: To be documented


Return to Unit Reference