Chapter 16
and notifications to get and set RS-232 status and control signals and asynchro-
nous port parameters. Data uses a CDC data interface.
Devices that use the abstract control model include virtual COM ports and
Ethernet devices that comply with the Microsoft-specific Remote NDIS proto-
col. The Remote NDIS USB Driver Kit, available from Microsoft, includes
Microsoft’s specification.
The CDC telephone control model supports call management and notifica-
tions and typically uses other classes such as audio for data and HID for a key-
pad interface.
:
The function performed by Virtual COM-port devices is sometimes called
serial emulation. The CDC specification says that abstract-control-model
devices understand AT commands. In practice, however, a vitual COM-port
device that doesn’t communicate with a modem that uses the commands will
never receive a command and thus doesn’t need to support them.
A generic COM-port device that supports the abstract control model and uses
the standard Windows drivers performs these tasks:
- Returns descriptors that identify the device as a COM-port device that sup-
ports the abstract control model and common AT commands. - Accepts COM-port data on a bulk OUT endpoint.
- Sends COM-port data as needed on a bulk IN endpoint.
- Sends SERIAL_STATE notifications as needed on an interrupt IN end-
point.
In addition, most abstract control model devices support class-specific requests
to get and set asynchronous port parameters and to control the RS-232 signals
RTS, DTR, and Break.
The abstract control model requires devices to support the class-specific control
requests SEND_ENCAPSULATED_COMMAND and
GET_ENCAPSULATED_RESPONSE and the class-specific notification
RESPONSE_AVAILABLE. Again, devices that don’t use AT commands will
never receive these requests or need to send the notification.
The model doesn’t define a way for the host to read the state of RS-232’s CTS
status signal. Device firmware can still read CTS on a local asynchronous port
and take appropriate action. For example, if a virtual COM-port device has
data to send to a remote device that hasn’t asserted CTS, the virtual COM-port
device can store the data in a buffer and wait to transmit. If the buffer is full,