From a6fede4962fb65bfb353c3a4a4f927c3fc501eb2 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 24 Jul 2018 20:51:50 +0700 Subject: [PATCH] improve tud_hid_mouse API() --- src/class/hid/hid_device.c | 31 +++++++++++++++++++++++++++++++ src/class/hid/hid_device.h | 15 ++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/class/hid/hid_device.c b/src/class/hid/hid_device.c index 292024a61..59bf24256 100644 --- a/src/class/hid/hid_device.c +++ b/src/class/hid/hid_device.c @@ -188,6 +188,37 @@ static bool hidd_mouse_report(hid_mouse_report_t const *p_report) return dcd_edpt_xfer(TUD_OPT_RHPORT, p_hid->ep_in, p_hid->report_buf, sizeof(hid_mouse_report_t)); } + +bool tud_hid_mouse_data(uint8_t buttons, int8_t x, int8_t y, int8_t scroll, int8_t pan) +{ + hid_mouse_report_t report = + { + .buttons = buttons, + .x = x, + .y = y, + .wheel = scroll, +// .pan = pan + }; + + return hidd_mouse_report( &report ); +} + +bool tud_hid_mouse_move(int8_t x, int8_t y) +{ + hidd_interface_t * p_hid = &_mse_itf; + uint8_t prev_buttons = p_hid->report_buf[0]; + + return tud_hid_mouse_data(prev_buttons, x, y, 0, 0); +} + +bool tud_hid_mouse_scroll(int8_t vertical, int8_t horizontal) +{ + hidd_interface_t * p_hid = &_mse_itf; + uint8_t prev_buttons = p_hid->report_buf[0]; + + return tud_hid_mouse_data(prev_buttons, 0, 0, vertical, horizontal); +} + #endif static inline hidd_interface_t* get_interface_by_edpt(uint8_t ep_addr) diff --git a/src/class/hid/hid_device.h b/src/class/hid/hid_device.h index ba8a5a4a1..659981a48 100644 --- a/src/class/hid/hid_device.h +++ b/src/class/hid/hid_device.h @@ -122,10 +122,19 @@ ATTR_WEAK void tud_hid_keyboard_set_report_cb(hid_report_type_t report_type, uin bool tud_hid_mouse_ready(void); bool tud_hid_mouse_data(uint8_t buttons, int8_t x, int8_t y, int8_t scroll, int8_t pan); -bool tud_hid_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan); -bool tud_hid_mouse_button_press(uint8_t buttons); -bool tud_hid_mouse_button_release(uint8_t buttons); +bool tud_hid_mouse_move(int8_t x, int8_t y); +bool tud_hid_mouse_scroll(int8_t vertical, int8_t horizontal); + +static inline bool tud_hid_mouse_button_press(uint8_t buttons) +{ + return tud_hid_mouse_data(buttons, 0, 0, 0, 0); +} + +static inline bool tud_hid_mouse_button_release(void) +{ + return tud_hid_mouse_data(0, 0, 0, 0, 0); +} /*------------- Callbacks -------------*/