summaryrefslogtreecommitdiff
path: root/src/endpoints.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/endpoints.c')
-rw-r--r--src/endpoints.c58
1 files changed, 44 insertions, 14 deletions
diff --git a/src/endpoints.c b/src/endpoints.c
index 1f2c94d..f46d42d 100644
--- a/src/endpoints.c
+++ b/src/endpoints.c
@@ -35,41 +35,71 @@ int zmk_endpoints_init()
return 0;
}
-int zmk_endpoints_send_report()
+int zmk_endpoints_send_report(enum zmk_hid_report_changes report_type)
{
int err;
- struct zmk_hid_report *report = zmk_hid_get_report();
+ struct zmk_hid_keypad_report *keypad_report;
+ struct zmk_hid_consumer_report *consumer_report;
+ switch (report_type)
+ {
+ case Keypad:
+ keypad_report = zmk_hid_get_keypad_report();
+#ifdef CONFIG_ZMK_USB
+ if (zmk_usb_hid_send_report((u8_t *)keypad_report, sizeof(struct zmk_hid_keypad_report)) != 0)
+ {
+ LOG_DBG("USB Send Failed");
+ }
+#endif /* CONFIG_ZMK_USB */
+#ifdef CONFIG_ZMK_BLE
+ err = zmk_hog_send_keypad_report(&keypad_report->body);
+ if (err)
+ {
+ LOG_ERR("FAILED TO SEND OVER HOG: %d", err);
+ }
+#endif /* CONFIG_ZMK_BLE */
+
+ break;
+ case Consumer:
+ consumer_report = zmk_hid_get_consumer_report();
#ifdef CONFIG_ZMK_USB
- if (zmk_usb_hid_send_report(report) != 0)
- {
- LOG_DBG("USB Send Failed");
- }
+ if (zmk_usb_hid_send_report((u8_t *)consumer_report, sizeof(struct zmk_hid_consumer_report)) != 0)
+ {
+ LOG_DBG("USB Send Failed");
+ }
#endif /* CONFIG_ZMK_USB */
#ifdef CONFIG_ZMK_BLE
- err = zmk_hog_send_report(report);
- if (err)
- {
- LOG_ERR("FAILED TO SEND OVER HOG: %d", err);
- }
+ err = zmk_hog_send_consumer_report(&consumer_report->body);
+ if (err)
+ {
+ LOG_ERR("FAILED TO SEND OVER HOG: %d", err);
+ }
#endif /* CONFIG_ZMK_BLE */
+ break;
+ default:
+ LOG_ERR("Unknown report change type %d", report_type);
+ return -EINVAL;
+ }
+
return 0;
}
int zmk_endpoints_send_key_event(struct zmk_key_event key_event)
{
+ enum zmk_hid_report_changes changes;
+
LOG_DBG("key %d, state %d\n", key_event.key, key_event.pressed);
if (key_event.pressed)
{
- zmk_hid_press_key(key_event.key);
+ changes = zmk_hid_press_key(key_event.key);
}
else
{
- zmk_hid_release_key(key_event.key);
+ changes = zmk_hid_release_key(key_event.key);
}
- return zmk_endpoints_send_report();
+ return zmk_endpoints_send_report(changes);
}