Ok, finally have some time to sit down and explain the state of stuff.
So, first off, the ET-312. We're releasing v0.2 of the C# libraries, and something like v0.5 of the JS libraries, tomorrow. In the C# library, there will be support for controlling intensity of the ET-312 signal as a ramp. There's not even a specific command for it, they're just piggybacking on the Fleshlight Launch commands. There's a couple of reasons for this:
- The implementor mostly wanted it working with movie sync
- We haven't really fleshed out how much ET-312 API surface area we want
That second part is REALLY difficult with the ET-312, since it only has 2 commands: peek and poke. Other than that, you've pretty much got access to all of the RAM, which could be fairly dangerous in hands you don't trust. That's why it's such a slim feature set for right now.
I haven't had time to port this to JS yet, so unfortunately I don't have a good example of how it'd look there for you. If you're considering taking a shot at it, first check out the Buttplug Spec, at https://metafetish.github.io/buttplug, which at least has some explanation of our protocol. The Developer Guide at https://metafetish.github.io/buttplug-developer-guide would also be worth a look, but it's very half-finished. I'm happy to answer any questions after that.
I haven't actually tried a 2B yet. Never been able to get my hands on one, and estim has been low priority while we get the base system working. If you're gonna try putting in 2B support, you'll want to implement your own DeviceSubtypeManager and have it connect to the 2B, then hand back a device that derives from IButtplugDevice and fills in all of the interface functions. There's an example of this for the native Noble Bluetooth stuff at https://github.com/metafetish/buttplug-node-bluetoothle-manager, though that just fills in the required native bluetooth functions for the bluetooth devices that are already in the main library, so it's not a 1:1 match for your needs.
We've got ET-312/ET-232/2B protocol docs available at https://metafetish.github.io/stpihkal in case you need references.
Also: You're gonna need to be VERY careful about your choice of BLE radios. Cheap ones drop like crazy, and retry will still by slow as hell (like x100ms). I really dunno if I can recommend using bluetooth for wireless estim, but it's not like people listen to what I recommend anyways.