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

Commit

Permalink
use singletons for HID objects
Browse files Browse the repository at this point in the history
Use singletons for the HID objects, so Kaleidoscope can force an ordering
for the interfaces, because some BIOSes/UEFIs require that the boot
keyboard be the first HID interface.

Signed-off-by: Taylor Yu <[email protected]>
  • Loading branch information
tlyu committed Jan 12, 2023
1 parent 8a98a1c commit 14bc4c4
Show file tree
Hide file tree
Showing 16 changed files with 40 additions and 16 deletions.
5 changes: 4 additions & 1 deletion src/BootKeyboard/BootKeyboard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -415,4 +415,7 @@ void BootKeyboard_::checkReset() {
}

__attribute__((weak))
BootKeyboard_ BootKeyboard;
BootKeyboard_& BootKeyboard() {
static BootKeyboard_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/BootKeyboard/BootKeyboard.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,4 @@ class BootKeyboard_ : public PluggableUSBModule {

uint8_t leds;
};
extern BootKeyboard_ BootKeyboard;
extern BootKeyboard_& BootKeyboard();
5 changes: 4 additions & 1 deletion src/MultiReport/AbsoluteMouse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,7 @@ void AbsoluteMouse_::sendReport(void* data, int length) {
HID().SendReport(HID_REPORTID_MOUSE_ABSOLUTE, data, length);
}

AbsoluteMouse_ AbsoluteMouse;
AbsoluteMouse_& AbsoluteMouse() {
static AbsoluteMouse_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/MultiReport/AbsoluteMouse.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ class AbsoluteMouse_ : public AbsoluteMouseAPI {
virtual void sendReport(void* data, int length);
};

extern AbsoluteMouse_ AbsoluteMouse;
extern AbsoluteMouse_& AbsoluteMouse();
5 changes: 4 additions & 1 deletion src/MultiReport/ConsumerControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,7 @@ void ConsumerControl_::sendReport() {
memcpy(&last_report_, &report_, sizeof(report_));
}

ConsumerControl_ ConsumerControl;
ConsumerControl_& ConsumerControl() {
static ConsumerControl_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/MultiReport/ConsumerControl.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,4 @@ class ConsumerControl_ {
private:
void sendReportUnchecked();
};
extern ConsumerControl_ ConsumerControl;
extern ConsumerControl_& ConsumerControl();
5 changes: 4 additions & 1 deletion src/MultiReport/Gamepad.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,4 +144,7 @@ void Gamepad_::sendReport(void* data, int length) {
HID().SendReport(HID_REPORTID_GAMEPAD, data, length);
}

Gamepad_ Gamepad;
Gamepad_& Gamepad() {
static Gamepad_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/MultiReport/Gamepad.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,4 @@ class Gamepad_ {
protected:
HID_GamepadReport_Data_t report_;
};
extern Gamepad_ Gamepad;
extern Gamepad_& Gamepad();
5 changes: 4 additions & 1 deletion src/MultiReport/Keyboard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -273,4 +273,7 @@ void Keyboard_::releaseAll() {
memset(&report_.allkeys, 0x00, sizeof(report_.allkeys));
}

Keyboard_ Keyboard;
Keyboard_& Keyboard() {
static Keyboard_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/MultiReport/Keyboard.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,4 @@ class Keyboard_ {

int sendReportUnchecked();
};
extern Keyboard_ Keyboard;
extern Keyboard_& Keyboard();
5 changes: 4 additions & 1 deletion src/MultiReport/Mouse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,7 @@ void Mouse_::sendReport() {
}
}

Mouse_ Mouse;
Mouse_& Mouse() {
static Mouse_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/MultiReport/Mouse.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,4 @@ class Mouse_ {
private:
void sendReportUnchecked();
};
extern Mouse_ Mouse;
extern Mouse_& Mouse();
5 changes: 4 additions & 1 deletion src/MultiReport/SystemControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,7 @@ void SystemControl_::sendReport(void* data, int length) {
HID().SendReport(HID_REPORTID_SYSTEMCONTROL, data, length);
}

SystemControl_ SystemControl;
SystemControl_& SystemControl() {
static SystemControl_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/MultiReport/SystemControl.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,4 @@ class SystemControl_ {



extern SystemControl_ SystemControl;
extern SystemControl_& SystemControl();
5 changes: 4 additions & 1 deletion src/SingleReport/SingleAbsoluteMouse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,7 @@ void SingleAbsoluteMouse_::sendReport(void* data, int length) {
HIDReportObserver::observeReport(HID_REPORTID_MOUSE_ABSOLUTE, data, length, result);
}

SingleAbsoluteMouse_ SingleAbsoluteMouse;
SingleAbsoluteMouse_& SingleAbsoluteMouse() {
static SingleAbsoluteMouse_ obj;
return obj;
};
2 changes: 1 addition & 1 deletion src/SingleReport/SingleAbsoluteMouse.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ class SingleAbsoluteMouse_ : public PluggableUSBModule, public AbsoluteMouseAPI

virtual inline void sendReport(void* data, int length) override;
};
extern SingleAbsoluteMouse_ SingleAbsoluteMouse;
extern SingleAbsoluteMouse_& SingleAbsoluteMouse();

0 comments on commit 14bc4c4

Please sign in to comment.