[x] Make auth-related stuff controller specific since they are rarely reused due to the 3 big companies does things a lot differently (PS4: RSA-2048 based authentication, Xbox: (in house?) challenge-response, Switch: None)
[ ] Convert some of the Transport CRTP mixins back to object-based
[ ] One more layer of HID transport abstraction. Moving platform/link dependent Transport classes away from core code (e.g. rds4::platform) and base HID transport to rds4::api so e.g PS3/pokken controller can use the same HID transport as PS4. New transports like XInput should follow the same pattern. (Refer to USBHID spec, TinyUSB and libusbgx for roughly what to expect.)
[ ] Feature callbacks
[ ] Get/set HID features/descriptor
[ ] Endpoint TX
[ ] Endpoint RX
[ ] (Somewhat redundant but more elaborated than above) Change the transport to be more callback-based ("EndpointResponder"?)
[ ] Move unrelated handling code (e.g. feature management, auth handling, etc.) to Controller/separate class maybe as a callback (like onReport(report_type, report_id) then read out the actual payload via recv()). This will be an object-based callback rather than functional.
rds4::platform
) and base HID transport tords4::api
so e.g PS3/pokken controller can use the same HID transport as PS4. New transports like XInput should follow the same pattern. (Refer to USBHID spec, TinyUSB and libusbgx for roughly what to expect.)EndpointResponder
"?)onReport(report_type, report_id)
then read out the actual payload viarecv()
). This will be an object-based callback rather than functional.