controllers.cpp 1016 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "controllers.h"
  2. #include "config.h"
  3. #include "puck_hid.h"
  4. #include "mode_xinput.h"
  5. #include "mode_switch_hori.h"
  6. #include "mode_switch_pro.h"
  7. #include "mode_ps5.h"
  8. #include "mode_hidgyro.h"
  9. IController *g_active = nullptr;
  10. // Map a USB-presentation mode to its singleton controller. Steam and Lizard share the puck controller (the
  11. // lizard-vs-forward decision is made per-report inside it).
  12. IController *controllerFor(uint8_t mode)
  13. {
  14. switch (mode) {
  15. case MODE_STEAM:
  16. return &g_steamPuck;
  17. case MODE_LIZARD:
  18. return &g_steamPuck;
  19. case MODE_XBOX:
  20. return &g_xboxCtl;
  21. case MODE_SW_HORI:
  22. return &g_switchHori;
  23. case MODE_SW_PRO:
  24. return &g_switchPro;
  25. case MODE_PS5:
  26. return &g_ps5Ctl;
  27. case MODE_HIDGYRO:
  28. return &g_hidGyroCtl;
  29. case MODE_PS5_GAME:
  30. // same DualSense controller; setup() drops wake/WebUSB for clean enum
  31. return &g_ps5Ctl;
  32. case MODE_DS4_GAME:
  33. // same DS4 controller; setup() drops wake/WebUSB for clean enum
  34. return &g_hidGyroCtl;
  35. default:
  36. return &g_steamPuck;
  37. }
  38. }