Skip to content

Commit

Permalink
Fix for report ids
Browse files Browse the repository at this point in the history
  • Loading branch information
Cutch committed Jul 7, 2022
1 parent 08d6707 commit 6ebe6e4
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions firmware/targets/f7/furi_hal/furi_hal_bt_hid.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,17 @@
#define FURI_HAL_BT_HID_KB_MAX_KEYS 6
#define FURI_HAL_BT_HID_CONSUMER_MAX_KEYS 1

// Report ids cant be 0
enum HidReportId {
ReportIdKeyboard = 1,
ReportIdMouse = 2,
ReportIdConsumer = 3,
};
// Report numbers corresponded to the report id with an offset of 1
enum HidInputNumber {
ReportIdKeyboard = 0, // Maps to report id 1
ReportIdMouse = 1, // Maps to report id 2
ReportIdConsumer = 2, // Maps to report id 3
ReportNumberKeyboard = 0,
ReportNumberMouse = 1,
ReportNumberConsumer = 2,
};

typedef struct {
Expand Down Expand Up @@ -181,7 +188,7 @@ bool furi_hal_bt_hid_kb_press(uint16_t button) {
}
kb_report->mods |= (button >> 8);
return hid_svc_update_input_report(
ReportIdKeyboard, (uint8_t*)kb_report, sizeof(FuriHalBtHidKbReport));
ReportNumberKeyboard, (uint8_t*)kb_report, sizeof(FuriHalBtHidKbReport));
}

bool furi_hal_bt_hid_kb_release(uint16_t button) {
Expand All @@ -194,7 +201,7 @@ bool furi_hal_bt_hid_kb_release(uint16_t button) {
}
kb_report->mods &= ~(button >> 8);
return hid_svc_update_input_report(
ReportIdKeyboard, (uint8_t*)kb_report, sizeof(FuriHalBtHidKbReport));
ReportNumberKeyboard, (uint8_t*)kb_report, sizeof(FuriHalBtHidKbReport));
}

bool furi_hal_bt_hid_kb_release_all() {
Expand All @@ -204,7 +211,7 @@ bool furi_hal_bt_hid_kb_release_all() {
}
kb_report->mods = 0;
return hid_svc_update_input_report(
ReportIdKeyboard, (uint8_t*)kb_report, sizeof(FuriHalBtHidKbReport));
ReportNumberKeyboard, (uint8_t*)kb_report, sizeof(FuriHalBtHidKbReport));
}

bool furi_hal_bt_hid_consumer_key_press(uint16_t button) {
Expand All @@ -216,7 +223,7 @@ bool furi_hal_bt_hid_consumer_key_press(uint16_t button) {
}
}
return hid_svc_update_input_report(
ReportIdConsumer, (uint8_t*)consumer_report, sizeof(FuriHalBtHidConsumerReport));
ReportNumberConsumer, (uint8_t*)consumer_report, sizeof(FuriHalBtHidConsumerReport));
}

bool furi_hal_bt_hid_consumer_key_release(uint16_t button) {
Expand All @@ -228,7 +235,7 @@ bool furi_hal_bt_hid_consumer_key_release(uint16_t button) {
}
}
return hid_svc_update_input_report(
ReportIdConsumer, (uint8_t*)consumer_report, sizeof(FuriHalBtHidConsumerReport));
ReportNumberConsumer, (uint8_t*)consumer_report, sizeof(FuriHalBtHidConsumerReport));
}

bool furi_hal_bt_hid_consumer_key_release_all() {
Expand All @@ -237,15 +244,15 @@ bool furi_hal_bt_hid_consumer_key_release_all() {
consumer_report->key[i] = 0;
}
return hid_svc_update_input_report(
ReportIdConsumer, (uint8_t*)consumer_report, sizeof(FuriHalBtHidConsumerReport));
ReportNumberConsumer, (uint8_t*)consumer_report, sizeof(FuriHalBtHidConsumerReport));
}

bool furi_hal_bt_hid_mouse_move(int8_t dx, int8_t dy) {
furi_assert(mouse_report);
mouse_report->x = dx;
mouse_report->y = dy;
bool state = hid_svc_update_input_report(
ReportIdMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
ReportNumberMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
mouse_report->x = 0;
mouse_report->y = 0;
return state;
Expand All @@ -255,28 +262,28 @@ bool furi_hal_bt_hid_mouse_press(uint8_t button) {
furi_assert(mouse_report);
mouse_report->btn |= button;
return hid_svc_update_input_report(
ReportIdMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
ReportNumberMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
}

bool furi_hal_bt_hid_mouse_release(uint8_t button) {
furi_assert(mouse_report);
mouse_report->btn &= ~button;
return hid_svc_update_input_report(
ReportIdMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
ReportNumberMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
}

bool furi_hal_bt_hid_mouse_release_all() {
furi_assert(mouse_report);
mouse_report->btn = 0;
return hid_svc_update_input_report(
ReportIdMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
ReportNumberMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
}

bool furi_hal_bt_hid_mouse_scroll(int8_t delta) {
furi_assert(mouse_report);
mouse_report->wheel = delta;
bool state = hid_svc_update_input_report(
ReportIdMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
ReportNumberMouse, (uint8_t*)mouse_report, sizeof(FuriHalBtHidMouseReport));
mouse_report->wheel = 0;
return state;
}

0 comments on commit 6ebe6e4

Please sign in to comment.