Unit USBCDCACM
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
procedure CDCACMInit;
Note | None documented |
---|
CDC ACM serial functions
function CDCACMSerialDeviceOpen(Serial:PSerialDevice; BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;
Note | None documented |
---|
function CDCACMSerialDeviceClose(Serial:PSerialDevice):LongWord;
Note | None documented |
---|
function CDCACMSerialDeviceRead(Serial:PSerialDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Note | None documented |
---|
function CDCACMSerialDeviceWrite(Serial:PSerialDevice; Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Note | None documented |
---|
CDC ACM USB functions
function CDCACMDriverBind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
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 |
function CDCACMDriverUnbind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
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 |
procedure CDCACMReceiveWorker(Request:PUSBRequest);
Request | The USB request which has completed |
---|
procedure CDCACMReceiveComplete(Request:PUSBRequest);
Request | The USB request which has completed |
---|---|
Note | Request is passed to worker thread for processing to prevent blocking the USB completion |
procedure CDCACMTransmitStart(Request:PUSBRequest);
Request | The USB transmit request to use |
---|---|
Note | Caller must hold the lock on the serial device |
procedure CDCACMTransmitWorker(Request:PUSBRequest);
Request | The USB request which has completed |
---|
procedure CDCACMTransmitComplete(Request:PUSBRequest);
Request | The USB request which has completed |
---|---|
Note | Request is passed to worker thread for processing to prevent blocking the USB completion |
procedure CDCACMInterruptWorker(Request:PUSBRequest);
Request | The USB request which has completed |
---|
procedure CDCACMInterruptComplete(Request:PUSBRequest);
Request | The USB request which has completed |
---|---|
Note | Request is passed to worker thread for processing to prevent blocking the USB completion |
CDC ACM helper functions
function CDCACMCheckDevice(Device:PUSBDevice; var Quirks:LongWord):LongWord;
Device | USB device to check |
---|---|
Quirks | Return value for any device specific quirks (eg CDCACM_QUIRK_NO_UNION_NORMAL) |
Return | USB_STATUS_SUCCESS if completed or another error code on failure |
function CDCACMCheckInterface(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Device | USB device to check |
---|---|
Interrface | USB interface to check |
Return | USB_STATUS_SUCCESS if completed or another error code on failure |
function CDCACMCheckDeviceAndInterface(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Device | USB device to check |
---|---|
Interrface | USB interface to check |
Return | USB_STATUS_SUCCESS if completed or another error code on failure |
function CDCACMFindInterfaces(Device:PUSBDevice; Interrface:PUSBInterface; var DataInterface,ControlInterface:PUSBInterface; Quirks:LongWord; var Capabilities:Byte):LongWord;
Device | USB device to check |
---|---|
Interrface | USB interface to check (Optional) |
DataInterface | Return value for the located data interface |
ControlInterface | Return value for the located control interface |
Quirks | Any known quirks for this device from identification (eg CDCACM_QUIRK_NO_UNION_NORMAL) |
Capabilities | Return value for ACM capabilities (eg USB_CDC_ACM_CAP_LINE) |
Return | USB_STATUS_SUCCESS if completed or another error code on failure |
function CDCACMControlRequest(Serial:PCDCACMDevice; Request:Byte; Value:Word; Data:Pointer;Size:Word):LongWord;
Note | None documented |
---|
function CDCACMGetLineRequest(Serial:PCDCACMDevice; var LineCoding:TUSBCDCLineCoding):LongWord;
Note | None documented |
---|
function CDCACMSetLineRequest(Serial:PCDCACMDevice; const LineCoding:TUSBCDCLineCoding):LongWord;
Note | None documented |
---|
function CDCACMSetControlRequest(Serial:PCDCACMDevice; Control:Word):LongWord;
Note | None documented |
---|
Return to Unit Reference