Return to Unit Reference
Description
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
To be documented
Type definitions
To be documented
Public variables
To be documented
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
Device
|
The USB device to attempt to bind to
|
Interrface
|
The USB interface to attempt to bind to (or nil for whole device)
|
Return
|
USB_STATUS_SUCCESS if completed, USB_STATUS_DEVICE_UNSUPPORTED if unsupported or another error code on failure
|
[Expand]
function CDCACMDriverUnbind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Unbind the CDC ACM driver from a USB device
Device
|
The USB device to unbind from
|
Interrface
|
The USB interface to unbind from (or nil for whole device)
|
Return
|
USB_STATUS_SUCCESS if completed or another error code on failure
|
[Expand]
procedure CDCACMReceiveWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request from the CDC ACM bulk IN endpoint
Request
|
The USB request which has completed
|
[Expand]
procedure CDCACMReceiveComplete(Request:PUSBRequest);
Description: Called when a USB request from the CDC ACM bulk IN endpoint completes
Request
|
The USB request which has completed
|
Note
|
Request is passed to worker thread for processing to prevent blocking the USB completion
|
[Expand]
procedure CDCACMTransmitStart(Request:PUSBRequest);
Description: Called to continue transmission of data from the transmit buffer
Request
|
The USB transmit request to use
|
Note
|
Caller must hold the lock on the serial device
|
[Expand]
procedure CDCACMTransmitWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request to the CDC ACM bulk OUT endpoint
Request
|
The USB request which has completed
|
[Expand]
procedure CDCACMTransmitComplete(Request:PUSBRequest);
Description: Called when a USB request to the CDC ACM bulk OUT endpoint completes
Request
|
The USB request which has completed
|
Note
|
Request is passed to worker thread for processing to prevent blocking the USB completion
|
[Expand]
procedure CDCACMInterruptWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request to the CDC ACM interrupt IN endpoint
Request
|
The USB request which has completed
|
[Expand]
procedure CDCACMInterruptComplete(Request:PUSBRequest);
Description: Called when a USB request from the CDC ACM interrupt IN endpoint completes
Request
|
The USB request which has completed
|
Note
|
Request is passed to worker thread for processing to prevent blocking the USB completion
|
Return to Unit Reference