Skip to content

Some API and project structure refactoring #8

@dogtopus

Description

@dogtopus
  • 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    apiAPI related

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions