Skip to content

Commit

Permalink
[Core] ChibiOS fix O3 and LTO breakage of extra keys and joystick (qm…
Browse files Browse the repository at this point in the history
  • Loading branch information
KarlK90 authored and nhongooi committed Dec 5, 2021
1 parent 08d9550 commit 5b98655
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 35 deletions.
34 changes: 17 additions & 17 deletions tmk_core/protocol/chibios/usb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -903,7 +903,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {
return;
}

report_extra_t report = {.report_id = report_id, .usage = data};
static report_extra_t report;
report = (report_extra_t){.report_id = report_id, .usage = data};

usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)&report, sizeof(report_extra_t));
osalSysUnlock();
Expand Down Expand Up @@ -1051,45 +1052,44 @@ void virtser_task(void) {
#ifdef JOYSTICK_ENABLE

void send_joystick_packet(joystick_t *joystick) {
joystick_report_t rep = {
static joystick_report_t rep;
rep = (joystick_report_t) {
# if JOYSTICK_AXES_COUNT > 0
.axes =
{
joystick->axes[0],
{ joystick->axes[0],

# if JOYSTICK_AXES_COUNT >= 2
joystick->axes[1],
joystick->axes[1],
# endif
# if JOYSTICK_AXES_COUNT >= 3
joystick->axes[2],
joystick->axes[2],
# endif
# if JOYSTICK_AXES_COUNT >= 4
joystick->axes[3],
joystick->axes[3],
# endif
# if JOYSTICK_AXES_COUNT >= 5
joystick->axes[4],
joystick->axes[4],
# endif
# if JOYSTICK_AXES_COUNT >= 6
joystick->axes[5],
joystick->axes[5],
# endif
},
},
# endif // JOYSTICK_AXES_COUNT>0

# if JOYSTICK_BUTTON_COUNT > 0
.buttons =
{
joystick->buttons[0],
.buttons = {
joystick->buttons[0],

# if JOYSTICK_BUTTON_COUNT > 8
joystick->buttons[1],
joystick->buttons[1],
# endif
# if JOYSTICK_BUTTON_COUNT > 16
joystick->buttons[2],
joystick->buttons[2],
# endif
# if JOYSTICK_BUTTON_COUNT > 24
joystick->buttons[3],
joystick->buttons[3],
# endif
}
}
# endif // JOYSTICK_BUTTON_COUNT>0
};

Expand Down
34 changes: 17 additions & 17 deletions tmk_core/protocol/lufa/lufa.c
Original file line number Diff line number Diff line change
Expand Up @@ -314,45 +314,44 @@ static void Console_Task(void) {
void send_joystick_packet(joystick_t *joystick) {
uint8_t timeout = 255;

joystick_report_t r = {
static joystick_report_t;
r = (joystick_report_t) {
# if JOYSTICK_AXES_COUNT > 0
.axes =
{
joystick->axes[0],
{ joystick->axes[0],

# if JOYSTICK_AXES_COUNT >= 2
joystick->axes[1],
joystick->axes[1],
# endif
# if JOYSTICK_AXES_COUNT >= 3
joystick->axes[2],
joystick->axes[2],
# endif
# if JOYSTICK_AXES_COUNT >= 4
joystick->axes[3],
joystick->axes[3],
# endif
# if JOYSTICK_AXES_COUNT >= 5
joystick->axes[4],
joystick->axes[4],
# endif
# if JOYSTICK_AXES_COUNT >= 6
joystick->axes[5],
joystick->axes[5],
# endif
},
},
# endif // JOYSTICK_AXES_COUNT>0

# if JOYSTICK_BUTTON_COUNT > 0
.buttons =
{
joystick->buttons[0],
.buttons = {
joystick->buttons[0],

# if JOYSTICK_BUTTON_COUNT > 8
joystick->buttons[1],
joystick->buttons[1],
# endif
# if JOYSTICK_BUTTON_COUNT > 16
joystick->buttons[2],
joystick->buttons[2],
# endif
# if JOYSTICK_BUTTON_COUNT > 24
joystick->buttons[3],
joystick->buttons[3],
# endif
}
}
# endif // JOYSTICK_BUTTON_COUNT>0
};

Expand Down Expand Up @@ -768,7 +767,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {

if (USB_DeviceState != DEVICE_STATE_Configured) return;

report_extra_t r = {.report_id = report_id, .usage = data};
static report_extra_t r;
r = (report_extra_t){.report_id = report_id, .usage = data};
Endpoint_SelectEndpoint(SHARED_IN_EPNUM);

/* Check if write ready for a polling interval around 10ms */
Expand Down
3 changes: 2 additions & 1 deletion tmk_core/protocol/vusb/vusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {
last_id = report_id;
last_data = data;

report_extra_t report = {.report_id = report_id, .usage = data};
static report_extra_t report;
report = (report_extra_t){.report_id = report_id, .usage = data};
if (usbInterruptIsReadyShared()) {
usbSetInterruptShared((void *)&report, sizeof(report_extra_t));
}
Expand Down

0 comments on commit 5b98655

Please sign in to comment.