feat: Add F-Machine protocol for Gigolo BT-R#835
Conversation
…ing to zero stops machine immediatly while speed is still bought down in the background.
|
This is a really complicated protocol, and I need to get a new version of Intiface out ASAP, so this'll probably come in version after next. |
That's completely fine. I'd rather you have time to review the submission. I've tested it but I don't know if I've followed this libraries best practices etc. |
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| Complexity | 2 medium |
🟢 Metrics 26 complexity · 1 duplication
Metric Results Complexity 26 Duplication 1
TIP This summary will be updated as you push new changes. Give us feedback
|
Ignore the codacy bot, not sure how that got added. |
|
I know you're busy so this isn't a chase up, instead it's to say whenever someone has time to review, or if they have any questions feel free to tag me, I will check the status of this from time to time. |
|
OK, so testing with the Tremblr, the oscillation works. Unfortunately, when BLE is connected it ignores the remote, so you can't control the pressure in the system. I'm not sure there's a great solution for that. |
I remember talk at one time of one off action cmds, did anything get implemented in the protocol for those? On the alpha the secondary function controls depth, has a min and max level and appears linear (but is controlled via the hold and release commands to switch on an adjustment motor), not ideal but timing could be worked out to provide steps for that machine. They would then work for the tremblr but would be less predictable. |
|
In terms of instant commands, we now have "spray", for lube squirters, etc. Not the best mapping for pressure up/down. I'm tempted to let this through (pending code review) and I'll just mark it as an issue in IoSTIndex |
blackspherefollower
left a comment
There was a problem hiding this comment.
There's only a few minor nits, the worst being that async_manager was replaced
| let current_speed_clone = current_speed.clone(); | ||
| let target_speed_clone = target_speed.clone(); | ||
|
|
||
| async_manager::spawn(async move { |
There was a problem hiding this comment.
async_manager::spawn( need to change to buttplug_core::spawn!(
| .await | ||
| .is_err() | ||
| { | ||
| info!("F-Machine on/off command error, most likely due to device disconnection."); |
There was a problem hiding this comment.
maybe a warn!?
| - 28 | ||
| index: 0 | ||
| id: 5bef333e-15a5-4278-bf70-4df237f3a147 | ||
| configurations: |
There was a problem hiding this comment.
Lets stick the Tremblr name in here: FM-T
Here is the F-Machine protocol implementation for the F-Machine Gigolo BT-R.
The same protocol is also used for the Tremblr BT-R and Alpha, however, they also have secondary functions for which there might not be good cmd mappings.
I have only added device config for the Gigolo at this time as all it's features are covered by this implementation.
Please let me know if there is anything you'd like me to change or anything extra that I need to include as part of this PR.