This is the quick start guide for the USB Host Mouse Module (UHI Mouse) 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 Host HID Mouse (Single Class support)" module is used. The "USB Host HID Mouse (Multiple Classes support)" 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_HID_MOUSE
#define UHI_HID_MOUSE_CHANGE(dev, b_plug) my_callback_mouse_change(dev, b_plug)
extern bool my_callback_mouse_change(
uhc_device_t* dev,
bool b_plug);
#define UHI_HID_MOUSE_EVENT_BTN_LEFT(b_state) my_callback_event_btn_left(b_state)
extern void my_callback_event_btn_left(bool b_state);
#define UHI_HID_MOUSE_EVENT_BTN_RIGHT(b_state) my_callback_event_btn_right(b_state)
extern void my_callback_event_btn_right(bool b_state);
#define UHI_HID_MOUSE_EVENT_BTN_MIDDLE(b_state) my_callback_event_btn_middle(b_state)
extern void my_callback_event_btn_middle(bool b_state);
#define UHI_HID_MOUSE_EVENT_MOUVE(x, y, scroll) my_callback_event_mouse(x, y, scroll)
extern void my_callback_event_mouse(int8_t x, int8_t y, int8_t scroll);
#include "uhi_hid_mouse.h"
Add to application C-file:
bool my_callback_mouse_change(
uhc_device_t* dev,
bool b_plug)
{
if (b_plug) {
my_display_on_mouse_icon();
} else {
my_display_off_mouse_icon();
}
}
void my_callback_event_btn_left(bool b_state)
{
if (b_state) {
} else {
}
}
void my_callback_event_mouse(int8_t x, int8_t y, int8_t scroll)
{
if (!x) {
cursor_x += x;
}
if (!y) {
cursor_y += y;
}
if (!scroll) {
wheel += scroll;
}
}
Workflow
- Ensure that conf_usb_host.h is available and contains the following configuration which is the USB host mouse configuration:
#define USB_HOST_UHI UHI_HID_MOUSE
- Note
- It defines the list of UHI supported by USB host.
#define UHI_HID_MOUSE_CHANGE(dev, b_plug) my_callback_mouse_change(dev, b_plug)
extern bool my_callback_mouse_change(uhc_device_t* dev, bool b_plug);
- Note
- This callback is called when a USB device mouse is plugged or unplugged.
#define UHI_HID_MOUSE_EVENT_BTN_LEFT(b_state) my_callback_event_btn_left(b_state)
extern void my_callback_event_btn_left(bool b_state);
#define UHI_HID_MOUSE_EVENT_BTN_RIGHT(b_state) my_callback_event_btn_right(b_state)
extern void my_callback_event_btn_right(bool b_state);
#define UHI_HID_MOUSE_EVENT_BTN_MIDDLE(b_state) my_callback_event_btn_middle(b_state)
extern void my_callback_event_btn_middle(bool b_state);
#define UHI_HID_MOUSE_EVENT_MOUVE(x, y, scroll) my_callback_event_mouse(x, y, scroll)
extern void my_callback_event_mouse(int8_t x, int8_t y, int8_t scroll)
- Note
- These callbacks are called when a USB device mouse event is received.
Advanced Use Cases
For more advanced use of the UHI HID mouse module, see the following: