From f3e010ecfd3b20cb114ae17717df5b9bf78b4ac5 Mon Sep 17 00:00:00 2001 From: whowechina Date: Fri, 14 Feb 2025 15:47:54 +0800 Subject: [PATCH] Better HID reporting --- Production/Firmware/diva_pico.uf2 | Bin 110592 -> 110592 bytes firmware/src/main.c | 20 ++++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Production/Firmware/diva_pico.uf2 b/Production/Firmware/diva_pico.uf2 index e02db9a57c9c3d2bf5b626499952e6d80ebe6db3..ade20713dc536617c78c8c4f2d8c864d0aa08c6e 100644 GIT binary patch delta 9389 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.joy) { - tud_hid_n_report(0x00, 0, &hid_joy, sizeof(hid_joy)); + if (diva_cfg->hid.joy && + (memcmp(&hid_joy, &sent_hid_joy, sizeof(hid_joy)) != 0)) { + if (tud_hid_report(0, &hid_joy, sizeof(hid_joy))) { + sent_hid_joy = hid_joy; + } } if (diva_cfg->hid.nkro && (memcmp(&hid_nkro, &sent_hid_nkro, sizeof(hid_nkro)) != 0)) { - sent_hid_nkro = hid_nkro; - tud_hid_n_report(0x02, 0, &sent_hid_nkro, sizeof(sent_hid_nkro)); + if (tud_hid_n_report(0x02, 0, &hid_nkro, sizeof(hid_nkro))) { + sent_hid_nkro = hid_nkro; + } } } } @@ -152,6 +156,8 @@ static void core1_loop() static void core0_loop() { + uint64_t next_frame = time_us_64(); + while(1) { tud_task(); @@ -166,7 +172,9 @@ static void core0_loop() gen_joy_report(); gen_nkro_report(); report_usb_hid(); - sleep_us(600); + + next_frame += 1000; + sleep_until(next_frame); } }