Vendor Class Overview

Figure - General Architecture Between Windows Host and Vendor Class shows the general architecture between the host and the device using the Vendor class. In this example, the host operating system is Windows.

Figure - General Architecture Between Windows Host and Vendor Class

General Architecture Between Windows Host and Vendor Class


On the Windows side, the application communicates with the vendor device by interacting with the USBDev_API library. This library provided by Micrium offers an API to manage a device and its associated pipes, and to communicate with the device through control, bulk and interrupt endpoints. USBDev_API is a wrapper that allows the use of the WinUSB functions exposed by Winusb.dll.

On the device side, the Vendor class is composed of the following endpoints:

  • A pair of control IN and OUT endpoints called the default endpoint.
  • A pair of bulk IN and OUT endpoints.
  • A pair of interrupt IN and OUT endpoints. This pair is optional.

Table - Vendor Class Endpoints Usage indicates the usage of the different endpoints:

Table - Vendor Class Endpoints Usage
EndpointDirectionUsage
Control IN
Control OUT
Device-to-host
Host-to-device
Standard requests for enumeration and vendor-specific requests.
Bulk IN
Bulk OUT
Device-to-host
Host-to-device
Raw data communication. Data can be structured according to a proprietary protocol.
Interrupt IN
Interrupt OUT
Device-to-host
Host-to-device
Raw data communication or notification. Data can be structured according to a proprietary protocol.


The device application can use bulk and interrupt endpoints to send or receive data to or from the host. It can only use the default endpoint to decode vendor-specific requests sent by the host. The standard requests are managed internally by the Core layer of µC/USB-Device.