Skip to content
This repository was archived by the owner on Dec 14, 2025. It is now read-only.

Commit 4beea29

Browse files
committed
[BT] Make rumble more responsive
1 parent 33b80dc commit 4beea29

File tree

20 files changed

+78
-51
lines changed

20 files changed

+78
-51
lines changed

main/adapter/adapter.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019-2024, Jacques Gagnon
2+
* Copyright (c) 2019-2025, Jacques Gagnon
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

@@ -471,17 +471,14 @@ void adapter_fb_stop_timer_stop(uint8_t dev_id) {
471471
}
472472
}
473473

474-
uint32_t adapter_bridge_fb(struct raw_fb *fb_data, struct bt_data *bt_data) {
475-
uint32_t ret = 0;
474+
bool adapter_bridge_fb(struct raw_fb *fb_data, struct bt_data *bt_data) {
475+
bool ret = false;
476476

477477
if (wired_adapter.system_id != WIRED_AUTO && bt_data && bt_data->base.pids) {
478478
wired_fb_to_generic(config.out_cfg[bt_data->base.pids->id].dev_mode, fb_data, &fb_input);
479479

480480
if (bt_data->base.pids->type != BT_NONE) {
481-
wireless_fb_from_generic(&fb_input, bt_data);
482-
if (fb_data->header.type == FB_TYPE_RUMBLE) {
483-
ret = fb_input.state;
484-
}
481+
ret = wireless_fb_from_generic(&fb_input, bt_data);
485482
}
486483
}
487484
return ret;

main/adapter/adapter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ struct bt_adapter {
570570
typedef int32_t (*to_generic_t)(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data);
571571
typedef void (*from_generic_t)(int32_t dev_mode, struct wired_ctrl *ctrl_data, struct wired_data *wired_data);
572572
typedef void (*fb_to_generic_t)(int32_t dev_mode, struct raw_fb *raw_fb_data, struct generic_fb *fb_data);
573-
typedef void (*fb_from_generic_t)(struct generic_fb *fb_data, struct bt_data *bt_data);
573+
typedef bool (*fb_from_generic_t)(struct generic_fb *fb_data, struct bt_data *bt_data);
574574
typedef void (*meta_init_t)(struct wired_ctrl *ctrl_data);
575575
typedef void (*buffer_init_t)(int32_t dev_mode, struct wired_data *wired_data);
576576

@@ -589,7 +589,7 @@ void adapter_init_buffer(uint8_t wired_id);
589589
void adapter_bridge(struct bt_data *bt_data);
590590
void adapter_fb_stop_timer_start(uint8_t dev_id, uint64_t dur_us);
591591
void adapter_fb_stop_timer_stop(uint8_t dev_id);
592-
uint32_t adapter_bridge_fb(struct raw_fb *fb_data, struct bt_data *bt_data);
592+
bool adapter_bridge_fb(struct raw_fb *fb_data, struct bt_data *bt_data);
593593
void adapter_q_fb(struct raw_fb *fb_data);
594594
void adapter_toggle_fb(uint32_t wired_id, uint32_t duration_us, uint8_t lf_pwr, uint8_t hf_pwr);
595595
void adapter_init(void);

main/adapter/wireless/hid_generic.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,8 @@ int32_t hid_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data)
779779
return 0;
780780
}
781781

782-
void hid_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
782+
bool hid_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
783+
bool ret = true;
783784

784785
switch (fb_data->type) {
785786
case FB_TYPE_RUMBLE:
@@ -899,5 +900,6 @@ void hid_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
899900
}
900901
break;
901902
}
903+
return ret;
902904
}
903905

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019-2020, Jacques Gagnon
2+
* Copyright (c) 2019-2025, Jacques Gagnon
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

@@ -8,6 +8,6 @@
88
#include "adapter/adapter.h"
99

1010
int32_t hid_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data);
11-
void hid_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
11+
bool hid_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
1212

1313
#endif /* _HID_GENERIC_H_ */

main/adapter/wireless/ps.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,8 @@ int32_t ps_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data)
282282
return 0;
283283
}
284284

285-
void ps_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
285+
bool ps_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
286+
bool ret = true;
286287
switch (bt_data->base.pids->subtype) {
287288
case BT_PS5_DS:
288289
ps5_fb_from_generic(fb_data, bt_data);
@@ -291,4 +292,5 @@ void ps_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
291292
ps4_fb_from_generic(fb_data, bt_data);
292293
break;
293294
}
295+
return ret;
294296
}

main/adapter/wireless/ps.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019-2020, Jacques Gagnon
2+
* Copyright (c) 2019-2025, Jacques Gagnon
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

@@ -8,6 +8,6 @@
88
#include "adapter/adapter.h"
99

1010
int32_t ps_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data);
11-
void ps_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
11+
bool ps_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
1212

1313
#endif /* _SRC_PS_H_ */

main/adapter/wireless/ps3.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,9 @@ int32_t ps3_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data)
136136
return 0;
137137
}
138138

139-
void ps3_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
139+
bool ps3_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
140140
struct bt_hidp_ps3_set_conf *set_conf = (struct bt_hidp_ps3_set_conf *)bt_data->base.output;
141+
bool ret = true;
141142

142143
switch (fb_data->type) {
143144
case FB_TYPE_RUMBLE:
@@ -162,4 +163,5 @@ void ps3_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
162163
set_conf->leds = (led_dev_id_map[bt_data->base.pids->out_idx] << 1);
163164
break;
164165
}
166+
return ret;
165167
}

main/adapter/wireless/ps3.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019-2020, Jacques Gagnon
2+
* Copyright (c) 2019-2025, Jacques Gagnon
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

@@ -8,6 +8,6 @@
88
#include "adapter/adapter.h"
99

1010
int32_t ps3_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data);
11-
void ps3_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
11+
bool ps3_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
1212

1313
#endif /* _PS3_H_ */

main/adapter/wireless/sw.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,8 +511,9 @@ int32_t sw_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data)
511511
return -1;
512512
}
513513

514-
void sw_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
514+
bool sw_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
515515
struct bt_hidp_sw_conf *set_conf = (struct bt_hidp_sw_conf *)bt_data->base.output;
516+
bool ret = true;
516517
/* 8bitdo wont rumble w/ set_conf so we need keep track of fb_type somehow */
517518
bt_data->base.output[127] = fb_data->type;
518519

@@ -540,5 +541,6 @@ void sw_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data) {
540541
set_conf->subcmd_data[0] = led_dev_id_map[bt_data->base.pids->out_idx];
541542
break;
542543
}
544+
return ret;
543545
}
544546

main/adapter/wireless/sw.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019-2020, Jacques Gagnon
2+
* Copyright (c) 2019-2025, Jacques Gagnon
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

@@ -8,6 +8,6 @@
88
#include "adapter/adapter.h"
99

1010
int32_t sw_to_generic(struct bt_data *bt_data, struct wireless_ctrl *ctrl_data);
11-
void sw_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
11+
bool sw_fb_from_generic(struct generic_fb *fb_data, struct bt_data *bt_data);
1212

1313
#endif /* _SW_H_ */

0 commit comments

Comments
 (0)