Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Buttplug Protocol Spec v4 Update #565

Open
2 of 9 tasks
qdot opened this issue Jun 30, 2023 · 1 comment
Open
2 of 9 tasks

Buttplug Protocol Spec v4 Update #565

qdot opened this issue Jun 30, 2023 · 1 comment
Assignees
Labels
Features New things to add to the project Library - Client Tasks/Bugs pertaining to the client portion of the library Library - Core Tasks/Bugs pertaining to the core portion of the library

Comments

@qdot
Copy link
Member

qdot commented Jun 30, 2023

Buttplug v4 is mainly a refinement of device enumeration from the server to the client, in order to make device information clearer to client developers, and allows them to write simpler and more expressive APIs on top of the protocol.

TODO List:

  • Update spec documentation
  • Convert DeviceAdded/DeviceList to use Actuators/Sensors instead of message attributes
  • Update device configuration to use Actuator/Sensor info instead of message attributes
  • Update device configuration loading
  • Update device enumeration code to create v4 structures
  • Update backward compatibility for v4 -> v3
  • Add client v3 tests
  • Add client v4 tests
  • Remove ActuatorType requirements from ScalarCmd
@qdot qdot added Library - Client Tasks/Bugs pertaining to the client portion of the library Library - Core Tasks/Bugs pertaining to the core portion of the library Features New things to add to the project labels Jun 30, 2023
@qdot qdot self-assigned this Jun 30, 2023
@qdot
Copy link
Member Author

qdot commented Apr 11, 2024

Ok, I'll consider the config v2 -> v3 work part of this bug, so can put some discussion here. I don't want to fill up the config discussion with project formatting issues.

@blackspherefollower If you're curious what the new config looks like, check the config-rewrite-minimal branch. I've made separate directories for v2 and v3 config for now, we'll remove v2 once v3 is solidified.

Inheritance still exists in the config, but at the "top" level. Name, description, and features can be overridden, but this time it's an all or nothing thing. v2 allowed overriding per-message, where now if any features change in a specific configuration, all features (even those in the default) must be added to the configuration. The inheritance system has also been completely removed from the configuration code which makes life WAY easier (and all devices are expanded to their full definitions when we load the file). I think simplify things over all.

I wrote a script to convert the v2 yaml to v3, basically filling in all of the missing inheritance values. This seems to have worked, inasmuch as protocol tests pass. That said, it did blow away all of the comments in the v2 file when moving to v3. How much of those do we want to keep around?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Features New things to add to the project Library - Client Tasks/Bugs pertaining to the client portion of the library Library - Core Tasks/Bugs pertaining to the core portion of the library
Projects
None yet
Development

No branches or pull requests

1 participant