Skip to content

feat: Add F-Machine protocol for Gigolo BT-R#835

Open
penaltybush wants to merge 10 commits into
buttplugio:devfrom
penaltybush:feature/fmachine
Open

feat: Add F-Machine protocol for Gigolo BT-R#835
penaltybush wants to merge 10 commits into
buttplugio:devfrom
penaltybush:feature/fmachine

Conversation

@penaltybush

Copy link
Copy Markdown

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.

@qdot

qdot commented Mar 11, 2026

Copy link
Copy Markdown
Member

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.

@penaltybush

Copy link
Copy Markdown
Author

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.

@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 2 medium

Alerts:
⚠ 2 issues (≤ 0 issues of at least minor severity)

Results:
2 new issues

Category Results
Complexity 2 medium

View in Codacy

🟢 Metrics 26 complexity · 1 duplication

Metric Results
Complexity 26
Duplication 1

View in Codacy

TIP This summary will be updated as you push new changes. Give us feedback

@qdot

qdot commented Apr 2, 2026

Copy link
Copy Markdown
Member

Ignore the codacy bot, not sure how that got added.

@penaltybush

Copy link
Copy Markdown
Author

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.

@blackspherefollower

Copy link
Copy Markdown
Collaborator

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.

@penaltybush

Copy link
Copy Markdown
Author

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.

@blackspherefollower

Copy link
Copy Markdown
Collaborator

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 blackspherefollower left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.");

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe a warn!?

- 28
index: 0
id: 5bef333e-15a5-4278-bf70-4df237f3a147
configurations:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets stick the Tremblr name in here: FM-T

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants