buttplugio / buttplug

Rust Implementation of the Buttplug Sex Toy Control Protocol
https://buttplug.io
Other
882 stars 64 forks source link

Vorze UFO: Option for speed control (continuous rotation) instead of position control #661

Open f86k opened 10 hours ago

f86k commented 10 hours ago

Feature Description

Currently, it seems like UFO devices are treated like servos with ~0-359 degree range (correct me if I'm wrong!) with RotateCmd driving the UFO to a specific angle within that 0-359 degree range.

My request is an option/toggle/(config file variant) with speed + direction control for continuous rotation (behaving similarly to a vibrator but with direction):

qdot commented 10 hours ago

Well, you're wrong on the first part, sorta half-right-but-not-really on the second. That said, I do see what you mean.

RotateCmd is just speed + direction (clockwise or counter clockwise). Vorze UFO only supports speed + direction, not angle.

We also have a "ScalarCmd" that's basically made for devices that just take a speed, but I'm not sure if we've extended that to the UFO or not yet. The other problem is that ScalarCmd requires developers to denote which actuation method they're using, and most of them only ever implement Vibrate, not Rotate (in the Scalar context), even though they basically do the same thing. It's an issue of understanding API context that I'm mulling over how best to handle right now.

The plan was and maybe still is to have a filter/scripting layer that could alter messages based on user needs (so you could, for instance, say "take a vibrate message and turn it into rotate" without having to file bugs here), but that gets complicated very quickly since it also requires defining new simulated devices and all.