-
-
Notifications
You must be signed in to change notification settings - Fork 18
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
Step Range / Step Limit Confusion #172
Comments
I think we do what you want already, and I'm not sure where your understanding of the system came from, so I'll run through the design real quick here (with the cavaet that I am jetlagged af right now, so if this comes out weird or confusing or sounds wrong, just lemme know). The way things should work at the moment is:
Let's say you want to set a Lovense device to only have a vibration speed range between 6-10 (we also always keep 0 to mean "stop"). You'd set When Buttplug starts up, it loads the base config database, which just has all of our default definitions in it. Then it loads the user config file, which has extra definitions keyed on device name/identifier/address triplets. When you connect your Lovense device that you've made the The client sets actuation values (i.e. ScalarCmd in this case) on a basis of 0.0-1.0 currently (this is slated to change in our next API version to just actually be an integer, using floats was overkill), but within the 0.0-1.0 range we'll only really have 6 set points (0 - 0, 0.2 - 6, 0.4 - 7, 0.6 - 8, 0.8 - 9, 1.0 - 10), with all values in between ceiling()'d to round up to the next valid step, so someone setting 0.01 actually goes to 0.2. The complexity here is due to a combination of this design being built somewhat on the fly over the past versions of the protocol, as well as striving to only send required minimum info to the client. If the system isn't working this way, then its a bug, though I think we have tests for this down at the buttplug level. |
Thanks for the detailed explanation (and for battling your jetlag -- good recovery!) That clears things up a bit, and is also how I expected the system to work. We might have a bug at hand here, though, since I'm not seeing that effect with my device(s). (I've only tested a Lovense device so far, but I'll give my other devices a try, too.) My (admittedly wobbly) understanding comes from skimming through the source code. More precisely:
* This is my first time looking into the server code, so chances are I'm missing something. |
Ok this definitely could be a bug. I'll see about taking a look this week, as well as checking our test coverage to see if my claim about having tests for this is true (it may very well have been missed). And yeah, v4 removes a LOT of this complexity and I can't wait to get it out into the world, just gotta find time to finish it up. :| |
Problem
The step limit range slider is very confusing and possibly useless as of right now.
In my understanding, this is how the system currently works:
step_limit
controls the step count reported to clients, but they are free to honor or ignore it.step_range
controls the actual scaling of the scalar values, i.e.[0.0..1.0]
is mapped to[step_range.0..step_range.1]
.As it stands now, Intiface Central only sets
step_limit
and usesstep_range
to keep track of the absolute min / max values of the respective actuator....Meaning that the setting is pretty much useless, and may well be the cause of ... unpleasant surprises in the nether regions, when people think they'd turned their super strong device down a notch, only to be buzzed into oblivion.
Possible Solutions
If my understanding is indeed correct:
step_range
instead ofstep_limit
. (Although that would be kind of tricky to do in a backward compatible way.)However, this would require that the min / max values are tracked elsewhere. Either in an Intiface-only config, or by fetching the base values from the Device Configuration Manager (although there are not getters yet, and I don't know if there should be.)
The text was updated successfully, but these errors were encountered: