From 218fa8e85dbd9aa4737c28e5cf468545d75b46d1 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Sat, 13 Jul 2024 10:11:49 +0800 Subject: [PATCH] update(demo/hid_mouse_template): draw circle to test report rate --- demo/hid_mouse_template.c | 61 ++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/demo/hid_mouse_template.c b/demo/hid_mouse_template.c index d335601b..e605592f 100644 --- a/demo/hid_mouse_template.c +++ b/demo/hid_mouse_template.c @@ -9,7 +9,7 @@ /*!< endpoint address */ #define HID_INT_EP 0x81 #define HID_INT_EP_SIZE 4 -#define HID_INT_EP_INTERVAL 10 +#define HID_INT_EP_INTERVAL 1 #define USBD_VID 0xffff #define USBD_PID 0xffff @@ -254,20 +254,59 @@ void hid_mouse_init(uint8_t busid, uint32_t reg_base) mouse_cfg.y = 0; } -/** - * @brief hid mouse test - * @pre none - * @param[in] none - * @retval none - */ +#define CURSOR_STEP 2U +#define CURSOR_WIDTH 20U + +void draw_circle(uint8_t *buf) +{ + static int32_t move_cnt = 0; + static uint8_t step_x_y = 0; + static int8_t x = 0, y = 0; + + move_cnt++; + if (move_cnt > CURSOR_WIDTH) { + step_x_y++; + step_x_y = step_x_y % 4; + move_cnt = 0; + } + switch (step_x_y) { + case 0: { + y = 0; + x = CURSOR_STEP; + + } break; + + case 1: { + x = 0; + y = CURSOR_STEP; + + } break; + + case 2: { + y = 0; + x = (int8_t)(-CURSOR_STEP); + + } break; + + case 3: { + x = 0; + y = (int8_t)(-CURSOR_STEP); + + } break; + } + + buf[0] = 0; + buf[1] = x; + buf[2] = y; + buf[3] = 0; +} + +/* https://cps-check.com/cn/polling-rate-check */ void hid_mouse_test(uint8_t busid) { int counter = 0; while (counter < 1000) { - /*!< move mouse pointer */ - mouse_cfg.x += 40; - mouse_cfg.y += 0; - + draw_circle((uint8_t *)&mouse_cfg); int ret = usbd_ep_start_write(busid, HID_INT_EP, (uint8_t *)&mouse_cfg, 4); if (ret < 0) { return;