This is the quick start guide for the USB Host Vendor Module (UHI Vendor) with step-by-step instructions on how to configure and use the modules in a selection of use cases.
The use cases highlights several code fragments. The code fragments in the steps for setup can be copied into a custom initialization function, while the steps for usage can be copied into, e.g., the main application function.
Basic Use Case
In this basic use case, the "USB Vendor (Single Class support)" module is used.
The "USB Vendor (Composite)" module usage is described in Advanced Use Cases.
Setup Steps
As a USB host, it follows common USB host setup steps. Refer to USB Host Basic Setup.
Usage Steps
Example Code
Content of conf_usb_host.h:
#define USB_HOST_UHI UHI_VENDOR
#define UHI_VENDOR_CHANGE(dev, b_plug) my_callback_vendor_change(dev, b_plug)
extern void my_callback_vendor_change(
uhc_device_t* dev,
bool b_plug);
#define UHI_VENDOR_VID_PID_LIST {USB_VID_ATMEL, USB_PID_ATMEL_ASF_VENDOR_CLASS}
#include "uhi_vendor.h" // At the end of conf_usb_host.h file
Add to application C-file:
static bool my_flag_vendor_test_start = false;
void my_callback_vendor_change(
uhc_device_t* dev,
bool b_plug)
{
my_flag_vendor_test_start = b_plug;
}
static void my_callback_bulk_in_done (usb_add_t add,
usb_ep_t ep, uhd_trans_status_t status, iram_size_t nb_transfered)
{
if (status != UHD_TRANS_NOERROR) {
return;
}
my_flag_vendor_test_start = true;
}
#define MESSAGE "Hello bulk"
#define HELLO_SIZE 5
#define HELLO_BULK_SIZE 10
uint8_t my_out_buffer[MESSAGE_SIZE+1] = MESSAGE;
uint8_t my_in_buffer[MESSAGE_SIZE+1];
void my_task(void)
{
if (!my_flag_vendor_test_start) {
return;
}
my_flag_vendor_test_start = false;
my_callback_bulk_in_done);
}
}
Workflow
- Ensure that conf_usb_host.h is available and contains the following configurations, which is the USB host vendor configuration:
#define USB_HOST_UHI UHI_HID_VENDOR
- Note
- It defines the list of UHI supported by USB host.
#define UHI_VENDOR_CHANGE(dev, b_plug) my_callback_vendor_change(dev, b_plug)
extern bool my_callback_vendor_change(uhc_device_t* dev, bool b_plug);
- Note
- This callback is called when a USB device vendor is plugged or unplugged.
#define UHI_VENDOR_VID_PID_LIST {USB_VID_ATMEL, USB_PID_ATMEL_ASF_VENDOR_CLASS}
- Note
- It defines the list of devices supported by USB host (defined by VID and PID).
- The Vendor data transfert functions are described in uhi_vendor_group.
Advanced Use Cases
For more advanced use of the UHI vendor module, see the following: