summaryrefslogtreecommitdiff
path: root/examples/device
diff options
context:
space:
mode:
authorHiFiPhile <[email protected]>2025-10-05 18:58:16 +0200
committerHiFiPhile <[email protected]>2025-10-05 19:09:44 +0200
commitafdfb0895f33fd74e81f298e40205b3c521e900b (patch)
treeafba0f99a02a90fdc9c1304c49bcde9fd5832b30 /examples/device
parent6ce46da042eb9ab243e4127ddcac57519c0a226f (diff)
Fix HIS stylus descriptor and hid_composite example
Signed-off-by: HiFiPhile <[email protected]>
Diffstat (limited to 'examples/device')
-rw-r--r--examples/device/hid_composite/src/main.c61
1 files changed, 21 insertions, 40 deletions
diff --git a/examples/device/hid_composite/src/main.c b/examples/device/hid_composite/src/main.c
index fa02a1abe..89dab0bdc 100644
--- a/examples/device/hid_composite/src/main.c
+++ b/examples/device/hid_composite/src/main.c
@@ -195,41 +195,30 @@ static void send_hid_report(uint8_t report_id, uint32_t btn)
}
}
break;
- default: break;
- }
-}
-
-/* use this to send stylus touch signal through USB. */
-static void send_stylus_touch(uint16_t x, uint16_t y, bool state)
-{
- // skip if hid is not ready yet
- if ( !tud_hid_ready() ) return;
-
- static bool has_stylus_pen = false;
-
- hid_stylus_report_t report =
- {
- .attr = 0,
- .x = 0,
- .y = 0
- };
-
- report.x = x;
- report.y = y;
- if (state)
- {
- report.attr = STYLUS_ATTR_TIP_SWITCH | STYLUS_ATTR_IN_RANGE;
- tud_hid_report(REPORT_ID_STYLUS_PEN, &report, sizeof(report));
+ case REPORT_ID_STYLUS_PEN: {
+ static bool touch_state = false;
+ hid_stylus_report_t report = {
+ .attr = 0,
+ .x = 0,
+ .y = 0
+ };
- has_stylus_pen = true;
- }else
- {
- report.attr = 0;
- if (has_stylus_pen) tud_hid_report(REPORT_ID_STYLUS_PEN, &report, sizeof(report));
- has_stylus_pen = false;
+ if (btn) {
+ report.attr = STYLUS_ATTR_TIP_SWITCH | STYLUS_ATTR_IN_RANGE;
+ report.x = 100;
+ report.y = 100;
+ tud_hid_report(REPORT_ID_STYLUS_PEN, &report, sizeof(report));
+ touch_state = true;
+ } else {
+ report.attr = 0;
+ if (touch_state) tud_hid_report(REPORT_ID_STYLUS_PEN, &report, sizeof(report));
+ touch_state = false;
+ }
+ }
+ break;
+ default: break;
}
-
}
// Every 10ms, we will sent 1 report for each HID profile (keyboard, mouse etc ..)
@@ -239,14 +228,6 @@ void hid_task(void)
// Poll every 10ms
const uint32_t interval_ms = 10;
static uint32_t start_ms = 0;
- static uint32_t touch_ms = 0;
- static bool touch_state = false;
-
- if (board_millis() - touch_ms < 100) {
- touch_ms = board_millis();
- send_stylus_touch(0, 0, touch_state = !touch_state);
- return;
- }
if ( board_millis() - start_ms < interval_ms) return; // not enough time
start_ms += interval_ms;