summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2024-07-13 10:11:49 +0800
committersakumisu <[email protected]>2024-07-13 10:13:37 +0800
commit218fa8e85dbd9aa4737c28e5cf468545d75b46d1 (patch)
tree5b5dfde771bae474ece1cec8750ffa3e8ab5297a
parenteb147d72769952fa53e9184027fd575fabdfb718 (diff)
update(demo/hid_mouse_template): draw circle to test report rate
-rw-r--r--demo/hid_mouse_template.c61
1 files 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;