Skip to content

feat:Add Honey Play Box Kaipro support - #940

Open
wwwfeng wants to merge 2 commits into
buttplugio:devfrom
wwwfeng:feat/honeyplaybox-kaipro-support
Open

feat:Add Honey Play Box Kaipro support#940
wwwfeng wants to merge 2 commits into
buttplugio:devfrom
wwwfeng:feat/honeyplaybox-kaipro-support

Conversation

@wwwfeng

@wwwfeng wwwfeng commented Aug 17, 2026

Copy link
Copy Markdown

Summary

Adds support for the Honey Play Box Kaipro (HPB-274).

  • Adds vibration control with levels from 0 to 100.
  • Adds constrict control with four modes.
  • Maps constrict level 0 to stop and levels 1–4 to device command values 101–104.
  • Keeps the Kaipro-specific command handling isolated from other Honey Play Box devices.

Testing

  • Verified formatting and compilation.
  • Passed device configuration tests.

@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.

I think a lot of the logic in this change is unnecessary and if there's other suction based toys, will make implementation more than just a config update.

I do wonder if there's a significance to the +100 value for the KiaPro's suction control: do lower numbers trigger patterns, etc? Are there other toys with suction that have the same offset requirement or more importantly different offsets?

Comment thread crates/buttplug_server/src/device/protocol_impl/honeyplaybox.rs Outdated
Comment thread crates/buttplug_server/src/device/protocol_impl/honeyplaybox.rs
output:
constrict:
value:
- 0

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 set the range to 100 to 104, then there's no need for the +100 bump in the protocol implementation.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I added a default offset of 100 instead. Not sure if this is the preferred approach, but we need to support 0 and 101–104.

@wwwfeng

wwwfeng commented Aug 19, 2026

Copy link
Copy Markdown
Author

I think a lot of the logic in this change is unnecessary and if there's other suction based toys, will make implementation more than just a config update.

I do wonder if there's a significance to the +100 value for the KiaPro's suction control: do lower numbers trigger patterns, etc? Are there other toys with suction that have the same offset requirement or more importantly different offsets?

For KaiPro, 1‑100 is used for vibration intensity, and 101‑104 correspond to its four suction preset modes. Values above 100 stand for hardware preset modes, and these are not guaranteed to be suction functions on our future devices. That is why I previously added special‑case handling in code.

@blackspherefollower

Copy link
Copy Markdown
Collaborator

I think a lot of the logic in this change is unnecessary and if there's other suction based toys, will make implementation more than just a config update.

I do wonder if there's a significance to the +100 value for the KiaPro's suction control: do lower numbers trigger patterns, etc? Are there other toys with suction that have the same offset requirement or more importantly different offsets?

For KaiPro, 1‑100 is used for vibration intensity, and 101‑104 correspond to its four suction preset modes. Values above 100 stand for hardware preset modes, and these are not guaranteed to be suction functions on our future devices. That is why I previously added special‑case handling in code.

Does that mean you need to OR the vibration speed and the suction mode? Or are they on different indexes?

@wwwfeng

wwwfeng commented Aug 19, 2026 via email

Copy link
Copy Markdown
Author

@blackspherefollower

Copy link
Copy Markdown
Collaborator

To add further clarification about our command‑set definition:
• 0 generally stands for stop.
• Values 1‑100 are normally used for vibration intensity.
• 101‑109 are hardware preset modes, applicable to all of our current toys.
Every value from 1‑109 has a defined meaning.
That is why the +100 offset is necessary: 1‑100 covers regular vibration levels, and values above 100 represent our special preset play‑modes.
For KaiPro, only 101‑104 are valid suction preset modes within this preset range. Other devices may utilize different slots inside 101‑109 for their own hardware presets.

Vibration and preset modes are independent logical channels. We do not combine values by bit‑wise OR operations.

Ok, so feature 0 is vibration (0-100) and feature 1 is suction (0, 101-104). Does suction 0-100 do anything?

Since this is the first suction device, and the modes are always valid, should we just make constrict always +100?

@wwwfeng

wwwfeng commented Aug 19, 2026 via email

Copy link
Copy Markdown
Author

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.

2 participants