1个不稳定版本
使用旧Rust 2015
0.1.0 | 2016年7月23日 |
---|
#27 in #max
13KB
125 行
lovesense
lovesense是一个控制Lovense性玩具(如Max、Nora和Lush)的库。该库允许用户控制玩具的所有方面(振动/旋转/膨胀,取决于玩具),以及检索设备类型、状态、电池水平和加速度计读数等信息。
该库目前可用以下语言
- Python 2 (http://github.com/metafetish/lovesense-py)
- Max/MSP (http://github.com/metafetish/lovesense-max)
- Rust (带C头文件) (http://github.com/metafetish/lovesense-rs)
如果您需要lovesense不支持的语言实现,请在相关项目的GitHub跟踪器上提交问题。
请注意,此项目与Lovense公司无直接关系。这些驱动程序已由开源社区开发/支持。Lovense没有直接参与此项目,并且很可能无法回答有关任何Lovesense驱动程序的问题或提供支持。
如果您需要为Lovense产品进行编程的商业支持,建议您通过官方Lovense开发者计划。
Rust库
lovesense的Rust版本需要serial-rs库,该库已在Cargo文件中列出。
C头文件
编译Rust库后,将包含C头文件,允许库从C/C++链接和使用。请参阅“include”目录。
协议说明
Lovense玩具通过蓝牙连接,然后使用串行端口配置文件(SPP)与主机通信。这意味着玩具以COM端口(Windows)或tty设备(posix/bsd等)的形式暴露。
协议规则
- 命令和回复是字符串,使用分号标记其结束。
- 所有命令都以命令标识符词开始,然后是可选的指定符或级别,由冒号分隔。例如,“Vibrate:5;”会将振动设置为5。
- 回复是在命令的上下文中(即发送“Battery;”将只返回一个数字,如“85;”),但仍可以是冒号分隔的列表。
命令表
以下是为所有玩具提供的已知命令表。通过串行端口发送或接收的内容用引号表示,以表示通信,但如果您正在实现此协议的版本,则不应使用引号发送。带有“:x”的命令表示x应替换为数字,其范围在描述中提及。
命令 | 描述 | 预期返回 |
---|---|---|
"DeviceType;" | 返回玩具类型(A: Lush,B: Max,C: Nora),固件版本和蓝牙MAC地址,用冒号分隔的列表 | 字符串,例如 "C:11:0082059AD3BD;" |
"Battery;" | 返回玩具的电池电量 | 数字,例如 "85;" 表示剩余 85% 的电量 |
"PowerOff;" | 关闭设备电源 | "OK;" |
"Status:1;" | 显示设备状态。2 表示“正常” | "2;" |
"StartMove:1;" | 开始加速度计数据流 | 字符串,总是以 'G' 开头,后跟 3 个 16 位小端整数,例如 "GEF008312ED00" |
"StopMove:1;" | 停止加速度计数据流 | "OK;" |
"RotateChange;" | 改变Nora玩具上刺激器的旋转方向 | "OK;" |
"Vibrate:x;" | 设置玩具的振动级别。范围似乎是 0-20。 | "OK;" |
"Rotate:x;" | 设置Nora玩具的旋转速度。范围似乎是 0-20。 | "OK;" |
"Air:Level:x;" | 设置Max玩具的绝对空气级别。范围似乎是 0-5。 | "OK;" |
"Air:In:x;" | 设置相对充气级别,即如果当前充气级别为 3,发送 "Air:In:1",则充气到 4。 | "OK;" |
"Air:Out:x;" | 设置相对放气级别,即如果当前充气级别为 3,发送 "Air:Out:1",则充气到 2。 | "OK;" |
感谢
感谢 PenTest Partners 进行大部分繁重的工作并在其博客中记录下来。此库基本上只是实现该帖中找到的信息。
许可证
tl;dr: BSD 许可证
版权所有 (c) 2016,Metafetish 项目。保留所有权利。
重新分发和使用源代码和二进制代码,无论是否修改,只要满足以下条件
- 源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
- 二进制形式的重新分发必须在文档和/或其他随分发提供的材料中复制上述版权声明、本条件列表和以下免责声明。
- 未经事先书面许可,不得使用作者的名字或其贡献者的名字来推广或支持由此软件派生出来的产品。
本软件由作者“按原样”提供,并且不承担任何明示或暗示的保证,包括但不限于适销性和针对特定目的的适用性保证。在任何情况下,作者不应对任何直接、间接、偶然、特殊、示范性或后续的损害(包括但不限于替代商品或服务的采购、使用、数据或利润的损失;业务中断)负责,无论此类损害是否由本软件的使用或本软件使用中出现的任何疏忽或其他原因造成,即使已通知此类损害的可能性。
依赖关系
~1MB
~12K SLoC